diff --git a/.gitignore b/.gitignore
index 464a2bf5..95ba36df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,7 +40,4 @@ blueprint/src/web.pdf
## Verso
/tutorial/.lake/
/tutorial/html/
-/website/.lake/
-/website/_site/
-/website/html/
/home_page/
diff --git a/README.md b/README.md
index 9bf2cd95..ad2a5b07 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
-Website: [https://remydegenne.github.io/lean-bandits/](https://remydegenne.github.io/lean-bandits/)
+Website: [https://leanmachinelearning.github.io/](https://leanmachinelearning.github.io/)
## Goals
@@ -24,7 +24,7 @@ Please see our [contribution guide](CONTRIBUTING.md) and [code of conduct](CODE_
For discussions, you can reach out to us on the [Lean prover Zulip chat](https://leanprover.zulipchat.com/).
-You can also see the [roadmap](https://remydegenne.github.io/lean-bandits/roadmap) for ideas on what to work on.
+You can also see the [roadmap](https://leanmachinelearning.github.io/roadmap) for ideas on what to work on.
## Current state of the library
diff --git a/build_all.sh b/build_all.sh
index 6520f3bf..153cc9e5 100755
--- a/build_all.sh
+++ b/build_all.sh
@@ -12,14 +12,6 @@ mkdir -p html/static
cp static_files/* html/static
cd ..
-# Build website
-cd website
-lake build
-rm -rf _site
-lake exe generate-site
-cd ..
-
# Copy outputs to home_page
mkdir -p home_page/tutorial
cp -r tutorial/html/* home_page/tutorial
-cp -r website/_site/* home_page/
diff --git a/tutorial/Manual/Front.lean b/tutorial/Manual/Front.lean
index fd391f89..e96bda93 100644
--- a/tutorial/Manual/Front.lean
+++ b/tutorial/Manual/Front.lean
@@ -16,7 +16,7 @@ authors := ["Rémy Degenne, Paulo Rauber"]
shortTitle := "Lean Machine Learning"
%%%
-These tutorial pages will guide you through using the Lean Machine Learning library.
+These tutorial pages will guide you through using the [Lean Machine Learning](https://leanmachinelearning.github.io) library.
{include 0 Manual.Pages.Installation}
diff --git a/website/Main.lean b/website/Main.lean
deleted file mode 100644
index 7dc67dd2..00000000
--- a/website/Main.lean
+++ /dev/null
@@ -1,94 +0,0 @@
-import VersoBlog
-
-import Site
-
-section
-open Verso Genre Blog Site Syntax
-
-open Output Html Template Theme in
-def theme : Theme := { Theme.default with
- primaryTemplate := do
- return {{
-
-
-
-
- "Lean Machine Learning"
-
-
-
-
-
- {{← builtinHeader }}
-
-
-
-
-
-
- {{← param "content" }}
-
-
-
-
-
-
- }}
- }
-
-def versoSite : Site := site Site.FrontPage /
- "roadmap" Site.Roadmap
- static "static" ← "static_files"
-
-def main (args : List String) : IO UInt32 := do
- blogMain theme versoSite (options := args)
diff --git a/website/Site.lean b/website/Site.lean
deleted file mode 100644
index 20b33dad..00000000
--- a/website/Site.lean
+++ /dev/null
@@ -1,3 +0,0 @@
-import Site.FrontPage
-import Site.Roadmap
-import Site.Meta
diff --git a/website/Site/FrontPage.lean b/website/Site/FrontPage.lean
deleted file mode 100644
index 40ee860a..00000000
--- a/website/Site/FrontPage.lean
+++ /dev/null
@@ -1,230 +0,0 @@
-import VersoBlog
-import Site.Meta
-
-open Verso Genre
-open Blog hiding lean
-open Site
-
-#doc (Page) "Lean Machine Learning" =>
-
-::::::htmlDiv (class := "hero")
-
-:::::htmlDiv (class := "hero-text")
-
-Lean Machine Learning
-
-The Lean library for machine learning research
-
-Lean Machine Learning is a carefully curated library of formalized definitions and theorems in machine learning theory, verified in [Lean](https://lean-lang.org). It provides a trusted foundation for researchers to explore and formalize machine learning algorithms with mathematical rigor.
-
-::::html a (class := "hero-btn primary") (href := "https://github.com/remydegenne/lean-bandits")
-:::html img (src := "/lean-bandits/static/arrow.svg") (alt := "") (width := "20") (height := "20")
-:::
-Get Started
-::::
-
-::::html a (class := "hero-btn secondary") (href := "tutorial")
-:::html img (src := "/lean-bandits/static/book.svg") (alt := "") (width := "20") (height := "20")
-:::
-Tutorials
-::::
-
-::::html a (class := "hero-btn secondary") (href := "docs")
-:::html img (src := "/lean-bandits/static/book.svg") (alt := "") (width := "20") (height := "20")
-:::
-Documentation
-::::
-
-:::::
-
-::::::
-
-:::::html div (class := "pillars") (id := "about")
-
-::::htmlDiv (class := "pillar")
-
-*Rigorous Formalization*
-
-A library of high quality, human-checked, general definitions of machine learning concepts and the main theorems about them. We develop a carefully curated common vocabulary for researchers and AI systems to build on.
-
-::::
-
-::::htmlDiv (class := "pillar")
-
-*Algorithms*
-
-Built for machine learning researchers. The library provides a framework for formalizing new algorithms and proving theoretical guarantees. It also provides executable implementations of machine learning algorithms, connected to formal specifications.
-
-::::
-
-::::htmlDiv (class := "pillar")
-
-*Community-Driven*
-
-Open source and collaborative. The library is built on top of Mathlib and we contribute to it.
-We welcome contributions of new algorithms, theorems, and improvements. Join discussions on Zulip or contribute on GitHub.
-
-::::
-
-:::::
-
-::::::html div (class := "builds") (id := "goals")
-
-*Goals & Features*
-
-Lean Machine Learning is building a comprehensive foundation for formalized machine learning theory. The library provides high-quality formalizations, essential theorems, and a trusted framework for machine learning research.
-You proved that your new algorithm converges at the optimal rate and your LLM formalized the proof.
-Lean checked the proof. But who checked the Lean definition of optimal rate? We did. Since your LLM is using a Lean Machine Learning definition, you can trust it proved the right thing.
-
-:::::htmlDiv (class := "build-cards")
-
-::::htmlDiv (class := "build-card")
-
-*Formalized Definitions*
-
-Rigorous definitions of machine learning concepts: algorithms, performance measures, etc. A common vocabulary for researchers and AI systems to build on.
-
-::::
-
-::::htmlDiv (class := "build-card")
-
-*Proven Theorems*
-
-Essential theorems in machine learning theory. Convergence guarantees, regret bounds, and foundational results in probability theory and optimization.
-
-::::
-
-::::htmlDiv (class := "build-card")
-
-*AI-Ready*
-
-A common vocabulary of formal definitions that can be used by AI systems to generate theorems about objects we care about and avoid misformalization errors.
-
-::::
-
-::::htmlDiv (class := "build-card")
-
-*Algorithmic Tools*
-
-A framework for defining and analyzing stochastic algorithms in Lean, and to connect formal specifications with executable implementations.
-
-::::
-
-::::htmlDiv (class := "build-card")
-
-*Documentation*
-
-Comprehensive documentation with examples and tutorials to guide users through the library and its applications.
-
-::::
-
-::::htmlDiv (class := "build-card")
-
-*Collaborative*
-
-Open source, collaborative, and integrated in the Lean ecosystem.
-We welcome contributions from the community.
-We build on top of Mathlib and contribute to it in return.
-
-::::
-
-:::::
-
-::::::
-
-::::::html div (id := "get-started") (class := "get-started")
-
-*Get Started*
-
-Learn more about Lean Machine Learning with the tutorials and documentation, or head over to GitHub to explore the code and contribute to the project.
-
-:::::htmlDiv (class := "cta-buttons")
-
-::::html a (class := "cta-btn primary") (href := "https://github.com/remydegenne/lean-bandits")
-:::html img (src := "/lean-bandits/static/arrow.svg") (alt := "") (width := "20") (height := "20")
-:::
-View on GitHub
-::::
-
-::::html a (class := "cta-btn secondary") (href := "tutorial")
-:::html img (src := "/lean-bandits/static/book.svg") (alt := "") (width := "20") (height := "20")
-:::
-Tutorials
-::::
-
-::::html a (class := "cta-btn secondary") (href := "docs")
-:::html img (src := "/lean-bandits/static/book.svg") (alt := "") (width := "20") (height := "20")
-:::
-Documentation
-::::
-
-::::html a (class := "cta-btn secondary") (href := "roadmap")
-:::html img (src := "/lean-bandits/static/book.svg") (alt := "") (width := "20") (height := "20")
-:::
-Roadmap
-::::
-
-::::html a (class := "cta-btn secondary") (href := "https://leanprover.zulipchat.com/")
-:::html img (src := "/lean-bandits/static/zulip.svg") (alt := "") (width := "20") (height := "20")
-:::
-Join Zulip
-::::
-
-:::::
-
-::::::
-
-:::::::html div (class := "sponsors") (id := "sponsors")
-
-*Sponsors and Partners*
-
-We are grateful for the support of the following organizations.
-
-::::::htmlDiv (class := "sponsor-cards")
-
-:::::htmlDiv (class := "sponsor-card")
-::::html a (href := "https://www.inria.fr/")
-:::html img (src := "/lean-bandits/static/Inria_logo_RGB.png") (alt := "Inria")
-:::
-::::
-Inria FORMAL exploratory action
-:::::
-
-::::::
-
-If you are interested in supporting Lean Machine Learning financially please reach out to Rémy Degenne at `remy [dot] degenne [at] inria [dot] fr` or on the Lean Zulip (preferred).
-
-:::::::
-
-
-::::::html div (class := "showcase") (id := "maintainers")
-
-*Maintainers*
-
-:::::htmlDiv (class := "showcase-cards")
-
-::::htmlDiv (class := "showcase-card reference")
-
-[*Rémy Degenne*](https://remydegenne.github.io/)
-
-Inria centre at the University of Lille
-
-:::html img (src := "https://remydegenne.github.io/images/avatar2.jpg") (alt := "Rémy Degenne") (style := "border-radius: 50%; width: 150px; height: 150px; object-fit: cover;")
-:::
-
-::::
-
-::::htmlDiv (class := "showcase-card reference")
-
-[*Paulo Rauber*](https://www.paulorauber.com/)
-
-Queen Mary University of London
-
-:::html img (src := "https://www.paulorauber.com/files/images/profile.jpg") (alt := "Paulo Rauber") (style := "border-radius: 50%; width: 150px; height: 150px; object-fit: cover;")
-:::
-
-::::
-
-:::::
-
-::::::
diff --git a/website/Site/Meta.lean b/website/Site/Meta.lean
deleted file mode 100644
index 51604d59..00000000
--- a/website/Site/Meta.lean
+++ /dev/null
@@ -1,31 +0,0 @@
-import VersoBlog
-
-open Verso Genre Blog Site Output Html Template Theme
-
-open Verso Doc Elab
-open Lean
-
-structure LightboxArgs where
- alt : String
- thumb : String
- full : String
-
-section
-open ArgParse
-variable [Monad m] [MonadError m]
-instance : FromArgs LightboxArgs m where
- fromArgs := LightboxArgs.mk <$>
- .named `alt .string false "Alt text" <*>
- .named `thumb .string false "Thumbnail URL" <*>
- .named `full .string false "Full URL"
-end
-
-open Verso Output Html in
-inline_component Inline.lightbox (alt thumb full : String) where
- toHtml _ _ _ _ := do
- return {{}}
-
-@[role]
-def lightbox : RoleExpanderOf LightboxArgs
- | { alt, thumb, full }, _ =>
- ``(Inline.lightbox $(quote alt) $(quote thumb) $(quote full) #[])
diff --git a/website/Site/Roadmap.lean b/website/Site/Roadmap.lean
deleted file mode 100644
index 86cbeee6..00000000
--- a/website/Site/Roadmap.lean
+++ /dev/null
@@ -1,99 +0,0 @@
-import VersoBlog
-import Site.Meta
-
-open Verso Genre
-open Blog hiding lean
-open Site
-
-#doc (Page) "Roadmap" =>
-
-::::::html div (class := "roadmap-page")
-
-:::::html div (class := "roadmap-header")
-
-*Roadmap*
-
-The development plan for Lean Machine Learning
-
-:::::
-
-:::::html div (class := "roadmap-section")
-
-*Vision*
-
-Lean Machine Learning provides a comprehensive library of formalized definitions and theorems in machine learning theory.
-It is a trusted foundation for formalization of machine learning research.
-As algorithms are central to machine learning, it provides tools to define and analyze stochastic algorithms in Lean, and to connect formal specifications with executable implementations.
-
-
-::::html div (class := "roadmap-subsection")
-
-*Key Features*
-
-- High quality, human-checked, general definitions of machine learning concepts
-- Tools to prove theoretical properties of machine learning algorithms
-- Executable implementations of machine learning algorithms, connected to formal specifications
-- Extensive documentation and tutorials to guide users through the library and its applications
-
-::::
-
-::::html div (class := "roadmap-subsection")
-
-*Impact and beneficiaries*
-
-- Researchers can formalize their new results, since the required concepts are available in the library
-- AI agents can prove new results or check papers without the risk of using an incorrectly formalized definition
-- Students and researchers can access and search a large and trusted knowledge base about machine learning
-
-::::
-
-:::::
-
-:::::html div (class := "roadmap-section")
-
-*Roadmap*
-
-We are currently in the early stages of development, with the core framework for defining and analyzing stochastic algorithms in place, as well as initial results about bandit algorithms.
-Since the project is open and collaborative, the direction we will take for the extension of the library of theoretical results will be guided by the needs of the contributors, but we aim to cover a broad range of topics in machine learning theory and algorithms.
-
-
-::::html div (class := "roadmap-subsection")
-
-*Year 1*
-
-- Library - theoretical foundations: concentration inequalities, decision theory, information theory related to testing
-- Library - online learning: bandits, prediction with expert advice, online convex optimization
-- Executable algorithms: define a probabilistic monad with do-notation, test it on the existing bandit algorithms, and connect it to the formal specifications of the algorithms
-- Documentation: comprehensive documentation of the existing algorithm framework and bandit results, and tutorials to get started with the library
-- AI readiness: demonstration of an AI formalization of a bandit or online learning paper using the library
-
-::::
-
-
-::::html div (class := "roadmap-subsection")
-
-*Year 2*
-
-- Library - statistical learning theory: PAC learning, Rademacher complexity, generalization bounds (PAC-Bayes)
-- Library - reinforcement learning: Markov decision processes, value iteration, policy gradient methods
-- Executable algorithms: have executable implementations of some online learning algorithms, on which we can run experiments and compare with the theoretical predictions
-- Documentation: comprehensive documentation of the new theoretical results and algorithms, with tutorials
-- Subject coverage and AI readiness: a folder with formalizations or reports on the feasibility of formalizing a wide array of papers from COLT/NeurIPS/ICML/ICLR using the library
-
-::::
-
-
-::::html div (class := "roadmap-subsection")
-
-*Year 3*
-
-- Library - deep learning: neural networks, backpropagation, generalization in deep learning
-- Library - advanced reinforcement learning: deep Q-learning, actor-critic methods, multi-agent RL
-- Executable algorithms: have executable implementations of deep learning and advanced RL algorithms, linked with theory
-- Subject coverage and AI readiness: several new papers formalized using the library, and a demonstration of an AI system generating a new theorem about a machine learning algorithm using the library
-
-::::
-
-:::::
-
-::::::
diff --git a/website/lake-manifest.json b/website/lake-manifest.json
deleted file mode 100644
index bd428155..00000000
--- a/website/lake-manifest.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{"version": "1.1.0",
- "packagesDir": ".lake/packages",
- "packages":
- [{"url": "https://github.com/leanprover/verso.git",
- "type": "git",
- "subDir": null,
- "scope": "",
- "rev": "372f82ee4e67c863cf473a9174a1a77e0bec74a2",
- "name": "verso",
- "manifestFile": "lake-manifest.json",
- "inputRev": "v4.28.0",
- "inherited": false,
- "configFile": "lakefile.lean"},
- {"url": "https://github.com/leanprover-community/plausible",
- "type": "git",
- "subDir": null,
- "scope": "",
- "rev": "55c8532eb21ec9f6d565d51d96b8ca50bd1fbef3",
- "name": "plausible",
- "manifestFile": "lake-manifest.json",
- "inputRev": "main",
- "inherited": true,
- "configFile": "lakefile.toml"},
- {"url": "https://github.com/acmepjz/md4lean",
- "type": "git",
- "subDir": null,
- "scope": "",
- "rev": "7e097e9a076d5fbe48aa39aceee871af0d011101",
- "name": "MD4Lean",
- "manifestFile": "lake-manifest.json",
- "inputRev": "main",
- "inherited": true,
- "configFile": "lakefile.lean"},
- {"url": "https://github.com/leanprover/subverso",
- "type": "git",
- "subDir": null,
- "scope": "",
- "rev": "4539e605ff834c35ecc0bcd0b7daec69163fd9f0",
- "name": "subverso",
- "manifestFile": "lake-manifest.json",
- "inputRev": "main",
- "inherited": true,
- "configFile": "lakefile.lean"}],
- "name": "«verso-website»",
- "lakeDir": ".lake"}
diff --git a/website/lakefile.toml b/website/lakefile.toml
deleted file mode 100644
index a708dd92..00000000
--- a/website/lakefile.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-name = "verso-website"
-version = "0.1.0"
-defaultTargets = ["Site", "generate-site"]
-
-[[require]]
-name = "verso"
-git = "https://github.com/leanprover/verso.git"
-rev = "v4.28.0"
-
-[[lean_lib]]
-name = "Site"
-
-[[lean_exe]]
-name = "generate-site"
-root = "Main"
diff --git a/website/lean-toolchain b/website/lean-toolchain
deleted file mode 100644
index 4c685fa0..00000000
--- a/website/lean-toolchain
+++ /dev/null
@@ -1 +0,0 @@
-leanprover/lean4:v4.28.0
diff --git a/website/static_files/Inria_logo_RGB.png b/website/static_files/Inria_logo_RGB.png
deleted file mode 100644
index 4f3485aa..00000000
Binary files a/website/static_files/Inria_logo_RGB.png and /dev/null differ
diff --git a/website/static_files/arrow.svg b/website/static_files/arrow.svg
deleted file mode 100644
index 31942d69..00000000
--- a/website/static_files/arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/website/static_files/book.svg b/website/static_files/book.svg
deleted file mode 100644
index 317c041e..00000000
--- a/website/static_files/book.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/website/static_files/favicon.svg b/website/static_files/favicon.svg
deleted file mode 100644
index ea497ae3..00000000
--- a/website/static_files/favicon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/website/static_files/github.svg b/website/static_files/github.svg
deleted file mode 100644
index 9f412c57..00000000
--- a/website/static_files/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/website/static_files/glightbox/LICENSE b/website/static_files/glightbox/LICENSE
deleted file mode 100644
index 43d17fbf..00000000
--- a/website/static_files/glightbox/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Biati Digital https://www.biati.digital
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/website/static_files/glightbox/css/glightbox.css b/website/static_files/glightbox/css/glightbox.css
deleted file mode 100644
index 120aa434..00000000
--- a/website/static_files/glightbox/css/glightbox.css
+++ /dev/null
@@ -1,939 +0,0 @@
-.glightbox-container {
- width: 100%;
- height: 100%;
- position: fixed;
- top: 0;
- left: 0;
- z-index: 999999 !important;
- overflow: hidden;
- -ms-touch-action: none;
- touch-action: none;
- -webkit-text-size-adjust: 100%;
- -moz-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
- text-size-adjust: 100%;
- -webkit-backface-visibility: hidden;
- backface-visibility: hidden;
- outline: none;
-}
-
-.glightbox-container.inactive {
- display: none;
-}
-
-.glightbox-container .gcontainer {
- position: relative;
- width: 100%;
- height: 100%;
- z-index: 9999;
- overflow: hidden;
-}
-
-.glightbox-container .gslider {
- -webkit-transition: -webkit-transform 0.4s ease;
- transition: -webkit-transform 0.4s ease;
- transition: transform 0.4s ease;
- transition: transform 0.4s ease, -webkit-transform 0.4s ease;
- height: 100%;
- left: 0;
- top: 0;
- width: 100%;
- position: relative;
- overflow: hidden;
- display: -webkit-box !important;
- display: -ms-flexbox !important;
- display: flex !important;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
-}
-
-.glightbox-container .gslide {
- width: 100%;
- position: absolute;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- opacity: 0;
-}
-
-.glightbox-container .gslide.current {
- opacity: 1;
- z-index: 99999;
- position: relative;
-}
-
-.glightbox-container .gslide.prev {
- opacity: 1;
- z-index: 9999;
-}
-
-.glightbox-container .gslide-inner-content {
- width: 100%;
-}
-
-.glightbox-container .ginner-container {
- position: relative;
- width: 100%;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
- max-width: 100%;
- margin: auto;
- height: 100vh;
-}
-
-.glightbox-container .ginner-container.gvideo-container {
- width: 100%;
-}
-
-.glightbox-container .ginner-container.desc-bottom,
- .glightbox-container .ginner-container.desc-top {
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
-.glightbox-container .ginner-container.desc-left,
- .glightbox-container .ginner-container.desc-right {
- max-width: 100% !important;
-}
-
-.gslide iframe,
- .gslide video {
- outline: none !important;
- border: none;
- min-height: 165px;
- -webkit-overflow-scrolling: touch;
- -ms-touch-action: auto;
- touch-action: auto;
-}
-
-.gslide:not(.current) {
- pointer-events: none;
-}
-
-.gslide-image {
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
-}
-
-.gslide-image img {
- max-height: 100vh;
- display: block;
- padding: 0;
- float: none;
- outline: none;
- border: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- max-width: 100vw;
- width: auto;
- height: auto;
- -o-object-fit: cover;
- object-fit: cover;
- -ms-touch-action: none;
- touch-action: none;
- margin: auto;
- min-width: 200px;
-}
-
-.desc-top .gslide-image img,
- .desc-bottom .gslide-image img {
- width: auto;
-}
-
-.desc-left .gslide-image img,
- .desc-right .gslide-image img {
- width: auto;
- max-width: 100%;
-}
-
-.gslide-image img.zoomable {
- position: relative;
-}
-
-.gslide-image img.dragging {
- cursor: -webkit-grabbing !important;
- cursor: grabbing !important;
- -webkit-transition: none;
- transition: none;
-}
-
-.gslide-video {
- position: relative;
- max-width: 100vh;
- width: 100% !important;
-}
-
-.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster {
- display: none;
-}
-
-.gslide-video .gvideo-wrapper {
- width: 100%;
- /* max-width: 160vmin; */
- margin: auto;
-}
-
-.gslide-video::before {
- content: '';
- position: absolute;
- width: 100%;
- height: 100%;
- background: rgba(255, 0, 0, 0.34);
- display: none;
-}
-
-.gslide-video.playing::before {
- display: none;
-}
-
-.gslide-video.fullscreen {
- max-width: 100% !important;
- min-width: 100%;
- height: 75vh;
-}
-
-.gslide-video.fullscreen video {
- max-width: 100% !important;
- width: 100% !important;
-}
-
-.gslide-inline {
- background: #fff;
- text-align: left;
- max-height: calc(100vh - 40px);
- overflow: auto;
- max-width: 100%;
- margin: auto;
-}
-
-.gslide-inline .ginlined-content {
- padding: 20px;
- width: 100%;
-}
-
-.gslide-inline .dragging {
- cursor: -webkit-grabbing !important;
- cursor: grabbing !important;
- -webkit-transition: none;
- transition: none;
-}
-
-.ginlined-content {
- overflow: auto;
- display: block !important;
- opacity: 1;
-}
-
-.gslide-external {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- width: 100%;
- min-width: 100%;
- background: #fff;
- padding: 0;
- overflow: auto;
- max-height: 75vh;
- height: 100%;
-}
-
-.gslide-media {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- width: auto;
-}
-
-.zoomed .gslide-media {
- -webkit-box-shadow: none !important;
- box-shadow: none !important;
-}
-
-.desc-top .gslide-media,
- .desc-bottom .gslide-media {
- margin: 0 auto;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
-.gslide-description {
- position: relative;
- -webkit-box-flex: 1;
- -ms-flex: 1 0 100%;
- flex: 1 0 100%;
-}
-
-.gslide-description.description-left,
- .gslide-description.description-right {
- max-width: 100%;
-}
-
-.gslide-description.description-bottom,
- .gslide-description.description-top {
- margin: 0 auto;
- width: 100%;
-}
-
-.gslide-description p {
- margin-bottom: 12px;
-}
-
-.gslide-description p:last-child {
- margin-bottom: 0;
-}
-
-.zoomed .gslide-description {
- display: none;
-}
-
-.glightbox-button-hidden {
- display: none;
-}
-
-
-/*
- * Description for mobiles
- * something like facebook does the description
- * for the photos
-*/
-
-.glightbox-mobile .glightbox-container .gslide-description {
- height: auto !important;
- width: 100%;
- position: absolute;
- bottom: 0;
- padding: 19px 11px;
- max-width: 100vw !important;
- -webkit-box-ordinal-group: 3 !important;
- -ms-flex-order: 2 !important;
- order: 2 !important;
- max-height: 78vh;
- overflow: auto !important;
- background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.75)));
- background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100%);
- -webkit-transition: opacity 0.3s linear;
- transition: opacity 0.3s linear;
- padding-bottom: 50px;
-}
-
-.glightbox-mobile .glightbox-container .gslide-title {
- color: #fff;
- font-size: 1em;
-}
-
-.glightbox-mobile .glightbox-container .gslide-desc {
- color: #a1a1a1;
-}
-
-.glightbox-mobile .glightbox-container .gslide-desc a {
- color: #fff;
- font-weight: bold;
-}
-
-.glightbox-mobile .glightbox-container .gslide-desc * {
- color: inherit;
-}
-
-.glightbox-mobile .glightbox-container .gslide-desc .desc-more {
- color: #fff;
- opacity: 0.4;
-}
-
-.gdesc-open .gslide-media {
- -webkit-transition: opacity 0.5s ease;
- transition: opacity 0.5s ease;
- opacity: 0.4;
-}
-
-.gdesc-open .gdesc-inner {
- padding-bottom: 30px;
-}
-
-.gdesc-closed .gslide-media {
- -webkit-transition: opacity 0.5s ease;
- transition: opacity 0.5s ease;
- opacity: 1;
-}
-
-.greset {
- -webkit-transition: all 0.3s ease;
- transition: all 0.3s ease;
-}
-
-.gabsolute {
- position: absolute;
-}
-
-.grelative {
- position: relative;
-}
-
-.glightbox-desc {
- display: none !important;
-}
-
-.glightbox-open {
- overflow: hidden;
-}
-
-.gloader {
- height: 25px;
- width: 25px;
- -webkit-animation: lightboxLoader 0.8s infinite linear;
- animation: lightboxLoader 0.8s infinite linear;
- border: 2px solid #fff;
- border-right-color: transparent;
- border-radius: 50%;
- position: absolute;
- display: block;
- z-index: 9999;
- left: 0;
- right: 0;
- margin: 0 auto;
- top: 47%;
-}
-
-.goverlay {
- width: 100%;
- height: calc(100vh + 1px);
- position: fixed;
- top: -1px;
- left: 0;
- background: #000;
- will-change: opacity;
-}
-
-.glightbox-mobile .goverlay {
- background: #000;
-}
-
-.gprev,
-.gnext,
-.gclose {
- z-index: 99999;
- cursor: pointer;
- width: 26px;
- height: 44px;
- border: none;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
-}
-
-.gprev svg,
-.gnext svg,
-.gclose svg {
- display: block;
- width: 25px;
- height: auto;
- margin: 0;
- padding: 0;
-}
-
-.gprev.disabled,
-.gnext.disabled,
-.gclose.disabled {
- opacity: 0.1;
-}
-
-.gprev .garrow,
-.gnext .garrow,
-.gclose .garrow {
- stroke: #fff;
-}
-
-.gbtn.focused {
- outline: 2px solid #0f3d81;
-}
-
-iframe.wait-autoplay {
- opacity: 0;
-}
-
-.glightbox-closing .gnext,
- .glightbox-closing .gprev,
- .glightbox-closing .gclose {
- opacity: 0 !important;
-}
-
-
-/*Skin */
-
-.glightbox-clean .gslide-description {
- background: #fff;
-}
-
-.glightbox-clean .gdesc-inner {
- padding: 22px 20px;
-}
-
-.glightbox-clean .gslide-title {
- font-size: 1em;
- font-weight: normal;
- font-family: arial;
- color: #000;
- margin-bottom: 19px;
- line-height: 1.4em;
-}
-
-.glightbox-clean .gslide-desc {
- font-size: 0.86em;
- margin-bottom: 0;
- font-family: arial;
- line-height: 1.4em;
-}
-
-.glightbox-clean .gslide-video {
- background: #000;
-}
-
-.glightbox-clean .gprev,
- .glightbox-clean .gnext,
- .glightbox-clean .gclose {
- background-color: rgba(0, 0, 0, 0.75);
- border-radius: 4px;
-}
-
-.glightbox-clean .gprev path,
-.glightbox-clean .gnext path,
-.glightbox-clean .gclose path {
- fill: #fff;
-}
-
-.glightbox-clean .gprev {
- position: absolute;
- top: -100%;
- left: 30px;
- width: 40px;
- height: 50px;
-}
-
-.glightbox-clean .gnext {
- position: absolute;
- top: -100%;
- right: 30px;
- width: 40px;
- height: 50px;
-}
-
-.glightbox-clean .gclose {
- width: 35px;
- height: 35px;
- top: 15px;
- right: 10px;
- position: absolute;
-}
-
-.glightbox-clean .gclose svg {
- width: 18px;
- height: auto;
-}
-
-.glightbox-clean .gclose:hover {
- opacity: 1;
-}
-
-
-/*CSS Animations*/
-
-.gfadeIn {
- -webkit-animation: gfadeIn 0.5s ease;
- animation: gfadeIn 0.5s ease;
-}
-
-.gfadeOut {
- -webkit-animation: gfadeOut 0.5s ease;
- animation: gfadeOut 0.5s ease;
-}
-
-.gslideOutLeft {
- -webkit-animation: gslideOutLeft 0.3s ease;
- animation: gslideOutLeft 0.3s ease;
-}
-
-.gslideInLeft {
- -webkit-animation: gslideInLeft 0.3s ease;
- animation: gslideInLeft 0.3s ease;
-}
-
-.gslideOutRight {
- -webkit-animation: gslideOutRight 0.3s ease;
- animation: gslideOutRight 0.3s ease;
-}
-
-.gslideInRight {
- -webkit-animation: gslideInRight 0.3s ease;
- animation: gslideInRight 0.3s ease;
-}
-
-.gzoomIn {
- -webkit-animation: gzoomIn 0.5s ease;
- animation: gzoomIn 0.5s ease;
-}
-
-.gzoomOut {
- -webkit-animation: gzoomOut 0.5s ease;
- animation: gzoomOut 0.5s ease;
-}
-
-@-webkit-keyframes lightboxLoader {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@keyframes lightboxLoader {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@-webkit-keyframes gfadeIn {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-
-@keyframes gfadeIn {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
-}
-
-@-webkit-keyframes gfadeOut {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
-}
-
-@keyframes gfadeOut {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
-}
-
-@-webkit-keyframes gslideInLeft {
- from {
- opacity: 0;
- -webkit-transform: translate3d(-60%, 0, 0);
- transform: translate3d(-60%, 0, 0);
- }
- to {
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- opacity: 1;
- }
-}
-
-@keyframes gslideInLeft {
- from {
- opacity: 0;
- -webkit-transform: translate3d(-60%, 0, 0);
- transform: translate3d(-60%, 0, 0);
- }
- to {
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- opacity: 1;
- }
-}
-
-@-webkit-keyframes gslideOutLeft {
- from {
- opacity: 1;
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- }
- to {
- -webkit-transform: translate3d(-60%, 0, 0);
- transform: translate3d(-60%, 0, 0);
- opacity: 0;
- visibility: hidden;
- }
-}
-
-@keyframes gslideOutLeft {
- from {
- opacity: 1;
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- }
- to {
- -webkit-transform: translate3d(-60%, 0, 0);
- transform: translate3d(-60%, 0, 0);
- opacity: 0;
- visibility: hidden;
- }
-}
-
-@-webkit-keyframes gslideInRight {
- from {
- opacity: 0;
- visibility: visible;
- -webkit-transform: translate3d(60%, 0, 0);
- transform: translate3d(60%, 0, 0);
- }
- to {
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- opacity: 1;
- }
-}
-
-@keyframes gslideInRight {
- from {
- opacity: 0;
- visibility: visible;
- -webkit-transform: translate3d(60%, 0, 0);
- transform: translate3d(60%, 0, 0);
- }
- to {
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- opacity: 1;
- }
-}
-
-@-webkit-keyframes gslideOutRight {
- from {
- opacity: 1;
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- }
- to {
- -webkit-transform: translate3d(60%, 0, 0);
- transform: translate3d(60%, 0, 0);
- opacity: 0;
- }
-}
-
-@keyframes gslideOutRight {
- from {
- opacity: 1;
- visibility: visible;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- }
- to {
- -webkit-transform: translate3d(60%, 0, 0);
- transform: translate3d(60%, 0, 0);
- opacity: 0;
- }
-}
-
-@-webkit-keyframes gzoomIn {
- from {
- opacity: 0;
- -webkit-transform: scale3d(0.3, 0.3, 0.3);
- transform: scale3d(0.3, 0.3, 0.3);
- }
- to {
- opacity: 1;
- }
-}
-
-@keyframes gzoomIn {
- from {
- opacity: 0;
- -webkit-transform: scale3d(0.3, 0.3, 0.3);
- transform: scale3d(0.3, 0.3, 0.3);
- }
- to {
- opacity: 1;
- }
-}
-
-@-webkit-keyframes gzoomOut {
- from {
- opacity: 1;
- }
- 50% {
- opacity: 0;
- -webkit-transform: scale3d(0.3, 0.3, 0.3);
- transform: scale3d(0.3, 0.3, 0.3);
- }
- to {
- opacity: 0;
- }
-}
-
-@keyframes gzoomOut {
- from {
- opacity: 1;
- }
- 50% {
- opacity: 0;
- -webkit-transform: scale3d(0.3, 0.3, 0.3);
- transform: scale3d(0.3, 0.3, 0.3);
- }
- to {
- opacity: 0;
- }
-}
-
-@media (min-width: 769px) {
- .glightbox-container .ginner-container {
- width: auto;
- height: auto;
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -ms-flex-direction: row;
- flex-direction: row;
- }
- .glightbox-container .ginner-container.desc-top .gslide-description {
- -webkit-box-ordinal-group: 1;
- -ms-flex-order: 0;
- order: 0;
- }
- .glightbox-container .ginner-container.desc-top .gslide-image,
- .glightbox-container .ginner-container.desc-top .gslide-image img {
- -webkit-box-ordinal-group: 2;
- -ms-flex-order: 1;
- order: 1;
- }
- .glightbox-container .ginner-container.desc-left .gslide-description {
- -webkit-box-ordinal-group: 1;
- -ms-flex-order: 0;
- order: 0;
- }
- .glightbox-container .ginner-container.desc-left .gslide-image {
- -webkit-box-ordinal-group: 2;
- -ms-flex-order: 1;
- order: 1;
- }
- .gslide-image img {
- max-height: 97vh;
- max-width: 100%;
- }
- .gslide-image img.zoomable {
- cursor: -webkit-zoom-in;
- cursor: zoom-in;
- }
- .zoomed .gslide-image img.zoomable {
- cursor: -webkit-grab;
- cursor: grab;
- }
- .gslide-inline {
- max-height: 95vh;
- }
- .gslide-external {
- max-height: 100vh;
- }
- .gslide-description.description-left,
- .gslide-description.description-right {
- max-width: 275px;
- }
- .glightbox-open {
- height: auto;
- }
- .goverlay {
- background: rgba(0, 0, 0, 0.92);
- }
- .glightbox-clean .gslide-media {
- -webkit-box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65);
- box-shadow: 1px 2px 9px 0px rgba(0, 0, 0, 0.65);
- }
- .glightbox-clean .description-left .gdesc-inner,
-.glightbox-clean .description-right .gdesc-inner {
- position: absolute;
- height: 100%;
- overflow-y: auto;
- }
- .glightbox-clean .gprev,
- .glightbox-clean .gnext,
- .glightbox-clean .gclose {
- background-color: rgba(0, 0, 0, 0.32);
- }
- .glightbox-clean .gprev:hover,
-.glightbox-clean .gnext:hover,
-.glightbox-clean .gclose:hover {
- background-color: rgba(0, 0, 0, 0.7);
- }
- .glightbox-clean .gprev {
- top: 45%;
- }
- .glightbox-clean .gnext {
- top: 45%;
- }
-}
-
-@media (min-width: 992px) {
- .glightbox-clean .gclose {
- opacity: 0.7;
- right: 20px;
- }
-}
-
-@media screen and (max-height: 420px) {
- .goverlay {
- background: #000;
- }
-}
diff --git a/website/static_files/glightbox/css/glightbox.min.css b/website/static_files/glightbox/css/glightbox.min.css
deleted file mode 100644
index f3f66a87..00000000
--- a/website/static_files/glightbox/css/glightbox.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.glightbox-container{width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999!important;overflow:hidden;-ms-touch-action:none;touch-action:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0}.glightbox-container.inactive{display:none}.glightbox-container .gcontainer{position:relative;width:100%;height:100%;z-index:9999;overflow:hidden}.glightbox-container .gslider{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease,-webkit-transform .4s ease;height:100%;left:0;top:0;width:100%;position:relative;overflow:hidden;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.glightbox-container .gslide{width:100%;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0}.glightbox-container .gslide.current{opacity:1;z-index:99999;position:relative}.glightbox-container .gslide.prev{opacity:1;z-index:9999}.glightbox-container .gslide-inner-content{width:100%}.glightbox-container .ginner-container{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;margin:auto;height:100vh}.glightbox-container .ginner-container.gvideo-container{width:100%}.glightbox-container .ginner-container.desc-bottom,.glightbox-container .ginner-container.desc-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.glightbox-container .ginner-container.desc-left,.glightbox-container .ginner-container.desc-right{max-width:100%!important}.gslide iframe,.gslide video{outline:0!important;border:none;min-height:165px;-webkit-overflow-scrolling:touch;-ms-touch-action:auto;touch-action:auto}.gslide:not(.current){pointer-events:none}.gslide-image{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gslide-image img{max-height:100vh;display:block;padding:0;float:none;outline:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100vw;width:auto;height:auto;-o-object-fit:cover;object-fit:cover;-ms-touch-action:none;touch-action:none;margin:auto;min-width:200px}.desc-bottom .gslide-image img,.desc-top .gslide-image img{width:auto}.desc-left .gslide-image img,.desc-right .gslide-image img{width:auto;max-width:100%}.gslide-image img.zoomable{position:relative}.gslide-image img.dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.gslide-video{position:relative;max-width:100vh;width:100%!important}.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster{display:none}.gslide-video .gvideo-wrapper{width:100%;margin:auto}.gslide-video::before{content:'';position:absolute;width:100%;height:100%;background:rgba(255,0,0,.34);display:none}.gslide-video.playing::before{display:none}.gslide-video.fullscreen{max-width:100%!important;min-width:100%;height:75vh}.gslide-video.fullscreen video{max-width:100%!important;width:100%!important}.gslide-inline{background:#fff;text-align:left;max-height:calc(100vh - 40px);overflow:auto;max-width:100%;margin:auto}.gslide-inline .ginlined-content{padding:20px;width:100%}.gslide-inline .dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.ginlined-content{overflow:auto;display:block!important;opacity:1}.gslide-external{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:100%;background:#fff;padding:0;overflow:auto;max-height:75vh;height:100%}.gslide-media{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.zoomed .gslide-media{-webkit-box-shadow:none!important;box-shadow:none!important}.desc-bottom .gslide-media,.desc-top .gslide-media{margin:0 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gslide-description{position:relative;-webkit-box-flex:1;-ms-flex:1 0 100%;flex:1 0 100%}.gslide-description.description-left,.gslide-description.description-right{max-width:100%}.gslide-description.description-bottom,.gslide-description.description-top{margin:0 auto;width:100%}.gslide-description p{margin-bottom:12px}.gslide-description p:last-child{margin-bottom:0}.zoomed .gslide-description{display:none}.glightbox-button-hidden{display:none}.glightbox-mobile .glightbox-container .gslide-description{height:auto!important;width:100%;position:absolute;bottom:0;padding:19px 11px;max-width:100vw!important;-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;max-height:78vh;overflow:auto!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.75)));background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.75) 100%);-webkit-transition:opacity .3s linear;transition:opacity .3s linear;padding-bottom:50px}.glightbox-mobile .glightbox-container .gslide-title{color:#fff;font-size:1em}.glightbox-mobile .glightbox-container .gslide-desc{color:#a1a1a1}.glightbox-mobile .glightbox-container .gslide-desc a{color:#fff;font-weight:700}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit}.glightbox-mobile .glightbox-container .gslide-desc .desc-more{color:#fff;opacity:.4}.gdesc-open .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:.4}.gdesc-open .gdesc-inner{padding-bottom:30px}.gdesc-closed .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:1}.greset{-webkit-transition:all .3s ease;transition:all .3s ease}.gabsolute{position:absolute}.grelative{position:relative}.glightbox-desc{display:none!important}.glightbox-open{overflow:hidden}.gloader{height:25px;width:25px;-webkit-animation:lightboxLoader .8s infinite linear;animation:lightboxLoader .8s infinite linear;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:absolute;display:block;z-index:9999;left:0;right:0;margin:0 auto;top:47%}.goverlay{width:100%;height:calc(100vh + 1px);position:fixed;top:-1px;left:0;background:#000;will-change:opacity}.glightbox-mobile .goverlay{background:#000}.gclose,.gnext,.gprev{z-index:99999;cursor:pointer;width:26px;height:44px;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gclose svg,.gnext svg,.gprev svg{display:block;width:25px;height:auto;margin:0;padding:0}.gclose.disabled,.gnext.disabled,.gprev.disabled{opacity:.1}.gclose .garrow,.gnext .garrow,.gprev .garrow{stroke:#fff}.gbtn.focused{outline:2px solid #0f3d81}iframe.wait-autoplay{opacity:0}.glightbox-closing .gclose,.glightbox-closing .gnext,.glightbox-closing .gprev{opacity:0!important}.glightbox-clean .gslide-description{background:#fff}.glightbox-clean .gdesc-inner{padding:22px 20px}.glightbox-clean .gslide-title{font-size:1em;font-weight:400;font-family:arial;color:#000;margin-bottom:19px;line-height:1.4em}.glightbox-clean .gslide-desc{font-size:.86em;margin-bottom:0;font-family:arial;line-height:1.4em}.glightbox-clean .gslide-video{background:#000}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.75);border-radius:4px}.glightbox-clean .gclose path,.glightbox-clean .gnext path,.glightbox-clean .gprev path{fill:#fff}.glightbox-clean .gprev{position:absolute;top:-100%;left:30px;width:40px;height:50px}.glightbox-clean .gnext{position:absolute;top:-100%;right:30px;width:40px;height:50px}.glightbox-clean .gclose{width:35px;height:35px;top:15px;right:10px;position:absolute}.glightbox-clean .gclose svg{width:18px;height:auto}.glightbox-clean .gclose:hover{opacity:1}.gfadeIn{-webkit-animation:gfadeIn .5s ease;animation:gfadeIn .5s ease}.gfadeOut{-webkit-animation:gfadeOut .5s ease;animation:gfadeOut .5s ease}.gslideOutLeft{-webkit-animation:gslideOutLeft .3s ease;animation:gslideOutLeft .3s ease}.gslideInLeft{-webkit-animation:gslideInLeft .3s ease;animation:gslideInLeft .3s ease}.gslideOutRight{-webkit-animation:gslideOutRight .3s ease;animation:gslideOutRight .3s ease}.gslideInRight{-webkit-animation:gslideInRight .3s ease;animation:gslideInRight .3s ease}.gzoomIn{-webkit-animation:gzoomIn .5s ease;animation:gzoomIn .5s ease}.gzoomOut{-webkit-animation:gzoomOut .5s ease;animation:gzoomOut .5s ease}@-webkit-keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes gfadeIn{from{opacity:0}to{opacity:1}}@keyframes gfadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes gfadeOut{from{opacity:1}to{opacity:0}}@keyframes gfadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@-webkit-keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@-webkit-keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@-webkit-keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@media (min-width:769px){.glightbox-container .ginner-container{width:auto;height:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.glightbox-container .ginner-container.desc-top .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-top .gslide-image,.glightbox-container .ginner-container.desc-top .gslide-image img{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.glightbox-container .ginner-container.desc-left .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-left .gslide-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.gslide-image img{max-height:97vh;max-width:100%}.gslide-image img.zoomable{cursor:-webkit-zoom-in;cursor:zoom-in}.zoomed .gslide-image img.zoomable{cursor:-webkit-grab;cursor:grab}.gslide-inline{max-height:95vh}.gslide-external{max-height:100vh}.gslide-description.description-left,.gslide-description.description-right{max-width:275px}.glightbox-open{height:auto}.goverlay{background:rgba(0,0,0,.92)}.glightbox-clean .gslide-media{-webkit-box-shadow:1px 2px 9px 0 rgba(0,0,0,.65);box-shadow:1px 2px 9px 0 rgba(0,0,0,.65)}.glightbox-clean .description-left .gdesc-inner,.glightbox-clean .description-right .gdesc-inner{position:absolute;height:100%;overflow-y:auto}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.32)}.glightbox-clean .gclose:hover,.glightbox-clean .gnext:hover,.glightbox-clean .gprev:hover{background-color:rgba(0,0,0,.7)}.glightbox-clean .gprev{top:45%}.glightbox-clean .gnext{top:45%}}@media (min-width:992px){.glightbox-clean .gclose{opacity:.7;right:20px}}@media screen and (max-height:420px){.goverlay{background:#000}}
diff --git a/website/static_files/glightbox/js/glightbox.js b/website/static_files/glightbox/js/glightbox.js
deleted file mode 100644
index 678f7cb9..00000000
--- a/website/static_files/glightbox/js/glightbox.js
+++ /dev/null
@@ -1,3087 +0,0 @@
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global = global || self, global.GLightbox = factory());
-}(this, (function () { 'use strict';
-
- function _classCallCheck(a, n) {
- if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
- }
- function _defineProperties(e, r) {
- for (var t = 0; t < r.length; t++) {
- var o = r[t];
- o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
- }
- }
- function _createClass(e, r, t) {
- return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
- writable: !1
- }), e;
- }
- function _toPrimitive(t, r) {
- if ("object" != typeof t || !t) return t;
- var e = t[Symbol.toPrimitive];
- if (void 0 !== e) {
- var i = e.call(t, r || "default");
- if ("object" != typeof i) return i;
- throw new TypeError("@@toPrimitive must return a primitive value.");
- }
- return ("string" === r ? String : Number)(t);
- }
- function _toPropertyKey(t) {
- var i = _toPrimitive(t, "string");
- return "symbol" == typeof i ? i : i + "";
- }
- function _typeof(o) {
- "@babel/helpers - typeof";
-
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
- return typeof o;
- } : function (o) {
- return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
- }, _typeof(o);
- }
-
- var uid = Date.now();
- function extend() {
- var extended = {};
- var deep = true;
- var i = 0;
- var length = arguments.length;
- if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {
- deep = arguments[0];
- i++;
- }
- var merge = function merge(obj) {
- for (var prop in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, prop)) {
- if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {
- extended[prop] = extend(true, extended[prop], obj[prop]);
- } else {
- extended[prop] = obj[prop];
- }
- }
- }
- };
- for (; i < length; i++) {
- var obj = arguments[i];
- merge(obj);
- }
- return extended;
- }
- function each(collection, callback) {
- if (isNode(collection) || collection === window || collection === document) {
- collection = [collection];
- }
- if (!isArrayLike(collection) && !isObject(collection)) {
- collection = [collection];
- }
- if (size(collection) == 0) {
- return;
- }
- if (isArrayLike(collection) && !isObject(collection)) {
- var l = collection.length,
- i = 0;
- for (; i < l; i++) {
- if (callback.call(collection[i], collection[i], i, collection) === false) {
- break;
- }
- }
- } else if (isObject(collection)) {
- for (var key in collection) {
- if (has(collection, key)) {
- if (callback.call(collection[key], collection[key], key, collection) === false) {
- break;
- }
- }
- }
- }
- }
- function getNodeEvents(node) {
- var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
- var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
- var cache = node[uid] = node[uid] || [];
- var data = {
- all: cache,
- evt: null,
- found: null
- };
- if (name && fn && size(cache) > 0) {
- each(cache, function (cl, i) {
- if (cl.eventName == name && cl.fn.toString() == fn.toString()) {
- data.found = true;
- data.evt = i;
- return false;
- }
- });
- }
- return data;
- }
- function addEvent(eventName) {
- var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
- onElement = _ref.onElement,
- withCallback = _ref.withCallback,
- _ref$avoidDuplicate = _ref.avoidDuplicate,
- avoidDuplicate = _ref$avoidDuplicate === void 0 ? true : _ref$avoidDuplicate,
- _ref$once = _ref.once,
- once = _ref$once === void 0 ? false : _ref$once,
- _ref$useCapture = _ref.useCapture,
- useCapture = _ref$useCapture === void 0 ? false : _ref$useCapture;
- var thisArg = arguments.length > 2 ? arguments[2] : undefined;
- var element = onElement || [];
- if (isString(element)) {
- element = document.querySelectorAll(element);
- }
- function handler(event) {
- if (isFunction(withCallback)) {
- withCallback.call(thisArg, event, this);
- }
- if (once) {
- handler.destroy();
- }
- }
- handler.destroy = function () {
- each(element, function (el) {
- var events = getNodeEvents(el, eventName, handler);
- if (events.found) {
- events.all.splice(events.evt, 1);
- }
- if (el.removeEventListener) {
- el.removeEventListener(eventName, handler, useCapture);
- }
- });
- };
- each(element, function (el) {
- var events = getNodeEvents(el, eventName, handler);
- if (el.addEventListener && avoidDuplicate && !events.found || !avoidDuplicate) {
- el.addEventListener(eventName, handler, useCapture);
- events.all.push({
- eventName: eventName,
- fn: handler
- });
- }
- });
- return handler;
- }
- function addClass(node, name) {
- each(name.split(' '), function (cl) {
- return node.classList.add(cl);
- });
- }
- function removeClass(node, name) {
- each(name.split(' '), function (cl) {
- return node.classList.remove(cl);
- });
- }
- function hasClass(node, name) {
- return node.classList.contains(name);
- }
- function closest(elem, selector) {
- while (elem !== document.body) {
- elem = elem.parentElement;
- if (!elem) {
- return false;
- }
- var matches = typeof elem.matches == 'function' ? elem.matches(selector) : elem.msMatchesSelector(selector);
- if (matches) {
- return elem;
- }
- }
- }
- function animateElement(element) {
- var animation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
- if (!element || animation === '') {
- return false;
- }
- if (animation === 'none') {
- if (isFunction(callback)) {
- callback();
- }
- return false;
- }
- var animationEnd = whichAnimationEvent();
- var animationNames = animation.split(' ');
- each(animationNames, function (name) {
- addClass(element, 'g' + name);
- });
- addEvent(animationEnd, {
- onElement: element,
- avoidDuplicate: false,
- once: true,
- withCallback: function withCallback(event, target) {
- each(animationNames, function (name) {
- removeClass(target, 'g' + name);
- });
- if (isFunction(callback)) {
- callback();
- }
- }
- });
- }
- function cssTransform(node) {
- var translate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- if (translate === '') {
- node.style.webkitTransform = '';
- node.style.MozTransform = '';
- node.style.msTransform = '';
- node.style.OTransform = '';
- node.style.transform = '';
- return false;
- }
- node.style.webkitTransform = translate;
- node.style.MozTransform = translate;
- node.style.msTransform = translate;
- node.style.OTransform = translate;
- node.style.transform = translate;
- }
- function show(element) {
- element.style.display = 'block';
- }
- function hide(element) {
- element.style.display = 'none';
- }
- function createHTML(htmlStr) {
- var frag = document.createDocumentFragment(),
- temp = document.createElement('div');
- temp.innerHTML = htmlStr;
- while (temp.firstChild) {
- frag.appendChild(temp.firstChild);
- }
- return frag;
- }
- function windowSize() {
- return {
- width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
- height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
- };
- }
- function whichAnimationEvent() {
- var t,
- el = document.createElement('fakeelement');
- var animations = {
- animation: 'animationend',
- OAnimation: 'oAnimationEnd',
- MozAnimation: 'animationend',
- WebkitAnimation: 'webkitAnimationEnd'
- };
- for (t in animations) {
- if (el.style[t] !== undefined) {
- return animations[t];
- }
- }
- }
- function whichTransitionEvent() {
- var t,
- el = document.createElement('fakeelement');
- var transitions = {
- transition: 'transitionend',
- OTransition: 'oTransitionEnd',
- MozTransition: 'transitionend',
- WebkitTransition: 'webkitTransitionEnd'
- };
- for (t in transitions) {
- if (el.style[t] !== undefined) {
- return transitions[t];
- }
- }
- }
- function createIframe(config) {
- var url = config.url,
- allow = config.allow,
- callback = config.callback,
- appendTo = config.appendTo;
- var iframe = document.createElement('iframe');
- iframe.className = 'vimeo-video gvideo';
- iframe.src = url;
- iframe.style.width = '100%';
- iframe.style.height = '100%';
- if (allow) {
- iframe.setAttribute('allow', allow);
- }
- iframe.onload = function () {
- iframe.onload = null;
- addClass(iframe, 'node-ready');
- if (isFunction(callback)) {
- callback();
- }
- };
- if (appendTo) {
- appendTo.appendChild(iframe);
- }
- return iframe;
- }
- function waitUntil(check, onComplete, delay, timeout) {
- if (check()) {
- onComplete();
- return;
- }
- if (!delay) {
- delay = 100;
- }
- var timeoutPointer;
- var intervalPointer = setInterval(function () {
- if (!check()) {
- return;
- }
- clearInterval(intervalPointer);
- if (timeoutPointer) {
- clearTimeout(timeoutPointer);
- }
- onComplete();
- }, delay);
- if (timeout) {
- timeoutPointer = setTimeout(function () {
- clearInterval(intervalPointer);
- }, timeout);
- }
- }
- function injectAssets(url, waitFor, callback) {
- if (isNil(url)) {
- console.error('Inject assets error');
- return;
- }
- if (isFunction(waitFor)) {
- callback = waitFor;
- waitFor = false;
- }
- if (isString(waitFor) && waitFor in window) {
- if (isFunction(callback)) {
- callback();
- }
- return;
- }
- var found;
- if (url.indexOf('.css') !== -1) {
- found = document.querySelectorAll('link[href="' + url + '"]');
- if (found && found.length > 0) {
- if (isFunction(callback)) {
- callback();
- }
- return;
- }
- var head = document.getElementsByTagName('head')[0];
- var headStyles = head.querySelectorAll('link[rel="stylesheet"]');
- var link = document.createElement('link');
- link.rel = 'stylesheet';
- link.type = 'text/css';
- link.href = url;
- link.media = 'all';
- if (headStyles) {
- head.insertBefore(link, headStyles[0]);
- } else {
- head.appendChild(link);
- }
- if (isFunction(callback)) {
- callback();
- }
- return;
- }
- found = document.querySelectorAll('script[src="' + url + '"]');
- if (found && found.length > 0) {
- if (isFunction(callback)) {
- if (isString(waitFor)) {
- waitUntil(function () {
- return typeof window[waitFor] !== 'undefined';
- }, function () {
- callback();
- });
- return false;
- }
- callback();
- }
- return;
- }
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.src = url;
- script.onload = function () {
- if (isFunction(callback)) {
- if (isString(waitFor)) {
- waitUntil(function () {
- return typeof window[waitFor] !== 'undefined';
- }, function () {
- callback();
- });
- return false;
- }
- callback();
- }
- };
- document.body.appendChild(script);
- }
- function isMobile() {
- return 'navigator' in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i);
- }
- function isTouch() {
- return isMobile() !== null || document.createTouch !== undefined || 'ontouchstart' in window || 'onmsgesturechange' in window || navigator.msMaxTouchPoints;
- }
- function isFunction(f) {
- return typeof f === 'function';
- }
- function isString(s) {
- return typeof s === 'string';
- }
- function isNode(el) {
- return !!(el && el.nodeType && el.nodeType == 1);
- }
- function isArray(ar) {
- return Array.isArray(ar);
- }
- function isArrayLike(ar) {
- return ar && ar.length && isFinite(ar.length);
- }
- function isObject(o) {
- var type = _typeof(o);
- return type === 'object' && o != null && !isFunction(o) && !isArray(o);
- }
- function isNil(o) {
- return o == null;
- }
- function has(obj, key) {
- return obj !== null && hasOwnProperty.call(obj, key);
- }
- function size(o) {
- if (isObject(o)) {
- if (o.keys) {
- return o.keys().length;
- }
- var l = 0;
- for (var k in o) {
- if (has(o, k)) {
- l++;
- }
- }
- return l;
- } else {
- return o.length;
- }
- }
- function isNumber(n) {
- return !isNaN(parseFloat(n)) && isFinite(n);
- }
-
- function getNextFocusElement() {
- var current = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1;
- var btns = document.querySelectorAll('.gbtn[data-taborder]:not(.disabled)');
- if (!btns.length) {
- return false;
- }
- if (btns.length == 1) {
- return btns[0];
- }
- if (typeof current == 'string') {
- current = parseInt(current);
- }
- var orders = [];
- each(btns, function (btn) {
- orders.push(btn.getAttribute('data-taborder'));
- });
- var highestOrder = Math.max.apply(Math, orders.map(function (order) {
- return parseInt(order);
- }));
- var newIndex = current < 0 ? 1 : current + 1;
- if (newIndex > highestOrder) {
- newIndex = '1';
- }
- var nextOrders = orders.filter(function (el) {
- return el >= parseInt(newIndex);
- });
- var nextFocus = nextOrders.sort()[0];
- return document.querySelector(".gbtn[data-taborder=\"".concat(nextFocus, "\"]"));
- }
- function keyboardNavigation(instance) {
- if (instance.events.hasOwnProperty('keyboard')) {
- return false;
- }
- instance.events['keyboard'] = addEvent('keydown', {
- onElement: window,
- withCallback: function withCallback(event, target) {
- event = event || window.event;
- var key = event.keyCode;
- if (key == 9) {
- var focusedButton = document.querySelector('.gbtn.focused');
- if (!focusedButton) {
- var activeElement = document.activeElement && document.activeElement.nodeName ? document.activeElement.nodeName.toLocaleLowerCase() : false;
- if (activeElement == 'input' || activeElement == 'textarea' || activeElement == 'button') {
- return;
- }
- }
- event.preventDefault();
- var btns = document.querySelectorAll('.gbtn[data-taborder]');
- if (!btns || btns.length <= 0) {
- return;
- }
- if (!focusedButton) {
- var first = getNextFocusElement();
- if (first) {
- first.focus();
- addClass(first, 'focused');
- }
- return;
- }
- var currentFocusOrder = focusedButton.getAttribute('data-taborder');
- var nextFocus = getNextFocusElement(currentFocusOrder);
- removeClass(focusedButton, 'focused');
- if (nextFocus) {
- nextFocus.focus();
- addClass(nextFocus, 'focused');
- }
- }
- if (key == 39) {
- instance.nextSlide();
- }
- if (key == 37) {
- instance.prevSlide();
- }
- if (key == 27) {
- instance.close();
- }
- }
- });
- }
-
- var ZoomImages = function () {
- function ZoomImages(el, slide) {
- var _this = this;
- var onclose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
- _classCallCheck(this, ZoomImages);
- this.img = el;
- this.slide = slide;
- this.onclose = onclose;
- if (this.img.setZoomEvents) {
- return false;
- }
- this.active = false;
- this.zoomedIn = false;
- this.dragging = false;
- this.currentX = null;
- this.currentY = null;
- this.initialX = null;
- this.initialY = null;
- this.xOffset = 0;
- this.yOffset = 0;
- this.img.addEventListener('mousedown', function (e) {
- return _this.dragStart(e);
- }, false);
- this.img.addEventListener('mouseup', function (e) {
- return _this.dragEnd(e);
- }, false);
- this.img.addEventListener('mousemove', function (e) {
- return _this.drag(e);
- }, false);
- this.img.addEventListener('click', function (e) {
- if (_this.slide.classList.contains('dragging-nav')) {
- _this.zoomOut();
- return false;
- }
- if (!_this.zoomedIn) {
- return _this.zoomIn();
- }
- if (_this.zoomedIn && !_this.dragging) {
- _this.zoomOut();
- }
- }, false);
- this.img.setZoomEvents = true;
- }
- return _createClass(ZoomImages, [{
- key: "zoomIn",
- value: function zoomIn() {
- var winWidth = this.widowWidth();
- if (this.zoomedIn || winWidth <= 768) {
- return;
- }
- var img = this.img;
- img.setAttribute('data-style', img.getAttribute('style'));
- img.style.maxWidth = img.naturalWidth + 'px';
- img.style.maxHeight = img.naturalHeight + 'px';
- if (img.naturalWidth > winWidth) {
- var centerX = winWidth / 2 - img.naturalWidth / 2;
- this.setTranslate(this.img.parentNode, centerX, 0);
- }
- this.slide.classList.add('zoomed');
- this.zoomedIn = true;
- }
- }, {
- key: "zoomOut",
- value: function zoomOut() {
- this.img.parentNode.setAttribute('style', '');
- this.img.setAttribute('style', this.img.getAttribute('data-style'));
- this.slide.classList.remove('zoomed');
- this.zoomedIn = false;
- this.currentX = null;
- this.currentY = null;
- this.initialX = null;
- this.initialY = null;
- this.xOffset = 0;
- this.yOffset = 0;
- if (this.onclose && typeof this.onclose == 'function') {
- this.onclose();
- }
- }
- }, {
- key: "dragStart",
- value: function dragStart(e) {
- e.preventDefault();
- if (!this.zoomedIn) {
- this.active = false;
- return;
- }
- if (e.type === 'touchstart') {
- this.initialX = e.touches[0].clientX - this.xOffset;
- this.initialY = e.touches[0].clientY - this.yOffset;
- } else {
- this.initialX = e.clientX - this.xOffset;
- this.initialY = e.clientY - this.yOffset;
- }
- if (e.target === this.img) {
- this.active = true;
- this.img.classList.add('dragging');
- }
- }
- }, {
- key: "dragEnd",
- value: function dragEnd(e) {
- var _this2 = this;
- e.preventDefault();
- this.initialX = this.currentX;
- this.initialY = this.currentY;
- this.active = false;
- setTimeout(function () {
- _this2.dragging = false;
- _this2.img.isDragging = false;
- _this2.img.classList.remove('dragging');
- }, 100);
- }
- }, {
- key: "drag",
- value: function drag(e) {
- if (this.active) {
- e.preventDefault();
- if (e.type === 'touchmove') {
- this.currentX = e.touches[0].clientX - this.initialX;
- this.currentY = e.touches[0].clientY - this.initialY;
- } else {
- this.currentX = e.clientX - this.initialX;
- this.currentY = e.clientY - this.initialY;
- }
- this.xOffset = this.currentX;
- this.yOffset = this.currentY;
- this.img.isDragging = true;
- this.dragging = true;
- this.setTranslate(this.img, this.currentX, this.currentY);
- }
- }
- }, {
- key: "onMove",
- value: function onMove(e) {
- if (!this.zoomedIn) {
- return;
- }
- var xOffset = e.clientX - this.img.naturalWidth / 2;
- var yOffset = e.clientY - this.img.naturalHeight / 2;
- this.setTranslate(this.img, xOffset, yOffset);
- }
- }, {
- key: "setTranslate",
- value: function setTranslate(node, xPos, yPos) {
- node.style.transform = 'translate3d(' + xPos + 'px, ' + yPos + 'px, 0)';
- }
- }, {
- key: "widowWidth",
- value: function widowWidth() {
- return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
- }
- }]);
- }();
-
- var DragSlides = function () {
- function DragSlides() {
- var _this = this;
- var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- _classCallCheck(this, DragSlides);
- var dragEl = config.dragEl,
- _config$toleranceX = config.toleranceX,
- toleranceX = _config$toleranceX === void 0 ? 40 : _config$toleranceX,
- _config$toleranceY = config.toleranceY,
- toleranceY = _config$toleranceY === void 0 ? 65 : _config$toleranceY,
- _config$slide = config.slide,
- slide = _config$slide === void 0 ? null : _config$slide,
- _config$instance = config.instance,
- instance = _config$instance === void 0 ? null : _config$instance;
- this.el = dragEl;
- this.active = false;
- this.dragging = false;
- this.currentX = null;
- this.currentY = null;
- this.initialX = null;
- this.initialY = null;
- this.xOffset = 0;
- this.yOffset = 0;
- this.direction = null;
- this.lastDirection = null;
- this.toleranceX = toleranceX;
- this.toleranceY = toleranceY;
- this.toleranceReached = false;
- this.dragContainer = this.el;
- this.slide = slide;
- this.instance = instance;
- this.el.addEventListener('mousedown', function (e) {
- return _this.dragStart(e);
- }, false);
- this.el.addEventListener('mouseup', function (e) {
- return _this.dragEnd(e);
- }, false);
- this.el.addEventListener('mousemove', function (e) {
- return _this.drag(e);
- }, false);
- }
- return _createClass(DragSlides, [{
- key: "dragStart",
- value: function dragStart(e) {
- if (this.slide.classList.contains('zoomed')) {
- this.active = false;
- return;
- }
- if (e.type === 'touchstart') {
- this.initialX = e.touches[0].clientX - this.xOffset;
- this.initialY = e.touches[0].clientY - this.yOffset;
- } else {
- this.initialX = e.clientX - this.xOffset;
- this.initialY = e.clientY - this.yOffset;
- }
- var clicked = e.target.nodeName.toLowerCase();
- var exludeClicks = ['input', 'select', 'textarea', 'button', 'a'];
- if (e.target.classList.contains('nodrag') || closest(e.target, '.nodrag') || exludeClicks.indexOf(clicked) !== -1) {
- this.active = false;
- return;
- }
- e.preventDefault();
- if (e.target === this.el || clicked !== 'img' && closest(e.target, '.gslide-inline')) {
- this.active = true;
- this.el.classList.add('dragging');
- this.dragContainer = closest(e.target, '.ginner-container');
- }
- }
- }, {
- key: "dragEnd",
- value: function dragEnd(e) {
- var _this2 = this;
- e && e.preventDefault();
- this.initialX = 0;
- this.initialY = 0;
- this.currentX = null;
- this.currentY = null;
- this.initialX = null;
- this.initialY = null;
- this.xOffset = 0;
- this.yOffset = 0;
- this.active = false;
- if (this.doSlideChange) {
- this.instance.preventOutsideClick = true;
- this.doSlideChange == 'right' && this.instance.prevSlide();
- this.doSlideChange == 'left' && this.instance.nextSlide();
- }
- if (this.doSlideClose) {
- this.instance.close();
- }
- if (!this.toleranceReached) {
- this.setTranslate(this.dragContainer, 0, 0, true);
- }
- setTimeout(function () {
- _this2.instance.preventOutsideClick = false;
- _this2.toleranceReached = false;
- _this2.lastDirection = null;
- _this2.dragging = false;
- _this2.el.isDragging = false;
- _this2.el.classList.remove('dragging');
- _this2.slide.classList.remove('dragging-nav');
- _this2.dragContainer.style.transform = '';
- _this2.dragContainer.style.transition = '';
- }, 100);
- }
- }, {
- key: "drag",
- value: function drag(e) {
- if (this.active) {
- e.preventDefault();
- this.slide.classList.add('dragging-nav');
- if (e.type === 'touchmove') {
- this.currentX = e.touches[0].clientX - this.initialX;
- this.currentY = e.touches[0].clientY - this.initialY;
- } else {
- this.currentX = e.clientX - this.initialX;
- this.currentY = e.clientY - this.initialY;
- }
- this.xOffset = this.currentX;
- this.yOffset = this.currentY;
- this.el.isDragging = true;
- this.dragging = true;
- this.doSlideChange = false;
- this.doSlideClose = false;
- var currentXInt = Math.abs(this.currentX);
- var currentYInt = Math.abs(this.currentY);
- if (currentXInt > 0 && currentXInt >= Math.abs(this.currentY) && (!this.lastDirection || this.lastDirection == 'x')) {
- this.yOffset = 0;
- this.lastDirection = 'x';
- this.setTranslate(this.dragContainer, this.currentX, 0);
- var doChange = this.shouldChange();
- if (!this.instance.settings.dragAutoSnap && doChange) {
- this.doSlideChange = doChange;
- }
- if (this.instance.settings.dragAutoSnap && doChange) {
- this.instance.preventOutsideClick = true;
- this.toleranceReached = true;
- this.active = false;
- this.instance.preventOutsideClick = true;
- this.dragEnd(null);
- doChange == 'right' && this.instance.prevSlide();
- doChange == 'left' && this.instance.nextSlide();
- return;
- }
- }
- if (this.toleranceY > 0 && currentYInt > 0 && currentYInt >= currentXInt && (!this.lastDirection || this.lastDirection == 'y')) {
- this.xOffset = 0;
- this.lastDirection = 'y';
- this.setTranslate(this.dragContainer, 0, this.currentY);
- var doClose = this.shouldClose();
- if (!this.instance.settings.dragAutoSnap && doClose) {
- this.doSlideClose = true;
- }
- if (this.instance.settings.dragAutoSnap && doClose) {
- this.instance.close();
- }
- return;
- }
- }
- }
- }, {
- key: "shouldChange",
- value: function shouldChange() {
- var doChange = false;
- var currentXInt = Math.abs(this.currentX);
- if (currentXInt >= this.toleranceX) {
- var dragDir = this.currentX > 0 ? 'right' : 'left';
- if (dragDir == 'left' && this.slide !== this.slide.parentNode.lastChild || dragDir == 'right' && this.slide !== this.slide.parentNode.firstChild) {
- doChange = dragDir;
- }
- }
- return doChange;
- }
- }, {
- key: "shouldClose",
- value: function shouldClose() {
- var doClose = false;
- var currentYInt = Math.abs(this.currentY);
- if (currentYInt >= this.toleranceY) {
- doClose = true;
- }
- return doClose;
- }
- }, {
- key: "setTranslate",
- value: function setTranslate(node, xPos, yPos) {
- var animated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
- if (animated) {
- node.style.transition = 'all .2s ease';
- } else {
- node.style.transition = '';
- }
- node.style.transform = "translate3d(".concat(xPos, "px, ").concat(yPos, "px, 0)");
- }
- }]);
- }();
-
- function slideImage(slide, data, index, callback) {
- var slideMedia = slide.querySelector('.gslide-media');
- var img = new Image();
- var titleID = 'gSlideTitle_' + index;
- var textID = 'gSlideDesc_' + index;
- img.addEventListener('load', function () {
- if (isFunction(callback)) {
- callback();
- }
- }, false);
- img.src = data.href;
- if (data.sizes != '' && data.srcset != '') {
- img.sizes = data.sizes;
- img.srcset = data.srcset;
- }
- img.alt = '';
- if (!isNil(data.alt) && data.alt !== '') {
- img.alt = data.alt;
- }
- if (data.title !== '') {
- img.setAttribute('aria-labelledby', titleID);
- }
- if (data.description !== '') {
- img.setAttribute('aria-describedby', textID);
- }
- if (data.hasOwnProperty('_hasCustomWidth') && data._hasCustomWidth) {
- img.style.width = data.width;
- }
- if (data.hasOwnProperty('_hasCustomHeight') && data._hasCustomHeight) {
- img.style.height = data.height;
- }
- slideMedia.insertBefore(img, slideMedia.firstChild);
- return;
- }
-
- function slideVideo(slide, data, index, callback) {
- var _this = this;
- var slideContainer = slide.querySelector('.ginner-container');
- var videoID = 'gvideo' + index;
- var slideMedia = slide.querySelector('.gslide-media');
- var videoPlayers = this.getAllPlayers();
- addClass(slideContainer, 'gvideo-container');
- slideMedia.insertBefore(createHTML(''), slideMedia.firstChild);
- var videoWrapper = slide.querySelector('.gvideo-wrapper');
- injectAssets(this.settings.plyr.css, 'Plyr');
- var url = data.href;
- var provider = data === null || data === void 0 ? void 0 : data.videoProvider;
- var customPlaceholder = false;
- slideMedia.style.maxWidth = data.width;
- injectAssets(this.settings.plyr.js, 'Plyr', function () {
- if (!provider && url.match(/vimeo\.com\/([0-9]*)/)) {
- provider = 'vimeo';
- }
- if (!provider && (url.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || url.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || url.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || url.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/))) {
- provider = 'youtube';
- }
- if (provider === 'local' || !provider) {
- provider = 'local';
- var html = '';
- customPlaceholder = createHTML(html);
- }
- var placeholder = customPlaceholder ? customPlaceholder : createHTML(""));
- addClass(videoWrapper, "".concat(provider, "-video gvideo"));
- videoWrapper.appendChild(placeholder);
- videoWrapper.setAttribute('data-id', videoID);
- videoWrapper.setAttribute('data-index', index);
- var playerConfig = has(_this.settings.plyr, 'config') ? _this.settings.plyr.config : {};
- var player = new Plyr('#' + videoID, playerConfig);
- player.on('ready', function (event) {
- videoPlayers[videoID] = event.detail.plyr;
- if (isFunction(callback)) {
- callback();
- }
- });
- waitUntil(function () {
- return slide.querySelector('iframe') && slide.querySelector('iframe').dataset.ready == 'true';
- }, function () {
- _this.resize(slide);
- });
- player.on('enterfullscreen', handleMediaFullScreen);
- player.on('exitfullscreen', handleMediaFullScreen);
- });
- }
- function handleMediaFullScreen(event) {
- var media = closest(event.target, '.gslide-media');
- if (event.type === 'enterfullscreen') {
- addClass(media, 'fullscreen');
- }
- if (event.type === 'exitfullscreen') {
- removeClass(media, 'fullscreen');
- }
- }
-
- function slideInline(slide, data, index, callback) {
- var _this = this;
- var slideMedia = slide.querySelector('.gslide-media');
- var hash = has(data, 'href') && data.href ? data.href.split('#').pop().trim() : false;
- var content = has(data, 'content') && data.content ? data.content : false;
- var innerContent;
- if (content) {
- if (isString(content)) {
- innerContent = createHTML("