diff --git a/src/parser/classes/Button.ts b/src/parser/classes/Button.ts index bbae93a3..4e962af5 100644 --- a/src/parser/classes/Button.ts +++ b/src/parser/classes/Button.ts @@ -6,17 +6,21 @@ import { YTNode } from '../helpers'; class Button extends YTNode { static type = 'Button'; - text: string; + text?: string; - label; - tooltip; - icon_type; + label?: string; + tooltip?: string; + icon_type?: string; + is_disabled?: boolean; endpoint: NavigationEndpoint; constructor(data: any) { super(); - this.text = new Text(data.text).toString(); + + if (data.text) { + this.text = new Text(data.text).toString(); + } if (data.accessibility?.label) { this.label = data.accessibility?.label; @@ -30,6 +34,10 @@ class Button extends YTNode { this.icon_type = data.icon?.iconType; } + if (Reflect.has(data, 'isDisabled')) { + this.is_disabled = data.isDisabled; + } + this.endpoint = new NavigationEndpoint(data.navigationEndpoint || data.serviceEndpoint || data.command); } } diff --git a/src/parser/classes/ExpandableMetadata.ts b/src/parser/classes/ExpandableMetadata.ts new file mode 100644 index 00000000..7a4b859a --- /dev/null +++ b/src/parser/classes/ExpandableMetadata.ts @@ -0,0 +1,41 @@ +import Parser from '..'; + +import Text from './misc/Text'; +import Thumbnail from './misc/Thumbnail'; + +import Button from './Button'; +import HorizontalCardList from './HorizontalCardList'; + +import { YTNode } from '../helpers'; + +class ExpandableMetadata extends YTNode { + static type = 'ExpandableMetadata'; + + header: { + collapsed_title: Text; + collapsed_thumbnail: Thumbnail[]; + collapsed_label: Text; + expanded_title: Text; + }; + + expanded_content: HorizontalCardList | null; + expand_button: Button | null; + collapse_button: Button | null; + + constructor(data: any) { + super(); + + this.header = { + collapsed_title: new Text(data.header.collapsedTitle), + collapsed_thumbnail: Thumbnail.fromResponse(data.header.collapsedThumbnail), + collapsed_label: new Text(data.header.collapsedLabel), + expanded_title: new Text(data.header.expandedTitle) + }; + + this.expanded_content = Parser.parseItem(data.expandedContent); + this.expand_button = Parser.parseItem