@@ -8,7 +8,10 @@ import {
88import { useStudioContext } from "../../contexts/StudioContext" ;
99import { useDomEditContext } from "../../contexts/DomEditContext" ;
1010import { usePlayerStore } from "../../player" ;
11- import { findMatchingTimelineElementId } from "../../utils/studioHelpers" ;
11+ import {
12+ findMatchingTimelineElementId ,
13+ resolveTimelineSelectionSeekTime ,
14+ } from "../../utils/studioHelpers" ;
1215import { Layers } from "../../icons/SystemIcons" ;
1316
1417const TAG_ICONS : Record < string , string > = {
@@ -49,8 +52,14 @@ interface CollapsedState {
4952}
5053
5154export const LayersPanel = memo ( function LayersPanel ( ) {
52- const { previewIframeRef, activeCompPath, refreshKey, compositionLoading, timelineElements } =
53- useStudioContext ( ) ;
55+ const {
56+ previewIframeRef,
57+ activeCompPath,
58+ refreshKey,
59+ compositionLoading,
60+ timelineElements,
61+ currentTime,
62+ } = useStudioContext ( ) ;
5463 const { domEditSelection, applyDomSelection, updateDomEditHoverSelection } = useDomEditContext ( ) ;
5564
5665 const [ layers , setLayers ] = useState < DomEditLayerItem [ ] > ( [ ] ) ;
@@ -140,11 +149,12 @@ export const LayersPanel = memo(function LayersPanel() {
140149 if ( matchedId ) {
141150 const el = timelineElements . find ( ( e ) => ( e . key ?? e . id ) === matchedId ) ;
142151 if ( el ) {
143- usePlayerStore . getState ( ) . requestSeek ( el . start + el . duration / 2 ) ;
152+ const nextTime = resolveTimelineSelectionSeekTime ( currentTime , el ) ;
153+ if ( nextTime != null ) usePlayerStore . getState ( ) . requestSeek ( nextTime ) ;
144154 }
145155 }
146156 } ,
147- [ resolveSelection , timelineElements ] ,
157+ [ currentTime , resolveSelection , timelineElements ] ,
148158 ) ;
149159
150160 const handleSelectLayer = useCallback (
0 commit comments