109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
| /*
 | |
| Copyright 2021 - 2022 The Matrix.org Foundation C.I.C.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
|     http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| */
 | |
| 
 | |
| // Dev note: there's no actual component called <PlaybackContainer />. These classes
 | |
| // are shared amongst multiple voice message components.
 | |
| 
 | |
| // Container for live recording and playback controls
 | |
| .mx_MediaBody.mx_VoiceMessagePrimaryContainer {
 | |
|     // The waveform (right) has a 1px padding on it that we want to account for, otherwise
 | |
|     // inherit from mx_MediaBody
 | |
|     padding-right: 11px;
 | |
| 
 | |
|     // Cheat at alignment a bit
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
| 
 | |
|     contain: content;
 | |
| 
 | |
|     // Waveforms are present in live recording only
 | |
|     .mx_Waveform {
 | |
|         .mx_Waveform_bar {
 | |
|             background-color: $quaternary-content;
 | |
|             height: 100%;
 | |
|             /* Variable set by a JS component */
 | |
|             transform: scaleY(max(0.05, var(--barHeight)));
 | |
| 
 | |
|             &.mx_Waveform_bar_100pct {
 | |
|                 // Small animation to remove the mechanical feel of progress
 | |
|                 transition: background-color 250ms ease;
 | |
|                 background-color: $secondary-content;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     .mx_Clock {
 | |
|         width: $font-42px; // we're not using a monospace font, so fake it
 | |
|         min-width: $font-42px; // force sensible layouts in awkward flexboxes (file panel, for example)
 | |
|         padding-right: 6px; // with the fixed width this ends up as a visual 8px most of the time, as intended.
 | |
|         padding-left: 8px; // isolate from recording circle / play control
 | |
|     }
 | |
| 
 | |
|     .mx_RecordingPlayback_timelineLayoutMiddle {
 | |
|         margin-left: 8px;
 | |
|         margin-right: 6px;
 | |
|         position: relative;
 | |
|         display: inline-block;
 | |
|         flex: 1;
 | |
|         height: 30px; // same height as mx_Waveform, needed for automatic vertical centering
 | |
| 
 | |
|         .mx_Waveform {
 | |
|             left: 0;
 | |
|             top: 0;
 | |
|         }
 | |
| 
 | |
|         .mx_SeekBar {
 | |
|             position: absolute;
 | |
|             left: 0;
 | |
|             height: 30px;
 | |
|             top: -2px; // visually vertically centered
 | |
| 
 | |
|             // Hide the hairline progress bar since we're at 100% height. Need to have distinct rules
 | |
|             // because CSS is weird.
 | |
|             background: none;
 | |
|             &::before {
 | |
|                 background: none;
 | |
|             }
 | |
|             &::-moz-range-progress {
 | |
|                 background: none;
 | |
|             }
 | |
| 
 | |
|             // Make the thumb easier to see. Like the SeekBar original styles, these need to be
 | |
|             // distinct. We make it transparent so it doesn't show up on the UI, but also larger
 | |
|             // so it's easier to grab by mouse users in some browsers. Most browsers let the user
 | |
|             // move and drag the thumb regardless of hitting the thumb, however.
 | |
|             &::-webkit-slider-thumb {
 | |
|                 width: 10px;
 | |
|                 height: 10px;
 | |
|                 background-color: transparent;
 | |
|             }
 | |
|             &::-moz-range-thumb {
 | |
|                 width: 10px;
 | |
|                 height: 10px;
 | |
|                 background-color: transparent;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // For timeline-rendered playback, the clock is on the other side of the waveform.
 | |
|         & + .mx_Clock {
 | |
|             text-align: right;
 | |
| 
 | |
|             // Take the padding off the clock because it's accounted for by the `timelineLayoutMiddle`
 | |
|             padding: 0;
 | |
|         }
 | |
|     }
 | |
| }
 |