Skip to content

Commit

Permalink
feat(parser): Add ClientSideToggleMenuItem (#835)
Browse files Browse the repository at this point in the history
* feat(parser): Add `ClientSideToggleMenuItem`

* feat: parse the command

* feat: handle different type of `ClientSideToggleMenuItem`
  • Loading branch information
jonz94 authored Dec 12, 2024
1 parent eeaae62 commit 0b2b0da
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
46 changes: 46 additions & 0 deletions src/parser/classes/ClientSideToggleMenuItem.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { YTNode } from '../helpers.js';
import type { RawNode } from '../index.js';
import NavigationEndpoint from './NavigationEndpoint.js';
import Text from './misc/Text.js';

export default class ClientSideToggleMenuItem extends YTNode {
static type = 'ClientSideToggleMenuItem';

text: Text;
icon_type: string;
toggled_text: Text;
toggled_icon_type: string;
is_toggled?: boolean;
menu_item_identifier: string;
endpoint: NavigationEndpoint;
logging_directives?: {
visibility: {
types: string;
},
enable_displaylogger_experiment: boolean;
};

constructor(data: RawNode) {
super();
this.text = new Text(data.defaultText);
this.icon_type = data.defaultIcon.iconType;
this.toggled_text = new Text(data.toggledText);
this.toggled_icon_type = data.toggledIcon.iconType;

if (Reflect.has(data, 'isToggled')) {
this.is_toggled = data.isToggled;
}

this.menu_item_identifier = data.menuItemIdentifier;
this.endpoint = new NavigationEndpoint(data.command);

if (Reflect.has(data, 'loggingDirectives')) {
this.logging_directives = {
visibility: {
types: data.loggingDirectives.visibility.types
},
enable_displaylogger_experiment: data.loggingDirectives.enableDisplayloggerExperiment
};
}
}
}
1 change: 1 addition & 0 deletions src/parser/nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export { default as ChipBarView } from './classes/ChipBarView.js';
export { default as ChipCloud } from './classes/ChipCloud.js';
export { default as ChipCloudChip } from './classes/ChipCloudChip.js';
export { default as ChipView } from './classes/ChipView.js';
export { default as ClientSideToggleMenuItem } from './classes/ClientSideToggleMenuItem.js';
export { default as ClipAdState } from './classes/ClipAdState.js';
export { default as ClipCreation } from './classes/ClipCreation.js';
export { default as ClipCreationScrubber } from './classes/ClipCreationScrubber.js';
Expand Down

0 comments on commit 0b2b0da

Please sign in to comment.