mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-02-24 16:58:47 +01:00
Better handling of audio
This commit is contained in:
parent
600edbee5d
commit
8a8dad12c8
2 changed files with 43 additions and 11 deletions
|
@ -366,7 +366,7 @@
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
}
|
}
|
||||||
.status .media:not(.media-audio) {
|
.status .media {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
@keyframes position-object {
|
@keyframes position-object {
|
||||||
|
@ -391,12 +391,11 @@
|
||||||
height: 100%;
|
height: 100%;
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
.status .media-video,
|
.status :is(.media-video, .media-audio, .media-gif) {
|
||||||
.status .media-gif {
|
|
||||||
position: relative;
|
position: relative;
|
||||||
background-clip: padding-box;
|
background-clip: padding-box;
|
||||||
}
|
}
|
||||||
.status .media-video[data-formatted-duration]:before {
|
.status :is(.media-video, .media-audio)[data-formatted-duration]:before {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
content: '⏵';
|
content: '⏵';
|
||||||
width: 70px;
|
width: 70px;
|
||||||
|
@ -416,23 +415,26 @@
|
||||||
border-radius: 70px;
|
border-radius: 70px;
|
||||||
transition: all 0.2s ease-in-out;
|
transition: all 0.2s ease-in-out;
|
||||||
}
|
}
|
||||||
.status .media-video[data-formatted-duration]:hover:before {
|
.status :is(.media-video, .media-audio)[data-formatted-duration]:hover:before {
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
background-color: var(--bg-blur-color);
|
background-color: var(--bg-blur-color);
|
||||||
}
|
}
|
||||||
.status .media-video[data-formatted-duration]:after {
|
.status :is(.media-video, .media-audio)[data-formatted-duration]:after {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
content: attr(data-formatted-duration);
|
content: attr(data-formatted-duration);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 8px;
|
bottom: 8px;
|
||||||
left: 8px;
|
right: 8px;
|
||||||
color: var(--bg-color);
|
color: var(--bg-color);
|
||||||
background-color: var(--text-color);
|
background-color: var(--text-color);
|
||||||
backdrop-filter: blur(6px) saturate(3) invert(0.2);
|
backdrop-filter: blur(6px) saturate(3) invert(0.2);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 0 4px;
|
padding: 0 4px;
|
||||||
}
|
}
|
||||||
|
.status .media-audio[data-formatted-duration]:after {
|
||||||
|
content: '♬ ' attr(data-formatted-duration);
|
||||||
|
}
|
||||||
.status .media-gif[data-label]:not(:hover):after {
|
.status .media-gif[data-label]:not(:hover):after {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
@ -440,7 +442,7 @@
|
||||||
content: attr(data-label);
|
content: attr(data-label);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 8px;
|
bottom: 8px;
|
||||||
left: 8px;
|
right: 8px;
|
||||||
color: var(--bg-faded-color);
|
color: var(--bg-faded-color);
|
||||||
background-color: var(--text-insignificant-color);
|
background-color: var(--text-insignificant-color);
|
||||||
backdrop-filter: blur(6px) saturate(3) invert(0.2);
|
backdrop-filter: blur(6px) saturate(3) invert(0.2);
|
||||||
|
@ -458,12 +460,27 @@
|
||||||
.status .media-contain video {
|
.status .media-contain video {
|
||||||
object-fit: contain !important;
|
object-fit: contain !important;
|
||||||
}
|
}
|
||||||
.status .media-audio {
|
/* .status .media-audio {
|
||||||
border: 0;
|
border: 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
}
|
}
|
||||||
.status .media-audio audio {
|
.status .media-audio audio {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
} */
|
||||||
|
.status .media-audio {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-image: radial-gradient(
|
||||||
|
circle at center center,
|
||||||
|
var(--bg-color),
|
||||||
|
var(--bg-faded-color)
|
||||||
|
),
|
||||||
|
repeating-radial-gradient(
|
||||||
|
circle at center center,
|
||||||
|
transparent,
|
||||||
|
var(--bg-faded-color) 16px
|
||||||
|
);
|
||||||
|
background-blend-mode: multiply;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* CARD */
|
/* CARD */
|
||||||
|
|
|
@ -839,9 +839,24 @@ function Media({ media, showOriginal, autoAnimate, onClick = () => {} }) {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else if (type === 'audio') {
|
} else if (type === 'audio') {
|
||||||
|
const formattedDuration = formatDuration(original.duration);
|
||||||
return (
|
return (
|
||||||
<div class="media media-audio">
|
<div
|
||||||
<audio src={remoteUrl || url} preload="none" controls />
|
class="media media-audio"
|
||||||
|
data-formatted-duration={formattedDuration}
|
||||||
|
onClick={onClick}
|
||||||
|
>
|
||||||
|
{showOriginal ? (
|
||||||
|
<audio src={remoteUrl || url} preload="none" controls autoplay />
|
||||||
|
) : previewUrl ? (
|
||||||
|
<img
|
||||||
|
src={previewUrl}
|
||||||
|
alt={description}
|
||||||
|
width={width}
|
||||||
|
height={height}
|
||||||
|
loading="lazy"
|
||||||
|
/>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue