feat(MusicImmersiveHeader): Parse buttons and menu

This commit is contained in:
Luan
2025-03-24 10:49:54 -03:00
parent 1d4024fae5
commit cbb2535b24

View File

@@ -1,25 +1,41 @@
import { YTNode } from '../helpers.js';
import { Parser, type RawNode } from '../index.js';
import Button from './Button.js';
import MusicThumbnail from './MusicThumbnail.js';
import NavigationEndpoint from './NavigationEndpoint.js';
import SubscribeButton from './SubscribeButton.js';
import ToggleButton from './ToggleButton.js';
import Menu from './menus/Menu.js';
import Text from './misc/Text.js';
export default class MusicImmersiveHeader extends YTNode {
static type = 'MusicImmersiveHeader';
title: Text;
description: Text;
thumbnail: MusicThumbnail | null;
public title: Text;
public menu: Menu | null;
public more_button: ToggleButton | null;
public play_button: Button | null;
public share_endpoint?: NavigationEndpoint;
public start_radio_button: Button | null;
public subscription_button: SubscribeButton | null;
public description: Text;
public thumbnail: MusicThumbnail | null;
constructor(data: RawNode) {
super();
this.title = new Text(data.title);
this.menu = Parser.parseItem(data.menu, Menu);
this.more_button = Parser.parseItem(data.moreButton, ToggleButton);
this.play_button = Parser.parseItem(data.playButton, Button);
if ('shareEndpoint' in data)
this.share_endpoint = new NavigationEndpoint(data.shareEndpoint);
this.start_radio_button = Parser.parseItem(data.startRadioButton, Button);
this.subscription_button = Parser.parseItem(data.subscriptionButton, SubscribeButton);
this.description = new Text(data.description);
this.thumbnail = Parser.parseItem(data.thumbnail, MusicThumbnail);
/**
Not useful for now.
this.menu = Parser.parse(data.menu);
this.play_button = Parser.parse(data.playButton);
this.start_radio_button = Parser.parse(data.startRadioButton);
*/
}
}