Skip to content

Commit ee05a53

Browse files
committed
fix(webui): More fixes [copilot]
1 parent ca182d1 commit ee05a53

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

packages/webui/src/client/ui/PreviewPopUp/PreviewPopUpContext.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ export function PreviewPopUpContextProvider({ children }: React.PropsWithChildre
460460
closeSession()
461461
setPreviewSessionKey((prev) => prev + 1)
462462

463-
if (opts?.time) {
463+
if (opts?.time !== undefined) {
464464
setTime(opts.time)
465465
} else {
466466
setTime(null)
@@ -476,7 +476,10 @@ export function PreviewPopUpContextProvider({ children }: React.PropsWithChildre
476476
setPreviewContent(content)
477477

478478
const handle: IPreviewPopUpSession = {
479-
close: closeSession,
479+
close: () => {
480+
if (currentHandle.current !== handle) return
481+
closeSession()
482+
},
480483
update: (contents) => {
481484
if (currentHandle.current !== handle) return
482485
if (isDetachedHTMLElement(anchor)) {

packages/webui/src/client/ui/SegmentTimeline/Parts/SegmentTimelinePart.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ interface IProps {
6969
studio: UIStudio
7070
part: PartUi
7171
timeToPixelRatio: number
72-
onCollapseOutputToggle?: (layer: IOutputLayerUi, event: any) => void
7372
collapsedOutputs: {
7473
[key: string]: boolean
7574
}

packages/webui/src/client/ui/SegmentTimeline/SegmentTimeline.tsx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,10 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
287287
RundownViewEventBus.off(RundownViewEvents.HIGHLIGHT, this.onHighlight)
288288
RundownViewEventBus.off(RundownViewEvents.SEGMENT_ZOOM_ON, this.onRundownEventSegmentZoomOn)
289289
RundownViewEventBus.off(RundownViewEvents.SEGMENT_ZOOM_OFF, this.onRundownEventSegmentZoomOff)
290+
291+
// Break any remaining references to detached DOM elements.
292+
this.timeline = null
293+
this.segmentBlock = null
290294
}
291295

292296
private highlightTimeout: NodeJS.Timeout | undefined
@@ -768,7 +772,6 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
768772
liveLineHistorySize={this.props.liveLineHistorySize}
769773
livePosition={this.props.livePosition}
770774
onScroll={this.props.onScroll}
771-
onCollapseOutputToggle={this.props.onCollapseOutputToggle}
772775
onFollowLiveLine={this.props.onFollowLiveLine}
773776
onContextMenu={this.props.onContextMenu}
774777
onPieceClick={this.props.onPieceClick}
@@ -844,7 +847,6 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
844847
liveLineHistorySize={this.props.liveLineHistorySize}
845848
livePosition={this.props.livePosition}
846849
onScroll={this.props.onScroll}
847-
onCollapseOutputToggle={this.props.onCollapseOutputToggle}
848850
onFollowLiveLine={this.props.onFollowLiveLine}
849851
onContextMenu={this.props.onContextMenu}
850852
onPieceClick={this.props.onPieceClick}
@@ -875,6 +877,20 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
875877
.sort((a, b) => a._rank - b._rank)
876878
}
877879

880+
private isOutputLayerCollapsible(outputLayer: IOutputLayerUi): boolean {
881+
return outputLayer.sourceLayers !== undefined && outputLayer.sourceLayers.length > 1 && !outputLayer.isFlattened
882+
}
883+
884+
private onOutputLayerLabelClick = (e: React.MouseEvent<HTMLDivElement>) => {
885+
const outputLayerId = e.currentTarget.dataset.outputId
886+
if (!outputLayerId) return
887+
888+
const outputLayer = this.props.segment.outputLayers?.[outputLayerId]
889+
if (!outputLayer || !this.isOutputLayerCollapsible(outputLayer)) return
890+
891+
this.props.onCollapseOutputToggle?.(outputLayer, e)
892+
}
893+
878894
private renderOutputLayerControls(outputGroups: IOutputLayerUi[]) {
879895
const showHiddenSourceLayers = getShowHiddenSourceLayers()
880896

@@ -883,8 +899,7 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
883899
return null
884900
}
885901

886-
const isCollapsible =
887-
outputLayer.sourceLayers !== undefined && outputLayer.sourceLayers.length > 1 && !outputLayer.isFlattened
902+
const isCollapsible = this.isOutputLayerCollapsible(outputLayer)
888903
return (
889904
<div
890905
key={outputLayer._id}
@@ -900,7 +915,7 @@ export class SegmentTimelineClass extends React.Component<Translated<WithTiming<
900915
className="segment-timeline__output-layer-control__label"
901916
data-output-id={outputLayer._id}
902917
tabIndex={0}
903-
onClick={(e) => isCollapsible && this.props.onCollapseOutputToggle?.(outputLayer, e)}
918+
onClick={this.onOutputLayerLabelClick}
904919
role="presentation"
905920
>
906921
{outputLayer.name}

0 commit comments

Comments
 (0)