fix(clip): typed times belong to their value, and every mark on the player chrome can be seen
TimecodeField drops a draft when the value moves under it (another segment selected, a nudge), so leaving the field never commits it to another cut; it is invalid only once offered, with a line under it saying how to type a time. On the always-dark chrome media-scope points every focus ring at --media-mark and errors at the new --media-danger (a light theme's accent and danger were under 3:1 there). A track whose dragged handle unmounts ends the drag on the pointer's release instead of locking up; a remove refused while clips are queued leaves no focus to take later; each remove-cut button names its cut and is a 24px target. DESIGN.md records the media tokens; stale comments fixed.
This commit is contained in:
@@ -84,15 +84,17 @@ interface Props {
|
||||
|
||||
const NUDGE_S = 0.1;
|
||||
// How far short of the item's end a seek stops: a mark on the very end moves the player to its last
|
||||
// moment, not past it — a player put at its end ENDS (a Plex film closes, a YouTube queue steps on)
|
||||
// and takes the clip with it.
|
||||
// moment, not past it. A player put at its end ENDS, and the item counts as finished — YouTube marks
|
||||
// it watched and shows its end screen, a Plex position reads as the whole — while a mark there is only
|
||||
// a place. (The players keep themselves and the clip open at an end while one is marked; this keeps
|
||||
// the item unfinished.)
|
||||
const LAST_MOMENT_S = 0.25;
|
||||
// On the always-dark chrome the ends are white (a light theme's accent is a dark blue there, which
|
||||
// all but vanished on the bar) and the playhead amber, so an end and the playhead are never confused.
|
||||
// A focused end is ringed in amber too, as the crop frame is: the accent ring was under 3:1 there.
|
||||
// The media amber (`--media-mark`), not the theme's warn: a light theme's is dark on this bar.
|
||||
// The media amber (`--media-mark`), not the theme's warn: a light theme's is dark on this bar. Every
|
||||
// focus ring in the panel is that amber as well (media-scope re-points --focus), as the crop frame's
|
||||
// is: the theme accent's ring was under 3:1 on the chrome.
|
||||
const PLAYHEAD = "bg-media-mark";
|
||||
const END_RING = "focus-visible:outline-media-mark";
|
||||
|
||||
export default function ClipPanel({
|
||||
src,
|
||||
@@ -247,7 +249,6 @@ export default function ClipPanel({
|
||||
playhead={current}
|
||||
playheadClassName={PLAYHEAD}
|
||||
onSeek={seek}
|
||||
handleRingClassName={END_RING}
|
||||
className="h-14 cursor-pointer rounded-md bg-white/10 text-white/45"
|
||||
background={
|
||||
<RulerTicks view={view} format={(s) => formatTimecode(s, hours).replace(/\.\d$/, "")} />
|
||||
|
||||
Reference in New Issue
Block a user