@@ -13,8 +13,7 @@ import { getElementDocumentOffset, OffsetPosition } from '../../../utils/positio
13
13
import { getSplitItems } from '../../SegmentContainer/getSplitItems'
14
14
import { PieceElement } from '../../SegmentContainer/PieceElement'
15
15
import { getPieceSteps , PieceMultistepChevron } from '../../SegmentContainer/PieceMultistepChevron'
16
- import { PieceUi } from '../../SegmentContainer/withResolvedSegment'
17
- import { withMediaObjectStatus } from '../../SegmentTimeline/withMediaObjectStatus'
16
+ import { useContentStatusForPieceInstance } from '../../SegmentTimeline/withMediaObjectStatus'
18
17
import { PieceHoverInspector } from '../PieceHoverInspector'
19
18
20
19
interface IProps {
@@ -52,14 +51,16 @@ function widthInBase(pieceMaxDuration: number, timelineBase: number): number {
52
51
}
53
52
54
53
// TODO: Create useMediaObjectStatus that would set up new subscriptions
55
- export const LinePartMainPiece = withMediaObjectStatus < IProps , { } > ( ) ( function LinePartMainPiece ( {
54
+ export function LinePartMainPiece ( {
56
55
partId,
57
56
piece,
58
57
partDuration,
59
58
timelineBase,
60
59
capToPartDuration,
61
60
studio,
62
- } ) {
61
+ } : IProps ) : JSX . Element {
62
+ const contentStatus = useContentStatusForPieceInstance ( piece . instance )
63
+
63
64
const [ hover , setHover ] = useState ( false )
64
65
const [ origin , setOrigin ] = useState < OffsetPosition > ( { left : 0 , top : 0 } )
65
66
const [ width , setWidth ] = useState ( 0 )
@@ -75,15 +76,13 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
75
76
}
76
77
} , [ pieceMaxDuration , timelineBase ] )
77
78
78
- const pieceUi = piece as PieceUi
79
-
80
79
const seek = ( piece . instance . piece . content as any ) . seek ?? 0
81
80
82
81
const anomalies = useMemo (
83
82
( ) => (
84
83
< >
85
- { pieceUi . contentStatus ?. scenes &&
86
- pieceUi . contentStatus ?. scenes . map (
84
+ { contentStatus ?. scenes &&
85
+ contentStatus ?. scenes . map (
87
86
( i ) =>
88
87
i < pieceMaxDuration &&
89
88
i - seek >= 0 && (
@@ -94,8 +93,8 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
94
93
> </ span >
95
94
)
96
95
) }
97
- { pieceUi . contentStatus ?. freezes &&
98
- pieceUi . contentStatus ?. freezes . map (
96
+ { contentStatus ?. freezes &&
97
+ contentStatus ?. freezes . map (
99
98
( i ) =>
100
99
i . start < pieceMaxDuration &&
101
100
i . start - seek >= 0 && (
@@ -109,8 +108,8 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
109
108
> </ span >
110
109
)
111
110
) }
112
- { pieceUi . contentStatus ?. blacks &&
113
- pieceUi . contentStatus ?. blacks . map (
111
+ { contentStatus ?. blacks &&
112
+ contentStatus ?. blacks . map (
114
113
( i ) =>
115
114
i . start < pieceMaxDuration &&
116
115
i . start - seek >= 0 && (
@@ -126,7 +125,7 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
126
125
) }
127
126
</ >
128
127
) ,
129
- [ pieceUi . contentStatus ?. blacks , pieceUi . contentStatus ?. freezes , pieceUi . contentStatus ?. scenes ]
128
+ [ contentStatus ?. blacks , contentStatus ?. freezes , contentStatus ?. scenes ]
130
129
)
131
130
132
131
const onPointerEnter = ( e : React . PointerEvent < HTMLDivElement > ) => {
@@ -161,7 +160,7 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
161
160
setMousePosition ( e . pageX - origin . left )
162
161
}
163
162
164
- const noticeLevel = getNoticeLevelForPieceStatus ( piece . contentStatus ?. status )
163
+ const noticeLevel = getNoticeLevelForPieceStatus ( contentStatus ?. status )
165
164
166
165
const hasStepChevron = getPieceSteps ( piece )
167
166
@@ -205,6 +204,7 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
205
204
hoverScrubTimePosition = { mouseTimePosition * ( piece . instance . piece . content . sourceDuration || 0 ) }
206
205
hovering = { hover }
207
206
pieceInstance = { piece }
207
+ contentStatus = { contentStatus }
208
208
layer = { piece . sourceLayer }
209
209
originPosition = { origin }
210
210
mousePosition = { mousePosition }
@@ -213,7 +213,7 @@ export const LinePartMainPiece = withMediaObjectStatus<IProps, {}>()(function Li
213
213
) }
214
214
</ PieceElement >
215
215
)
216
- } )
216
+ }
217
217
218
218
const ColoredMark = React . memo ( function ColoredMark ( { color } : { color : string | undefined } ) {
219
219
if ( ! color ) return null
0 commit comments