Combine CSS for trimmer and selector into single file

This commit is contained in:
Eric Rosenbaum committed 2019-07-15 11:40:10 -04:00
1 parent c46069759a
commit cff0b17881
3 files changed
+31 -124

No files matched your search

@@ -1,119 +0,0 @@
@import "../../css/colors.css";
$border-radius: 4px;
$trim-handle-width: 12px;
$trim-handle-height: 14px;
$stripe-size: 10px;
$hover-scale: 2;
.absolute {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
cursor: pointer;
/* Force the browser to paint separately to avoid composite cost with waveform */
transform: translateZ(0);
}
.trim-background {
cursor: pointer;
touch-action: none;
}
.trim-background-mask {
border: 1px solid $motion-tertiary;
opacity: 0.5;
background: $motion-primary;
}
.start-trim-background .trim-background-mask {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
.end-trim-background .trim-background-mask {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
.trim-line {
position: absolute;
top: 0;
width: 0px;
height: 100%;
border: 1px solid $motion-tertiary;
}
.playhead-container {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
.playhead {
/*
Even though playhead is just a line, it is 100% width (the width of the waveform)
so that we can use transform: translateX() using percentages.
*/
width: 100%;
border-left: 1px solid $motion-primary;
border-top: none;
border-bottom: none;
border-right: none;
}
.start-trim-line {
left: 0;
}
.end-trim-line {
right: 0;
}
.trim-handle {
position: absolute;
left: calc(-$trim-handle-width / 2);
width: $trim-handle-width;
height: $trim-handle-height;
filter: hue-rotate(180deg);
}
.trim-handle img {
position: absolute;
width: $trim-handle-width;
height: $trim-handle-height;
/* Make sure image dragging isn't triggered */
user-select: none;
user-drag: none;
-webkit-user-drag: none; /* Autoprefixer doesn't seem to work for this */
transition: 0.2s;
}
.top-trim-handle {
top: -$trim-handle-height;
}
.bottom-trim-handle {
bottom: -$trim-handle-height;
}
.top-trim-handle img {
transform: rotate(180deg);
}
/* Increase handle size when anywhere on draggable area is hovered */
.trim-background:hover img {
transform: scale($hover-scale);
}
.trim-background:hover .top-trim-handle img {
transform: rotate(180deg) scale($hover-scale);
}
@@ -2,12 +2,12 @@ import PropTypes from 'prop-types';
import React from 'react';
import classNames from 'classnames';
import Box from '../box/box.jsx';
import styles from './audio-selector.css';
import styles from './audio-trimmer.css';
import handleIcon from './icon--handle.svg';
const AudioSelector = props => (
<div
className={styles.absolute}
className={classNames(styles.absolute, styles.selector)}
ref={props.containerRef}
onMouseDown={props.onNewSelectionMouseDown}
onTouchStart={props.onNewSelectionMouseDown}
@@ -20,9 +20,9 @@ const AudioSelector = props => (
width: `${100 * (props.trimEnd - props.trimStart)}%`
}}
>
<Box className={classNames(styles.absolute, styles.trimBackgroundMask)} />
<Box className={classNames(styles.absolute, styles.selectionBackground)} />
<Box
className={classNames(styles.trimLine, styles.startTrimLine)}
className={classNames(styles.trimLine, styles.startSelectionLine)}
onMouseDown={props.onTrimStartMouseDown}
onTouchStart={props.onTrimStartMouseDown}
>
@@ -34,7 +34,7 @@ const AudioSelector = props => (
</Box>
</Box>
<Box
className={classNames(styles.trimLine, styles.endTrimLine)}
className={classNames(styles.trimLine, styles.endSelectionLine)}
onMouseDown={props.onTrimEndMouseDown}
onTouchStart={props.onTrimEndMouseDown}
>
@@ -17,6 +17,10 @@ $hover-scale: 2;
transform: translateZ(0);
}
.selector {
cursor: pointer;
}
.trim-background {
cursor: pointer;
touch-action: none;
@@ -35,6 +39,12 @@ $hover-scale: 2;
);
}
.selection-background {
border: 1px solid $motion-tertiary;
background: $motion-primary;
opacity: 0.5;
}
.start-trim-background .trim-background-mask {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
@@ -53,6 +63,10 @@ $hover-scale: 2;
border: 1px solid $red-tertiary;
}
.selector .trim-line {
border: 1px solid $motion-tertiary;
}
.playhead-container {
position: absolute;
top: 0;
@@ -78,10 +92,18 @@ $hover-scale: 2;
right: 0;
}
.start-selection-line {
left: 0;
}
.end-trim-line {
left: 0;
}
.end-selection-line {
right: 0;
}
.trim-handle {
position: absolute;
left: calc(-$trim-handle-width / 2);
@@ -89,6 +111,10 @@ $hover-scale: 2;
height: $trim-handle-height;
}
.selector .trim-handle {
filter: hue-rotate(180deg);
}
.trim-handle img {
position: absolute;
width: $trim-handle-width;