add build from cca16f51c2
281
2025/02/02/gallery.html
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Eindrücke ... | Scherbengericht</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css"/>
|
||||||
|
<!-- lightgallery styles -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/lightgallery-bundle.css"/>
|
||||||
|
<!-- lightgallery code -->
|
||||||
|
<script src="/assets/js/lightgallery.umd.js"></script>
|
||||||
|
<!-- lightgallery plugins -->
|
||||||
|
<script src="/assets/js/plugins/lg-thumbnail.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-zoom.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-hash.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-share.umd.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<!--
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
|
||||||
|
<a href="/blog.html"
|
||||||
|
|
||||||
|
>Meldungen</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h1>Eindrücke ...</h1>
|
||||||
|
<p>02 Feb 2025</p>
|
||||||
|
|
||||||
|
<p>So könnte ein Bericht vom Event aussehen:</p>
|
||||||
|
|
||||||
|
<h2>Stimmen:</h2>
|
||||||
|
<table id="count1">
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
|
||||||
|
|
||||||
|
<th onclick="sortTable(0)">Name</th>
|
||||||
|
|
||||||
|
|
||||||
|
<th onclick="sortTable(1)">Stimmen</th>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Bill Gates
|
||||||
|
</td><td class="col2">
|
||||||
|
11
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Tedros
|
||||||
|
</td><td class="col2">
|
||||||
|
2
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Merz
|
||||||
|
</td><td class="col2">
|
||||||
|
4
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Musk
|
||||||
|
</td><td class="col2">
|
||||||
|
4
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Höcke
|
||||||
|
</td><td class="col2">
|
||||||
|
2
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Habeck
|
||||||
|
</td><td class="col2">
|
||||||
|
5
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Baerbock
|
||||||
|
</td><td class="col2">
|
||||||
|
3
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr class="row1">
|
||||||
|
<td class="col1">
|
||||||
|
Franziskus
|
||||||
|
</td><td class="col2">
|
||||||
|
1
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
<script>
|
||||||
|
function sortTable(n) {
|
||||||
|
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
|
||||||
|
table = document.getElementById("count1");
|
||||||
|
switching = true;
|
||||||
|
// Set the sorting direction to ascending:
|
||||||
|
dir = "asc";
|
||||||
|
/* Make a loop that will continue until
|
||||||
|
no switching has been done: */
|
||||||
|
while (switching) {
|
||||||
|
// Start by saying: no switching is done:
|
||||||
|
switching = false;
|
||||||
|
rows = table.rows;
|
||||||
|
/* Loop through all table rows (except the
|
||||||
|
first, which contains table headers): */
|
||||||
|
for (i = 1; i < (rows.length - 1); i++) {
|
||||||
|
// Start by saying there should be no switching:
|
||||||
|
shouldSwitch = false;
|
||||||
|
/* Get the two elements you want to compare,
|
||||||
|
one from current row and one from the next: */
|
||||||
|
x = rows[i].getElementsByTagName("TD")[n];
|
||||||
|
y = rows[i + 1].getElementsByTagName("TD")[n];
|
||||||
|
/* Check if the two rows should switch place,
|
||||||
|
based on the direction, asc or desc: */
|
||||||
|
if (dir == "asc") {
|
||||||
|
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
|
||||||
|
// If so, mark as a switch and break the loop:
|
||||||
|
shouldSwitch = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (dir == "desc") {
|
||||||
|
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
|
||||||
|
// If so, mark as a switch and break the loop:
|
||||||
|
shouldSwitch = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (shouldSwitch) {
|
||||||
|
/* If a switch has been marked, make the switch
|
||||||
|
and mark that a switch has been done: */
|
||||||
|
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
|
||||||
|
switching = true;
|
||||||
|
// Each time a switch is done, increase this count by 1:
|
||||||
|
switchcount ++;
|
||||||
|
} else {
|
||||||
|
/* If no switching has been done AND the direction is "asc",
|
||||||
|
set the direction to "desc" and run the while loop again. */
|
||||||
|
if (switchcount == 0 && dir == "asc") {
|
||||||
|
dir = "desc";
|
||||||
|
switching = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h2>Video:</h2>
|
||||||
|
<style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>
|
||||||
|
<div class="embed-container"> <iframe title="YouTube video player" width="640" height="390" src="//www.youtube.com/embed/ho8-vK0L1_8" frameborder="0" allowfullscreen=""></iframe></div>
|
||||||
|
|
||||||
|
<h2>Fotos:</h2>
|
||||||
|
<div id="testgal"><a href="/assets/img/albums/testgal/altman12.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/altman12.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/baerbock-selenskij2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/baerbock-selenskij2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/baerbock-un2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/baerbock-un2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/baerbock2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/baerbock2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/bourla2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/bourla2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/fink-wef2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/fink-wef2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/frank-elisabeth2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/frank-elisabeth2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/frank12.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/frank12.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/gates2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/gates2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/höcke2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/höcke2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/lauterbach2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/lauterbach2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/leyen-bourla2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/leyen-bourla2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/leyen2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/leyen2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/merz2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/merz2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/musk2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/musk2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/papperger2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/papperger2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/putin2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/putin2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/rutte-willem2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/rutte-willem2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/rutte2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/rutte2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/schmidt2.jpg" data-sub-html="Google chairman Eric Schmidt greets with members of media before the press conference at Google Korea office in Seoul, South Korea, Tuesday, Nov. 8, 2011. Google chairman Eric Schmidt has mourned Steve Jobs' death but defended Google as a great innovator despite the Apple co-founder's allegations that the Internet search giant stole innovations from the iPhone. (AP Photo/Lee Jin-man)">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/schmidt2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/scholz2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/scholz2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/schwab-merkel-wef2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/schwab-merkel-wef2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/schwab2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/schwab2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/strack2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/strack2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/söder2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/söder2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/tedros2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/tedros2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/thiel2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/thiel2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/trump-vereidigung2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/trump-vereidigung2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/trump2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/trump2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/trump22.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/trump22.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/wagenknecht2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/wagenknecht2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/wahlurne2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/wahlurne2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/weidel2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/weidel2.jpg" />
|
||||||
|
</a><a href="/assets/img/albums/testgal/willem-beatrix2.jpg" data-sub-html="">
|
||||||
|
<img src="/assets/img/thumbnails/testgal/willem-beatrix2.jpg" />
|
||||||
|
</a></div>
|
||||||
|
<script>
|
||||||
|
lightGallery(document.getElementById('testgal'), {
|
||||||
|
plugins: [lgZoom, lgThumbnail, lgHash, lgShare],
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
57
2025/02/02/herald.html
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Ankündigung: erster Termin am 22.2.2025 in Dresden | Scherbengericht</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css"/>
|
||||||
|
<!-- lightgallery styles -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/lightgallery-bundle.css"/>
|
||||||
|
<!-- lightgallery code -->
|
||||||
|
<script src="/assets/js/lightgallery.umd.js"></script>
|
||||||
|
<!-- lightgallery plugins -->
|
||||||
|
<script src="/assets/js/plugins/lg-thumbnail.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-zoom.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-hash.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-share.umd.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<!--
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
|
||||||
|
<a href="/blog.html"
|
||||||
|
|
||||||
|
>Meldungen</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h1>Ankündigung: erster Termin am 22.2.2025 in Dresden</h1>
|
||||||
|
<p>02 Feb 2025</p>
|
||||||
|
|
||||||
|
<p>Wir laden alle herzlich ein,
|
||||||
|
am 22. Februar auf dem Neumarkt in Dresden,
|
||||||
|
<a href="https://www.openstreetmap.org/#map=19/51.051655/13.741195">zwischen Frauenkirche und Martin-Luther-Denkmal</a>,
|
||||||
|
an unserem ersten Versuch teilzunehmen!</p>
|
||||||
|
|
||||||
|
<p>Abgestimmt werden kann zwischen 12 und 19 Uhr,
|
||||||
|
danach werden die Stimmen ausgezählt und
|
||||||
|
öffentlich vorgetragen.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
55
about.html
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Über uns | Scherbengericht</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css"/>
|
||||||
|
<!-- lightgallery styles -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/lightgallery-bundle.css"/>
|
||||||
|
<!-- lightgallery code -->
|
||||||
|
<script src="/assets/js/lightgallery.umd.js"></script>
|
||||||
|
<!-- lightgallery plugins -->
|
||||||
|
<script src="/assets/js/plugins/lg-thumbnail.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-zoom.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-hash.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-share.umd.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<!--
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
<a href="/about.html"
|
||||||
|
style="color: red;"
|
||||||
|
>Über uns</a>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
|
||||||
|
<a href="/about.html"
|
||||||
|
class="current-site"
|
||||||
|
>Über uns</a>
|
||||||
|
|
||||||
|
<a href="/blog.html"
|
||||||
|
|
||||||
|
>Meldungen</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h1 id="über-uns">Über uns</h1>
|
||||||
|
|
||||||
|
<p>Wir sind Bürger der Stadt Dresden,
|
||||||
|
ohne Zugehörigkeit zu politischen Parteien,
|
||||||
|
Vereinen oder Organisationen.</p>
|
||||||
|
|
||||||
|
<p>Wir suchen angesichts der gegenwärtigen
|
||||||
|
<strong>Krise der Demokratie</strong> (oder des Staates)
|
||||||
|
nach Ideen für die Weiterentwicklung
|
||||||
|
des politischen Systems
|
||||||
|
in Richtung <strong>Direkte Demokratie</strong>.</p>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
1443
assets/css/lightgallery-bundle.css
Normal file
1
assets/css/lightgallery-bundle.min.css
vendored
Normal file
44
assets/css/styles.css
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
.current-site {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-size: 24px;
|
||||||
|
max-width: 72ch;
|
||||||
|
background-color: #afcfff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.larger {
|
||||||
|
font-size: larger;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xx-large {
|
||||||
|
font-size: xx-large;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
display: flex;
|
||||||
|
max-width: max-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap1 {
|
||||||
|
margin: 0px;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap2 {
|
||||||
|
margin: 0px; /* remove all margins to fit two divs in the container */
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 767px) {
|
||||||
|
.wrap {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.wrap1,
|
||||||
|
.wrap2 {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=styles.css.map */
|
||||||
1
assets/css/styles.css.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"sourceRoot":"","sources":["../../_sass/main.scss"],"names":[],"mappings":"AAAA;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACE;IACE;;EAEF;AAAA;IAEE","sourcesContent":[".current-site {\n color: green;\n}\nbody {\n font-size: 24px;\n max-width: 72ch;\n background-color: #afcfff;\n}\n.larger {\n font-size: larger;\n}\n.xx-large {\n font-size: xx-large;\n}\n.wrap {\n display: flex;\n max-width: max-content;\n}\n.wrap1 {\n margin: 0px;\n width: 30%;\n}\n.wrap2 {\n margin: 0px; /* remove all margins to fit two divs in the container */\n width: 70%;\n}\n@media (max-width: 767px) {\n .wrap {\n flex-direction: column;\n }\n .wrap1,\n .wrap2 {\n width: auto;\n }\n}\n"],"file":"styles.css"}
|
||||||
54
assets/fonts/lg.svg
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<metadata>
|
||||||
|
<json>
|
||||||
|
<![CDATA[
|
||||||
|
{
|
||||||
|
"fontFamily": "lg",
|
||||||
|
"majorVersion": 2,
|
||||||
|
"minorVersion": 0,
|
||||||
|
"fontURL": "",
|
||||||
|
"copyright": "",
|
||||||
|
"license": "",
|
||||||
|
"licenseURL": "",
|
||||||
|
"description": "Font generated by IcoMoon.",
|
||||||
|
"version": "Version 2.0",
|
||||||
|
"fontId": "lg",
|
||||||
|
"psName": "lg",
|
||||||
|
"subFamily": "Regular",
|
||||||
|
"fullName": "lg"
|
||||||
|
}
|
||||||
|
]]>
|
||||||
|
</json>
|
||||||
|
</metadata>
|
||||||
|
<defs>
|
||||||
|
<font id="lg" horiz-adv-x="1024">
|
||||||
|
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||||
|
<missing-glyph horiz-adv-x="1024" />
|
||||||
|
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||||
|
<glyph unicode="" glyph-name="pause_circle_outline" data-tags="pause_circle_outline" d="M554 256.667v340h86v-340h-86zM512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM384 256.667v340h86v-340h-86z" />
|
||||||
|
<glyph unicode="" glyph-name="play_circle_outline" data-tags="play_circle_outline" d="M512 84.667q140 0 241 101t101 241-101 241-241 101-241-101-101-241 101-241 241-101zM512 852.667q176 0 301-125t125-301-125-301-301-125-301 125-125 301 125 301 301 125zM426 234.667v384l256-192z" />
|
||||||
|
<glyph unicode="" glyph-name="stack-2" data-tags="stack-2" d="M384 853.334h426.667q53 0 90.5-37.5t37.5-90.5v-426.667q0-53-37.5-90.5t-90.5-37.5h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 53 37.5 90.5t90.5 37.5zM170.667 675.334v-547.333q0-17.667 12.5-30.167t30.167-12.5h547.333q-13.333-37.667-46.333-61.5t-74.333-23.833h-426.667q-53 0-90.5 37.5t-37.5 90.5v426.667q0 41.333 23.833 74.333t61.5 46.333zM810.667 768h-426.667q-17.667 0-30.167-12.5t-12.5-30.167v-426.667q0-17.667 12.5-30.167t30.167-12.5h426.667q17.667 0 30.167 12.5t12.5 30.167v426.667q0 17.667-12.5 30.167t-30.167 12.5z" />
|
||||||
|
<glyph unicode="" glyph-name="clear" data-tags="clear" d="M810 664.667l-238-238 238-238-60-60-238 238-238-238-60 60 238 238-238 238 60 60 238-238 238 238z" />
|
||||||
|
<glyph unicode="" glyph-name="arrow-left" data-tags="arrow-left" d="M426.667 768q17.667 0 30.167-12.5t12.5-30.167q0-18-12.667-30.333l-225.667-225.667h665q17.667 0 30.167-12.5t12.5-30.167-12.5-30.167-30.167-12.5h-665l225.667-225.667q12.667-12.333 12.667-30.333 0-17.667-12.5-30.167t-30.167-12.5q-18 0-30.333 12.333l-298.667 298.667q-12.333 13-12.333 30.333t12.333 30.333l298.667 298.667q12.667 12.333 30.333 12.333z" />
|
||||||
|
<glyph unicode="" glyph-name="arrow-right" data-tags="arrow-right" d="M597.333 768q18 0 30.333-12.333l298.667-298.667q12.333-12.333 12.333-30.333t-12.333-30.333l-298.667-298.667q-12.333-12.333-30.333-12.333-18.333 0-30.5 12.167t-12.167 30.5q0 18 12.333 30.333l226 225.667h-665q-17.667 0-30.167 12.5t-12.5 30.167 12.5 30.167 30.167 12.5h665l-226 225.667q-12.333 12.333-12.333 30.333 0 18.333 12.167 30.5t30.5 12.167z" />
|
||||||
|
<glyph unicode="" glyph-name="vertical_align_bottom" data-tags="vertical_align_bottom" d="M170 128.667h684v-86h-684v86zM682 384.667l-170-172-170 172h128v426h84v-426h128z" />
|
||||||
|
<glyph unicode="" glyph-name="apps" data-tags="apps" d="M682 84.667v172h172v-172h-172zM682 340.667v172h172v-172h-172zM426 596.667v172h172v-172h-172zM682 768.667h172v-172h-172v172zM426 340.667v172h172v-172h-172zM170 340.667v172h172v-172h-172zM170 84.667v172h172v-172h-172zM426 84.667v172h172v-172h-172zM170 596.667v172h172v-172h-172z" />
|
||||||
|
<glyph unicode="" glyph-name="fullscreen" data-tags="fullscreen" d="M598 724.667h212v-212h-84v128h-128v84zM726 212.667v128h84v-212h-212v84h128zM214 512.667v212h212v-84h-128v-128h-84zM298 340.667v-128h128v-84h-212v212h84z" />
|
||||||
|
<glyph unicode="" glyph-name="fullscreen_exit" data-tags="fullscreen_exit" d="M682 596.667h128v-84h-212v212h84v-128zM598 128.667v212h212v-84h-128v-128h-84zM342 596.667v128h84v-212h-212v84h128zM214 256.667v84h212v-212h-84v128h-128z" />
|
||||||
|
<glyph unicode="" glyph-name="zoom_in" data-tags="zoom_in" d="M512 512.667h-86v-86h-42v86h-86v42h86v86h42v-86h86v-42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z" />
|
||||||
|
<glyph unicode="" glyph-name="zoom_out" data-tags="zoom_out" d="M298 554.667h214v-42h-214v42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z" />
|
||||||
|
<glyph unicode="" glyph-name="share" data-tags="share" d="M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z" />
|
||||||
|
<glyph unicode="" glyph-name="rotate_left" data-tags="rotate_left" d="M554 764.667q126-16 213-112t87-226-87-226-213-112v86q92 16 153 87t61 165-61 165-153 87v-166l-194 190 194 194v-132zM302 156.667l62 62q46-34 106-44v-86q-96 12-168 68zM260 384.667q10-58 42-106l-60-60q-56 74-68 166h86zM304 574.667q-36-52-44-106h-86q12 90 70 166z" />
|
||||||
|
<glyph unicode="" glyph-name="rotate_right" data-tags="rotate_right" d="M720 278.667q34 46 44 106h86q-12-92-68-166zM554 174.667q60 10 106 44l62-62q-72-56-168-68v86zM850 468.667h-86q-10 60-44 106l62 60q58-72 68-166zM664 702.667l-194-190v166q-92-16-153-87t-61-165 61-165 153-87v-86q-126 16-213 112t-87 226 87 226 213 112v132z" />
|
||||||
|
<glyph unicode="" glyph-name="swap_horiz" data-tags="swap_horiz" d="M896 554.667l-170-170v128h-300v84h300v128zM298 468.667v-128h300v-84h-300v-128l-170 170z" />
|
||||||
|
<glyph unicode="" glyph-name="swap_vert" data-tags="swap_vert" d="M384 810.667l170-170h-128v-300h-84v300h-128zM682 212.667h128l-170-170-170 170h128v300h84v-300z" />
|
||||||
|
<glyph unicode="" glyph-name="facebook-with-circle" data-tags="facebook-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z" />
|
||||||
|
<glyph unicode="" glyph-name="google-with-circle" data-tags="google+-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM483.686 249.805c-30.874-15.002-64.102-16.589-76.954-16.589-2.458 0-3.84 0-3.84 0s-1.178 0-2.765 0c-20.070 0-119.962 4.608-119.962 95.59 0 89.395 108.8 96.41 142.131 96.41h0.87c-19.251 25.702-15.258 51.61-15.258 51.61-1.69-0.102-4.147-0.205-7.168-0.205-12.544 0-36.762 1.997-57.549 15.411-25.498 16.384-38.4 44.288-38.4 82.893 0 109.107 119.142 113.51 120.32 113.613h118.989v-2.611c0-13.312-23.91-15.923-40.192-18.125-5.53-0.819-16.64-1.894-19.763-3.482 30.157-16.128 35.021-41.421 35.021-79.104 0-42.906-16.794-65.587-34.611-81.51-11.059-9.882-19.712-17.613-19.712-28.006 0-10.189 11.878-20.582 25.702-32.717 22.579-19.917 53.555-47.002 53.555-92.723 0-47.258-20.326-81.050-60.416-100.454zM742.4 460.8h-76.8v-76.8h-51.2v76.8h-76.8v51.2h76.8v76.8h51.2v-76.8h76.8v-51.2zM421.018 401.92c-2.662 0-5.325-0.102-8.038-0.307-22.733-1.69-43.725-10.189-58.88-24.013-15.053-13.619-22.733-30.822-21.658-48.179 2.304-36.403 41.37-57.702 88.832-54.323 46.694 3.379 77.824 30.31 75.571 66.714-2.15 34.202-31.898 60.109-75.827 60.109zM465.766 599.808c-12.39 43.52-32.358 56.422-63.386 56.422-3.328 0-6.707-0.512-9.933-1.382-13.466-3.84-24.166-15.053-30.106-31.744-6.093-16.896-6.451-34.509-1.229-54.579 9.472-35.891 34.97-61.901 60.672-61.901 3.379 0 6.758 0.41 9.933 1.382 28.109 7.885 45.722 50.79 34.048 91.802z" />
|
||||||
|
<glyph unicode="" glyph-name="pinterest-with-circle" data-tags="pinterest-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z" />
|
||||||
|
<glyph unicode="" glyph-name="twitter-with-circle" data-tags="twitter-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM711.936 549.683c0.205-4.198 0.256-8.397 0.256-12.493 0-128-97.331-275.507-275.405-275.507-54.682 0-105.574 15.974-148.378 43.52 7.526-0.922 15.258-1.28 23.091-1.28 45.363 0 87.091 15.411 120.218 41.421-42.342 0.819-78.080 28.774-90.419 67.174 5.888-1.075 11.93-1.69 18.176-1.69 8.806 0 17.408 1.178 25.498 3.379-44.288 8.909-77.67 48.026-77.67 94.925v1.178c13.056-7.219 28.006-11.622 43.878-12.134-26.010 17.408-43.059 47.002-43.059 80.64 0 17.715 4.762 34.406 13.107 48.691 47.77-58.573 119.040-97.075 199.526-101.222-1.69 7.117-2.509 14.49-2.509 22.118 0 53.402 43.315 96.819 96.819 96.819 27.802 0 52.992-11.776 70.656-30.618 22.067 4.403 42.752 12.39 61.44 23.501-7.219-22.579-22.528-41.574-42.547-53.606 19.61 2.406 38.246 7.578 55.603 15.309-12.954-19.405-29.389-36.506-48.282-50.125z" />
|
||||||
|
<glyph unicode="" glyph-name="message-circle" data-tags="message-circle" d="M938.667 448.128v21.205c0 0.725-0.043 1.621-0.085 2.475-5.803 99.755-47.488 190.336-112.725 258.176-68.352 71.125-162.731 117.419-268.843 123.264-0.683 0.043-1.536 0.085-2.347 0.085h-20.864c-59.947 0.683-122.965-13.227-181.931-43.008-52.181-26.496-97.749-63.488-133.931-108.16-56.405-69.717-89.899-158.080-89.941-253.696-0.597-54.4 10.795-111.36 35.157-165.419l-75.605-226.859c-2.816-8.363-3.072-17.835 0-26.965 7.467-22.357 31.616-34.432 53.973-26.965l226.731 75.563c49.493-22.485 105.984-35.243 165.376-35.115 58.539 0.384 115.797 13.141 168.149 36.949 81.579 37.163 151.040 101.248 193.749 186.667 27.477 53.291 43.307 115.84 43.136 181.803zM853.333 447.872c0.128-52.267-12.459-101.333-33.664-142.464-34.176-68.352-88.832-118.827-153.259-148.139-41.387-18.859-86.827-28.971-133.376-29.269-52.096-0.128-101.163 12.459-142.293 33.664-10.624 5.504-22.528 6.059-33.067 2.56l-162.261-54.101 54.101 162.261c3.755 11.221 2.56 22.912-2.389 32.725-23.552 46.677-34.304 96.171-33.792 142.421 0.043 76.331 26.411 145.92 70.955 200.917 28.629 35.371 64.768 64.725 106.24 85.76 46.592 23.552 96.085 34.304 142.336 33.792h19.456c83.712-4.565 158.037-41.003 212.011-97.152 51.285-53.376 84.139-124.416 89.003-202.795z" />
|
||||||
|
<glyph unicode="" glyph-name="maximize-2" data-tags="maximize-2" d="M793.003 768l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-3.925 3.925-8.619 7.083-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667zM230.997 85.334l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-23.552 19.115-42.667 42.667-42.667h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667z" />
|
||||||
|
<glyph unicode="" glyph-name="minimize-2" data-tags="minimize-2" d="M700.331 554.667l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-5.803 1.152-11.307 3.243-16.341s5.163-9.728 9.216-13.781c0.043-0.043 0.043-0.043 0.085-0.085 3.925-3.925 8.619-7.083 13.781-9.216 5.035-2.091 10.539-3.243 16.341-3.243h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667zM158.165 12.502l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-4.096 4.053-8.789 7.125-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667h153.003l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0z" />
|
||||||
|
</font></defs></svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/fonts/lg.ttf
Normal file
BIN
assets/fonts/lg.woff
Normal file
BIN
assets/fonts/lg.woff2
Normal file
BIN
assets/img/albums/testgal/altman12.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
assets/img/albums/testgal/baerbock-selenskij2.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
assets/img/albums/testgal/baerbock-un2.jpg
Normal file
|
After Width: | Height: | Size: 91 KiB |
BIN
assets/img/albums/testgal/baerbock2.jpg
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
assets/img/albums/testgal/bourla2.jpg
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
assets/img/albums/testgal/fink-wef2.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
assets/img/albums/testgal/frank-elisabeth2.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
assets/img/albums/testgal/frank12.jpg
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
assets/img/albums/testgal/gates2.jpg
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
assets/img/albums/testgal/höcke2.jpg
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
assets/img/albums/testgal/lauterbach2.jpg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
assets/img/albums/testgal/leyen-bourla2.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
assets/img/albums/testgal/leyen2.jpg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
assets/img/albums/testgal/merz2.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
assets/img/albums/testgal/musk2.jpg
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
assets/img/albums/testgal/papperger2.jpg
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
assets/img/albums/testgal/putin2.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
assets/img/albums/testgal/rutte-willem2.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
assets/img/albums/testgal/rutte2.jpg
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
assets/img/albums/testgal/schmidt2.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
assets/img/albums/testgal/scholz2.jpg
Normal file
|
After Width: | Height: | Size: 112 KiB |
BIN
assets/img/albums/testgal/schwab-merkel-wef2.jpg
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
assets/img/albums/testgal/schwab2.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
assets/img/albums/testgal/strack2.jpg
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
assets/img/albums/testgal/söder2.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
assets/img/albums/testgal/tedros2.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
assets/img/albums/testgal/thiel2.jpg
Normal file
|
After Width: | Height: | Size: 555 KiB |
BIN
assets/img/albums/testgal/trump-vereidigung2.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
assets/img/albums/testgal/trump2.jpg
Normal file
|
After Width: | Height: | Size: 730 KiB |
BIN
assets/img/albums/testgal/trump22.jpg
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
assets/img/albums/testgal/wagenknecht2.jpg
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
assets/img/albums/testgal/wahlurne2.jpg
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
assets/img/albums/testgal/weidel2.jpg
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
assets/img/albums/testgal/willem-beatrix2.jpg
Normal file
|
After Width: | Height: | Size: 260 KiB |
BIN
assets/img/loading.gif
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
assets/img/scales-of-justice.jpg
Normal file
|
After Width: | Height: | Size: 77 KiB |
161
assets/img/scherbe_perikles.svg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
assets/img/thumbnails/testgal/altman12.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/img/thumbnails/testgal/baerbock-selenskij2.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/img/thumbnails/testgal/baerbock-un2.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/img/thumbnails/testgal/baerbock2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/img/thumbnails/testgal/bourla2.jpg
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
assets/img/thumbnails/testgal/fink-wef2.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/img/thumbnails/testgal/frank-elisabeth2.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
assets/img/thumbnails/testgal/frank12.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/img/thumbnails/testgal/gates2.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/img/thumbnails/testgal/höcke2.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/img/thumbnails/testgal/lauterbach2.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/img/thumbnails/testgal/leyen-bourla2.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/img/thumbnails/testgal/leyen2.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
assets/img/thumbnails/testgal/merz2.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
assets/img/thumbnails/testgal/musk2.jpg
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
assets/img/thumbnails/testgal/papperger2.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
assets/img/thumbnails/testgal/putin2.jpg
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
assets/img/thumbnails/testgal/rutte-willem2.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/img/thumbnails/testgal/rutte2.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/img/thumbnails/testgal/schmidt2.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/img/thumbnails/testgal/scholz2.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/img/thumbnails/testgal/schwab-merkel-wef2.jpg
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
assets/img/thumbnails/testgal/schwab2.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/img/thumbnails/testgal/strack2.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
assets/img/thumbnails/testgal/söder2.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
assets/img/thumbnails/testgal/tedros2.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
assets/img/thumbnails/testgal/thiel2.jpg
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
assets/img/thumbnails/testgal/trump-vereidigung2.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/img/thumbnails/testgal/trump2.jpg
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
assets/img/thumbnails/testgal/trump22.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
assets/img/thumbnails/testgal/wagenknecht2.jpg
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/img/thumbnails/testgal/wahlurne2.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
assets/img/thumbnails/testgal/weidel2.jpg
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
assets/img/thumbnails/testgal/willem-beatrix2.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
assets/img/wahlurne.jpg
Normal file
|
After Width: | Height: | Size: 24 KiB |
8
assets/js/lightgallery.min.js
vendored
Normal file
2788
assets/js/lightgallery.umd.js
Normal file
206
assets/js/plugins/lg-hash.umd.js
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
/*!
|
||||||
|
* lightgallery | 2.8.2 | November 28th 2024
|
||||||
|
* http://www.lightgalleryjs.com/
|
||||||
|
* Copyright (c) 2020 Sachin Neravath;
|
||||||
|
* @license GPLv3
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgHash = factory());
|
||||||
|
}(this, (function () { 'use strict';
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
var __assign = function() {
|
||||||
|
__assign = Object.assign || function __assign(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of lightGallery events
|
||||||
|
* All events should be documented here
|
||||||
|
* Below interfaces are used to build the website documentations
|
||||||
|
* */
|
||||||
|
var lGEvents = {
|
||||||
|
afterAppendSlide: 'lgAfterAppendSlide',
|
||||||
|
init: 'lgInit',
|
||||||
|
hasVideo: 'lgHasVideo',
|
||||||
|
containerResize: 'lgContainerResize',
|
||||||
|
updateSlides: 'lgUpdateSlides',
|
||||||
|
afterAppendSubHtml: 'lgAfterAppendSubHtml',
|
||||||
|
beforeOpen: 'lgBeforeOpen',
|
||||||
|
afterOpen: 'lgAfterOpen',
|
||||||
|
slideItemLoad: 'lgSlideItemLoad',
|
||||||
|
beforeSlide: 'lgBeforeSlide',
|
||||||
|
afterSlide: 'lgAfterSlide',
|
||||||
|
posterClick: 'lgPosterClick',
|
||||||
|
dragStart: 'lgDragStart',
|
||||||
|
dragMove: 'lgDragMove',
|
||||||
|
dragEnd: 'lgDragEnd',
|
||||||
|
beforeNextSlide: 'lgBeforeNextSlide',
|
||||||
|
beforePrevSlide: 'lgBeforePrevSlide',
|
||||||
|
beforeClose: 'lgBeforeClose',
|
||||||
|
afterClose: 'lgAfterClose',
|
||||||
|
rotateLeft: 'lgRotateLeft',
|
||||||
|
rotateRight: 'lgRotateRight',
|
||||||
|
flipHorizontal: 'lgFlipHorizontal',
|
||||||
|
flipVertical: 'lgFlipVertical',
|
||||||
|
autoplay: 'lgAutoplay',
|
||||||
|
autoplayStart: 'lgAutoplayStart',
|
||||||
|
autoplayStop: 'lgAutoplayStop',
|
||||||
|
};
|
||||||
|
|
||||||
|
var hashSettings = {
|
||||||
|
hash: true,
|
||||||
|
galleryId: '1',
|
||||||
|
customSlideName: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
var Hash = /** @class */ (function () {
|
||||||
|
function Hash(instance, $LG) {
|
||||||
|
// get lightGallery core plugin instance
|
||||||
|
this.core = instance;
|
||||||
|
this.$LG = $LG;
|
||||||
|
// extend module default settings with lightGallery core settings
|
||||||
|
this.settings = __assign(__assign({}, hashSettings), this.core.settings);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
Hash.prototype.init = function () {
|
||||||
|
var _this = this;
|
||||||
|
if (!this.settings.hash) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.oldHash = window.location.hash;
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.buildFromHash();
|
||||||
|
}, 100);
|
||||||
|
// Change hash value on after each slide transition
|
||||||
|
this.core.LGel.on(lGEvents.afterSlide + ".hash", this.onAfterSlide.bind(this));
|
||||||
|
this.core.LGel.on(lGEvents.afterClose + ".hash", this.onCloseAfter.bind(this));
|
||||||
|
// Listen hash change and change the slide according to slide value
|
||||||
|
this.$LG(window).on("hashchange.lg.hash.global" + this.core.lgId, this.onHashchange.bind(this));
|
||||||
|
};
|
||||||
|
Hash.prototype.onAfterSlide = function (event) {
|
||||||
|
var slideName = this.core.galleryItems[event.detail.index].slideName;
|
||||||
|
slideName = this.settings.customSlideName
|
||||||
|
? slideName || event.detail.index
|
||||||
|
: event.detail.index;
|
||||||
|
if (history.replaceState) {
|
||||||
|
history.replaceState(null, '', window.location.pathname +
|
||||||
|
window.location.search +
|
||||||
|
'#lg=' +
|
||||||
|
this.settings.galleryId +
|
||||||
|
'&slide=' +
|
||||||
|
slideName);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
window.location.hash =
|
||||||
|
'lg=' + this.settings.galleryId + '&slide=' + slideName;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin
|
||||||
|
* @param {String} hash
|
||||||
|
* @returns {Number} Index of the slide.
|
||||||
|
*/
|
||||||
|
Hash.prototype.getIndexFromUrl = function (hash) {
|
||||||
|
if (hash === void 0) { hash = window.location.hash; }
|
||||||
|
var slideName = hash.split('&slide=')[1];
|
||||||
|
var _idx = 0;
|
||||||
|
if (this.settings.customSlideName) {
|
||||||
|
for (var index = 0; index < this.core.galleryItems.length; index++) {
|
||||||
|
var dynamicEl = this.core.galleryItems[index];
|
||||||
|
if (dynamicEl.slideName === slideName) {
|
||||||
|
_idx = index;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_idx = parseInt(slideName, 10);
|
||||||
|
}
|
||||||
|
return isNaN(_idx) ? 0 : _idx;
|
||||||
|
};
|
||||||
|
// Build Gallery if gallery id exist in the URL
|
||||||
|
Hash.prototype.buildFromHash = function () {
|
||||||
|
// if dynamic option is enabled execute immediately
|
||||||
|
var _hash = window.location.hash;
|
||||||
|
if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) {
|
||||||
|
// This class is used to remove the initial animation if galleryId present in the URL
|
||||||
|
this.$LG(document.body).addClass('lg-from-hash');
|
||||||
|
var index = this.getIndexFromUrl(_hash);
|
||||||
|
this.core.openGallery(index);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Hash.prototype.onCloseAfter = function () {
|
||||||
|
// Reset to old hash value
|
||||||
|
if (this.oldHash &&
|
||||||
|
this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0) {
|
||||||
|
if (history.replaceState) {
|
||||||
|
history.replaceState(null, '', this.oldHash);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
window.location.hash = this.oldHash;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (history.replaceState) {
|
||||||
|
history.replaceState(null, document.title, window.location.pathname + window.location.search);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
window.location.hash = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Hash.prototype.onHashchange = function () {
|
||||||
|
if (!this.core.lgOpened)
|
||||||
|
return;
|
||||||
|
var _hash = window.location.hash;
|
||||||
|
var index = this.getIndexFromUrl(_hash);
|
||||||
|
// it galleryId doesn't exist in the url close the gallery
|
||||||
|
if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) {
|
||||||
|
this.core.slide(index, false, false);
|
||||||
|
}
|
||||||
|
else if (this.core.lGalleryOn) {
|
||||||
|
this.core.closeGallery();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Hash.prototype.closeGallery = function () {
|
||||||
|
if (this.settings.hash) {
|
||||||
|
this.$LG(document.body).removeClass('lg-from-hash');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Hash.prototype.destroy = function () {
|
||||||
|
this.core.LGel.off('.lg.hash');
|
||||||
|
this.core.LGel.off('.hash');
|
||||||
|
this.$LG(window).off("hashchange.lg.hash.global" + this.core.lgId);
|
||||||
|
};
|
||||||
|
return Hash;
|
||||||
|
}());
|
||||||
|
|
||||||
|
return Hash;
|
||||||
|
|
||||||
|
})));
|
||||||
|
|
||||||
226
assets/js/plugins/lg-share.umd.js
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
/*!
|
||||||
|
* lightgallery | 2.8.2 | November 28th 2024
|
||||||
|
* http://www.lightgalleryjs.com/
|
||||||
|
* Copyright (c) 2020 Sachin Neravath;
|
||||||
|
* @license GPLv3
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgShare = factory());
|
||||||
|
}(this, (function () { 'use strict';
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
var __assign = function() {
|
||||||
|
__assign = Object.assign || function __assign(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
function __spreadArrays() {
|
||||||
|
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
||||||
|
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
||||||
|
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
||||||
|
r[k] = a[j];
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shareSettings = {
|
||||||
|
share: true,
|
||||||
|
facebook: true,
|
||||||
|
facebookDropdownText: 'Facebook',
|
||||||
|
twitter: true,
|
||||||
|
twitterDropdownText: 'Twitter',
|
||||||
|
pinterest: true,
|
||||||
|
pinterestDropdownText: 'Pinterest',
|
||||||
|
additionalShareOptions: [],
|
||||||
|
sharePluginStrings: { share: 'Share' },
|
||||||
|
};
|
||||||
|
|
||||||
|
function getFacebookShareLink(galleryItem) {
|
||||||
|
var facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';
|
||||||
|
return (facebookBaseUrl +
|
||||||
|
encodeURIComponent(galleryItem.facebookShareUrl || window.location.href));
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTwitterShareLink(galleryItem) {
|
||||||
|
var twitterBaseUrl = '//twitter.com/intent/tweet?text=';
|
||||||
|
var url = encodeURIComponent(galleryItem.twitterShareUrl || window.location.href);
|
||||||
|
var text = galleryItem.tweetText;
|
||||||
|
return twitterBaseUrl + text + '&url=' + url;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPinterestShareLink(galleryItem) {
|
||||||
|
var pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';
|
||||||
|
var description = galleryItem.pinterestText;
|
||||||
|
var media = encodeURIComponent(galleryItem.src);
|
||||||
|
var url = encodeURIComponent(galleryItem.pinterestShareUrl || window.location.href);
|
||||||
|
return (pinterestBaseUrl +
|
||||||
|
url +
|
||||||
|
'&media=' +
|
||||||
|
media +
|
||||||
|
'&description=' +
|
||||||
|
description);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of lightGallery events
|
||||||
|
* All events should be documented here
|
||||||
|
* Below interfaces are used to build the website documentations
|
||||||
|
* */
|
||||||
|
var lGEvents = {
|
||||||
|
afterAppendSlide: 'lgAfterAppendSlide',
|
||||||
|
init: 'lgInit',
|
||||||
|
hasVideo: 'lgHasVideo',
|
||||||
|
containerResize: 'lgContainerResize',
|
||||||
|
updateSlides: 'lgUpdateSlides',
|
||||||
|
afterAppendSubHtml: 'lgAfterAppendSubHtml',
|
||||||
|
beforeOpen: 'lgBeforeOpen',
|
||||||
|
afterOpen: 'lgAfterOpen',
|
||||||
|
slideItemLoad: 'lgSlideItemLoad',
|
||||||
|
beforeSlide: 'lgBeforeSlide',
|
||||||
|
afterSlide: 'lgAfterSlide',
|
||||||
|
posterClick: 'lgPosterClick',
|
||||||
|
dragStart: 'lgDragStart',
|
||||||
|
dragMove: 'lgDragMove',
|
||||||
|
dragEnd: 'lgDragEnd',
|
||||||
|
beforeNextSlide: 'lgBeforeNextSlide',
|
||||||
|
beforePrevSlide: 'lgBeforePrevSlide',
|
||||||
|
beforeClose: 'lgBeforeClose',
|
||||||
|
afterClose: 'lgAfterClose',
|
||||||
|
rotateLeft: 'lgRotateLeft',
|
||||||
|
rotateRight: 'lgRotateRight',
|
||||||
|
flipHorizontal: 'lgFlipHorizontal',
|
||||||
|
flipVertical: 'lgFlipVertical',
|
||||||
|
autoplay: 'lgAutoplay',
|
||||||
|
autoplayStart: 'lgAutoplayStart',
|
||||||
|
autoplayStop: 'lgAutoplayStop',
|
||||||
|
};
|
||||||
|
|
||||||
|
var Share = /** @class */ (function () {
|
||||||
|
function Share(instance) {
|
||||||
|
this.shareOptions = [];
|
||||||
|
// get lightGallery core plugin instance
|
||||||
|
this.core = instance;
|
||||||
|
// extend module default settings with lightGallery core settings
|
||||||
|
this.settings = __assign(__assign({}, shareSettings), this.core.settings);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
Share.prototype.init = function () {
|
||||||
|
if (!this.settings.share) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.shareOptions = __spreadArrays(this.getDefaultShareOptions(), this.settings.additionalShareOptions);
|
||||||
|
this.setLgShareMarkup();
|
||||||
|
this.core.outer
|
||||||
|
.find('.lg-share .lg-dropdown')
|
||||||
|
.append(this.getShareListHtml());
|
||||||
|
this.core.LGel.on(lGEvents.afterSlide + ".share", this.onAfterSlide.bind(this));
|
||||||
|
};
|
||||||
|
Share.prototype.getShareListHtml = function () {
|
||||||
|
var shareHtml = '';
|
||||||
|
this.shareOptions.forEach(function (shareOption) {
|
||||||
|
shareHtml += shareOption.dropdownHTML;
|
||||||
|
});
|
||||||
|
return shareHtml;
|
||||||
|
};
|
||||||
|
Share.prototype.setLgShareMarkup = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.core.$toolbar.append("<button type=\"button\" aria-label=\"" + this.settings.sharePluginStrings['share'] + "\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>");
|
||||||
|
this.core.outer.append('<div class="lg-dropdown-overlay"></div>');
|
||||||
|
var $shareButton = this.core.outer.find('.lg-share');
|
||||||
|
$shareButton.first().on('click.lg', function () {
|
||||||
|
_this.core.outer.toggleClass('lg-dropdown-active');
|
||||||
|
if (_this.core.outer.hasClass('lg-dropdown-active')) {
|
||||||
|
_this.core.outer.attr('aria-expanded', true);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this.core.outer.attr('aria-expanded', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.outer
|
||||||
|
.find('.lg-dropdown-overlay')
|
||||||
|
.first()
|
||||||
|
.on('click.lg', function () {
|
||||||
|
_this.core.outer.removeClass('lg-dropdown-active');
|
||||||
|
_this.core.outer.attr('aria-expanded', false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Share.prototype.onAfterSlide = function (event) {
|
||||||
|
var _this = this;
|
||||||
|
var index = event.detail.index;
|
||||||
|
var currentItem = this.core.galleryItems[index];
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.shareOptions.forEach(function (shareOption) {
|
||||||
|
var selector = shareOption.selector;
|
||||||
|
_this.core.outer
|
||||||
|
.find(selector)
|
||||||
|
.attr('href', shareOption.generateLink(currentItem));
|
||||||
|
});
|
||||||
|
}, 100);
|
||||||
|
};
|
||||||
|
Share.prototype.getShareListItemHTML = function (type, text) {
|
||||||
|
return "<li><a class=\"lg-share-" + type + "\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">" + text + "</span></a></li>";
|
||||||
|
};
|
||||||
|
Share.prototype.getDefaultShareOptions = function () {
|
||||||
|
return __spreadArrays((this.settings.facebook
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
type: 'facebook',
|
||||||
|
generateLink: getFacebookShareLink,
|
||||||
|
dropdownHTML: this.getShareListItemHTML('facebook', this.settings.facebookDropdownText),
|
||||||
|
selector: '.lg-share-facebook',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []), (this.settings.twitter
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
type: 'twitter',
|
||||||
|
generateLink: getTwitterShareLink,
|
||||||
|
dropdownHTML: this.getShareListItemHTML('twitter', this.settings.twitterDropdownText),
|
||||||
|
selector: '.lg-share-twitter',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []), (this.settings.pinterest
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
type: 'pinterest',
|
||||||
|
generateLink: getPinterestShareLink,
|
||||||
|
dropdownHTML: this.getShareListItemHTML('pinterest', this.settings.pinterestDropdownText),
|
||||||
|
selector: '.lg-share-pinterest',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: []));
|
||||||
|
};
|
||||||
|
Share.prototype.destroy = function () {
|
||||||
|
this.core.outer.find('.lg-dropdown-overlay').remove();
|
||||||
|
this.core.outer.find('.lg-share').remove();
|
||||||
|
this.core.LGel.off('.lg.share');
|
||||||
|
this.core.LGel.off('.share');
|
||||||
|
};
|
||||||
|
return Share;
|
||||||
|
}());
|
||||||
|
|
||||||
|
return Share;
|
||||||
|
|
||||||
|
})));
|
||||||
494
assets/js/plugins/lg-thumbnail.umd.js
Normal file
@ -0,0 +1,494 @@
|
|||||||
|
/*!
|
||||||
|
* lightgallery | 2.8.2 | November 28th 2024
|
||||||
|
* http://www.lightgalleryjs.com/
|
||||||
|
* Copyright (c) 2020 Sachin Neravath;
|
||||||
|
* @license GPLv3
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgThumbnail = factory());
|
||||||
|
}(this, (function () { 'use strict';
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
var __assign = function() {
|
||||||
|
__assign = Object.assign || function __assign(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
var thumbnailsSettings = {
|
||||||
|
thumbnail: true,
|
||||||
|
animateThumb: true,
|
||||||
|
currentPagerPosition: 'middle',
|
||||||
|
alignThumbnails: 'middle',
|
||||||
|
thumbWidth: 100,
|
||||||
|
thumbHeight: '80px',
|
||||||
|
thumbMargin: 5,
|
||||||
|
appendThumbnailsTo: '.lg-components',
|
||||||
|
toggleThumb: false,
|
||||||
|
enableThumbDrag: true,
|
||||||
|
enableThumbSwipe: true,
|
||||||
|
thumbnailSwipeThreshold: 10,
|
||||||
|
loadYouTubeThumbnail: true,
|
||||||
|
youTubeThumbSize: 1,
|
||||||
|
thumbnailPluginStrings: {
|
||||||
|
toggleThumbnails: 'Toggle thumbnails',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of lightGallery events
|
||||||
|
* All events should be documented here
|
||||||
|
* Below interfaces are used to build the website documentations
|
||||||
|
* */
|
||||||
|
var lGEvents = {
|
||||||
|
afterAppendSlide: 'lgAfterAppendSlide',
|
||||||
|
init: 'lgInit',
|
||||||
|
hasVideo: 'lgHasVideo',
|
||||||
|
containerResize: 'lgContainerResize',
|
||||||
|
updateSlides: 'lgUpdateSlides',
|
||||||
|
afterAppendSubHtml: 'lgAfterAppendSubHtml',
|
||||||
|
beforeOpen: 'lgBeforeOpen',
|
||||||
|
afterOpen: 'lgAfterOpen',
|
||||||
|
slideItemLoad: 'lgSlideItemLoad',
|
||||||
|
beforeSlide: 'lgBeforeSlide',
|
||||||
|
afterSlide: 'lgAfterSlide',
|
||||||
|
posterClick: 'lgPosterClick',
|
||||||
|
dragStart: 'lgDragStart',
|
||||||
|
dragMove: 'lgDragMove',
|
||||||
|
dragEnd: 'lgDragEnd',
|
||||||
|
beforeNextSlide: 'lgBeforeNextSlide',
|
||||||
|
beforePrevSlide: 'lgBeforePrevSlide',
|
||||||
|
beforeClose: 'lgBeforeClose',
|
||||||
|
afterClose: 'lgAfterClose',
|
||||||
|
rotateLeft: 'lgRotateLeft',
|
||||||
|
rotateRight: 'lgRotateRight',
|
||||||
|
flipHorizontal: 'lgFlipHorizontal',
|
||||||
|
flipVertical: 'lgFlipVertical',
|
||||||
|
autoplay: 'lgAutoplay',
|
||||||
|
autoplayStart: 'lgAutoplayStart',
|
||||||
|
autoplayStop: 'lgAutoplayStop',
|
||||||
|
};
|
||||||
|
|
||||||
|
var Thumbnail = /** @class */ (function () {
|
||||||
|
function Thumbnail(instance, $LG) {
|
||||||
|
this.thumbOuterWidth = 0;
|
||||||
|
this.thumbTotalWidth = 0;
|
||||||
|
this.translateX = 0;
|
||||||
|
this.thumbClickable = false;
|
||||||
|
// get lightGallery core plugin instance
|
||||||
|
this.core = instance;
|
||||||
|
this.$LG = $LG;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
Thumbnail.prototype.init = function () {
|
||||||
|
// extend module default settings with lightGallery core settings
|
||||||
|
this.settings = __assign(__assign({}, thumbnailsSettings), this.core.settings);
|
||||||
|
this.thumbOuterWidth = 0;
|
||||||
|
this.thumbTotalWidth =
|
||||||
|
this.core.galleryItems.length *
|
||||||
|
(this.settings.thumbWidth + this.settings.thumbMargin);
|
||||||
|
// Thumbnail animation value
|
||||||
|
this.translateX = 0;
|
||||||
|
this.setAnimateThumbStyles();
|
||||||
|
if (!this.core.settings.allowMediaOverlap) {
|
||||||
|
this.settings.toggleThumb = false;
|
||||||
|
}
|
||||||
|
if (this.settings.thumbnail) {
|
||||||
|
this.build();
|
||||||
|
if (this.settings.animateThumb) {
|
||||||
|
if (this.settings.enableThumbDrag) {
|
||||||
|
this.enableThumbDrag();
|
||||||
|
}
|
||||||
|
if (this.settings.enableThumbSwipe) {
|
||||||
|
this.enableThumbSwipe();
|
||||||
|
}
|
||||||
|
this.thumbClickable = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.thumbClickable = true;
|
||||||
|
}
|
||||||
|
this.toggleThumbBar();
|
||||||
|
this.thumbKeyPress();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.build = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.setThumbMarkup();
|
||||||
|
this.manageActiveClassOnSlideChange();
|
||||||
|
this.$lgThumb.first().on('click.lg touchend.lg', function (e) {
|
||||||
|
var $target = _this.$LG(e.target);
|
||||||
|
if (!$target.hasAttribute('data-lg-item-id')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setTimeout(function () {
|
||||||
|
// In IE9 and bellow touch does not support
|
||||||
|
// Go to slide if browser does not support css transitions
|
||||||
|
if (_this.thumbClickable && !_this.core.lgBusy) {
|
||||||
|
var index = parseInt($target.attr('data-lg-item-id'));
|
||||||
|
_this.core.slide(index, false, true, false);
|
||||||
|
}
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
|
||||||
|
var index = event.detail.index;
|
||||||
|
_this.animateThumb(index);
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.beforeOpen + ".thumb", function () {
|
||||||
|
_this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.updateSlides + ".thumb", function () {
|
||||||
|
_this.rebuildThumbnails();
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.containerResize + ".thumb", function () {
|
||||||
|
if (!_this.core.lgOpened)
|
||||||
|
return;
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
|
||||||
|
_this.animateThumb(_this.core.index);
|
||||||
|
_this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.setThumbMarkup = function () {
|
||||||
|
var thumbOuterClassNames = 'lg-thumb-outer ';
|
||||||
|
if (this.settings.alignThumbnails) {
|
||||||
|
thumbOuterClassNames += "lg-thumb-align-" + this.settings.alignThumbnails;
|
||||||
|
}
|
||||||
|
var html = "<div class=\"" + thumbOuterClassNames + "\">\n <div class=\"lg-thumb lg-group\">\n </div>\n </div>";
|
||||||
|
this.core.outer.addClass('lg-has-thumb');
|
||||||
|
if (this.settings.appendThumbnailsTo === '.lg-components') {
|
||||||
|
this.core.$lgComponents.append(html);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.core.outer.append(html);
|
||||||
|
}
|
||||||
|
this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();
|
||||||
|
this.$lgThumb = this.core.outer.find('.lg-thumb').first();
|
||||||
|
if (this.settings.animateThumb) {
|
||||||
|
this.core.outer
|
||||||
|
.find('.lg-thumb')
|
||||||
|
.css('transition-duration', this.core.settings.speed + 'ms')
|
||||||
|
.css('width', this.thumbTotalWidth + 'px')
|
||||||
|
.css('position', 'relative');
|
||||||
|
}
|
||||||
|
this.setThumbItemHtml(this.core.galleryItems);
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.enableThumbDrag = function () {
|
||||||
|
var _this = this;
|
||||||
|
var thumbDragUtils = {
|
||||||
|
cords: {
|
||||||
|
startX: 0,
|
||||||
|
endX: 0,
|
||||||
|
},
|
||||||
|
isMoved: false,
|
||||||
|
newTranslateX: 0,
|
||||||
|
startTime: new Date(),
|
||||||
|
endTime: new Date(),
|
||||||
|
touchMoveTime: 0,
|
||||||
|
};
|
||||||
|
var isDragging = false;
|
||||||
|
this.$thumbOuter.addClass('lg-grab');
|
||||||
|
this.core.outer
|
||||||
|
.find('.lg-thumb')
|
||||||
|
.first()
|
||||||
|
.on('mousedown.lg.thumb', function (e) {
|
||||||
|
if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
|
||||||
|
// execute only on .lg-object
|
||||||
|
e.preventDefault();
|
||||||
|
thumbDragUtils.cords.startX = e.pageX;
|
||||||
|
thumbDragUtils.startTime = new Date();
|
||||||
|
_this.thumbClickable = false;
|
||||||
|
isDragging = true;
|
||||||
|
// ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
|
||||||
|
_this.core.outer.get().scrollLeft += 1;
|
||||||
|
_this.core.outer.get().scrollLeft -= 1;
|
||||||
|
// *
|
||||||
|
_this.$thumbOuter
|
||||||
|
.removeClass('lg-grab')
|
||||||
|
.addClass('lg-grabbing');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$LG(window).on("mousemove.lg.thumb.global" + this.core.lgId, function (e) {
|
||||||
|
if (!_this.core.lgOpened)
|
||||||
|
return;
|
||||||
|
if (isDragging) {
|
||||||
|
thumbDragUtils.cords.endX = e.pageX;
|
||||||
|
thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$LG(window).on("mouseup.lg.thumb.global" + this.core.lgId, function () {
|
||||||
|
if (!_this.core.lgOpened)
|
||||||
|
return;
|
||||||
|
if (thumbDragUtils.isMoved) {
|
||||||
|
thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this.thumbClickable = true;
|
||||||
|
}
|
||||||
|
if (isDragging) {
|
||||||
|
isDragging = false;
|
||||||
|
_this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.enableThumbSwipe = function () {
|
||||||
|
var _this = this;
|
||||||
|
var thumbDragUtils = {
|
||||||
|
cords: {
|
||||||
|
startX: 0,
|
||||||
|
endX: 0,
|
||||||
|
},
|
||||||
|
isMoved: false,
|
||||||
|
newTranslateX: 0,
|
||||||
|
startTime: new Date(),
|
||||||
|
endTime: new Date(),
|
||||||
|
touchMoveTime: 0,
|
||||||
|
};
|
||||||
|
this.$lgThumb.on('touchstart.lg', function (e) {
|
||||||
|
if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
|
||||||
|
e.preventDefault();
|
||||||
|
thumbDragUtils.cords.startX = e.targetTouches[0].pageX;
|
||||||
|
_this.thumbClickable = false;
|
||||||
|
thumbDragUtils.startTime = new Date();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$lgThumb.on('touchmove.lg', function (e) {
|
||||||
|
if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
|
||||||
|
e.preventDefault();
|
||||||
|
thumbDragUtils.cords.endX = e.targetTouches[0].pageX;
|
||||||
|
thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$lgThumb.on('touchend.lg', function () {
|
||||||
|
if (thumbDragUtils.isMoved) {
|
||||||
|
thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this.thumbClickable = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// Rebuild thumbnails
|
||||||
|
Thumbnail.prototype.rebuildThumbnails = function () {
|
||||||
|
var _this = this;
|
||||||
|
// Remove transitions
|
||||||
|
this.$thumbOuter.addClass('lg-rebuilding-thumbnails');
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.thumbTotalWidth =
|
||||||
|
_this.core.galleryItems.length *
|
||||||
|
(_this.settings.thumbWidth + _this.settings.thumbMargin);
|
||||||
|
_this.$lgThumb.css('width', _this.thumbTotalWidth + 'px');
|
||||||
|
_this.$lgThumb.empty();
|
||||||
|
_this.setThumbItemHtml(_this.core.galleryItems);
|
||||||
|
_this.animateThumb(_this.core.index);
|
||||||
|
}, 50);
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');
|
||||||
|
}, 200);
|
||||||
|
};
|
||||||
|
// @ts-check
|
||||||
|
Thumbnail.prototype.setTranslate = function (value) {
|
||||||
|
this.$lgThumb.css('transform', 'translate3d(-' + value + 'px, 0px, 0px)');
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.getPossibleTransformX = function (left) {
|
||||||
|
if (left > this.thumbTotalWidth - this.thumbOuterWidth) {
|
||||||
|
left = this.thumbTotalWidth - this.thumbOuterWidth;
|
||||||
|
}
|
||||||
|
if (left < 0) {
|
||||||
|
left = 0;
|
||||||
|
}
|
||||||
|
return left;
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.animateThumb = function (index) {
|
||||||
|
this.$lgThumb.css('transition-duration', this.core.settings.speed + 'ms');
|
||||||
|
if (this.settings.animateThumb) {
|
||||||
|
var position = 0;
|
||||||
|
switch (this.settings.currentPagerPosition) {
|
||||||
|
case 'left':
|
||||||
|
position = 0;
|
||||||
|
break;
|
||||||
|
case 'middle':
|
||||||
|
position =
|
||||||
|
this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;
|
||||||
|
break;
|
||||||
|
case 'right':
|
||||||
|
position = this.thumbOuterWidth - this.settings.thumbWidth;
|
||||||
|
}
|
||||||
|
this.translateX =
|
||||||
|
(this.settings.thumbWidth + this.settings.thumbMargin) * index -
|
||||||
|
1 -
|
||||||
|
position;
|
||||||
|
if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {
|
||||||
|
this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;
|
||||||
|
}
|
||||||
|
if (this.translateX < 0) {
|
||||||
|
this.translateX = 0;
|
||||||
|
}
|
||||||
|
this.setTranslate(this.translateX);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.onThumbTouchMove = function (thumbDragUtils) {
|
||||||
|
thumbDragUtils.newTranslateX = this.translateX;
|
||||||
|
thumbDragUtils.isMoved = true;
|
||||||
|
thumbDragUtils.touchMoveTime = new Date().valueOf();
|
||||||
|
thumbDragUtils.newTranslateX -=
|
||||||
|
thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
|
||||||
|
thumbDragUtils.newTranslateX = this.getPossibleTransformX(thumbDragUtils.newTranslateX);
|
||||||
|
// move current slide
|
||||||
|
this.setTranslate(thumbDragUtils.newTranslateX);
|
||||||
|
this.$thumbOuter.addClass('lg-dragging');
|
||||||
|
return thumbDragUtils;
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.onThumbTouchEnd = function (thumbDragUtils) {
|
||||||
|
thumbDragUtils.isMoved = false;
|
||||||
|
thumbDragUtils.endTime = new Date();
|
||||||
|
this.$thumbOuter.removeClass('lg-dragging');
|
||||||
|
var touchDuration = thumbDragUtils.endTime.valueOf() -
|
||||||
|
thumbDragUtils.startTime.valueOf();
|
||||||
|
var distanceXnew = thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
|
||||||
|
var speedX = Math.abs(distanceXnew) / touchDuration;
|
||||||
|
// Some magical numbers
|
||||||
|
// Can be improved
|
||||||
|
if (speedX > 0.15 &&
|
||||||
|
thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30) {
|
||||||
|
speedX += 1;
|
||||||
|
if (speedX > 2) {
|
||||||
|
speedX += 1;
|
||||||
|
}
|
||||||
|
speedX =
|
||||||
|
speedX +
|
||||||
|
speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);
|
||||||
|
this.$lgThumb.css('transition-duration', Math.min(speedX - 1, 2) + 'settings');
|
||||||
|
distanceXnew = distanceXnew * speedX;
|
||||||
|
this.translateX = this.getPossibleTransformX(this.translateX - distanceXnew);
|
||||||
|
this.setTranslate(this.translateX);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.translateX = thumbDragUtils.newTranslateX;
|
||||||
|
}
|
||||||
|
if (Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <
|
||||||
|
this.settings.thumbnailSwipeThreshold) {
|
||||||
|
this.thumbClickable = true;
|
||||||
|
}
|
||||||
|
return thumbDragUtils;
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.getThumbHtml = function (thumb, index, alt) {
|
||||||
|
var slideVideoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
|
||||||
|
var thumbImg;
|
||||||
|
if (slideVideoInfo.youtube) {
|
||||||
|
if (this.settings.loadYouTubeThumbnail) {
|
||||||
|
thumbImg =
|
||||||
|
'//img.youtube.com/vi/' +
|
||||||
|
slideVideoInfo.youtube[1] +
|
||||||
|
'/' +
|
||||||
|
this.settings.youTubeThumbSize +
|
||||||
|
'.jpg';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
thumbImg = thumb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
thumbImg = thumb;
|
||||||
|
}
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.setAttribute('data-lg-item-id', index + '');
|
||||||
|
div.className = "lg-thumb-item " + (index === this.core.index ? 'active' : '');
|
||||||
|
div.style.cssText = "width: " + this.settings.thumbWidth + "px; height: " + this.settings.thumbHeight + "; margin-right: " + this.settings.thumbMargin + "px;";
|
||||||
|
var img = document.createElement('img');
|
||||||
|
img.alt = alt || '';
|
||||||
|
img.setAttribute('data-lg-item-id', index + '');
|
||||||
|
img.src = thumbImg;
|
||||||
|
div.appendChild(img);
|
||||||
|
return div;
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.setThumbItemHtml = function (items) {
|
||||||
|
for (var i = 0; i < items.length; i++) {
|
||||||
|
var thumb = this.getThumbHtml(items[i].thumb, i, items[i].alt);
|
||||||
|
this.$lgThumb.append(thumb);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.setAnimateThumbStyles = function () {
|
||||||
|
if (this.settings.animateThumb) {
|
||||||
|
this.core.outer.addClass('lg-animate-thumb');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// Manage thumbnail active calss
|
||||||
|
Thumbnail.prototype.manageActiveClassOnSlideChange = function () {
|
||||||
|
var _this = this;
|
||||||
|
// manage active class for thumbnail
|
||||||
|
this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
|
||||||
|
var $thumb = _this.core.outer.find('.lg-thumb-item');
|
||||||
|
var index = event.detail.index;
|
||||||
|
$thumb.removeClass('active');
|
||||||
|
$thumb.eq(index).addClass('active');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// Toggle thumbnail bar
|
||||||
|
Thumbnail.prototype.toggleThumbBar = function () {
|
||||||
|
var _this = this;
|
||||||
|
if (this.settings.toggleThumb) {
|
||||||
|
this.core.outer.addClass('lg-can-toggle');
|
||||||
|
this.core.$toolbar.append('<button type="button" aria-label="' +
|
||||||
|
this.settings.thumbnailPluginStrings['toggleThumbnails'] +
|
||||||
|
'" class="lg-toggle-thumb lg-icon"></button>');
|
||||||
|
this.core.outer
|
||||||
|
.find('.lg-toggle-thumb')
|
||||||
|
.first()
|
||||||
|
.on('click.lg', function () {
|
||||||
|
_this.core.outer.toggleClass('lg-components-open');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.thumbKeyPress = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.$LG(window).on("keydown.lg.thumb.global" + this.core.lgId, function (e) {
|
||||||
|
if (!_this.core.lgOpened || !_this.settings.toggleThumb)
|
||||||
|
return;
|
||||||
|
if (e.keyCode === 38) {
|
||||||
|
e.preventDefault();
|
||||||
|
_this.core.outer.addClass('lg-components-open');
|
||||||
|
}
|
||||||
|
else if (e.keyCode === 40) {
|
||||||
|
e.preventDefault();
|
||||||
|
_this.core.outer.removeClass('lg-components-open');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Thumbnail.prototype.destroy = function () {
|
||||||
|
if (this.settings.thumbnail) {
|
||||||
|
this.$LG(window).off(".lg.thumb.global" + this.core.lgId);
|
||||||
|
this.core.LGel.off('.lg.thumb');
|
||||||
|
this.core.LGel.off('.thumb');
|
||||||
|
this.$thumbOuter.remove();
|
||||||
|
this.core.outer.removeClass('lg-has-thumb');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return Thumbnail;
|
||||||
|
}());
|
||||||
|
|
||||||
|
return Thumbnail;
|
||||||
|
|
||||||
|
})));
|
||||||
987
assets/js/plugins/lg-zoom.umd.js
Normal file
@ -0,0 +1,987 @@
|
|||||||
|
/*!
|
||||||
|
* lightgallery | 2.8.2 | November 28th 2024
|
||||||
|
* http://www.lightgalleryjs.com/
|
||||||
|
* Copyright (c) 2020 Sachin Neravath;
|
||||||
|
* @license GPLv3
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgZoom = factory());
|
||||||
|
}(this, (function () { 'use strict';
|
||||||
|
|
||||||
|
/*! *****************************************************************************
|
||||||
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||||
|
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||||
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||||
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||||
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
***************************************************************************** */
|
||||||
|
|
||||||
|
var __assign = function() {
|
||||||
|
__assign = Object.assign || function __assign(t) {
|
||||||
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||||
|
s = arguments[i];
|
||||||
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
};
|
||||||
|
return __assign.apply(this, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
var zoomSettings = {
|
||||||
|
scale: 1,
|
||||||
|
zoom: true,
|
||||||
|
infiniteZoom: true,
|
||||||
|
actualSize: true,
|
||||||
|
showZoomInOutIcons: false,
|
||||||
|
actualSizeIcons: {
|
||||||
|
zoomIn: 'lg-zoom-in',
|
||||||
|
zoomOut: 'lg-zoom-out',
|
||||||
|
},
|
||||||
|
enableZoomAfter: 300,
|
||||||
|
zoomPluginStrings: {
|
||||||
|
zoomIn: 'Zoom in',
|
||||||
|
zoomOut: 'Zoom out',
|
||||||
|
viewActualSize: 'View actual size',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of lightGallery events
|
||||||
|
* All events should be documented here
|
||||||
|
* Below interfaces are used to build the website documentations
|
||||||
|
* */
|
||||||
|
var lGEvents = {
|
||||||
|
afterAppendSlide: 'lgAfterAppendSlide',
|
||||||
|
init: 'lgInit',
|
||||||
|
hasVideo: 'lgHasVideo',
|
||||||
|
containerResize: 'lgContainerResize',
|
||||||
|
updateSlides: 'lgUpdateSlides',
|
||||||
|
afterAppendSubHtml: 'lgAfterAppendSubHtml',
|
||||||
|
beforeOpen: 'lgBeforeOpen',
|
||||||
|
afterOpen: 'lgAfterOpen',
|
||||||
|
slideItemLoad: 'lgSlideItemLoad',
|
||||||
|
beforeSlide: 'lgBeforeSlide',
|
||||||
|
afterSlide: 'lgAfterSlide',
|
||||||
|
posterClick: 'lgPosterClick',
|
||||||
|
dragStart: 'lgDragStart',
|
||||||
|
dragMove: 'lgDragMove',
|
||||||
|
dragEnd: 'lgDragEnd',
|
||||||
|
beforeNextSlide: 'lgBeforeNextSlide',
|
||||||
|
beforePrevSlide: 'lgBeforePrevSlide',
|
||||||
|
beforeClose: 'lgBeforeClose',
|
||||||
|
afterClose: 'lgAfterClose',
|
||||||
|
rotateLeft: 'lgRotateLeft',
|
||||||
|
rotateRight: 'lgRotateRight',
|
||||||
|
flipHorizontal: 'lgFlipHorizontal',
|
||||||
|
flipVertical: 'lgFlipVertical',
|
||||||
|
autoplay: 'lgAutoplay',
|
||||||
|
autoplayStart: 'lgAutoplayStart',
|
||||||
|
autoplayStop: 'lgAutoplayStop',
|
||||||
|
};
|
||||||
|
|
||||||
|
var ZOOM_TRANSITION_DURATION = 500;
|
||||||
|
var Zoom = /** @class */ (function () {
|
||||||
|
function Zoom(instance, $LG) {
|
||||||
|
// get lightGallery core plugin instance
|
||||||
|
this.core = instance;
|
||||||
|
this.$LG = $LG;
|
||||||
|
this.settings = __assign(__assign({}, zoomSettings), this.core.settings);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
// Append Zoom controls. Actual size, Zoom-in, Zoom-out
|
||||||
|
Zoom.prototype.buildTemplates = function () {
|
||||||
|
var zoomIcons = this.settings.showZoomInOutIcons
|
||||||
|
? "<button id=\"" + this.core.getIdName('lg-zoom-in') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomIn'] + "\" class=\"lg-zoom-in lg-icon\"></button><button id=\"" + this.core.getIdName('lg-zoom-out') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomOut'] + "\" class=\"lg-zoom-out lg-icon\"></button>"
|
||||||
|
: '';
|
||||||
|
if (this.settings.actualSize) {
|
||||||
|
zoomIcons += "<button id=\"" + this.core.getIdName('lg-actual-size') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['viewActualSize'] + "\" class=\"" + this.settings.actualSizeIcons.zoomIn + " lg-icon\"></button>";
|
||||||
|
}
|
||||||
|
this.core.outer.addClass('lg-use-transition-for-zoom');
|
||||||
|
this.core.$toolbar.first().append(zoomIcons);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @desc Enable zoom option only once the image is completely loaded
|
||||||
|
* If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted
|
||||||
|
*
|
||||||
|
* Zoom styles are defined under lg-zoomable CSS class.
|
||||||
|
*/
|
||||||
|
Zoom.prototype.enableZoom = function (event) {
|
||||||
|
var _this = this;
|
||||||
|
// delay will be 0 except first time
|
||||||
|
var _speed = this.settings.enableZoomAfter + event.detail.delay;
|
||||||
|
// set _speed value 0 if gallery opened from direct url and if it is first slide
|
||||||
|
if (this.$LG('body').first().hasClass('lg-from-hash') &&
|
||||||
|
event.detail.delay) {
|
||||||
|
// will execute only once
|
||||||
|
_speed = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Remove lg-from-hash to enable starting animation.
|
||||||
|
this.$LG('body').first().removeClass('lg-from-hash');
|
||||||
|
}
|
||||||
|
this.zoomableTimeout = setTimeout(function () {
|
||||||
|
if (!_this.isImageSlide(_this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');
|
||||||
|
if (event.detail.index === _this.core.index) {
|
||||||
|
_this.setZoomEssentials();
|
||||||
|
}
|
||||||
|
}, _speed + 30);
|
||||||
|
};
|
||||||
|
Zoom.prototype.enableZoomOnSlideItemLoad = function () {
|
||||||
|
// Add zoomable class
|
||||||
|
this.core.LGel.on(lGEvents.slideItemLoad + ".zoom", this.enableZoom.bind(this));
|
||||||
|
};
|
||||||
|
Zoom.prototype.getDragCords = function (e) {
|
||||||
|
return {
|
||||||
|
x: e.pageX,
|
||||||
|
y: e.pageY,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Zoom.prototype.getSwipeCords = function (e) {
|
||||||
|
var x = e.touches[0].pageX;
|
||||||
|
var y = e.touches[0].pageY;
|
||||||
|
return {
|
||||||
|
x: x,
|
||||||
|
y: y,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Zoom.prototype.getDragAllowedAxises = function (scale, scaleDiff) {
|
||||||
|
if (!this.containerRect) {
|
||||||
|
return {
|
||||||
|
allowX: false,
|
||||||
|
allowY: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
var $image = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-image')
|
||||||
|
.first()
|
||||||
|
.get();
|
||||||
|
var height = 0;
|
||||||
|
var width = 0;
|
||||||
|
var rect = $image.getBoundingClientRect();
|
||||||
|
if (scale) {
|
||||||
|
height = $image.offsetHeight * scale;
|
||||||
|
width = $image.offsetWidth * scale;
|
||||||
|
}
|
||||||
|
else if (scaleDiff) {
|
||||||
|
height = rect.height + scaleDiff * rect.height;
|
||||||
|
width = rect.width + scaleDiff * rect.width;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
height = rect.height;
|
||||||
|
width = rect.width;
|
||||||
|
}
|
||||||
|
var allowY = height > this.containerRect.height;
|
||||||
|
var allowX = width > this.containerRect.width;
|
||||||
|
return {
|
||||||
|
allowX: allowX,
|
||||||
|
allowY: allowY,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Zoom.prototype.setZoomEssentials = function () {
|
||||||
|
this.containerRect = this.core.$content.get().getBoundingClientRect();
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @desc Image zoom
|
||||||
|
* Translate the wrap and scale the image to get better user experience
|
||||||
|
*
|
||||||
|
* @param {String} scale - Zoom decrement/increment value
|
||||||
|
*/
|
||||||
|
Zoom.prototype.zoomImage = function (scale, scaleDiff, reposition, resetToMax) {
|
||||||
|
if (Math.abs(scaleDiff) <= 0)
|
||||||
|
return;
|
||||||
|
var offsetX = this.containerRect.width / 2 + this.containerRect.left;
|
||||||
|
var offsetY = this.containerRect.height / 2 +
|
||||||
|
this.containerRect.top +
|
||||||
|
this.scrollTop;
|
||||||
|
var originalX;
|
||||||
|
var originalY;
|
||||||
|
if (scale === 1) {
|
||||||
|
this.positionChanged = false;
|
||||||
|
}
|
||||||
|
var dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);
|
||||||
|
var allowY = dragAllowedAxises.allowY, allowX = dragAllowedAxises.allowX;
|
||||||
|
if (this.positionChanged) {
|
||||||
|
originalX = this.left / (this.scale - scaleDiff);
|
||||||
|
originalY = this.top / (this.scale - scaleDiff);
|
||||||
|
this.pageX = offsetX - originalX;
|
||||||
|
this.pageY = offsetY - originalY;
|
||||||
|
this.positionChanged = false;
|
||||||
|
}
|
||||||
|
var possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);
|
||||||
|
var x;
|
||||||
|
var y;
|
||||||
|
var _x = offsetX - this.pageX;
|
||||||
|
var _y = offsetY - this.pageY;
|
||||||
|
if (scale - scaleDiff > 1) {
|
||||||
|
var scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);
|
||||||
|
_x =
|
||||||
|
(scaleDiff < 0 ? -_x : _x) +
|
||||||
|
this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));
|
||||||
|
_y =
|
||||||
|
(scaleDiff < 0 ? -_y : _y) +
|
||||||
|
this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));
|
||||||
|
x = _x / scaleVal;
|
||||||
|
y = _y / scaleVal;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var scaleVal = (scale - scaleDiff) * scaleDiff;
|
||||||
|
x = _x * scaleVal;
|
||||||
|
y = _y * scaleVal;
|
||||||
|
}
|
||||||
|
if (reposition) {
|
||||||
|
if (allowX) {
|
||||||
|
if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {
|
||||||
|
x = possibleSwipeCords.minX;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)) {
|
||||||
|
x = possibleSwipeCords.maxX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (scale > 1) {
|
||||||
|
if (x < possibleSwipeCords.minX) {
|
||||||
|
x = possibleSwipeCords.minX;
|
||||||
|
}
|
||||||
|
else if (x > possibleSwipeCords.maxX) {
|
||||||
|
x = possibleSwipeCords.maxX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @todo fix this
|
||||||
|
if (allowY) {
|
||||||
|
if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {
|
||||||
|
y = possibleSwipeCords.minY;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)) {
|
||||||
|
y = possibleSwipeCords.maxY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out
|
||||||
|
if (scale > 1) {
|
||||||
|
//If image goes beyond viewport top, use the minim possible translate value
|
||||||
|
if (y < possibleSwipeCords.minY) {
|
||||||
|
y = possibleSwipeCords.minY;
|
||||||
|
}
|
||||||
|
else if (y > possibleSwipeCords.maxY) {
|
||||||
|
y = possibleSwipeCords.maxY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.setZoomStyles({
|
||||||
|
x: x,
|
||||||
|
y: y,
|
||||||
|
scale: scale,
|
||||||
|
});
|
||||||
|
this.left = x;
|
||||||
|
this.top = y;
|
||||||
|
if (resetToMax) {
|
||||||
|
this.setZoomImageSize();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Zoom.prototype.resetImageTranslate = function (index) {
|
||||||
|
if (!this.isImageSlide(index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var $image = this.core.getSlideItem(index).find('.lg-image').first();
|
||||||
|
this.imageReset = false;
|
||||||
|
$image.removeClass('reset-transition reset-transition-y reset-transition-x');
|
||||||
|
this.core.outer.removeClass('lg-actual-size');
|
||||||
|
$image.css('width', 'auto').css('height', 'auto');
|
||||||
|
setTimeout(function () {
|
||||||
|
$image.removeClass('no-transition');
|
||||||
|
}, 10);
|
||||||
|
};
|
||||||
|
Zoom.prototype.setZoomImageSize = function () {
|
||||||
|
var _this = this;
|
||||||
|
var $image = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-image')
|
||||||
|
.first();
|
||||||
|
setTimeout(function () {
|
||||||
|
var actualSizeScale = _this.getCurrentImageActualSizeScale();
|
||||||
|
if (_this.scale >= actualSizeScale) {
|
||||||
|
$image.addClass('no-transition');
|
||||||
|
_this.imageReset = true;
|
||||||
|
}
|
||||||
|
}, ZOOM_TRANSITION_DURATION);
|
||||||
|
setTimeout(function () {
|
||||||
|
var actualSizeScale = _this.getCurrentImageActualSizeScale();
|
||||||
|
if (_this.scale >= actualSizeScale) {
|
||||||
|
var dragAllowedAxises = _this.getDragAllowedAxises(_this.scale);
|
||||||
|
$image
|
||||||
|
.css('width', $image.get().naturalWidth + 'px')
|
||||||
|
.css('height', $image.get().naturalHeight + 'px');
|
||||||
|
_this.core.outer.addClass('lg-actual-size');
|
||||||
|
if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {
|
||||||
|
$image.addClass('reset-transition');
|
||||||
|
}
|
||||||
|
else if (dragAllowedAxises.allowX &&
|
||||||
|
!dragAllowedAxises.allowY) {
|
||||||
|
$image.addClass('reset-transition-x');
|
||||||
|
}
|
||||||
|
else if (!dragAllowedAxises.allowX &&
|
||||||
|
dragAllowedAxises.allowY) {
|
||||||
|
$image.addClass('reset-transition-y');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, ZOOM_TRANSITION_DURATION + 50);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @desc apply scale3d to image and translate to image wrap
|
||||||
|
* @param {style} X,Y and scale
|
||||||
|
*/
|
||||||
|
Zoom.prototype.setZoomStyles = function (style) {
|
||||||
|
var $imageWrap = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-img-wrap')
|
||||||
|
.first();
|
||||||
|
var $image = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-image')
|
||||||
|
.first();
|
||||||
|
var $dummyImage = this.core.outer
|
||||||
|
.find('.lg-current .lg-dummy-img')
|
||||||
|
.first();
|
||||||
|
this.scale = style.scale;
|
||||||
|
$image.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
|
||||||
|
$dummyImage.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
|
||||||
|
var transform = 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';
|
||||||
|
$imageWrap.css('transform', transform);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @param index - Index of the current slide
|
||||||
|
* @param event - event will be available only if the function is called on clicking/taping the imags
|
||||||
|
*/
|
||||||
|
Zoom.prototype.setActualSize = function (index, event) {
|
||||||
|
var _this = this;
|
||||||
|
if (this.zoomInProgress) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.zoomInProgress = true;
|
||||||
|
var currentItem = this.core.galleryItems[this.core.index];
|
||||||
|
this.resetImageTranslate(index);
|
||||||
|
setTimeout(function () {
|
||||||
|
// Allow zoom only on image
|
||||||
|
if (!currentItem.src ||
|
||||||
|
_this.core.outer.hasClass('lg-first-slide-loading')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var scale = _this.getCurrentImageActualSizeScale();
|
||||||
|
var prevScale = _this.scale;
|
||||||
|
if (_this.core.outer.hasClass('lg-zoomed')) {
|
||||||
|
_this.scale = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_this.scale = _this.getScale(scale);
|
||||||
|
}
|
||||||
|
_this.setPageCords(event);
|
||||||
|
_this.beginZoom(_this.scale);
|
||||||
|
_this.zoomImage(_this.scale, _this.scale - prevScale, true, true);
|
||||||
|
}, 50);
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
|
||||||
|
}, 60);
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.zoomInProgress = false;
|
||||||
|
}, ZOOM_TRANSITION_DURATION + 110);
|
||||||
|
};
|
||||||
|
Zoom.prototype.getNaturalWidth = function (index) {
|
||||||
|
var $image = this.core.getSlideItem(index).find('.lg-image').first();
|
||||||
|
var naturalWidth = this.core.galleryItems[index].width;
|
||||||
|
return naturalWidth
|
||||||
|
? parseFloat(naturalWidth)
|
||||||
|
: $image.get().naturalWidth;
|
||||||
|
};
|
||||||
|
Zoom.prototype.getActualSizeScale = function (naturalWidth, width) {
|
||||||
|
var _scale;
|
||||||
|
var scale;
|
||||||
|
if (naturalWidth >= width) {
|
||||||
|
_scale = naturalWidth / width;
|
||||||
|
scale = _scale || 2;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
scale = 1;
|
||||||
|
}
|
||||||
|
return scale;
|
||||||
|
};
|
||||||
|
Zoom.prototype.getCurrentImageActualSizeScale = function () {
|
||||||
|
var $image = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-image')
|
||||||
|
.first();
|
||||||
|
var width = $image.get().offsetWidth;
|
||||||
|
var naturalWidth = this.getNaturalWidth(this.core.index) || width;
|
||||||
|
return this.getActualSizeScale(naturalWidth, width);
|
||||||
|
};
|
||||||
|
Zoom.prototype.getPageCords = function (event) {
|
||||||
|
var cords = {};
|
||||||
|
if (event) {
|
||||||
|
cords.x = event.pageX || event.touches[0].pageX;
|
||||||
|
cords.y = event.pageY || event.touches[0].pageY;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var containerRect = this.core.$content
|
||||||
|
.get()
|
||||||
|
.getBoundingClientRect();
|
||||||
|
cords.x = containerRect.width / 2 + containerRect.left;
|
||||||
|
cords.y =
|
||||||
|
containerRect.height / 2 + this.scrollTop + containerRect.top;
|
||||||
|
}
|
||||||
|
return cords;
|
||||||
|
};
|
||||||
|
Zoom.prototype.setPageCords = function (event) {
|
||||||
|
var pageCords = this.getPageCords(event);
|
||||||
|
this.pageX = pageCords.x;
|
||||||
|
this.pageY = pageCords.y;
|
||||||
|
};
|
||||||
|
Zoom.prototype.manageActualPixelClassNames = function () {
|
||||||
|
var $actualSize = this.core.getElementById('lg-actual-size');
|
||||||
|
$actualSize
|
||||||
|
.removeClass(this.settings.actualSizeIcons.zoomIn)
|
||||||
|
.addClass(this.settings.actualSizeIcons.zoomOut);
|
||||||
|
};
|
||||||
|
// If true, zoomed - in else zoomed out
|
||||||
|
Zoom.prototype.beginZoom = function (scale) {
|
||||||
|
this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
|
||||||
|
if (scale > 1) {
|
||||||
|
this.core.outer.addClass('lg-zoomed');
|
||||||
|
this.manageActualPixelClassNames();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.resetZoom();
|
||||||
|
}
|
||||||
|
return scale > 1;
|
||||||
|
};
|
||||||
|
Zoom.prototype.getScale = function (scale) {
|
||||||
|
var actualSizeScale = this.getCurrentImageActualSizeScale();
|
||||||
|
if (scale < 1) {
|
||||||
|
scale = 1;
|
||||||
|
}
|
||||||
|
else if (scale > actualSizeScale) {
|
||||||
|
scale = actualSizeScale;
|
||||||
|
}
|
||||||
|
return scale;
|
||||||
|
};
|
||||||
|
Zoom.prototype.init = function () {
|
||||||
|
var _this = this;
|
||||||
|
if (!this.settings.zoom) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.buildTemplates();
|
||||||
|
this.enableZoomOnSlideItemLoad();
|
||||||
|
var tapped = null;
|
||||||
|
this.core.outer.on('dblclick.lg', function (event) {
|
||||||
|
if (!_this.$LG(event.target).hasClass('lg-image')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_this.setActualSize(_this.core.index, event);
|
||||||
|
});
|
||||||
|
this.core.outer.on('touchstart.lg', function (event) {
|
||||||
|
var $target = _this.$LG(event.target);
|
||||||
|
if (event.touches.length === 1 && $target.hasClass('lg-image')) {
|
||||||
|
if (!tapped) {
|
||||||
|
tapped = setTimeout(function () {
|
||||||
|
tapped = null;
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
clearTimeout(tapped);
|
||||||
|
tapped = null;
|
||||||
|
event.preventDefault();
|
||||||
|
_this.setActualSize(_this.core.index, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.containerResize + ".zoom " + lGEvents.rotateRight + ".zoom " + lGEvents.rotateLeft + ".zoom " + lGEvents.flipHorizontal + ".zoom " + lGEvents.flipVertical + ".zoom", function () {
|
||||||
|
if (!_this.core.lgOpened ||
|
||||||
|
!_this.isImageSlide(_this.core.index) ||
|
||||||
|
_this.core.touchAction) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var _LGel = _this.core
|
||||||
|
.getSlideItem(_this.core.index)
|
||||||
|
.find('.lg-img-wrap')
|
||||||
|
.first();
|
||||||
|
_this.top = 0;
|
||||||
|
_this.left = 0;
|
||||||
|
_this.setZoomEssentials();
|
||||||
|
_this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });
|
||||||
|
_this.positionChanged = true;
|
||||||
|
});
|
||||||
|
// Update zoom on resize and orientationchange
|
||||||
|
this.$LG(window).on("scroll.lg.zoom.global" + this.core.lgId, function () {
|
||||||
|
if (!_this.core.lgOpened)
|
||||||
|
return;
|
||||||
|
_this.scrollTop = _this.$LG(window).scrollTop();
|
||||||
|
});
|
||||||
|
this.core.getElementById('lg-zoom-out').on('click.lg', function () {
|
||||||
|
// Allow zoom only on image
|
||||||
|
if (!_this.isImageSlide(_this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var timeout = 0;
|
||||||
|
if (_this.imageReset) {
|
||||||
|
_this.resetImageTranslate(_this.core.index);
|
||||||
|
timeout = 50;
|
||||||
|
}
|
||||||
|
setTimeout(function () {
|
||||||
|
var scale = _this.scale - _this.settings.scale;
|
||||||
|
if (scale < 1) {
|
||||||
|
scale = 1;
|
||||||
|
}
|
||||||
|
_this.beginZoom(scale);
|
||||||
|
_this.zoomImage(scale, -_this.settings.scale, true, !_this.settings.infiniteZoom);
|
||||||
|
}, timeout);
|
||||||
|
});
|
||||||
|
this.core.getElementById('lg-zoom-in').on('click.lg', function () {
|
||||||
|
_this.zoomIn();
|
||||||
|
});
|
||||||
|
this.core.getElementById('lg-actual-size').on('click.lg', function () {
|
||||||
|
_this.setActualSize(_this.core.index);
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.beforeOpen + ".zoom", function () {
|
||||||
|
_this.core.outer.find('.lg-item').removeClass('lg-zoomable');
|
||||||
|
});
|
||||||
|
this.core.LGel.on(lGEvents.afterOpen + ".zoom", function () {
|
||||||
|
_this.scrollTop = _this.$LG(window).scrollTop();
|
||||||
|
// Set the initial value center
|
||||||
|
_this.pageX = _this.core.outer.width() / 2;
|
||||||
|
_this.pageY = _this.core.outer.height() / 2 + _this.scrollTop;
|
||||||
|
_this.scale = 1;
|
||||||
|
});
|
||||||
|
// Reset zoom on slide change
|
||||||
|
this.core.LGel.on(lGEvents.afterSlide + ".zoom", function (event) {
|
||||||
|
var prevIndex = event.detail.prevIndex;
|
||||||
|
_this.scale = 1;
|
||||||
|
_this.positionChanged = false;
|
||||||
|
_this.zoomInProgress = false;
|
||||||
|
_this.resetZoom(prevIndex);
|
||||||
|
_this.resetImageTranslate(prevIndex);
|
||||||
|
if (_this.isImageSlide(_this.core.index)) {
|
||||||
|
_this.setZoomEssentials();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Drag option after zoom
|
||||||
|
this.zoomDrag();
|
||||||
|
this.pinchZoom();
|
||||||
|
this.zoomSwipe();
|
||||||
|
// Store the zoomable timeout value just to clear it while closing
|
||||||
|
this.zoomableTimeout = false;
|
||||||
|
this.positionChanged = false;
|
||||||
|
this.zoomInProgress = false;
|
||||||
|
};
|
||||||
|
Zoom.prototype.zoomIn = function () {
|
||||||
|
// Allow zoom only on image
|
||||||
|
if (!this.isImageSlide(this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var scale = this.scale + this.settings.scale;
|
||||||
|
if (!this.settings.infiniteZoom) {
|
||||||
|
scale = this.getScale(scale);
|
||||||
|
}
|
||||||
|
this.beginZoom(scale);
|
||||||
|
this.zoomImage(scale, Math.min(this.settings.scale, scale - this.scale), true, !this.settings.infiniteZoom);
|
||||||
|
};
|
||||||
|
// Reset zoom effect
|
||||||
|
Zoom.prototype.resetZoom = function (index) {
|
||||||
|
this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');
|
||||||
|
var $actualSize = this.core.getElementById('lg-actual-size');
|
||||||
|
var $item = this.core.getSlideItem(index !== undefined ? index : this.core.index);
|
||||||
|
$actualSize
|
||||||
|
.removeClass(this.settings.actualSizeIcons.zoomOut)
|
||||||
|
.addClass(this.settings.actualSizeIcons.zoomIn);
|
||||||
|
$item.find('.lg-img-wrap').first().removeAttr('style');
|
||||||
|
$item.find('.lg-image').first().removeAttr('style');
|
||||||
|
this.scale = 1;
|
||||||
|
this.left = 0;
|
||||||
|
this.top = 0;
|
||||||
|
// Reset pagx pagy values to center
|
||||||
|
this.setPageCords();
|
||||||
|
};
|
||||||
|
Zoom.prototype.getTouchDistance = function (e) {
|
||||||
|
return Math.sqrt((e.touches[0].pageX - e.touches[1].pageX) *
|
||||||
|
(e.touches[0].pageX - e.touches[1].pageX) +
|
||||||
|
(e.touches[0].pageY - e.touches[1].pageY) *
|
||||||
|
(e.touches[0].pageY - e.touches[1].pageY));
|
||||||
|
};
|
||||||
|
Zoom.prototype.pinchZoom = function () {
|
||||||
|
var _this = this;
|
||||||
|
var startDist = 0;
|
||||||
|
var pinchStarted = false;
|
||||||
|
var initScale = 1;
|
||||||
|
var prevScale = 0;
|
||||||
|
var $item = this.core.getSlideItem(this.core.index);
|
||||||
|
this.core.outer.on('touchstart.lg', function (e) {
|
||||||
|
$item = _this.core.getSlideItem(_this.core.index);
|
||||||
|
if (!_this.isImageSlide(_this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (e.touches.length === 2) {
|
||||||
|
e.preventDefault();
|
||||||
|
if (_this.core.outer.hasClass('lg-first-slide-loading')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
initScale = _this.scale || 1;
|
||||||
|
_this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
|
||||||
|
_this.setPageCords(e);
|
||||||
|
_this.resetImageTranslate(_this.core.index);
|
||||||
|
_this.core.touchAction = 'pinch';
|
||||||
|
startDist = _this.getTouchDistance(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.$inner.on('touchmove.lg', function (e) {
|
||||||
|
if (e.touches.length === 2 &&
|
||||||
|
_this.core.touchAction === 'pinch' &&
|
||||||
|
(_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target))) {
|
||||||
|
e.preventDefault();
|
||||||
|
var endDist = _this.getTouchDistance(e);
|
||||||
|
var distance = startDist - endDist;
|
||||||
|
if (!pinchStarted && Math.abs(distance) > 5) {
|
||||||
|
pinchStarted = true;
|
||||||
|
}
|
||||||
|
if (pinchStarted) {
|
||||||
|
prevScale = _this.scale;
|
||||||
|
var _scale = Math.max(1, initScale + -distance * 0.02);
|
||||||
|
_this.scale =
|
||||||
|
Math.round((_scale + Number.EPSILON) * 100) / 100;
|
||||||
|
var diff = _this.scale - prevScale;
|
||||||
|
_this.zoomImage(_this.scale, Math.round((diff + Number.EPSILON) * 100) / 100, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.$inner.on('touchend.lg', function (e) {
|
||||||
|
if (_this.core.touchAction === 'pinch' &&
|
||||||
|
(_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target))) {
|
||||||
|
pinchStarted = false;
|
||||||
|
startDist = 0;
|
||||||
|
if (_this.scale <= 1) {
|
||||||
|
_this.resetZoom();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var actualSizeScale = _this.getCurrentImageActualSizeScale();
|
||||||
|
if (_this.scale >= actualSizeScale) {
|
||||||
|
var scaleDiff = actualSizeScale - _this.scale;
|
||||||
|
if (scaleDiff === 0) {
|
||||||
|
scaleDiff = 0.01;
|
||||||
|
}
|
||||||
|
_this.zoomImage(actualSizeScale, scaleDiff, false, true);
|
||||||
|
}
|
||||||
|
_this.manageActualPixelClassNames();
|
||||||
|
_this.core.outer.addClass('lg-zoomed');
|
||||||
|
}
|
||||||
|
_this.core.touchAction = undefined;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY, touchDuration) {
|
||||||
|
var distanceXnew = endCoords.x - startCoords.x;
|
||||||
|
var distanceYnew = endCoords.y - startCoords.y;
|
||||||
|
var speedX = Math.abs(distanceXnew) / touchDuration + 1;
|
||||||
|
var speedY = Math.abs(distanceYnew) / touchDuration + 1;
|
||||||
|
if (speedX > 2) {
|
||||||
|
speedX += 1;
|
||||||
|
}
|
||||||
|
if (speedY > 2) {
|
||||||
|
speedY += 1;
|
||||||
|
}
|
||||||
|
distanceXnew = distanceXnew * speedX;
|
||||||
|
distanceYnew = distanceYnew * speedY;
|
||||||
|
var _LGel = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-img-wrap')
|
||||||
|
.first();
|
||||||
|
var distance = {};
|
||||||
|
distance.x = this.left + distanceXnew;
|
||||||
|
distance.y = this.top + distanceYnew;
|
||||||
|
var possibleSwipeCords = this.getPossibleSwipeDragCords();
|
||||||
|
if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {
|
||||||
|
if (allowY) {
|
||||||
|
if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
|
||||||
|
distance.y = possibleSwipeCords.minY;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
|
||||||
|
distance.y = possibleSwipeCords.maxY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allowX) {
|
||||||
|
if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
|
||||||
|
distance.x = possibleSwipeCords.minX;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
|
||||||
|
distance.x = possibleSwipeCords.maxX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allowY) {
|
||||||
|
this.top = distance.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
distance.y = this.top;
|
||||||
|
}
|
||||||
|
if (allowX) {
|
||||||
|
this.left = distance.x;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
distance.x = this.left;
|
||||||
|
}
|
||||||
|
this.setZoomSwipeStyles(_LGel, distance);
|
||||||
|
this.positionChanged = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Zoom.prototype.getZoomSwipeCords = function (startCoords, endCoords, allowX, allowY, possibleSwipeCords) {
|
||||||
|
var distance = {};
|
||||||
|
if (allowY) {
|
||||||
|
distance.y = this.top + (endCoords.y - startCoords.y);
|
||||||
|
if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
|
||||||
|
var diffMinY = possibleSwipeCords.minY - distance.y;
|
||||||
|
distance.y = possibleSwipeCords.minY - diffMinY / 6;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
|
||||||
|
var diffMaxY = distance.y - possibleSwipeCords.maxY;
|
||||||
|
distance.y = possibleSwipeCords.maxY + diffMaxY / 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
distance.y = this.top;
|
||||||
|
}
|
||||||
|
if (allowX) {
|
||||||
|
distance.x = this.left + (endCoords.x - startCoords.x);
|
||||||
|
if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
|
||||||
|
var diffMinX = possibleSwipeCords.minX - distance.x;
|
||||||
|
distance.x = possibleSwipeCords.minX - diffMinX / 6;
|
||||||
|
}
|
||||||
|
else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
|
||||||
|
var difMaxX = distance.x - possibleSwipeCords.maxX;
|
||||||
|
distance.x = possibleSwipeCords.maxX + difMaxX / 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
distance.x = this.left;
|
||||||
|
}
|
||||||
|
return distance;
|
||||||
|
};
|
||||||
|
Zoom.prototype.isBeyondPossibleLeft = function (x, minX) {
|
||||||
|
return x >= minX;
|
||||||
|
};
|
||||||
|
Zoom.prototype.isBeyondPossibleRight = function (x, maxX) {
|
||||||
|
return x <= maxX;
|
||||||
|
};
|
||||||
|
Zoom.prototype.isBeyondPossibleTop = function (y, minY) {
|
||||||
|
return y >= minY;
|
||||||
|
};
|
||||||
|
Zoom.prototype.isBeyondPossibleBottom = function (y, maxY) {
|
||||||
|
return y <= maxY;
|
||||||
|
};
|
||||||
|
Zoom.prototype.isImageSlide = function (index) {
|
||||||
|
var currentItem = this.core.galleryItems[index];
|
||||||
|
return this.core.getSlideType(currentItem) === 'image';
|
||||||
|
};
|
||||||
|
Zoom.prototype.getPossibleSwipeDragCords = function (scale) {
|
||||||
|
var $image = this.core
|
||||||
|
.getSlideItem(this.core.index)
|
||||||
|
.find('.lg-image')
|
||||||
|
.first();
|
||||||
|
var bottom = this.core.mediaContainerPosition.bottom;
|
||||||
|
var imgRect = $image.get().getBoundingClientRect();
|
||||||
|
var imageHeight = imgRect.height;
|
||||||
|
var imageWidth = imgRect.width;
|
||||||
|
if (scale) {
|
||||||
|
imageHeight = imageHeight + scale * imageHeight;
|
||||||
|
imageWidth = imageWidth + scale * imageWidth;
|
||||||
|
}
|
||||||
|
var minY = (imageHeight - this.containerRect.height) / 2;
|
||||||
|
var maxY = (this.containerRect.height - imageHeight) / 2 + bottom;
|
||||||
|
var minX = (imageWidth - this.containerRect.width) / 2;
|
||||||
|
var maxX = (this.containerRect.width - imageWidth) / 2;
|
||||||
|
var possibleSwipeCords = {
|
||||||
|
minY: minY,
|
||||||
|
maxY: maxY,
|
||||||
|
minX: minX,
|
||||||
|
maxX: maxX,
|
||||||
|
};
|
||||||
|
return possibleSwipeCords;
|
||||||
|
};
|
||||||
|
Zoom.prototype.setZoomSwipeStyles = function (LGel, distance) {
|
||||||
|
LGel.css('transform', 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)');
|
||||||
|
};
|
||||||
|
Zoom.prototype.zoomSwipe = function () {
|
||||||
|
var _this = this;
|
||||||
|
var startCoords = {};
|
||||||
|
var endCoords = {};
|
||||||
|
var isMoved = false;
|
||||||
|
// Allow x direction drag
|
||||||
|
var allowX = false;
|
||||||
|
// Allow Y direction drag
|
||||||
|
var allowY = false;
|
||||||
|
var startTime = new Date();
|
||||||
|
var endTime = new Date();
|
||||||
|
var possibleSwipeCords;
|
||||||
|
var _LGel;
|
||||||
|
var $item = this.core.getSlideItem(this.core.index);
|
||||||
|
this.core.$inner.on('touchstart.lg', function (e) {
|
||||||
|
// Allow zoom only on image
|
||||||
|
if (!_this.isImageSlide(_this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$item = _this.core.getSlideItem(_this.core.index);
|
||||||
|
if ((_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target)) &&
|
||||||
|
e.touches.length === 1 &&
|
||||||
|
_this.core.outer.hasClass('lg-zoomed')) {
|
||||||
|
e.preventDefault();
|
||||||
|
startTime = new Date();
|
||||||
|
_this.core.touchAction = 'zoomSwipe';
|
||||||
|
_LGel = _this.core
|
||||||
|
.getSlideItem(_this.core.index)
|
||||||
|
.find('.lg-img-wrap')
|
||||||
|
.first();
|
||||||
|
var dragAllowedAxises = _this.getDragAllowedAxises(0);
|
||||||
|
allowY = dragAllowedAxises.allowY;
|
||||||
|
allowX = dragAllowedAxises.allowX;
|
||||||
|
if (allowX || allowY) {
|
||||||
|
startCoords = _this.getSwipeCords(e);
|
||||||
|
}
|
||||||
|
possibleSwipeCords = _this.getPossibleSwipeDragCords();
|
||||||
|
// reset opacity and transition duration
|
||||||
|
_this.core.outer.addClass('lg-zoom-dragging lg-zoom-drag-transition');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.$inner.on('touchmove.lg', function (e) {
|
||||||
|
if (e.touches.length === 1 &&
|
||||||
|
_this.core.touchAction === 'zoomSwipe' &&
|
||||||
|
(_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target))) {
|
||||||
|
e.preventDefault();
|
||||||
|
_this.core.touchAction = 'zoomSwipe';
|
||||||
|
endCoords = _this.getSwipeCords(e);
|
||||||
|
var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
|
||||||
|
if (Math.abs(endCoords.x - startCoords.x) > 15 ||
|
||||||
|
Math.abs(endCoords.y - startCoords.y) > 15) {
|
||||||
|
isMoved = true;
|
||||||
|
_this.setZoomSwipeStyles(_LGel, distance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.core.$inner.on('touchend.lg', function (e) {
|
||||||
|
if (_this.core.touchAction === 'zoomSwipe' &&
|
||||||
|
(_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target))) {
|
||||||
|
e.preventDefault();
|
||||||
|
_this.core.touchAction = undefined;
|
||||||
|
_this.core.outer.removeClass('lg-zoom-dragging');
|
||||||
|
if (!isMoved) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isMoved = false;
|
||||||
|
endTime = new Date();
|
||||||
|
var touchDuration = endTime.valueOf() - startTime.valueOf();
|
||||||
|
_this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Zoom.prototype.zoomDrag = function () {
|
||||||
|
var _this = this;
|
||||||
|
var startCoords = {};
|
||||||
|
var endCoords = {};
|
||||||
|
var isDragging = false;
|
||||||
|
var isMoved = false;
|
||||||
|
// Allow x direction drag
|
||||||
|
var allowX = false;
|
||||||
|
// Allow Y direction drag
|
||||||
|
var allowY = false;
|
||||||
|
var startTime;
|
||||||
|
var endTime;
|
||||||
|
var possibleSwipeCords;
|
||||||
|
var _LGel;
|
||||||
|
this.core.outer.on('mousedown.lg.zoom', function (e) {
|
||||||
|
// Allow zoom only on image
|
||||||
|
if (!_this.isImageSlide(_this.core.index)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var $item = _this.core.getSlideItem(_this.core.index);
|
||||||
|
if (_this.$LG(e.target).hasClass('lg-item') ||
|
||||||
|
$item.get().contains(e.target)) {
|
||||||
|
startTime = new Date();
|
||||||
|
_LGel = _this.core
|
||||||
|
.getSlideItem(_this.core.index)
|
||||||
|
.find('.lg-img-wrap')
|
||||||
|
.first();
|
||||||
|
var dragAllowedAxises = _this.getDragAllowedAxises(0);
|
||||||
|
allowY = dragAllowedAxises.allowY;
|
||||||
|
allowX = dragAllowedAxises.allowX;
|
||||||
|
if (_this.core.outer.hasClass('lg-zoomed')) {
|
||||||
|
if (_this.$LG(e.target).hasClass('lg-object') &&
|
||||||
|
(allowX || allowY)) {
|
||||||
|
e.preventDefault();
|
||||||
|
startCoords = _this.getDragCords(e);
|
||||||
|
possibleSwipeCords = _this.getPossibleSwipeDragCords();
|
||||||
|
isDragging = true;
|
||||||
|
_this.core.outer
|
||||||
|
.removeClass('lg-grab')
|
||||||
|
.addClass('lg-grabbing lg-zoom-drag-transition lg-zoom-dragging');
|
||||||
|
// reset opacity and transition duration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$LG(window).on("mousemove.lg.zoom.global" + this.core.lgId, function (e) {
|
||||||
|
if (isDragging) {
|
||||||
|
isMoved = true;
|
||||||
|
endCoords = _this.getDragCords(e);
|
||||||
|
var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
|
||||||
|
_this.setZoomSwipeStyles(_LGel, distance);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.$LG(window).on("mouseup.lg.zoom.global" + this.core.lgId, function (e) {
|
||||||
|
if (isDragging) {
|
||||||
|
endTime = new Date();
|
||||||
|
isDragging = false;
|
||||||
|
_this.core.outer.removeClass('lg-zoom-dragging');
|
||||||
|
// Fix for chrome mouse move on click
|
||||||
|
if (isMoved &&
|
||||||
|
(startCoords.x !== endCoords.x ||
|
||||||
|
startCoords.y !== endCoords.y)) {
|
||||||
|
endCoords = _this.getDragCords(e);
|
||||||
|
var touchDuration = endTime.valueOf() - startTime.valueOf();
|
||||||
|
_this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
|
||||||
|
}
|
||||||
|
isMoved = false;
|
||||||
|
}
|
||||||
|
_this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
Zoom.prototype.closeGallery = function () {
|
||||||
|
this.resetZoom();
|
||||||
|
this.zoomInProgress = false;
|
||||||
|
};
|
||||||
|
Zoom.prototype.destroy = function () {
|
||||||
|
// Unbind all events added by lightGallery zoom plugin
|
||||||
|
this.$LG(window).off(".lg.zoom.global" + this.core.lgId);
|
||||||
|
this.core.LGel.off('.lg.zoom');
|
||||||
|
this.core.LGel.off('.zoom');
|
||||||
|
clearTimeout(this.zoomableTimeout);
|
||||||
|
this.zoomableTimeout = false;
|
||||||
|
};
|
||||||
|
return Zoom;
|
||||||
|
}());
|
||||||
|
|
||||||
|
return Zoom;
|
||||||
|
|
||||||
|
})));
|
||||||
57
blog.html
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Meldungen | Scherbengericht</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css"/>
|
||||||
|
<!-- lightgallery styles -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/lightgallery-bundle.css"/>
|
||||||
|
<!-- lightgallery code -->
|
||||||
|
<script src="/assets/js/lightgallery.umd.js"></script>
|
||||||
|
<!-- lightgallery plugins -->
|
||||||
|
<script src="/assets/js/plugins/lg-thumbnail.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-zoom.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-hash.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-share.umd.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<!--
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<a href="/"
|
||||||
|
|
||||||
|
>Hauptseite</a>
|
||||||
|
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
|
||||||
|
<a href="/blog.html"
|
||||||
|
class="current-site"
|
||||||
|
>Meldungen</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="/2025/02/02/herald.html"><strong>Ankündigung: erster Termin am 22.2.2025 in Dresden</strong></a>
|
||||||
|
<p>Wir laden alle herzlich ein,
|
||||||
|
am 22. Februar auf dem Neumarkt in Dresden,
|
||||||
|
<a href="https://www.openstreetmap.org/#map=19/51.051655/13.741195">zwischen Frauenkirche und Martin-Luther-Denkmal</a>,
|
||||||
|
an unserem ersten Versuch teilzunehmen!</p>
|
||||||
|
</li>
|
||||||
|
<li><a href="/2025/02/02/gallery.html"><strong>Eindrücke …</strong></a>
|
||||||
|
<p>So könnte ein Bericht vom Event aussehen:</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
108
index.html
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Worum geht es? | Scherbengericht</title>
|
||||||
|
<link rel="stylesheet" href="/assets/css/styles.css"/>
|
||||||
|
<!-- lightgallery styles -->
|
||||||
|
<link rel="stylesheet" href="/assets/css/lightgallery-bundle.css"/>
|
||||||
|
<!-- lightgallery code -->
|
||||||
|
<script src="/assets/js/lightgallery.umd.js"></script>
|
||||||
|
<!-- lightgallery plugins -->
|
||||||
|
<script src="/assets/js/plugins/lg-thumbnail.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-zoom.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-hash.umd.js"></script>
|
||||||
|
<script src="/assets/js/plugins/lg-share.umd.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav>
|
||||||
|
<!--
|
||||||
|
<a href="/"
|
||||||
|
style="color: red;"
|
||||||
|
>Hauptseite</a>
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<a href="/"
|
||||||
|
class="current-site"
|
||||||
|
>Hauptseite</a>
|
||||||
|
|
||||||
|
<a href="/about.html"
|
||||||
|
|
||||||
|
>Über uns</a>
|
||||||
|
|
||||||
|
<a href="/blog.html"
|
||||||
|
|
||||||
|
>Meldungen</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h1>Scherbengericht <i>jetzt</i></h1>
|
||||||
|
|
||||||
|
<p class="larger">
|
||||||
|
Braucht die real existierende <b>Demokratie</b> eine <b>Machtbegrenzung</b>?
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="wrap">
|
||||||
|
<div class="wrap1">
|
||||||
|
<img src="assets/img/scherbe_perikles.svg" style="width: 200px;"/>
|
||||||
|
</div>
|
||||||
|
<div class="wrap2">
|
||||||
|
<p>
|
||||||
|
Im antiken griechischen Vorbild – der Demokratie von <b>Athen</b>
|
||||||
|
in der Zeit des <b>Perikles</b> – gab es dafür u.a. die Institution des
|
||||||
|
<b>Scherbengerichts</b> (οστρακισμος), bei der die Bürger jährlich
|
||||||
|
einen Politiker, wenn er der Errichtung der <b>Tyrannei</b> verdächtig
|
||||||
|
war, in die <b>Verbannung</b> wählen konnten. Verbannten wurde für
|
||||||
|
<b>10 Jahre</b> das Eigentum konfisziert, jegliche geschäftliche oder
|
||||||
|
politische Betätigung verboten und unter Androhung von Strafe
|
||||||
|
der Aufenthalt im Land untersagt. Zur Stimmabgabe nutzte man
|
||||||
|
die <b>Scherben</b> zerbrochener Tongefäße.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p class="larger">
|
||||||
|
Lassen Sie es uns <b>wiederbeleben</b>, machen Sie mit!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="wrap">
|
||||||
|
<div class="wrap1">
|
||||||
|
<img src="assets/img/scales-of-justice.jpg" style="width: 200px;"/>
|
||||||
|
</div>
|
||||||
|
<div class="wrap2">
|
||||||
|
Von welchem <b>Politiker</b> oder <b>Oligarchen</b>
|
||||||
|
geht derzeit die größte <b>Gefahr</b> für unser Land aus?
|
||||||
|
(etwa durch anhaltenden Machtmißbrauch
|
||||||
|
oder zu erwartende Machtergreifung –
|
||||||
|
oder wegen Kriegstreiberei)
|
||||||
|
Wen würden Sie deshalb (geheim)
|
||||||
|
in die <b>Verbannung</b> wählen?
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="larger">
|
||||||
|
<b>Schreiben</b> Sie den <b>Namen</b> ihrer Wahl
|
||||||
|
auf einen <b>Stimmzettel</b> (als moderne Scherbe)
|
||||||
|
und werfen ihn in die Urne!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="wrap">
|
||||||
|
<div class="wrap1">
|
||||||
|
<img src="assets/img/wahlurne.jpg" style="width: 200px;"/>
|
||||||
|
</div>
|
||||||
|
<div class="wrap2">
|
||||||
|
Jeder Bürger hat nur <b>eine Stimme</b>!
|
||||||
|
Die Auszählung erfolgt abends vor Ort öffentlich.
|
||||||
|
|
||||||
|
Die Ergebnisse werden dann <b><a href="/vote.html">hier</a></b>
|
||||||
|
bekanntgegeben.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||