11import { YTNode } from '../helpers.js' ;
2- import type { RawNode } from '../index.js' ;
2+ import { Parser , type RawNode } from '../index.js' ;
3+ import EngagementPanelSectionList from './EngagementPanelSectionList.js' ;
34import Text from './misc/Text.js' ;
45
56export default class DescriptionPreviewView extends YTNode {
@@ -9,6 +10,16 @@ export default class DescriptionPreviewView extends YTNode {
910 max_lines : number ;
1011 truncation_text : Text ;
1112 always_show_truncation_text : boolean ;
13+ more_endpoint ?: {
14+ show_engagement_panel_endpoint : {
15+ engagement_panel : EngagementPanelSectionList | null ,
16+ engagement_panel_popup_type : string ;
17+ identifier : {
18+ surface : string ,
19+ tag : string
20+ }
21+ }
22+ } ;
1223
1324 constructor ( data : RawNode ) {
1425 super ( ) ;
@@ -17,5 +28,20 @@ export default class DescriptionPreviewView extends YTNode {
1728 this . max_lines = parseInt ( data . maxLines ) ;
1829 this . truncation_text = Text . fromAttributed ( data . truncationText ) ;
1930 this . always_show_truncation_text = ! ! data . alwaysShowTruncationText ;
31+
32+ if ( data . rendererContext . commandContext ?. onTap ?. innertubeCommand ?. showEngagementPanelEndpoint ) {
33+ const endpoint = data . rendererContext . commandContext ?. onTap ?. innertubeCommand ?. showEngagementPanelEndpoint ;
34+
35+ this . more_endpoint = {
36+ show_engagement_panel_endpoint : {
37+ engagement_panel : Parser . parseItem ( endpoint . engagementPanel , EngagementPanelSectionList ) ,
38+ engagement_panel_popup_type : endpoint . engagementPanelPresentationConfigs . engagementPanelPopupPresentationConfig . popupType ,
39+ identifier : {
40+ surface : endpoint . identifier . surface ,
41+ tag : endpoint . identifier . tag
42+ }
43+ }
44+ } ;
45+ }
2046 }
2147}
0 commit comments