@ -345,7 +345,22 @@ export function VideoTrimNode({ id, data, selected }: NodeProps<VideoTrimNodeTyp
{ hasSourceVideo && (
{ hasSourceVideo && (
< div className = "shrink-0 flex flex-col gap-1.5 px-1" >
< div className = "shrink-0 flex flex-col gap-1.5 px-1" >
{ /* Dual range slider */ }
{ /* Dual range slider */ }
< div className = "nodrag nowheel relative h-5 flex items-center" >
< div className = "nodrag nowheel relative h-5 flex items-center trim-slider-container" >
{ /* Make only the slider thumbs interactive, not the full-width invisible input bodies */ }
< style > { `
. trim - slider - container input [ type = "range" ] {
pointer - events : none ;
}
. trim - slider - container input [ type = "range" ] : : - webkit - slider - thumb {
pointer - events : all ;
cursor : pointer ;
}
. trim - slider - container input [ type = "range" ] : : - moz - range - thumb {
pointer - events : all ;
cursor : pointer ;
}
` }</style>
{ /* Track background */ }
{ /* Track background */ }
< div className = "absolute left-0 right-0 h-1.5 bg-neutral-700 rounded-full" / >
< div className = "absolute left-0 right-0 h-1.5 bg-neutral-700 rounded-full" / >
@ -355,7 +370,7 @@ export function VideoTrimNode({ id, data, selected }: NodeProps<VideoTrimNodeTyp
style = { { left : ` ${ startPct } % ` , right : ` ${ 100 - endPct } % ` } }
style = { { left : ` ${ startPct } % ` , right : ` ${ 100 - endPct } % ` } }
/ >
/ >
{ /* Start slider */ }
{ /* Start slider (higher z-index so it's draggable when both thumbs overlap at 0) */ }
< input
< input
type = "range"
type = "range"
min = { 0 }
min = { 0 }
@ -363,8 +378,8 @@ export function VideoTrimNode({ id, data, selected }: NodeProps<VideoTrimNodeTyp
step = { 0.1 }
step = { 0.1 }
value = { startTime }
value = { startTime }
onChange = { handleStartChange }
onChange = { handleStartChange }
className = "absolute w-full h-full opacity-0 cursor-pointer nodrag"
className = "absolute w-full h-full opacity-0 nodrag"
style = { { zIndex : 2 } }
style = { { zIndex : 3 } }
/ >
/ >
{ /* End slider */ }
{ /* End slider */ }
@ -375,8 +390,8 @@ export function VideoTrimNode({ id, data, selected }: NodeProps<VideoTrimNodeTyp
step = { 0.1 }
step = { 0.1 }
value = { endTime }
value = { endTime }
onChange = { handleEndChange }
onChange = { handleEndChange }
className = "absolute w-full h-full opacity-0 cursor-pointer nodrag"
className = "absolute w-full h-full opacity-0 nodrag"
style = { { zIndex : 3 } }
style = { { zIndex : 2 } }
/ >
/ >
{ /* Visual thumb indicators */ }
{ /* Visual thumb indicators */ }