2025-10-15 19:57:09 +02:00

237 lines
4.1 KiB
SCSS

#MediaViewer {
position: fixed;
z-index: var(--z-media-viewer);
top: 0;
left: 0;
display: grid;
grid-template-columns: auto;
grid-template-rows: auto 1fr;
row-gap: 0;
column-gap: 0;
align-items: center;
justify-items: stretch;
width: 100vw;
height: 100%;
color: #fff;
background: rgba(0, 0, 0, 0.9);
// Potential perf improvement
&:not(.shown) {
transform: scale(0);
display: block !important;
}
body.ghost-animating & {
> .pan-wrapper,
> button,
.MediaViewerContent img,
.MediaViewerContent .VideoPlayer {
display: none;
}
}
body:not(.no-media-viewer-animations) & {
transition-duration: 0.3s !important;
}
&:not(.open),
.closing {
.SenderInfo {
pointer-events: none;
transition: none;
}
}
&.zoomed {
.navigation {
display: none;
}
.media-viewer-head {
z-index: 2;
}
.MediaViewerSlide {
position: fixed;
z-index: 1;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
padding: 0;
}
}
.media-viewer-head {
position: relative;
z-index: var(--z-media-viewer-head);
display: flex;
grid-area: 1 / 1 / 2 / -2;
min-width: 0;
padding: 0.5rem max(1.25rem, env(safe-area-inset-left));
background: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0) 100%);
& > .Transition {
width: 100%;
min-width: 0;
}
body.is-tauri.is-macos #Main:not(.is-fullscreen) & {
padding-left: var(--window-controls-width);
}
@media (max-width: 600px) {
padding: 0.5rem max(0.5rem, env(safe-area-inset-left));
.media-viewer-close {
margin-right: 1.5rem;
}
}
}
& > .Transition,
& > .pan-wrapper {
grid-area: 1 / 1 / -1 / -1;
}
& > .Transition,
& > .pan-wrapper .Transition {
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-self: center;
width: 100%;
height: 100%;
text-align: center;
}
.navigation {
cursor: var(--custom-cursor, pointer);
position: fixed;
z-index: 1;
top: 4rem;
bottom: 0;
width: 10vw;
margin: 0;
padding: 0;
border: none;
appearance: none;
opacity: 0;
background: transparent no-repeat;
background-size: 1.25rem;
outline: none;
transition: opacity 0.15s;
&:hover,
.is-touch-env & {
opacity: 1;
}
&.prev {
left: env(safe-area-inset-left);
background-image: url("../../assets/media_navigation_previous.svg");
background-position: 1.25rem calc(50% - 2rem);
&[dir="rtl"] {
right: env(safe-area-inset-right);
left: auto;
transform: scaleX(-1);
}
}
&.next {
right: env(safe-area-inset-right);
background-image: url("../../assets/media_navigation_next.svg");
background-position: calc(100% - 1.25rem) calc(50% - 2rem);
&[dir="rtl"] {
right: auto;
left: env(safe-area-inset-left);
transform: scaleX(-1);
}
}
&.inline {
top: calc(50% - 3rem);
bottom: unset;
height: 6rem;
background-position-y: center;
@media (max-width: 600px) {
pointer-events: none;
opacity: 0;
transition: opacity 0.15s ease-in;
.video-controls-visible & {
pointer-events: auto;
opacity: 1;
}
}
}
@media (max-width: 600px) {
width: 20vw;
}
}
.is-protected {
pointer-events: none;
user-select: none;
-webkit-touch-callout: none;
}
@media (max-width: 600px) {
background: rgba(0, 0, 0, 1);
}
}
.ghost {
will-change: transform, opacity;
position: absolute;
z-index: var(--z-media-viewer);
overflow: hidden;
border-radius: 0;
transition: transform 0.2s ease, opacity 0.2s ease;
&.rounded-corners {
border-radius: var(--border-radius-messages);
}
&.circle {
border-radius: 50%;
transition: transform 0.2s ease, opacity 0.2s ease, border-radius 0.2s ease;
}
img,
video {
-webkit-user-select: none;
user-select: none;
width: 100%;
height: 100%;
object-fit: cover;
}
}