This commit is contained in:
2025-02-08 01:39:30 +01:00
commit be10883b4b
91 changed files with 6971 additions and 0 deletions

281
2025/02/02/gallery.html Normal file
View 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
View 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
View 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>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

44
assets/css/styles.css Normal file
View 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 */

View 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
View 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="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe01a;" 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="&#xe01d;" 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="&#xe033;" 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="&#xe070;" 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="&#xe094;" 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="&#xe095;" 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="&#xe0f2;" 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="&#xe1ff;" 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="&#xe20c;" 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="&#xe20d;" 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="&#xe311;" 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="&#xe312;" 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="&#xe80d;" 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="&#xe900;" 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="&#xe901;" 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="&#xe902;" 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="&#xe903;" 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="&#xe904;" 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="&#xe905;" 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="&#xe906;" 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="&#xe907;" 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="&#xe908;" 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="&#xe909;" 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="&#xe90a;" 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

Binary file not shown.

BIN
assets/fonts/lg.woff Normal file

Binary file not shown.

BIN
assets/fonts/lg.woff2 Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

BIN
assets/img/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/img/wahlurne.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

8
assets/js/lightgallery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View 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;
})));

View 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;
})));

View 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;
})));

View 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
View 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
View 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>