diff --git a/copyparty/web/baguettebox.js b/copyparty/web/baguettebox.js
index 3b056700..e6acd2d3 100644
--- a/copyparty/web/baguettebox.js
+++ b/copyparty/web/baguettebox.js
@@ -24,7 +24,7 @@ window.baguetteBox = (function () {
onChange: null,
readDirRtl: false,
},
- overlay, slider, btnPrev, btnNext, btnHelp, btnAnim, btnRotL, btnRotR, btnSel, btnFull, btnVmode, btnReadDir, btnClose,
+ overlay, slider, btnPrev, btnNext, btnHelp, btnAnim, btnRotL, btnRotR, btnSel, btnFull, btnZoom, btnVmode, btnReadDir, btnClose,
currentGallery = [],
currentIndex = 0,
isOverlayVisible = false,
@@ -301,7 +301,8 @@ window.baguetteBox = (function () {
'' +
'' +
'' +
- '' +
+ '' +
+ '' +
'' +
'' +
''
@@ -320,8 +321,12 @@ window.baguetteBox = (function () {
btnRotR = ebi('bbox-rotr');
btnSel = ebi('bbox-tsel');
btnFull = ebi('bbox-full');
+ btnZoom = ebi('bbzoom');
btnVmode = ebi('bbox-vmode');
btnClose = ebi('bbox-close');
+
+ bcfg_bind(options, 'bbzoom', 'bbzoom', false, setzoom);
+ setzoom();
}
function halp() {
@@ -337,6 +342,7 @@ window.baguetteBox = (function () {
['end', 'last file'],
['R', 'rotate (shift=ccw)'],
['F', 'toggle fullscreen'],
+ ['Z', 'toggle zoom/stretch'],
['S', 'toggle file selection'],
['space, P, K', 'video: play / pause'],
['U', 'video: seek 10sec back'],
@@ -419,6 +425,8 @@ window.baguetteBox = (function () {
}
else if (kl == "f")
tglfull();
+ else if (kl == "z")
+ btnZoom.click();
else if (kl == "s")
tglsel();
else if (kl == "r")
@@ -526,6 +534,12 @@ window.baguetteBox = (function () {
}
}
+ function setzoom() {
+ var sel = clgot(btnZoom, 'on')
+ clmod(ebi('bbox-overlay'), 'fill', sel);
+ btnState(btnZoom, sel);
+ }
+
function tglsel() {
var o = findfile()[3];
clmod(o.closest('tr'), 'sel', 't');
@@ -553,10 +567,14 @@ window.baguetteBox = (function () {
'rgba(153,34,85,0.7)' : '';
img.style.borderRadius = sel ? '1em' : '';
- btnSel.style.color = sel ? '#fff' : '';
- btnSel.style.background = sel ? '#d48' : '';
- btnSel.style.textShadow = sel ? '1px 1px 0 #b38' : '';
- btnSel.style.boxShadow = sel ? '.15em .15em 0 #502' : '';
+ btnState(btnSel, sel);
+ }
+
+ function btnState(btn, sel) {
+ btn.style.color = sel ? '#fff' : '';
+ btn.style.background = sel ? '#d48' : '';
+ btn.style.textShadow = sel ? '1px 1px 0 #b38' : '';
+ btn.style.boxShadow = sel ? '.15em .15em 0 #502' : '';
}
function keyUpHandler(e) {
@@ -733,7 +751,7 @@ window.baguetteBox = (function () {
overlay.style.display = 'block';
// Fade in overlay
setTimeout(function () {
- overlay.className = 'visible';
+ clmod(overlay, 'visible', 1);
if (options.bodyClass && document.body.classList)
document.body.classList.add(options.bodyClass);
@@ -779,7 +797,7 @@ window.baguetteBox = (function () {
unbindEvents();
// Fade out and hide the overlay
- overlay.className = '';
+ clmod(overlay, 'visible');
setTimeout(function () {
overlay.style.display = 'none';
if (options.bodyClass && document.body.classList)
diff --git a/copyparty/web/browser.css b/copyparty/web/browser.css
index 25d417d2..67f2b945 100644
--- a/copyparty/web/browser.css
+++ b/copyparty/web/browser.css
@@ -2165,6 +2165,12 @@ html.noscroll .sbar::-webkit-scrollbar {
vertical-align: middle;
transition: transform .23s, left .23s, top .23s, width .23s, height .23s;
}
+#bbox-overlay.fill .full-image img,
+#bbox-overlay.fill .full-image video {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+}
html.bb_fsc .full-image img,
html.bb_fsc .full-image video {
max-height: 100%;