237 lines
4.1 KiB
SCSS
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;
|
|
}
|
|
}
|