From 7dfa5c28bf9c996d5119725a0937f0516cd53c26 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:08:36 -0700 Subject: [PATCH 01/51] Use propshaft + cssbundling-rails instead of sprockets --- Gemfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 99ebfcc9..d3d5717f 100644 --- a/Gemfile +++ b/Gemfile @@ -3,8 +3,8 @@ source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 7.1' -# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] -gem "sprockets-rails" +# Successor to sprockets. https://github.com/rails/propshaft +gem "propshaft" # Use Puma as the app server gem 'puma', '~> 6' @@ -93,3 +93,4 @@ gem 'bootstrap', '~> 4.0' gem 'rack-attack' # For throttle configuration gem 'recaptcha', '>= 5.4.1' gem 'http' +gem "cssbundling-rails", "~> 1.4" From da350fc9a50e00b6319d5f281655b6def71a4459 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:08:56 -0700 Subject: [PATCH 02/51] Use bootstrap 5 --- Gemfile | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index d3d5717f..dbe2c0a9 100644 --- a/Gemfile +++ b/Gemfile @@ -9,12 +9,6 @@ gem "propshaft" # Use Puma as the app server gem 'puma', '~> 6' -# Use SCSS for stylesheets -gem 'sassc-rails' - -# Use jquery as the JavaScript library -gem 'jquery-rails' - # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Reduces boot times through caching; required in config/boot.rb @@ -89,7 +83,7 @@ gem 'redis', '~> 5.0' gem 'geo_combine', '>= 0.9' # For OpenGeoMetadata indexing gem 'sidekiq', '~> 7.0' gem 'whenever', require: false -gem 'bootstrap', '~> 4.0' +gem 'bootstrap', '~> 5.3' gem 'rack-attack' # For throttle configuration gem 'recaptcha', '>= 5.4.1' gem 'http' From a73b172d97b80ee029cbc0d1f70da20c7e710085 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:09:25 -0700 Subject: [PATCH 03/51] Use blacklight 8 and the GBL blacklight 8 branch --- Gemfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index dbe2c0a9..025ab91f 100644 --- a/Gemfile +++ b/Gemfile @@ -63,9 +63,9 @@ group :production do gem 'pg' end -gem 'blacklight', '~> 7.33' +gem 'blacklight', '~> 8.3' gem 'rsolr' # required for Blacklight -gem 'geoblacklight', github: 'geoblacklight/geoblacklight', branch: 'main' +gem 'geoblacklight', github: 'geoblacklight/geoblacklight', branch: 'blacklight8' gem 'faraday', '~> 2.0' gem "devise" gem "devise-guests", ">= 0.3.3" From 3dd852445d9a1ae63159e89e7fa5f7c505d2c2b5 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:09:37 -0700 Subject: [PATCH 04/51] Remove an old override --- Gemfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 025ab91f..cef742b9 100644 --- a/Gemfile +++ b/Gemfile @@ -38,9 +38,7 @@ group :development, :test do gem 'rspec-rails' gem 'capybara' gem 'selenium-webdriver', '!= 3.13.0' - - # Pinned until https://github.com/thoughtbot/factory_bot_rails/issues/433 is resolved - gem 'factory_bot_rails', '~> 6.2.0' + gem 'factory_bot_rails' gem 'database_cleaner' gem 'dotenv' gem 'simplecov', require: false From 5dbafb55abd38da93576286518e6c3f072b15eac Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:10:04 -0700 Subject: [PATCH 05/51] Update Gemfile.lock --- Gemfile.lock | 66 ++++++++++++++++++---------------------------------- 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b73bc576..4473182b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,20 +1,18 @@ GIT remote: https://github.com/geoblacklight/geoblacklight.git - revision: 4af93ba5736bf53bbea143545f25d0955536b7ee - branch: main + revision: d9a35353a61f06c89af24fbc1e2e4da036b6457b + branch: blacklight8 specs: geoblacklight (4.4.0) - blacklight (~> 7.0) + blacklight (~> 8.0) coderay config deprecation faraday (~> 2.0) geo_combine (~> 0.9) - handlebars_assets mime-types - rails (>= 6.1, < 7.2) + rails (>= 6.1, < 8) rgeo-geojson - sprockets-rails (~> 3.0) vite_rails (~> 3.0) GEM @@ -108,27 +106,24 @@ GEM bcrypt_pbkdf (1.1.1-x86_64-darwin) bigdecimal (3.1.8) bindex (0.8.1) - blacklight (7.37.0) - deprecation + blacklight (8.3.0) globalid - hashdiff i18n (>= 1.7.0) jbuilder (~> 2.7) kaminari (>= 0.15) ostruct (>= 0.3.2) - rails (>= 5.1, < 7.2) + rails (>= 6.1, < 8) view_component (>= 2.66, < 4) blacklight_dynamic_sitemap (0.6.0) blacklight (> 6.0) rails - blacklight_range_limit (7.9.1) - blacklight (~> 7.0) + blacklight_range_limit (7.8.2) + blacklight (>= 7.0) bootsnap (1.18.3) msgpack (~> 1.2) - bootstrap (4.6.2) + bootstrap (5.3.3) autoprefixer-rails (>= 9.1.0) - popper_js (>= 1.16.1, < 2) - sassc-rails (>= 2.0.0) + popper_js (>= 2.11.8, < 3) builder (3.3.0) bundler-audit (0.9.1) bundler (>= 1.2.0, < 3) @@ -168,6 +163,8 @@ GEM deep_merge (~> 1.2, >= 1.2.1) connection_pool (2.4.1) crass (1.0.6) + cssbundling-rails (1.4.1) + railties (>= 6.0.0) database_cleaner (2.0.2) database_cleaner-active_record (>= 2, < 3) database_cleaner-active_record (2.2.0) @@ -252,11 +249,6 @@ GEM rchardet (~> 1.8) globalid (1.2.1) activesupport (>= 6.1) - handlebars_assets (0.23.9) - execjs (~> 2.0) - sprockets (>= 2.0.0) - tilt (>= 1.2) - hashdiff (1.1.0) honeybadger (5.15.3) http (5.2.0) addressable (~> 2.8) @@ -360,8 +352,13 @@ GEM ast (~> 2.4.1) racc pg (1.5.7) - popper_js (1.16.1) + popper_js (2.11.8) process_executer (1.1.0) + propshaft (0.9.0) + actionpack (>= 7.0.0) + activesupport (>= 7.0.0) + rack + railties (>= 7.0.0) psych (5.1.2) stringio public_suffix (6.0.1) @@ -489,14 +486,6 @@ GEM sanitize (6.1.2) crass (~> 1.0.2) nokogiri (>= 1.12.0) - sassc (2.4.0) - ffi (~> 1.9) - sassc-rails (2.1.2) - railties (>= 4.0.0) - sassc (>= 2.0) - sprockets (> 3.0) - sprockets-rails - tilt selenium-webdriver (4.23.0) base64 (~> 0.2) logger (~> 1.4) @@ -520,13 +509,6 @@ GEM minitar retriable ruby-progressbar - sprockets (4.2.1) - concurrent-ruby (~> 1.0) - rack (>= 2.2.4, < 4) - sprockets-rails (3.5.1) - actionpack (>= 6.1) - activesupport (>= 6.1) - sprockets (>= 3.0.0) sqlite3 (1.7.3-aarch64-linux) sqlite3 (1.7.3-arm-linux) sqlite3 (1.7.3-arm64-darwin) @@ -541,7 +523,6 @@ GEM stringio (3.1.1) strscan (3.1.0) thor (1.3.1) - tilt (2.4.0) timeout (0.4.1) twitter-typeahead-rails (0.11.1) actionpack (>= 3.1) @@ -598,17 +579,18 @@ PLATFORMS DEPENDENCIES bcrypt_pbkdf (~> 1.1) - blacklight (~> 7.33) + blacklight (~> 8.3) blacklight_dynamic_sitemap (~> 0.3) blacklight_range_limit (~> 7.0) bootsnap (>= 1.1.0) - bootstrap (~> 4.0) + bootstrap (~> 5.3) capistrano capistrano-bundler capistrano-passenger capistrano-rails capistrano-shared_configs capybara + cssbundling-rails (~> 1.4) database_cleaner debug devise @@ -617,17 +599,17 @@ DEPENDENCIES dlss-capistrano dotenv ed25519 (~> 1.3) - factory_bot_rails (~> 6.2.0) + factory_bot_rails faraday (~> 2.0) geo_combine (>= 0.9) geoblacklight! honeybadger http jbuilder (~> 2.5) - jquery-rails newrelic_rpm okcomputer pg + propshaft puma (~> 6) rack-attack rack-mini-profiler (~> 2.0) @@ -643,12 +625,10 @@ DEPENDENCIES rubocop-rails rubocop-rspec rubocop-rspec_rails - sassc-rails selenium-webdriver (!= 3.13.0) sidekiq (~> 7.0) simplecov solr_wrapper - sprockets-rails sqlite3 (~> 1.7) twitter-typeahead-rails web-console (>= 4.1.0) From 31c390aa4bc993dc010e672a53f55940e3619662 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:10:41 -0700 Subject: [PATCH 06/51] Remove calls to functions removed in BL8 --- app/controllers/catalog_controller.rb | 4 ---- app/views/catalog/_home_text.html.erb | 12 ----------- app/views/shared/_header_navbar.html.erb | 27 ------------------------ 3 files changed, 43 deletions(-) delete mode 100644 app/views/shared/_header_navbar.html.erb diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index b1d43f17..e3b136ac 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -46,10 +46,6 @@ class CatalogController < ApplicationController config.show.partials << 'show_default_viewer_information' config.show.partials << 'show_default_canonical_link' - ## - # Configure the index document presenter. - config.index.document_presenter_class = Geoblacklight::DocumentPresenter - # solr fields that will be treated as facets by the blacklight application # The ordering of the field names is the order of the display # diff --git a/app/views/catalog/_home_text.html.erb b/app/views/catalog/_home_text.html.erb index 04c808b6..d407abaf 100644 --- a/app/views/catalog/_home_text.html.erb +++ b/app/views/catalog/_home_text.html.erb @@ -1,15 +1,3 @@ -
-
-
-
- <%= content_tag :h2, t('geoblacklight.home.headline'), class: 'text-center font-weight-light' %> -
- <%= render_search_bar %> -
-
-
-
-

Explore

diff --git a/app/views/shared/_header_navbar.html.erb b/app/views/shared/_header_navbar.html.erb deleted file mode 100644 index 0a6e310e..00000000 --- a/app/views/shared/_header_navbar.html.erb +++ /dev/null @@ -1,27 +0,0 @@ - - -<% if controller_name == 'catalog' && has_search_parameters? %> - -<% end %> From 5cdd1ef9ad3e68572fe7c09992e133f7a8f4bd17 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 29 Jul 2024 21:11:02 -0700 Subject: [PATCH 07/51] Remove blacklight base layout override --- app/views/layouts/blacklight/base.html.erb | 64 ---------------------- 1 file changed, 64 deletions(-) delete mode 100644 app/views/layouts/blacklight/base.html.erb diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb deleted file mode 100644 index 66f462f9..00000000 --- a/app/views/layouts/blacklight/base.html.erb +++ /dev/null @@ -1,64 +0,0 @@ - - - - <%= render_page_title %> - - - - - - - - - <%= favicon_link_tag 'favicon.ico' %> - - <%= stylesheet_link_tag 'application', media: 'all' %> - <%= stylesheet_link_tag "https://www-media.stanford.edu/su-identity/css/su-identity.css" %> - <%= stylesheet_link_tag "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700" %> - - <%= javascript_include_tag 'application' %> - <%= csrf_meta_tags %> - <% if content_for? :head %> - <%= yield :head %> - <% end %> - - - - - -
-
- <%= render 'shared/top_navbar' %> - <%= render 'shared/header_navbar' %> -
- <%= content_for(:container_header) %> - - <%= render :partial=>'/shared/flash_msg', layout: 'shared/flash_messages' %> - -
- <%= content_for?(:content) ? yield(:content) : yield %> -
-
-
-
- <%= render partial: 'shared/footer' %> - <%= render partial: 'shared/modal' %> - <%= render 'shared/su_footer' %> - <%= render 'shared/sitelinks_search_box' %> - - From fa9f598000c26f39f548673128dbd172b65343d8 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Tue, 30 Jul 2024 14:15:40 -0400 Subject: [PATCH 08/51] move css to cssbundling-rails --- .gitignore | 5 + Procfile.dev | 2 + app/assets/builds/.keep | 0 app/assets/stylesheets/application.sass.scss | 3 + app/assets/stylesheets/application.scss | 7 +- app/assets/stylesheets/blacklight.scss | 7 +- app/assets/stylesheets/earthworks.scss | 19 - app/assets/stylesheets/geoblacklight.scss | 2 +- .../stylesheets/modules/base_styles.scss | 3 - .../modules/blacklight_overrides.scss | 10 - app/assets/stylesheets/modules/facets.scss | 12 - .../stylesheets/modules/feedback_form.scss | 17 - .../stylesheets/modules/header_navbar.scss | 42 - app/assets/stylesheets/modules/home.scss | 61 - app/assets/stylesheets/modules/icons.scss | 7 - app/assets/stylesheets/modules/leaflet.scss | 14 - app/assets/stylesheets/modules/oembed.scss | 9 - app/assets/stylesheets/modules/show.scss | 40 - .../stylesheets/modules/sul_footer.scss | 69 - .../stylesheets/modules/top_navbar.scss | 52 - app/assets/stylesheets/modules/typeahead.scss | 31 - app/controllers/catalog_controller.rb | 15 +- app/views/layouts/blacklight/base.html.erb | 46 + bin/dev | 11 + package-lock.json | 4278 +++++++++++++++-- package.json | 14 + 26 files changed, 3980 insertions(+), 796 deletions(-) create mode 100644 Procfile.dev create mode 100644 app/assets/builds/.keep create mode 100644 app/assets/stylesheets/application.sass.scss delete mode 100644 app/assets/stylesheets/earthworks.scss delete mode 100644 app/assets/stylesheets/modules/base_styles.scss delete mode 100644 app/assets/stylesheets/modules/blacklight_overrides.scss delete mode 100644 app/assets/stylesheets/modules/facets.scss delete mode 100644 app/assets/stylesheets/modules/feedback_form.scss delete mode 100644 app/assets/stylesheets/modules/header_navbar.scss delete mode 100644 app/assets/stylesheets/modules/home.scss delete mode 100644 app/assets/stylesheets/modules/icons.scss delete mode 100644 app/assets/stylesheets/modules/leaflet.scss delete mode 100644 app/assets/stylesheets/modules/oembed.scss delete mode 100644 app/assets/stylesheets/modules/show.scss delete mode 100644 app/assets/stylesheets/modules/sul_footer.scss delete mode 100644 app/assets/stylesheets/modules/top_navbar.scss delete mode 100644 app/assets/stylesheets/modules/typeahead.scss create mode 100644 app/views/layouts/blacklight/base.html.erb create mode 100755 bin/dev diff --git a/.gitignore b/.gitignore index 002d8c09..205a38b6 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,8 @@ config/environments/*.local.yml # Ignore JavaScript packaging. node_modules/ yarn.lock + +/app/assets/builds/* +!/app/assets/builds/.keep + +/node_modules diff --git a/Procfile.dev b/Procfile.dev new file mode 100644 index 00000000..34c16939 --- /dev/null +++ b/Procfile.dev @@ -0,0 +1,2 @@ +web: env RUBY_DEBUG_OPEN=true bin/rails server +css: yarn build:css --watch diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep new file mode 100644 index 00000000..e69de29b diff --git a/app/assets/stylesheets/application.sass.scss b/app/assets/stylesheets/application.sass.scss new file mode 100644 index 00000000..e51fc83a --- /dev/null +++ b/app/assets/stylesheets/application.sass.scss @@ -0,0 +1,3 @@ +// Entry point for your Sass build +@import 'sul-variables'; +@import 'blacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index fb9a04d1..3ad7c81f 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -5,7 +5,6 @@ @import 'sul-variables'; @import 'blacklight'; -@import 'slider'; -@import 'blacklight_range_limit/blacklight_range_limit'; -@import 'geoblacklight'; -@import 'earthworks'; +@import 'blacklight-range-limit/vendor/assets/stylesheets/slider'; +@import 'blacklight-range-limit/app/assets/stylesheets/blacklight_range_limit/blacklight_range_limit'; +@import 'geoblacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/blacklight.scss b/app/assets/stylesheets/blacklight.scss index 22f4fd16..6743ac1b 100644 --- a/app/assets/stylesheets/blacklight.scss +++ b/app/assets/stylesheets/blacklight.scss @@ -1,9 +1,8 @@ @import 'bootstrap-variables'; -@import 'bootstrap'; +@import 'bootstrap/scss/bootstrap'; @import 'bootstrap-overrides'; -$logo-image: image-url('earthworks.svg'); +$logo-image: url('earthworks.svg'); -@import 'blacklight/blacklight'; -@import 'modules/blacklight_overrides'; +@import 'blacklight-frontend/app/assets/stylesheets/blacklight/blacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/earthworks.scss b/app/assets/stylesheets/earthworks.scss deleted file mode 100644 index 1b80916e..00000000 --- a/app/assets/stylesheets/earthworks.scss +++ /dev/null @@ -1,19 +0,0 @@ -//Add module import here - -@import 'modules/base_styles'; -@import 'modules/facets'; -@import 'modules/header_navbar'; -@import 'modules/home'; -@import 'modules/icons'; -@import 'modules/leaflet'; -@import 'modules/oembed'; -@import 'modules/show'; -@import 'modules/sul_footer'; -@import 'modules/top_navbar'; -@import 'modules/typeahead'; -@import 'modules/feedback_form'; - - -#su-wrap { - margin-bottom: 20px; -} diff --git a/app/assets/stylesheets/geoblacklight.scss b/app/assets/stylesheets/geoblacklight.scss index 6df19998..fa4bcf31 100644 --- a/app/assets/stylesheets/geoblacklight.scss +++ b/app/assets/stylesheets/geoblacklight.scss @@ -1 +1 @@ -@import 'geoblacklight/geoblacklight'; +@import '@geoblacklight/frontend/dist/stylesheets/geoblacklight/geoblacklight'; diff --git a/app/assets/stylesheets/modules/base_styles.scss b/app/assets/stylesheets/modules/base_styles.scss deleted file mode 100644 index 02cd7799..00000000 --- a/app/assets/stylesheets/modules/base_styles.scss +++ /dev/null @@ -1,3 +0,0 @@ -body { - overflow-x: hidden; -} diff --git a/app/assets/stylesheets/modules/blacklight_overrides.scss b/app/assets/stylesheets/modules/blacklight_overrides.scss deleted file mode 100644 index 8b98b0e8..00000000 --- a/app/assets/stylesheets/modules/blacklight_overrides.scss +++ /dev/null @@ -1,10 +0,0 @@ -.top-content-title { - display: none; -} - -.search-query-form { - input.search-q { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } -} diff --git a/app/assets/stylesheets/modules/facets.scss b/app/assets/stylesheets/modules/facets.scss deleted file mode 100644 index 15c1d2c8..00000000 --- a/app/assets/stylesheets/modules/facets.scss +++ /dev/null @@ -1,12 +0,0 @@ -.panel-title a { - text-decoration: none; -} - -// Offsets setup for success color contrast threshold -.facet-limit-active .card-header .btn { - color: #ffffff !important; -} - -.facet-values li .selected { - color: #00795d !important; -} diff --git a/app/assets/stylesheets/modules/feedback_form.scss b/app/assets/stylesheets/modules/feedback_form.scss deleted file mode 100644 index f0f986b1..00000000 --- a/app/assets/stylesheets/modules/feedback_form.scss +++ /dev/null @@ -1,17 +0,0 @@ -.feedback-form { - margin-top: 1rem; - - @include media-breakpoint-up(md) { - .col-form-label { - text-align: right; - } - } - - .btn-primary { - background-color: $cardinal-red; - border: 0; - } - .btn-link { - color: $primary; - } -} diff --git a/app/assets/stylesheets/modules/header_navbar.scss b/app/assets/stylesheets/modules/header_navbar.scss deleted file mode 100644 index 8cd54c97..00000000 --- a/app/assets/stylesheets/modules/header_navbar.scss +++ /dev/null @@ -1,42 +0,0 @@ -#header-navbar { - box-shadow: 0 4px 8px -2px rgba(0, 0, 0, .2); - - .navbar-brand { - background-position: center; - background-size: contain; - flex: 0 0 175px; - height: auto; - line-height: 30px; - width: 175px; - } -} - -.nav.navbar-nav > li > a { - text-transform: uppercase; - - &:hover, - &:focus { - text-decoration: underline; - } -} - -#search-navbar { - .container { - padding-left: 0; - } - - .input-group { - @extend .flex-nowrap; - } - button.search-btn { - display: inline-flex; - - .blacklight-icons svg{ - height: 1.5rem; - left: .125rem; - line-height: 1.5rem; - top: .075rem; - width: 1.5rem; - } - } -} diff --git a/app/assets/stylesheets/modules/home.scss b/app/assets/stylesheets/modules/home.scss deleted file mode 100644 index b5b1e025..00000000 --- a/app/assets/stylesheets/modules/home.scss +++ /dev/null @@ -1,61 +0,0 @@ -@mixin homepage-image-border { - border: 2px solid rgba(46, 45, 41, 0.1); -} - -.jumbotron { - border: 1px solid $gray-80-percent; - padding: 2rem 2rem; - - h2 { - margin-bottom: 20px; - } -} - -.search-block { - .input-group { - @extend .flex-nowrap; - } - - input.search-q { - @extend .form-control-lg; - } - - button.search-btn { - @extend .btn-lg; - display: inline-flex; - - .blacklight-icons, - .blacklight-icons svg { - height: 1.5rem; - left: .225rem; - line-height: 1.5rem; - width: 1.5rem; - } - } -} - -.home-page-linked-searches { - .panel-body { - padding: 0; - } - - h3 { - font-size: 22px; - font-weight: 300; - margin-top: 10px; - text-align: center; - } - - img { - @include homepage-image-border; - width: 100%; - } -} - -.section-heading { - margin-top: 36px; -} - -#map { - @include homepage-image-border; -} diff --git a/app/assets/stylesheets/modules/icons.scss b/app/assets/stylesheets/modules/icons.scss deleted file mode 100644 index 449036ed..00000000 --- a/app/assets/stylesheets/modules/icons.scss +++ /dev/null @@ -1,7 +0,0 @@ -.blacklight-icon-available { - fill: $pantone-334; -} - -.blacklight-icon-stanford { - fill: $cardinal-red; -} diff --git a/app/assets/stylesheets/modules/leaflet.scss b/app/assets/stylesheets/modules/leaflet.scss deleted file mode 100644 index 89293f10..00000000 --- a/app/assets/stylesheets/modules/leaflet.scss +++ /dev/null @@ -1,14 +0,0 @@ -.leaflet-container { - background: $beige-10-percent; - - // Needed to overwrite a font set by Leaflet-Rails - font-family: 'Source Sans Pro', sans-serif; -} - -// Style all but the index map -[data-map="home"], [data-map="index"], [data-map="item"]:not([data-protocol="IndexMap"]) { - .leaflet-overlay-pane g path { - fill: $cardinal-red; - stroke: $cardinal-red; - } -} diff --git a/app/assets/stylesheets/modules/oembed.scss b/app/assets/stylesheets/modules/oembed.scss deleted file mode 100644 index a245d9aa..00000000 --- a/app/assets/stylesheets/modules/oembed.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Override the explicit height set on [data-map="item"] for leaflet maps to be -// auto-height when coming from Oembed (which should manage its own height) -#document { - #viewer-container { - [data-map="item"][data-protocol="Oembed"] { - height: auto; - } - } -} diff --git a/app/assets/stylesheets/modules/show.scss b/app/assets/stylesheets/modules/show.scss deleted file mode 100644 index 58b38f20..00000000 --- a/app/assets/stylesheets/modules/show.scss +++ /dev/null @@ -1,40 +0,0 @@ -dd[itemprop='url'] a { - overflow: hidden; - text-overflow: ellipsis; - display: block; -} - -// GeoBlacklight padding/margin overrides (sets back to Boostrap default) -.show-tools .list-group { - padding-bottom: 0; - padding-top: 0; -} - -.exports { - margin: 0; - - .list-group { - padding-bottom: 0; - padding-top: 0; - } -} - -// Paragraph margins for description field -.blacklight-dct_description_sm p { - margin-bottom: 0.5rem; - - &:last-of-type { - margin-bottom: 0; - } -} - -// Move the index map legend to make space for "Embedded Content" text -.index-map-legend { - left: unset; -} - -// Styles for Mirador viewer (non-stanford IIIF content) -#mirador { - width: 100%; - min-height: 493px; -} diff --git a/app/assets/stylesheets/modules/sul_footer.scss b/app/assets/stylesheets/modules/sul_footer.scss deleted file mode 100644 index f6d0d2db..00000000 --- a/app/assets/stylesheets/modules/sul_footer.scss +++ /dev/null @@ -1,69 +0,0 @@ -$stanford-footer-height: 250px; -$stanford-footer-md-height: 140px; -$sul-footer-height: 80px; - -#su-content { - height: 100%; - padding-bottom: $stanford-footer-height + $sul-footer-height !important; - - @media (min-width: 768px) { - padding-bottom: $stanford-footer-md-height + $sul-footer-height !important; - } -} - -#sul-footer-container { - background-color: $sul-footer-bg-color; - -webkit-box-shadow: 0 4px 8px -8px rgba(0, 0, 0, .2) inset; - box-shadow: 0 4px 8px -8px rgba(0, 0, 0, .2) inset; - clear: both; - margin-top: -1 * ($stanford-footer-height + $sul-footer-height); - min-height: $stanford-footer-height + $sul-footer-height; - - @media (min-width: 768px) { - margin-top: -1 * ($stanford-footer-md-height + $sul-footer-height); - min-height: $stanford-footer-md-height + $sul-footer-height; - } - padding: 0 !important; - position: relative; - width: 100%; -} - -#sul-footer { - @extend .container; - display: table; - height: $sul-footer-height; - - ul { - list-style-type: none; - margin: 0; - padding: 0; - - li { - display: inline; - margin: 0 13px 3px 0; - padding: 0; - } - } - - li a { - white-space: nowrap; - } -} - -#sul-footer-img { - display: table-cell; - vertical-align: middle; - width: 162px; -} - -#sul-footer-links { - display: table-cell; - font-size: small; - padding-left: 15px; - text-align: left; - vertical-align: middle; -} - -#global-footer .container { - box-sizing: border-box !important; -} diff --git a/app/assets/stylesheets/modules/top_navbar.scss b/app/assets/stylesheets/modules/top_navbar.scss deleted file mode 100644 index 98826a24..00000000 --- a/app/assets/stylesheets/modules/top_navbar.scss +++ /dev/null @@ -1,52 +0,0 @@ -#topnav-container { - position: relative; -} - -#topnav { - background: none; - border: 0; - height: 35px; - display: flex; - margin-bottom: 0; - padding: 4px 0; - - .topnav-links { - display: flex; - margin-left: auto; - justify-content: flex-end; - } - - .navbar-nav { - flex-direction: row; - } - - ul.navbar-nav > li { - display: inline; - - a { - color: $cardinal-red; - padding-bottom: 3px; - text-decoration: none; - margin-left: 15px; - - &.first { - margin-left: 0; - } - - &:hover, - &:focus { - border-bottom: 3px solid $cardinal-red; - } - } - - // Add the border on hover, or when the #feedback-form is open - a:hover, a[data-target="#feedback-form"][aria-expanded="true"] { - border-bottom: 3px solid $cardinal-red; - } - } -} -@include media-breakpoint-up(xs) { - #topnav { - width: 100%; - } -} diff --git a/app/assets/stylesheets/modules/typeahead.scss b/app/assets/stylesheets/modules/typeahead.scss deleted file mode 100644 index 3c61fd87..00000000 --- a/app/assets/stylesheets/modules/typeahead.scss +++ /dev/null @@ -1,31 +0,0 @@ -.twitter-typeahead { - float: left; - width: 100%; - z-index: 1001; - - .tt-input.form-control { - width: 100%; - } - - .tt-hint.form-control { - width: 100%; - } - - .tt-menu { - @extend .dropdown-menu; - font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; - - width: 100%; - - .tt-suggestion{ - font-size: 14px; - padding-left: 10px; - } - - .tt-cursor { - background-color: $dropdown-link-hover-bg; - color: $dropdown-link-hover-color; - text-decoration: none; - } - } -} diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index e3b136ac..06772dda 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -34,17 +34,21 @@ class CatalogController < ApplicationController # config.index.show_link = 'title_display' # config.index.record_display_type = 'format' + config.index.document_component = Geoblacklight::SearchResultComponent config.index.title_field = Settings.FIELDS.TITLE config.crawler_detector = ->(req) { req.env['HTTP_USER_AGENT']&.include?('bot') } # solr field configuration for document/show views config.show.display_type_field = 'format' + config.show.partials.delete(:show) config.show.partials << 'show_message' config.show.partials << 'show_default_viewer_container' config.show.partials << 'show_default_attribute_table' config.show.partials << 'show_default_viewer_information' config.show.partials << 'show_default_canonical_link' + config.show.partials << :show + config.header_component = Geoblacklight::HeaderComponent # solr fields that will be treated as facets by the blacklight application # The ordering of the field names is the order of the display @@ -295,16 +299,23 @@ class CatalogController < ApplicationController # If there are more than this many search results, no spelling ("did you # mean") suggestion is offered. config.spell_max = 5 + + # Nav actions from Blacklight + config.add_nav_action(:bookmark, partial: "blacklight/nav/bookmark", if: :render_bookmarks_control?) + config.add_nav_action(:search_history, partial: "blacklight/nav/search_history") + + config.add_results_document_tool(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?) # Tools from Blacklight config.add_results_collection_tool(:sort_widget) config.add_results_collection_tool(:per_page_widget) - config.add_show_tools_partial(:bookmark, partial: 'bookmark_control', if: :render_bookmarks_control?) + config.add_show_tools_partial(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?) config.add_show_tools_partial(:citation) config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params) config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params) # Custom tools for GeoBlacklight + config.add_show_tools_partial :metadata, if: proc { |_context, _config, options| options[:document] && (Settings.METADATA_SHOWN & options[:document].references.refs.map(&:type).map(&:to_s)).any? } config.add_show_tools_partial :searchworks_url, component: Earthworks::SearchworksUrl, if: proc { |_context, _config, options| options[:document] && @@ -314,7 +325,7 @@ class CatalogController < ApplicationController config.show.document_actions.delete(:sms) # Configure basemap provider - config.basemap_provider = 'OpenStreetMap.HOT' + config.basemap_provider = 'openstreetmapHot' # Configuration for autocomplete suggestor config.autocomplete_enabled = true diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb new file mode 100644 index 00000000..3d6da86b --- /dev/null +++ b/app/views/layouts/blacklight/base.html.erb @@ -0,0 +1,46 @@ + +<%= content_tag :html, class: 'no-js', **html_tag_attributes do %> + + + + + + + + + + <%= render_page_title %> + + <%= opensearch_description_tag application_name, opensearch_catalog_url(format: 'xml') %> + <%= favicon_link_tag %> + + <%= stylesheet_link_tag "application", media: "all", "data-turbo-track": "reload" %> + <%= javascript_importmap_tags %> + + <%= csrf_meta_tags %> + <%= content_for(:head) %> + + + + <%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %> + +
+ <%= content_for(:container_header) %> + + <%= render partial: 'shared/flash_msg', layout: 'shared/flash_messages' %> + +
+ <%= content_for?(:content) ? yield(:content) : yield %> +
+
+ + <%= render partial: 'shared/footer' %> + <%= render partial: 'shared/modal' %> + +<% end %> \ No newline at end of file diff --git a/bin/dev b/bin/dev new file mode 100755 index 00000000..d80a02db --- /dev/null +++ b/bin/dev @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +if gem list --no-installed --exact --silent foreman; then + echo "Installing foreman..." + gem install foreman +fi + +# Default to port 3000 if not specified +export PORT="${PORT:-3000}" + +exec foreman start -f Procfile.dev --env /dev/null "$@" diff --git a/package-lock.json b/package-lock.json index c5601a45..59f1fb72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,12 +4,45 @@ "requires": true, "packages": { "": { - "name": "earthworks", + "dependencies": { + "@geoblacklight/frontend": "^5.0.0-alpha.3", + "blacklight-frontend": "^8.3.0", + "blacklight-range-limit": "^8.5.0", + "bootstrap": "^5.3.3", + "bootstrap-slider": "^11.0.2", + "leaflet": "^1.9.4", + "leaflet-fullscreen": "^1.0.2", + "ol": "^10.0.0", + "sass": "^1.77.8" + }, "devDependencies": { "vite": "^5.2.11", "vite-plugin-ruby": "^5.0.0" } }, + "node_modules/@atlas-viewer/iiif-image-api": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@atlas-viewer/iiif-image-api/-/iiif-image-api-2.2.1.tgz", + "integrity": "sha512-YB/yckhWW1B/kpfO0h/aGxIAK2PF/Reic6/zXrKYVVg+D7QQySrJqIq7DpU7hh7yzucD/TldLRsJWO+z6Dwrow==", + "peer": true, + "dependencies": { + "@iiif/presentation-3": "*" + }, + "engines": { + "node": ">=18.14.1" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -378,6 +411,187 @@ "node": ">=12" } }, + "node_modules/@floating-ui/core": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz", + "integrity": "sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==", + "dependencies": { + "@floating-ui/utils": "^0.2.5" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.8.tgz", + "integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.5" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.5.tgz", + "integrity": "sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==" + }, + "node_modules/@geoblacklight/frontend": { + "version": "5.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@geoblacklight/frontend/-/frontend-5.0.0-alpha.3.tgz", + "integrity": "sha512-lZRzP4zXaf2cPCWlmZoNPRZaqx+AA8oltSpEcjmQoy311ICuqpMIEFNvd/P4VDO2mn1WrxTTdwWYMdAYU5rpqg==", + "dependencies": { + "@hotwired/stimulus": "^3.2.2", + "@samvera/clover-iiif": "^2.3.2", + "esri-leaflet": "^3.0.12", + "leaflet": "^1.9.4", + "leaflet-fullscreen": "^1.0.2", + "leaflet-iiif": "^3.0.0", + "ol": "8.1.0", + "ol-pmtiles": "^0.3.0", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@geoblacklight/frontend/node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/@geoblacklight/frontend/node_modules/ol": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-8.1.0.tgz", + "integrity": "sha512-cx3SH2plpFS9fM8pp1nCypgQXGJD7Mcb1E3mEySmy5XEw1DUEo+kkNzgtAZz5qupekqi7aU9iBJEjCoMfqvO2Q==", + "dependencies": { + "earcut": "^2.2.3", + "geotiff": "^2.0.7", + "pbf": "3.2.1", + "rbush": "^3.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/@geoblacklight/frontend/node_modules/pbf": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/@geoblacklight/frontend/node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, + "node_modules/@hotwired/stimulus": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz", + "integrity": "sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A==" + }, + "node_modules/@iiif/parser": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@iiif/parser/-/parser-1.1.2.tgz", + "integrity": "sha512-yjbhSWBB+cWHjAgeWlMYgNydMxDGU1BO3JnmgxCclMcfi59JDsKHMXpgZpCNw+svcirBtIMD2u70KPFinr2pUA==", + "dependencies": { + "@iiif/presentation-2": "^1.0.4", + "@iiif/presentation-3": "^1.1.3", + "@types/geojson": "^7946.0.8" + } + }, + "node_modules/@iiif/parser/node_modules/@iiif/presentation-3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@iiif/presentation-3/-/presentation-3-1.1.3.tgz", + "integrity": "sha512-Ek+25nkQouo0pXAqCsWYbAeS4jLDEBQA7iul2jzgnvoJrucxDQN2lXyNLgOUDRqpTdSqJ69iz5lm6DLaxil+Nw==", + "dependencies": { + "@types/geojson": "^7946.0.7" + } + }, + "node_modules/@iiif/presentation-2": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@iiif/presentation-2/-/presentation-2-1.0.4.tgz", + "integrity": "sha512-hJakpq62VBajesLJrYPtFm6hcn6c/HkKP7CmKZ5atuzu40m0nifWYsqigR1l9sZGvhhHb/DRshPmiW/0GNrJoA==", + "peerDependencies": { + "@iiif/presentation-3": "*" + } + }, + "node_modules/@iiif/presentation-3": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@iiif/presentation-3/-/presentation-3-2.2.3.tgz", + "integrity": "sha512-xCLbUr9euqegsrxGe65M2fWbv6gKpiUhHXCpOn+V+qtawkMbOSNWbYOISo2aLQdYVg4DGYD0g2bMzSCF33uNOQ==", + "peer": true, + "dependencies": { + "@types/geojson": "^7946.0.10" + } + }, + "node_modules/@iiif/vault": { + "version": "0.9.22", + "resolved": "https://registry.npmjs.org/@iiif/vault/-/vault-0.9.22.tgz", + "integrity": "sha512-HaFX1u9TSZha0i/esZR5sZzydZgjZgITeO0JrT1qXm+qSaB1Oc0PRNzatXW48Xa0q3PPYbBB71zCL1/D1i1i1A==", + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/presentation-2": "1.*", + "@iiif/presentation-3": "^1.1.3", + "mitt": "^3.0.0", + "node-fetch": "^3.1.1", + "redux": "^4.1.2", + "tiny-invariant": "^1.2.0", + "typesafe-actions": "^5.1.0" + } + }, + "node_modules/@iiif/vault-helpers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@iiif/vault-helpers/-/vault-helpers-0.10.0.tgz", + "integrity": "sha512-gnjTPcZJMIDjwU5K8HYNU8Iix49Awmsr7IhIyxA5ZCqugnLjHvJUOmOvT7q1NRd6ia4+09wxx+EMH0D9mt4cxQ==", + "dependencies": { + "@iiif/presentation-2": "1.x", + "@iiif/presentation-3": "1.x" + }, + "optionalDependencies": { + "abs-svg-path": "^0.1.0", + "parse-svg-path": "^0.1.0", + "react-i18next": "^11.18.0", + "svg-arc-to-cubic-bezier": "^3.2.0" + }, + "peerDependencies": { + "@atlas-viewer/iiif-image-api": "^2.1.1", + "@iiif/vault": "0.9.x" + } + }, + "node_modules/@iiif/vault-helpers/node_modules/@iiif/presentation-3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@iiif/presentation-3/-/presentation-3-1.1.3.tgz", + "integrity": "sha512-Ek+25nkQouo0pXAqCsWYbAeS4jLDEBQA7iul2jzgnvoJrucxDQN2lXyNLgOUDRqpTdSqJ69iz5lm6DLaxil+Nw==", + "dependencies": { + "@types/geojson": "^7946.0.7" + } + }, + "node_modules/@iiif/vault/node_modules/@iiif/presentation-3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@iiif/presentation-3/-/presentation-3-1.1.3.tgz", + "integrity": "sha512-Ek+25nkQouo0pXAqCsWYbAeS4jLDEBQA7iul2jzgnvoJrucxDQN2lXyNLgOUDRqpTdSqJ69iz5lm6DLaxil+Nw==", + "dependencies": { + "@types/geojson": "^7946.0.7" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -413,491 +627,3387 @@ "node": ">= 8" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.1.tgz", - "integrity": "sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] + "node_modules/@nulib/use-markdown": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@nulib/use-markdown/-/use-markdown-0.2.2.tgz", + "integrity": "sha512-eS3uhiGm4KlogR3/8cn0gZfxdeMyQuBwyjWXif5c0EBibmiuc7l30xVXqTkwh5teO2Loellfo+782GmHe1DIOA==", + "dependencies": { + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.0", + "unified": "^11.0.4" + }, + "peerDependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.1.tgz", - "integrity": "sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] + "node_modules/@petamoriken/float16": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.7.tgz", + "integrity": "sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==" }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz", - "integrity": "sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.1.tgz", - "integrity": "sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.1.tgz", - "integrity": "sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.1.tgz", - "integrity": "sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz", - "integrity": "sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", + "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.1.tgz", - "integrity": "sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.0.tgz", + "integrity": "sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.1.tgz", - "integrity": "sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.1.tgz", - "integrity": "sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.1.tgz", - "integrity": "sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", + "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", + "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.0.3.tgz", + "integrity": "sha512-kgE+Z/haV6fxE5WqIXj05KkaXa3OkZASoTDy25yX2EIp/x0c54rOH/vFr5nOZTg7n7T1z8bSyXmiVIFP9bbhPQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-label": "2.0.2", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz", + "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", + "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", + "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.0.tgz", + "integrity": "sha512-yv+oiLaicYMBpqgfpSPw6q+RyXlLdIpQWDHZbUKURxe+nEh53hFXPPlfhfQQtYkS5MMK/5IWIa76SksleQZSzw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", + "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.0.tgz", + "integrity": "sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", + "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.19.1.tgz", + "integrity": "sha512-XzqSg714++M+FXhHfXpS1tDnNZNpgxxuGZWlRG/jSj+VEPmZ0yg6jV4E0AL3uyBKxO8mO3xtOsP5mQ+XLfrlww==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.19.1.tgz", + "integrity": "sha512-thFUbkHteM20BGShD6P08aungq4irbIZKUNbG70LN8RkO7YztcGPiKTTGZS7Kw+x5h8hOXs0i4OaHwFxlpQN6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.19.1.tgz", + "integrity": "sha512-8o6eqeFZzVLia2hKPUZk4jdE3zW7LCcZr+MD18tXkgBBid3lssGVAYuox8x6YHoEPDdDa9ixTaStcmx88lio5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.19.1.tgz", + "integrity": "sha512-4T42heKsnbjkn7ovYiAdDVRRWZLU9Kmhdt6HafZxFcUdpjlBlxj4wDrt1yFWLk7G4+E+8p2C9tcmSu0KA6auGA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.19.1.tgz", + "integrity": "sha512-MXg1xp+e5GhZ3Vit1gGEyoC+dyQUBy2JgVQ+3hUrD9wZMkUw/ywgkpK7oZgnB6kPpGrxJ41clkPPnsknuD6M2Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.19.1.tgz", + "integrity": "sha512-DZNLwIY4ftPSRVkJEaxYkq7u2zel7aah57HESuNkUnz+3bZHxwkCUkrfS2IWC1sxK6F2QNIR0Qr/YXw7nkF3Pw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.19.1.tgz", + "integrity": "sha512-C7evongnjyxdngSDRRSQv5GvyfISizgtk9RM+z2biV5kY6S/NF/wta7K+DanmktC5DkuaJQgoKGf7KUDmA7RUw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.19.1.tgz", + "integrity": "sha512-89tFWqxfxLLHkAthAcrTs9etAoBFRduNfWdl2xUs/yLV+7XDrJ5yuXMHptNqf1Zw0UCA3cAutkAiAokYCkaPtw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.19.1.tgz", + "integrity": "sha512-PromGeV50sq+YfaisG8W3fd+Cl6mnOOiNv2qKKqKCpiiEke2KiKVyDqG/Mb9GWKbYMHj5a01fq/qlUR28PFhCQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.19.1.tgz", + "integrity": "sha512-/1BmHYh+iz0cNCP0oHCuF8CSiNj0JOGf0jRlSo3L/FAyZyG2rGBuKpkZVH9YF+x58r1jgWxvm1aRg3DHrLDt6A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.19.1.tgz", + "integrity": "sha512-0cYP5rGkQWRZKy9/HtsWVStLXzCF3cCBTRI+qRL8Z+wkYlqN7zrSYm6FuY5Kd5ysS5aH0q5lVgb/WbG4jqXN1Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", + "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz", + "integrity": "sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.1.tgz", + "integrity": "sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.1.tgz", + "integrity": "sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz", + "integrity": "sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@samvera/clover-iiif": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@samvera/clover-iiif/-/clover-iiif-2.9.1.tgz", + "integrity": "sha512-aW5M6A3r1Y0fvSWOginPU+lsiaWl2aYvw4cbkZotBP+BztIUmI+bzS/Um2yDSnVeOZRsZ55DYAAVgjj9lRtYEA==", + "dependencies": { + "@iiif/parser": "^1.1.2", + "@iiif/vault": "^0.9.22", + "@iiif/vault-helpers": "^0.10.0", + "@nulib/use-markdown": "^0.2.1", + "@radix-ui/react-aspect-ratio": "^1.0.3", + "@radix-ui/react-collapsible": "^1.0.3", + "@radix-ui/react-form": "^0.0.3", + "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-radio-group": "^1.1.3", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@stitches/react": "^1.2.8", + "flexsearch": "^0.7.43", + "hls.js": "^1.5.3", + "node-webvtt": "^1.9.4", + "openseadragon": "^4.1.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-error-boundary": "^4.0.12", + "sanitize-html": "^2.11.0", + "swiper": "^9.4.1", + "uuid": "^9.0.1" + }, + "peerDependencies": { + "swiper": "^9.0.0" + } + }, + "node_modules/@stitches/react": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@stitches/react/-/react-1.2.8.tgz", + "integrity": "sha512-9g9dWI4gsSVe8bNLlb+lMkBYsnIKCZTmvqvDG+Avnn69XfmHZKiaMrx7cgTaddq7aTPPmXiTsbFcUy0xgI4+wA==", + "peerDependencies": { + "react": ">= 16.3.0" + } + }, + "node_modules/@terraformer/arcgis": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.1.2.tgz", + "integrity": "sha512-IvdfqehcNAUtKU1OFMKwPT8EvdKlVFZ7q7ZKzkIF8XzYZIVsZLuXuOS1UBdRh5u/o+X5Gax7jiZhD8U/4TV+Jw==", + "dependencies": { + "@terraformer/common": "^2.1.2" + } + }, + "node_modules/@terraformer/common": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.1.2.tgz", + "integrity": "sha512-cwPdTFzIpekZhZRrgDEkqLKNPoqbyCBQHiemaovnGIeUx0Pl336MY/eCxzJ5zXkrQLVo9zPalq/vYW5HnyKevQ==" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==", + "optional": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/blacklight-frontend": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/blacklight-frontend/-/blacklight-frontend-8.3.0.tgz", + "integrity": "sha512-V92LxXqe1QSdg18qVYQ5cIWfWPLJiU0D84ZNA4IICJBdzoZ3cAsVwnMXdOgV0zhQT8BQQtTG2+E5bcUUFg3oug==", + "dependencies": { + "bootstrap": ">=4.3.1 <6.0.0" + } + }, + "node_modules/blacklight-range-limit": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/blacklight-range-limit/-/blacklight-range-limit-8.5.0.tgz", + "integrity": "sha512-SOiHzdQ5HUJQqZHH9Wzhzbn6wgDpVZ8kGZUkF1J1PadSWTnAANQbxHZtazLgTU1SMFC3gYcty4tGrMYecTJ+gA==" + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-slider": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/bootstrap-slider/-/bootstrap-slider-11.0.2.tgz", + "integrity": "sha512-CdwS+Z6X79OkLes9RfDgPB9UIY/+81wTkm6ktdSB6hdyiRbjJLFQIjZdnEr55tDyXZfgC7U6yeSXkNN9ZdGqjA==" + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", + "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color-parse": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.0.2.tgz", + "integrity": "sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==", + "dependencies": { + "color-name": "^2.0.0" + } + }, + "node_modules/color-rgba": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-3.0.0.tgz", + "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==", + "dependencies": { + "color-parse": "^2.0.0", + "color-space": "^2.0.0" + } + }, + "node_modules/color-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-space/-/color-space-2.0.1.tgz", + "integrity": "sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esri-leaflet": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.12.tgz", + "integrity": "sha512-Yi7oH/mK4quOlCe920yuEYvUk0BjJRjmmE78ReAdJT5EbibW5wJoT9DtvG3JEJD22mQ0oF1LhcfL0Wb5jRhDAQ==", + "dependencies": { + "@terraformer/arcgis": "^2.1.0", + "tiny-binary-search": "^1.0.3" + }, + "peerDependencies": { + "leaflet": "^1.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flexsearch": { + "version": "0.7.43", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz", + "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==" + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/geotiff": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz", + "integrity": "sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==", + "dependencies": { + "@petamoriken/float16": "^3.4.7", + "lerc": "^3.0.0", + "pako": "^2.0.4", + "parse-headers": "^2.0.2", + "quick-lru": "^6.1.1", + "web-worker": "^1.2.0", + "xml-utils": "^1.0.2", + "zstddec": "^0.1.0" + }, + "engines": { + "node": ">=10.19" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", + "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hls.js": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.13.tgz", + "integrity": "sha512-xRgKo84nsC7clEvSfIdgn/Tc0NOT+d7vdiL/wvkLO+0k0juc26NRBPPG1SfB8pd5bHXIjMW/F5VM8VYYkOYYdw==" + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "optional": true, + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/i18next": { + "version": "23.12.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.12.2.tgz", + "integrity": "sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==" + }, + "node_modules/leaflet-fullscreen": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/leaflet-fullscreen/-/leaflet-fullscreen-1.0.2.tgz", + "integrity": "sha512-1Yxm8RZg6KlKX25+hbP2H/wnOAphH7hFcvuADJFb4QZTN7uOSN9Hsci5EZpow8vtNej9OGzu59Jxmn+0qKOO9Q==" + }, + "node_modules/leaflet-iiif": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/leaflet-iiif/-/leaflet-iiif-3.0.0.tgz", + "integrity": "sha512-WWejon+vWaJUPe4Lp/AidYMosyy82bU/OjVgHQCTUojFWaUxzs00Ao6pSd42EYw45S8SW2Drc4VsMb3sxSNUMQ==" + }, + "node_modules/lerc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz", + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.19.1.tgz", - "integrity": "sha512-XUXeI9eM8rMP8aGvii/aOOiMvTs7xlCosq9xCjcqI9+5hBxtjDpD+7Abm1ZhVIFE1J2h2VIg0t2DX/gjespC2Q==", - "cpu": [ - "x64" + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.19.1.tgz", - "integrity": "sha512-V7cBw/cKXMfEVhpSvVZhC+iGifD6U1zJ4tbibjjN+Xi3blSXaj/rJynAkCFFQfoG6VZrAiP7uGVzL440Q6Me2Q==", - "cpu": [ - "x64" + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "optional": true, - "os": [ - "linux" + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ] }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.19.1.tgz", - "integrity": "sha512-88brja2vldW/76jWATlBqHEoGjJLRnP0WOEKAUbMcXaAZnemNhlAHSyj4jIwMoP2T750LE9lblvD4e2jXleZsA==", - "cpu": [ - "arm64" + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "dev": true, - "optional": true, - "os": [ - "win32" + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ] }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.19.1.tgz", - "integrity": "sha512-LdxxcqRVSXi6k6JUrTah1rHuaupoeuiv38du8Mt4r4IPer3kwlTo+RuvfE8KzZ/tL6BhaPlzJ3835i6CxrFIRQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-webvtt": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/node-webvtt/-/node-webvtt-1.9.4.tgz", + "integrity": "sha512-EjrJdKdxSyd8j4LMLW6s2Ah4yNoeVXp18Ob04CQl1In18xcUmKzEE8pcsxxnFVqanTyjbGYph2VnvtwIXR4EjA==", + "dependencies": { + "commander": "^7.1.0" + }, + "bin": { + "webvtt-segment": "bin/webvtt-segment.js" + }, + "engines": { + "node": ">= 8.16.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ol": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/ol/-/ol-10.0.0.tgz", + "integrity": "sha512-Gzfh61cQAxseCWL97VpGwbF91R2D69y3ABUewTl2H1Hjy6ipCtnoKshgO+n3WBrjsbsyS8QnkfmiJZNQGQNeOA==", + "dependencies": { + "color-rgba": "^3.0.0", + "color-space": "^2.0.1", + "earcut": "^3.0.0", + "geotiff": "^2.0.7", + "pbf": "4.0.1", + "rbush": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openlayers" + } + }, + "node_modules/ol-pmtiles": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ol-pmtiles/-/ol-pmtiles-0.3.0.tgz", + "integrity": "sha512-Ajc5+P6mvjcREOp0rBnTlWOu6wX+pvPlujHd8Fb5K26pGhT3hRMHtJPxhCqyHZT10uNveyNsmH/FJtVo+JCl6Q==", + "dependencies": { + "pmtiles": "2.11.0" + }, + "peerDependencies": { + "ol": ">=7.3.0" + } + }, + "node_modules/openseadragon": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-4.1.1.tgz", + "integrity": "sha512-owU9gsasAcobLN+LM8lN58Xc2VDSDotY9mkrwS/NB6g9KX/PcusV4RZvhHng2RF/Q0pMziwldf62glwXoGnuzg==", + "funding": { + "url": "https://opencollective.com/openseadragon" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.19.1.tgz", - "integrity": "sha512-2bIrL28PcK3YCqD9anGxDxamxdiJAxA+l7fWIwM5o8UqNy1t3d1NdAweO2XhA0KTDJ5aH1FsuiT5+7VhtHliXg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", + "optional": true + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "fill-range": "^7.1.1" + "entities": "^4.4.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, + "node_modules/pbf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-4.0.1.tgz", + "integrity": "sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==", "dependencies": { - "ms": "2.1.2" + "resolve-protobuf-schema": "^2.1.0" }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { - "node": ">=6.0" + "node": ">=8.6" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pmtiles": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-2.11.0.tgz", + "integrity": "sha512-dU9SzzaqmCGpdEuTnIba6bDHT6j09ZJFIXxwGpvkiEnce3ZnBB1VKt6+EOmJGueriweaZLAMTUmKVElU2CBe0g==", + "dependencies": { + "fflate": "^0.8.0" + } + }, + "node_modules/postcss": { + "version": "8.4.40", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", + "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-6.1.2.tgz", + "integrity": "sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==", "engines": { "node": ">=12" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/rbush": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-4.0.0.tgz", + "integrity": "sha512-F5xw+166FYDZI6jEcz+sWEHL5/J+du3kQWkwqWrPKb6iVoLPZh+2KhTS4OoYqrw1v/RO1xQe6WsLwBvrUAlvXw==", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "quickselect": "^2.0.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=0.10.0" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { - "reusify": "^1.0.4" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, + "node_modules/react-error-boundary": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-4.0.13.tgz", + "integrity": "sha512-b6PwbdSv8XeOSYvjt8LpgpKrZ0yGdtZokYwkwV2wlcZbxgopHX/hgPl5VgpnoVOWd868n1hktM8Qm4b+02MiLQ==", "dependencies": { - "to-regex-range": "^5.0.1" + "@babel/runtime": "^7.12.5" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": ">=16.13.1" } }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, + "node_modules/react-i18next": { + "version": "11.18.6", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz", + "integrity": "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==", "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "dependencies": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/react-remove-scroll": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", + "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", "dependencies": { - "is-glob": "^4.0.1" + "react-remove-scroll-bar": "^2.3.4", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "dependencies": { - "is-extglob": "^2.1.1" + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8.10.0" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", + "dependencies": { + "@babel/runtime": "^7.9.2" } }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=8.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/rehype-stringify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss": { - "version": "8.4.40", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.40.tgz", - "integrity": "sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } }, "node_modules/reusify": { "version": "1.0.4", @@ -967,20 +4077,130 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/sanitize-html": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.13.0.tgz", + "integrity": "sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==", + "dependencies": { + "deepmerge": "^4.2.2", + "escape-string-regexp": "^4.0.0", + "htmlparser2": "^8.0.0", + "is-plain-object": "^5.0.0", + "parse-srcset": "^1.0.2", + "postcss": "^8.3.11" + } + }, + "node_modules/sanitize-html/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sass": { + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/source-map-js": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", + "optional": true + }, + "node_modules/swiper": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-9.4.1.tgz", + "integrity": "sha512-1nT2T8EzUpZ0FagEqaN/YAhRj33F2x/lN6cyB0/xoYJDMf8KwTFT3hMOeoB8Tg4o3+P/CKqskP+WX0Df046fqA==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "dependencies": { + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -988,6 +4208,216 @@ "node": ">=8.0" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/typesafe-actions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/typesafe-actions/-/typesafe-actions-5.1.0.tgz", + "integrity": "sha512-bna6Yi1pRznoo6Bz1cE6btB/Yy8Xywytyfrzu/wc+NFW3ZF0I+2iCGImhBsoYYCOWuICtRO4yHcnDlzgo1AdNg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vfile": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "5.3.5", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", @@ -1055,6 +4485,56 @@ "peerDependencies": { "vite": ">=5.0.0" } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, + "node_modules/xml-utils": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/xml-utils/-/xml-utils-1.10.1.tgz", + "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==" + }, + "node_modules/zstddec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/zstddec/-/zstddec-0.1.0.tgz", + "integrity": "sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==" + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index c23fdb0a..22771f5d 100644 --- a/package.json +++ b/package.json @@ -2,5 +2,19 @@ "devDependencies": { "vite": "^5.2.11", "vite-plugin-ruby": "^5.0.0" + }, + "dependencies": { + "@geoblacklight/frontend": "^5.0.0-alpha.3", + "blacklight-frontend": "^8.3.0", + "blacklight-range-limit": "^8.5.0", + "bootstrap": "^5.3.3", + "bootstrap-slider": "^11.0.2", + "leaflet": "^1.9.4", + "leaflet-fullscreen": "^1.0.2", + "ol": "^10.0.0", + "sass": "^1.77.8" + }, + "scripts": { + "build:css": "sass ./app/assets/stylesheets/application.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules" } } From a7db7961e56f9beecd81c72cbc76cef34f6a2915 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Tue, 30 Jul 2024 15:04:04 -0700 Subject: [PATCH 09/51] Reset styles to GeoBlacklight default --- app/assets/stylesheets/application.css | 9 ++++++ app/assets/stylesheets/application.sass.scss | 3 -- app/assets/stylesheets/application.scss | 10 ------ app/assets/stylesheets/blacklight.scss | 8 ----- .../stylesheets/bootstrap-overrides.scss | 12 ------- .../stylesheets/bootstrap-variables.scss | 31 ------------------- app/assets/stylesheets/geoblacklight.scss | 4 ++- app/assets/stylesheets/sul-variables.scss | 24 -------------- package.json | 4 +-- 9 files changed, 14 insertions(+), 91 deletions(-) create mode 100644 app/assets/stylesheets/application.css delete mode 100644 app/assets/stylesheets/application.sass.scss delete mode 100644 app/assets/stylesheets/application.scss delete mode 100644 app/assets/stylesheets/blacklight.scss delete mode 100644 app/assets/stylesheets/bootstrap-overrides.scss delete mode 100644 app/assets/stylesheets/bootstrap-variables.scss delete mode 100644 app/assets/stylesheets/sul-variables.scss diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 00000000..59d3ba89 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,9 @@ +/* Leaflet */ +@import url("leaflet/dist/leaflet.css"); +@import url("leaflet-fullscreen/dist/leaflet.fullscreen.css"); + +/* OpenLayers */ +@import url("ol/ol.css"); + +/* GeoBlacklight */ +@import url("geoblacklight.css"); diff --git a/app/assets/stylesheets/application.sass.scss b/app/assets/stylesheets/application.sass.scss deleted file mode 100644 index e51fc83a..00000000 --- a/app/assets/stylesheets/application.sass.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Entry point for your Sass build -@import 'sul-variables'; -@import 'blacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss deleted file mode 100644 index 3ad7c81f..00000000 --- a/app/assets/stylesheets/application.scss +++ /dev/null @@ -1,10 +0,0 @@ -// EarthWorks modules, sul style, variables/mixins - -// Import font first -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro); - -@import 'sul-variables'; -@import 'blacklight'; -@import 'blacklight-range-limit/vendor/assets/stylesheets/slider'; -@import 'blacklight-range-limit/app/assets/stylesheets/blacklight_range_limit/blacklight_range_limit'; -@import 'geoblacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/blacklight.scss b/app/assets/stylesheets/blacklight.scss deleted file mode 100644 index 6743ac1b..00000000 --- a/app/assets/stylesheets/blacklight.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import 'bootstrap-variables'; - -@import 'bootstrap/scss/bootstrap'; -@import 'bootstrap-overrides'; - -$logo-image: url('earthworks.svg'); - -@import 'blacklight-frontend/app/assets/stylesheets/blacklight/blacklight'; \ No newline at end of file diff --git a/app/assets/stylesheets/bootstrap-overrides.scss b/app/assets/stylesheets/bootstrap-overrides.scss deleted file mode 100644 index 426e9258..00000000 --- a/app/assets/stylesheets/bootstrap-overrides.scss +++ /dev/null @@ -1,12 +0,0 @@ -.page-link { - &:hover, &:focus { - text-decoration: underline !important; - } -} - -.btn-primary { - &:hover, &:focus { - border-color: $link-hover-color; - background-color: $link-hover-color; - } -} diff --git a/app/assets/stylesheets/bootstrap-variables.scss b/app/assets/stylesheets/bootstrap-variables.scss deleted file mode 100644 index 0d491649..00000000 --- a/app/assets/stylesheets/bootstrap-variables.scss +++ /dev/null @@ -1,31 +0,0 @@ -// Bootstrap Overrides - -// Colors -$primary: #006CB8; -$success: $pantone-334; - -$link-hover-color: #00548f; -// Typography -$font-family-sans-serif: 'Source Sans Pro', 'Arial Unicode MS', Helvetica, sans-serif; -$small-font-size: 90%; - -// Dropdowns -$dropdown-link-hover-color: #fff; -$dropdown-link-hover-bg: $cardinal-red; - -// Navbar -.bg-beige { - background-color: $light-sandstone; -} - -.bg-cardinal-red { - background-color: $cardinal-red; -} - -$navbar-dark-color: #fff; -$navbar-dark-hover-color: #fff; -$navbar-padding-y: 1rem * 1.4; -$navbar-brand-height: 1rem * 1.25 * 1.5 * 1.5 * 2 !default; // Bootstrap variables are not availabe so hardcoding - -// Jumbotron -$jumbotron-bg: $light-sandstone; diff --git a/app/assets/stylesheets/geoblacklight.scss b/app/assets/stylesheets/geoblacklight.scss index fa4bcf31..9c1ca36b 100644 --- a/app/assets/stylesheets/geoblacklight.scss +++ b/app/assets/stylesheets/geoblacklight.scss @@ -1 +1,3 @@ -@import '@geoblacklight/frontend/dist/stylesheets/geoblacklight/geoblacklight'; +@import 'bootstrap/scss/bootstrap'; +@import 'blacklight-frontend/app/assets/stylesheets/blacklight/blacklight'; +@import '@geoblacklight/frontend/app/assets/stylesheets/geoblacklight/geoblacklight'; diff --git a/app/assets/stylesheets/sul-variables.scss b/app/assets/stylesheets/sul-variables.scss deleted file mode 100644 index a2a7b033..00000000 --- a/app/assets/stylesheets/sul-variables.scss +++ /dev/null @@ -1,24 +0,0 @@ -//Colors -$beige: #9d9573; -$beige-10-percent: #f2f1eb; -$beige-20-percent: #e9e6df; -$beige-30-percent: #e3dfd5; -$beige-40-percent: #d5d0c0; -$beige-5-percent: #fbfbf9; -$black: #2e2d29; -$cardinal-red: #8c1515; -$dark-red: #820000; -$gray-41-percent: #696969; -$gray-46-percent: #767676; -$gray-60-percent: #8a887d; -$gray-70-percent: #b3b3b3; -$gray-80-percent: #ccc; -$gray-90-percent: #565347; -$gray: #3f3c30; -$gray-brown: #81785a; -$light-sandstone: #f9f6ef; -$pantone-2925: #0098db; -$pantone-334: #009b76; -$pantone-405: #5f574f; - -$sul-footer-bg-color: $beige-10-percent; diff --git a/package.json b/package.json index 22771f5d..60829519 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "vite-plugin-ruby": "^5.0.0" }, "dependencies": { - "@geoblacklight/frontend": "^5.0.0-alpha.3", + "@geoblacklight/frontend": "^5.0.0-alpha.4", "blacklight-frontend": "^8.3.0", "blacklight-range-limit": "^8.5.0", "bootstrap": "^5.3.3", @@ -15,6 +15,6 @@ "sass": "^1.77.8" }, "scripts": { - "build:css": "sass ./app/assets/stylesheets/application.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules" + "build:css": "sass ./app/assets/stylesheets/geoblacklight.scss:./app/assets/builds/geoblacklight.css --load-path=node_modules" } } From 03d1e81311d0bd89a2458e8967e313f578d0502c Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Tue, 30 Jul 2024 15:05:28 -0700 Subject: [PATCH 10/51] Install importmap, stimulus, and turbo --- Gemfile | 3 +++ Gemfile.lock | 13 +++++++++++++ app/assets/config/manifest.js | 2 ++ bin/importmap | 4 ++++ vendor/javascript/.keep | 0 5 files changed, 22 insertions(+) create mode 100755 bin/importmap create mode 100644 vendor/javascript/.keep diff --git a/Gemfile b/Gemfile index cef742b9..a882701d 100644 --- a/Gemfile +++ b/Gemfile @@ -86,3 +86,6 @@ gem 'rack-attack' # For throttle configuration gem 'recaptcha', '>= 5.4.1' gem 'http' gem "cssbundling-rails", "~> 1.4" +gem "importmap-rails", "~> 2.0" +gem "stimulus-rails", "~> 1.3" +gem "turbo-rails", "~> 2.0" diff --git a/Gemfile.lock b/Gemfile.lock index 4473182b..edbae4bb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -261,6 +261,10 @@ GEM http-form_data (2.3.0) i18n (1.14.5) concurrent-ruby (~> 1.0) + importmap-rails (2.0.1) + actionpack (>= 6.0.0) + activesupport (>= 6.0.0) + railties (>= 6.0.0) io-console (0.7.2) irb (1.14.0) rdoc (>= 4.0.0) @@ -520,10 +524,16 @@ GEM net-scp (>= 1.1.2) net-sftp (>= 2.1.2) net-ssh (>= 2.8.0) + stimulus-rails (1.3.3) + railties (>= 6.0.0) stringio (3.1.1) strscan (3.1.0) thor (1.3.1) timeout (0.4.1) + turbo-rails (2.0.6) + actionpack (>= 6.0.0) + activejob (>= 6.0.0) + railties (>= 6.0.0) twitter-typeahead-rails (0.11.1) actionpack (>= 3.1) jquery-rails @@ -605,6 +615,7 @@ DEPENDENCIES geoblacklight! honeybadger http + importmap-rails (~> 2.0) jbuilder (~> 2.5) newrelic_rpm okcomputer @@ -630,6 +641,8 @@ DEPENDENCIES simplecov solr_wrapper sqlite3 (~> 1.7) + stimulus-rails (~> 1.3) + turbo-rails (~> 2.0) twitter-typeahead-rails web-console (>= 4.1.0) whenever diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index 1983ee4e..2b7d9155 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -1,3 +1,5 @@ //= link_tree ../images //= link application.css //= link application.js +//= link_tree ../../javascript .js +//= link_tree ../../../vendor/javascript .js diff --git a/bin/importmap b/bin/importmap new file mode 100755 index 00000000..36502ab1 --- /dev/null +++ b/bin/importmap @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby + +require_relative "../config/application" +require "importmap/commands" diff --git a/vendor/javascript/.keep b/vendor/javascript/.keep new file mode 100644 index 00000000..e69de29b From 68a3aa72e19ea6923300db5c3060a04807712e28 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Tue, 30 Jul 2024 15:05:44 -0700 Subject: [PATCH 11/51] Remove some unused partials --- app/views/_user_util_links.html.erb | 15 ------ app/views/catalog/_search_form.html.erb | 27 ---------- app/views/layouts/blacklight/base.html.erb | 2 +- .../shared/_sitelinks_search_box.html.erb | 14 ----- app/views/shared/_su_footer.html.erb | 52 ------------------- app/views/shared/_top_navbar.html.erb | 31 ----------- 6 files changed, 1 insertion(+), 140 deletions(-) delete mode 100644 app/views/_user_util_links.html.erb delete mode 100644 app/views/catalog/_search_form.html.erb delete mode 100644 app/views/shared/_sitelinks_search_box.html.erb delete mode 100644 app/views/shared/_su_footer.html.erb delete mode 100644 app/views/shared/_top_navbar.html.erb diff --git a/app/views/_user_util_links.html.erb b/app/views/_user_util_links.html.erb deleted file mode 100644 index 953c8854..00000000 --- a/app/views/_user_util_links.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/app/views/catalog/_search_form.html.erb b/app/views/catalog/_search_form.html.erb deleted file mode 100644 index 48e65161..00000000 --- a/app/views/catalog/_search_form.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -<%= form_tag search_action_url, method: :get, class: 'search-query-form', role: 'search', 'aria-label' => t('blacklight.search.form.submit') do %> - <%= render_hash_as_hidden_fields(search_state.params_for_search.except(:q, :search_field, :qt, :page, :utf8)) %> - <% if search_fields.length > 1 %> - - <% end %> -
- <% if search_fields.length > 1 %> - <%= select_tag(:search_field, - options_for_select(search_fields, h(params[:search_field])), - title: t('blacklight.search.form.search_field.title'), - id: "search_field", - class: "custom-select search-field") %> - <% elsif search_fields.length == 1 %> - <%= hidden_field_tag :search_field, search_fields.first.last %> - <% end %> - - - <%= text_field_tag :q, params[:q], placeholder: t('blacklight.search.form.search.placeholder'), class: "search-q q form-control rounded-#{search_fields.length > 1 ? '0' : 'left'}", id: "q", autocomplete: presenter.autocomplete_enabled? ? "off" : "", autofocus: presenter.autofocus?, data: { autocomplete_enabled: presenter.autocomplete_enabled?, autocomplete_path: search_action_path(action: :suggest) } %> - - - - -
-<% end %> diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb index 3d6da86b..0cc54626 100644 --- a/app/views/layouts/blacklight/base.html.erb +++ b/app/views/layouts/blacklight/base.html.erb @@ -43,4 +43,4 @@ <%= render partial: 'shared/footer' %> <%= render partial: 'shared/modal' %> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/shared/_sitelinks_search_box.html.erb b/app/views/shared/_sitelinks_search_box.html.erb deleted file mode 100644 index 913f8f10..00000000 --- a/app/views/shared/_sitelinks_search_box.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<% if current_page?(root_path) && !has_search_parameters? %> - -<% end %> diff --git a/app/views/shared/_su_footer.html.erb b/app/views/shared/_su_footer.html.erb deleted file mode 100644 index 5aedf6b1..00000000 --- a/app/views/shared/_su_footer.html.erb +++ /dev/null @@ -1,52 +0,0 @@ - - - diff --git a/app/views/shared/_top_navbar.html.erb b/app/views/shared/_top_navbar.html.erb deleted file mode 100644 index 171c4a57..00000000 --- a/app/views/shared/_top_navbar.html.erb +++ /dev/null @@ -1,31 +0,0 @@ -
-
- -
-
- From a5636d0651ab5c534e0e98b8b330e43df7c36cd3 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Tue, 30 Jul 2024 15:06:15 -0700 Subject: [PATCH 12/51] Set up the import map --- app/javascript/application.js | 6 + app/javascript/controllers/application.js | 9 ++ app/javascript/controllers/index.js | 29 +++++ app/javascript/modules/feedback_form.js | 129 ++++++++++++++++++++++ app/javascript/modules/mirador.js | 63 +++++++++++ config/importmap.rb | 22 ++++ 6 files changed, 258 insertions(+) create mode 100644 app/javascript/application.js create mode 100644 app/javascript/controllers/application.js create mode 100644 app/javascript/controllers/index.js create mode 100644 app/javascript/modules/feedback_form.js create mode 100644 app/javascript/modules/mirador.js create mode 100644 config/importmap.rb diff --git a/app/javascript/application.js b/app/javascript/application.js new file mode 100644 index 00000000..19e8914c --- /dev/null +++ b/app/javascript/application.js @@ -0,0 +1,6 @@ +// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails +import "@hotwired/turbo-rails" +import "bootstrap"; +import "@github/auto-complete-element"; +import "blacklight"; +// import "controllers" diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js new file mode 100644 index 00000000..1213e85c --- /dev/null +++ b/app/javascript/controllers/application.js @@ -0,0 +1,9 @@ +import { Application } from "@hotwired/stimulus" + +const application = Application.start() + +// Configure Stimulus development experience +application.debug = false +window.Stimulus = application + +export { application } diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js new file mode 100644 index 00000000..3bf1af8d --- /dev/null +++ b/app/javascript/controllers/index.js @@ -0,0 +1,29 @@ +// Import and register all your controllers from the importmap under controllers/* + +import { application } from "controllers/application" +import { + CloverViewerController, + LeafletViewerController, + OpenlayersViewerController, + OembedViewerController, + SearchResultsController, + DownloadsController, + ClipboardController, +} from "@geoblacklight/frontend"; + +// Register GeoBlacklight stimulus controllers +application.register("clover-viewer", CloverViewerController); +application.register("leaflet-viewer", LeafletViewerController); +application.register("oembed-viewer", OembedViewerController); +application.register("openlayers-viewer", OpenlayersViewerController); +application.register("search-results", SearchResultsController); +application.register("downloads", DownloadsController); +application.register("clipboard", ClipboardController); + +// Eager load all controllers defined in the import map under controllers/**/*_controller +import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading" +eagerLoadControllersFrom("controllers", application) + +// Lazy load controllers as they appear in the DOM (remember not to preload controllers in import map!) +// import { lazyLoadControllersFrom } from "@hotwired/stimulus-loading" +// lazyLoadControllersFrom("controllers", application) diff --git a/app/javascript/modules/feedback_form.js b/app/javascript/modules/feedback_form.js new file mode 100644 index 00000000..6229904a --- /dev/null +++ b/app/javascript/modules/feedback_form.js @@ -0,0 +1,129 @@ +Blacklight.onLoad(function() { + //Instantiates plugin for feedback form + $('#feedback-form').feedbackForm(); +}) + +;(function($, window, document, undefined) { + /* + jQuery plugin that handles some of the feedback form functionality + + Usage: $(selector).feedbackForm(); + + No available options + + This plugin : + - changes feedback form link to button + - submits an ajax request for the feedback form + - displays alert on response from feedback form + */ + + var pluginName = 'feedbackForm'; + + function Plugin(element, options) { + this.element = element; + var $el, $form; + + this.options = $.extend({}, options) ; + this._name = pluginName; + this.init(); + } + + function submitListener() { + // Serialize and submit form if not on action url + $form.each(function(i, form) { + if (location !== form.action) { + $('#user_agent').val(navigator.userAgent); + $('#viewport').val('width:' + window.innerWidth + ' height:' + innerHeight); + $(form).on('submit', function() { + var valuesToSubmit = $(this).serialize(); + $.ajax({ + url: form.action, + data: valuesToSubmit, + type: 'post' + }).success(function(response) { + if (isSuccess(response)) { + $($el).collapse('hide'); + $($form)[0].reset(); + } + renderFlashMessages(response); + }); + return false; + }); + } + }); + } + + function isSuccess(response) { + switch (response[0][0]){ + case 'success': + return true; + default: + return false; + } + } + + function renderFlashMessages(response) { + $.each(response, function(i, val) { + var flashHtml = '
' + val[1] + '
'; + + // Show the flash message + $('div.flash_messages').html(flashHtml); + }); + } + + function replaceLink(form, link) { + var attrs = {}; + $.each(link[0].attributes, function(idx, attr) { + attrs[attr.nodeName] = attr.value; + }); + attrs.class = 'cancel-link btn btn-link'; + + // Replace the cancel link with a button + link.replaceWith(function() { + return $('' + val[1] + '
'; - - // Show the flash message - $('div.flash_messages').html(flashHtml); - }); - } - - function replaceLink(form, link) { - var attrs = {}; - $.each(link[0].attributes, function(idx, attr) { - attrs[attr.nodeName] = attr.value; - }); - attrs.class = 'cancel-link btn btn-link'; - - // Replace the cancel link with a button - link.replaceWith(function() { - return $('${n[1]}`,document.querySelector("div.flash_messages").appendChild(r)})}}class wx extends Br{async copyToClipboard(e){let t=e.target.dataset.clipboardValue;await navigator.clipboard.writeText(t),this.alertTarget.classList.remove("d-none")}}Ni(wx,"targets",["alert"]);function Gge(){document.querySelectorAll('[data-bs-toggle="popover"]').forEach(e=>{new bootstrap.Popover(e,{trigger:"hover"})})}const Hge=(i,e)=>{i.style.opacity=0,i.style.display="block";let t=null;function n(r){t||(t=r);const s=r-t;i.style.opacity=Math.min(s/e,1),s{const t=`${i.dataset.url}/relations`;fetch(t,{headers:{"X-Requested-With":"XMLHttpRequest"}}).then(n=>{if(!n.ok)throw new Error("Network response was not ok");return n.text()}).then(n=>{const r=document.createElement("div");r.innerHTML=n,i.appendChild(r),r.style.display="none",Hge(r,200)}).catch(n=>console.error("Error:",n))})}function Vge(){document.body.addEventListener("mouseenter",i=>{if(i.target.closest(".blacklight-icons.svg_tooltip svg")){const e=i.target.closest(".blacklight-icons.svg_tooltip svg"),t=e.querySelector("title"),n=t?t.textContent:"";n!==void 0&&n!==""&&(new bootstrap.Tooltip(e,{placement:"bottom",title:n}).show(),e.setAttribute("data-original-title",n),t.remove())}},!0),document.body.addEventListener("mouseleave",i=>{if(i.target.closest(".blacklight-icons.svg_tooltip svg")){const e=i.target.closest(".blacklight-icons.svg_tooltip svg"),t=e.getAttribute("data-original-title");if(t!==void 0&&t!==""){const n=document.createElement("title");n.textContent=t,e.prepend(n),e.setAttribute("data-original-title","")}}document.querySelectorAll(".tooltip").forEach(e=>e.remove())},!0)}function qge(){document.querySelectorAll(".truncate-abstract").forEach((i,e)=>{let t=12*parseFloat(window.getComputedStyle(i).fontSize);if(i.getBoundingClientRect().heightthis.download(e))}download(e){e.preventDefault();const t=this.options.modal;typeof t=="string"?document.querySelector(t).style.display="none":t instanceof HTMLElement&&(t.style.display="none");const n=this.el.querySelector("#requestEmail").value,r=this.el.querySelector("#requestUrl").value;fetch(r,{method:"GET",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:n})}).then(s=>{if(!s.ok)throw new Error("Network response was not ok");return s.json()}).then(s=>this.complete(s)).catch(s=>this.error(s))}complete(e){this.downloading=!1,this.element.classList.remove("disabled"),this.element.innerHTML="Download ready",this.element.href=e[1],this.renderMessage(e[0]),this.spinnerTarget.style.display="none"}error(e){console.error("Download error:",e),this.downloading=!1,this.element.classList.remove("disabled"),this.element.innerHTML="Download failed",this.spinnerTarget.style.display="none"}}function jge(){const i=document.getElementById("blacklight-modal");i.addEventListener("loaded.blacklight.blacklight-modal",()=>{i.querySelectorAll("#hglRequest").forEach(e=>{new $ge(e,{modal:i})})})}class Wge{constructor(e,t,n={}){this.options=n,this.el=typeof e=="string"?document.querySelector(e):e,this.download=document.querySelector(this.options.target||this.el.getAttribute("data-ref-download")),t===0&&this.setRefUrl(),this.configureHandler()}configureHandler(){this.el.addEventListener("click",()=>this.setRefUrl())}setRefUrl(){const e=this.el.getAttribute("data-ref-endpoint");e?(this.download.style.display="",this.download.setAttribute("href",e)):this.download.style.display="none"}}function Kge(){const i=document.getElementById("blacklight-modal");i.addEventListener("focus",e=>{Array.from(e.target.classList).includes("show")&&(e.target.querySelectorAll(".metadata-body").forEach(t=>{t.closest(".modal-content").classList.add("metadata-modal")}),e.target.querySelectorAll(".pill-metadata").forEach((t,n)=>{new Wge(t,n)}))}),i.addEventListener("blur",e=>{Array.from(e.target.classList).includes("show")||e.target.querySelectorAll(".metadata-body").forEach(t=>{t.closest(".modal-content").classList.remove("metadata-modal")})})}const mo=function(){const i=[];return{onLoad:function(e){i.push(e)},activate:function(e){i.forEach(t=>{t(e)})},listeners:function(){return typeof Turbo<"u"?["turbo:load","turbo:frame-load"]:["DOMContentLoaded"]}}}();mo.listeners().forEach(i=>document.addEventListener(i,e=>mo.activate(e))),mo.onLoad(Gge),mo.onLoad(zge),mo.onLoad(Vge),mo.onLoad(qge),mo.onLoad(jge),mo.onLoad(Kge),typeof Stimulus<"u"?(Stimulus.register("openlayers-viewer",GE),Stimulus.register("clover-viewer",ox),Stimulus.register("oembed-viewer",ax),Stimulus.register("leaflet-viewer",Cx),Stimulus.register("search-results",Jm),Stimulus.register("downloads",M8),Stimulus.register("clipboard",wx)):console.error("Couldn't find Stimulus. Check instructions at https://github.com/hotwired/stimulus-rails");const Yge={OpenlayersViewerController:GE,CloverViewerController:ox,OembedViewerController:ax,LeafletViewerController:Cx,SearchResultsController:Jm,DownloadsController:M8,ClipboardController:wx,openLayersBasemaps:y2,leafletBasemaps:Ix,Core:mo};class Zge extends tl{decodeBlock(e){return e}}const Xge=Object.freeze(Object.defineProperty({__proto__:null,default:Zge},Symbol.toStringTag,{value:"Module"})),F8=9,xx=256,bx=257,Jge=12;function eAe(i,e,t){const n=e%8,r=Math.floor(e/8),s=8-n,o=e+t-(r+1)*8;let a=8*(r+2)-(e+t);const l=(r+2)*8-e;if(a=Math.max(0,a),r>=i.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),bx;let u=i[r]&2**(8-n)-1;u<<=t-s;let c=u;if(r+1>>a;h<<=Math.max(0,t-l),c+=h}if(o>8&&r+2>>h;c+=d}return c}function Sx(i,e){for(let t=e.length-1;t>=0;t--)i.push(e[t]);return i}function tAe(i){const e=new Uint16Array(4093),t=new Uint8Array(4093);for(let A=0;A<=257;A++)e[A]=4096,t[A]=A;let n=258,r=F8,s=0;function o(){n=258,r=F8}function a(A){const p=eAe(A,s,r);return s+=r,p}function l(A,p){return t[n]=p,e[n]=A,n++,n-1}function u(A){const p=[];for(let y=A;y!==4096;y=e[y])p.push(t[y]);return p}const c=[];o();const h=new Uint8Array(i);let d=a(h),g;for(;d!==bx;){if(d===xx){for(o(),d=a(h);d===xx;)d=a(h);if(d===bx)break;if(d>xx)throw new Error(`corrupted code at scanline ${d}`);{const A=u(d);Sx(c,A),g=d}}else if(d=2**r&&(r===Jge?g=void 0:r++),d=a(h)}return new Uint8Array(c)}class iAe extends tl{decodeBlock(e){return tAe(e).buffer}}const nAe=Object.freeze(Object.defineProperty({__proto__:null,default:iAe},Symbol.toStringTag,{value:"Module"})),$f=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),ey=4017,ty=799,iy=3406,ny=2276,ry=1567,sy=3784,lh=5793,oy=2896;function O8(i,e){let t=0;const n=[];let r=16;for(;r>0&&!i[r-1];)--r;n.push({children:[],index:0});let s=n[0],o;for(let a=0;a0;)s=n.pop();for(s.index++,n.push(s);n.length<=a;)n.push(o={children:[],index:0}),s.children[s.index]=o.children,s=o;t++}a+10)return A--,g>>A&1;if(g=i[d++],g===255){const ie=i[d++];if(ie)throw new Error(`unexpected marker: ${(g<<8|ie).toString(16)}`)}return A=7,g>>>7}function y(ie){let ne=ie,ue;for(;(ue=p())!==null;){if(ne=ne[ue],typeof ne=="number")return ne;if(typeof ne!="object")throw new Error("invalid huffman sequence")}return null}function v(ie){let ne=ie,ue=0;for(;ne>0;){const fe=p();if(fe===null)return;ue=ue<<1|fe,--ne}return ue}function E(ie){const ne=v(ie);return ne>=1<>4;if(Re===0){if(Qe<15)break;me+=16}else{me+=Qe;const Oe=$f[me];ne[Oe]=E(Re),me++}}}function C(ie,ne){const ue=y(ie.huffmanTableDC),fe=ue===0?0:E(ue)<0){S--;return}let ue=s;const fe=o;for(;ue<=fe;){const me=y(ie.huffmanTableAC),Pe=me&15,Re=me>>4;if(Pe===0){if(Re<15){S=v(Re)+(1<>4,Oe===0)me<15?(S=v(me)+(1<=65488&&te<=65495)d+=2;else break}return d-h}function sAe(i,e){const t=[],{blocksPerLine:n,blocksPerColumn:r}=e,s=n<<3,o=new Int32Array(64),a=new Uint8Array(64);function l(u,c,h){const d=e.quantizationTable;let g,A,p,y,v,E,I,C,w;const S=h;let x;for(x=0;x<64;x++)S[x]=u[x]*d[x];for(x=0;x<8;++x){const T=8*x;if(S[1+T]===0&&S[2+T]===0&&S[3+T]===0&&S[4+T]===0&&S[5+T]===0&&S[6+T]===0&&S[7+T]===0){w=lh*S[0+T]+512>>10,S[0+T]=w,S[1+T]=w,S[2+T]=w,S[3+T]=w,S[4+T]=w,S[5+T]=w,S[6+T]=w,S[7+T]=w;continue}g=lh*S[0+T]+128>>8,A=lh*S[4+T]+128>>8,p=S[2+T],y=S[6+T],v=oy*(S[1+T]-S[7+T])+128>>8,C=oy*(S[1+T]+S[7+T])+128>>8,E=S[3+T]<<4,I=S[5+T]<<4,w=g-A+1>>1,g=g+A+1>>1,A=w,w=p*sy+y*ry+128>>8,p=p*ry-y*sy+128>>8,y=w,w=v-I+1>>1,v=v+I+1>>1,I=w,w=C+E+1>>1,E=C-E+1>>1,C=w,w=g-y+1>>1,g=g+y+1>>1,y=w,w=A-p+1>>1,A=A+p+1>>1,p=w,w=v*ny+C*iy+2048>>12,v=v*iy-C*ny+2048>>12,C=w,w=E*ty+I*ey+2048>>12,E=E*ey-I*ty+2048>>12,I=w,S[0+T]=g+C,S[7+T]=g-C,S[1+T]=A+I,S[6+T]=A-I,S[2+T]=p+E,S[5+T]=p-E,S[3+T]=y+v,S[4+T]=y-v}for(x=0;x<8;++x){const T=x;if(S[1*8+T]===0&&S[2*8+T]===0&&S[3*8+T]===0&&S[4*8+T]===0&&S[5*8+T]===0&&S[6*8+T]===0&&S[7*8+T]===0){w=lh*h[x+0]+8192>>14,S[0*8+T]=w,S[1*8+T]=w,S[2*8+T]=w,S[3*8+T]=w,S[4*8+T]=w,S[5*8+T]=w,S[6*8+T]=w,S[7*8+T]=w;continue}g=lh*S[0*8+T]+2048>>12,A=lh*S[4*8+T]+2048>>12,p=S[2*8+T],y=S[6*8+T],v=oy*(S[1*8+T]-S[7*8+T])+2048>>12,C=oy*(S[1*8+T]+S[7*8+T])+2048>>12,E=S[3*8+T],I=S[5*8+T],w=g-A+1>>1,g=g+A+1>>1,A=w,w=p*sy+y*ry+2048>>12,p=p*ry-y*sy+2048>>12,y=w,w=v-I+1>>1,v=v+I+1>>1,I=w,w=C+E+1>>1,E=C-E+1>>1,C=w,w=g-y+1>>1,g=g+y+1>>1,y=w,w=A-p+1>>1,A=A+p+1>>1,p=w,w=v*ny+C*iy+2048>>12,v=v*iy-C*ny+2048>>12,C=w,w=E*ty+I*ey+2048>>12,E=E*ey-I*ty+2048>>12,I=w,S[0*8+T]=g+C,S[7*8+T]=g-C,S[1*8+T]=A+I,S[6*8+T]=A-I,S[2*8+T]=p+E,S[5*8+T]=p-E,S[3*8+T]=y+v,S[4*8+T]=y-v}for(x=0;x<64;++x){const T=128+(S[x]+8>>4);T<0?c[x]=0:T>255?c[x]=255:c[x]=T}}for(let u=0;u>4)if(u>>4===1)for(let h=0;h<64;h++){const d=$f[h];c[d]=n()}else throw new Error("DQT: invalid table spec");else for(let h=0;h<64;h++){const d=$f[h];c[d]=e[t++]}this.quantizationTables[u&15]=c}break}case 65472:case 65473:case 65474:{n();const a={extended:o===65473,progressive:o===65474,precision:e[t++],scanLines:n(),samplesPerLine:n(),components:{},componentsOrder:[]},l=e[t++];let u;for(let c=0;c>4,d=e[t+1]&15,g=e[t+2];a.componentsOrder.push(u),a.components[u]={h,v:d,quantizationIdx:g},t+=3}s(a),this.frames.push(a);break}case 65476:{const a=n();for(let l=2;l>4?this.huffmanTablesAC[u&15]=O8(c,d):this.huffmanTablesDC[u&15]=O8(c,d)}break}case 65501:n(),this.resetInterval=n();break;case 65498:{n();const a=e[t++],l=[],u=this.frames[0];for(let A=0;A>4],p.huffmanTableAC=this.huffmanTablesAC[y&15],l.push(p)}const c=e[t++],h=e[t++],d=e[t++],g=rAe(e,t,u,l,this.resetInterval,c,h,d>>4,d&15);t+=g;break}case 65535:e[t]!==255&&t--;break;default:if(e[t-3]===255&&e[t-2]>=192&&e[t-2]<=254){t-=3;break}throw new Error(`unknown JPEG marker ${o.toString(16)}`)}o=n()}}getResult(){const{frames:e}=this;if(this.frames.length===0)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let c=0;c=0;)i[e]=0}const hAe=0,U8=1,dAe=2,fAe=3,gAe=258,Tx=29,jf=256,Wf=jf+1+Tx,ch=30,Bx=19,G8=2*Wf+1,Hl=15,Rx=16,AAe=7,Lx=256,H8=16,z8=17,V8=18,Dx=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),ay=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),pAe=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),q8=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),mAe=512,yo=new Array((Wf+2)*2);uh(yo);const Kf=new Array(ch*2);uh(Kf);const Yf=new Array(mAe);uh(Yf);const Zf=new Array(gAe-fAe+1);uh(Zf);const kx=new Array(Tx);uh(kx);const ly=new Array(ch);uh(ly);function Px(i,e,t,n,r){this.static_tree=i,this.extra_bits=e,this.extra_base=t,this.elems=n,this.max_length=r,this.has_stree=i&&i.length}let $8,j8,W8;function Mx(i,e){this.dyn_tree=i,this.max_code=0,this.stat_desc=e}const K8=i=>i<256?Yf[i]:Yf[256+(i>>>7)],Xf=(i,e)=>{i.pending_buf[i.pending++]=e&255,i.pending_buf[i.pending++]=e>>>8&255},Nn=(i,e,t)=>{i.bi_valid>Rx-t?(i.bi_buf|=e<>Rx-i.bi_valid,i.bi_valid+=t-Rx):(i.bi_buf|=e<{Nn(i,t[e*2],t[e*2+1])},Y8=(i,e)=>{let t=0;do t|=i&1,i>>>=1,t<<=1;while(--e>0);return t>>>1},yAe=i=>{i.bi_valid===16?(Xf(i,i.bi_buf),i.bi_buf=0,i.bi_valid=0):i.bi_valid>=8&&(i.pending_buf[i.pending++]=i.bi_buf&255,i.bi_buf>>=8,i.bi_valid-=8)},vAe=(i,e)=>{const t=e.dyn_tree,n=e.max_code,r=e.stat_desc.static_tree,s=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,a=e.stat_desc.extra_base,l=e.stat_desc.max_length;let u,c,h,d,g,A,p=0;for(d=0;d<=Hl;d++)i.bl_count[d]=0;for(t[i.heap[i.heap_max]*2+1]=0,u=i.heap_max+1;ul&&(d=l,p++),t[c*2+1]=d,!(c>n)&&(i.bl_count[d]++,g=0,c>=a&&(g=o[c-a]),A=t[c*2],i.opt_len+=A*(d+g),s&&(i.static_len+=A*(r[c*2+1]+g)));if(p!==0){do{for(d=l-1;i.bl_count[d]===0;)d--;i.bl_count[d]--,i.bl_count[d+1]+=2,i.bl_count[l]--,p-=2}while(p>0);for(d=l;d!==0;d--)for(c=i.bl_count[d];c!==0;)h=i.heap[--u],!(h>n)&&(t[h*2+1]!==d&&(i.opt_len+=(d-t[h*2+1])*t[h*2],t[h*2+1]=d),c--)}},Z8=(i,e,t)=>{const n=new Array(Hl+1);let r=0,s,o;for(s=1;s<=Hl;s++)r=r+t[s-1]<<1,n[s]=r;for(o=0;o<=e;o++){let a=i[o*2+1];a!==0&&(i[o*2]=Y8(n[a]++,a))}},EAe=()=>{let i,e,t,n,r;const s=new Array(Hl+1);for(t=0,n=0;n>=7;n{let e;for(e=0;e{i.bi_valid>8?Xf(i,i.bi_buf):i.bi_valid>0&&(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0},e6=(i,e,t,n)=>{const r=e*2,s=t*2;return i[r]{const n=i.heap[t];let r=t<<1;for(;r<=i.heap_len&&(r{let n,r,s=0,o,a;if(i.sym_next!==0)do n=i.pending_buf[i.sym_buf+s++]&255,n+=(i.pending_buf[i.sym_buf+s++]&255)<<8,r=i.pending_buf[i.sym_buf+s++],n===0?Cs(i,r,e):(o=Zf[r],Cs(i,o+jf+1,e),a=Dx[o],a!==0&&(r-=kx[o],Nn(i,r,a)),n--,o=K8(n),Cs(i,o,t),a=ay[o],a!==0&&(n-=ly[o],Nn(i,n,a)));while(s{const t=e.dyn_tree,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,s=e.stat_desc.elems;let o,a,l=-1,u;for(i.heap_len=0,i.heap_max=G8,o=0;o>1;o>=1;o--)Fx(i,t,o);u=s;do o=i.heap[1],i.heap[1]=i.heap[i.heap_len--],Fx(i,t,1),a=i.heap[1],i.heap[--i.heap_max]=o,i.heap[--i.heap_max]=a,t[u*2]=t[o*2]+t[a*2],i.depth[u]=(i.depth[o]>=i.depth[a]?i.depth[o]:i.depth[a])+1,t[o*2+1]=t[a*2+1]=u,i.heap[1]=u++,Fx(i,t,1);while(i.heap_len>=2);i.heap[--i.heap_max]=i.heap[1],vAe(i,e),Z8(t,l,i.bl_count)},i6=(i,e,t)=>{let n,r=-1,s,o=e[0*2+1],a=0,l=7,u=4;for(o===0&&(l=138,u=3),e[(t+1)*2+1]=65535,n=0;n<=t;n++)s=o,o=e[(n+1)*2+1],!(++a{let n,r=-1,s,o=e[0*2+1],a=0,l=7,u=4;for(o===0&&(l=138,u=3),n=0;n<=t;n++)if(s=o,o=e[(n+1)*2+1],!(++a{let e;for(i6(i,i.dyn_ltree,i.l_desc.max_code),i6(i,i.dyn_dtree,i.d_desc.max_code),Ox(i,i.bl_desc),e=Bx-1;e>=3&&i.bl_tree[q8[e]*2+1]===0;e--);return i.opt_len+=3*(e+1)+5+5+4,e},_Ae=(i,e,t,n)=>{let r;for(Nn(i,e-257,5),Nn(i,t-1,5),Nn(i,n-4,4),r=0;r{let e=4093624447,t;for(t=0;t<=31;t++,e>>>=1)if(e&1&&i.dyn_ltree[t*2]!==0)return N8;if(i.dyn_ltree[9*2]!==0||i.dyn_ltree[10*2]!==0||i.dyn_ltree[13*2]!==0)return Q8;for(t=32;t{r6||(EAe(),r6=!0),i.l_desc=new Mx(i.dyn_ltree,$8),i.d_desc=new Mx(i.dyn_dtree,j8),i.bl_desc=new Mx(i.bl_tree,W8),i.bi_buf=0,i.bi_valid=0,X8(i)},s6=(i,e,t,n)=>{Nn(i,(hAe<<1)+(n?1:0),3),J8(i),Xf(i,t),Xf(i,~t),t&&i.pending_buf.set(i.window.subarray(e,e+t),i.pending),i.pending+=t},xAe=i=>{Nn(i,U8<<1,3),Cs(i,Lx,yo),yAe(i)},bAe=(i,e,t,n)=>{let r,s,o=0;i.level>0?(i.strm.data_type===cAe&&(i.strm.data_type=CAe(i)),Ox(i,i.l_desc),Ox(i,i.d_desc),o=IAe(i),r=i.opt_len+3+7>>>3,s=i.static_len+3+7>>>3,s<=r&&(r=s)):r=s=t+5,t+4<=r&&e!==-1?s6(i,e,t,n):i.strategy===uAe||s===r?(Nn(i,(U8<<1)+(n?1:0),3),t6(i,yo,Kf)):(Nn(i,(dAe<<1)+(n?1:0),3),_Ae(i,i.l_desc.max_code+1,i.d_desc.max_code+1,o+1),t6(i,i.dyn_ltree,i.dyn_dtree)),X8(i),n&&J8(i)},SAe=(i,e,t)=>(i.pending_buf[i.sym_buf+i.sym_next++]=e,i.pending_buf[i.sym_buf+i.sym_next++]=e>>8,i.pending_buf[i.sym_buf+i.sym_next++]=t,e===0?i.dyn_ltree[t*2]++:(i.matches++,e--,i.dyn_ltree[(Zf[t]+jf+1)*2]++,i.dyn_dtree[K8(e)*2]++),i.sym_next===i.sym_end);var TAe=wAe,BAe=s6,RAe=bAe,LAe=SAe,DAe=xAe,kAe={_tr_init:TAe,_tr_stored_block:BAe,_tr_flush_block:RAe,_tr_tally:LAe,_tr_align:DAe},Jf=(i,e,t,n)=>{let r=i&65535|0,s=i>>>16&65535|0,o=0;for(;t!==0;){o=t>2e3?2e3:t,t-=o;do r=r+e[n++]|0,s=s+r|0;while(--o);r%=65521,s%=65521}return r|s<<16|0};const PAe=()=>{let i,e=[];for(var t=0;t<256;t++){i=t;for(var n=0;n<8;n++)i=i&1?3988292384^i>>>1:i>>>1;e[t]=i}return e},MAe=new Uint32Array(PAe());var Mi=(i,e,t,n)=>{const r=MAe,s=n+t;i^=-1;for(let o=n;o>>8^r[(i^e[o])&255];return i^-1},hh={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},eg={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:FAe,_tr_stored_block:Nx,_tr_flush_block:OAe,_tr_tally:La,_tr_align:NAe}=kAe,{Z_NO_FLUSH:Da,Z_PARTIAL_FLUSH:QAe,Z_FULL_FLUSH:UAe,Z_FINISH:pr,Z_BLOCK:o6,Z_OK:ji,Z_STREAM_END:a6,Z_STREAM_ERROR:ws,Z_DATA_ERROR:GAe,Z_BUF_ERROR:Qx,Z_DEFAULT_COMPRESSION:HAe,Z_FILTERED:zAe,Z_HUFFMAN_ONLY:uy,Z_RLE:VAe,Z_FIXED:qAe,Z_DEFAULT_STRATEGY:$Ae,Z_UNKNOWN:jAe,Z_DEFLATED:cy}=eg,WAe=9,KAe=15,YAe=8,Ux=256+1+29,ZAe=30,XAe=19,JAe=2*Ux+1,e0e=15,At=3,ka=258,xs=ka+At+1,t0e=32,dh=42,Gx=57,Hx=69,zx=73,Vx=91,qx=103,zl=113,tg=666,vn=1,fh=2,Vl=3,gh=4,i0e=3,ql=(i,e)=>(i.msg=hh[e],e),l6=i=>i*2-(i>4?9:0),Pa=i=>{let e=i.length;for(;--e>=0;)i[e]=0},n0e=i=>{let e,t,n,r=i.w_size;e=i.hash_size,n=e;do t=i.head[--n],i.head[n]=t>=r?t-r:0;while(--e);e=r,n=e;do t=i.prev[--n],i.prev[n]=t>=r?t-r:0;while(--e)};let Ma=(i,e,t)=>(e<{const e=i.state;let t=e.pending;t>i.avail_out&&(t=i.avail_out),t!==0&&(i.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+t),i.next_out),i.next_out+=t,e.pending_out+=t,i.total_out+=t,i.avail_out-=t,e.pending-=t,e.pending===0&&(e.pending_out=0))},ir=(i,e)=>{OAe(i,i.block_start>=0?i.block_start:-1,i.strstart-i.block_start,e),i.block_start=i.strstart,tr(i.strm)},Bt=(i,e)=>{i.pending_buf[i.pending++]=e},ig=(i,e)=>{i.pending_buf[i.pending++]=e>>>8&255,i.pending_buf[i.pending++]=e&255},$x=(i,e,t,n)=>{let r=i.avail_in;return r>n&&(r=n),r===0?0:(i.avail_in-=r,e.set(i.input.subarray(i.next_in,i.next_in+r),t),i.state.wrap===1?i.adler=Jf(i.adler,e,r,t):i.state.wrap===2&&(i.adler=Mi(i.adler,e,r,t)),i.next_in+=r,i.total_in+=r,r)},u6=(i,e)=>{let t=i.max_chain_length,n=i.strstart,r,s,o=i.prev_length,a=i.nice_match;const l=i.strstart>i.w_size-xs?i.strstart-(i.w_size-xs):0,u=i.window,c=i.w_mask,h=i.prev,d=i.strstart+ka;let g=u[n+o-1],A=u[n+o];i.prev_length>=i.good_match&&(t>>=2),a>i.lookahead&&(a=i.lookahead);do if(r=e,!(u[r+o]!==A||u[r+o-1]!==g||u[r]!==u[n]||u[++r]!==u[n+1])){n+=2,r++;do;while(u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&u[++n]===u[++r]&&no){if(i.match_start=e,o=s,s>=a)break;g=u[n+o-1],A=u[n+o]}}while((e=h[e&c])>l&&--t!==0);return o<=i.lookahead?o:i.lookahead},Ah=i=>{const e=i.w_size;let t,n,r;do{if(n=i.window_size-i.lookahead-i.strstart,i.strstart>=e+(e-xs)&&(i.window.set(i.window.subarray(e,e+e-n),0),i.match_start-=e,i.strstart-=e,i.block_start-=e,i.insert>i.strstart&&(i.insert=i.strstart),n0e(i),n+=e),i.strm.avail_in===0)break;if(t=$x(i.strm,i.window,i.strstart+i.lookahead,n),i.lookahead+=t,i.lookahead+i.insert>=At)for(r=i.strstart-i.insert,i.ins_h=i.window[r],i.ins_h=Ma(i,i.ins_h,i.window[r+1]);i.insert&&(i.ins_h=Ma(i,i.ins_h,i.window[r+At-1]),i.prev[r&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=r,r++,i.insert--,!(i.lookahead+i.insert{let t=i.pending_buf_size-5>i.w_size?i.w_size:i.pending_buf_size-5,n,r,s,o=0,a=i.strm.avail_in;do{if(n=65535,s=i.bi_valid+42>>3,i.strm.avail_outr+i.strm.avail_in&&(n=r+i.strm.avail_in),n>s&&(n=s),n>8,i.pending_buf[i.pending-2]=~n,i.pending_buf[i.pending-1]=~n>>8,tr(i.strm),r&&(r>n&&(r=n),i.strm.output.set(i.window.subarray(i.block_start,i.block_start+r),i.strm.next_out),i.strm.next_out+=r,i.strm.avail_out-=r,i.strm.total_out+=r,i.block_start+=r,n-=r),n&&($x(i.strm,i.strm.output,i.strm.next_out,n),i.strm.next_out+=n,i.strm.avail_out-=n,i.strm.total_out+=n)}while(o===0);return a-=i.strm.avail_in,a&&(a>=i.w_size?(i.matches=2,i.window.set(i.strm.input.subarray(i.strm.next_in-i.w_size,i.strm.next_in),0),i.strstart=i.w_size,i.insert=i.strstart):(i.window_size-i.strstart<=a&&(i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches<2&&i.matches++,i.insert>i.strstart&&(i.insert=i.strstart)),i.window.set(i.strm.input.subarray(i.strm.next_in-a,i.strm.next_in),i.strstart),i.strstart+=a,i.insert+=a>i.w_size-i.insert?i.w_size-i.insert:a),i.block_start=i.strstart),i.high_waters&&i.block_start>=i.w_size&&(i.block_start-=i.w_size,i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches<2&&i.matches++,s+=i.w_size,i.insert>i.strstart&&(i.insert=i.strstart)),s>i.strm.avail_in&&(s=i.strm.avail_in),s&&($x(i.strm,i.window,i.strstart,s),i.strstart+=s,i.insert+=s>i.w_size-i.insert?i.w_size-i.insert:s),i.high_water>3,s=i.pending_buf_size-s>65535?65535:i.pending_buf_size-s,t=s>i.w_size?i.w_size:s,r=i.strstart-i.block_start,(r>=t||(r||e===pr)&&e!==Da&&i.strm.avail_in===0&&r<=s)&&(n=r>s?s:r,o=e===pr&&i.strm.avail_in===0&&n===r?1:0,Nx(i,i.block_start,n,o),i.block_start+=n,tr(i.strm)),o?Vl:vn)},jx=(i,e)=>{let t,n;for(;;){if(i.lookahead=At&&(i.ins_h=Ma(i,i.ins_h,i.window[i.strstart+At-1]),t=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),t!==0&&i.strstart-t<=i.w_size-xs&&(i.match_length=u6(i,t)),i.match_length>=At)if(n=La(i,i.strstart-i.match_start,i.match_length-At),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=At){i.match_length--;do i.strstart++,i.ins_h=Ma(i,i.ins_h,i.window[i.strstart+At-1]),t=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=Ma(i,i.ins_h,i.window[i.strstart+1]);else n=La(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(n&&(ir(i,!1),i.strm.avail_out===0))return vn}return i.insert=i.strstart{let t,n,r;for(;;){if(i.lookahead=At&&(i.ins_h=Ma(i,i.ins_h,i.window[i.strstart+At-1]),t=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=At-1,t!==0&&i.prev_length4096)&&(i.match_length=At-1)),i.prev_length>=At&&i.match_length<=i.prev_length){r=i.strstart+i.lookahead-At,n=La(i,i.strstart-1-i.prev_match,i.prev_length-At),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart<=r&&(i.ins_h=Ma(i,i.ins_h,i.window[i.strstart+At-1]),t=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=At-1,i.strstart++,n&&(ir(i,!1),i.strm.avail_out===0))return vn}else if(i.match_available){if(n=La(i,0,i.window[i.strstart-1]),n&&ir(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return vn}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(n=La(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart{let t,n,r,s;const o=i.window;for(;;){if(i.lookahead<=ka){if(Ah(i),i.lookahead<=ka&&e===Da)return vn;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead>=At&&i.strstart>0&&(r=i.strstart-1,n=o[r],n===o[++r]&&n===o[++r]&&n===o[++r])){s=i.strstart+ka;do;while(n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&n===o[++r]&&ri.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=At?(t=La(i,1,i.match_length-At),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(t=La(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),t&&(ir(i,!1),i.strm.avail_out===0))return vn}return i.insert=0,e===pr?(ir(i,!0),i.strm.avail_out===0?Vl:gh):i.sym_next&&(ir(i,!1),i.strm.avail_out===0)?vn:fh},s0e=(i,e)=>{let t;for(;;){if(i.lookahead===0&&(Ah(i),i.lookahead===0)){if(e===Da)return vn;break}if(i.match_length=0,t=La(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,t&&(ir(i,!1),i.strm.avail_out===0))return vn}return i.insert=0,e===pr?(ir(i,!0),i.strm.avail_out===0?Vl:gh):i.sym_next&&(ir(i,!1),i.strm.avail_out===0)?vn:fh};function bs(i,e,t,n,r){this.good_length=i,this.max_lazy=e,this.nice_length=t,this.max_chain=n,this.func=r}const ng=[new bs(0,0,0,0,c6),new bs(4,4,8,4,jx),new bs(4,5,16,8,jx),new bs(4,6,32,32,jx),new bs(4,4,16,16,ph),new bs(8,16,32,32,ph),new bs(8,16,128,128,ph),new bs(8,32,128,256,ph),new bs(32,128,258,1024,ph),new bs(32,258,258,4096,ph)],o0e=i=>{i.window_size=2*i.w_size,Pa(i.head),i.max_lazy_match=ng[i.level].max_lazy,i.good_match=ng[i.level].good_length,i.nice_match=ng[i.level].nice_length,i.max_chain_length=ng[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=At-1,i.match_available=0,i.ins_h=0};function a0e(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=cy,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(JAe*2),this.dyn_dtree=new Uint16Array((2*ZAe+1)*2),this.bl_tree=new Uint16Array((2*XAe+1)*2),Pa(this.dyn_ltree),Pa(this.dyn_dtree),Pa(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(e0e+1),this.heap=new Uint16Array(2*Ux+1),Pa(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Ux+1),Pa(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const rg=i=>{if(!i)return 1;const e=i.state;return!e||e.strm!==i||e.status!==dh&&e.status!==Gx&&e.status!==Hx&&e.status!==zx&&e.status!==Vx&&e.status!==qx&&e.status!==zl&&e.status!==tg?1:0},h6=i=>{if(rg(i))return ql(i,ws);i.total_in=i.total_out=0,i.data_type=jAe;const e=i.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap===2?Gx:e.wrap?dh:zl,i.adler=e.wrap===2?0:1,e.last_flush=-2,FAe(e),ji},d6=i=>{const e=h6(i);return e===ji&&o0e(i.state),e},l0e=(i,e)=>rg(i)||i.state.wrap!==2?ws:(i.state.gzhead=e,ji),f6=(i,e,t,n,r,s)=>{if(!i)return ws;let o=1;if(e===HAe&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),r<1||r>WAe||t!==cy||n<8||n>15||e<0||e>9||s<0||s>qAe||n===8&&o!==1)return ql(i,ws);n===8&&(n=9);const a=new a0e;return i.state=a,a.strm=i,a.status=dh,a.wrap=o,a.gzhead=null,a.w_bits=n,a.w_size=1<f6(i,e,cy,KAe,YAe,$Ae),c0e=(i,e)=>{if(rg(i)||e>o6||e<0)return i?ql(i,ws):ws;const t=i.state;if(!i.output||i.avail_in!==0&&!i.input||t.status===tg&&e!==pr)return ql(i,i.avail_out===0?Qx:ws);const n=t.last_flush;if(t.last_flush=e,t.pending!==0){if(tr(i),i.avail_out===0)return t.last_flush=-1,ji}else if(i.avail_in===0&&l6(e)<=l6(n)&&e!==pr)return ql(i,Qx);if(t.status===tg&&i.avail_in!==0)return ql(i,Qx);if(t.status===dh&&t.wrap===0&&(t.status=zl),t.status===dh){let r=cy+(t.w_bits-8<<4)<<8,s=-1;if(t.strategy>=uy||t.level<2?s=0:t.level<6?s=1:t.level===6?s=2:s=3,r|=s<<6,t.strstart!==0&&(r|=t0e),r+=31-r%31,ig(t,r),t.strstart!==0&&(ig(t,i.adler>>>16),ig(t,i.adler&65535)),i.adler=1,t.status=zl,tr(i),t.pending!==0)return t.last_flush=-1,ji}if(t.status===Gx){if(i.adler=0,Bt(t,31),Bt(t,139),Bt(t,8),t.gzhead)Bt(t,(t.gzhead.text?1:0)+(t.gzhead.hcrc?2:0)+(t.gzhead.extra?4:0)+(t.gzhead.name?8:0)+(t.gzhead.comment?16:0)),Bt(t,t.gzhead.time&255),Bt(t,t.gzhead.time>>8&255),Bt(t,t.gzhead.time>>16&255),Bt(t,t.gzhead.time>>24&255),Bt(t,t.level===9?2:t.strategy>=uy||t.level<2?4:0),Bt(t,t.gzhead.os&255),t.gzhead.extra&&t.gzhead.extra.length&&(Bt(t,t.gzhead.extra.length&255),Bt(t,t.gzhead.extra.length>>8&255)),t.gzhead.hcrc&&(i.adler=Mi(i.adler,t.pending_buf,t.pending,0)),t.gzindex=0,t.status=Hx;else if(Bt(t,0),Bt(t,0),Bt(t,0),Bt(t,0),Bt(t,0),Bt(t,t.level===9?2:t.strategy>=uy||t.level<2?4:0),Bt(t,i0e),t.status=zl,tr(i),t.pending!==0)return t.last_flush=-1,ji}if(t.status===Hx){if(t.gzhead.extra){let r=t.pending,s=(t.gzhead.extra.length&65535)-t.gzindex;for(;t.pending+s>t.pending_buf_size;){let a=t.pending_buf_size-t.pending;if(t.pending_buf.set(t.gzhead.extra.subarray(t.gzindex,t.gzindex+a),t.pending),t.pending=t.pending_buf_size,t.gzhead.hcrc&&t.pending>r&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r)),t.gzindex+=a,tr(i),t.pending!==0)return t.last_flush=-1,ji;r=0,s-=a}let o=new Uint8Array(t.gzhead.extra);t.pending_buf.set(o.subarray(t.gzindex,t.gzindex+s),t.pending),t.pending+=s,t.gzhead.hcrc&&t.pending>r&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r)),t.gzindex=0}t.status=zx}if(t.status===zx){if(t.gzhead.name){let r=t.pending,s;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>r&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r)),tr(i),t.pending!==0)return t.last_flush=-1,ji;r=0}t.gzindexr&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r)),t.gzindex=0}t.status=Vx}if(t.status===Vx){if(t.gzhead.comment){let r=t.pending,s;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>r&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r)),tr(i),t.pending!==0)return t.last_flush=-1,ji;r=0}t.gzindexr&&(i.adler=Mi(i.adler,t.pending_buf,t.pending-r,r))}t.status=qx}if(t.status===qx){if(t.gzhead.hcrc){if(t.pending+2>t.pending_buf_size&&(tr(i),t.pending!==0))return t.last_flush=-1,ji;Bt(t,i.adler&255),Bt(t,i.adler>>8&255),i.adler=0}if(t.status=zl,tr(i),t.pending!==0)return t.last_flush=-1,ji}if(i.avail_in!==0||t.lookahead!==0||e!==Da&&t.status!==tg){let r=t.level===0?c6(t,e):t.strategy===uy?s0e(t,e):t.strategy===VAe?r0e(t,e):ng[t.level].func(t,e);if((r===Vl||r===gh)&&(t.status=tg),r===vn||r===Vl)return i.avail_out===0&&(t.last_flush=-1),ji;if(r===fh&&(e===QAe?NAe(t):e!==o6&&(Nx(t,0,0,!1),e===UAe&&(Pa(t.head),t.lookahead===0&&(t.strstart=0,t.block_start=0,t.insert=0))),tr(i),i.avail_out===0))return t.last_flush=-1,ji}return e!==pr?ji:t.wrap<=0?a6:(t.wrap===2?(Bt(t,i.adler&255),Bt(t,i.adler>>8&255),Bt(t,i.adler>>16&255),Bt(t,i.adler>>24&255),Bt(t,i.total_in&255),Bt(t,i.total_in>>8&255),Bt(t,i.total_in>>16&255),Bt(t,i.total_in>>24&255)):(ig(t,i.adler>>>16),ig(t,i.adler&65535)),tr(i),t.wrap>0&&(t.wrap=-t.wrap),t.pending!==0?ji:a6)},h0e=i=>{if(rg(i))return ws;const e=i.state.status;return i.state=null,e===zl?ql(i,GAe):ji},d0e=(i,e)=>{let t=e.length;if(rg(i))return ws;const n=i.state,r=n.wrap;if(r===2||r===1&&n.status!==dh||n.lookahead)return ws;if(r===1&&(i.adler=Jf(i.adler,e,t,0)),n.wrap=0,t>=n.w_size){r===0&&(Pa(n.head),n.strstart=0,n.block_start=0,n.insert=0);let l=new Uint8Array(n.w_size);l.set(e.subarray(t-n.w_size,t),0),e=l,t=n.w_size}const s=i.avail_in,o=i.next_in,a=i.input;for(i.avail_in=t,i.next_in=0,i.input=e,Ah(n);n.lookahead>=At;){let l=n.strstart,u=n.lookahead-(At-1);do n.ins_h=Ma(n,n.ins_h,n.window[l+At-1]),n.prev[l&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=l,l++;while(--u);n.strstart=l,n.lookahead=At-1,Ah(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=At-1,n.match_available=0,i.next_in=o,i.input=a,i.avail_in=s,n.wrap=r,ji};var f0e=u0e,g0e=f6,A0e=d6,p0e=h6,m0e=l0e,y0e=c0e,v0e=h0e,E0e=d0e,I0e="pako deflate (from Nodeca project)",sg={deflateInit:f0e,deflateInit2:g0e,deflateReset:A0e,deflateResetKeep:p0e,deflateSetHeader:m0e,deflate:y0e,deflateEnd:v0e,deflateSetDictionary:E0e,deflateInfo:I0e};const _0e=(i,e)=>Object.prototype.hasOwnProperty.call(i,e);var C0e=function(i){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const t=e.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const n in t)_0e(t,n)&&(i[n]=t[n])}}return i},w0e=i=>{let e=0;for(let n=0,r=i.length;n=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;og[254]=og[254]=1;var x0e=i=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(i);let e,t,n,r,s,o=i.length,a=0;for(r=0;r>>6,e[s++]=128|t&63):t<65536?(e[s++]=224|t>>>12,e[s++]=128|t>>>6&63,e[s++]=128|t&63):(e[s++]=240|t>>>18,e[s++]=128|t>>>12&63,e[s++]=128|t>>>6&63,e[s++]=128|t&63);return e};const b0e=(i,e)=>{if(e<65534&&i.subarray&&g6)return String.fromCharCode.apply(null,i.length===e?i:i.subarray(0,e));let t="";for(let n=0;n{const t=e||i.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(i.subarray(0,e));let n,r;const s=new Array(t*2);for(r=0,n=0;n4){s[r++]=65533,n+=a-1;continue}for(o&=a===2?31:a===3?15:7;a>1&&n1){s[r++]=65533;continue}o<65536?s[r++]=o:(o-=65536,s[r++]=55296|o>>10&1023,s[r++]=56320|o&1023)}return b0e(s,r)},T0e=(i,e)=>{e=e||i.length,e>i.length&&(e=i.length);let t=e-1;for(;t>=0&&(i[t]&192)===128;)t--;return t<0||t===0?e:t+og[i[t]]>e?t:e},ag={string2buf:x0e,buf2string:S0e,utf8border:T0e};function B0e(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var A6=B0e;const p6=Object.prototype.toString,{Z_NO_FLUSH:R0e,Z_SYNC_FLUSH:L0e,Z_FULL_FLUSH:D0e,Z_FINISH:k0e,Z_OK:dy,Z_STREAM_END:P0e,Z_DEFAULT_COMPRESSION:M0e,Z_DEFAULT_STRATEGY:F0e,Z_DEFLATED:O0e}=eg;function Wx(i){this.options=hy.assign({level:M0e,method:O0e,chunkSize:16384,windowBits:15,memLevel:8,strategy:F0e},i||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new A6,this.strm.avail_out=0;let t=sg.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(t!==dy)throw new Error(hh[t]);if(e.header&&sg.deflateSetHeader(this.strm,e.header),e.dictionary){let n;if(typeof e.dictionary=="string"?n=ag.string2buf(e.dictionary):p6.call(e.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(e.dictionary):n=e.dictionary,t=sg.deflateSetDictionary(this.strm,n),t!==dy)throw new Error(hh[t]);this._dict_set=!0}}Wx.prototype.push=function(i,e){const t=this.strm,n=this.options.chunkSize;let r,s;if(this.ended)return!1;for(e===~~e?s=e:s=e===!0?k0e:R0e,typeof i=="string"?t.input=ag.string2buf(i):p6.call(i)==="[object ArrayBuffer]"?t.input=new Uint8Array(i):t.input=i,t.next_in=0,t.avail_in=t.input.length;;){if(t.avail_out===0&&(t.output=new Uint8Array(n),t.next_out=0,t.avail_out=n),(s===L0e||s===D0e)&&t.avail_out<=6){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(r=sg.deflate(t,s),r===P0e)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),r=sg.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===dy;if(t.avail_out===0){this.onData(t.output);continue}if(s>0&&t.next_out>0){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(t.avail_in===0)break}return!0},Wx.prototype.onData=function(i){this.chunks.push(i)},Wx.prototype.onEnd=function(i){i===dy&&(this.result=hy.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};const fy=16209,N0e=16191;var Q0e=function(e,t){let n,r,s,o,a,l,u,c,h,d,g,A,p,y,v,E,I,C,w,S,x,T,Q,M;const R=e.state;n=e.next_in,Q=e.input,r=n+(e.avail_in-5),s=e.next_out,M=e.output,o=s-(t-e.avail_out),a=s+(e.avail_out-257),l=R.dmax,u=R.wsize,c=R.whave,h=R.wnext,d=R.window,g=R.hold,A=R.bits,p=R.lencode,y=R.distcode,v=(1<>>24,g>>>=C,A-=C,C=I>>>16&255,C===0)M[s++]=I&65535;else if(C&16){w=I&65535,C&=15,C&&(A>>=C,A-=C),A<15&&(g+=Q[n++]<>>24,g>>>=C,A-=C,C=I>>>16&255,C&16){if(S=I&65535,C&=15,Al){e.msg="invalid distance too far back",R.mode=fy;break e}if(g>>>=C,A-=C,C=s-o,S>C){if(C=S-C,C>c&&R.sane){e.msg="invalid distance too far back",R.mode=fy;break e}if(x=0,T=d,h===0){if(x+=u-C,C2;)M[s++]=T[x++],M[s++]=T[x++],M[s++]=T[x++],w-=3;w&&(M[s++]=T[x++],w>1&&(M[s++]=T[x++]))}else{x=s-S;do M[s++]=M[x++],M[s++]=M[x++],M[s++]=M[x++],w-=3;while(w>2);w&&(M[s++]=M[x++],w>1&&(M[s++]=M[x++]))}}else if(C&64){e.msg="invalid distance code",R.mode=fy;break e}else{I=y[(I&65535)+(g&(1<>3,n-=w,A-=w<<3,g&=(1<{const l=a.bits;let u=0,c=0,h=0,d=0,g=0,A=0,p=0,y=0,v=0,E=0,I,C,w,S,x,T=null,Q;const M=new Uint16Array(mh+1),R=new Uint16Array(mh+1);let z=null,q,X,N;for(u=0;u<=mh;u++)M[u]=0;for(c=0;c=1&&M[d]===0;d--);if(g>d&&(g=d),d===0)return r[s++]=1<<24|64<<16|0,r[s++]=1<<24|64<<16|0,a.bits=1,0;for(h=1;h0&&(i===v6||d!==1))return-1;for(R[1]=0,u=1;um6||i===E6&&v>y6)return 1;for(;;){q=u-p,o[c]+1=Q?(X=z[o[c]-Q],N=T[o[c]-Q]):(X=96,N=0),I=1<>p)+C]=q<<24|X<<16|N|0;while(C!==0);for(I=1<>=1;if(I!==0?(E&=I-1,E+=I):E=0,c++,--M[u]===0){if(u===d)break;u=e[t+o[c]]}if(u>g&&(E&S)!==w){for(p===0&&(p=g),x+=h,A=u-p,y=1<m6||i===E6&&v>y6)return 1;w=E&S,r[w]=g<<24|A<<16|x-s|0}}return E!==0&&(r[x+E]=u-p<<24|64<<16|0),a.bits=g,0};const V0e=0,I6=1,_6=2,{Z_FINISH:C6,Z_BLOCK:q0e,Z_TREES:gy,Z_OK:$l,Z_STREAM_END:$0e,Z_NEED_DICT:j0e,Z_STREAM_ERROR:mr,Z_DATA_ERROR:w6,Z_MEM_ERROR:x6,Z_BUF_ERROR:W0e,Z_DEFLATED:b6}=eg,Ay=16180,S6=16181,T6=16182,B6=16183,R6=16184,L6=16185,D6=16186,k6=16187,P6=16188,M6=16189,py=16190,vo=16191,Yx=16192,F6=16193,Zx=16194,O6=16195,N6=16196,Q6=16197,U6=16198,my=16199,yy=16200,G6=16201,H6=16202,z6=16203,V6=16204,q6=16205,Xx=16206,$6=16207,j6=16208,Yt=16209,W6=16210,K6=16211,K0e=852,Y0e=592,Z0e=15,Y6=i=>(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24);function X0e(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const jl=i=>{if(!i)return 1;const e=i.state;return!e||e.strm!==i||e.modeK6?1:0},Z6=i=>{if(jl(i))return mr;const e=i.state;return i.total_in=i.total_out=e.total=0,i.msg="",e.wrap&&(i.adler=e.wrap&1),e.mode=Ay,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(K0e),e.distcode=e.distdyn=new Int32Array(Y0e),e.sane=1,e.back=-1,$l},X6=i=>{if(jl(i))return mr;const e=i.state;return e.wsize=0,e.whave=0,e.wnext=0,Z6(i)},J6=(i,e)=>{let t;if(jl(i))return mr;const n=i.state;return e<0?(t=0,e=-e):(t=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?mr:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=t,n.wbits=e,X6(i))},e4=(i,e)=>{if(!i)return mr;const t=new X0e;i.state=t,t.strm=i,t.window=null,t.mode=Ay;const n=J6(i,e);return n!==$l&&(i.state=null),n},J0e=i=>e4(i,Z0e);let t4=!0,Jx,eb;const epe=i=>{if(t4){Jx=new Int32Array(512),eb=new Int32Array(32);let e=0;for(;e<144;)i.lens[e++]=8;for(;e<256;)i.lens[e++]=9;for(;e<280;)i.lens[e++]=7;for(;e<288;)i.lens[e++]=8;for(lg(I6,i.lens,0,288,Jx,0,i.work,{bits:9}),e=0;e<32;)i.lens[e++]=5;lg(_6,i.lens,0,32,eb,0,i.work,{bits:5}),t4=!1}i.lencode=Jx,i.lenbits=9,i.distcode=eb,i.distbits=5},i4=(i,e,t,n)=>{let r;const s=i.state;return s.window===null&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(t-s.wsize,t),0),s.wnext=0,s.whave=s.wsize):(r=s.wsize-s.wnext,r>n&&(r=n),s.window.set(e.subarray(t-n,t-n+r),s.wnext),n-=r,n?(s.window.set(e.subarray(t-n,t),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave{let t,n,r,s,o,a,l,u,c,h,d,g,A,p,y=0,v,E,I,C,w,S,x,T;const Q=new Uint8Array(4);let M,R;const z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(jl(i)||!i.output||!i.input&&i.avail_in!==0)return mr;t=i.state,t.mode===vo&&(t.mode=Yx),o=i.next_out,r=i.output,l=i.avail_out,s=i.next_in,n=i.input,a=i.avail_in,u=t.hold,c=t.bits,h=a,d=l,T=$l;e:for(;;)switch(t.mode){case Ay:if(t.wrap===0){t.mode=Yx;break}for(;c<16;){if(a===0)break e;a--,u+=n[s++]<>>8&255,t.check=Mi(t.check,Q,2,0),u=0,c=0,t.mode=S6;break}if(t.head&&(t.head.done=!1),!(t.wrap&1)||(((u&255)<<8)+(u>>8))%31){i.msg="incorrect header check",t.mode=Yt;break}if((u&15)!==b6){i.msg="unknown compression method",t.mode=Yt;break}if(u>>>=4,c-=4,x=(u&15)+8,t.wbits===0&&(t.wbits=x),x>15||x>t.wbits){i.msg="invalid window size",t.mode=Yt;break}t.dmax=1<>8&1),t.flags&512&&t.wrap&4&&(Q[0]=u&255,Q[1]=u>>>8&255,t.check=Mi(t.check,Q,2,0)),u=0,c=0,t.mode=T6;case T6:for(;c<32;){if(a===0)break e;a--,u+=n[s++]<>>8&255,Q[2]=u>>>16&255,Q[3]=u>>>24&255,t.check=Mi(t.check,Q,4,0)),u=0,c=0,t.mode=B6;case B6:for(;c<16;){if(a===0)break e;a--,u+=n[s++]<>8),t.flags&512&&t.wrap&4&&(Q[0]=u&255,Q[1]=u>>>8&255,t.check=Mi(t.check,Q,2,0)),u=0,c=0,t.mode=R6;case R6:if(t.flags&1024){for(;c<16;){if(a===0)break e;a--,u+=n[s++]<>>8&255,t.check=Mi(t.check,Q,2,0)),u=0,c=0}else t.head&&(t.head.extra=null);t.mode=L6;case L6:if(t.flags&1024&&(g=t.length,g>a&&(g=a),g&&(t.head&&(x=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(n.subarray(s,s+g),x)),t.flags&512&&t.wrap&4&&(t.check=Mi(t.check,n,g,s)),a-=g,s+=g,t.length-=g),t.length))break e;t.length=0,t.mode=D6;case D6:if(t.flags&2048){if(a===0)break e;g=0;do x=n[s+g++],t.head&&x&&t.length<65536&&(t.head.name+=String.fromCharCode(x));while(x&&g>9&1,t.head.done=!0),i.adler=t.check=0,t.mode=vo;break;case M6:for(;c<32;){if(a===0)break e;a--,u+=n[s++]<>>=c&7,c-=c&7,t.mode=Xx;break}for(;c<3;){if(a===0)break e;a--,u+=n[s++]<>>=1,c-=1,u&3){case 0:t.mode=F6;break;case 1:if(epe(t),t.mode=my,e===gy){u>>>=2,c-=2;break e}break;case 2:t.mode=N6;break;case 3:i.msg="invalid block type",t.mode=Yt}u>>>=2,c-=2;break;case F6:for(u>>>=c&7,c-=c&7;c<32;){if(a===0)break e;a--,u+=n[s++]<>>16^65535)){i.msg="invalid stored block lengths",t.mode=Yt;break}if(t.length=u&65535,u=0,c=0,t.mode=Zx,e===gy)break e;case Zx:t.mode=O6;case O6:if(g=t.length,g){if(g>a&&(g=a),g>l&&(g=l),g===0)break e;r.set(n.subarray(s,s+g),o),a-=g,s+=g,l-=g,o+=g,t.length-=g;break}t.mode=vo;break;case N6:for(;c<14;){if(a===0)break e;a--,u+=n[s++]<>>=5,c-=5,t.ndist=(u&31)+1,u>>>=5,c-=5,t.ncode=(u&15)+4,u>>>=4,c-=4,t.nlen>286||t.ndist>30){i.msg="too many length or distance symbols",t.mode=Yt;break}t.have=0,t.mode=Q6;case Q6:for(;t.have>>=3,c-=3}for(;t.have<19;)t.lens[z[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,M={bits:t.lenbits},T=lg(V0e,t.lens,0,19,t.lencode,0,t.work,M),t.lenbits=M.bits,T){i.msg="invalid code lengths set",t.mode=Yt;break}t.have=0,t.mode=U6;case U6:for(;t.have>>24,E=y>>>16&255,I=y&65535,!(v<=c);){if(a===0)break e;a--,u+=n[s++]<>>=v,c-=v,t.lens[t.have++]=I;else{if(I===16){for(R=v+2;c>>=v,c-=v,t.have===0){i.msg="invalid bit length repeat",t.mode=Yt;break}x=t.lens[t.have-1],g=3+(u&3),u>>>=2,c-=2}else if(I===17){for(R=v+3;c>>=v,c-=v,x=0,g=3+(u&7),u>>>=3,c-=3}else{for(R=v+7;c>>=v,c-=v,x=0,g=11+(u&127),u>>>=7,c-=7}if(t.have+g>t.nlen+t.ndist){i.msg="invalid bit length repeat",t.mode=Yt;break}for(;g--;)t.lens[t.have++]=x}}if(t.mode===Yt)break;if(t.lens[256]===0){i.msg="invalid code -- missing end-of-block",t.mode=Yt;break}if(t.lenbits=9,M={bits:t.lenbits},T=lg(I6,t.lens,0,t.nlen,t.lencode,0,t.work,M),t.lenbits=M.bits,T){i.msg="invalid literal/lengths set",t.mode=Yt;break}if(t.distbits=6,t.distcode=t.distdyn,M={bits:t.distbits},T=lg(_6,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,M),t.distbits=M.bits,T){i.msg="invalid distances set",t.mode=Yt;break}if(t.mode=my,e===gy)break e;case my:t.mode=yy;case yy:if(a>=6&&l>=258){i.next_out=o,i.avail_out=l,i.next_in=s,i.avail_in=a,t.hold=u,t.bits=c,Q0e(i,d),o=i.next_out,r=i.output,l=i.avail_out,s=i.next_in,n=i.input,a=i.avail_in,u=t.hold,c=t.bits,t.mode===vo&&(t.back=-1);break}for(t.back=0;y=t.lencode[u&(1<>>24,E=y>>>16&255,I=y&65535,!(v<=c);){if(a===0)break e;a--,u+=n[s++]<>C)],v=y>>>24,E=y>>>16&255,I=y&65535,!(C+v<=c);){if(a===0)break e;a--,u+=n[s++]<>>=C,c-=C,t.back+=C}if(u>>>=v,c-=v,t.back+=v,t.length=I,E===0){t.mode=q6;break}if(E&32){t.back=-1,t.mode=vo;break}if(E&64){i.msg="invalid literal/length code",t.mode=Yt;break}t.extra=E&15,t.mode=G6;case G6:if(t.extra){for(R=t.extra;c>>=t.extra,c-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=H6;case H6:for(;y=t.distcode[u&(1<>>24,E=y>>>16&255,I=y&65535,!(v<=c);){if(a===0)break e;a--,u+=n[s++]<>C)],v=y>>>24,E=y>>>16&255,I=y&65535,!(C+v<=c);){if(a===0)break e;a--,u+=n[s++]<>>=C,c-=C,t.back+=C}if(u>>>=v,c-=v,t.back+=v,E&64){i.msg="invalid distance code",t.mode=Yt;break}t.offset=I,t.extra=E&15,t.mode=z6;case z6:if(t.extra){for(R=t.extra;c>>=t.extra,c-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){i.msg="invalid distance too far back",t.mode=Yt;break}t.mode=V6;case V6:if(l===0)break e;if(g=d-l,t.offset>g){if(g=t.offset-g,g>t.whave&&t.sane){i.msg="invalid distance too far back",t.mode=Yt;break}g>t.wnext?(g-=t.wnext,A=t.wsize-g):A=t.wnext-g,g>t.length&&(g=t.length),p=t.window}else p=r,A=o-t.offset,g=t.length;g>l&&(g=l),l-=g,t.length-=g;do r[o++]=p[A++];while(--g);t.length===0&&(t.mode=yy);break;case q6:if(l===0)break e;r[o++]=t.length,l--,t.mode=yy;break;case Xx:if(t.wrap){for(;c<32;){if(a===0)break e;a--,u|=n[s++]<{if(jl(i))return mr;let e=i.state;return e.window&&(e.window=null),i.state=null,$l},npe=(i,e)=>{if(jl(i))return mr;const t=i.state;return t.wrap&2?(t.head=e,e.done=!1,$l):mr},rpe=(i,e)=>{const t=e.length;let n,r,s;return jl(i)||(n=i.state,n.wrap!==0&&n.mode!==py)?mr:n.mode===py&&(r=1,r=Jf(r,e,t,0),r!==n.check)?w6:(s=i4(i,e,t,t),s?(n.mode=W6,x6):(n.havedict=1,$l))};var spe=X6,ope=J6,ape=Z6,lpe=J0e,upe=e4,cpe=tpe,hpe=ipe,dpe=npe,fpe=rpe,gpe="pako inflate (from Nodeca project)",Eo={inflateReset:spe,inflateReset2:ope,inflateResetKeep:ape,inflateInit:lpe,inflateInit2:upe,inflate:cpe,inflateEnd:hpe,inflateGetHeader:dpe,inflateSetDictionary:fpe,inflateInfo:gpe};function Ape(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var ppe=Ape;const n4=Object.prototype.toString,{Z_NO_FLUSH:mpe,Z_FINISH:ype,Z_OK:ug,Z_STREAM_END:tb,Z_NEED_DICT:ib,Z_STREAM_ERROR:vpe,Z_DATA_ERROR:r4,Z_MEM_ERROR:Epe}=eg;function cg(i){this.options=hy.assign({chunkSize:1024*64,windowBits:15,to:""},i||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(i&&i.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new A6,this.strm.avail_out=0;let t=Eo.inflateInit2(this.strm,e.windowBits);if(t!==ug)throw new Error(hh[t]);if(this.header=new ppe,Eo.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ag.string2buf(e.dictionary):n4.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=Eo.inflateSetDictionary(this.strm,e.dictionary),t!==ug)))throw new Error(hh[t])}cg.prototype.push=function(i,e){const t=this.strm,n=this.options.chunkSize,r=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(e===~~e?o=e:o=e===!0?ype:mpe,n4.call(i)==="[object ArrayBuffer]"?t.input=new Uint8Array(i):t.input=i,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(n),t.next_out=0,t.avail_out=n),s=Eo.inflate(t,o),s===ib&&r&&(s=Eo.inflateSetDictionary(t,r),s===ug?s=Eo.inflate(t,o):s===r4&&(s=ib));t.avail_in>0&&s===tb&&t.state.wrap>0&&i[t.next_in]!==0;)Eo.inflateReset(t),s=Eo.inflate(t,o);switch(s){case vpe:case r4:case ib:case Epe:return this.onEnd(s),this.ended=!0,!1}if(a=t.avail_out,t.next_out&&(t.avail_out===0||s===tb))if(this.options.to==="string"){let l=ag.utf8border(t.output,t.next_out),u=t.next_out-l,c=ag.buf2string(t.output,l);t.next_out=u,t.avail_out=n-u,u&&t.output.set(t.output.subarray(l,l+u),0),this.onData(c)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(s===ug&&a===0)){if(s===tb)return s=Eo.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(t.avail_in===0)break}}return!0},cg.prototype.onData=function(i){this.chunks.push(i)},cg.prototype.onEnd=function(i){i===ug&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=hy.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function nb(i,e){const t=new cg(e);if(t.push(i),t.err)throw t.msg||hh[t.err];return t.result}function Ipe(i,e){return e=e||{},e.raw=!0,nb(i,e)}var _pe=cg,Cpe=nb,wpe=Ipe,xpe=nb,bpe=eg,Spe={Inflate:_pe,inflate:Cpe,inflateRaw:wpe,ungzip:xpe,constants:bpe};const{Inflate:Qye,inflate:Tpe,inflateRaw:Uye,ungzip:Gye}=Spe;var s4=Tpe;class Bpe extends tl{decodeBlock(e){return s4(new Uint8Array(e)).buffer}}const Rpe=Object.freeze(Object.defineProperty({__proto__:null,default:Bpe},Symbol.toStringTag,{value:"Module"}));class Lpe extends tl{decodeBlock(e){const t=new DataView(e),n=[];for(let r=0;r>3],ce<<=j&7),R=0;R>3]),ce&128?(Q&&(Q[j]=1),x=Z.encoding<2?Y[te++]:J,S=S>x?x:S,T[j++]=x):(Q&&(Q[j]=0),T[j++]=A),ce<<=1;j+=V}else if(Z.encoding<2)for(z=0;zx?x:S,T[j++]=x;j+=V}else for(S=S>J?J:S,z=0;z0){var v=new Uint8Array(Math.ceil(A.width*A.height/8));y=new DataView(h,d,A.mask.numBytes);var E=y.getInt16(0,!0),I=2,C=0;do{if(E>0)for(;E--;)v[C++]=y.getUint8(I++);else{var w=y.getUint8(I++);for(E=-E;E--;)v[C++]=w}E=y.getInt16(I,!0),I+=2}while(I0?1:0),Q=x+(A.height%x>0?1:0);A.pixels.blocks=new Array(T*Q);for(var M=0,R=0;R3)throw"Invalid block encoding ("+N.encoding+")";if(N.encoding===2){d++;continue}if(G!==0&&G!==2){if(G>>=6,N.offsetType=G,G===2)N.offset=y.getInt8(1),q++;else if(G===1)N.offset=y.getInt16(1,!0),q+=2;else if(G===0)N.offset=y.getFloat32(1,!0),q+=4;else throw"Invalid block offset type";if(N.encoding===1)if(G=y.getUint8(q),q++,N.bitsPerPixel=G&63,G>>=6,N.numValidPixelsType=G,G===2)N.numValidPixels=y.getUint8(q),q++;else if(G===1)N.numValidPixels=y.getUint16(q,!0),q+=2;else if(G===0)N.numValidPixels=y.getUint32(q,!0),q+=4;else throw"Invalid valid pixel count type"}if(d+=q,N.encoding!==3){var j,V;if(N.encoding===0){var Z=(A.pixels.numBytes-1)/4;if(Z!==Math.floor(Z))throw"uncompressed block has invalid length";j=new ArrayBuffer(Z*4),V=new Uint8Array(j),V.set(new Uint8Array(h,d,Z*4));var Y=new Float32Array(j);N.rawData=Y,d+=Z*4}else if(N.encoding===1){var te=Math.ceil(N.numValidPixels*N.bitsPerPixel/8),J=Math.ceil(te/4);j=new ArrayBuffer(J*4),V=new Uint8Array(j),V.set(new Uint8Array(h,d,te)),N.stuffedData=new Uint32Array(j),d+=te}}}return A.eofOffset=d,A},c=function(h,d,g,A,p,y,v){var E=(1<=d)S=x>>>w-d&E,w-=d;else{var M=d-w;S=(x&E)<>>w}y[C]=S=h?(w=S>>>C-h&v,C-=h):(x=h-C,w=(S&v)<>>C),c[I]=g[w];else for(T=Math.ceil((y-A)/p),I=0;I=h?(w=S>>>C-h&v,C-=h):(x=h-C,w=(S&v)<>>C),c[I]=w=c?(C=w>>>I-c&p,I-=c):(E=c-I,C=(w&p)<>>I),S[v]=C=h?(S=x>>>w&v,C-=h,w+=h):(T=h-C,S=x>>>w&v,x=u[E++],C=32-T,S|=(x&(1<=h?(S=x>>>w&v,C-=h,w+=h):(T=h-C,S=x>>>w&v,x=u[E++],C=32-T,S|=(x&(1<=c?(C=S>>>w&p,I-=c,w+=c):(E=c-I,C=S>>>w&p,S=u[y++],I=32-E,C|=(S&(1<=h?(v=E>>>y-h&g,y-=h):(I=h-y,v=(E&g)<>>y),c[p]=v;return c},originalUnstuff2:function(u,c,h,d){var g=(1<=h?(E=I>>>v&g,y-=h,v+=h):(C=h-y,E=I>>>v&g,I=u[A++],y=32-C,E|=(I&(1<=359?359:g;g-=p;do c+=u[A++]<<8,h+=c+=u[A++];while(--p);c=(c&65535)+(c>>>16),h=(h&65535)+(h>>>16)}return d&1&&(h+=c+=u[A]<<8),c=(c&65535)+(c>>>16),h=(h&65535)+(h>>>16),(h<<16|c)>>>0},readHeaderInfo:function(u,c){var h=c.ptr,d=new Uint8Array(u,h,6),g={};if(g.fileIdentifierString=String.fromCharCode.apply(null,d),g.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+g.fileIdentifierString;h+=6;var A=new DataView(u,h,8),p=A.getInt32(0,!0);g.fileVersion=p,h+=4,p>=3&&(g.checksum=A.getUint32(4,!0),h+=4),A=new DataView(u,h,12),g.height=A.getUint32(0,!0),g.width=A.getUint32(4,!0),h+=8,p>=4?(g.numDims=A.getUint32(8,!0),h+=4):g.numDims=1,A=new DataView(u,h,40),g.numValidPixel=A.getUint32(0,!0),g.microBlockSize=A.getInt32(4,!0),g.blobSize=A.getInt32(8,!0),g.imageType=A.getInt32(12,!0),g.maxZError=A.getFloat64(16,!0),g.zMin=A.getFloat64(24,!0),g.zMax=A.getFloat64(32,!0),h+=40,c.headerInfo=g,c.ptr=h;var y,v;if(p>=3&&(v=p>=4?52:48,y=this.computeChecksumFletcher32(new Uint8Array(u,h-v,g.blobSize-14)),y!==g.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(u,c){var h=c.headerInfo,d=this.getDataTypeArray(h.imageType),g=h.numDims*this.getDataTypeSize(h.imageType),A=this.readSubArray(u,c.ptr,d,g),p=this.readSubArray(u,c.ptr+g,d,g);c.ptr+=2*g;var y,v=!0;for(y=0;y0){v=new Uint8Array(Math.ceil(g/8)),p=new DataView(u,h,y.numBytes);var I=p.getInt16(0,!0),C=2,w=0,S=0;do{if(I>0)for(;I--;)v[w++]=p.getUint8(C++);else for(S=p.getUint8(C++),I=-I;I--;)v[w++]=S;I=p.getInt16(C,!0),C+=2}while(C>3],x<<=T&7):x=v[T>>3],x&128&&(E[T]=1);c.pixels.resultMask=E,y.bitset=v,h+=y.numBytes}return c.ptr=h,c.mask=y,!0},readDataOneSweep:function(u,c,h,d){var g=c.ptr,A=c.headerInfo,p=A.numDims,y=A.width*A.height,v=A.imageType,E=A.numValidPixel*o.getDataTypeSize(v)*p,I,C=c.pixels.resultMask;if(h===Uint8Array)I=new Uint8Array(u,g,E);else{var w=new ArrayBuffer(E),S=new Uint8Array(w);S.set(new Uint8Array(u,g,E)),I=new h(w)}if(I.length===y*p)d?c.pixels.resultPixels=o.swapDimensionOrder(I,y,p,h,!0):c.pixels.resultPixels=I;else{c.pixels.resultPixels=new h(y*p);var x=0,T=0,Q=0,M=0;if(p>1){if(d){for(T=0;T=y)return!1;var v=new Uint32Array(y-p);o.decodeBits(u,c,v);var E=[],I,C,w,S;for(I=p;I0&&(E[C].second=q<>>32-S,32-z>=S?(z+=S,z===32&&(z=0,X++,q=R[X])):(z+=S-32,X++,q=R[X],E[C].second|=q>>>32-z));var N=0,G=0,j=new a;for(I=0;I=h?G=h:G=N;var V=[],Z,Y,te,J,ce,ie;for(I=p;I0)if(Z=[S,C],S<=G)for(Y=E[C].second<=0;J--)ce=Y>>>J&1,ce?(ie.right||(ie.right=new a),ie=ie.right):(ie.left||(ie.left=new a),ie=ie.left),J===0&&!ie.val&&(ie.val=Z[1]);return{decodeLut:V,numBitsLUTQick:G,numBitsLUT:N,tree:j,stuffedData:R,srcPtr:X,bitPos:z}},readHuffman:function(u,c,h,d){var g=c.headerInfo,A=g.numDims,p=c.headerInfo.height,y=c.headerInfo.width,v=y*p,E=this.readHuffmanTree(u,c),I=E.decodeLut,C=E.tree,w=E.stuffedData,S=E.srcPtr,x=E.bitPos,T=E.numBitsLUTQick,Q=E.numBitsLUT,M=c.headerInfo.imageType===0?128:0,R,z,q,X=c.pixels.resultMask,N,G,j,V,Z,Y,te,J=0;x>0&&(S++,x=0);var ce=w[S],ie=c.encodeMode===1,ne=new h(v*A),ue=ne,fe;if(A<2||ie){for(fe=0;fe1&&(ue=new h(ne.buffer,v*fe,v),J=0),c.headerInfo.numValidPixel===y*p)for(Y=0,V=0;V>>32-T,G=N,32-x>>64-x-T,G=N),I[G])z=I[G][1],x+=I[G][0];else for(N=ce<>>32-Q,G=N,32-x>>64-x-Q,G=N),R=C,te=0;te>>Q-te-1&1,R=j?R.right:R.left,!(R.left||R.right)){z=R.val,x=x+te+1;break}x>=32&&(x-=32,S++,ce=w[S]),q=z-M,ie?(Z>0?q+=J:V>0?q+=ue[Y-y]:q+=J,q&=255,ue[Y]=q,J=q):ue[Y]=q}else for(Y=0,V=0;V>>32-T,G=N,32-x>>64-x-T,G=N),I[G])z=I[G][1],x+=I[G][0];else for(N=ce<>>32-Q,G=N,32-x>>64-x-Q,G=N),R=C,te=0;te>>Q-te-1&1,R=j?R.right:R.left,!(R.left||R.right)){z=R.val,x=x+te+1;break}x>=32&&(x-=32,S++,ce=w[S]),q=z-M,ie?(Z>0&&X[Y-1]?q+=J:V>0&&X[Y-y]?q+=ue[Y-y]:q+=J,q&=255,ue[Y]=q,J=q):ue[Y]=q}}else for(Y=0,V=0;V>>32-T,G=N,32-x>>64-x-T,G=N),I[G])z=I[G][1],x+=I[G][0];else for(N=ce<>>32-Q,G=N,32-x>>64-x-Q,G=N),R=C,te=0;te>>Q-te-1&1,R=j?R.right:R.left,!(R.left||R.right)){z=R.val,x=x+te+1;break}x>=32&&(x-=32,S++,ce=w[S]),q=z-M,ue[Y]=q}c.ptr=c.ptr+(S+1)*4+(x>0?4:0),c.pixels.resultPixels=ne,A>1&&!d&&(c.pixels.resultPixels=o.swapDimensionOrder(ne,v,A,h))},decodeBits:function(u,c,h,d,g){{var A=c.headerInfo,p=A.fileVersion,y=0,v=u.byteLength-c.ptr>=5?5:u.byteLength-c.ptr,E=new DataView(u,c.ptr,v),I=E.getUint8(0);y++;var C=I>>6,w=C===0?4:3-C,S=(I&32)>0,x=I&31,T=0;if(w===1)T=E.getUint8(y),y++;else if(w===2)T=E.getUint16(y,!0),y+=2;else if(w===4)T=E.getUint32(y,!0),y+=4;else throw"Invalid valid pixel count type";var Q=2*A.maxZError,M,R,z,q,X,N,G,j,V,Z=A.numDims>1?A.maxValues[g]:A.zMax;if(S){for(c.counter.lut++,j=E.getUint8(y),y++,q=Math.ceil((j-1)*x/8),X=Math.ceil(q/4),R=new ArrayBuffer(X*4),z=new Uint8Array(R),c.ptr+=y,z.set(new Uint8Array(u,c.ptr,q)),G=new Uint32Array(R),c.ptr+=q,V=0;j-1>>>V;)V++;q=Math.ceil(T*V/8),X=Math.ceil(q/4),R=new ArrayBuffer(X*4),z=new Uint8Array(R),z.set(new Uint8Array(u,c.ptr,q)),M=new Uint32Array(R),c.ptr+=q,p>=3?N=s.unstuffLUT2(G,x,j-1,d,Q,Z):N=s.unstuffLUT(G,x,j-1,d,Q,Z),p>=3?s.unstuff2(M,h,V,T,N):s.unstuff(M,h,V,T,N)}else c.counter.bitstuffer++,V=x,c.ptr+=y,V>0&&(q=Math.ceil(T*V/8),X=Math.ceil(q/4),R=new ArrayBuffer(X*4),z=new Uint8Array(R),z.set(new Uint8Array(u,c.ptr,q)),M=new Uint32Array(R),c.ptr+=q,p>=3?d==null?s.originalUnstuff2(M,h,V,T):s.unstuff2(M,h,V,T,!1,d,Q,Z):d==null?s.originalUnstuff(M,h,V,T):s.unstuff(M,h,V,T,!1,d,Q,Z))}},readTiles:function(u,c,h,d){var g=c.headerInfo,A=g.width,p=g.height,y=A*p,v=g.microBlockSize,E=g.imageType,I=o.getDataTypeSize(E),C=Math.ceil(A/v),w=Math.ceil(p/v);c.pixels.numBlocksY=w,c.pixels.numBlocksX=C,c.pixels.ptr=0;var S=0,x=0,T=0,Q=0,M=0,R=0,z=0,q=0,X=0,N=0,G=0,j=0,V=0,Z=0,Y=0,te=0,J,ce,ie,ne,ue,fe,me=new h(v*v),Pe=p%v||v,Re=A%v||v,Qe,Oe,wt=g.numDims,ft,pt=c.pixels.resultMask,at=c.pixels.resultPixels,D=g.fileVersion,W=D>=5?14:15,oe,ve=g.zMax,Ae;for(T=0;T1?(Ae=at,G=T*A*v+Q*v,at=new h(c.pixels.resultPixels.buffer,y*ft*I,y),ve=g.maxValues[ft]):Ae=null,z=u.byteLength-c.ptr,J=new DataView(u,c.ptr,Math.min(10,z)),ce={},te=0,q=J.getUint8(0),te++,oe=g.fileVersion>=5?q&4:0,X=q>>6&255,N=q>>2&W,N!==(Q*v>>3&W)||oe&&ft===0)throw"integrity issue";if(fe=q&3,fe>3)throw c.ptr+=te,"Invalid block encoding ("+fe+")";if(fe===2){if(oe)if(pt)for(S=0;S1&&!d&&(c.pixels.resultPixels=o.swapDimensionOrder(c.pixels.resultPixels,y,wt,h))},formatFileInfo:function(u){return{fileIdentifierString:u.headerInfo.fileIdentifierString,fileVersion:u.headerInfo.fileVersion,imageType:u.headerInfo.imageType,height:u.headerInfo.height,width:u.headerInfo.width,numValidPixel:u.headerInfo.numValidPixel,microBlockSize:u.headerInfo.microBlockSize,blobSize:u.headerInfo.blobSize,maxZError:u.headerInfo.maxZError,pixelType:o.getPixelType(u.headerInfo.imageType),eofOffset:u.eofOffset,mask:u.mask?{numBytes:u.mask.numBytes}:null,pixels:{numBlocksX:u.pixels.numBlocksX,numBlocksY:u.pixels.numBlocksY,maxValue:u.headerInfo.zMax,minValue:u.headerInfo.zMin,noDataValue:u.noDataValue}}},constructConstantSurface:function(u,c){var h=u.headerInfo.zMax,d=u.headerInfo.zMin,g=u.headerInfo.maxValues,A=u.headerInfo.numDims,p=u.headerInfo.height*u.headerInfo.width,y=0,v=0,E=0,I=u.pixels.resultMask,C=u.pixels.resultPixels;if(I)if(A>1){if(c)for(y=0;y1&&d!==h)if(c)for(y=0;y=-128&&c<=127;break;case 1:h=c>=0&&c<=255;break;case 2:h=c>=-32768&&c<=32767;break;case 3:h=c>=0&&c<=65536;break;case 4:h=c>=-2147483648&&c<=2147483647;break;case 5:h=c>=0&&c<=4294967296;break;case 6:h=c>=-34027999387901484e22&&c<=34027999387901484e22;break;case 7:h=c>=-17976931348623157e292&&c<=17976931348623157e292;break;default:h=!1}return h},getDataTypeSize:function(u){var c=0;switch(u){case 0:case 1:c=1;break;case 2:case 3:c=2;break;case 4:case 5:case 6:c=4;break;case 7:c=8;break;default:c=u}return c},getDataTypeUsed:function(u,c){var h=u;switch(u){case 2:case 4:h=u-c;break;case 3:case 5:h=u-2*c;break;case 6:c===0?h=u:c===1?h=2:h=1;break;case 7:c===0?h=u:h=u-2*c+1;break;default:h=u;break}return h},getOnePixel:function(u,c,h,d){var g=0;switch(h){case 0:g=d.getInt8(c);break;case 1:g=d.getUint8(c);break;case 2:g=d.getInt16(c,!0);break;case 3:g=d.getUint16(c,!0);break;case 4:g=d.getInt32(c,!0);break;case 5:g=d.getUInt32(c,!0);break;case 6:g=d.getFloat32(c,!0);break;case 7:g=d.getFloat64(c,!0);break;default:throw"the decoder does not understand this pixel type"}return g},swapDimensionOrder:function(u,c,h,d,g){var A=0,p=0,y=0,v=0,E=u;if(h>1)if(E=new d(c*h),g)for(A=0;A5)throw"unsupported lerc version 2."+p;o.readMask(u,g),A.numValidPixel!==A.width*A.height&&!g.pixels.resultMask&&(g.pixels.resultMask=c.maskData);var v=A.width*A.height;g.pixels.resultPixels=new y(v*A.numDims),g.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E=!c.returnPixelInterleavedDims;if(A.numValidPixel!==0)if(A.zMax===A.zMin)o.constructConstantSurface(g,E);else if(p>=4&&o.checkMinMaxRanges(u,g))o.constructConstantSurface(g,E);else{var I=new DataView(u,g.ptr,2),C=I.getUint8(0);if(g.ptr++,C)o.readDataOneSweep(u,g,y,E);else if(p>1&&A.imageType<=1&&Math.abs(A.maxZError-.5)<1e-5){var w=I.getUint8(1);if(g.ptr++,g.encodeMode=w,w>2||p<4&&w>1)throw"Invalid Huffman flag "+w;w?o.readHuffman(u,g,y,E):o.readTiles(u,g,y,E)}else o.readTiles(u,g,y,E)}g.eofOffset=g.ptr;var S;c.inputOffset?(S=g.headerInfo.blobSize+c.inputOffset-g.ptr,Math.abs(S)>=1&&(g.eofOffset=c.inputOffset+g.headerInfo.blobSize)):(S=g.headerInfo.blobSize-g.ptr,Math.abs(S)>=1&&(g.eofOffset=g.headerInfo.blobSize));var x={width:A.width,height:A.height,pixelData:g.pixels.resultPixels,minValue:A.zMin,maxValue:A.zMax,validPixelCount:A.numValidPixel,dimCount:A.numDims,dimStats:{minValues:A.minValues,maxValues:A.maxValues},maskData:g.pixels.resultMask};if(g.pixels.resultMask&&o.isValidPixelValue(A.imageType,h)){var T=g.pixels.resultMask;for(d=0;d1&&(v&&p.push(v),C.fileInfo.mask&&C.fileInfo.mask.numBytes>0&&I++),d++,E.pixels.push(C.pixelData),E.statistics.push({minValue:C.minValue,maxValue:C.maxValue,noDataValue:C.noDataValue,dimStats:C.dimStats})}var w,S,x;if(h>1&&I>1){for(x=E.width*E.height,E.bandMasks=p,v=new Uint8Array(x),v.set(p[0]),w=1;we.arrayBuffer()).then(e=>WebAssembly.instantiate(e,sb)).then(this._init):hg=WebAssembly.instantiate(Buffer.from(a4,"base64"),sb).then(this._init),hg)}_init(e){Io=e.instance,sb.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!Io)throw new Error("ZSTDDecoder: Await .init() before decoding.");const n=e.byteLength,r=Io.exports.malloc(n);rb.set(e,r),t=t||Number(Io.exports.ZSTD_findDecompressedSize(r,n));const s=Io.exports.malloc(t),o=Io.exports.ZSTD_decompress(s,t,r,n),a=rb.slice(s,s+o);return Io.exports.free(r),Io.exports.free(s),a}}const a4="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",l4=new Mpe;class Fpe extends tl{constructor(e){super(),this.planarConfiguration=typeof e.PlanarConfiguration<"u"?e.PlanarConfiguration:1,this.samplesPerPixel=typeof e.SamplesPerPixel<"u"?e.SamplesPerPixel:1,this.addCompression=e.LercParameters[Sz.AddCompression]}decodeBlock(e){switch(this.addCompression){case mE.None:break;case mE.Deflate:e=s4(new Uint8Array(e)).buffer;break;case mE.Zstandard:e=l4.decode(new Uint8Array(e)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`)}return Ppe.decode(e,{returnPixelInterleavedDims:this.planarConfiguration===1}).pixels[0].buffer}}const Ope=Object.freeze(Object.defineProperty({__proto__:null,default:Fpe,zstd:l4},Symbol.toStringTag,{value:"Module"}));class Npe extends tl{constructor(){if(super(),typeof createImageBitmap>"u")throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if(typeof document>"u"&&typeof OffscreenCanvas>"u")throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decode(e,t){const n=new Blob([t]),r=await createImageBitmap(n);let s;typeof document<"u"?(s=document.createElement("canvas"),s.width=r.width,s.height=r.height):s=new OffscreenCanvas(r.width,r.height);const o=s.getContext("2d");return o.drawImage(r,0,0),o.getImageData(0,0,r.width,r.height).data.buffer}}const Qpe=Object.freeze(Object.defineProperty({__proto__:null,default:Npe},Symbol.toStringTag,{value:"Module"})),Upe=Worker;function Gpe(){const i='function A(A,e,t,i,r,I,g){try{var n=A[I](g),a=n.value}catch(A){return void t(A)}n.done?e(a):Promise.resolve(a).then(i,r)}function e(e){return function(){var t=this,i=arguments;return new Promise((function(r,I){var g=e.apply(t,i);function n(e){A(g,r,I,n,a,"next",e)}function a(e){A(g,r,I,n,a,"throw",e)}n(void 0)}))}}function t(A){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},t(A)}var i={exports:{}};!function(A){var e=function(A){var e,i=Object.prototype,r=i.hasOwnProperty,I="function"==typeof Symbol?Symbol:{},g=I.iterator||"@@iterator",n=I.asyncIterator||"@@asyncIterator",a=I.toStringTag||"@@toStringTag";function o(A,e,t){return Object.defineProperty(A,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),A[e]}try{o({},"")}catch(A){o=function(A,e,t){return A[e]=t}}function B(A,e,t,i){var r=e&&e.prototype instanceof h?e:h,I=Object.create(r.prototype),g=new S(i||[]);return I._invoke=function(A,e,t){var i=Q;return function(r,I){if(i===s)throw new Error("Generator is already running");if(i===f){if("throw"===r)throw I;return R()}for(t.method=r,t.arg=I;;){var g=t.delegate;if(g){var n=m(g,t);if(n){if(n===c)continue;return n}}if("next"===t.method)t.sent=t._sent=t.arg;else if("throw"===t.method){if(i===Q)throw i=f,t.arg;t.dispatchException(t.arg)}else"return"===t.method&&t.abrupt("return",t.arg);i=s;var a=C(A,e,t);if("normal"===a.type){if(i=t.done?f:E,a.arg===c)continue;return{value:a.arg,done:t.done}}"throw"===a.type&&(i=f,t.method="throw",t.arg=a.arg)}}}(A,t,g),I}function C(A,e,t){try{return{type:"normal",arg:A.call(e,t)}}catch(A){return{type:"throw",arg:A}}}A.wrap=B;var Q="suspendedStart",E="suspendedYield",s="executing",f="completed",c={};function h(){}function l(){}function u(){}var w={};o(w,g,(function(){return this}));var d=Object.getPrototypeOf,D=d&&d(d(v([])));D&&D!==i&&r.call(D,g)&&(w=D);var y=u.prototype=h.prototype=Object.create(w);function k(A){["next","throw","return"].forEach((function(e){o(A,e,(function(A){return this._invoke(e,A)}))}))}function p(A,e){function i(I,g,n,a){var o=C(A[I],A,g);if("throw"!==o.type){var B=o.arg,Q=B.value;return Q&&"object"===t(Q)&&r.call(Q,"__await")?e.resolve(Q.__await).then((function(A){i("next",A,n,a)}),(function(A){i("throw",A,n,a)})):e.resolve(Q).then((function(A){B.value=A,n(B)}),(function(A){return i("throw",A,n,a)}))}a(o.arg)}var I;this._invoke=function(A,t){function r(){return new e((function(e,r){i(A,t,e,r)}))}return I=I?I.then(r,r):r()}}function m(A,t){var i=A.iterator[t.method];if(i===e){if(t.delegate=null,"throw"===t.method){if(A.iterator.return&&(t.method="return",t.arg=e,m(A,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a \'throw\' method")}return c}var r=C(i,A.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var I=r.arg;return I?I.done?(t[A.resultName]=I.value,t.next=A.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,c):I:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function G(A){var e={tryLoc:A[0]};1 in A&&(e.catchLoc=A[1]),2 in A&&(e.finallyLoc=A[2],e.afterLoc=A[3]),this.tryEntries.push(e)}function F(A){var e=A.completion||{};e.type="normal",delete e.arg,A.completion=e}function S(A){this.tryEntries=[{tryLoc:"root"}],A.forEach(G,this),this.reset(!0)}function v(A){if(A){var t=A[g];if(t)return t.call(A);if("function"==typeof A.next)return A;if(!isNaN(A.length)){var i=-1,I=function t(){for(;++i=0;--I){var g=this.tryEntries[I],n=g.completion;if("root"===g.tryLoc)return i("end");if(g.tryLoc<=this.prev){var a=r.call(g,"catchLoc"),o=r.call(g,"finallyLoc");if(a&&o){if(this.prev=0;--t){var i=this.tryEntries[t];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===A)return this.complete(t.completion,t.afterLoc),F(t),c}},catch:function(A){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===A){var i=t.completion;if("throw"===i.type){var r=i.arg;F(t)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(A,t,i){return this.delegate={iterator:v(A),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=e),c}},A}(A.exports);try{regeneratorRuntime=e}catch(A){"object"===("undefined"==typeof globalThis?"undefined":t(globalThis))?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}}(i);var r=i.exports,I=new Map;function g(A,e){Array.isArray(A)||(A=[A]),A.forEach((function(A){return I.set(A,e)}))}function n(A){return a.apply(this,arguments)}function a(){return(a=e(r.mark((function A(e){var t,i;return r.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(t=I.get(e.Compression)){A.next=3;break}throw new Error("Unknown compression method identifier: ".concat(e.Compression));case 3:return A.next=5,t();case 5:return i=A.sent,A.abrupt("return",new i(e));case 7:case"end":return A.stop()}}),A)})))).apply(this,arguments)}g([void 0,1],(function(){return Promise.resolve().then((function(){return y})).then((function(A){return A.default}))})),g(5,(function(){return Promise.resolve().then((function(){return F})).then((function(A){return A.default}))})),g(6,(function(){throw new Error("old style JPEG compression is not supported.")})),g(7,(function(){return Promise.resolve().then((function(){return N})).then((function(A){return A.default}))})),g([8,32946],(function(){return Promise.resolve().then((function(){return OA})).then((function(A){return A.default}))})),g(32773,(function(){return Promise.resolve().then((function(){return _A})).then((function(A){return A.default}))})),g(34887,(function(){return Promise.resolve().then((function(){return le})).then(function(){var A=e(r.mark((function A(e){return r.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,e.zstd.init();case 2:return A.abrupt("return",e);case 3:case"end":return A.stop()}}),A)})));return function(e){return A.apply(this,arguments)}}()).then((function(A){return A.default}))})),g(50001,(function(){return Promise.resolve().then((function(){return de})).then((function(A){return A.default}))}));var o=globalThis;function B(A,e){if(!(A instanceof e))throw new TypeError("Cannot call a class as a function")}function C(A,e){for(var t=0;t0;r--)A[i+e]+=A[i],i++;t-=e}while(t>0)}function l(A,e,t){for(var i=0,r=A.length,I=r/t;r>e;){for(var g=e;g>0;--g)A[i+e]+=A[i],++i;r-=e}for(var n=A.slice(),a=0;a=A.byteLength);++o){var B=void 0;if(2===e){switch(r[0]){case 8:B=new Uint8Array(A,o*a*t*n,a*t*n);break;case 16:B=new Uint16Array(A,o*a*t*n,a*t*n/2);break;case 32:B=new Uint32Array(A,o*a*t*n,a*t*n/4);break;default:throw new Error("Predictor 2 not allowed with ".concat(r[0]," bits per sample."))}h(B,a)}else 3===e&&l(B=new Uint8Array(A,o*a*t*n,a*t*n),a,n)}return A}o.addEventListener("message",function(){var A=e(r.mark((function A(e){var t,i,I,g,a,B;return r.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return t=e.data,i=t.id,I=t.fileDirectory,g=t.buffer,A.next=3,n(I);case 3:return a=A.sent,A.next=6,a.decode(I,g);case 6:B=A.sent,o.postMessage({decoded:B,id:i},[B]);case 8:case"end":return A.stop()}}),A)})));return function(e){return A.apply(this,arguments)}}());var w=function(){function A(){B(this,A)}var t;return Q(A,[{key:"decode",value:(t=e(r.mark((function A(e,t){var i,I,g,n,a;return r.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,this.decodeBlock(t);case 2:if(i=A.sent,1===(I=e.Predictor||1)){A.next=9;break}return g=!e.StripOffsets,n=g?e.TileWidth:e.ImageWidth,a=g?e.TileLength:e.RowsPerStrip||e.ImageLength,A.abrupt("return",u(i,I,n,a,e.BitsPerSample,e.PlanarConfiguration));case 9:return A.abrupt("return",i);case 10:case"end":return A.stop()}}),A,this)}))),function(A,e){return t.apply(this,arguments)})}]),A}();function d(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var D=function(A){s(t,w);var e=d(t);function t(){return B(this,t),e.apply(this,arguments)}return Q(t,[{key:"decodeBlock",value:function(A){return A}}]),t}(),y=Object.freeze({__proto__:null,default:D});function k(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}function p(A,e){for(var t=e.length-1;t>=0;t--)A.push(e[t]);return A}function m(A){for(var e=new Uint16Array(4093),t=new Uint8Array(4093),i=0;i<=257;i++)e[i]=4096,t[i]=i;var r=258,I=9,g=0;function n(){r=258,I=9}function a(A){var e=function(A,e,t){var i=e%8,r=Math.floor(e/8),I=8-i,g=e+t-8*(r+1),n=8*(r+2)-(e+t),a=8*(r+2)-e;if(n=Math.max(0,n),r>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;var o=A[r]&Math.pow(2,8-i)-1,B=o<<=t-I;if(r+1>>n;B+=C<<=Math.max(0,t-a)}if(g>8&&r+2>>Q}return B}(A,g,I);return g+=I,e}function o(A,i){return t[r]=i,e[r]=A,++r-1}function B(A){for(var i=[],r=A;4096!==r;r=e[r])i.push(t[r]);return i}var C=[];n();for(var Q,E=new Uint8Array(A),s=a(E);257!==s;){if(256===s){for(n(),s=a(E);256===s;)s=a(E);if(257===s)break;if(s>256)throw new Error("corrupted code at scanline ".concat(s));p(C,B(s)),Q=s}else if(s=Math.pow(2,I)&&(12===I?Q=void 0:I++),s=a(E)}return new Uint8Array(C)}var G=function(A){s(t,w);var e=k(t);function t(){return B(this,t),e.apply(this,arguments)}return Q(t,[{key:"decodeBlock",value:function(A){return m(A).buffer}}]),t}(),F=Object.freeze({__proto__:null,default:G});function S(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var v=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);function R(A,e){for(var t=0,i=[],r=16;r>0&&!A[r-1];)--r;i.push({children:[],index:0});for(var I,g=i[0],n=0;n0;)g=i.pop();for(g.index++,i.push(g);i.length<=n;)i.push(I={children:[],index:0}),g.children[g.index]=I.children,g=I;t++}n+10)return f--,s>>f&1;if(255===(s=A[E++])){var e=A[E++];if(e)throw new Error("unexpected marker: ".concat((s<<8|e).toString(16)))}return f=7,s>>>7}function h(A){for(var e,i=A;null!==(e=c());){if("number"==typeof(i=i[e]))return i;if("object"!==t(i))throw new Error("invalid huffman sequence")}return null}function l(A){for(var e=A,t=0;e>0;){var i=c();if(null===i)return;t=t<<1|i,--e}return t}function u(A){var e=l(A);return e>=1<0)w--;else for(var t=g,i=n;t<=i;){var r=h(A.huffmanTableAC),I=15&r,a=r>>4;if(0===I){if(a<15){w=l(a)+(1<>4,0===C)r<15?(w=l(r)+(1<>4;if(0===g){if(n<15)break;r+=16}else e[v[r+=n]]=u(g),r++}};var L,b,M=0;b=1===U?r[0].blocksPerLine*r[0].blocksPerColumn:B*i.mcusPerColumn;for(var N=I||b;M=65488&&L<=65495))break;E+=2}return E-Q}function L(A,e){var t=[],i=e.blocksPerLine,r=e.blocksPerColumn,I=i<<3,g=new Int32Array(64),n=new Uint8Array(64);function a(A,t,i){var r,I,g,n,a,o,B,C,Q,E,s=e.quantizationTable,f=i;for(E=0;E<64;E++)f[E]=A[E]*s[E];for(E=0;E<8;++E){var c=8*E;0!==f[1+c]||0!==f[2+c]||0!==f[3+c]||0!==f[4+c]||0!==f[5+c]||0!==f[6+c]||0!==f[7+c]?(r=5793*f[0+c]+128>>8,I=5793*f[4+c]+128>>8,g=f[2+c],n=f[6+c],a=2896*(f[1+c]-f[7+c])+128>>8,C=2896*(f[1+c]+f[7+c])+128>>8,o=f[3+c]<<4,Q=r-I+1>>1,r=r+I+1>>1,I=Q,Q=3784*g+1567*n+128>>8,g=1567*g-3784*n+128>>8,n=Q,Q=a-(B=f[5+c]<<4)+1>>1,a=a+B+1>>1,B=Q,Q=C+o+1>>1,o=C-o+1>>1,C=Q,Q=r-n+1>>1,r=r+n+1>>1,n=Q,Q=I-g+1>>1,I=I+g+1>>1,g=Q,Q=2276*a+3406*C+2048>>12,a=3406*a-2276*C+2048>>12,C=Q,Q=799*o+4017*B+2048>>12,o=4017*o-799*B+2048>>12,B=Q,f[0+c]=r+C,f[7+c]=r-C,f[1+c]=I+B,f[6+c]=I-B,f[2+c]=g+o,f[5+c]=g-o,f[3+c]=n+a,f[4+c]=n-a):(Q=5793*f[0+c]+512>>10,f[0+c]=Q,f[1+c]=Q,f[2+c]=Q,f[3+c]=Q,f[4+c]=Q,f[5+c]=Q,f[6+c]=Q,f[7+c]=Q)}for(E=0;E<8;++E){var h=E;0!==f[8+h]||0!==f[16+h]||0!==f[24+h]||0!==f[32+h]||0!==f[40+h]||0!==f[48+h]||0!==f[56+h]?(r=5793*f[0+h]+2048>>12,I=5793*f[32+h]+2048>>12,g=f[16+h],n=f[48+h],a=2896*(f[8+h]-f[56+h])+2048>>12,C=2896*(f[8+h]+f[56+h])+2048>>12,o=f[24+h],Q=r-I+1>>1,r=r+I+1>>1,I=Q,Q=3784*g+1567*n+2048>>12,g=1567*g-3784*n+2048>>12,n=Q,Q=a-(B=f[40+h])+1>>1,a=a+B+1>>1,B=Q,Q=C+o+1>>1,o=C-o+1>>1,C=Q,Q=r-n+1>>1,r=r+n+1>>1,n=Q,Q=I-g+1>>1,I=I+g+1>>1,g=Q,Q=2276*a+3406*C+2048>>12,a=3406*a-2276*C+2048>>12,C=Q,Q=799*o+4017*B+2048>>12,o=4017*o-799*B+2048>>12,B=Q,f[0+h]=r+C,f[56+h]=r-C,f[8+h]=I+B,f[48+h]=I-B,f[16+h]=g+o,f[40+h]=g-o,f[24+h]=n+a,f[32+h]=n-a):(Q=5793*i[E+0]+8192>>14,f[0+h]=Q,f[8+h]=Q,f[16+h]=Q,f[24+h]=Q,f[32+h]=Q,f[40+h]=Q,f[48+h]=Q,f[56+h]=Q)}for(E=0;E<64;++E){var l=128+(f[E]+8>>4);t[E]=l<0?0:l>255?255:l}}for(var o=0;o>4==0)for(var C=0;C<64;C++){B[v[C]]=A[e++]}else{if(o>>4!=1)throw new Error("DQT: invalid table spec");for(var Q=0;Q<64;Q++){B[v[Q]]=t()}}this.quantizationTables[15&o]=B}break;case 65472:case 65473:case 65474:t();for(var E={extended:65473===g,progressive:65474===g,precision:A[e++],scanLines:t(),samplesPerLine:t(),components:{},componentsOrder:[]},s=A[e++],f=void 0,c=0;c>4,l=15&A[e+1],u=A[e+2];E.componentsOrder.push(f),E.components[f]={h:h,v:l,quantizationIdx:u},e+=3}i(E),this.frames.push(E);break;case 65476:for(var w=t(),d=2;d>4==0?this.huffmanTablesDC[15&D]=R(y,m):this.huffmanTablesAC[15&D]=R(y,m)}break;case 65501:t(),this.resetInterval=t();break;case 65498:t();for(var F=A[e++],S=[],L=this.frames[0],b=0;b>4],M.huffmanTableAC=this.huffmanTablesAC[15&N],S.push(M)}var x=A[e++],J=A[e++],q=A[e++],Y=U(A,e,L,S,this.resetInterval,x,J,q>>4,15&q);e+=Y;break;case 65535:255!==A[e]&&e--;break;default:if(255===A[e-3]&&A[e-2]>=192&&A[e-2]<=254){e-=3;break}throw new Error("unknown JPEG marker ".concat(g.toString(16)))}g=t()}}},{key:"getResult",value:function(){var A=this.frames;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(var e=0;e=0;)A[e]=0}x(new Array(576)),x(new Array(60)),x(new Array(512)),x(new Array(256)),x(new Array(29)),x(new Array(30));var J=function(A,e,t,i){for(var r=65535&A|0,I=A>>>16&65535|0,g=0;0!==t;){t-=g=t>2e3?2e3:t;do{I=I+(r=r+e[i++]|0)|0}while(--g);r%=65521,I%=65521}return r|I<<16|0},q=new Uint32Array(function(){for(var A,e=[],t=0;t<256;t++){A=t;for(var i=0;i<8;i++)A=1&A?3988292384^A>>>1:A>>>1;e[t]=A}return e}()),Y=function(A,e,t,i){var r=q,I=i+t;A^=-1;for(var g=i;g>>8^r[255&(A^e[g])];return-1^A},K={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},H={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},O=function(A,e){return Object.prototype.hasOwnProperty.call(A,e)},P=function(A){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var i=e.shift();if(i){if("object"!==t(i))throw new TypeError(i+"must be non-object");for(var r in i)O(i,r)&&(A[r]=i[r])}}return A},T=function(A){for(var e=0,t=0,i=A.length;t=252?6:X>=248?5:X>=240?4:X>=224?3:X>=192?2:1;_[254]=_[254]=1;var Z=function(A){if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);var e,t,i,r,I,g=A.length,n=0;for(r=0;r>>6,e[I++]=128|63&t):t<65536?(e[I++]=224|t>>>12,e[I++]=128|t>>>6&63,e[I++]=128|63&t):(e[I++]=240|t>>>18,e[I++]=128|t>>>12&63,e[I++]=128|t>>>6&63,e[I++]=128|63&t);return e},j=function(A,e){var t,i,r=e||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,e));var I=new Array(2*r);for(i=0,t=0;t4)I[i++]=65533,t+=n-1;else{for(g&=2===n?31:3===n?15:7;n>1&&t1?I[i++]=65533:g<65536?I[i++]=g:(g-=65536,I[i++]=55296|g>>10&1023,I[i++]=56320|1023&g)}}}return function(A,e){if(e<65534&&A.subarray&&V)return String.fromCharCode.apply(null,A.length===e?A:A.subarray(0,e));for(var t="",i=0;iA.length&&(e=A.length);for(var t=e-1;t>=0&&128==(192&A[t]);)t--;return t<0||0===t?e:t+_[A[t]]>e?t:e};var z=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},$=function(A,e){var t,i,r,I,g,n,a,o,B,C,Q,E,s,f,c,h,l,u,w,d,D,y,k,p,m=A.state;t=A.next_in,k=A.input,i=t+(A.avail_in-5),r=A.next_out,p=A.output,I=r-(e-A.avail_out),g=r+(A.avail_out-257),n=m.dmax,a=m.wsize,o=m.whave,B=m.wnext,C=m.window,Q=m.hold,E=m.bits,s=m.lencode,f=m.distcode,c=(1<>>=u=l>>>24,E-=u,0===(u=l>>>16&255))p[r++]=65535&l;else{if(!(16&u)){if(0==(64&u)){l=s[(65535&l)+(Q&(1<>>=u,E-=u),E<15&&(Q+=k[t++]<>>=u=l>>>24,E-=u,!(16&(u=l>>>16&255))){if(0==(64&u)){l=f[(65535&l)+(Q&(1<n){A.msg="invalid distance too far back",m.mode=30;break A}if(Q>>>=u,E-=u,d>(u=r-I)){if((u=d-u)>o&&m.sane){A.msg="invalid distance too far back",m.mode=30;break A}if(D=0,y=C,0===B){if(D+=a-u,u2;)p[r++]=y[D++],p[r++]=y[D++],p[r++]=y[D++],w-=3;w&&(p[r++]=y[D++],w>1&&(p[r++]=y[D++]))}else{D=r-d;do{p[r++]=p[D++],p[r++]=p[D++],p[r++]=p[D++],w-=3}while(w>2);w&&(p[r++]=p[D++],w>1&&(p[r++]=p[D++]))}break}}break}}while(t>3,Q&=(1<<(E-=w<<3))-1,A.next_in=t,A.next_out=r,A.avail_in=t=1&&0===v[d];d--);if(D>d&&(D=d),0===d)return r[I++]=20971520,r[I++]=20971520,n.bits=1,0;for(w=1;w0&&(0===A||1!==d))return-1;for(R[1]=0,l=1;l<15;l++)R[l+1]=R[l]+v[l];for(u=0;u852||2===A&&m>592)return 1;for(;;){s=l-k,g[u]E?(f=U[L+g[u]],c=F[S+g[u]]):(f=96,c=0),a=1<>k)+(o-=a)]=s<<24|f<<16|c|0}while(0!==o);for(a=1<>=1;if(0!==a?(G&=a-1,G+=a):G=0,u++,0==--v[l]){if(l===d)break;l=e[t+g[u]]}if(l>D&&(G&C)!==B){for(0===k&&(k=D),Q+=w,p=1<<(y=l-k);y+k852||2===A&&m>592)return 1;r[B=G&C]=D<<24|y<<16|Q-I|0}}return 0!==G&&(r[Q+G]=l-k<<24|64<<16|0),n.bits=D,0},IA=H.Z_FINISH,gA=H.Z_BLOCK,nA=H.Z_TREES,aA=H.Z_OK,oA=H.Z_STREAM_END,BA=H.Z_NEED_DICT,CA=H.Z_STREAM_ERROR,QA=H.Z_DATA_ERROR,EA=H.Z_MEM_ERROR,sA=H.Z_BUF_ERROR,fA=H.Z_DEFLATED,cA=function(A){return(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24)};function hA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var lA,uA,wA=function(A){if(!A||!A.state)return CA;var e=A.state;return A.total_in=A.total_out=e.total=0,A.msg="",e.wrap&&(A.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,aA},dA=function(A){if(!A||!A.state)return CA;var e=A.state;return e.wsize=0,e.whave=0,e.wnext=0,wA(A)},DA=function(A,e){var t;if(!A||!A.state)return CA;var i=A.state;return e<0?(t=0,e=-e):(t=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?CA:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=t,i.wbits=e,dA(A))},yA=function(A,e){if(!A)return CA;var t=new hA;A.state=t,t.window=null;var i=DA(A,e);return i!==aA&&(A.state=null),i},kA=!0,pA=function(A){if(kA){lA=new Int32Array(512),uA=new Int32Array(32);for(var e=0;e<144;)A.lens[e++]=8;for(;e<256;)A.lens[e++]=9;for(;e<280;)A.lens[e++]=7;for(;e<288;)A.lens[e++]=8;for(rA(1,A.lens,0,288,lA,0,A.work,{bits:9}),e=0;e<32;)A.lens[e++]=5;rA(2,A.lens,0,32,uA,0,A.work,{bits:5}),kA=!1}A.lencode=lA,A.lenbits=9,A.distcode=uA,A.distbits=5},mA=function(A,e,t,i){var r,I=A.state;return null===I.window&&(I.wsize=1<=I.wsize?(I.window.set(e.subarray(t-I.wsize,t),0),I.wnext=0,I.whave=I.wsize):((r=I.wsize-I.wnext)>i&&(r=i),I.window.set(e.subarray(t-i,t-i+r),I.wnext),(i-=r)?(I.window.set(e.subarray(t-i,t),0),I.wnext=i,I.whave=I.wsize):(I.wnext+=r,I.wnext===I.wsize&&(I.wnext=0),I.whave>>8&255,t.check=Y(t.check,G,2,0),o=0,B=0,t.mode=2;break}if(t.flags=0,t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&o)<<8)+(o>>8))%31){A.msg="incorrect header check",t.mode=30;break}if((15&o)!==fA){A.msg="unknown compression method",t.mode=30;break}if(B-=4,D=8+(15&(o>>>=4)),0===t.wbits)t.wbits=D;else if(D>t.wbits){A.msg="invalid window size",t.mode=30;break}t.dmax=1<>8&1),512&t.flags&&(G[0]=255&o,G[1]=o>>>8&255,t.check=Y(t.check,G,2,0)),o=0,B=0,t.mode=3;case 3:for(;B<32;){if(0===n)break A;n--,o+=i[I++]<>>8&255,G[2]=o>>>16&255,G[3]=o>>>24&255,t.check=Y(t.check,G,4,0)),o=0,B=0,t.mode=4;case 4:for(;B<16;){if(0===n)break A;n--,o+=i[I++]<>8),512&t.flags&&(G[0]=255&o,G[1]=o>>>8&255,t.check=Y(t.check,G,2,0)),o=0,B=0,t.mode=5;case 5:if(1024&t.flags){for(;B<16;){if(0===n)break A;n--,o+=i[I++]<>>8&255,t.check=Y(t.check,G,2,0)),o=0,B=0}else t.head&&(t.head.extra=null);t.mode=6;case 6:if(1024&t.flags&&((E=t.length)>n&&(E=n),E&&(t.head&&(D=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(i.subarray(I,I+E),D)),512&t.flags&&(t.check=Y(t.check,i,E,I)),n-=E,I+=E,t.length-=E),t.length))break A;t.length=0,t.mode=7;case 7:if(2048&t.flags){if(0===n)break A;E=0;do{D=i[I+E++],t.head&&D&&t.length<65536&&(t.head.name+=String.fromCharCode(D))}while(D&&E>9&1,t.head.done=!0),A.adler=t.check=0,t.mode=12;break;case 10:for(;B<32;){if(0===n)break A;n--,o+=i[I++]<>>=7&B,B-=7&B,t.mode=27;break}for(;B<3;){if(0===n)break A;n--,o+=i[I++]<>>=1)){case 0:t.mode=14;break;case 1:if(pA(t),t.mode=20,e===nA){o>>>=2,B-=2;break A}break;case 2:t.mode=17;break;case 3:A.msg="invalid block type",t.mode=30}o>>>=2,B-=2;break;case 14:for(o>>>=7&B,B-=7&B;B<32;){if(0===n)break A;n--,o+=i[I++]<>>16^65535)){A.msg="invalid stored block lengths",t.mode=30;break}if(t.length=65535&o,o=0,B=0,t.mode=15,e===nA)break A;case 15:t.mode=16;case 16:if(E=t.length){if(E>n&&(E=n),E>a&&(E=a),0===E)break A;r.set(i.subarray(I,I+E),g),n-=E,I+=E,a-=E,g+=E,t.length-=E;break}t.mode=12;break;case 17:for(;B<14;){if(0===n)break A;n--,o+=i[I++]<>>=5,B-=5,t.ndist=1+(31&o),o>>>=5,B-=5,t.ncode=4+(15&o),o>>>=4,B-=4,t.nlen>286||t.ndist>30){A.msg="too many length or distance symbols",t.mode=30;break}t.have=0,t.mode=18;case 18:for(;t.have>>=3,B-=3}for(;t.have<19;)t.lens[F[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,k={bits:t.lenbits},y=rA(0,t.lens,0,19,t.lencode,0,t.work,k),t.lenbits=k.bits,y){A.msg="invalid code lengths set",t.mode=30;break}t.have=0,t.mode=19;case 19:for(;t.have>>16&255,l=65535&m,!((c=m>>>24)<=B);){if(0===n)break A;n--,o+=i[I++]<>>=c,B-=c,t.lens[t.have++]=l;else{if(16===l){for(p=c+2;B>>=c,B-=c,0===t.have){A.msg="invalid bit length repeat",t.mode=30;break}D=t.lens[t.have-1],E=3+(3&o),o>>>=2,B-=2}else if(17===l){for(p=c+3;B>>=c)),o>>>=3,B-=3}else{for(p=c+7;B>>=c)),o>>>=7,B-=7}if(t.have+E>t.nlen+t.ndist){A.msg="invalid bit length repeat",t.mode=30;break}for(;E--;)t.lens[t.have++]=D}}if(30===t.mode)break;if(0===t.lens[256]){A.msg="invalid code -- missing end-of-block",t.mode=30;break}if(t.lenbits=9,k={bits:t.lenbits},y=rA(1,t.lens,0,t.nlen,t.lencode,0,t.work,k),t.lenbits=k.bits,y){A.msg="invalid literal/lengths set",t.mode=30;break}if(t.distbits=6,t.distcode=t.distdyn,k={bits:t.distbits},y=rA(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,k),t.distbits=k.bits,y){A.msg="invalid distances set",t.mode=30;break}if(t.mode=20,e===nA)break A;case 20:t.mode=21;case 21:if(n>=6&&a>=258){A.next_out=g,A.avail_out=a,A.next_in=I,A.avail_in=n,t.hold=o,t.bits=B,$(A,Q),g=A.next_out,r=A.output,a=A.avail_out,I=A.next_in,i=A.input,n=A.avail_in,o=t.hold,B=t.bits,12===t.mode&&(t.back=-1);break}for(t.back=0;h=(m=t.lencode[o&(1<>>16&255,l=65535&m,!((c=m>>>24)<=B);){if(0===n)break A;n--,o+=i[I++]<>u)])>>>16&255,l=65535&m,!(u+(c=m>>>24)<=B);){if(0===n)break A;n--,o+=i[I++]<>>=u,B-=u,t.back+=u}if(o>>>=c,B-=c,t.back+=c,t.length=l,0===h){t.mode=26;break}if(32&h){t.back=-1,t.mode=12;break}if(64&h){A.msg="invalid literal/length code",t.mode=30;break}t.extra=15&h,t.mode=22;case 22:if(t.extra){for(p=t.extra;B>>=t.extra,B-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=23;case 23:for(;h=(m=t.distcode[o&(1<>>16&255,l=65535&m,!((c=m>>>24)<=B);){if(0===n)break A;n--,o+=i[I++]<>u)])>>>16&255,l=65535&m,!(u+(c=m>>>24)<=B);){if(0===n)break A;n--,o+=i[I++]<>>=u,B-=u,t.back+=u}if(o>>>=c,B-=c,t.back+=c,64&h){A.msg="invalid distance code",t.mode=30;break}t.offset=l,t.extra=15&h,t.mode=24;case 24:if(t.extra){for(p=t.extra;B>>=t.extra,B-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){A.msg="invalid distance too far back",t.mode=30;break}t.mode=25;case 25:if(0===a)break A;if(E=Q-a,t.offset>E){if((E=t.offset-E)>t.whave&&t.sane){A.msg="invalid distance too far back",t.mode=30;break}E>t.wnext?(E-=t.wnext,s=t.wsize-E):s=t.wnext-E,E>t.length&&(E=t.length),f=t.window}else f=r,s=g-t.offset,E=t.length;E>a&&(E=a),a-=E,t.length-=E;do{r[g++]=f[s++]}while(--E);0===t.length&&(t.mode=21);break;case 26:if(0===a)break A;r[g++]=t.length,a--,t.mode=21;break;case 27:if(t.wrap){for(;B<32;){if(0===n)break A;n--,o|=i[I++]<=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||A&&A.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new z,this.strm.avail_out=0;var t=GA.inflateInit2(this.strm,e.windowBits);if(t!==UA)throw new Error(K[t]);if(this.header=new FA,GA.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Z(e.dictionary):"[object ArrayBuffer]"===SA.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=GA.inflateSetDictionary(this.strm,e.dictionary))!==UA))throw new Error(K[t])}function qA(A,e){var t=new JA(e);if(t.push(A),t.err)throw t.msg||K[t.err];return t.result}JA.prototype.push=function(A,e){var t,i,r,I=this.strm,g=this.options.chunkSize,n=this.options.dictionary;if(this.ended)return!1;for(i=e===~~e?e:!0===e?RA:vA,"[object ArrayBuffer]"===SA.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(g),I.next_out=0,I.avail_out=g),(t=GA.inflate(I,i))===bA&&n&&((t=GA.inflateSetDictionary(I,n))===UA?t=GA.inflate(I,i):t===NA&&(t=bA));I.avail_in>0&&t===LA&&I.state.wrap>0&&0!==A[I.next_in];)GA.inflateReset(I),t=GA.inflate(I,i);switch(t){case MA:case NA:case bA:case xA:return this.onEnd(t),this.ended=!0,!1}if(r=I.avail_out,I.next_out&&(0===I.avail_out||t===LA))if("string"===this.options.to){var a=W(I.output,I.next_out),o=I.next_out-a,B=j(I.output,a);I.next_out=o,I.avail_out=g-o,o&&I.output.set(I.output.subarray(a,a+o),0),this.onData(B)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(t!==UA||0!==r){if(t===LA)return t=GA.inflateEnd(this.strm),this.onEnd(t),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},JA.prototype.onData=function(A){this.chunks.push(A)},JA.prototype.onEnd=function(A){A===UA&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=T(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var YA={Inflate:JA,inflate:qA,inflateRaw:function(A,e){return(e=e||{}).raw=!0,qA(A,e)},ungzip:qA,constants:H}.inflate;function KA(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var HA=function(A){s(t,w);var e=KA(t);function t(){return B(this,t),e.apply(this,arguments)}return Q(t,[{key:"decodeBlock",value:function(A){return YA(new Uint8Array(A)).buffer}}]),t}(),OA=Object.freeze({__proto__:null,default:HA});function PA(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var TA,VA=function(A){s(t,w);var e=PA(t);function t(){return B(this,t),e.apply(this,arguments)}return Q(t,[{key:"decodeBlock",value:function(A){for(var e=new DataView(A),t=[],i=0;i>3],m<<=7&G),c=0;c>3]),128&m?(a&&(a[G]=1),f=f>(g=S.encoding<2?y[k++]:p)?g:f,n[G++]=g):(a&&(a[G]=0),n[G++]=i),m<<=1;G+=F}else if(S.encoding<2)for(h=0;h(g=y[k++])?g:f,n[G++]=g;G+=F}else for(f=f>p?p:f,h=0;h0){var g=new Uint8Array(Math.ceil(i.width*i.height/8)),n=(I=new DataView(A,e,i.mask.numBytes)).getInt16(0,!0),a=2,o=0;do{if(n>0)for(;n--;)g[o++]=I.getUint8(a++);else{var B=I.getUint8(a++);for(n=-n;n--;)g[o++]=B}n=I.getInt16(a,!0),a+=2}while(a0?1:0),s=Q+(i.height%Q>0?1:0);i.pixels.blocks=new Array(E*s);for(var f=0,c=0;c3)throw"Invalid block encoding ("+w.encoding+")";if(2!==w.encoding){if(0!==d&&2!==d){if(d>>=6,w.offsetType=d,2===d)w.offset=I.getInt8(1),l++;else if(1===d)w.offset=I.getInt16(1,!0),l+=2;else{if(0!==d)throw"Invalid block offset type";w.offset=I.getFloat32(1,!0),l+=4}if(1===w.encoding)if(d=I.getUint8(l),l++,w.bitsPerPixel=63&d,d>>=6,w.numValidPixelsType=d,2===d)w.numValidPixels=I.getUint8(l),l++;else if(1===d)w.numValidPixels=I.getUint16(l,!0),l+=2;else{if(0!==d)throw"Invalid valid pixel count type";w.numValidPixels=I.getUint32(l,!0),l+=4}}var D;if(e+=l,3!==w.encoding)if(0===w.encoding){var y=(i.pixels.numBytes-1)/4;if(y!==Math.floor(y))throw"uncompressed block has invalid length";D=new ArrayBuffer(4*y),new Uint8Array(D).set(new Uint8Array(A,e,4*y));var k=new Float32Array(D);w.rawData=k,e+=4*y}else if(1===w.encoding){var p=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),m=Math.ceil(p/4);D=new ArrayBuffer(4*m),new Uint8Array(D).set(new Uint8Array(A,e,p)),w.stuffedData=new Uint32Array(D),e+=p}}else e++}return i.eofOffset=e,i},I=function(A,e,t,i,r,I,g){var n,a,o,B=(1<=e)a=o>>>Q-e&B,Q-=e;else{var f=e-Q;a=(o&B)<>>(Q=32-f)}I[n]=a=t?(o=B>>>f-t&E,f-=t):(o=(B&E)<<(C=t-f)&E,o+=(B=A[s++])>>>(f=32-C)),e[a]=r[o];else for(Q=Math.ceil((n-I)/g),a=0;a=t?(o=B>>>f-t&E,f-=t):(o=(B&E)<<(C=t-f)&E,o+=(B=A[s++])>>>(f=32-C)),e[a]=o=e?(Q=g>>>C-e&n,C-=e):(Q=(g&n)<<(B=e-C)&n,Q+=(g=A[a++])>>>(C=32-B)),E[o]=Q=t?(o=B>>>f&Q,s-=t,f+=t):(o=B>>>f&Q,s=32-(C=t-s),o|=((B=A[E++])&(1<=t?(o=B>>>f&Q,s-=t,f+=t):(o=B>>>f&Q,s=32-(C=t-s),o|=((B=A[E++])&(1<=e?(Q=g>>>E&n,C-=e,E+=e):(Q=g>>>E&n,C=32-(B=e-C),Q|=((g=A[a++])&(1<=t?(I=g>>>B-t&a,B-=t):(I=(g&a)<<(n=t-B)&a,I+=(g=A[o++])>>>(B=32-n)),e[r]=I;return e},C=function(A,e,t,i){var r,I,g,n,a=(1<=t?(I=g>>>C&a,B-=t,C+=t):(I=g>>>C&a,B=32-(n=t-B),I|=((g=A[o++])&(1<=359?359:r;r-=g;do{e+=A[I++]<<8,t+=e+=A[I++]}while(--g);e=(65535&e)+(e>>>16),t=(65535&t)+(t>>>16)}return 1&i&&(t+=e+=A[I]<<8),((t=(65535&t)+(t>>>16))<<16|(e=(65535&e)+(e>>>16)))>>>0},readHeaderInfo:function(A,e){var t=e.ptr,i=new Uint8Array(A,t,6),r={};if(r.fileIdentifierString=String.fromCharCode.apply(null,i),0!==r.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+r.fileIdentifierString;t+=6;var I,g=new DataView(A,t,8),n=g.getInt32(0,!0);if(r.fileVersion=n,t+=4,n>=3&&(r.checksum=g.getUint32(4,!0),t+=4),g=new DataView(A,t,12),r.height=g.getUint32(0,!0),r.width=g.getUint32(4,!0),t+=8,n>=4?(r.numDims=g.getUint32(8,!0),t+=4):r.numDims=1,g=new DataView(A,t,40),r.numValidPixel=g.getUint32(0,!0),r.microBlockSize=g.getInt32(4,!0),r.blobSize=g.getInt32(8,!0),r.imageType=g.getInt32(12,!0),r.maxZError=g.getFloat64(16,!0),r.zMin=g.getFloat64(24,!0),r.zMax=g.getFloat64(32,!0),t+=40,e.headerInfo=r,e.ptr=t,n>=3&&(I=n>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,t-I,r.blobSize-14))!==r.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,e){var t=e.headerInfo,i=this.getDataTypeArray(t.imageType),r=t.numDims*this.getDataTypeSize(t.imageType),I=this.readSubArray(A,e.ptr,i,r),g=this.readSubArray(A,e.ptr+r,i,r);e.ptr+=2*r;var n,a=!0;for(n=0;n0){t=new Uint8Array(Math.ceil(g/8));var B=(a=new DataView(A,r,o.numBytes)).getInt16(0,!0),C=2,Q=0,E=0;do{if(B>0)for(;B--;)t[Q++]=a.getUint8(C++);else for(E=a.getUint8(C++),B=-B;B--;)t[Q++]=E;B=a.getInt16(C,!0),C+=2}while(C>3],s<<=7&f):s=t[f>>3],128&s&&(i[f]=1);e.pixels.resultMask=i,o.bitset=t,r+=o.numBytes}return e.ptr=r,e.mask=o,!0},readDataOneSweep:function(A,e,t,i){var r,I=e.ptr,g=e.headerInfo,n=g.numDims,a=g.width*g.height,o=g.imageType,B=g.numValidPixel*Q.getDataTypeSize(o)*n,C=e.pixels.resultMask;if(t===Uint8Array)r=new Uint8Array(A,I,B);else{var E=new ArrayBuffer(B);new Uint8Array(E).set(new Uint8Array(A,I,B)),r=new t(E)}if(r.length===a*n)e.pixels.resultPixels=i?Q.swapDimensionOrder(r,a,n,t,!0):r;else{e.pixels.resultPixels=new t(a*n);var s=0,f=0,c=0,h=0;if(n>1){if(i){for(f=0;f=g)return!1;var n=new Uint32Array(g-I);Q.decodeBits(A,e,n);var a,o,B,C,s=[];for(a=I;a0&&(s[o].second=l<>>32-C,32-w>=C?32===(w+=C)&&(w=0,l=u[++d]):(w+=C-32,l=u[++d],s[o].second|=l>>>32-w));var D=0,y=0,k=new E;for(a=0;a=t?t:D;var p,m,G,F,S,v=[];for(a=I;a0)if(p=[C,o],C<=y)for(m=s[o].second<=0;F--)m>>>F&1?(S.right||(S.right=new E),S=S.right):(S.left||(S.left=new E),S=S.left),0!==F||S.val||(S.val=p[1]);return{decodeLut:v,numBitsLUTQick:y,numBitsLUT:D,tree:k,stuffedData:u,srcPtr:d,bitPos:w}},readHuffman:function(A,e,t,i){var r,I,g,n,a,o,B,C,E,s=e.headerInfo.numDims,f=e.headerInfo.height,c=e.headerInfo.width,h=c*f,l=this.readHuffmanTree(A,e),u=l.decodeLut,w=l.tree,d=l.stuffedData,D=l.srcPtr,y=l.bitPos,k=l.numBitsLUTQick,p=l.numBitsLUT,m=0===e.headerInfo.imageType?128:0,G=e.pixels.resultMask,F=0;y>0&&(D++,y=0);var S,v=d[D],R=1===e.encodeMode,U=new t(h*s),L=U;if(s<2||R){for(S=0;S1&&(L=new t(U.buffer,h*S,h),F=0),e.headerInfo.numValidPixel===c*f)for(C=0,o=0;o>>32-k,32-y>>64-y-k),u[a])I=u[a][1],y+=u[a][0];else for(a=n=v<>>32-p,32-y>>64-y-p),r=w,E=0;E>>p-E-1&1?r.right:r.left).left&&!r.right){I=r.val,y=y+E+1;break}y>=32&&(y-=32,v=d[++D]),g=I-m,R?(g+=B>0?F:o>0?L[C-c]:F,g&=255,L[C]=g,F=g):L[C]=g}else for(C=0,o=0;o>>32-k,32-y>>64-y-k),u[a])I=u[a][1],y+=u[a][0];else for(a=n=v<>>32-p,32-y>>64-y-p),r=w,E=0;E>>p-E-1&1?r.right:r.left).left&&!r.right){I=r.val,y=y+E+1;break}y>=32&&(y-=32,v=d[++D]),g=I-m,R?(B>0&&G[C-1]?g+=F:o>0&&G[C-c]?g+=L[C-c]:g+=F,g&=255,L[C]=g,F=g):L[C]=g}}else for(C=0,o=0;o>>32-k,32-y>>64-y-k),u[a])I=u[a][1],y+=u[a][0];else for(a=n=v<>>32-p,32-y>>64-y-p),r=w,E=0;E>>p-E-1&1?r.right:r.left).left&&!r.right){I=r.val,y=y+E+1;break}y>=32&&(y-=32,v=d[++D]),g=I-m,L[C]=g}e.ptr=e.ptr+4*(D+1)+(y>0?4:0),e.pixels.resultPixels=U,s>1&&!i&&(e.pixels.resultPixels=Q.swapDimensionOrder(U,h,s,t))},decodeBits:function(A,e,t,i,r){var I=e.headerInfo,Q=I.fileVersion,E=0,s=A.byteLength-e.ptr>=5?5:A.byteLength-e.ptr,f=new DataView(A,e.ptr,s),c=f.getUint8(0);E++;var h=c>>6,l=0===h?4:3-h,u=(32&c)>0,w=31&c,d=0;if(1===l)d=f.getUint8(E),E++;else if(2===l)d=f.getUint16(E,!0),E+=2;else{if(4!==l)throw"Invalid valid pixel count type";d=f.getUint32(E,!0),E+=4}var D,y,k,p,m,G,F,S,v,R=2*I.maxZError,U=I.numDims>1?I.maxValues[r]:I.zMax;if(u){for(e.counter.lut++,S=f.getUint8(E),E++,p=Math.ceil((S-1)*w/8),m=Math.ceil(p/4),y=new ArrayBuffer(4*m),k=new Uint8Array(y),e.ptr+=E,k.set(new Uint8Array(A,e.ptr,p)),F=new Uint32Array(y),e.ptr+=p,v=0;S-1>>>v;)v++;p=Math.ceil(d*v/8),m=Math.ceil(p/4),y=new ArrayBuffer(4*m),(k=new Uint8Array(y)).set(new Uint8Array(A,e.ptr,p)),D=new Uint32Array(y),e.ptr+=p,G=Q>=3?o(F,w,S-1,i,R,U):n(F,w,S-1,i,R,U),Q>=3?a(D,t,v,d,G):g(D,t,v,d,G)}else e.counter.bitstuffer++,v=w,e.ptr+=E,v>0&&(p=Math.ceil(d*v/8),m=Math.ceil(p/4),y=new ArrayBuffer(4*m),(k=new Uint8Array(y)).set(new Uint8Array(A,e.ptr,p)),D=new Uint32Array(y),e.ptr+=p,Q>=3?null==i?C(D,t,v,d):a(D,t,v,d,!1,i,R,U):null==i?B(D,t,v,d):g(D,t,v,d,!1,i,R,U))},readTiles:function(A,e,t,i){var r=e.headerInfo,I=r.width,g=r.height,n=I*g,a=r.microBlockSize,o=r.imageType,B=Q.getDataTypeSize(o),C=Math.ceil(I/a),E=Math.ceil(g/a);e.pixels.numBlocksY=E,e.pixels.numBlocksX=C,e.pixels.ptr=0;var s,f,c,h,l,u,w,d,D,y,k=0,p=0,m=0,G=0,F=0,S=0,v=0,R=0,U=0,L=0,b=0,M=0,N=0,x=0,J=0,q=new t(a*a),Y=g%a||a,K=I%a||a,H=r.numDims,O=e.pixels.resultMask,P=e.pixels.resultPixels,T=r.fileVersion>=5?14:15,V=r.zMax;for(m=0;m1?(y=P,L=m*I*a+G*a,P=new t(e.pixels.resultPixels.buffer,n*d*B,n),V=r.maxValues[d]):y=null,v=A.byteLength-e.ptr,f={},J=0,R=(s=new DataView(A,e.ptr,Math.min(10,v))).getUint8(0),J++,D=r.fileVersion>=5?4&R:0,U=R>>6&255,(R>>2&T)!=(G*a>>3&T))throw"integrity issue";if(D&&0===d)throw"integrity issue";if((l=3&R)>3)throw e.ptr+=J,"Invalid block encoding ("+l+")";if(2!==l)if(0===l){if(D)throw"integrity issue";if(e.counter.uncompressed++,e.ptr+=J,M=(M=F*S*B)<(N=A.byteLength-e.ptr)?M:N,c=new ArrayBuffer(M%B==0?M:M+B-M%B),new Uint8Array(c).set(new Uint8Array(A,e.ptr,M)),h=new t(c),x=0,O)for(k=0;k1&&!i&&(e.pixels.resultPixels=Q.swapDimensionOrder(e.pixels.resultPixels,n,H,t))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:Q.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,e){var t=A.headerInfo.zMax,i=A.headerInfo.zMin,r=A.headerInfo.maxValues,I=A.headerInfo.numDims,g=A.headerInfo.height*A.headerInfo.width,n=0,a=0,o=0,B=A.pixels.resultMask,C=A.pixels.resultPixels;if(B)if(I>1){if(e)for(n=0;n1&&i!==t)if(e)for(n=0;n=-128&&e<=127;break;case 1:t=e>=0&&e<=255;break;case 2:t=e>=-32768&&e<=32767;break;case 3:t=e>=0&&e<=65536;break;case 4:t=e>=-2147483648&&e<=2147483647;break;case 5:t=e>=0&&e<=4294967296;break;case 6:t=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:t=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:t=!1}return t},getDataTypeSize:function(A){var e=0;switch(A){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=A}return e},getDataTypeUsed:function(A,e){var t=A;switch(A){case 2:case 4:t=A-e;break;case 3:case 5:t=A-2*e;break;case 6:t=0===e?A:1===e?2:1;break;case 7:t=0===e?A:A-2*e+1;break;default:t=A}return t},getOnePixel:function(A,e,t,i){var r=0;switch(t){case 0:r=i.getInt8(e);break;case 1:r=i.getUint8(e);break;case 2:r=i.getInt16(e,!0);break;case 3:r=i.getUint16(e,!0);break;case 4:r=i.getInt32(e,!0);break;case 5:r=i.getUInt32(e,!0);break;case 6:r=i.getFloat32(e,!0);break;case 7:r=i.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return r},swapDimensionOrder:function(A,e,t,i,r){var I=0,g=0,n=0,a=0,o=A;if(t>1)if(o=new i(e*t),r)for(I=0;I5)throw"unsupported lerc version 2."+g;Q.readMask(A,r),I.numValidPixel===I.width*I.height||r.pixels.resultMask||(r.pixels.resultMask=e.maskData);var a=I.width*I.height;r.pixels.resultPixels=new n(a*I.numDims),r.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var o,B=!e.returnPixelInterleavedDims;if(0!==I.numValidPixel)if(I.zMax===I.zMin)Q.constructConstantSurface(r,B);else if(g>=4&&Q.checkMinMaxRanges(A,r))Q.constructConstantSurface(r,B);else{var C=new DataView(A,r.ptr,2),E=C.getUint8(0);if(r.ptr++,E)Q.readDataOneSweep(A,r,n,B);else if(g>1&&I.imageType<=1&&Math.abs(I.maxZError-.5)<1e-5){var s=C.getUint8(1);if(r.ptr++,r.encodeMode=s,s>2||g<4&&s>1)throw"Invalid Huffman flag "+s;s?Q.readHuffman(A,r,n,B):Q.readTiles(A,r,n,B)}else Q.readTiles(A,r,n,B)}r.eofOffset=r.ptr,e.inputOffset?(o=r.headerInfo.blobSize+e.inputOffset-r.ptr,Math.abs(o)>=1&&(r.eofOffset=e.inputOffset+r.headerInfo.blobSize)):(o=r.headerInfo.blobSize-r.ptr,Math.abs(o)>=1&&(r.eofOffset=r.headerInfo.blobSize));var f={width:I.width,height:I.height,pixelData:r.pixels.resultPixels,minValue:I.zMin,maxValue:I.zMax,validPixelCount:I.numValidPixel,dimCount:I.numDims,dimStats:{minValues:I.minValues,maxValues:I.maxValues},maskData:r.pixels.resultMask};if(r.pixels.resultMask&&Q.isValidPixelValue(I.imageType,t)){var c=r.pixels.resultMask;for(i=0;i1&&(o&&f.push(o),d.fileInfo.mask&&d.fileInfo.mask.numBytes>0&&w++),E++,u.pixels.push(d.pixelData),u.statistics.push({minValue:d.minValue,maxValue:d.maxValue,noDataValue:d.noDataValue,dimStats:d.dimStats})}if(i>1&&w>1){for(Q=u.width*u.height,u.bandMasks=f,(o=new Uint8Array(Q)).set(f[0]),B=1;B1&&void 0!==arguments[1]?arguments[1]:0;if(!jA)throw new Error("ZSTDDecoder: Await .init() before decoding.");var t=A.byteLength,i=jA.exports.malloc(t);WA.set(A,i),e=e||Number(jA.exports.ZSTD_findDecompressedSize(i,t));var r=jA.exports.malloc(e),I=jA.exports.ZSTD_decompress(r,e,i,t),g=WA.slice(r,r+I);return jA.exports.free(i),jA.exports.free(r),g}}]),A}(),ee="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",te={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},ie={};for(var re in te)te.hasOwnProperty(re)&&(ie[te[re]]=parseInt(re,10));ie.BitsPerSample,ie.ExtraSamples,ie.SampleFormat,ie.StripByteCounts,ie.StripOffsets,ie.StripRowCounts,ie.TileByteCounts,ie.TileOffsets,ie.SubIFDs;var Ie={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},ge={};for(var ne in Ie)Ie.hasOwnProperty(ne)&&(ge[Ie[ne]]=parseInt(ne,10));var ae=1,oe=0,Be=1,Ce=2,Qe={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"},Ee={};for(var se in Qe)Qe.hasOwnProperty(se)&&(Ee[Qe[se]]=parseInt(se,10));function fe(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var ce=new Ae,he=function(A){s(t,w);var e=fe(t);function t(A){var i;return B(this,t),(i=e.call(this)).planarConfiguration=void 0!==A.PlanarConfiguration?A.PlanarConfiguration:1,i.samplesPerPixel=void 0!==A.SamplesPerPixel?A.SamplesPerPixel:1,i.addCompression=A.LercParameters[ae],i}return Q(t,[{key:"decodeBlock",value:function(A){switch(this.addCompression){case oe:break;case Be:A=YA(new Uint8Array(A)).buffer;break;case Ce:A=ce.decode(new Uint8Array(A)).buffer;break;default:throw new Error("Unsupported LERC additional compression method identifier: ".concat(this.addCompression))}return zA.decode(A,{returnPixelInterleavedDims:1===this.planarConfiguration}).pixels[0].buffer}}]),t}(),le=Object.freeze({__proto__:null,zstd:ce,default:he});function ue(A){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(A){return!1}}();return function(){var t,i=c(A);if(e){var r=c(this).constructor;t=Reflect.construct(i,arguments,r)}else t=i.apply(this,arguments);return f(this,t)}}var we=function(A){s(I,w);var t,i=ue(I);function I(){var A;if(B(this,I),A=i.call(this),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available");return A}return Q(I,[{key:"decode",value:(t=e(r.mark((function A(e,t){var i,I,g,n;return r.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return i=new Blob([t]),A.next=3,createImageBitmap(i);case 3:return I=A.sent,"undefined"!=typeof document?((g=document.createElement("canvas")).width=I.width,g.height=I.height):g=new OffscreenCanvas(I.width,I.height),(n=g.getContext("2d")).drawImage(I,0,0),A.abrupt("return",n.getImageData(0,0,I.width,I.height).data.buffer);case 8:case"end":return A.stop()}}),A)}))),function(A,e){return t.apply(this,arguments)})}]),I}(),de=Object.freeze({__proto__:null,default:we});';return new Upe(typeof Buffer<"u"?"data:application/javascript;base64,"+Buffer.from(i,"binary").toString("base64"):URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}const Hpe=Object.freeze(Object.defineProperty({__proto__:null,create:Gpe},Symbol.toStringTag,{value:"Module"}));return Yge}); +//# sourceMappingURL=geoblacklight.umd.js.map From bcbe7f4b24030ff03905a16617880a9dc6890009 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Wed, 31 Jul 2024 17:10:15 -0700 Subject: [PATCH 16/51] Make the catalogcontroller more like GBL5's default --- app/controllers/catalog_controller.rb | 29 +++++++++++++-------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 06772dda..46f1e6b6 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -42,12 +42,13 @@ class CatalogController < ApplicationController # solr field configuration for document/show views config.show.display_type_field = 'format' config.show.partials.delete(:show) - config.show.partials << 'show_message' + config.show.partials << 'show_default_display_note' config.show.partials << 'show_default_viewer_container' config.show.partials << 'show_default_attribute_table' config.show.partials << 'show_default_viewer_information' config.show.partials << 'show_default_canonical_link' config.show.partials << :show + config.show.sidebar_component = Geoblacklight::SidebarComponent config.header_component = Geoblacklight::HeaderComponent # solr fields that will be treated as facets by the blacklight application @@ -237,6 +238,7 @@ class CatalogController < ApplicationController # solr request handler? The one set in config[:default_solr_parameters][:qt], # since we aren't specifying it otherwise. + config.add_search_field 'all_fields', label: 'All Fields' # config.add_search_field 'text', :label => 'All Fields' # config.add_search_field 'dct_title_ti', :label => 'Title' # config.add_search_field 'dct_description_ti', :label => 'Description' @@ -299,23 +301,27 @@ class CatalogController < ApplicationController # If there are more than this many search results, no spelling ("did you # mean") suggestion is offered. config.spell_max = 5 - + # Nav actions from Blacklight - config.add_nav_action(:bookmark, partial: "blacklight/nav/bookmark", if: :render_bookmarks_control?) - config.add_nav_action(:search_history, partial: "blacklight/nav/search_history") + config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?) + config.add_nav_action(:search_history, partial: 'blacklight/nav/search_history') - config.add_results_document_tool(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?) + config.add_results_document_tool(:bookmark, component: Blacklight::Document::BookmarkComponent, + if: :render_bookmarks_control?) # Tools from Blacklight config.add_results_collection_tool(:sort_widget) config.add_results_collection_tool(:per_page_widget) - config.add_show_tools_partial(:bookmark, component: Blacklight::Document::BookmarkComponent, if: :render_bookmarks_control?) + config.add_show_tools_partial(:bookmark, component: Blacklight::Document::BookmarkComponent, + if: :render_bookmarks_control?) config.add_show_tools_partial(:citation) config.add_show_tools_partial(:email, callback: :email_action, validator: :validate_email_params) config.add_show_tools_partial(:sms, if: :render_sms_action?, callback: :sms_action, validator: :validate_sms_params) # Custom tools for GeoBlacklight - config.add_show_tools_partial :metadata, if: proc { |_context, _config, options| options[:document] && (Settings.METADATA_SHOWN & options[:document].references.refs.map(&:type).map(&:to_s)).any? } + config.add_show_tools_partial :metadata, if: proc { |_context, _config, options| + options[:document] && (Settings.METADATA_SHOWN & options[:document].references.refs.map(&:type).map(&:to_s)).any? + } config.add_show_tools_partial :searchworks_url, component: Earthworks::SearchworksUrl, if: proc { |_context, _config, options| options[:document] && @@ -333,7 +339,7 @@ class CatalogController < ApplicationController end def web_services - @response, @documents = action_documents + @docs = action_documents respond_to do |format| format.html do @@ -342,11 +348,4 @@ def web_services end end end - - ## - # Overrides default Blacklight method to return true for an empty q value - # @return [Boolean] - def has_search_parameters? - !params[:q].nil? || super - end end From 9e751859cbc4c222a70644ad7550a61589414729 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Wed, 31 Jul 2024 17:10:26 -0700 Subject: [PATCH 17/51] Remove partials we don't need to use anymore --- app/views/catalog/_show_message.html.erb | 10 ----- app/views/layouts/blacklight/base.html.erb | 46 ---------------------- 2 files changed, 56 deletions(-) delete mode 100644 app/views/catalog/_show_message.html.erb delete mode 100644 app/views/layouts/blacklight/base.html.erb diff --git a/app/views/catalog/_show_message.html.erb b/app/views/catalog/_show_message.html.erb deleted file mode 100644 index 35055eed..00000000 --- a/app/views/catalog/_show_message.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<% document ||= @document %> -<% document_unavailable = document_unavailable_options(document).uniq %> - -<% if document_unavailable.any? %> -
- <%= blacklight_icon('exclamation-triangle') %> - <% email = document.contact_email ? document.contact_email : Settings.INSTITUTION_EMAIL %> - <%= t('earthworks.unavailable_html', institution: document.institution, email:, department: document.department) %> -
-<% end %> diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb deleted file mode 100644 index 0cc54626..00000000 --- a/app/views/layouts/blacklight/base.html.erb +++ /dev/null @@ -1,46 +0,0 @@ - -<%= content_tag :html, class: 'no-js', **html_tag_attributes do %> - - - - - - - - - - <%= render_page_title %> - - <%= opensearch_description_tag application_name, opensearch_catalog_url(format: 'xml') %> - <%= favicon_link_tag %> - - <%= stylesheet_link_tag "application", media: "all", "data-turbo-track": "reload" %> - <%= javascript_importmap_tags %> - - <%= csrf_meta_tags %> - <%= content_for(:head) %> - - - - <%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %> - -
- <%= content_for(:container_header) %> - - <%= render partial: 'shared/flash_msg', layout: 'shared/flash_messages' %> - -
- <%= content_for?(:content) ? yield(:content) : yield %> -
-
- - <%= render partial: 'shared/footer' %> - <%= render partial: 'shared/modal' %> - -<% end %> From acd1b4246357909fe34c9af00ae26cfd88bd5eed Mon Sep 17 00:00:00 2001 From: dnoneill Date: Tue, 30 Jul 2024 15:52:05 -0400 Subject: [PATCH 18/51] update header to stanford header --- Gemfile.lock | 8 +- app/assets/stylesheets/geoblacklight.scss | 6 +- .../blacklight/top_navbar_component.html.erb | 172 ++++++++++++++ .../blacklight/top_navbar_component.rb | 16 ++ app/views/layouts/blacklight/base.html.erb | 55 +++++ .../StanfordLibraries-logo-whitetext.svg | 210 ++++++++++++++++++ .../v2024-08-01/styles/alert.css | 23 ++ .../v2024-08-01/styles/button.css | 54 +++++ .../v2024-08-01/styles/colors.css | 21 ++ .../v2024-08-01/styles/footer.css | 52 +++++ .../v2024-08-01/styles/header.css | 70 ++++++ .../v2024-08-01/styles/links.css | 43 ++++ .../v2024-08-01/styles/palette.css | 39 ++++ .../v2024-08-01/styles/selected-item.css | 29 +++ .../sul-components/v2024-08-01/styles/sul.css | 10 + .../v2024-08-01/styles/toast.css | 15 ++ .../v2024-08-01/styles/typography.css | 6 + 17 files changed, 824 insertions(+), 5 deletions(-) create mode 100644 app/components/blacklight/top_navbar_component.html.erb create mode 100644 app/components/blacklight/top_navbar_component.rb create mode 100644 app/views/layouts/blacklight/base.html.erb create mode 100644 public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg create mode 100644 public/sul-components/v2024-08-01/styles/alert.css create mode 100644 public/sul-components/v2024-08-01/styles/button.css create mode 100644 public/sul-components/v2024-08-01/styles/colors.css create mode 100644 public/sul-components/v2024-08-01/styles/footer.css create mode 100644 public/sul-components/v2024-08-01/styles/header.css create mode 100644 public/sul-components/v2024-08-01/styles/links.css create mode 100644 public/sul-components/v2024-08-01/styles/palette.css create mode 100644 public/sul-components/v2024-08-01/styles/selected-item.css create mode 100644 public/sul-components/v2024-08-01/styles/sul.css create mode 100644 public/sul-components/v2024-08-01/styles/toast.css create mode 100644 public/sul-components/v2024-08-01/styles/typography.css diff --git a/Gemfile.lock b/Gemfile.lock index edbae4bb..8de9a1ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/geoblacklight/geoblacklight.git - revision: d9a35353a61f06c89af24fbc1e2e4da036b6457b + revision: d5ff4ea72a4c61d3f53a5ed6190268344b7720cf branch: blacklight8 specs: geoblacklight (4.4.0) @@ -209,7 +209,7 @@ GEM factory_bot_rails (6.2.0) factory_bot (~> 6.2.0) railties (>= 5.0.0) - faraday (2.10.0) + faraday (2.10.1) faraday-net_http (>= 2.0, < 3.2) logger faraday-net_http (3.1.1) @@ -368,7 +368,7 @@ GEM public_suffix (6.0.1) puma (6.4.2) nio4r (~> 2.0) - racc (1.8.0) + racc (1.8.1) rack (3.1.7) rack-attack (6.7.0) rack (>= 1.0, < 4) @@ -569,7 +569,7 @@ GEM chronic (>= 0.6.3) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.16) + zeitwerk (2.6.17) PLATFORMS aarch64-linux diff --git a/app/assets/stylesheets/geoblacklight.scss b/app/assets/stylesheets/geoblacklight.scss index 9c1ca36b..16828b52 100644 --- a/app/assets/stylesheets/geoblacklight.scss +++ b/app/assets/stylesheets/geoblacklight.scss @@ -1,3 +1,7 @@ @import 'bootstrap/scss/bootstrap'; @import 'blacklight-frontend/app/assets/stylesheets/blacklight/blacklight'; -@import '@geoblacklight/frontend/app/assets/stylesheets/geoblacklight/geoblacklight'; +@import '@geoblacklight/frontend/dist/stylesheets/geoblacklight/geoblacklight'; + +.palo-alto-base { + --bs-dark-rgb: 23, 94, 84; +} \ No newline at end of file diff --git a/app/components/blacklight/top_navbar_component.html.erb b/app/components/blacklight/top_navbar_component.html.erb new file mode 100644 index 00000000..a892b3ad --- /dev/null +++ b/app/components/blacklight/top_navbar_component.html.erb @@ -0,0 +1,172 @@ + + + +
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ <% if helpers.current_user.blank? %> + <%= recaptcha_tags %> + +

(Stanford users can avoid this Captcha by logging in.)

+ <% end %> +
+
+
+
+ + +
+
+
+
+
+
+
+
+
+ + +
+
+
diff --git a/app/components/blacklight/top_navbar_component.rb b/app/components/blacklight/top_navbar_component.rb new file mode 100644 index 00000000..162c2b17 --- /dev/null +++ b/app/components/blacklight/top_navbar_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true +module Blacklight + class TopNavbarComponent < Blacklight::Component + def initialize(blacklight_config:) + @blacklight_config = blacklight_config + end + + attr_reader :blacklight_config + + delegate :application_name, :container_classes, to: :helpers + + def logo_link(title: application_name) + link_to title, blacklight_config.logo_link, class: 'mb-0 navbar-brand navbar-logo' + end + end +end \ No newline at end of file diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb new file mode 100644 index 00000000..3bf0107c --- /dev/null +++ b/app/views/layouts/blacklight/base.html.erb @@ -0,0 +1,55 @@ + +<%= content_tag :html, class: 'no-js', **html_tag_attributes do %> + + + + + + <%= render_page_title %> + + <%= opensearch_description_tag application_name, opensearch_catalog_url(format: 'xml') %> + <%= favicon_link_tag %> + <%= stylesheet_link_tag "application", media: "all", "data-turbo-track": "reload" %> + <% if defined? Importmap %> + <%= javascript_importmap_tags %> + <% elsif defined? Propshaft %> + <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %> + <% else %> + <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %> + <%= javascript_include_tag "blacklight/blacklight", type: 'module' %> + + <% end %> + + + + <%= csrf_meta_tags %> + <%= content_for(:head) %> + + + + <%= render blacklight_config.header_component.new(blacklight_config: blacklight_config) %> + +
+ <%= content_for(:container_header) %> + + <%= render partial: 'shared/flash_msg', layout: 'shared/flash_messages' %> + +
+ <%= content_for?(:content) ? yield(:content) : yield %> +
+
+ + <%= render partial: 'shared/footer' %> + <%= render partial: 'shared/modal' %> + +<% end %> \ No newline at end of file diff --git a/public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg b/public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg new file mode 100644 index 00000000..94117fb3 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/sul-components/v2024-08-01/styles/alert.css b/public/sul-components/v2024-08-01/styles/alert.css new file mode 100644 index 00000000..963571c1 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/alert.css @@ -0,0 +1,23 @@ +.alert { + --bs-link-decoration: underline; + + a { + color: var(--bs-alert-color); + } + a .bi::before { + line-height: var(--bs-body-line-height); + } +} + +.alert-warning, +.alert-note { + a { + color: var(--bs-body-color); + } +} + +.alert-note { + --bs-alert-bg: rgba(var(--stanford-illuminating-dark-rgb), 0.1); + --bs-alert-color: rgb(var(--stanford-illuminating-dark-rgb)); + --bs-alert-border-color: rgb(var(--stanford-illuminating-dark-rgb)); +} diff --git a/public/sul-components/v2024-08-01/styles/button.css b/public/sul-components/v2024-08-01/styles/button.css new file mode 100644 index 00000000..47bf5b4b --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/button.css @@ -0,0 +1,54 @@ +.btn:hover { + text-decoration: underline; +} + +.btn { + --bs-btn-disabled-color: var(--stanford-80-black); + --bs-btn-disabled-bg: var(--stanford-10-black); + --bs-btn-disabled-border-color: var(--stanford-30-black); + --bs-btn-disabled-opacity: 1; +} + +.btn-primary { + --bs-btn-bg: var(--stanford-digital-blue); + --bs-btn-border-color: var(--stanford-digital-blue); + --bs-btn-hover-bg: var(--stanford-digital-blue-dark); + --bs-btn-hover-border-color: var(--stanford-digital-blue-dark); + --bs-btn-active-bg: var(--stanford-digital-blue-darker); + --bs-btn-active-border-color: var(--stanford-digital-blue-darker); +} + +.btn-secondary { + --bs-btn-bg: var(--stanford-cardinal); + --bs-btn-border-color: var(--stanford-cardinal); + --bs-btn-hover-bg: var(--stanford-digital-red-dark); + --bs-btn-hover-border-color: var(--stanford-digital-red-dark); + --bs-btn-active-bg: var(--stanford-digital-red-darker); + --bs-btn-active-border-color: var(--stanford-digital-red-darker); +} + +.btn-outline-primary { + --bs-btn-border-color: var(--stanford-digital-blue); + --bs-btn-color: var(--stanford-digital-blue); + --bs-btn-hover-color: var(--stanford-digital-blue-dark); + --bs-btn-hover-border-color: var(--stanford-digital-blue-dark); + --bs-btn-active-color: var(--stanford-digital-blue-darker); + --bs-btn-active-border-color: var(--stanford-digital-blue-darker); +} + +.btn-outline-secondary { + --bs-btn-border-color: var(--stanford-cardinal); + --bs-btn-color: var(--stanford-cardinal); + --bs-btn-hover-color: var(--stanford-digital-red-dark); + --bs-btn-hover-border-color: var(--stanford-digital-red-dark); + --bs-btn-active-border-color: var(--stanford-digital-red-darker); + --bs-btn-active-color: var(--stanford-digital-red-darker); +} + +.btn-outline-primary, +.btn-outline-secondary { + --bs-btn-disabled-bg: white; + --bs-btn-hover-bg: white; + --bs-btn-active-bg: white; + --bs-btn-bg: white; +} diff --git a/public/sul-components/v2024-08-01/styles/colors.css b/public/sul-components/v2024-08-01/styles/colors.css new file mode 100644 index 00000000..df47e7d8 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/colors.css @@ -0,0 +1,21 @@ +:root { + --bs-danger-rgb: var(--stanford-digital-red-dark-rgb); + --bs-danger-bg-subtle: rgba(var(--bs-danger-rgb), 0.1); + --bs-danger-border-subtle: rgba(var(--bs-danger-rgb), 1); + --bs-danger-text-emphasis: rgba(var(--bs-danger-rgb), 1); + + --bs-success-rgb: var(--stanford-digital-green-dark-rgb); + --bs-success-bg-subtle: rgba(var(--bs-success-rgb), 0.1); + --bs-success-border-subtle: rgba(var(--bs-success-rgb), 1); + --bs-success-text-emphasis: rgba(var(--bs-success-rgb), 1); + + --bs-warning-rgb: var(--stanford-poppy-rgb); + --bs-warning-bg-subtle: rgba(var(--bs-warning-rgb), 0.1); + --bs-warning-border-subtle: rgba(var(--bs-warning-rgb), 1); + --bs-warning-text-emphasis: rgba(var(--bs-warning-rgb), 1); + + --bs-info-rgb: var(--stanford-digital-blue-dark-rgb); + --bs-info-bg-subtle: rgba(var(--bs-info-rgb), 0.1); + --bs-info-border-subtle: rgba(var(--bs-info-rgb), 1); + --bs-info-text-emphasis: rgba(var(--bs-info-rgb), 1); +} diff --git a/public/sul-components/v2024-08-01/styles/footer.css b/public/sul-components/v2024-08-01/styles/footer.css new file mode 100644 index 00000000..80999137 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/footer.css @@ -0,0 +1,52 @@ +footer a { + --bs-link-color-rgb: 255, 255, 255; + --bs-link-hover-color-rgb: 255, 255, 255; +} + +#pre-footer { + background-color: var(--stanford-black); +} + +#su-footer { + background-color: var(--stanford-cardinal); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + ul { + a { + font-size: min(calc(0.825rem + 0.3vw), 1.25rem); + } + } + + .copyright { + font-size: 0.8125rem; + } +} + +@media (max-width: 575.98px) { + #su-footer { + ul a { + font-weight: 600; + } + + .copyright { + font-size: 0.9375rem; + } + } +} + +.su-logo { + display: inline-block; + font-family: var(--font-family-serif); + font-variant-ligatures: discretionary-ligatures; + font-feature-settings: "liga"; + font-weight: 400; + font-size: 2.125rem; + line-height: 0.75; + text-decoration: none; +} + +.su-logo-university { + font-size: 1.5rem; + padding-left: 0.5rem; +} diff --git a/public/sul-components/v2024-08-01/styles/header.css b/public/sul-components/v2024-08-01/styles/header.css new file mode 100644 index 00000000..95061a0c --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/header.css @@ -0,0 +1,70 @@ +.su-brand-bar__logo { + --stanford-stripe-color: var(--stanford-cardinal); + --bs-link-hover-decoration: none; + color: var(--stanford-stripe-color); + display: block; + font-size: 1rem; + font-family: var(--font-family-serif); + font-weight: 400; + font-variant-ligatures: discretionary-ligatures; + font-feature-settings: "liga"; + height: 1.875em; + margin-top: 0.125rem; + white-space: nowrap; +} + +.navbar-logo { + height: 41px; + width: 258px; + background: transparent no-repeat url(StanfordLibraries-logo-whitetext.svg) 0 + 0 / 258px auto; + overflow: hidden; + text-indent: 100%; + white-space: nowrap; +} + +.bg-dark.navbar, +.bg-dark .navbar { + --bs-navbar-color: white; + --bs-navbar-hover-color: rgba(255, 255, 255, 1); + --bs-nav-link-color: white; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 1%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); +} + +#feedback { + label { + text-align: right; + font-weight: bold; + } +} + +.masthead { + .navbar-nav { + --bs-nav-link-font-weight: 700; + + li { + display: inline-block; + position: relative; + } + + li:not(:last-child) { + margin-right: 1rem; + } + + li:not(:first-child)::before { + color: white; + content: "•"; + position: absolute; + left: -1.165rem; + top: 0.25rem; + } + } + + .h1 { + font-size: 2.25rem; + a { + --bs-link-hover-decoration: none; + } + } +} diff --git a/public/sul-components/v2024-08-01/styles/links.css b/public/sul-components/v2024-08-01/styles/links.css new file mode 100644 index 00000000..9cf4c7a6 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/links.css @@ -0,0 +1,43 @@ +:root { + --sul-link-font-weight: 450; + --sul-link-color-rgb: var(--stanford-digital-blue-rgb); + + --bs-link-color: rgb(var(--sul-link-color-rgb), 1); /* for .btn-link */ + --bs-link-color-rgb: var(--sul-link-color-rgb); + --bs-link-hover-color: rgb(var(--sul-link-color-rgb), 1); /* for .btn-link */ + --bs-link-hover-color-rgb: var(--sul-link-color-rgb); + --bs-link-decoration: none; + --bs-link-hover-decoration: underline; +} + +a { + /* for some reason this doesn't work: */ + /* --bs-body-font-weight: var(--sul-link-font-weight) */ + font-weight: var(--sul-link-font-weight); +} + +.btn-link { + --bs-btn-font-weight: var(--sul-link-font-weight); +} + +.su-underline { + --underline-color: var(--bs-gray-500); + --bs-link-hover-decoration: var(--bs-link-decoration); + --bs-link-decoration: underline dotted var(--underline-color) 1px; +} + +/* This may be unnecessary in Bootstrap 5.4+ https://github.com/twbs/bootstrap/pull/39098 */ +a:not(.btn), +.btn-link { + text-decoration: var(--bs-link-decoration); + text-underline-position: under; + + &:hover, + &:focus-visible { + text-decoration: var(--bs-link-hover-decoration); + } +} + +.bg-dark a { + --bs-link-color-rgb: 255, 255, 255; +} diff --git a/public/sul-components/v2024-08-01/styles/palette.css b/public/sul-components/v2024-08-01/styles/palette.css new file mode 100644 index 00000000..95c017b7 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/palette.css @@ -0,0 +1,39 @@ +:root { + /* https://identity.stanford.edu/design-elements/color/primary-colors/ */ + --stanford-cardinal: #8c1515; + --stanford-black: #2e2d29; + --stanford-80-black: #585754; + --stanford-30-black: #c0c0bf; + --stanford-10-black: #eaeaea; + + /* https://identity.stanford.edu/design-elements/color/accent-colors/ */ + --stanford-poppy-rgb: 233, 131, 0; + --stanford-poppy-dark: #d1660f; + --stanford-palo-alto-dark-rgb: 1, 66, 64; + --stanford-stone-dark-rgb: 84, 73, 72; + --stanford-illuminating-dark-rgb: 254, 197, 29; + + /* https://identity.stanford.edu/design-elements/color/web/ */ + --stanford-digital-blue-rgb: 0, 108, 184; + --stanford-digital-blue-dark-rgb: 0, 84, 143; + --stanford-digital-green-dark-rgb: 0, 111, 84; + --stanford-digital-red-dark-rgb: 130, 0, 0; + + --stanford-digital-green: #008566; + --stanford-digital-red: #b1040e; + --stanford-digital-red-dark: rgb(var(--stanford-digital-red-dark-rgb)); + --stanford-digital-blue: rgb(var(--stanford-digital-blue-rgb)); + --stanford-digital-blue-dark: rgb(var(--stanford-digital-blue-dark-rgb)); + + /* unofficial colors */ + --stanford-digital-red-darker: color-mix( + in srgb, + var(--stanford-digital-red-dark) 90%, + black + ); + --stanford-digital-blue-darker: color-mix( + in srgb, + var(--stanford-digital-blue-dark) 90%, + black + ); +} diff --git a/public/sul-components/v2024-08-01/styles/selected-item.css b/public/sul-components/v2024-08-01/styles/selected-item.css new file mode 100644 index 00000000..6826089b --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/selected-item.css @@ -0,0 +1,29 @@ +.selected-item { + --bs-badge-color: black; + --bs-badge-font-size: var(--bs-body-font-size); + --bs-badge-font-weight: var(--bs-body-font-weight); + --bs-badge-padding-y: 0; + --bs-badge-padding-x: 0.65em; + gap: 0.35rem; + display: inline-flex; + + .selected-item-label { + border-inline-end: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color); + line-height: 1.45em; + padding-block: 0.1rem; + padding-inline-end: 0.45em; + text-wrap: nowrap; + } + + .btn-close { + align-self: center; + font-size: 0.6rem; + + &:hover { + --bs-btn-close-color: var(--stanford-digital-red); + background: var(--bs-btn-close-color); + mask-image: var(--bs-btn-close-bg); + } + } +} diff --git a/public/sul-components/v2024-08-01/styles/sul.css b/public/sul-components/v2024-08-01/styles/sul.css new file mode 100644 index 00000000..df5329b0 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/sul.css @@ -0,0 +1,10 @@ +@import "./palette.css"; +@import "./colors.css"; +@import "./links.css"; +@import "./typography.css"; +@import "./header.css"; +@import "./footer.css"; +@import "./alert.css"; +@import "./toast.css"; +@import "./button.css"; +@import "./selected-item.css"; diff --git a/public/sul-components/v2024-08-01/styles/toast.css b/public/sul-components/v2024-08-01/styles/toast.css new file mode 100644 index 00000000..6ef53981 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/toast.css @@ -0,0 +1,15 @@ +.bg-stanford-black { + background-color: var(--stanford-black); +} + +.bg-stanford-digital-red { + background-color: var(--stanford-digital-red); +} + +.bg-stanford-digital-green { + background-color: var(--stanford-digital-green); +} + +.bg-poppy-dark { + background-color: var(--stanford-poppy-dark); +} \ No newline at end of file diff --git a/public/sul-components/v2024-08-01/styles/typography.css b/public/sul-components/v2024-08-01/styles/typography.css new file mode 100644 index 00000000..1b39f791 --- /dev/null +++ b/public/sul-components/v2024-08-01/styles/typography.css @@ -0,0 +1,6 @@ +@import url("https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&display=swap"); +:root { + --font-family-serif: "Source Serif 4", serif; + --bs-font-sans-serif: "Source Sans 3", "Source Sans Pro"; +} From 42cac5b8fc11181833b1160a2e13dae6c60a25bd Mon Sep 17 00:00:00 2001 From: dnoneill Date: Thu, 1 Aug 2024 15:08:19 -0400 Subject: [PATCH 19/51] use bootstrap.bundle instead of bootstrap --- config/importmap.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/importmap.rb b/config/importmap.rb index 4157bd40..0865bd82 100644 --- a/config/importmap.rb +++ b/config/importmap.rb @@ -6,8 +6,8 @@ pin '@hotwired/turbo-rails', to: 'turbo.min.js', preload: true # Bootstrap -pin 'bootstrap', to: 'https://cdn.skypack.dev/bootstrap@5.3.3/dist/js/bootstrap.js' pin '@popperjs/core', to: 'https://cdn.skypack.dev/@popperjs/core@2.11.8/dist/umd/popper.min.js' +pin 'bootstrap', to: 'https://cdn.skypack.dev/bootstrap@5.3.3/dist/js/bootstrap.bundle.js' # Blacklight pin 'blacklight', to: 'https://cdn.skypack.dev/blacklight-frontend@8.3.0/dist/blacklight.js' From aac4ab84642869d4dd9e583a33faf9876055c3c9 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Wed, 31 Jul 2024 11:04:11 -0400 Subject: [PATCH 20/51] add footer --- app/assets/stylesheets/application.css | 5 + app/assets/stylesheets/geoblacklight.scss | 6 +- app/views/shared/_footer.html.erb | 170 ++++++++++++++++++++++ 3 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 app/views/shared/_footer.html.erb diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 59d3ba89..ef7b74d9 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -7,3 +7,8 @@ /* GeoBlacklight */ @import url("geoblacklight.css"); + + +.palo-alto-base { + --bs-dark-rgb: 23, 94, 84; +} \ No newline at end of file diff --git a/app/assets/stylesheets/geoblacklight.scss b/app/assets/stylesheets/geoblacklight.scss index 16828b52..a06226b0 100644 --- a/app/assets/stylesheets/geoblacklight.scss +++ b/app/assets/stylesheets/geoblacklight.scss @@ -1,7 +1,3 @@ @import 'bootstrap/scss/bootstrap'; @import 'blacklight-frontend/app/assets/stylesheets/blacklight/blacklight'; -@import '@geoblacklight/frontend/dist/stylesheets/geoblacklight/geoblacklight'; - -.palo-alto-base { - --bs-dark-rgb: 23, 94, 84; -} \ No newline at end of file +@import '@geoblacklight/frontend/dist/stylesheets/geoblacklight/geoblacklight'; \ No newline at end of file diff --git a/app/views/shared/_footer.html.erb b/app/views/shared/_footer.html.erb new file mode 100644 index 00000000..a07bcdc1 --- /dev/null +++ b/app/views/shared/_footer.html.erb @@ -0,0 +1,170 @@ + \ No newline at end of file From b0a7c94b9df9518a727fe7d0d451d525a1b046ab Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 5 Aug 2024 13:14:11 -0400 Subject: [PATCH 21/51] Update ruby.yml --- .github/workflows/ruby.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 84e37c19..8cf652aa 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -4,7 +4,7 @@ on: push: branches: [ main ] pull_request: - branches: [ main ] + branches: [ main, bl8 ] jobs: tests: From cf29761cac7f30bdac95770a9ac1738c404cba1c Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 5 Aug 2024 13:29:34 -0400 Subject: [PATCH 22/51] fix tests --- .github/workflows/ruby.yml | 4 +++- .../blacklight/top_navbar_component.html.erb | 3 ++- .../blacklight/top_navbar_component.rb | 4 +++- app/controllers/catalog_controller.rb | 4 +++- app/views/layouts/blacklight/base.html.erb | 16 ++++++++++++++++ package.json | 2 +- spec/features/feedback_form_spec.rb | 12 ++++++------ spec/features/top_navbar_spec.rb | 4 ++-- 8 files changed, 36 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 8cf652aa..8b08cc6c 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -4,7 +4,9 @@ on: push: branches: [ main ] pull_request: - branches: [ main, bl8 ] + branches: + - main + - bl8 jobs: tests: diff --git a/app/components/blacklight/top_navbar_component.html.erb b/app/components/blacklight/top_navbar_component.html.erb index a892b3ad..72747bee 100644 --- a/app/components/blacklight/top_navbar_component.html.erb +++ b/app/components/blacklight/top_navbar_component.html.erb @@ -70,11 +70,12 @@
+ diff --git a/config/locales/blacklight.en.yml b/config/locales/blacklight.en.yml index bd43dfcf..d8e7b932 100644 --- a/config/locales/blacklight.en.yml +++ b/config/locales/blacklight.en.yml @@ -13,3 +13,4 @@ en: search: 'Keywords' tools: citation: Citation + title: 'Other options' diff --git a/config/locales/geoblacklight.en.yml b/config/locales/geoblacklight.en.yml index 774ba895..db355aad 100644 --- a/config/locales/geoblacklight.en.yml +++ b/config/locales/geoblacklight.en.yml @@ -1,5 +1,7 @@ en: geoblacklight: + download: + export_link: '%{download_format}' home: headline: 'Discover and download GIS data and maps' relations: diff --git a/public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg b/public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg similarity index 100% rename from public/sul-components/v2024-08-01/styles/StanfordLibraries-logo-whitetext.svg rename to public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg diff --git a/public/sul-components/v2024-08-01/styles/alert.css b/public/sul-components/v2024-08-07/styles/alert.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/alert.css rename to public/sul-components/v2024-08-07/styles/alert.css diff --git a/public/sul-components/v2024-08-01/styles/button.css b/public/sul-components/v2024-08-07/styles/button.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/button.css rename to public/sul-components/v2024-08-07/styles/button.css diff --git a/public/sul-components/v2024-08-01/styles/colors.css b/public/sul-components/v2024-08-07/styles/colors.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/colors.css rename to public/sul-components/v2024-08-07/styles/colors.css diff --git a/public/sul-components/v2024-08-07/styles/facets.css b/public/sul-components/v2024-08-07/styles/facets.css new file mode 100644 index 00000000..25bec952 --- /dev/null +++ b/public/sul-components/v2024-08-07/styles/facets.css @@ -0,0 +1,38 @@ +.facets { + background-color: var(--stanford-fog-light); + border-radius: 4px; + padding-block-end: 4px; + + .facets-heading { + font-size: 1.75rem; + padding-top: 0.5rem; + padding-inline-start: 0.5rem; + } + .card { + /* --bs-card-border-radius: 0; */ + --bs-border-radius: 0; + --bs-card-bg: transparent; + --bs-card-cap-bg: transparent; + border-inline: none; + border-block-end: none; + + .facet-select { + color: var(--bs-body-color); + } + + &.facet-limit-active { + --bs-card-cap-bg: color-mix( + in srgb, + var(--stanford-70-black) 10%, + transparent + ); + + .selected { + font-weight: bold; + } + } + .card-header { + --bs-card-border-width: 0; + } + } +} diff --git a/public/sul-components/v2024-08-01/styles/footer.css b/public/sul-components/v2024-08-07/styles/footer.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/footer.css rename to public/sul-components/v2024-08-07/styles/footer.css diff --git a/public/sul-components/v2024-08-01/styles/header.css b/public/sul-components/v2024-08-07/styles/header.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/header.css rename to public/sul-components/v2024-08-07/styles/header.css diff --git a/public/sul-components/v2024-08-01/styles/links.css b/public/sul-components/v2024-08-07/styles/links.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/links.css rename to public/sul-components/v2024-08-07/styles/links.css diff --git a/public/sul-components/v2024-08-01/styles/palette.css b/public/sul-components/v2024-08-07/styles/palette.css similarity index 95% rename from public/sul-components/v2024-08-01/styles/palette.css rename to public/sul-components/v2024-08-07/styles/palette.css index 95c017b7..7846bf82 100644 --- a/public/sul-components/v2024-08-01/styles/palette.css +++ b/public/sul-components/v2024-08-07/styles/palette.css @@ -3,6 +3,7 @@ --stanford-cardinal: #8c1515; --stanford-black: #2e2d29; --stanford-80-black: #585754; + --stanford-70-black: #6d6c69; --stanford-30-black: #c0c0bf; --stanford-10-black: #eaeaea; @@ -12,6 +13,7 @@ --stanford-palo-alto-dark-rgb: 1, 66, 64; --stanford-stone-dark-rgb: 84, 73, 72; --stanford-illuminating-dark-rgb: 254, 197, 29; + --stanford-fog-light: #f4f4f4; /* https://identity.stanford.edu/design-elements/color/web/ */ --stanford-digital-blue-rgb: 0, 108, 184; diff --git a/public/sul-components/v2024-08-01/styles/selected-item.css b/public/sul-components/v2024-08-07/styles/selected-item.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/selected-item.css rename to public/sul-components/v2024-08-07/styles/selected-item.css diff --git a/public/sul-components/v2024-08-01/styles/sul.css b/public/sul-components/v2024-08-07/styles/sul.css similarity index 91% rename from public/sul-components/v2024-08-01/styles/sul.css rename to public/sul-components/v2024-08-07/styles/sul.css index df5329b0..2632d731 100644 --- a/public/sul-components/v2024-08-01/styles/sul.css +++ b/public/sul-components/v2024-08-07/styles/sul.css @@ -8,3 +8,4 @@ @import "./toast.css"; @import "./button.css"; @import "./selected-item.css"; +@import "./facets.css"; diff --git a/public/sul-components/v2024-08-01/styles/toast.css b/public/sul-components/v2024-08-07/styles/toast.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/toast.css rename to public/sul-components/v2024-08-07/styles/toast.css diff --git a/public/sul-components/v2024-08-01/styles/typography.css b/public/sul-components/v2024-08-07/styles/typography.css similarity index 100% rename from public/sul-components/v2024-08-01/styles/typography.css rename to public/sul-components/v2024-08-07/styles/typography.css From bb1527105d1607e9dc2dc11abed40750489100a5 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Fri, 2 Aug 2024 15:33:43 -0400 Subject: [PATCH 27/51] update home page text to figma, add recently added --- Gemfile.lock | 2 +- app/assets/stylesheets/application.css | 6 +- app/assets/stylesheets/earthworks.css | 15 +++- .../earthworks/recently_added_list.html.erb | 18 +++++ .../earthworks/recently_added_list.rb | 34 +++++++++ .../geoblacklight/header_component.html.erb | 6 ++ .../geoblacklight/header_component.rb | 9 +++ app/views/catalog/_home_text.html.erb | 75 +++++++------------ config/locales/en.yml | 7 ++ 9 files changed, 119 insertions(+), 53 deletions(-) create mode 100644 app/components/earthworks/recently_added_list.html.erb create mode 100644 app/components/earthworks/recently_added_list.rb create mode 100644 app/components/geoblacklight/header_component.html.erb create mode 100644 app/components/geoblacklight/header_component.rb diff --git a/Gemfile.lock b/Gemfile.lock index 96da5e40..4f42db0e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -351,7 +351,7 @@ GEM okcomputer (1.18.5) orm_adapter (0.5.0) ostruct (0.6.0) - parallel (1.26.0) + parallel (1.26.1) parser (3.3.4.2) ast (~> 2.4.1) racc diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index bd9f9991..346625b4 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -9,6 +9,6 @@ @import url("geoblacklight.css"); @import url("earthworks.css"); -.palo-alto-base { - --bs-dark-rgb: 23, 94, 84; -} \ No newline at end of file +/* Bootstrap Icons */ +@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"); + diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 5aa3ce16..76dca621 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -1,3 +1,16 @@ +.palo-alto-base { + --bs-dark-rgb: 23, 94, 84; +} + +.home-header .blacklight-icons, .home-header .blacklight-icons svg { + height: 1.5rem; + width: 1.5rem; +} + +.home-tab { + margin-left: 2.3rem; +} + .component-container .card, .component-container .card-header, .component-container .card-body, .component-container .list-group, .component-container .list-group-item { background-color: inherit; border: none!important; @@ -42,4 +55,4 @@ --bs-btn-hover-border-color: var(--stanford-digital-red-dark)!important; --bs-btn-active-bg: var(--stanford-digital-red-darker)!important; --bs-btn-active-border-color: var(--stanford-digital-red-darker)!important; -} +} \ No newline at end of file diff --git a/app/components/earthworks/recently_added_list.html.erb b/app/components/earthworks/recently_added_list.html.erb new file mode 100644 index 00000000..aecaa9d6 --- /dev/null +++ b/app/components/earthworks/recently_added_list.html.erb @@ -0,0 +1,18 @@ +

+ <%= geoblacklight_icon(type) %> + <%= t("earthworks.home.#{type}.header") %> +

+
+
+ <%= t("earthworks.home.#{type}.description", sets: count) %> +
+

Recently added

+
    + <% docs.each do | doc | %> +
  • <%= link_to doc['dct_title_s'], solr_document_path(doc['id']) %>
  • + <% end %> +
+
+ <%= link_to "Browse all records", search_catalog_path("f[#{field}][]": term), class: 'btn btn-outline-primary' %> +
+
diff --git a/app/components/earthworks/recently_added_list.rb b/app/components/earthworks/recently_added_list.rb new file mode 100644 index 00000000..df525ce5 --- /dev/null +++ b/app/components/earthworks/recently_added_list.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Earthworks + class RecentlyAddedList < ViewComponent::Base + attr_reader :count, :docs, :type, :field, :term + + def initialize(term:, additional_fq: '', rows: 4, field: 'gbl_resourceClass_sm') + super + @fq = ["#{field}:#{term}"] + [additional_fq] + @field = field + @rows = rows + @sort = 'gbl_mdModified_dt desc' + response = results['response'] + @docs = response['docs'] + @count = response['numFound'] + @term = term + @type = term.downcase + end + + def search_params + { + 'fq' => @fq, + 'sort' => @sort, + 'rows' => @rows, + 'fl' => [Settings.FIELDS.TITLE, Settings.FIELDS.ID, Settings.FIELDS.RESOURCE_TYPE] + } + end + + def results + solr = RSolr.connect url: Blacklight.connection_config[:url] + @results = solr.get 'select', params: search_params + end + end +end diff --git a/app/components/geoblacklight/header_component.html.erb b/app/components/geoblacklight/header_component.html.erb new file mode 100644 index 00000000..c8f931a8 --- /dev/null +++ b/app/components/geoblacklight/header_component.html.erb @@ -0,0 +1,6 @@ +
+ <%= top_bar %> + <% unless landing_page? %> + <%= search_bar %> + <% end %> +
diff --git a/app/components/geoblacklight/header_component.rb b/app/components/geoblacklight/header_component.rb new file mode 100644 index 00000000..5a0e3671 --- /dev/null +++ b/app/components/geoblacklight/header_component.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Geoblacklight + class HeaderComponent < Blacklight::HeaderComponent + def landing_page? + current_page?(root_path) && !helpers.has_search_parameters? + end + end +end diff --git a/app/views/catalog/_home_text.html.erb b/app/views/catalog/_home_text.html.erb index d407abaf..673ef117 100644 --- a/app/views/catalog/_home_text.html.erb +++ b/app/views/catalog/_home_text.html.erb @@ -1,51 +1,30 @@ -
-

Explore

-
-
-
-
- <%= link_to search_catalog_path(f: { gbl_resourceClass_sm: ['Datasets']}) do %> - <%= image_tag 'geospatial_data.png', alt: '' %> -

Geospatial data

- <% end %> -
-
-
-
-
-
- <%= link_to search_catalog_path(f: { gbl_resourceClass_sm: ['Maps'] }) do %> - <%= image_tag 'scanned_maps.png', alt: '' %> -

Scanned maps

- <% end %> -
-
-
-
-
-
- <%= link_to search_catalog_path(f: { dct_subject_sm: ['Census']}) do %> - <%= image_tag 'census_data.png', alt: '' %> -

Census data

- <% end %> -
-
-
-
-
-
- <%= link_to search_catalog_path(f: { dct_spatial_sm: ['California'] }) do %> - <%= image_tag 'california_data.png', alt: '' %> -

California data

- <% end %> -
-
-
-
+
-
-

Search an area like California or zoom out to explore

- <%= content_tag :div, '', id: 'map', data: { map: 'home', 'catalog-path'=> search_catalog_path , 'map-bbox' => '-122.23423 37.37616 -122.11441 37.507002', basemap: geoblacklight_basemap, leaflet_options: leaflet_options } %> +
+ <%= render Blacklight::SearchBarComponent.new( + url: search_action_url, + advanced_search_url: search_action_url(action: 'advanced_search'), + params: search_state.params_for_search.except(:qt), + autocomplete_path: suggest_index_catalog_path + ) %> +
+ <%= render Earthworks::RecentlyAddedList.new(term: 'Datasets') %> +
+ <%= render Earthworks::RecentlyAddedList.new(additional_fq: '-gbl_resourceClass_sm: Datasets', term: 'Maps') %> +
+

+ + GIS tools and resources +

+
    +
  • <%= link_to 'Links to be added later', 'link' %>
  • +
  • <%= link_to 'Links to be added later', 'link' %>
  • +
  • <%= link_to 'Links to be added later', 'link' %>
  • +
  • <%= link_to 'Links to be added later', 'link' %>
  • +
+
+
+ <%= render(Geoblacklight::LocationLeafletMapComponent.new(page: 'home', geosearch: { dynamic: false })) %>
-
+
\ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index fc6efab8..fa28dc8a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3,3 +3,10 @@ en: feedback_form: success: 'Thank you! Your feedback has been sent.' unavailable_html: This data is hosted by %{institution}, and is currently unavailable to preview and download. Stanford University does not hold this data and cannot provide access to it, at this time. If you have questions about this or other unavailable datasets from %{department} please submit your feedback to %{email}. + home: + datasets: + header: Geospatial data + description: Need copy for this ... contains over %{sets} datasets... + maps: + header: Scanned maps + description: Need copy for this ... contains over %{sets} maps... From e800b2ae290ebff06b77d40b0b1e8148469e7536 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Thu, 8 Aug 2024 15:33:33 -0400 Subject: [PATCH 28/51] cd for bl8 --- Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index c08bfa99..32efd702 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -56,7 +56,7 @@ pipeline { } when { - branch 'main' + branch 'bl8' } steps { @@ -73,7 +73,7 @@ pipeline { bundle install --without production # Deploy it - bundle exec cap $DEPLOY_ENVIRONMENT deploy + bundle exec cap $DEPLOY_ENVIRONMENT deploy BRANCH=bl8 ''' } } From 66fb15c29482ba8c421355a246306649f690b64d Mon Sep 17 00:00:00 2001 From: dnoneill Date: Thu, 8 Aug 2024 16:14:16 -0400 Subject: [PATCH 29/51] remove local version of component library --- app/assets/stylesheets/application.css | 3 + app/views/layouts/blacklight/base.html.erb | 2 - app/views/shared/_footer.html.erb | 2 +- .../StanfordLibraries-logo-whitetext.svg | 210 ------------------ .../v2024-08-07/styles/alert.css | 23 -- .../v2024-08-07/styles/button.css | 54 ----- .../v2024-08-07/styles/colors.css | 21 -- .../v2024-08-07/styles/facets.css | 38 ---- .../v2024-08-07/styles/footer.css | 52 ----- .../v2024-08-07/styles/header.css | 70 ------ .../v2024-08-07/styles/links.css | 43 ---- .../v2024-08-07/styles/palette.css | 41 ---- .../v2024-08-07/styles/selected-item.css | 29 --- .../sul-components/v2024-08-07/styles/sul.css | 11 - .../v2024-08-07/styles/toast.css | 15 -- .../v2024-08-07/styles/typography.css | 6 - 16 files changed, 4 insertions(+), 616 deletions(-) delete mode 100644 public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg delete mode 100644 public/sul-components/v2024-08-07/styles/alert.css delete mode 100644 public/sul-components/v2024-08-07/styles/button.css delete mode 100644 public/sul-components/v2024-08-07/styles/colors.css delete mode 100644 public/sul-components/v2024-08-07/styles/facets.css delete mode 100644 public/sul-components/v2024-08-07/styles/footer.css delete mode 100644 public/sul-components/v2024-08-07/styles/header.css delete mode 100644 public/sul-components/v2024-08-07/styles/links.css delete mode 100644 public/sul-components/v2024-08-07/styles/palette.css delete mode 100644 public/sul-components/v2024-08-07/styles/selected-item.css delete mode 100644 public/sul-components/v2024-08-07/styles/sul.css delete mode 100644 public/sul-components/v2024-08-07/styles/toast.css delete mode 100644 public/sul-components/v2024-08-07/styles/typography.css diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 346625b4..0af0468a 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -9,6 +9,9 @@ @import url("geoblacklight.css"); @import url("earthworks.css"); +/* Component library */ +@import url("https://cdn.jsdelivr.net/gh/sul-dlss/component-library@v2024-08-07/styles/sul.css"); + /* Bootstrap Icons */ @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"); diff --git a/app/views/layouts/blacklight/base.html.erb b/app/views/layouts/blacklight/base.html.erb index 9733fd30..4caf6496 100644 --- a/app/views/layouts/blacklight/base.html.erb +++ b/app/views/layouts/blacklight/base.html.erb @@ -40,8 +40,6 @@ <% end %> - - <%= csrf_meta_tags %> <%= content_for(:head) %> diff --git a/app/views/shared/_footer.html.erb b/app/views/shared/_footer.html.erb index 66506c61..48a6e88f 100644 --- a/app/views/shared/_footer.html.erb +++ b/app/views/shared/_footer.html.erb @@ -10,7 +10,7 @@ Stanford Libraries
diff --git a/public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg b/public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg deleted file mode 100644 index 94117fb3..00000000 --- a/public/sul-components/v2024-08-07/styles/StanfordLibraries-logo-whitetext.svg +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/sul-components/v2024-08-07/styles/alert.css b/public/sul-components/v2024-08-07/styles/alert.css deleted file mode 100644 index 963571c1..00000000 --- a/public/sul-components/v2024-08-07/styles/alert.css +++ /dev/null @@ -1,23 +0,0 @@ -.alert { - --bs-link-decoration: underline; - - a { - color: var(--bs-alert-color); - } - a .bi::before { - line-height: var(--bs-body-line-height); - } -} - -.alert-warning, -.alert-note { - a { - color: var(--bs-body-color); - } -} - -.alert-note { - --bs-alert-bg: rgba(var(--stanford-illuminating-dark-rgb), 0.1); - --bs-alert-color: rgb(var(--stanford-illuminating-dark-rgb)); - --bs-alert-border-color: rgb(var(--stanford-illuminating-dark-rgb)); -} diff --git a/public/sul-components/v2024-08-07/styles/button.css b/public/sul-components/v2024-08-07/styles/button.css deleted file mode 100644 index 47bf5b4b..00000000 --- a/public/sul-components/v2024-08-07/styles/button.css +++ /dev/null @@ -1,54 +0,0 @@ -.btn:hover { - text-decoration: underline; -} - -.btn { - --bs-btn-disabled-color: var(--stanford-80-black); - --bs-btn-disabled-bg: var(--stanford-10-black); - --bs-btn-disabled-border-color: var(--stanford-30-black); - --bs-btn-disabled-opacity: 1; -} - -.btn-primary { - --bs-btn-bg: var(--stanford-digital-blue); - --bs-btn-border-color: var(--stanford-digital-blue); - --bs-btn-hover-bg: var(--stanford-digital-blue-dark); - --bs-btn-hover-border-color: var(--stanford-digital-blue-dark); - --bs-btn-active-bg: var(--stanford-digital-blue-darker); - --bs-btn-active-border-color: var(--stanford-digital-blue-darker); -} - -.btn-secondary { - --bs-btn-bg: var(--stanford-cardinal); - --bs-btn-border-color: var(--stanford-cardinal); - --bs-btn-hover-bg: var(--stanford-digital-red-dark); - --bs-btn-hover-border-color: var(--stanford-digital-red-dark); - --bs-btn-active-bg: var(--stanford-digital-red-darker); - --bs-btn-active-border-color: var(--stanford-digital-red-darker); -} - -.btn-outline-primary { - --bs-btn-border-color: var(--stanford-digital-blue); - --bs-btn-color: var(--stanford-digital-blue); - --bs-btn-hover-color: var(--stanford-digital-blue-dark); - --bs-btn-hover-border-color: var(--stanford-digital-blue-dark); - --bs-btn-active-color: var(--stanford-digital-blue-darker); - --bs-btn-active-border-color: var(--stanford-digital-blue-darker); -} - -.btn-outline-secondary { - --bs-btn-border-color: var(--stanford-cardinal); - --bs-btn-color: var(--stanford-cardinal); - --bs-btn-hover-color: var(--stanford-digital-red-dark); - --bs-btn-hover-border-color: var(--stanford-digital-red-dark); - --bs-btn-active-border-color: var(--stanford-digital-red-darker); - --bs-btn-active-color: var(--stanford-digital-red-darker); -} - -.btn-outline-primary, -.btn-outline-secondary { - --bs-btn-disabled-bg: white; - --bs-btn-hover-bg: white; - --bs-btn-active-bg: white; - --bs-btn-bg: white; -} diff --git a/public/sul-components/v2024-08-07/styles/colors.css b/public/sul-components/v2024-08-07/styles/colors.css deleted file mode 100644 index df47e7d8..00000000 --- a/public/sul-components/v2024-08-07/styles/colors.css +++ /dev/null @@ -1,21 +0,0 @@ -:root { - --bs-danger-rgb: var(--stanford-digital-red-dark-rgb); - --bs-danger-bg-subtle: rgba(var(--bs-danger-rgb), 0.1); - --bs-danger-border-subtle: rgba(var(--bs-danger-rgb), 1); - --bs-danger-text-emphasis: rgba(var(--bs-danger-rgb), 1); - - --bs-success-rgb: var(--stanford-digital-green-dark-rgb); - --bs-success-bg-subtle: rgba(var(--bs-success-rgb), 0.1); - --bs-success-border-subtle: rgba(var(--bs-success-rgb), 1); - --bs-success-text-emphasis: rgba(var(--bs-success-rgb), 1); - - --bs-warning-rgb: var(--stanford-poppy-rgb); - --bs-warning-bg-subtle: rgba(var(--bs-warning-rgb), 0.1); - --bs-warning-border-subtle: rgba(var(--bs-warning-rgb), 1); - --bs-warning-text-emphasis: rgba(var(--bs-warning-rgb), 1); - - --bs-info-rgb: var(--stanford-digital-blue-dark-rgb); - --bs-info-bg-subtle: rgba(var(--bs-info-rgb), 0.1); - --bs-info-border-subtle: rgba(var(--bs-info-rgb), 1); - --bs-info-text-emphasis: rgba(var(--bs-info-rgb), 1); -} diff --git a/public/sul-components/v2024-08-07/styles/facets.css b/public/sul-components/v2024-08-07/styles/facets.css deleted file mode 100644 index 25bec952..00000000 --- a/public/sul-components/v2024-08-07/styles/facets.css +++ /dev/null @@ -1,38 +0,0 @@ -.facets { - background-color: var(--stanford-fog-light); - border-radius: 4px; - padding-block-end: 4px; - - .facets-heading { - font-size: 1.75rem; - padding-top: 0.5rem; - padding-inline-start: 0.5rem; - } - .card { - /* --bs-card-border-radius: 0; */ - --bs-border-radius: 0; - --bs-card-bg: transparent; - --bs-card-cap-bg: transparent; - border-inline: none; - border-block-end: none; - - .facet-select { - color: var(--bs-body-color); - } - - &.facet-limit-active { - --bs-card-cap-bg: color-mix( - in srgb, - var(--stanford-70-black) 10%, - transparent - ); - - .selected { - font-weight: bold; - } - } - .card-header { - --bs-card-border-width: 0; - } - } -} diff --git a/public/sul-components/v2024-08-07/styles/footer.css b/public/sul-components/v2024-08-07/styles/footer.css deleted file mode 100644 index 80999137..00000000 --- a/public/sul-components/v2024-08-07/styles/footer.css +++ /dev/null @@ -1,52 +0,0 @@ -footer a { - --bs-link-color-rgb: 255, 255, 255; - --bs-link-hover-color-rgb: 255, 255, 255; -} - -#pre-footer { - background-color: var(--stanford-black); -} - -#su-footer { - background-color: var(--stanford-cardinal); - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - ul { - a { - font-size: min(calc(0.825rem + 0.3vw), 1.25rem); - } - } - - .copyright { - font-size: 0.8125rem; - } -} - -@media (max-width: 575.98px) { - #su-footer { - ul a { - font-weight: 600; - } - - .copyright { - font-size: 0.9375rem; - } - } -} - -.su-logo { - display: inline-block; - font-family: var(--font-family-serif); - font-variant-ligatures: discretionary-ligatures; - font-feature-settings: "liga"; - font-weight: 400; - font-size: 2.125rem; - line-height: 0.75; - text-decoration: none; -} - -.su-logo-university { - font-size: 1.5rem; - padding-left: 0.5rem; -} diff --git a/public/sul-components/v2024-08-07/styles/header.css b/public/sul-components/v2024-08-07/styles/header.css deleted file mode 100644 index 95061a0c..00000000 --- a/public/sul-components/v2024-08-07/styles/header.css +++ /dev/null @@ -1,70 +0,0 @@ -.su-brand-bar__logo { - --stanford-stripe-color: var(--stanford-cardinal); - --bs-link-hover-decoration: none; - color: var(--stanford-stripe-color); - display: block; - font-size: 1rem; - font-family: var(--font-family-serif); - font-weight: 400; - font-variant-ligatures: discretionary-ligatures; - font-feature-settings: "liga"; - height: 1.875em; - margin-top: 0.125rem; - white-space: nowrap; -} - -.navbar-logo { - height: 41px; - width: 258px; - background: transparent no-repeat url(StanfordLibraries-logo-whitetext.svg) 0 - 0 / 258px auto; - overflow: hidden; - text-indent: 100%; - white-space: nowrap; -} - -.bg-dark.navbar, -.bg-dark .navbar { - --bs-navbar-color: white; - --bs-navbar-hover-color: rgba(255, 255, 255, 1); - --bs-nav-link-color: white; - --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 1%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); - --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); -} - -#feedback { - label { - text-align: right; - font-weight: bold; - } -} - -.masthead { - .navbar-nav { - --bs-nav-link-font-weight: 700; - - li { - display: inline-block; - position: relative; - } - - li:not(:last-child) { - margin-right: 1rem; - } - - li:not(:first-child)::before { - color: white; - content: "•"; - position: absolute; - left: -1.165rem; - top: 0.25rem; - } - } - - .h1 { - font-size: 2.25rem; - a { - --bs-link-hover-decoration: none; - } - } -} diff --git a/public/sul-components/v2024-08-07/styles/links.css b/public/sul-components/v2024-08-07/styles/links.css deleted file mode 100644 index 9cf4c7a6..00000000 --- a/public/sul-components/v2024-08-07/styles/links.css +++ /dev/null @@ -1,43 +0,0 @@ -:root { - --sul-link-font-weight: 450; - --sul-link-color-rgb: var(--stanford-digital-blue-rgb); - - --bs-link-color: rgb(var(--sul-link-color-rgb), 1); /* for .btn-link */ - --bs-link-color-rgb: var(--sul-link-color-rgb); - --bs-link-hover-color: rgb(var(--sul-link-color-rgb), 1); /* for .btn-link */ - --bs-link-hover-color-rgb: var(--sul-link-color-rgb); - --bs-link-decoration: none; - --bs-link-hover-decoration: underline; -} - -a { - /* for some reason this doesn't work: */ - /* --bs-body-font-weight: var(--sul-link-font-weight) */ - font-weight: var(--sul-link-font-weight); -} - -.btn-link { - --bs-btn-font-weight: var(--sul-link-font-weight); -} - -.su-underline { - --underline-color: var(--bs-gray-500); - --bs-link-hover-decoration: var(--bs-link-decoration); - --bs-link-decoration: underline dotted var(--underline-color) 1px; -} - -/* This may be unnecessary in Bootstrap 5.4+ https://github.com/twbs/bootstrap/pull/39098 */ -a:not(.btn), -.btn-link { - text-decoration: var(--bs-link-decoration); - text-underline-position: under; - - &:hover, - &:focus-visible { - text-decoration: var(--bs-link-hover-decoration); - } -} - -.bg-dark a { - --bs-link-color-rgb: 255, 255, 255; -} diff --git a/public/sul-components/v2024-08-07/styles/palette.css b/public/sul-components/v2024-08-07/styles/palette.css deleted file mode 100644 index 7846bf82..00000000 --- a/public/sul-components/v2024-08-07/styles/palette.css +++ /dev/null @@ -1,41 +0,0 @@ -:root { - /* https://identity.stanford.edu/design-elements/color/primary-colors/ */ - --stanford-cardinal: #8c1515; - --stanford-black: #2e2d29; - --stanford-80-black: #585754; - --stanford-70-black: #6d6c69; - --stanford-30-black: #c0c0bf; - --stanford-10-black: #eaeaea; - - /* https://identity.stanford.edu/design-elements/color/accent-colors/ */ - --stanford-poppy-rgb: 233, 131, 0; - --stanford-poppy-dark: #d1660f; - --stanford-palo-alto-dark-rgb: 1, 66, 64; - --stanford-stone-dark-rgb: 84, 73, 72; - --stanford-illuminating-dark-rgb: 254, 197, 29; - --stanford-fog-light: #f4f4f4; - - /* https://identity.stanford.edu/design-elements/color/web/ */ - --stanford-digital-blue-rgb: 0, 108, 184; - --stanford-digital-blue-dark-rgb: 0, 84, 143; - --stanford-digital-green-dark-rgb: 0, 111, 84; - --stanford-digital-red-dark-rgb: 130, 0, 0; - - --stanford-digital-green: #008566; - --stanford-digital-red: #b1040e; - --stanford-digital-red-dark: rgb(var(--stanford-digital-red-dark-rgb)); - --stanford-digital-blue: rgb(var(--stanford-digital-blue-rgb)); - --stanford-digital-blue-dark: rgb(var(--stanford-digital-blue-dark-rgb)); - - /* unofficial colors */ - --stanford-digital-red-darker: color-mix( - in srgb, - var(--stanford-digital-red-dark) 90%, - black - ); - --stanford-digital-blue-darker: color-mix( - in srgb, - var(--stanford-digital-blue-dark) 90%, - black - ); -} diff --git a/public/sul-components/v2024-08-07/styles/selected-item.css b/public/sul-components/v2024-08-07/styles/selected-item.css deleted file mode 100644 index 6826089b..00000000 --- a/public/sul-components/v2024-08-07/styles/selected-item.css +++ /dev/null @@ -1,29 +0,0 @@ -.selected-item { - --bs-badge-color: black; - --bs-badge-font-size: var(--bs-body-font-size); - --bs-badge-font-weight: var(--bs-body-font-weight); - --bs-badge-padding-y: 0; - --bs-badge-padding-x: 0.65em; - gap: 0.35rem; - display: inline-flex; - - .selected-item-label { - border-inline-end: var(--bs-border-width) var(--bs-border-style) - var(--bs-border-color); - line-height: 1.45em; - padding-block: 0.1rem; - padding-inline-end: 0.45em; - text-wrap: nowrap; - } - - .btn-close { - align-self: center; - font-size: 0.6rem; - - &:hover { - --bs-btn-close-color: var(--stanford-digital-red); - background: var(--bs-btn-close-color); - mask-image: var(--bs-btn-close-bg); - } - } -} diff --git a/public/sul-components/v2024-08-07/styles/sul.css b/public/sul-components/v2024-08-07/styles/sul.css deleted file mode 100644 index 2632d731..00000000 --- a/public/sul-components/v2024-08-07/styles/sul.css +++ /dev/null @@ -1,11 +0,0 @@ -@import "./palette.css"; -@import "./colors.css"; -@import "./links.css"; -@import "./typography.css"; -@import "./header.css"; -@import "./footer.css"; -@import "./alert.css"; -@import "./toast.css"; -@import "./button.css"; -@import "./selected-item.css"; -@import "./facets.css"; diff --git a/public/sul-components/v2024-08-07/styles/toast.css b/public/sul-components/v2024-08-07/styles/toast.css deleted file mode 100644 index 6ef53981..00000000 --- a/public/sul-components/v2024-08-07/styles/toast.css +++ /dev/null @@ -1,15 +0,0 @@ -.bg-stanford-black { - background-color: var(--stanford-black); -} - -.bg-stanford-digital-red { - background-color: var(--stanford-digital-red); -} - -.bg-stanford-digital-green { - background-color: var(--stanford-digital-green); -} - -.bg-poppy-dark { - background-color: var(--stanford-poppy-dark); -} \ No newline at end of file diff --git a/public/sul-components/v2024-08-07/styles/typography.css b/public/sul-components/v2024-08-07/styles/typography.css deleted file mode 100644 index 1b39f791..00000000 --- a/public/sul-components/v2024-08-07/styles/typography.css +++ /dev/null @@ -1,6 +0,0 @@ -@import url("https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,200..900;1,200..900&display=swap"); -@import url("https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&display=swap"); -:root { - --font-family-serif: "Source Serif 4", serif; - --bs-font-sans-serif: "Source Sans 3", "Source Sans Pro"; -} From dcbca701797876f71ca6c6e8b84770dbfad95205 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Thu, 8 Aug 2024 15:33:51 -0500 Subject: [PATCH 30/51] Update to the latest version of component library --- app/assets/stylesheets/application.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 0af0468a..1b2d07e5 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -10,7 +10,7 @@ @import url("earthworks.css"); /* Component library */ -@import url("https://cdn.jsdelivr.net/gh/sul-dlss/component-library@v2024-08-07/styles/sul.css"); +@import url("https://cdn.jsdelivr.net/gh/sul-dlss/component-library@v2024-08-09/styles/sul.css"); /* Bootstrap Icons */ @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"); From c08a5f57ca325c311edf86ccee5d5cdcb917850d Mon Sep 17 00:00:00 2001 From: dnoneill Date: Thu, 8 Aug 2024 15:19:19 -0400 Subject: [PATCH 31/51] remove icons, styling updates --- app/assets/images/blacklight/available.svg | 6 ------ app/assets/images/blacklight/exclamation-triangle.svg | 1 - app/assets/images/blacklight/stanford.svg | 3 --- app/assets/images/blacklight/unavailable.svg | 9 --------- app/assets/stylesheets/earthworks.css | 8 ++++++++ 5 files changed, 8 insertions(+), 19 deletions(-) delete mode 100644 app/assets/images/blacklight/available.svg delete mode 100644 app/assets/images/blacklight/exclamation-triangle.svg delete mode 100644 app/assets/images/blacklight/stanford.svg delete mode 100644 app/assets/images/blacklight/unavailable.svg diff --git a/app/assets/images/blacklight/available.svg b/app/assets/images/blacklight/available.svg deleted file mode 100644 index 3b4144f0..00000000 --- a/app/assets/images/blacklight/available.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/app/assets/images/blacklight/exclamation-triangle.svg b/app/assets/images/blacklight/exclamation-triangle.svg deleted file mode 100644 index 99d22e3a..00000000 --- a/app/assets/images/blacklight/exclamation-triangle.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/app/assets/images/blacklight/stanford.svg b/app/assets/images/blacklight/stanford.svg deleted file mode 100644 index 7043edd5..00000000 --- a/app/assets/images/blacklight/stanford.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/app/assets/images/blacklight/unavailable.svg b/app/assets/images/blacklight/unavailable.svg deleted file mode 100644 index e9d16d37..00000000 --- a/app/assets/images/blacklight/unavailable.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 76dca621..119c0c22 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -55,4 +55,12 @@ --bs-btn-hover-border-color: var(--stanford-digital-red-dark)!important; --bs-btn-active-bg: var(--stanford-digital-red-darker)!important; --bs-btn-active-border-color: var(--stanford-digital-red-darker)!important; +} + +.blacklight-icons-stanford svg path { + fill: var(--stanford-cardinal); +} + +.blacklight-icons-restricted svg path { + fill: var(--stanford-digital-red) } \ No newline at end of file From 1dc958ea16f1f664632ac0ed3b00cc97460c0b28 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Fri, 9 Aug 2024 11:22:55 -0400 Subject: [PATCH 32/51] move sidebar to document --- Gemfile.lock | 2 +- .../{ => document}/sidebar_component.html.erb | 0 .../earthworks/document/sidebar_component.rb | 16 ++++++++++++++++ app/components/earthworks/sidebar_component.rb | 14 -------------- app/controllers/catalog_controller.rb | 2 +- 5 files changed, 18 insertions(+), 16 deletions(-) rename app/components/earthworks/{ => document}/sidebar_component.html.erb (100%) create mode 100644 app/components/earthworks/document/sidebar_component.rb delete mode 100644 app/components/earthworks/sidebar_component.rb diff --git a/Gemfile.lock b/Gemfile.lock index 4f42db0e..245cf57a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/geoblacklight/geoblacklight.git - revision: 01961a094e557b02a7cab330750c1cf9fe6d774e + revision: 0d00b850e58e8ab92f5db97166563bb83afa3ea3 branch: main specs: geoblacklight (4.4.0) diff --git a/app/components/earthworks/sidebar_component.html.erb b/app/components/earthworks/document/sidebar_component.html.erb similarity index 100% rename from app/components/earthworks/sidebar_component.html.erb rename to app/components/earthworks/document/sidebar_component.html.erb diff --git a/app/components/earthworks/document/sidebar_component.rb b/app/components/earthworks/document/sidebar_component.rb new file mode 100644 index 00000000..d2616aa2 --- /dev/null +++ b/app/components/earthworks/document/sidebar_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Earthworks + # Render the sidebar on the show view + module Document + class SidebarComponent < Geoblacklight::Document::SidebarComponent + def components + [ + Geoblacklight::LoginLinkComponent.new(document: document), + Geoblacklight::StaticMapComponent.new(document: document), + Earthworks::DownloadLinksComponent.new(document: document) + ] + end + end + end +end diff --git a/app/components/earthworks/sidebar_component.rb b/app/components/earthworks/sidebar_component.rb deleted file mode 100644 index 4dee5ebc..00000000 --- a/app/components/earthworks/sidebar_component.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module Earthworks - # Render the sidebar on the show view - class SidebarComponent < Geoblacklight::SidebarComponent - def components - [ - Geoblacklight::LoginLinkComponent.new(document: document), - Geoblacklight::StaticMapComponent.new(document: document), - Earthworks::DownloadLinksComponent.new(document: document) - ] - end - end -end diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 6d594d7b..1dc50513 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -48,7 +48,7 @@ class CatalogController < ApplicationController config.show.partials << 'show_default_viewer_information' config.show.partials << 'show_default_canonical_link' config.show.partials << :show - config.show.sidebar_component = Earthworks::SidebarComponent + config.show.sidebar_component = Earthworks::Document::SidebarComponent config.header_component = Geoblacklight::HeaderComponent # solr fields that will be treated as facets by the blacklight application From b2c1f911ed71dc4b441555b1f00f5a51aeab1f91 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Thu, 8 Aug 2024 15:57:05 -0400 Subject: [PATCH 33/51] add box shadow, center titles --- app/assets/stylesheets/earthworks.css | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 119c0c22..9bf231a1 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -63,4 +63,17 @@ .blacklight-icons-restricted svg path { fill: var(--stanford-digital-red) +} + +.documents-list article:hover, .documents-list article:focus { + box-shadow: -4px 4px 4px 0px var(--stanford-fog-light); +} + +.document-counter { + display: none; +} + +.documents-list .documentHeader .index_title { + margin-left: .75rem; + align-self: center; } \ No newline at end of file From ac43f5aba19071232eb895773f5f63f55caad35f Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 12 Aug 2024 12:17:18 -0400 Subject: [PATCH 34/51] fix legacy icons, info_format --- config/settings.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/config/settings.yml b/config/settings.yml index c89ef95a..aae14663 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -225,7 +225,7 @@ WMS_PARAMS: :STYLES: "" :SRS: "EPSG:4326" :EXCEPTIONS: "application/json" - :INFO_FORMAT: "text/html" + :INFO_FORMAT: "application/json" # Settings for leaflet LEAFLET: @@ -481,4 +481,18 @@ OGM_REPOS: edu.vt: provider: Virginia Tech -IIIF_DRAG_DROP_LINK: '@manifest?manifest=@manifest' \ No newline at end of file +IIIF_DRAG_DROP_LINK: '@manifest?manifest=@manifest' + +ICON_MAPPING: + chicago: university-of-chicago + illinois: university-of-illinois-urbana-champaign + iowa: university-of-iowa + maryland: university-of-maryland + michigan-state: michigan-state-university + michigan: university-of-michigan + minnesota: university-of-minnesota + nebraska: university-of-nebraska-lincoln + ohio-state: the-ohio-state-university + penn-state: pennsylvania-state-university + purdue: purdue-university + wisconsin: university-of-wisconsin-madison \ No newline at end of file From 4104dc7013a0415363f85259ce28352726ae023c Mon Sep 17 00:00:00 2001 From: dnoneill Date: Fri, 9 Aug 2024 12:12:53 -0400 Subject: [PATCH 35/51] update show to be three columns --- .../earthworks/document_component.html.erb | 39 +++++++++++++++++++ .../earthworks/document_component.rb | 6 +++ app/controllers/catalog_controller.rb | 9 +---- app/helpers/earthworks_blacklight_helper.rb | 10 +++++ .../_show_default_canonical_link.html.erb | 7 ---- app/views/layouts/catalog_result.html.erb | 6 +++ 6 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 app/components/earthworks/document_component.html.erb create mode 100644 app/components/earthworks/document_component.rb create mode 100644 app/helpers/earthworks_blacklight_helper.rb delete mode 100644 app/views/catalog/_show_default_canonical_link.html.erb diff --git a/app/components/earthworks/document_component.html.erb b/app/components/earthworks/document_component.html.erb new file mode 100644 index 00000000..40a81dde --- /dev/null +++ b/app/components/earthworks/document_component.html.erb @@ -0,0 +1,39 @@ +<%= content_tag @component, + id: @id, + data: { + 'document-id': @document.id.to_s.parameterize, + 'document-counter': @counter, + }, + itemscope: true, + itemtype: @document.itemtype, + class: classes.flatten.join(' ') do %> + <%= header %> + <% if body.present? %> + <%= body %> + <% else %> + <% if @document.stanford? %> + <% content_for :head do %> + "> + <% end %> + <% end %> +
+ <% @document.display_note.each do |display_note| %> + <%= render Geoblacklight::DisplayNoteComponent.new(display_note: display_note) %> + <% end %> + <%= title %> + <%= embed %> + <%= content %> + <%= metadata %> + <% metadata_sections.each do |section| %> + <%= section %> + <% end %> + + <% partials.each do |partial| %> + <%= partial %> + <% end %> +
+ + <%= thumbnail %> + <% end %> + <%= footer %> +<% end %> \ No newline at end of file diff --git a/app/components/earthworks/document_component.rb b/app/components/earthworks/document_component.rb new file mode 100644 index 00000000..7e2d9589 --- /dev/null +++ b/app/components/earthworks/document_component.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +module Earthworks + class DocumentComponent < Geoblacklight::DocumentComponent + end +end diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 1dc50513..b189f517 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -41,14 +41,9 @@ class CatalogController < ApplicationController # solr field configuration for document/show views config.show.display_type_field = 'format' - config.show.partials.delete(:show) - config.show.partials << 'show_default_display_note' - config.show.partials << 'show_default_viewer_container' - config.show.partials << 'show_default_attribute_table' - config.show.partials << 'show_default_viewer_information' - config.show.partials << 'show_default_canonical_link' - config.show.partials << :show + config.show.sidebar_component = Earthworks::Document::SidebarComponent + config.show.document_component = Earthworks::DocumentComponent config.header_component = Geoblacklight::HeaderComponent # solr fields that will be treated as facets by the blacklight application diff --git a/app/helpers/earthworks_blacklight_helper.rb b/app/helpers/earthworks_blacklight_helper.rb new file mode 100644 index 00000000..9919a90b --- /dev/null +++ b/app/helpers/earthworks_blacklight_helper.rb @@ -0,0 +1,10 @@ +module EarthworksBlacklightHelper + include Blacklight::LayoutHelperBehavior + def show_content_classes + 'col-lg-5 show-document' + end + + def show_sidebar_classes + 'page-sidebar col-lg-2' + end +end diff --git a/app/views/catalog/_show_default_canonical_link.html.erb b/app/views/catalog/_show_default_canonical_link.html.erb deleted file mode 100644 index b9d4ab95..00000000 --- a/app/views/catalog/_show_default_canonical_link.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -<% document ||= @document %> - -<% if document.stanford? %> - <% content_for :head do %> - "> - <% end %> -<% end %> diff --git a/app/views/layouts/catalog_result.html.erb b/app/views/layouts/catalog_result.html.erb index b7d561f4..2851427d 100644 --- a/app/views/layouts/catalog_result.html.erb +++ b/app/views/layouts/catalog_result.html.erb @@ -6,6 +6,12 @@
<%= yield %>
+ +
+ <%= render Geoblacklight::ViewerContainerComponent.new(document: @document) %> + <%= render Geoblacklight::AttributeTableComponent.new(document: @document) %> + <%= render Geoblacklight::IndexMapInspectComponent.new(document: @document) %> +
<% end %> <%= render template: "layouts/blacklight/base" %> \ No newline at end of file From 3d8501425524b7715531f69c867db8e18dff04b1 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Fri, 9 Aug 2024 12:01:41 -0400 Subject: [PATCH 36/51] update the search results view --- app/assets/stylesheets/earthworks.css | 9 ------ .../header_icons_component.html.erb | 7 ++++ .../earthworks/header_icons_component.rb | 18 +++++++++++ .../search_result_component.html.erb | 32 +++++++++++++++++++ .../earthworks/search_result_component.rb | 16 ++++++++++ app/controllers/catalog_controller.rb | 2 +- 6 files changed, 74 insertions(+), 10 deletions(-) create mode 100644 app/components/earthworks/header_icons_component.html.erb create mode 100644 app/components/earthworks/header_icons_component.rb create mode 100644 app/components/earthworks/search_result_component.html.erb create mode 100644 app/components/earthworks/search_result_component.rb diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 9bf231a1..75e71607 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -67,13 +67,4 @@ .documents-list article:hover, .documents-list article:focus { box-shadow: -4px 4px 4px 0px var(--stanford-fog-light); -} - -.document-counter { - display: none; -} - -.documents-list .documentHeader .index_title { - margin-left: .75rem; - align-self: center; } \ No newline at end of file diff --git a/app/components/earthworks/header_icons_component.html.erb b/app/components/earthworks/header_icons_component.html.erb new file mode 100644 index 00000000..e3ea1b6c --- /dev/null +++ b/app/components/earthworks/header_icons_component.html.erb @@ -0,0 +1,7 @@ +
+ <% @fields.each do |field| %> + <% icon, label = get_icon(field) %> + <%= icon %> + <%= label %> + <% end %> +
\ No newline at end of file diff --git a/app/components/earthworks/header_icons_component.rb b/app/components/earthworks/header_icons_component.rb new file mode 100644 index 00000000..eab4eee5 --- /dev/null +++ b/app/components/earthworks/header_icons_component.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +module Earthworks + class HeaderIconsComponent < Geoblacklight::HeaderIconsComponent + def get_icon(field) + icon_name = @document[field] + if icon_name&.include?('Datasets') && @document[Settings.FIELDS.RESOURCE_TYPE] + specific_icon = @document[Settings.FIELDS.RESOURCE_TYPE] + specific_icon = specific_icon.first if specific_icon.is_a?(Array) + specific_icon = specific_icon&.gsub(' data', '') + icon = geoblacklight_icon(specific_icon) + return [icon, specific_icon] unless icon.include?('icon-missing') + end + icon_name = icon_name.first if icon_name.is_a?(Array) + [geoblacklight_icon(icon_name), icon_name] + end + end +end diff --git a/app/components/earthworks/search_result_component.html.erb b/app/components/earthworks/search_result_component.html.erb new file mode 100644 index 00000000..3a63fc9b --- /dev/null +++ b/app/components/earthworks/search_result_component.html.erb @@ -0,0 +1,32 @@ +<%# This template copies from Blacklight's components/document_component.html.erb + # for the wrapping `content_tag @component` structure + # and adds custom layout within for the document header, status-icons and more-info areas %> + +<%= content_tag @component, + id: @id, + data: { + 'document-id': @document.id.to_s.parameterize, + 'document-counter': @counter, + 'search-results-target': 'result', + 'action': 'mouseenter->search-results#previewResultOnMap mouseleave->search-results#clearPreview' + }, + itemscope: true, + itemtype: @document.itemtype, + class: classes.flatten.join(' ') do %> + <%= content_tag :div, class: 'documentHeader index-split d-flex flex-grow-1 flex-column m-2', data: { layer_id: @document.id, geom: @document.geometry.geojson } do %> +

+ <%= helpers.link_to_document(@document, counter: @counter, itemprop: "name") %> +

+ +
+ <%= render Earthworks::HeaderIconsComponent.new(document: @document) %> +
+ <% end %> + <% end %> +
+
+ + <%= index_fields_display %> + +
+
\ No newline at end of file diff --git a/app/components/earthworks/search_result_component.rb b/app/components/earthworks/search_result_component.rb new file mode 100644 index 00000000..1776a38f --- /dev/null +++ b/app/components/earthworks/search_result_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module Earthworks + class SearchResultComponent < Geoblacklight::SearchResultComponent + def classes + [ + @classes, + helpers.render_document_class(@document), + 'document', + 'pt-0', + 'mt-0', + ("document-position-#{@counter}" if @counter) + ].compact.flatten + end + end +end diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 1dc50513..c478d1ac 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -34,7 +34,7 @@ class CatalogController < ApplicationController # config.index.show_link = 'title_display' # config.index.record_display_type = 'format' - config.index.document_component = Geoblacklight::SearchResultComponent + config.index.document_component = Earthworks::SearchResultComponent config.index.title_field = Settings.FIELDS.TITLE config.crawler_detector = ->(req) { req.env['HTTP_USER_AGENT']&.include?('bot') } From 05a2b65e2b6693940c5d5b2d36f45b57adb69fc8 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Tue, 13 Aug 2024 07:45:05 -0500 Subject: [PATCH 37/51] Update to the latest version of the component library --- app/assets/stylesheets/application.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 1b2d07e5..299874bb 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -10,7 +10,7 @@ @import url("earthworks.css"); /* Component library */ -@import url("https://cdn.jsdelivr.net/gh/sul-dlss/component-library@v2024-08-09/styles/sul.css"); +@import url("https://cdn.jsdelivr.net/gh/sul-dlss/component-library@v2024-08-13/styles/sul.css"); /* Bootstrap Icons */ @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"); From cda3afc1bf8b5c399cc854289f24505fbb387c61 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 12 Aug 2024 15:34:50 -0400 Subject: [PATCH 38/51] add header icons to show page --- app/components/earthworks/document_component.html.erb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/components/earthworks/document_component.html.erb b/app/components/earthworks/document_component.html.erb index 40a81dde..d81e21ad 100644 --- a/app/components/earthworks/document_component.html.erb +++ b/app/components/earthworks/document_component.html.erb @@ -21,6 +21,9 @@ <%= render Geoblacklight::DisplayNoteComponent.new(display_note: display_note) %> <% end %> <%= title %> +
+ <%= render Earthworks::HeaderIconsComponent.new(document: @document) %> +
<%= embed %> <%= content %> <%= metadata %> From 9c24abfd639040daf46ba55a7d27c399a7214e4d Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 12 Aug 2024 16:29:09 -0400 Subject: [PATCH 39/51] add georeferenced alert and unit tests --- .../earthworks/alert_component.html.erb | 8 +++++++ app/components/earthworks/alert_component.rb | 20 ++++++++++++++++ app/views/layouts/catalog_result.html.erb | 3 +++ config/locales/en.yml | 2 ++ spec/features/georeference_spec.rb | 24 +++++++++++++++++++ .../solr_documents/public_iiif_princeton.json | 3 ++- 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 app/components/earthworks/alert_component.html.erb create mode 100644 app/components/earthworks/alert_component.rb create mode 100644 spec/features/georeference_spec.rb diff --git a/app/components/earthworks/alert_component.html.erb b/app/components/earthworks/alert_component.html.erb new file mode 100644 index 00000000..a82435c7 --- /dev/null +++ b/app/components/earthworks/alert_component.html.erb @@ -0,0 +1,8 @@ + \ No newline at end of file diff --git a/app/components/earthworks/alert_component.rb b/app/components/earthworks/alert_component.rb new file mode 100644 index 00000000..19dff49a --- /dev/null +++ b/app/components/earthworks/alert_component.rb @@ -0,0 +1,20 @@ +module Earthworks + class AlertComponent < ViewComponent::Base + attr_reader :title, :body, :type, :icon + + def initialize(body:, type:, title: nil) + super + @title = title + @body = body + @type = type + @icon = match_icon + end + + def match_icon + icon_mapping = { 'info' => 'bi-info-circle-fill', 'warning' => 'bi-exclamation-triangle-fill', + 'danger' => 'bi-exclamation-triangle-fill', 'sucess' => 'bi-check-circle-fill', + 'note' => 'bi-exclamation-circle-fill' } + icon_mapping[type] + end + end +end diff --git a/app/views/layouts/catalog_result.html.erb b/app/views/layouts/catalog_result.html.erb index 2851427d..e81b3a5b 100644 --- a/app/views/layouts/catalog_result.html.erb +++ b/app/views/layouts/catalog_result.html.erb @@ -8,6 +8,9 @@
+ <% if (@document.file_format.include?('JPEG') || @document.item_viewer.iiif) && !@document[Settings.FIELDS[:GEOREFERENCED]] %> + <%= render Earthworks::AlertComponent.new(type: 'info', body: t('earthworks.show.no_georeference_message')) %> + <% end %> <%= render Geoblacklight::ViewerContainerComponent.new(document: @document) %> <%= render Geoblacklight::AttributeTableComponent.new(document: @document) %> <%= render Geoblacklight::IndexMapInspectComponent.new(document: @document) %> diff --git a/config/locales/en.yml b/config/locales/en.yml index fa28dc8a..86848ce8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -10,3 +10,5 @@ en: maps: header: Scanned maps description: Need copy for this ... contains over %{sets} maps... + show: + no_georeference_message: 'This map is not georeferenced.' diff --git a/spec/features/georeference_spec.rb b/spec/features/georeference_spec.rb new file mode 100644 index 00000000..d6814fe2 --- /dev/null +++ b/spec/features/georeference_spec.rb @@ -0,0 +1,24 @@ +require 'rails_helper' + +describe 'Show page' do + context 'when gbl_georeferenced_b is not set' do + it 'have georeference alert' do + visit solr_document_path 'stanford-dt131hw5005' + expect(page).to have_content 'This map is not georeferenced.' + end + end + + context 'when gbl_georeferenced_b is set to true' do + it 'does not have georeference alert' do + visit solr_document_path 'princeton-02870w62c' + expect(page).to have_no_content 'This map is not georeferenced.' + end + end + + context 'when page is a non iiif page' do + it 'does not have georeference alert' do + visit solr_document_path 'mit-001145244' + expect(page).to have_no_content 'This map is not georeferenced.' + end + end +end diff --git a/spec/fixtures/solr_documents/public_iiif_princeton.json b/spec/fixtures/solr_documents/public_iiif_princeton.json index f1b5b7ab..69f14a6d 100644 --- a/spec/fixtures/solr_documents/public_iiif_princeton.json +++ b/spec/fixtures/solr_documents/public_iiif_princeton.json @@ -10,7 +10,7 @@ "dct_subject_sm": ["New York (State)‒Maps", "New Jersey‒Maps"], "dct_title_s": "The provinces of New York and New Jersey, with part of Pensilvania, and the Province of Quebec : drawn by Major Holland, Surveyor General, of the Northern District in America. Corrected and improved, from the original materials, by Governr. Pownall, Member of Parliament, 1776", "dct_creator_sm": ["Rogers, Henry Darwin", "Pownall, Thomas"], - "dct_references_s": "{\"http://schema.org/url\":\"http://arks.princeton.edu/ark:/88435/02870w62c\",\"http://schema.org/thumbnailUrl\":\"http://libimages.princeton.edu/loris2/pudl0076%2Fmap_pownall%2F00000001.jp2/full/50,/0/default.jpg\",\"http://iiif.io/api/image\":\"http://libimages.princeton.edu/loris2/pudl0076%2Fmap_pownall%2F00000001.jp2/info.json\"}", + "dct_references_s": "{\"http://schema.org/url\":\"http://arks.princeton.edu/ark:/88435/02870w62c\",\"http://schema.org/thumbnailUrl\":\"https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/full/50,/0/default.jpg\",\"http://iiif.io/api/image\":\"https://iiif-cloud.princeton.edu/iiif/2/6c%2F52%2F12%2F6c5212e81bc845f59bb1cdc740a88bad%2Fintermediate_file/info.json\"}", "dct_spatial_sm": ["New York (State)", "New Jersey", "Pennsylvania"], "dct_temporal_sm": ["1778"], "dct_issued_s": "1778", @@ -24,5 +24,6 @@ "gbl_indexYear_im": [1778], "gbl_resourceClass_sm": ["Datasets"], "gbl_resourceType_sm": ["Raster data"], + "gbl_georeferenced_b": true, "gbl_mdVersion_s": "Aardvark" } From 220feeac056127824066774d61f28ecaddb5ccff Mon Sep 17 00:00:00 2001 From: dnoneill Date: Tue, 13 Aug 2024 12:13:15 -0400 Subject: [PATCH 40/51] update index map colors --- config/settings.yml | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/config/settings.yml b/config/settings.yml index aae14663..17e9a13c 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -234,36 +234,15 @@ LEAFLET: DETECT_RETINA: true INDEX: DEFAULT: &default - color: "#1eb300" + color: "#006CB8" weight: 1 radius: 4 UNAVAILABLE: <<: *default - color: "#b3001e" + color: "#B1040E" SELECTED: <<: *default - color: "#006bde" - VIEWERS: - WMS: - CONTROLS: - - "Opacity" - - "Fullscreen" - TILEDMAPLAYER: - CONTROLS: - - "Opacity" - - "Fullscreen" - FEATURELAYER: - CONTROLS: - - "Opacity" - - "Fullscreen" - DYNAMICMAPLAYER: - CONTROLS: - - "Opacity" - - "Fullscreen" - IMAGEMAPLAYER: - CONTROLS: - - "Opacity" - - "Fullscreen" + color: "yellow" # Toggle the help text feature that offers users context HELP_TEXT: From 1a73e3889b62aceaed8ae65419a1c412a8a69a2b Mon Sep 17 00:00:00 2001 From: dnoneill Date: Tue, 13 Aug 2024 17:04:42 -0400 Subject: [PATCH 41/51] small header icons fixes search page --- app/assets/stylesheets/earthworks.css | 15 +++++++++++++++ .../earthworks/header_icons_component.html.erb | 4 ++-- .../earthworks/search_result_component.rb | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 75e71607..af74f856 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -1,3 +1,18 @@ +:root { + --stanford-50-black: #979694; +} + +.header-icons { + color: var(--stanford-50-black); + font-size: .875rem; + line-height: 1.125rem; +} + +.header-icons .blacklight-icons, .header-icons .blacklight-icons svg { + height: .875rem; + width: .875rem; +} + .palo-alto-base { --bs-dark-rgb: 23, 94, 84; } diff --git a/app/components/earthworks/header_icons_component.html.erb b/app/components/earthworks/header_icons_component.html.erb index e3ea1b6c..5ef708be 100644 --- a/app/components/earthworks/header_icons_component.html.erb +++ b/app/components/earthworks/header_icons_component.html.erb @@ -1,7 +1,7 @@ -
+
<% @fields.each do |field| %> <% icon, label = get_icon(field) %> <%= icon %> - <%= label %> + <%= label.upcase %> <% end %>
\ No newline at end of file diff --git a/app/components/earthworks/search_result_component.rb b/app/components/earthworks/search_result_component.rb index 1776a38f..4ab2a1fa 100644 --- a/app/components/earthworks/search_result_component.rb +++ b/app/components/earthworks/search_result_component.rb @@ -7,7 +7,7 @@ def classes @classes, helpers.render_document_class(@document), 'document', - 'pt-0', + 'p-2', 'mt-0', ("document-position-#{@counter}" if @counter) ].compact.flatten From f5f4be46d2dfb0c9e07e8b5733b715d9b3f5f052 Mon Sep 17 00:00:00 2001 From: dnoneill Date: Wed, 14 Aug 2024 12:54:51 -0400 Subject: [PATCH 42/51] move search header into document split --- app/assets/stylesheets/earthworks.css | 15 +++++++++++++++ app/controllers/catalog_controller.rb | 3 ++- app/views/catalog/_document_split.html.erb | 22 ++++++++++++++++++++++ app/views/catalog/_search_header.html.erb | 1 + 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 app/views/catalog/_document_split.html.erb create mode 100644 app/views/catalog/_search_header.html.erb diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index 75e71607..bf24798f 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -67,4 +67,19 @@ .documents-list article:hover, .documents-list article:focus { box-shadow: -4px 4px 4px 0px var(--stanford-fog-light); +} + +.search-widgets .btn { + --bs-btn-font-size: .875rem; + --bs-border-radius: 4px; + --bs-btn-padding-x: 6px; + --bs-btn-padding-y: 2px; + --bs-btn-line-height: 1; + height: 1.6rem; + align-self: center; +} + +.sort-pagination, .pagination-search-widgets { + padding-bottom: .5rem; + border-bottom: 2px solid var(--bs-border-color); } \ No newline at end of file diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 0c324922..050c1466 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -13,10 +13,11 @@ class CatalogController < ApplicationController ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params config.default_solr_params = { :start => 0, - :rows => 10, + :rows => 20, 'q.alt' => '*:*' } + config.default_per_page = 20 # Default parameters to send on single-document requests to Solr. # These settings are the Blacklight defaults (see SolrHelper#solr_doc_params) or # parameters included in the Blacklight-jetty document requestHandler. diff --git a/app/views/catalog/_document_split.html.erb b/app/views/catalog/_document_split.html.erb new file mode 100644 index 00000000..1e668484 --- /dev/null +++ b/app/views/catalog/_document_split.html.erb @@ -0,0 +1,22 @@ +
+
+ <%= render blacklight_config.view_config(document_index_view_type).search_header_component.new %> + + <% document_presenters = documents.map { |doc| document_presenter(doc) } -%> + <% document_presenters.each_with_index do |presenter, index| %> + <%= render blacklight_config.index.document_component.new(document: presenter, document_counter: index) %> + <% end %> + +
+ <% if results_js_map_selector(controller.controller_name) == "index" %> + <%= render(Geoblacklight::LocationLeafletMapComponent.new(page: 'index', geosearch: { dynamic: true }, classes: 'col-md-6 sticky-top position-sticky leaflet-viewer')) %> + <% else %> + <%= render(Geoblacklight::LocationLeafletMapComponent.new(page: 'index', classes: 'col-md-6 leaflet-viewer')) %> + <% end %> +
\ No newline at end of file diff --git a/app/views/catalog/_search_header.html.erb b/app/views/catalog/_search_header.html.erb new file mode 100644 index 00000000..e4f94a7e --- /dev/null +++ b/app/views/catalog/_search_header.html.erb @@ -0,0 +1 @@ +<%= render 'did_you_mean' %> \ No newline at end of file From 7f2bb3bc910c5fd4b3ae61c0b1400b35faf3db23 Mon Sep 17 00:00:00 2001 From: mlongley Date: Thu, 15 Aug 2024 13:18:46 -0400 Subject: [PATCH 43/51] Use container-fluid and set max-width to 1600px Closes #1177 --- app/assets/stylesheets/earthworks.css | 6 ++++++ app/controllers/catalog_controller.rb | 3 +++ app/views/catalog/_home_text.html.erb | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/assets/stylesheets/earthworks.css b/app/assets/stylesheets/earthworks.css index af74f856..1b88387c 100644 --- a/app/assets/stylesheets/earthworks.css +++ b/app/assets/stylesheets/earthworks.css @@ -2,6 +2,12 @@ --stanford-50-black: #979694; } +/* Selects both #main-content and navbar containers */ +#main-container, .navbar-search > * { + max-width: 1600px; + padding: 0 60px; +} + .header-icons { color: var(--stanford-50-black); font-size: .875rem; diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 0c324922..1c8bbb3d 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -25,6 +25,9 @@ class CatalogController < ApplicationController q: "{!raw f=#{Settings.FIELDS.ID} v=$id}" } + # When set to true, Blacklight uses container-fluid as the layout container + config.full_width_layout = true + # GeoBlacklight Defaults # * Adds the "map" split view for catalog#index config.view.split(partials: ['index']) diff --git a/app/views/catalog/_home_text.html.erb b/app/views/catalog/_home_text.html.erb index 673ef117..4cb2d96b 100644 --- a/app/views/catalog/_home_text.html.erb +++ b/app/views/catalog/_home_text.html.erb @@ -1,4 +1,4 @@ -
+
<%= render Blacklight::SearchBarComponent.new( From 7860d629e5a10cd26eecbbcba967725198650eae Mon Sep 17 00:00:00 2001 From: dnoneill Date: Mon, 19 Aug 2024 10:28:32 -0400 Subject: [PATCH 44/51] remove hgl --- .../earthworks/download_links_component.html.erb | 8 +------- .../earthworks/download_links_component.rb | 14 -------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/app/components/earthworks/download_links_component.html.erb b/app/components/earthworks/download_links_component.html.erb index 72b90482..a8c2cc78 100644 --- a/app/components/earthworks/download_links_component.html.erb +++ b/app/components/earthworks/download_links_component.html.erb @@ -1,4 +1,4 @@ -<% direct_dowload = document.direct_download.present? || document.hgl_download.present? || document.iiif_download.present? %> +<% direct_dowload = document.direct_download.present? || document.iiif_download.present? %> <% if direct_dowload %>
Download
<% end %> @@ -17,12 +17,6 @@ <% end %> <% end %> -<% if document.hgl_download.present? %> -
- <%= download_link_hgl(download_text(document.download_types.first[0]), document) %> -
-<% end %> - <% if document.iiif_download.present? %>
<%= download_link_iiif %> diff --git a/app/components/earthworks/download_links_component.rb b/app/components/earthworks/download_links_component.rb index 5b811e9e..325bd36f 100644 --- a/app/components/earthworks/download_links_component.rb +++ b/app/components/earthworks/download_links_component.rb @@ -17,20 +17,6 @@ def download_link_file(label, id, url) ) end - def download_link_hgl(text, document) - link_to( - text, - download_hgl_path(id: document), - class: 'btn btn-primary', - data: { - blacklight_modal: 'trigger', - download: 'trigger', - download_type: 'harvard-hgl', - download_id: document.id - } - ) - end - # Generates the link markup for the IIIF JPEG download # @return [String] def download_link_iiif From cdbfb1280c7d1ca22a53ee4383f48d1f5f301c37 Mon Sep 17 00:00:00 2001 From: Nick Budak Date: Mon, 19 Aug 2024 15:04:18 -0700 Subject: [PATCH 45/51] Point at CDN versions of stylesheets for dependencies --- app/assets/stylesheets/application.css | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 299874bb..bdabab3e 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -1,12 +1,14 @@ /* Leaflet */ -@import url("leaflet/dist/leaflet.css"); -@import url("leaflet-fullscreen/dist/leaflet.fullscreen.css"); +@import url("https://cdn.skypack.dev/leaflet@1.9.4/dist/leaflet.css"); +@import url("https://cdn.jsdelivr.net/npm/leaflet-fullscreen@1.0.2/dist/leaflet.fullscreen.css"); /* OpenLayers */ -@import url("ol/ol.css"); +@import url("https://cdn.skypack.dev/ol@8.1.0/ol.css"); -/* GeoBlacklight */ +/* GeoBlacklight (compiled locally by cssbundling-rails) */ @import url("geoblacklight.css"); + +/* EarthWorks */ @import url("earthworks.css"); /* Component library */ @@ -14,4 +16,3 @@ /* Bootstrap Icons */ @import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"); - From 4943e12b912af301214223c46c8c3eba34277d2f Mon Sep 17 00:00:00 2001 From: Huda Khan Date: Fri, 2 Aug 2024 20:21:02 -0600 Subject: [PATCH 46/51] setting up autocomplete to retrieve search result titles --- app/controllers/catalog_controller.rb | 19 ++++++++++++++- app/views/catalog/autosearch.html.erb | 35 +++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 app/views/catalog/autosearch.html.erb diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index d7187dee..d493434a 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -328,7 +328,10 @@ class CatalogController < ApplicationController # Configuration for autocomplete suggestor config.autocomplete_enabled = true - config.autocomplete_path = 'suggest' + # config.autocomplete_path = 'suggest' + # This path is translating to the SOLR endpoint + # not the URL in the dropdown + # config.autocomplete_path = 'select' end def web_services @@ -341,4 +344,18 @@ def web_services end end end + + # def autosearch + # @suggestions = [ + # { + # 'term' => 'serious' + # } + # ] + # render 'autosearch', layout: false + # end + def suggest + @autoresults = search_service.repository.search(q: params[:q], fq: ['-gbl_suppressed_b: true'], rows: 20, + 'facet.field': %w[gbl_resourceClass_sm dct_spatial_sm]) + render 'autosearch', layout: false + end end diff --git a/app/views/catalog/autosearch.html.erb b/app/views/catalog/autosearch.html.erb new file mode 100644 index 00000000..8e94e212 --- /dev/null +++ b/app/views/catalog/autosearch.html.erb @@ -0,0 +1,35 @@ +<% + # Map documents by resource class, and also retrieve locations + data_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Datasets') } + map_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Maps') } + # Location facet values + location_facet = @autoresults['facet_counts']['facet_fields']['dct_spatial_sm'] + location_vals = location_facet.each_slice(2).to_a.map{ |lf| lf[0] } +%> +Locations +<% + l_num = location_vals.length > 3 ? 3: location_vals.length + location_vals.first(l_num).each do |loc| +%> + +<% + end +%> +Datasets +<% + d_num = data_results.length > 3 ? 3: data_results.length + data_results.first(d_num).each do |doc| +%> + +<% + end +%> +Maps +<% + m_num = map_results.length > 3 ? 3: map_results.length + map_results.first(m_num).each do |doc| +%> + +<% + end +%> \ No newline at end of file From 64f6cf1188acaf03f7d51bccfe07003f000707d7 Mon Sep 17 00:00:00 2001 From: Huda Khan Date: Tue, 6 Aug 2024 15:18:37 -0600 Subject: [PATCH 47/51] adding configuration options for testing and updates to display and suggest response model --- app/controllers/catalog_controller.rb | 18 ++++++--- .../concerns/blacklight/suggest/response.rb | 37 +++++++++++++++++++ app/views/catalog/autosearch.html.erb | 2 + app/views/catalog/suggest.html.erb | 36 ++++++++++++++++++ config/solr_configs/schema.xml | 11 ++++-- config/solr_configs/solrconfig.xml | 24 +++++++++++- 6 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 app/models/concerns/blacklight/suggest/response.rb create mode 100644 app/views/catalog/suggest.html.erb diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index d493434a..32f5e0ab 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -3,6 +3,7 @@ class CatalogController < ApplicationController include BlacklightRangeLimit::ControllerOverride include Blacklight::Catalog + include Blacklight::Searchable configure_blacklight do |config| # Ensures that JSON representations of Solr Documents can be retrieved using @@ -328,7 +329,7 @@ class CatalogController < ApplicationController # Configuration for autocomplete suggestor config.autocomplete_enabled = true - # config.autocomplete_path = 'suggest' + config.autocomplete_path = 'suggest' # This path is translating to the SOLR endpoint # not the URL in the dropdown # config.autocomplete_path = 'select' @@ -352,10 +353,15 @@ def web_services # } # ] # render 'autosearch', layout: false + # # end + # We do not need to override this if still using the suggestion service + # and the suggest.html.erb template. Leaving this here in case something + # needs to be changed with processing the results + # def suggest + # # @autoresults = search_service.repository.search(q: params[:q], fq: ['-gbl_suppressed_b: true'], rows: 20, + # # 'facet.field': %w[gbl_resourceClass_sm dct_spatial_sm]) + + # @suggestions = suggestions_service.suggestions + # render 'suggest', layout: false # end - def suggest - @autoresults = search_service.repository.search(q: params[:q], fq: ['-gbl_suppressed_b: true'], rows: 20, - 'facet.field': %w[gbl_resourceClass_sm dct_spatial_sm]) - render 'autosearch', layout: false - end end diff --git a/app/models/concerns/blacklight/suggest/response.rb b/app/models/concerns/blacklight/suggest/response.rb new file mode 100644 index 00000000..e626d8d7 --- /dev/null +++ b/app/models/concerns/blacklight/suggest/response.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module Blacklight + module Suggest + class Response + attr_reader :response, :request_params, :suggest_path, :suggester_name + + ## + # Creates a suggest response + # @param [RSolr::HashWithResponse] response + # @param [Hash] request_params + # @param [String] suggest_path + # @param [String] suggester_name + def initialize(response, request_params, suggest_path, suggester_name) + @response = response + @request_params = request_params + @suggest_path = suggest_path + @suggester_name = suggester_name + end + + ## + # Trys the suggester response to return suggestions if they are + # present + # @return [Array] + def suggestions + # (response.dig(suggest_path, suggester_name, request_params[:q], 'suggestions') || []).uniq + suggester_names = %w[spatialSuggester titleSuggester] + suggestion_results = {} + suggester_names.each do |suggester_name| + suggestion_results[suggester_name] = + (response.dig(suggest_path, suggester_name, request_params[:q], 'suggestions') || []).uniq + end + suggestion_results + end + end + end +end diff --git a/app/views/catalog/autosearch.html.erb b/app/views/catalog/autosearch.html.erb index 8e94e212..2ff5b856 100644 --- a/app/views/catalog/autosearch.html.erb +++ b/app/views/catalog/autosearch.html.erb @@ -1,4 +1,6 @@ <% + # We used this to sort the results from an actual search + # This file can be removed if we choose not to use the search option # Map documents by resource class, and also retrieve locations data_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Datasets') } map_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Maps') } diff --git a/app/views/catalog/suggest.html.erb b/app/views/catalog/suggest.html.erb new file mode 100644 index 00000000..a11227c0 --- /dev/null +++ b/app/views/catalog/suggest.html.erb @@ -0,0 +1,36 @@ +<% + spatial_results = @suggestions["spatialSuggester"] + title_results = @suggestions["titleSuggester"] + +# Map documents by resource class which is saved in payload + data_results = title_results.select { |s| s['payload'] == 'Datasets' } + map_results = title_results.select { |s| s['payload'] == 'Maps' } + +%> +<%= 'Locations' if spatial_results.length > 0 %> +<% + l_num = spatial_results.length > 3 ? 3: spatial_results.length + spatial_results.first(l_num).each do |loc| +%> + +<% + end +%> +<%= 'Datasets' if data_results.length > 0 %> +<% + d_num = data_results.length > 3 ? 3: data_results.length + data_results.first(d_num).each do |data_result| +%> + +<% + end +%> +<%= 'Maps' if map_results.length > 0 %> +<% + m_num = map_results.length > 3 ? 3: map_results.length + map_results.first(m_num).each do |map_result| +%> + +<% + end +%> \ No newline at end of file diff --git a/config/solr_configs/schema.xml b/config/solr_configs/schema.xml index c50dae5f..9f0aa95f 100644 --- a/config/solr_configs/schema.xml +++ b/config/solr_configs/schema.xml @@ -56,7 +56,7 @@ - + @@ -185,12 +185,17 @@ - + + + + + + diff --git a/config/solr_configs/solrconfig.xml b/config/solr_configs/solrconfig.xml index 8f41ae4b..9a84a861 100644 --- a/config/solr_configs/solrconfig.xml +++ b/config/solr_configs/solrconfig.xml @@ -212,13 +212,35 @@ true suggest + + + + + titleSuggester + DocumentDictionaryFactory + BlendedInfixLookupFactory + textSuggest + true + title_suggest + gbl_resourceClass_sm + + + + + spatialSuggester + FuzzyLookupFactory + textSuggest + true + spatial_suggest + true 5 - mySuggester + titleSuggester + spatialSuggester suggest From b7b29f6bb8bab67a15a102e6e2cca3caee3ab29e Mon Sep 17 00:00:00 2001 From: Huda Khan Date: Tue, 6 Aug 2024 15:23:27 -0600 Subject: [PATCH 48/51] handling higlighting display --- app/views/catalog/suggest.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/catalog/suggest.html.erb b/app/views/catalog/suggest.html.erb index a11227c0..f9c69b66 100644 --- a/app/views/catalog/suggest.html.erb +++ b/app/views/catalog/suggest.html.erb @@ -21,7 +21,7 @@ d_num = data_results.length > 3 ? 3: data_results.length data_results.first(d_num).each do |data_result| %> - + <% end %> @@ -30,7 +30,7 @@ m_num = map_results.length > 3 ? 3: map_results.length map_results.first(m_num).each do |map_result| %> - + <% end %> \ No newline at end of file From 0ec3f9e5e0eb89101f94dde7c047ab79c0b66982 Mon Sep 17 00:00:00 2001 From: Ed Summers Date: Sun, 11 Aug 2024 18:33:18 -0400 Subject: [PATCH 49/51] Adjust suggest configuration and behavior - return more 25 suggestions instead of 5 to possibly get a better mix of datasets and maps when using the titleSuggest dictionary. - remove the commented out search based suggest - move the splitting of datasets and maps out of the template and into the response class - switch the spatialSuggester from FuzzyLookupFactory to BlendedInfixLookupFactory to get the match highlighting - link results to search URLs (is there a better way to do this?) --- app/controllers/catalog_controller.rb | 25 +------- .../concerns/blacklight/suggest/response.rb | 16 ++--- app/views/catalog/autosearch.html.erb | 37 ------------ app/views/catalog/suggest.html.erb | 60 ++++++++----------- app/views/layouts/catalog_result.html.erb | 2 +- config/solr_configs/schema.xml | 9 --- config/solr_configs/solrconfig.xml | 17 +----- 7 files changed, 38 insertions(+), 128 deletions(-) delete mode 100644 app/views/catalog/autosearch.html.erb diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb index 32f5e0ab..59b935db 100644 --- a/app/controllers/catalog_controller.rb +++ b/app/controllers/catalog_controller.rb @@ -3,7 +3,6 @@ class CatalogController < ApplicationController include BlacklightRangeLimit::ControllerOverride include Blacklight::Catalog - include Blacklight::Searchable configure_blacklight do |config| # Ensures that JSON representations of Solr Documents can be retrieved using @@ -300,7 +299,7 @@ class CatalogController < ApplicationController # If there are more than this many search results, no spelling ("did you # mean") suggestion is offered. - config.spell_max = 5 + config.spell_max = 25 # Nav actions from Blacklight config.add_nav_action(:bookmark, partial: 'blacklight/nav/bookmark', if: :render_bookmarks_control?) @@ -330,9 +329,6 @@ class CatalogController < ApplicationController # Configuration for autocomplete suggestor config.autocomplete_enabled = true config.autocomplete_path = 'suggest' - # This path is translating to the SOLR endpoint - # not the URL in the dropdown - # config.autocomplete_path = 'select' end def web_services @@ -345,23 +341,4 @@ def web_services end end end - - # def autosearch - # @suggestions = [ - # { - # 'term' => 'serious' - # } - # ] - # render 'autosearch', layout: false - # # end - # We do not need to override this if still using the suggestion service - # and the suggest.html.erb template. Leaving this here in case something - # needs to be changed with processing the results - # def suggest - # # @autoresults = search_service.repository.search(q: params[:q], fq: ['-gbl_suppressed_b: true'], rows: 20, - # # 'facet.field': %w[gbl_resourceClass_sm dct_spatial_sm]) - - # @suggestions = suggestions_service.suggestions - # render 'suggest', layout: false - # end end diff --git a/app/models/concerns/blacklight/suggest/response.rb b/app/models/concerns/blacklight/suggest/response.rb index e626d8d7..12056f09 100644 --- a/app/models/concerns/blacklight/suggest/response.rb +++ b/app/models/concerns/blacklight/suggest/response.rb @@ -23,14 +23,14 @@ def initialize(response, request_params, suggest_path, suggester_name) # present # @return [Array] def suggestions - # (response.dig(suggest_path, suggester_name, request_params[:q], 'suggestions') || []).uniq - suggester_names = %w[spatialSuggester titleSuggester] - suggestion_results = {} - suggester_names.each do |suggester_name| - suggestion_results[suggester_name] = - (response.dig(suggest_path, suggester_name, request_params[:q], 'suggestions') || []).uniq - end - suggestion_results + locations = response.dig(suggest_path, 'spatialSuggester', request_params[:q], 'suggestions') + + # unpack the titles into datasets and maps using their payload value + titles = response.dig(suggest_path, 'titleSuggester', request_params[:q], 'suggestions') + datasets = titles.select { |s| s['payload'] == 'Datasets' } + maps = titles.select { |s| s['payload'] == 'Maps' } + + { locations: locations, datasets: datasets, maps: maps } end end end diff --git a/app/views/catalog/autosearch.html.erb b/app/views/catalog/autosearch.html.erb deleted file mode 100644 index 2ff5b856..00000000 --- a/app/views/catalog/autosearch.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<% - # We used this to sort the results from an actual search - # This file can be removed if we choose not to use the search option - # Map documents by resource class, and also retrieve locations - data_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Datasets') } - map_results = @autoresults.documents.select { |doc| doc['gbl_resourceClass_sm'].include?('Maps') } - # Location facet values - location_facet = @autoresults['facet_counts']['facet_fields']['dct_spatial_sm'] - location_vals = location_facet.each_slice(2).to_a.map{ |lf| lf[0] } -%> -Locations -<% - l_num = location_vals.length > 3 ? 3: location_vals.length - location_vals.first(l_num).each do |loc| -%> - -<% - end -%> -Datasets -<% - d_num = data_results.length > 3 ? 3: data_results.length - data_results.first(d_num).each do |doc| -%> - -<% - end -%> -Maps -<% - m_num = map_results.length > 3 ? 3: map_results.length - map_results.first(m_num).each do |doc| -%> - -<% - end -%> \ No newline at end of file diff --git a/app/views/catalog/suggest.html.erb b/app/views/catalog/suggest.html.erb index f9c69b66..920cfd53 100644 --- a/app/views/catalog/suggest.html.erb +++ b/app/views/catalog/suggest.html.erb @@ -1,36 +1,26 @@ -<% - spatial_results = @suggestions["spatialSuggester"] - title_results = @suggestions["titleSuggester"] +<% if @suggestions[:locations].length > 0 %> +
  • Locations
  • + <% @suggestions[:locations].first(3).each do |result| %> + + <% end %> +<% end %> -# Map documents by resource class which is saved in payload - data_results = title_results.select { |s| s['payload'] == 'Datasets' } - map_results = title_results.select { |s| s['payload'] == 'Maps' } - -%> -<%= 'Locations' if spatial_results.length > 0 %> -<% - l_num = spatial_results.length > 3 ? 3: spatial_results.length - spatial_results.first(l_num).each do |loc| -%> - -<% - end -%> -<%= 'Datasets' if data_results.length > 0 %> -<% - d_num = data_results.length > 3 ? 3: data_results.length - data_results.first(d_num).each do |data_result| -%> - -<% - end -%> -<%= 'Maps' if map_results.length > 0 %> -<% - m_num = map_results.length > 3 ? 3: map_results.length - map_results.first(m_num).each do |map_result| -%> - -<% - end -%> \ No newline at end of file +<% if @suggestions[:datasets].length > 0 %> +
  • Datasets
  • + <% @suggestions[:datasets].first(3).each do |result| %> + + <% end %> +<% end %> + +<% if @suggestions[:maps].length > 0 %> +
  • Maps
  • + <% @suggestions[:maps].first(3).each do |result| %> + + <% end %> +<% end %> diff --git a/app/views/layouts/catalog_result.html.erb b/app/views/layouts/catalog_result.html.erb index e81b3a5b..3cd7d857 100644 --- a/app/views/layouts/catalog_result.html.erb +++ b/app/views/layouts/catalog_result.html.erb @@ -17,4 +17,4 @@
    <% end %> -<%= render template: "layouts/blacklight/base" %> \ No newline at end of file +<%= render template: "layouts/blacklight/base" %> diff --git a/config/solr_configs/schema.xml b/config/solr_configs/schema.xml index 9f0aa95f..bc617dc6 100644 --- a/config/solr_configs/schema.xml +++ b/config/solr_configs/schema.xml @@ -184,15 +184,6 @@ - - - - diff --git a/config/solr_configs/solrconfig.xml b/config/solr_configs/solrconfig.xml index 9a84a861..6bac262a 100644 --- a/config/solr_configs/solrconfig.xml +++ b/config/solr_configs/solrconfig.xml @@ -205,16 +205,6 @@ - - mySuggester - FuzzyLookupFactory - textSuggest - true - suggest - - - - titleSuggester DocumentDictionaryFactory @@ -224,11 +214,10 @@ title_suggest gbl_resourceClass_sm - - spatialSuggester - FuzzyLookupFactory + DocumentDictionaryFactory + BlendedInfixLookupFactory textSuggest true spatial_suggest @@ -238,7 +227,7 @@ true - 5 + 25 titleSuggester spatialSuggester From 74e74a5895d639e43b2455e680f9ac6a75a5911a Mon Sep 17 00:00:00 2001 From: Huda Khan Date: Wed, 21 Aug 2024 11:03:18 -0600 Subject: [PATCH 50/51] using overloaded payload approach --- .../concerns/blacklight/suggest/response.rb | 27 ++++++++++++++++--- app/views/catalog/suggest.html.erb | 13 +++++++-- config/solr_configs/schema.xml | 1 + config/solr_configs/solrconfig.xml | 17 +++++++++--- 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/app/models/concerns/blacklight/suggest/response.rb b/app/models/concerns/blacklight/suggest/response.rb index 12056f09..a0df951b 100644 --- a/app/models/concerns/blacklight/suggest/response.rb +++ b/app/models/concerns/blacklight/suggest/response.rb @@ -24,13 +24,32 @@ def initialize(response, request_params, suggest_path, suggester_name) # @return [Array] def suggestions locations = response.dig(suggest_path, 'spatialSuggester', request_params[:q], 'suggestions') - # unpack the titles into datasets and maps using their payload value titles = response.dig(suggest_path, 'titleSuggester', request_params[:q], 'suggestions') - datasets = titles.select { |s| s['payload'] == 'Datasets' } - maps = titles.select { |s| s['payload'] == 'Maps' } + themes = response.dig(suggest_path, 'themeSuggester', request_params[:q], 'suggestions') + categorized_titles = categorize_titles(titles) + + { locations: locations, datasets: categorized_titles['datasets'], maps: categorized_titles['maps'], + themes: themes, full: response } + end + + def categorize_titles(titles) + datasets = [] + maps = [] + titles.each do |title| + payload = title['payload'] + payload_json = JSON.parse(payload) unless payload.empty? - { locations: locations, datasets: datasets, maps: maps } + id = payload_json['id'] + classes = payload_json['class'] + types = payload_json['type'] + title['id'] = id + title['classes'] = classes + title['types'] = types + datasets.push(title) if classes.include?('Datasets') + maps.push(title) if classes.include?('Maps') + end + { datasets: datasets, maps: maps }.with_indifferent_access end end end diff --git a/app/views/catalog/suggest.html.erb b/app/views/catalog/suggest.html.erb index 920cfd53..2a7e01d2 100644 --- a/app/views/catalog/suggest.html.erb +++ b/app/views/catalog/suggest.html.erb @@ -11,7 +11,7 @@
  • Datasets
  • <% @suggestions[:datasets].first(3).each do |result| %> <% end %> <% end %> @@ -20,7 +20,16 @@
  • Maps
  • <% @suggestions[:maps].first(3).each do |result| %> + <% end %> +<% end %> + +<% if @suggestions[:themes].length > 0 %> +
  • Themes
  • + <% @suggestions[:themes].first(3).each do |result| %> + <% end %> <% end %> diff --git a/config/solr_configs/schema.xml b/config/solr_configs/schema.xml index bc617dc6..a70284d4 100644 --- a/config/solr_configs/schema.xml +++ b/config/solr_configs/schema.xml @@ -187,6 +187,7 @@ + diff --git a/config/solr_configs/solrconfig.xml b/config/solr_configs/solrconfig.xml index 6bac262a..5615a3bf 100644 --- a/config/solr_configs/solrconfig.xml +++ b/config/solr_configs/solrconfig.xml @@ -205,23 +205,33 @@
    - + titleSuggester DocumentDictionaryFactory BlendedInfixLookupFactory textSuggest true title_suggest - gbl_resourceClass_sm + suggestinfo_s + + spatialSuggester - DocumentDictionaryFactory BlendedInfixLookupFactory + DocumentDictionaryFactory textSuggest true spatial_suggest + + themeSuggester + BlendedInfixLookupFactory + DocumentDictionaryFactory + textSuggest + true + theme_suggest + @@ -230,6 +240,7 @@ 25 titleSuggester spatialSuggester + themeSuggester suggest From c09bef65a709357ce5514d20f26c0c75ef88936e Mon Sep 17 00:00:00 2001 From: Huda Khan Date: Wed, 21 Aug 2024 13:01:57 -0600 Subject: [PATCH 51/51] truncating long suggestion strings --- app/views/catalog/suggest.html.erb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/views/catalog/suggest.html.erb b/app/views/catalog/suggest.html.erb index 2a7e01d2..2e4bf167 100644 --- a/app/views/catalog/suggest.html.erb +++ b/app/views/catalog/suggest.html.erb @@ -10,17 +10,21 @@ <% if @suggestions[:datasets].length > 0 %>
  • Datasets
  • <% @suggestions[:datasets].first(3).each do |result| %> - + <% display_term = result['term'] %> + <% display_term = display_term.length > 100 ? display_term[0..100].gsub(/\s\w+\s*$/, '...') : display_term %> + <% end %> <% end %> <% if @suggestions[:maps].length > 0 %>
  • Maps
  • <% @suggestions[:maps].first(3).each do |result| %> + <% display_term = result['term'] %> + <% display_term = display_term.length > 100 ? display_term[0..100].gsub(/\s\w+\s*$/, '...') : display_term %> <% end %> <% end %>