// @dart=2.9 // To parse this JSON data, do // // final watchPageId = watchPageIdFromJson(jsonString); import 'dart:convert'; class WatchPageId { WatchPageId({ this.responseContext, this.contents, this.currentVideoEndpoint, this.trackingParams, this.playerOverlays, this.onResponseReceivedEndpoints, this.engagementPanels, this.topbar, this.frameworkUpdates, this.webWatchNextResponseExtensionData, }); final ResponseContext responseContext; final Contents contents; final Endpoint currentVideoEndpoint; final String trackingParams; final PlayerOverlays playerOverlays; final List onResponseReceivedEndpoints; final List engagementPanels; final Topbar topbar; final FrameworkUpdates frameworkUpdates; final WebWatchNextResponseExtensionData webWatchNextResponseExtensionData; factory WatchPageId.fromRawJson(String str) => WatchPageId.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory WatchPageId.fromJson(Map json) => WatchPageId( responseContext: json["responseContext"] == null ? null : ResponseContext.fromJson(json["responseContext"]), contents: json["contents"] == null ? null : Contents.fromJson(json["contents"]), currentVideoEndpoint: json["currentVideoEndpoint"] == null ? null : Endpoint.fromJson(json["currentVideoEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], playerOverlays: json["playerOverlays"] == null ? null : PlayerOverlays.fromJson(json["playerOverlays"]), onResponseReceivedEndpoints: json["onResponseReceivedEndpoints"] == null ? null : List.from( json["onResponseReceivedEndpoints"] .map((x) => OnResponseReceivedEndpoint.fromJson(x))), engagementPanels: json["engagementPanels"] == null ? null : List.from(json["engagementPanels"] .map((x) => EngagementPanel.fromJson(x))), topbar: json["topbar"] == null ? null : Topbar.fromJson(json["topbar"]), frameworkUpdates: json["frameworkUpdates"] == null ? null : FrameworkUpdates.fromJson(json["frameworkUpdates"]), webWatchNextResponseExtensionData: json["webWatchNextResponseExtensionData"] == null ? null : WebWatchNextResponseExtensionData.fromJson( json["webWatchNextResponseExtensionData"]), ); Map toJson() => { "responseContext": responseContext == null ? null : responseContext.toJson(), "contents": contents == null ? null : contents.toJson(), "currentVideoEndpoint": currentVideoEndpoint == null ? null : currentVideoEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "playerOverlays": playerOverlays == null ? null : playerOverlays.toJson(), "onResponseReceivedEndpoints": onResponseReceivedEndpoints == null ? null : List.from( onResponseReceivedEndpoints.map((x) => x.toJson())), "engagementPanels": engagementPanels == null ? null : List.from(engagementPanels.map((x) => x.toJson())), "topbar": topbar == null ? null : topbar.toJson(), "frameworkUpdates": frameworkUpdates == null ? null : frameworkUpdates.toJson(), "webWatchNextResponseExtensionData": webWatchNextResponseExtensionData == null ? null : webWatchNextResponseExtensionData.toJson(), }; } class Contents { Contents({ this.twoColumnWatchNextResults, }); final TwoColumnWatchNextResults twoColumnWatchNextResults; factory Contents.fromRawJson(String str) => Contents.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Contents.fromJson(Map json) => Contents( twoColumnWatchNextResults: json["twoColumnWatchNextResults"] == null ? null : TwoColumnWatchNextResults.fromJson( json["twoColumnWatchNextResults"]), ); Map toJson() => { "twoColumnWatchNextResults": twoColumnWatchNextResults == null ? null : twoColumnWatchNextResults.toJson(), }; } class TwoColumnWatchNextResults { TwoColumnWatchNextResults({ this.results, this.secondaryResults, this.autoplay, }); final TwoColumnWatchNextResultsResults results; final TwoColumnWatchNextResultsSecondaryResults secondaryResults; final TwoColumnWatchNextResultsAutoplay autoplay; factory TwoColumnWatchNextResults.fromRawJson(String str) => TwoColumnWatchNextResults.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TwoColumnWatchNextResults.fromJson(Map json) => TwoColumnWatchNextResults( results: json["results"] == null ? null : TwoColumnWatchNextResultsResults.fromJson(json["results"]), secondaryResults: json["secondaryResults"] == null ? null : TwoColumnWatchNextResultsSecondaryResults.fromJson( json["secondaryResults"]), autoplay: json["autoplay"] == null ? null : TwoColumnWatchNextResultsAutoplay.fromJson(json["autoplay"]), ); Map toJson() => { "results": results == null ? null : results.toJson(), "secondaryResults": secondaryResults == null ? null : secondaryResults.toJson(), "autoplay": autoplay == null ? null : autoplay.toJson(), }; } class TwoColumnWatchNextResultsAutoplay { TwoColumnWatchNextResultsAutoplay({ this.autoplay, }); final AutoplayAutoplay autoplay; factory TwoColumnWatchNextResultsAutoplay.fromRawJson(String str) => TwoColumnWatchNextResultsAutoplay.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TwoColumnWatchNextResultsAutoplay.fromJson( Map json) => TwoColumnWatchNextResultsAutoplay( autoplay: json["autoplay"] == null ? null : AutoplayAutoplay.fromJson(json["autoplay"]), ); Map toJson() => { "autoplay": autoplay == null ? null : autoplay.toJson(), }; } class AutoplayAutoplay { AutoplayAutoplay({ this.sets, this.countDownSecs, this.trackingParams, }); final List sets; final int countDownSecs; final String trackingParams; factory AutoplayAutoplay.fromRawJson(String str) => AutoplayAutoplay.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AutoplayAutoplay.fromJson(Map json) => AutoplayAutoplay( sets: json["sets"] == null ? null : List.from(json["sets"].map((x) => Set.fromJson(x))), countDownSecs: json["countDownSecs"] == null ? null : json["countDownSecs"], trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "sets": sets == null ? null : List.from(sets.map((x) => x.toJson())), "countDownSecs": countDownSecs == null ? null : countDownSecs, "trackingParams": trackingParams == null ? null : trackingParams, }; } class Set { Set({ this.mode, this.autoplayVideo, }); final String mode; final AutoplayVideo autoplayVideo; factory Set.fromRawJson(String str) => Set.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Set.fromJson(Map json) => Set( mode: json["mode"] == null ? null : json["mode"], autoplayVideo: json["autoplayVideo"] == null ? null : AutoplayVideo.fromJson(json["autoplayVideo"]), ); Map toJson() => { "mode": mode == null ? null : mode, "autoplayVideo": autoplayVideo == null ? null : autoplayVideo.toJson(), }; } class AutoplayVideo { AutoplayVideo({ this.clickTrackingParams, this.commandMetadata, this.watchEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final AutoplayVideoWatchEndpoint watchEndpoint; factory AutoplayVideo.fromRawJson(String str) => AutoplayVideo.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AutoplayVideo.fromJson(Map json) => AutoplayVideo( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), watchEndpoint: json["watchEndpoint"] == null ? null : AutoplayVideoWatchEndpoint.fromJson(json["watchEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "watchEndpoint": watchEndpoint == null ? null : watchEndpoint.toJson(), }; } class AutoplayVideoCommandMetadata { AutoplayVideoCommandMetadata({ this.webCommandMetadata, }); final PurpleWebCommandMetadata webCommandMetadata; factory AutoplayVideoCommandMetadata.fromRawJson(String str) => AutoplayVideoCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AutoplayVideoCommandMetadata.fromJson(Map json) => AutoplayVideoCommandMetadata( webCommandMetadata: json["webCommandMetadata"] == null ? null : PurpleWebCommandMetadata.fromJson(json["webCommandMetadata"]), ); Map toJson() => { "webCommandMetadata": webCommandMetadata == null ? null : webCommandMetadata.toJson(), }; } class PurpleWebCommandMetadata { PurpleWebCommandMetadata({ this.url, this.webPageType, this.rootVe, this.ignoreNavigation, }); final String url; final WebPageType webPageType; final int rootVe; final bool ignoreNavigation; factory PurpleWebCommandMetadata.fromRawJson(String str) => PurpleWebCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleWebCommandMetadata.fromJson(Map json) => PurpleWebCommandMetadata( url: json["url"] == null ? null : json["url"], webPageType: json["webPageType"] == null ? null : webPageTypeValues.map[json["webPageType"]], rootVe: json["rootVe"] == null ? null : json["rootVe"], ignoreNavigation: json["ignoreNavigation"] == null ? null : json["ignoreNavigation"], ); Map toJson() => { "url": url == null ? null : url, "webPageType": webPageType == null ? null : webPageTypeValues.reverse[webPageType], "rootVe": rootVe == null ? null : rootVe, "ignoreNavigation": ignoreNavigation == null ? null : ignoreNavigation, }; } enum WebPageType { WEB_PAGE_TYPE_WATCH, WEB_PAGE_TYPE_UNKNOWN, WEB_PAGE_TYPE_CHANNEL, WEB_PAGE_TYPE_BROWSE, WEB_PAGE_TYPE_SEARCH } final webPageTypeValues = EnumValues({ "WEB_PAGE_TYPE_BROWSE": WebPageType.WEB_PAGE_TYPE_BROWSE, "WEB_PAGE_TYPE_CHANNEL": WebPageType.WEB_PAGE_TYPE_CHANNEL, "WEB_PAGE_TYPE_SEARCH": WebPageType.WEB_PAGE_TYPE_SEARCH, "WEB_PAGE_TYPE_UNKNOWN": WebPageType.WEB_PAGE_TYPE_UNKNOWN, "WEB_PAGE_TYPE_WATCH": WebPageType.WEB_PAGE_TYPE_WATCH }); class AutoplayVideoWatchEndpoint { AutoplayVideoWatchEndpoint({ this.videoId, this.params, this.playerParams, }); final String videoId; final String params; final String playerParams; factory AutoplayVideoWatchEndpoint.fromRawJson(String str) => AutoplayVideoWatchEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AutoplayVideoWatchEndpoint.fromJson(Map json) => AutoplayVideoWatchEndpoint( videoId: json["videoId"] == null ? null : json["videoId"], params: json["params"] == null ? null : json["params"], playerParams: json["playerParams"] == null ? null : json["playerParams"], ); Map toJson() => { "videoId": videoId == null ? null : videoId, "params": params == null ? null : params, "playerParams": playerParams == null ? null : playerParams, }; } class TwoColumnWatchNextResultsResults { TwoColumnWatchNextResultsResults({ this.results, }); final ResultsResults results; factory TwoColumnWatchNextResultsResults.fromRawJson(String str) => TwoColumnWatchNextResultsResults.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TwoColumnWatchNextResultsResults.fromJson( Map json) => TwoColumnWatchNextResultsResults( results: json["results"] == null ? null : ResultsResults.fromJson(json["results"]), ); Map toJson() => { "results": results == null ? null : results.toJson(), }; } class ResultsResults { ResultsResults({ this.contents, this.trackingParams, }); final List contents; final String trackingParams; factory ResultsResults.fromRawJson(String str) => ResultsResults.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ResultsResults.fromJson(Map json) => ResultsResults( contents: json["contents"] == null ? null : List.from( json["contents"].map((x) => ResultsContent.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "contents": contents == null ? null : List.from(contents.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, }; } class ResultsContent { ResultsContent({ this.videoPrimaryInfoRenderer, this.videoSecondaryInfoRenderer, this.itemSectionRenderer, }); final VideoPrimaryInfoRenderer videoPrimaryInfoRenderer; final VideoSecondaryInfoRenderer videoSecondaryInfoRenderer; final ItemSectionRenderer itemSectionRenderer; factory ResultsContent.fromRawJson(String str) => ResultsContent.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ResultsContent.fromJson(Map json) => ResultsContent( videoPrimaryInfoRenderer: json["videoPrimaryInfoRenderer"] == null ? null : VideoPrimaryInfoRenderer.fromJson( json["videoPrimaryInfoRenderer"]), videoSecondaryInfoRenderer: json["videoSecondaryInfoRenderer"] == null ? null : VideoSecondaryInfoRenderer.fromJson( json["videoSecondaryInfoRenderer"]), itemSectionRenderer: json["itemSectionRenderer"] == null ? null : ItemSectionRenderer.fromJson(json["itemSectionRenderer"]), ); Map toJson() => { "videoPrimaryInfoRenderer": videoPrimaryInfoRenderer == null ? null : videoPrimaryInfoRenderer.toJson(), "videoSecondaryInfoRenderer": videoSecondaryInfoRenderer == null ? null : videoSecondaryInfoRenderer.toJson(), "itemSectionRenderer": itemSectionRenderer == null ? null : itemSectionRenderer.toJson(), }; } class ItemSectionRenderer { ItemSectionRenderer({ this.continuations, this.trackingParams, this.sectionIdentifier, }); final List continuations; final String trackingParams; final String sectionIdentifier; factory ItemSectionRenderer.fromRawJson(String str) => ItemSectionRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ItemSectionRenderer.fromJson(Map json) => ItemSectionRenderer( continuations: json["continuations"] == null ? null : List.from( json["continuations"].map((x) => Continuation.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], sectionIdentifier: json["sectionIdentifier"] == null ? null : json["sectionIdentifier"], ); Map toJson() => { "continuations": continuations == null ? null : List.from(continuations.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "sectionIdentifier": sectionIdentifier == null ? null : sectionIdentifier, }; } class Continuation { Continuation({ this.nextContinuationData, }); final NextContinuationData nextContinuationData; factory Continuation.fromRawJson(String str) => Continuation.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Continuation.fromJson(Map json) => Continuation( nextContinuationData: json["nextContinuationData"] == null ? null : NextContinuationData.fromJson(json["nextContinuationData"]), ); Map toJson() => { "nextContinuationData": nextContinuationData == null ? null : nextContinuationData.toJson(), }; } class NextContinuationData { NextContinuationData({ this.continuation, this.clickTrackingParams, this.label, }); final String continuation; final String clickTrackingParams; final TextClass label; factory NextContinuationData.fromRawJson(String str) => NextContinuationData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory NextContinuationData.fromJson(Map json) => NextContinuationData( continuation: json["continuation"] == null ? null : json["continuation"], clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], label: json["label"] == null ? null : TextClass.fromJson(json["label"]), ); Map toJson() => { "continuation": continuation == null ? null : continuation, "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "label": label == null ? null : label.toJson(), }; } class TextClass { TextClass({ this.runs, }); final List runs; factory TextClass.fromRawJson(String str) => TextClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TextClass.fromJson(Map json) => TextClass( runs: json["runs"] == null ? null : List.from(json["runs"].map((x) => TextRun.fromJson(x))), ); Map toJson() => { "runs": runs == null ? null : List.from(runs.map((x) => x.toJson())), }; } class TextRun { TextRun({ this.text, }); final String text; factory TextRun.fromRawJson(String str) => TextRun.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TextRun.fromJson(Map json) => TextRun( text: json["text"] == null ? null : json["text"], ); Map toJson() => { "text": text == null ? null : text, }; } class VideoPrimaryInfoRenderer { VideoPrimaryInfoRenderer({ this.title, this.viewCount, this.videoActions, this.trackingParams, this.sentimentBar, this.dateText, }); final TextClass title; final ViewCount viewCount; final VideoActions videoActions; final String trackingParams; final SentimentBar sentimentBar; final DateText dateText; factory VideoPrimaryInfoRenderer.fromRawJson(String str) => VideoPrimaryInfoRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoPrimaryInfoRenderer.fromJson(Map json) => VideoPrimaryInfoRenderer( title: json["title"] == null ? null : TextClass.fromJson(json["title"]), viewCount: json["viewCount"] == null ? null : ViewCount.fromJson(json["viewCount"]), videoActions: json["videoActions"] == null ? null : VideoActions.fromJson(json["videoActions"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], sentimentBar: json["sentimentBar"] == null ? null : SentimentBar.fromJson(json["sentimentBar"]), dateText: json["dateText"] == null ? null : DateText.fromJson(json["dateText"]), ); Map toJson() => { "title": title == null ? null : title.toJson(), "viewCount": viewCount == null ? null : viewCount.toJson(), "videoActions": videoActions == null ? null : videoActions.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "sentimentBar": sentimentBar == null ? null : sentimentBar.toJson(), "dateText": dateText == null ? null : dateText.toJson(), }; } class DateText { DateText({ this.simpleText, }); final String simpleText; factory DateText.fromRawJson(String str) => DateText.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory DateText.fromJson(Map json) => DateText( simpleText: json["simpleText"] == null ? null : json["simpleText"], ); Map toJson() => { "simpleText": simpleText == null ? null : simpleText, }; } class SentimentBar { SentimentBar({ this.sentimentBarRenderer, }); final SentimentBarRenderer sentimentBarRenderer; factory SentimentBar.fromRawJson(String str) => SentimentBar.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SentimentBar.fromJson(Map json) => SentimentBar( sentimentBarRenderer: json["sentimentBarRenderer"] == null ? null : SentimentBarRenderer.fromJson(json["sentimentBarRenderer"]), ); Map toJson() => { "sentimentBarRenderer": sentimentBarRenderer == null ? null : sentimentBarRenderer.toJson(), }; } class SentimentBarRenderer { SentimentBarRenderer({ this.percentIfIndifferent, this.percentIfLiked, this.percentIfDisliked, this.likeStatus, this.tooltip, }); final int percentIfIndifferent; final int percentIfLiked; final int percentIfDisliked; final String likeStatus; final String tooltip; factory SentimentBarRenderer.fromRawJson(String str) => SentimentBarRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SentimentBarRenderer.fromJson(Map json) => SentimentBarRenderer( percentIfIndifferent: json["percentIfIndifferent"] == null ? null : json["percentIfIndifferent"], percentIfLiked: json["percentIfLiked"] == null ? null : json["percentIfLiked"], percentIfDisliked: json["percentIfDisliked"] == null ? null : json["percentIfDisliked"], likeStatus: json["likeStatus"] == null ? null : json["likeStatus"], tooltip: json["tooltip"] == null ? null : json["tooltip"], ); Map toJson() => { "percentIfIndifferent": percentIfIndifferent == null ? null : percentIfIndifferent, "percentIfLiked": percentIfLiked == null ? null : percentIfLiked, "percentIfDisliked": percentIfDisliked == null ? null : percentIfDisliked, "likeStatus": likeStatus == null ? null : likeStatus, "tooltip": tooltip == null ? null : tooltip, }; } class VideoActions { VideoActions({ this.menuRenderer, }); final VideoActionsMenuRenderer menuRenderer; factory VideoActions.fromRawJson(String str) => VideoActions.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoActions.fromJson(Map json) => VideoActions( menuRenderer: json["menuRenderer"] == null ? null : VideoActionsMenuRenderer.fromJson(json["menuRenderer"]), ); Map toJson() => { "menuRenderer": menuRenderer == null ? null : menuRenderer.toJson(), }; } class VideoActionsMenuRenderer { VideoActionsMenuRenderer({ this.items, this.trackingParams, this.topLevelButtons, this.accessibility, }); final List items; final String trackingParams; final List topLevelButtons; final AccessibilityData accessibility; factory VideoActionsMenuRenderer.fromRawJson(String str) => VideoActionsMenuRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoActionsMenuRenderer.fromJson(Map json) => VideoActionsMenuRenderer( items: json["items"] == null ? null : List.from( json["items"].map((x) => PurpleItem.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], topLevelButtons: json["topLevelButtons"] == null ? null : List.from( json["topLevelButtons"].map((x) => TopLevelButton.fromJson(x))), accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), ); Map toJson() => { "items": items == null ? null : List.from(items.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "topLevelButtons": topLevelButtons == null ? null : List.from(topLevelButtons.map((x) => x.toJson())), "accessibility": accessibility == null ? null : accessibility.toJson(), }; } class AccessibilityData { AccessibilityData({ this.accessibilityData, }); final Accessibility accessibilityData; factory AccessibilityData.fromRawJson(String str) => AccessibilityData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AccessibilityData.fromJson(Map json) => AccessibilityData( accessibilityData: json["accessibilityData"] == null ? null : Accessibility.fromJson(json["accessibilityData"]), ); Map toJson() => { "accessibilityData": accessibilityData == null ? null : accessibilityData.toJson(), }; } class Accessibility { Accessibility({ this.label, }); final String label; factory Accessibility.fromRawJson(String str) => Accessibility.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Accessibility.fromJson(Map json) => Accessibility( label: json["label"] == null ? null : json["label"], ); Map toJson() => { "label": label == null ? null : label, }; } class PurpleItem { PurpleItem({ this.menuNavigationItemRenderer, this.menuServiceItemRenderer, }); final MenuItemRenderer menuNavigationItemRenderer; final MenuItemRenderer menuServiceItemRenderer; factory PurpleItem.fromRawJson(String str) => PurpleItem.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleItem.fromJson(Map json) => PurpleItem( menuNavigationItemRenderer: json["menuNavigationItemRenderer"] == null ? null : MenuItemRenderer.fromJson(json["menuNavigationItemRenderer"]), menuServiceItemRenderer: json["menuServiceItemRenderer"] == null ? null : MenuItemRenderer.fromJson(json["menuServiceItemRenderer"]), ); Map toJson() => { "menuNavigationItemRenderer": menuNavigationItemRenderer == null ? null : menuNavigationItemRenderer.toJson(), "menuServiceItemRenderer": menuServiceItemRenderer == null ? null : menuServiceItemRenderer.toJson(), }; } class MenuItemRenderer { MenuItemRenderer({ this.text, this.icon, this.navigationEndpoint, this.trackingParams, this.serviceEndpoint, }); final TextClass text; final IconImage icon; final MenuNavigationItemRendererNavigationEndpoint navigationEndpoint; final String trackingParams; final MenuNavigationItemRendererServiceEndpoint serviceEndpoint; factory MenuItemRenderer.fromRawJson(String str) => MenuItemRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MenuItemRenderer.fromJson(Map json) => MenuItemRenderer( text: json["text"] == null ? null : TextClass.fromJson(json["text"]), icon: json["icon"] == null ? null : IconImage.fromJson(json["icon"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : MenuNavigationItemRendererNavigationEndpoint.fromJson( json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], serviceEndpoint: json["serviceEndpoint"] == null ? null : MenuNavigationItemRendererServiceEndpoint.fromJson( json["serviceEndpoint"]), ); Map toJson() => { "text": text == null ? null : text.toJson(), "icon": icon == null ? null : icon.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "serviceEndpoint": serviceEndpoint == null ? null : serviceEndpoint.toJson(), }; } class IconImage { IconImage({ this.iconType, }); final String iconType; factory IconImage.fromRawJson(String str) => IconImage.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory IconImage.fromJson(Map json) => IconImage( iconType: json["iconType"] == null ? null : json["iconType"], ); Map toJson() => { "iconType": iconType == null ? null : iconType, }; } class MenuNavigationItemRendererNavigationEndpoint { MenuNavigationItemRendererNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.modalEndpoint, this.urlEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final PurpleModalEndpoint modalEndpoint; final PurpleUrlEndpoint urlEndpoint; factory MenuNavigationItemRendererNavigationEndpoint.fromRawJson( String str) => MenuNavigationItemRendererNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MenuNavigationItemRendererNavigationEndpoint.fromJson( Map json) => MenuNavigationItemRendererNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), modalEndpoint: json["modalEndpoint"] == null ? null : PurpleModalEndpoint.fromJson(json["modalEndpoint"]), urlEndpoint: json["urlEndpoint"] == null ? null : PurpleUrlEndpoint.fromJson(json["urlEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "modalEndpoint": modalEndpoint == null ? null : modalEndpoint.toJson(), "urlEndpoint": urlEndpoint == null ? null : urlEndpoint.toJson(), }; } class PurpleModalEndpoint { PurpleModalEndpoint({ this.modal, }); final PurpleModal modal; factory PurpleModalEndpoint.fromRawJson(String str) => PurpleModalEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleModalEndpoint.fromJson(Map json) => PurpleModalEndpoint( modal: json["modal"] == null ? null : PurpleModal.fromJson(json["modal"]), ); Map toJson() => { "modal": modal == null ? null : modal.toJson(), }; } class PurpleModal { PurpleModal({ this.modalWithTitleAndButtonRenderer, }); final PurpleModalWithTitleAndButtonRenderer modalWithTitleAndButtonRenderer; factory PurpleModal.fromRawJson(String str) => PurpleModal.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleModal.fromJson(Map json) => PurpleModal( modalWithTitleAndButtonRenderer: json["modalWithTitleAndButtonRenderer"] == null ? null : PurpleModalWithTitleAndButtonRenderer.fromJson( json["modalWithTitleAndButtonRenderer"]), ); Map toJson() => { "modalWithTitleAndButtonRenderer": modalWithTitleAndButtonRenderer == null ? null : modalWithTitleAndButtonRenderer.toJson(), }; } class PurpleModalWithTitleAndButtonRenderer { PurpleModalWithTitleAndButtonRenderer({ this.title, this.content, this.button, }); final DateText title; final TextClass content; final PurpleButton button; factory PurpleModalWithTitleAndButtonRenderer.fromRawJson(String str) => PurpleModalWithTitleAndButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleModalWithTitleAndButtonRenderer.fromJson( Map json) => PurpleModalWithTitleAndButtonRenderer( title: json["title"] == null ? null : DateText.fromJson(json["title"]), content: json["content"] == null ? null : TextClass.fromJson(json["content"]), button: json["button"] == null ? null : PurpleButton.fromJson(json["button"]), ); Map toJson() => { "title": title == null ? null : title.toJson(), "content": content == null ? null : content.toJson(), "button": button == null ? null : button.toJson(), }; } class PurpleButton { PurpleButton({ this.buttonRenderer, }); final PurpleButtonRenderer buttonRenderer; factory PurpleButton.fromRawJson(String str) => PurpleButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleButton.fromJson(Map json) => PurpleButton( buttonRenderer: json["buttonRenderer"] == null ? null : PurpleButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class PurpleButtonRenderer { PurpleButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.navigationEndpoint, this.trackingParams, }); final String style; final String size; final bool isDisabled; final DateText text; final PurpleNavigationEndpoint navigationEndpoint; final String trackingParams; factory PurpleButtonRenderer.fromRawJson(String str) => PurpleButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleButtonRenderer.fromJson(Map json) => PurpleButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : DateText.fromJson(json["text"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : PurpleNavigationEndpoint.fromJson(json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class PurpleNavigationEndpoint { PurpleNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.signInEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final AdsEngagementPanelContentRenderer signInEndpoint; factory PurpleNavigationEndpoint.fromRawJson(String str) => PurpleNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleNavigationEndpoint.fromJson(Map json) => PurpleNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), signInEndpoint: json["signInEndpoint"] == null ? null : AdsEngagementPanelContentRenderer.fromJson( json["signInEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "signInEndpoint": signInEndpoint == null ? null : signInEndpoint.toJson(), }; } class AdsEngagementPanelContentRenderer { AdsEngagementPanelContentRenderer({ this.hack, }); final bool hack; factory AdsEngagementPanelContentRenderer.fromRawJson(String str) => AdsEngagementPanelContentRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AdsEngagementPanelContentRenderer.fromJson( Map json) => AdsEngagementPanelContentRenderer( hack: json["hack"] == null ? null : json["hack"], ); Map toJson() => { "hack": hack == null ? null : hack, }; } class PurpleUrlEndpoint { PurpleUrlEndpoint({ this.url, }); final String url; factory PurpleUrlEndpoint.fromRawJson(String str) => PurpleUrlEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleUrlEndpoint.fromJson(Map json) => PurpleUrlEndpoint( url: json["url"] == null ? null : json["url"], ); Map toJson() => { "url": url == null ? null : url, }; } class MenuNavigationItemRendererServiceEndpoint { MenuNavigationItemRendererServiceEndpoint({ this.clickTrackingParams, this.commandMetadata, this.signalServiceEndpoint, }); final String clickTrackingParams; final OnResponseReceivedEndpointCommandMetadata commandMetadata; final PurpleSignalServiceEndpoint signalServiceEndpoint; factory MenuNavigationItemRendererServiceEndpoint.fromRawJson(String str) => MenuNavigationItemRendererServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MenuNavigationItemRendererServiceEndpoint.fromJson( Map json) => MenuNavigationItemRendererServiceEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnResponseReceivedEndpointCommandMetadata.fromJson( json["commandMetadata"]), signalServiceEndpoint: json["signalServiceEndpoint"] == null ? null : PurpleSignalServiceEndpoint.fromJson( json["signalServiceEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "signalServiceEndpoint": signalServiceEndpoint == null ? null : signalServiceEndpoint.toJson(), }; } class OnResponseReceivedEndpointCommandMetadata { OnResponseReceivedEndpointCommandMetadata({ this.webCommandMetadata, }); final FluffyWebCommandMetadata webCommandMetadata; factory OnResponseReceivedEndpointCommandMetadata.fromRawJson(String str) => OnResponseReceivedEndpointCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OnResponseReceivedEndpointCommandMetadata.fromJson( Map json) => OnResponseReceivedEndpointCommandMetadata( webCommandMetadata: json["webCommandMetadata"] == null ? null : FluffyWebCommandMetadata.fromJson(json["webCommandMetadata"]), ); Map toJson() => { "webCommandMetadata": webCommandMetadata == null ? null : webCommandMetadata.toJson(), }; } class FluffyWebCommandMetadata { FluffyWebCommandMetadata({ this.url, this.sendPost, }); final Url url; final bool sendPost; factory FluffyWebCommandMetadata.fromRawJson(String str) => FluffyWebCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyWebCommandMetadata.fromJson(Map json) => FluffyWebCommandMetadata( url: json["url"] == null ? null : urlValues.map[json["url"]], sendPost: json["sendPost"] == null ? null : json["sendPost"], ); Map toJson() => { "url": url == null ? null : urlValues.reverse[url], "sendPost": sendPost == null ? null : sendPost, }; } enum Url { SERVICE_AJAX } final urlValues = EnumValues({"/service_ajax": Url.SERVICE_AJAX}); class PurpleSignalServiceEndpoint { PurpleSignalServiceEndpoint({ this.signal, this.actions, }); final Signal signal; final List actions; factory PurpleSignalServiceEndpoint.fromRawJson(String str) => PurpleSignalServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleSignalServiceEndpoint.fromJson(Map json) => PurpleSignalServiceEndpoint( signal: json["signal"] == null ? null : signalValues.map[json["signal"]], actions: json["actions"] == null ? null : List.from( json["actions"].map((x) => PurpleAction.fromJson(x))), ); Map toJson() => { "signal": signal == null ? null : signalValues.reverse[signal], "actions": actions == null ? null : List.from(actions.map((x) => x.toJson())), }; } class PurpleAction { PurpleAction({ this.clickTrackingParams, this.changeEngagementPanelVisibilityAction, this.addToPlaylistCommand, this.openPopupAction, }); final String clickTrackingParams; final ChangeEngagementPanelVisibilityAction changeEngagementPanelVisibilityAction; final AddToPlaylistCommand addToPlaylistCommand; final PurpleOpenPopupAction openPopupAction; factory PurpleAction.fromRawJson(String str) => PurpleAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleAction.fromJson(Map json) => PurpleAction( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], changeEngagementPanelVisibilityAction: json["changeEngagementPanelVisibilityAction"] == null ? null : ChangeEngagementPanelVisibilityAction.fromJson( json["changeEngagementPanelVisibilityAction"]), addToPlaylistCommand: json["addToPlaylistCommand"] == null ? null : AddToPlaylistCommand.fromJson(json["addToPlaylistCommand"]), openPopupAction: json["openPopupAction"] == null ? null : PurpleOpenPopupAction.fromJson(json["openPopupAction"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "changeEngagementPanelVisibilityAction": changeEngagementPanelVisibilityAction == null ? null : changeEngagementPanelVisibilityAction.toJson(), "addToPlaylistCommand": addToPlaylistCommand == null ? null : addToPlaylistCommand.toJson(), "openPopupAction": openPopupAction == null ? null : openPopupAction.toJson(), }; } class AddToPlaylistCommand { AddToPlaylistCommand({ this.openMiniplayer, this.openListPanel, this.videoId, this.listType, this.onCreateListCommand, this.videoIds, }); final bool openMiniplayer; final bool openListPanel; final String videoId; final ListType listType; final OnCreateListCommand onCreateListCommand; final List videoIds; factory AddToPlaylistCommand.fromRawJson(String str) => AddToPlaylistCommand.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory AddToPlaylistCommand.fromJson(Map json) => AddToPlaylistCommand( openMiniplayer: json["openMiniplayer"] == null ? null : json["openMiniplayer"], openListPanel: json["openListPanel"] == null ? null : json["openListPanel"], videoId: json["videoId"] == null ? null : json["videoId"], listType: json["listType"] == null ? null : listTypeValues.map[json["listType"]], onCreateListCommand: json["onCreateListCommand"] == null ? null : OnCreateListCommand.fromJson(json["onCreateListCommand"]), videoIds: json["videoIds"] == null ? null : List.from(json["videoIds"].map((x) => x)), ); Map toJson() => { "openMiniplayer": openMiniplayer == null ? null : openMiniplayer, "openListPanel": openListPanel == null ? null : openListPanel, "videoId": videoId == null ? null : videoId, "listType": listType == null ? null : listTypeValues.reverse[listType], "onCreateListCommand": onCreateListCommand == null ? null : onCreateListCommand.toJson(), "videoIds": videoIds == null ? null : List.from(videoIds.map((x) => x)), }; } enum ListType { PLAYLIST_EDIT_LIST_TYPE_QUEUE } final listTypeValues = EnumValues( {"PLAYLIST_EDIT_LIST_TYPE_QUEUE": ListType.PLAYLIST_EDIT_LIST_TYPE_QUEUE}); class OnCreateListCommand { OnCreateListCommand({ this.clickTrackingParams, this.commandMetadata, this.createPlaylistServiceEndpoint, }); final String clickTrackingParams; final OnCreateListCommandCommandMetadata commandMetadata; final CreatePlaylistServiceEndpoint createPlaylistServiceEndpoint; factory OnCreateListCommand.fromRawJson(String str) => OnCreateListCommand.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OnCreateListCommand.fromJson(Map json) => OnCreateListCommand( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnCreateListCommandCommandMetadata.fromJson( json["commandMetadata"]), createPlaylistServiceEndpoint: json["createPlaylistServiceEndpoint"] == null ? null : CreatePlaylistServiceEndpoint.fromJson( json["createPlaylistServiceEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "createPlaylistServiceEndpoint": createPlaylistServiceEndpoint == null ? null : createPlaylistServiceEndpoint.toJson(), }; } class OnCreateListCommandCommandMetadata { OnCreateListCommandCommandMetadata({ this.webCommandMetadata, }); final TentacledWebCommandMetadata webCommandMetadata; factory OnCreateListCommandCommandMetadata.fromRawJson(String str) => OnCreateListCommandCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OnCreateListCommandCommandMetadata.fromJson( Map json) => OnCreateListCommandCommandMetadata( webCommandMetadata: json["webCommandMetadata"] == null ? null : TentacledWebCommandMetadata.fromJson(json["webCommandMetadata"]), ); Map toJson() => { "webCommandMetadata": webCommandMetadata == null ? null : webCommandMetadata.toJson(), }; } class TentacledWebCommandMetadata { TentacledWebCommandMetadata({ this.url, this.sendPost, this.apiUrl, }); final Url url; final bool sendPost; final ApiUrl apiUrl; factory TentacledWebCommandMetadata.fromRawJson(String str) => TentacledWebCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledWebCommandMetadata.fromJson(Map json) => TentacledWebCommandMetadata( url: json["url"] == null ? null : urlValues.map[json["url"]], sendPost: json["sendPost"] == null ? null : json["sendPost"], apiUrl: json["apiUrl"] == null ? null : apiUrlValues.map[json["apiUrl"]], ); Map toJson() => { "url": url == null ? null : urlValues.reverse[url], "sendPost": sendPost == null ? null : sendPost, "apiUrl": apiUrl == null ? null : apiUrlValues.reverse[apiUrl], }; } enum ApiUrl { YOUTUBEI_V1_SHARE_GET_SHARE_PANEL, YOUTUBEI_V1_PLAYLIST_CREATE, YOUTUBEI_V1_BROWSE_EDIT_PLAYLIST, YOUTUBEI_V1_GET_TRANSCRIPT, YOUTUBEI_V1_ACCOUNT_ACCOUNT_MENU } final apiUrlValues = EnumValues({ "/youtubei/v1/account/account_menu": ApiUrl.YOUTUBEI_V1_ACCOUNT_ACCOUNT_MENU, "/youtubei/v1/browse/edit_playlist": ApiUrl.YOUTUBEI_V1_BROWSE_EDIT_PLAYLIST, "/youtubei/v1/get_transcript": ApiUrl.YOUTUBEI_V1_GET_TRANSCRIPT, "/youtubei/v1/playlist/create": ApiUrl.YOUTUBEI_V1_PLAYLIST_CREATE, "/youtubei/v1/share/get_share_panel": ApiUrl.YOUTUBEI_V1_SHARE_GET_SHARE_PANEL }); class CreatePlaylistServiceEndpoint { CreatePlaylistServiceEndpoint({ this.videoIds, this.params, }); final List videoIds; final Params params; factory CreatePlaylistServiceEndpoint.fromRawJson(String str) => CreatePlaylistServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CreatePlaylistServiceEndpoint.fromJson(Map json) => CreatePlaylistServiceEndpoint( videoIds: json["videoIds"] == null ? null : List.from(json["videoIds"].map((x) => x)), params: json["params"] == null ? null : paramsValues.map[json["params"]], ); Map toJson() => { "videoIds": videoIds == null ? null : List.from(videoIds.map((x) => x)), "params": params == null ? null : paramsValues.reverse[params], }; } enum Params { CAQ_3_D } final paramsValues = EnumValues({"CAQ%3D": Params.CAQ_3_D}); class ChangeEngagementPanelVisibilityAction { ChangeEngagementPanelVisibilityAction({ this.targetId, this.visibility, }); final String targetId; final String visibility; factory ChangeEngagementPanelVisibilityAction.fromRawJson(String str) => ChangeEngagementPanelVisibilityAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ChangeEngagementPanelVisibilityAction.fromJson( Map json) => ChangeEngagementPanelVisibilityAction( targetId: json["targetId"] == null ? null : json["targetId"], visibility: json["visibility"] == null ? null : json["visibility"], ); Map toJson() => { "targetId": targetId == null ? null : targetId, "visibility": visibility == null ? null : visibility, }; } class PurpleOpenPopupAction { PurpleOpenPopupAction({ this.popup, this.popupType, }); final PurplePopup popup; final PopupType popupType; factory PurpleOpenPopupAction.fromRawJson(String str) => PurpleOpenPopupAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleOpenPopupAction.fromJson(Map json) => PurpleOpenPopupAction( popup: json["popup"] == null ? null : PurplePopup.fromJson(json["popup"]), popupType: json["popupType"] == null ? null : popupTypeValues.map[json["popupType"]], ); Map toJson() => { "popup": popup == null ? null : popup.toJson(), "popupType": popupType == null ? null : popupTypeValues.reverse[popupType], }; } class PurplePopup { PurplePopup({ this.notificationActionRenderer, }); final NotificationActionRenderer notificationActionRenderer; factory PurplePopup.fromRawJson(String str) => PurplePopup.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurplePopup.fromJson(Map json) => PurplePopup( notificationActionRenderer: json["notificationActionRenderer"] == null ? null : NotificationActionRenderer.fromJson( json["notificationActionRenderer"]), ); Map toJson() => { "notificationActionRenderer": notificationActionRenderer == null ? null : notificationActionRenderer.toJson(), }; } class NotificationActionRenderer { NotificationActionRenderer({ this.responseText, this.trackingParams, }); final DateText responseText; final String trackingParams; factory NotificationActionRenderer.fromRawJson(String str) => NotificationActionRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory NotificationActionRenderer.fromJson(Map json) => NotificationActionRenderer( responseText: json["responseText"] == null ? null : DateText.fromJson(json["responseText"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "responseText": responseText == null ? null : responseText.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } enum PopupType { TOAST } final popupTypeValues = EnumValues({"TOAST": PopupType.TOAST}); enum Signal { CLIENT_SIGNAL } final signalValues = EnumValues({"CLIENT_SIGNAL": Signal.CLIENT_SIGNAL}); class TopLevelButton { TopLevelButton({ this.toggleButtonRenderer, this.buttonRenderer, }); final ToggleButtonRenderer toggleButtonRenderer; final TopLevelButtonButtonRenderer buttonRenderer; factory TopLevelButton.fromRawJson(String str) => TopLevelButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TopLevelButton.fromJson(Map json) => TopLevelButton( toggleButtonRenderer: json["toggleButtonRenderer"] == null ? null : ToggleButtonRenderer.fromJson(json["toggleButtonRenderer"]), buttonRenderer: json["buttonRenderer"] == null ? null : TopLevelButtonButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "toggleButtonRenderer": toggleButtonRenderer == null ? null : toggleButtonRenderer.toJson(), "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class TopLevelButtonButtonRenderer { TopLevelButtonButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.serviceEndpoint, this.icon, this.accessibility, this.tooltip, this.trackingParams, this.navigationEndpoint, this.accessibilityData, }); final String style; final String size; final bool isDisabled; final TextClass text; final ButtonRendererServiceEndpoint serviceEndpoint; final IconImage icon; final Accessibility accessibility; final String tooltip; final String trackingParams; final DefaultNavigationEndpointClass navigationEndpoint; final AccessibilityData accessibilityData; factory TopLevelButtonButtonRenderer.fromRawJson(String str) => TopLevelButtonButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TopLevelButtonButtonRenderer.fromJson(Map json) => TopLevelButtonButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : TextClass.fromJson(json["text"]), serviceEndpoint: json["serviceEndpoint"] == null ? null : ButtonRendererServiceEndpoint.fromJson(json["serviceEndpoint"]), icon: json["icon"] == null ? null : IconImage.fromJson(json["icon"]), accessibility: json["accessibility"] == null ? null : Accessibility.fromJson(json["accessibility"]), tooltip: json["tooltip"] == null ? null : json["tooltip"], trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], navigationEndpoint: json["navigationEndpoint"] == null ? null : DefaultNavigationEndpointClass.fromJson( json["navigationEndpoint"]), accessibilityData: json["accessibilityData"] == null ? null : AccessibilityData.fromJson(json["accessibilityData"]), ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "serviceEndpoint": serviceEndpoint == null ? null : serviceEndpoint.toJson(), "icon": icon == null ? null : icon.toJson(), "accessibility": accessibility == null ? null : accessibility.toJson(), "tooltip": tooltip == null ? null : tooltip, "trackingParams": trackingParams == null ? null : trackingParams, "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "accessibilityData": accessibilityData == null ? null : accessibilityData.toJson(), }; } class DefaultNavigationEndpointClass { DefaultNavigationEndpointClass({ this.clickTrackingParams, this.commandMetadata, this.modalEndpoint, }); final String clickTrackingParams; final DefaultNavigationEndpointCommandMetadata commandMetadata; final DefaultNavigationEndpointModalEndpoint modalEndpoint; factory DefaultNavigationEndpointClass.fromRawJson(String str) => DefaultNavigationEndpointClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory DefaultNavigationEndpointClass.fromJson(Map json) => DefaultNavigationEndpointClass( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : DefaultNavigationEndpointCommandMetadata.fromJson( json["commandMetadata"]), modalEndpoint: json["modalEndpoint"] == null ? null : DefaultNavigationEndpointModalEndpoint.fromJson( json["modalEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "modalEndpoint": modalEndpoint == null ? null : modalEndpoint.toJson(), }; } class DefaultNavigationEndpointCommandMetadata { DefaultNavigationEndpointCommandMetadata({ this.webCommandMetadata, }); final StickyWebCommandMetadata webCommandMetadata; factory DefaultNavigationEndpointCommandMetadata.fromRawJson(String str) => DefaultNavigationEndpointCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory DefaultNavigationEndpointCommandMetadata.fromJson( Map json) => DefaultNavigationEndpointCommandMetadata( webCommandMetadata: json["webCommandMetadata"] == null ? null : StickyWebCommandMetadata.fromJson(json["webCommandMetadata"]), ); Map toJson() => { "webCommandMetadata": webCommandMetadata == null ? null : webCommandMetadata.toJson(), }; } class StickyWebCommandMetadata { StickyWebCommandMetadata({ this.ignoreNavigation, }); final bool ignoreNavigation; factory StickyWebCommandMetadata.fromRawJson(String str) => StickyWebCommandMetadata.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory StickyWebCommandMetadata.fromJson(Map json) => StickyWebCommandMetadata( ignoreNavigation: json["ignoreNavigation"] == null ? null : json["ignoreNavigation"], ); Map toJson() => { "ignoreNavigation": ignoreNavigation == null ? null : ignoreNavigation, }; } class DefaultNavigationEndpointModalEndpoint { DefaultNavigationEndpointModalEndpoint({ this.modal, }); final FluffyModal modal; factory DefaultNavigationEndpointModalEndpoint.fromRawJson(String str) => DefaultNavigationEndpointModalEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory DefaultNavigationEndpointModalEndpoint.fromJson( Map json) => DefaultNavigationEndpointModalEndpoint( modal: json["modal"] == null ? null : FluffyModal.fromJson(json["modal"]), ); Map toJson() => { "modal": modal == null ? null : modal.toJson(), }; } class FluffyModal { FluffyModal({ this.modalWithTitleAndButtonRenderer, }); final FluffyModalWithTitleAndButtonRenderer modalWithTitleAndButtonRenderer; factory FluffyModal.fromRawJson(String str) => FluffyModal.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyModal.fromJson(Map json) => FluffyModal( modalWithTitleAndButtonRenderer: json["modalWithTitleAndButtonRenderer"] == null ? null : FluffyModalWithTitleAndButtonRenderer.fromJson( json["modalWithTitleAndButtonRenderer"]), ); Map toJson() => { "modalWithTitleAndButtonRenderer": modalWithTitleAndButtonRenderer == null ? null : modalWithTitleAndButtonRenderer.toJson(), }; } class FluffyModalWithTitleAndButtonRenderer { FluffyModalWithTitleAndButtonRenderer({ this.title, this.content, this.button, }); final DateText title; final DateText content; final FluffyButton button; factory FluffyModalWithTitleAndButtonRenderer.fromRawJson(String str) => FluffyModalWithTitleAndButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyModalWithTitleAndButtonRenderer.fromJson( Map json) => FluffyModalWithTitleAndButtonRenderer( title: json["title"] == null ? null : DateText.fromJson(json["title"]), content: json["content"] == null ? null : DateText.fromJson(json["content"]), button: json["button"] == null ? null : FluffyButton.fromJson(json["button"]), ); Map toJson() => { "title": title == null ? null : title.toJson(), "content": content == null ? null : content.toJson(), "button": button == null ? null : button.toJson(), }; } class FluffyButton { FluffyButton({ this.buttonRenderer, }); final FluffyButtonRenderer buttonRenderer; factory FluffyButton.fromRawJson(String str) => FluffyButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyButton.fromJson(Map json) => FluffyButton( buttonRenderer: json["buttonRenderer"] == null ? null : FluffyButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class FluffyButtonRenderer { FluffyButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.navigationEndpoint, this.trackingParams, }); final String style; final String size; final bool isDisabled; final DateText text; final FluffyNavigationEndpoint navigationEndpoint; final String trackingParams; factory FluffyButtonRenderer.fromRawJson(String str) => FluffyButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyButtonRenderer.fromJson(Map json) => FluffyButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : DateText.fromJson(json["text"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : FluffyNavigationEndpoint.fromJson(json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class FluffyNavigationEndpoint { FluffyNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.signInEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final PurpleSignInEndpoint signInEndpoint; factory FluffyNavigationEndpoint.fromRawJson(String str) => FluffyNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyNavigationEndpoint.fromJson(Map json) => FluffyNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), signInEndpoint: json["signInEndpoint"] == null ? null : PurpleSignInEndpoint.fromJson(json["signInEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "signInEndpoint": signInEndpoint == null ? null : signInEndpoint.toJson(), }; } class PurpleSignInEndpoint { PurpleSignInEndpoint({ this.nextEndpoint, this.idamTag, }); final Endpoint nextEndpoint; final String idamTag; factory PurpleSignInEndpoint.fromRawJson(String str) => PurpleSignInEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleSignInEndpoint.fromJson(Map json) => PurpleSignInEndpoint( nextEndpoint: json["nextEndpoint"] == null ? null : Endpoint.fromJson(json["nextEndpoint"]), idamTag: json["idamTag"] == null ? null : json["idamTag"], ); Map toJson() => { "nextEndpoint": nextEndpoint == null ? null : nextEndpoint.toJson(), "idamTag": idamTag == null ? null : idamTag, }; } class Endpoint { Endpoint({ this.clickTrackingParams, this.commandMetadata, this.watchEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final CurrentVideoEndpointWatchEndpoint watchEndpoint; factory Endpoint.fromRawJson(String str) => Endpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Endpoint.fromJson(Map json) => Endpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), watchEndpoint: json["watchEndpoint"] == null ? null : CurrentVideoEndpointWatchEndpoint.fromJson(json["watchEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "watchEndpoint": watchEndpoint == null ? null : watchEndpoint.toJson(), }; } class CurrentVideoEndpointWatchEndpoint { CurrentVideoEndpointWatchEndpoint({ this.videoId, }); final String videoId; factory CurrentVideoEndpointWatchEndpoint.fromRawJson(String str) => CurrentVideoEndpointWatchEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CurrentVideoEndpointWatchEndpoint.fromJson( Map json) => CurrentVideoEndpointWatchEndpoint( videoId: json["videoId"] == null ? null : json["videoId"], ); Map toJson() => { "videoId": videoId == null ? null : videoId, }; } class ButtonRendererServiceEndpoint { ButtonRendererServiceEndpoint({ this.clickTrackingParams, this.commandMetadata, this.shareEntityServiceEndpoint, }); final String clickTrackingParams; final OnCreateListCommandCommandMetadata commandMetadata; final ShareEntityServiceEndpoint shareEntityServiceEndpoint; factory ButtonRendererServiceEndpoint.fromRawJson(String str) => ButtonRendererServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ButtonRendererServiceEndpoint.fromJson(Map json) => ButtonRendererServiceEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnCreateListCommandCommandMetadata.fromJson( json["commandMetadata"]), shareEntityServiceEndpoint: json["shareEntityServiceEndpoint"] == null ? null : ShareEntityServiceEndpoint.fromJson( json["shareEntityServiceEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "shareEntityServiceEndpoint": shareEntityServiceEndpoint == null ? null : shareEntityServiceEndpoint.toJson(), }; } class ShareEntityServiceEndpoint { ShareEntityServiceEndpoint({ this.serializedShareEntity, this.commands, }); final String serializedShareEntity; final List commands; factory ShareEntityServiceEndpoint.fromRawJson(String str) => ShareEntityServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ShareEntityServiceEndpoint.fromJson(Map json) => ShareEntityServiceEndpoint( serializedShareEntity: json["serializedShareEntity"] == null ? null : json["serializedShareEntity"], commands: json["commands"] == null ? null : List.from( json["commands"].map((x) => CommandElement.fromJson(x))), ); Map toJson() => { "serializedShareEntity": serializedShareEntity == null ? null : serializedShareEntity, "commands": commands == null ? null : List.from(commands.map((x) => x.toJson())), }; } class CommandElement { CommandElement({ this.clickTrackingParams, this.openPopupAction, }); final String clickTrackingParams; final CommandOpenPopupAction openPopupAction; factory CommandElement.fromRawJson(String str) => CommandElement.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CommandElement.fromJson(Map json) => CommandElement( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], openPopupAction: json["openPopupAction"] == null ? null : CommandOpenPopupAction.fromJson(json["openPopupAction"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "openPopupAction": openPopupAction == null ? null : openPopupAction.toJson(), }; } class CommandOpenPopupAction { CommandOpenPopupAction({ this.popup, this.popupType, this.beReused, }); final FluffyPopup popup; final String popupType; final bool beReused; factory CommandOpenPopupAction.fromRawJson(String str) => CommandOpenPopupAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CommandOpenPopupAction.fromJson(Map json) => CommandOpenPopupAction( popup: json["popup"] == null ? null : FluffyPopup.fromJson(json["popup"]), popupType: json["popupType"] == null ? null : json["popupType"], beReused: json["beReused"] == null ? null : json["beReused"], ); Map toJson() => { "popup": popup == null ? null : popup.toJson(), "popupType": popupType == null ? null : popupType, "beReused": beReused == null ? null : beReused, }; } class FluffyPopup { FluffyPopup({ this.unifiedSharePanelRenderer, }); final UnifiedSharePanelRenderer unifiedSharePanelRenderer; factory FluffyPopup.fromRawJson(String str) => FluffyPopup.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyPopup.fromJson(Map json) => FluffyPopup( unifiedSharePanelRenderer: json["unifiedSharePanelRenderer"] == null ? null : UnifiedSharePanelRenderer.fromJson( json["unifiedSharePanelRenderer"]), ); Map toJson() => { "unifiedSharePanelRenderer": unifiedSharePanelRenderer == null ? null : unifiedSharePanelRenderer.toJson(), }; } class UnifiedSharePanelRenderer { UnifiedSharePanelRenderer({ this.trackingParams, this.showLoadingSpinner, }); final String trackingParams; final bool showLoadingSpinner; factory UnifiedSharePanelRenderer.fromRawJson(String str) => UnifiedSharePanelRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory UnifiedSharePanelRenderer.fromJson(Map json) => UnifiedSharePanelRenderer( trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], showLoadingSpinner: json["showLoadingSpinner"] == null ? null : json["showLoadingSpinner"], ); Map toJson() => { "trackingParams": trackingParams == null ? null : trackingParams, "showLoadingSpinner": showLoadingSpinner == null ? null : showLoadingSpinner, }; } class ToggleButtonRenderer { ToggleButtonRenderer({ this.style, this.isToggled, this.isDisabled, this.defaultIcon, this.defaultText, this.toggledText, this.accessibility, this.trackingParams, this.defaultTooltip, this.toggledTooltip, this.toggledStyle, this.defaultNavigationEndpoint, this.accessibilityData, this.toggleButtonSupportedData, this.targetId, }); final StyleClass style; final bool isToggled; final bool isDisabled; final IconImage defaultIcon; final LengthText defaultText; final LengthText toggledText; final Accessibility accessibility; final String trackingParams; final String defaultTooltip; final String toggledTooltip; final StyleClass toggledStyle; final DefaultNavigationEndpointClass defaultNavigationEndpoint; final AccessibilityData accessibilityData; final ToggleButtonSupportedData toggleButtonSupportedData; final String targetId; factory ToggleButtonRenderer.fromRawJson(String str) => ToggleButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ToggleButtonRenderer.fromJson(Map json) => ToggleButtonRenderer( style: json["style"] == null ? null : StyleClass.fromJson(json["style"]), isToggled: json["isToggled"] == null ? null : json["isToggled"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], defaultIcon: json["defaultIcon"] == null ? null : IconImage.fromJson(json["defaultIcon"]), defaultText: json["defaultText"] == null ? null : LengthText.fromJson(json["defaultText"]), toggledText: json["toggledText"] == null ? null : LengthText.fromJson(json["toggledText"]), accessibility: json["accessibility"] == null ? null : Accessibility.fromJson(json["accessibility"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], defaultTooltip: json["defaultTooltip"] == null ? null : json["defaultTooltip"], toggledTooltip: json["toggledTooltip"] == null ? null : json["toggledTooltip"], toggledStyle: json["toggledStyle"] == null ? null : StyleClass.fromJson(json["toggledStyle"]), defaultNavigationEndpoint: json["defaultNavigationEndpoint"] == null ? null : DefaultNavigationEndpointClass.fromJson( json["defaultNavigationEndpoint"]), accessibilityData: json["accessibilityData"] == null ? null : AccessibilityData.fromJson(json["accessibilityData"]), toggleButtonSupportedData: json["toggleButtonSupportedData"] == null ? null : ToggleButtonSupportedData.fromJson( json["toggleButtonSupportedData"]), targetId: json["targetId"] == null ? null : json["targetId"], ); Map toJson() => { "style": style == null ? null : style.toJson(), "isToggled": isToggled == null ? null : isToggled, "isDisabled": isDisabled == null ? null : isDisabled, "defaultIcon": defaultIcon == null ? null : defaultIcon.toJson(), "defaultText": defaultText == null ? null : defaultText.toJson(), "toggledText": toggledText == null ? null : toggledText.toJson(), "accessibility": accessibility == null ? null : accessibility.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "defaultTooltip": defaultTooltip == null ? null : defaultTooltip, "toggledTooltip": toggledTooltip == null ? null : toggledTooltip, "toggledStyle": toggledStyle == null ? null : toggledStyle.toJson(), "defaultNavigationEndpoint": defaultNavigationEndpoint == null ? null : defaultNavigationEndpoint.toJson(), "accessibilityData": accessibilityData == null ? null : accessibilityData.toJson(), "toggleButtonSupportedData": toggleButtonSupportedData == null ? null : toggleButtonSupportedData.toJson(), "targetId": targetId == null ? null : targetId, }; } class LengthText { LengthText({ this.accessibility, this.simpleText, }); final AccessibilityData accessibility; final String simpleText; factory LengthText.fromRawJson(String str) => LengthText.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory LengthText.fromJson(Map json) => LengthText( accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), simpleText: json["simpleText"] == null ? null : json["simpleText"], ); Map toJson() => { "accessibility": accessibility == null ? null : accessibility.toJson(), "simpleText": simpleText == null ? null : simpleText, }; } class StyleClass { StyleClass({ this.styleType, }); final String styleType; factory StyleClass.fromRawJson(String str) => StyleClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory StyleClass.fromJson(Map json) => StyleClass( styleType: json["styleType"] == null ? null : json["styleType"], ); Map toJson() => { "styleType": styleType == null ? null : styleType, }; } class ToggleButtonSupportedData { ToggleButtonSupportedData({ this.toggleButtonIdData, }); final ToggleButtonIdData toggleButtonIdData; factory ToggleButtonSupportedData.fromRawJson(String str) => ToggleButtonSupportedData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ToggleButtonSupportedData.fromJson(Map json) => ToggleButtonSupportedData( toggleButtonIdData: json["toggleButtonIdData"] == null ? null : ToggleButtonIdData.fromJson(json["toggleButtonIdData"]), ); Map toJson() => { "toggleButtonIdData": toggleButtonIdData == null ? null : toggleButtonIdData.toJson(), }; } class ToggleButtonIdData { ToggleButtonIdData({ this.id, }); final String id; factory ToggleButtonIdData.fromRawJson(String str) => ToggleButtonIdData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ToggleButtonIdData.fromJson(Map json) => ToggleButtonIdData( id: json["id"] == null ? null : json["id"], ); Map toJson() => { "id": id == null ? null : id, }; } class ViewCount { ViewCount({ this.videoViewCountRenderer, }); final VideoViewCountRenderer videoViewCountRenderer; factory ViewCount.fromRawJson(String str) => ViewCount.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ViewCount.fromJson(Map json) => ViewCount( videoViewCountRenderer: json["videoViewCountRenderer"] == null ? null : VideoViewCountRenderer.fromJson(json["videoViewCountRenderer"]), ); Map toJson() => { "videoViewCountRenderer": videoViewCountRenderer == null ? null : videoViewCountRenderer.toJson(), }; } class VideoViewCountRenderer { VideoViewCountRenderer({ this.viewCount, this.shortViewCount, }); final DateText viewCount; final DateText shortViewCount; factory VideoViewCountRenderer.fromRawJson(String str) => VideoViewCountRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoViewCountRenderer.fromJson(Map json) => VideoViewCountRenderer( viewCount: json["viewCount"] == null ? null : DateText.fromJson(json["viewCount"]), shortViewCount: json["shortViewCount"] == null ? null : DateText.fromJson(json["shortViewCount"]), ); Map toJson() => { "viewCount": viewCount == null ? null : viewCount.toJson(), "shortViewCount": shortViewCount == null ? null : shortViewCount.toJson(), }; } class VideoSecondaryInfoRenderer { VideoSecondaryInfoRenderer({ this.owner, this.description, this.subscribeButton, this.metadataRowContainer, this.showMoreText, this.showLessText, this.trackingParams, this.defaultExpanded, this.descriptionCollapsedLines, }); final Owner owner; final TextClass description; final SubscribeButton subscribeButton; final MetadataRowContainer metadataRowContainer; final TextClass showMoreText; final TextClass showLessText; final String trackingParams; final bool defaultExpanded; final int descriptionCollapsedLines; factory VideoSecondaryInfoRenderer.fromRawJson(String str) => VideoSecondaryInfoRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoSecondaryInfoRenderer.fromJson(Map json) => VideoSecondaryInfoRenderer( owner: json["owner"] == null ? null : Owner.fromJson(json["owner"]), description: json["description"] == null ? null : TextClass.fromJson(json["description"]), subscribeButton: json["subscribeButton"] == null ? null : SubscribeButton.fromJson(json["subscribeButton"]), metadataRowContainer: json["metadataRowContainer"] == null ? null : MetadataRowContainer.fromJson(json["metadataRowContainer"]), showMoreText: json["showMoreText"] == null ? null : TextClass.fromJson(json["showMoreText"]), showLessText: json["showLessText"] == null ? null : TextClass.fromJson(json["showLessText"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], defaultExpanded: json["defaultExpanded"] == null ? null : json["defaultExpanded"], descriptionCollapsedLines: json["descriptionCollapsedLines"] == null ? null : json["descriptionCollapsedLines"], ); Map toJson() => { "owner": owner == null ? null : owner.toJson(), "description": description == null ? null : description.toJson(), "subscribeButton": subscribeButton == null ? null : subscribeButton.toJson(), "metadataRowContainer": metadataRowContainer == null ? null : metadataRowContainer.toJson(), "showMoreText": showMoreText == null ? null : showMoreText.toJson(), "showLessText": showLessText == null ? null : showLessText.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "defaultExpanded": defaultExpanded == null ? null : defaultExpanded, "descriptionCollapsedLines": descriptionCollapsedLines == null ? null : descriptionCollapsedLines, }; } class MetadataRowContainer { MetadataRowContainer({ this.metadataRowContainerRenderer, }); final MetadataRowContainerRenderer metadataRowContainerRenderer; factory MetadataRowContainer.fromRawJson(String str) => MetadataRowContainer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MetadataRowContainer.fromJson(Map json) => MetadataRowContainer( metadataRowContainerRenderer: json["metadataRowContainerRenderer"] == null ? null : MetadataRowContainerRenderer.fromJson( json["metadataRowContainerRenderer"]), ); Map toJson() => { "metadataRowContainerRenderer": metadataRowContainerRenderer == null ? null : metadataRowContainerRenderer.toJson(), }; } class MetadataRowContainerRenderer { MetadataRowContainerRenderer({ this.collapsedItemCount, this.trackingParams, }); final int collapsedItemCount; final String trackingParams; factory MetadataRowContainerRenderer.fromRawJson(String str) => MetadataRowContainerRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MetadataRowContainerRenderer.fromJson(Map json) => MetadataRowContainerRenderer( collapsedItemCount: json["collapsedItemCount"] == null ? null : json["collapsedItemCount"], trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "collapsedItemCount": collapsedItemCount == null ? null : collapsedItemCount, "trackingParams": trackingParams == null ? null : trackingParams, }; } class Owner { Owner({ this.videoOwnerRenderer, }); final VideoOwnerRenderer videoOwnerRenderer; factory Owner.fromRawJson(String str) => Owner.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Owner.fromJson(Map json) => Owner( videoOwnerRenderer: json["videoOwnerRenderer"] == null ? null : VideoOwnerRenderer.fromJson(json["videoOwnerRenderer"]), ); Map toJson() => { "videoOwnerRenderer": videoOwnerRenderer == null ? null : videoOwnerRenderer.toJson(), }; } class VideoOwnerRenderer { VideoOwnerRenderer({ this.thumbnail, this.title, this.subscriptionButton, this.navigationEndpoint, this.subscriberCountText, this.trackingParams, this.badges, }); final ChannelThumbnailClass thumbnail; final PurpleTitle title; final SubscriptionButton subscriptionButton; final VideoOwnerRendererNavigationEndpoint navigationEndpoint; final TextClass subscriberCountText; final String trackingParams; final List badges; factory VideoOwnerRenderer.fromRawJson(String str) => VideoOwnerRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoOwnerRenderer.fromJson(Map json) => VideoOwnerRenderer( thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), title: json["title"] == null ? null : PurpleTitle.fromJson(json["title"]), subscriptionButton: json["subscriptionButton"] == null ? null : SubscriptionButton.fromJson(json["subscriptionButton"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : VideoOwnerRendererNavigationEndpoint.fromJson( json["navigationEndpoint"]), subscriberCountText: json["subscriberCountText"] == null ? null : TextClass.fromJson(json["subscriberCountText"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], badges: json["badges"] == null ? null : List.from( json["badges"].map((x) => OwnerBadgeElement.fromJson(x))), ); Map toJson() => { "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "title": title == null ? null : title.toJson(), "subscriptionButton": subscriptionButton == null ? null : subscriptionButton.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "subscriberCountText": subscriberCountText == null ? null : subscriberCountText.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "badges": badges == null ? null : List.from(badges.map((x) => x.toJson())), }; } class OwnerBadgeElement { OwnerBadgeElement({ this.metadataBadgeRenderer, }); final OwnerBadgeMetadataBadgeRenderer metadataBadgeRenderer; factory OwnerBadgeElement.fromRawJson(String str) => OwnerBadgeElement.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OwnerBadgeElement.fromJson(Map json) => OwnerBadgeElement( metadataBadgeRenderer: json["metadataBadgeRenderer"] == null ? null : OwnerBadgeMetadataBadgeRenderer.fromJson( json["metadataBadgeRenderer"]), ); Map toJson() => { "metadataBadgeRenderer": metadataBadgeRenderer == null ? null : metadataBadgeRenderer.toJson(), }; } class OwnerBadgeMetadataBadgeRenderer { OwnerBadgeMetadataBadgeRenderer({ this.icon, this.style, this.tooltip, this.trackingParams, }); final IconImage icon; final MetadataBadgeRendererStyle style; final Tooltip tooltip; final String trackingParams; factory OwnerBadgeMetadataBadgeRenderer.fromRawJson(String str) => OwnerBadgeMetadataBadgeRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OwnerBadgeMetadataBadgeRenderer.fromJson(Map json) => OwnerBadgeMetadataBadgeRenderer( icon: json["icon"] == null ? null : IconImage.fromJson(json["icon"]), style: json["style"] == null ? null : metadataBadgeRendererStyleValues.map[json["style"]], tooltip: json["tooltip"] == null ? null : tooltipValues.map[json["tooltip"]], trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "icon": icon == null ? null : icon.toJson(), "style": style == null ? null : metadataBadgeRendererStyleValues.reverse[style], "tooltip": tooltip == null ? null : tooltipValues.reverse[tooltip], "trackingParams": trackingParams == null ? null : trackingParams, }; } enum MetadataBadgeRendererStyle { BADGE_STYLE_TYPE_VERIFIED } final metadataBadgeRendererStyleValues = EnumValues({ "BADGE_STYLE_TYPE_VERIFIED": MetadataBadgeRendererStyle.BADGE_STYLE_TYPE_VERIFIED }); enum Tooltip { VERIFIED } final tooltipValues = EnumValues({"Verified": Tooltip.VERIFIED}); class VideoOwnerRendererNavigationEndpoint { VideoOwnerRendererNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.browseEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final PurpleBrowseEndpoint browseEndpoint; factory VideoOwnerRendererNavigationEndpoint.fromRawJson(String str) => VideoOwnerRendererNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VideoOwnerRendererNavigationEndpoint.fromJson( Map json) => VideoOwnerRendererNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), browseEndpoint: json["browseEndpoint"] == null ? null : PurpleBrowseEndpoint.fromJson(json["browseEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "browseEndpoint": browseEndpoint == null ? null : browseEndpoint.toJson(), }; } class PurpleBrowseEndpoint { PurpleBrowseEndpoint({ this.browseId, this.canonicalBaseUrl, }); final String browseId; final String canonicalBaseUrl; factory PurpleBrowseEndpoint.fromRawJson(String str) => PurpleBrowseEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleBrowseEndpoint.fromJson(Map json) => PurpleBrowseEndpoint( browseId: json["browseId"] == null ? null : json["browseId"], canonicalBaseUrl: json["canonicalBaseUrl"] == null ? null : json["canonicalBaseUrl"], ); Map toJson() => { "browseId": browseId == null ? null : browseId, "canonicalBaseUrl": canonicalBaseUrl == null ? null : canonicalBaseUrl, }; } class SubscriptionButton { SubscriptionButton({ this.type, }); final String type; factory SubscriptionButton.fromRawJson(String str) => SubscriptionButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SubscriptionButton.fromJson(Map json) => SubscriptionButton( type: json["type"] == null ? null : json["type"], ); Map toJson() => { "type": type == null ? null : type, }; } class ChannelThumbnailClass { ChannelThumbnailClass({ this.thumbnails, }); final List thumbnails; factory ChannelThumbnailClass.fromRawJson(String str) => ChannelThumbnailClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ChannelThumbnailClass.fromJson(Map json) => ChannelThumbnailClass( thumbnails: json["thumbnails"] == null ? null : List.from( json["thumbnails"].map((x) => ThumbnailElement.fromJson(x))), ); Map toJson() => { "thumbnails": thumbnails == null ? null : List.from(thumbnails.map((x) => x.toJson())), }; } class ThumbnailElement { ThumbnailElement({ this.url, this.width, this.height, }); final String url; final int width; final int height; factory ThumbnailElement.fromRawJson(String str) => ThumbnailElement.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ThumbnailElement.fromJson(Map json) => ThumbnailElement( url: json["url"] == null ? null : json["url"], width: json["width"] == null ? null : json["width"], height: json["height"] == null ? null : json["height"], ); Map toJson() => { "url": url == null ? null : url, "width": width == null ? null : width, "height": height == null ? null : height, }; } class PurpleTitle { PurpleTitle({ this.runs, }); final List runs; factory PurpleTitle.fromRawJson(String str) => PurpleTitle.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleTitle.fromJson(Map json) => PurpleTitle( runs: json["runs"] == null ? null : List.from( json["runs"].map((x) => PurpleRun.fromJson(x))), ); Map toJson() => { "runs": runs == null ? null : List.from(runs.map((x) => x.toJson())), }; } class PurpleRun { PurpleRun({ this.text, this.navigationEndpoint, }); final String text; final EndpointClass navigationEndpoint; factory PurpleRun.fromRawJson(String str) => PurpleRun.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleRun.fromJson(Map json) => PurpleRun( text: json["text"] == null ? null : json["text"], navigationEndpoint: json["navigationEndpoint"] == null ? null : EndpointClass.fromJson(json["navigationEndpoint"]), ); Map toJson() => { "text": text == null ? null : text, "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), }; } class EndpointClass { EndpointClass({ this.clickTrackingParams, this.commandMetadata, this.browseEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final EndpointBrowseEndpoint browseEndpoint; factory EndpointClass.fromRawJson(String str) => EndpointClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndpointClass.fromJson(Map json) => EndpointClass( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), browseEndpoint: json["browseEndpoint"] == null ? null : EndpointBrowseEndpoint.fromJson(json["browseEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "browseEndpoint": browseEndpoint == null ? null : browseEndpoint.toJson(), }; } class EndpointBrowseEndpoint { EndpointBrowseEndpoint({ this.browseId, }); final String browseId; factory EndpointBrowseEndpoint.fromRawJson(String str) => EndpointBrowseEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndpointBrowseEndpoint.fromJson(Map json) => EndpointBrowseEndpoint( browseId: json["browseId"] == null ? null : json["browseId"], ); Map toJson() => { "browseId": browseId == null ? null : browseId, }; } class SubscribeButton { SubscribeButton({ this.buttonRenderer, }); final SubscribeButtonButtonRenderer buttonRenderer; factory SubscribeButton.fromRawJson(String str) => SubscribeButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SubscribeButton.fromJson(Map json) => SubscribeButton( buttonRenderer: json["buttonRenderer"] == null ? null : SubscribeButtonButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class SubscribeButtonButtonRenderer { SubscribeButtonButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.navigationEndpoint, this.trackingParams, this.targetId, }); final String style; final String size; final bool isDisabled; final TextClass text; final TentacledNavigationEndpoint navigationEndpoint; final String trackingParams; final String targetId; factory SubscribeButtonButtonRenderer.fromRawJson(String str) => SubscribeButtonButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SubscribeButtonButtonRenderer.fromJson(Map json) => SubscribeButtonButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : TextClass.fromJson(json["text"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : TentacledNavigationEndpoint.fromJson(json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], targetId: json["targetId"] == null ? null : json["targetId"], ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "targetId": targetId == null ? null : targetId, }; } class TentacledNavigationEndpoint { TentacledNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.modalEndpoint, }); final String clickTrackingParams; final DefaultNavigationEndpointCommandMetadata commandMetadata; final FluffyModalEndpoint modalEndpoint; factory TentacledNavigationEndpoint.fromRawJson(String str) => TentacledNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledNavigationEndpoint.fromJson(Map json) => TentacledNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : DefaultNavigationEndpointCommandMetadata.fromJson( json["commandMetadata"]), modalEndpoint: json["modalEndpoint"] == null ? null : FluffyModalEndpoint.fromJson(json["modalEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "modalEndpoint": modalEndpoint == null ? null : modalEndpoint.toJson(), }; } class FluffyModalEndpoint { FluffyModalEndpoint({ this.modal, }); final TentacledModal modal; factory FluffyModalEndpoint.fromRawJson(String str) => FluffyModalEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyModalEndpoint.fromJson(Map json) => FluffyModalEndpoint( modal: json["modal"] == null ? null : TentacledModal.fromJson(json["modal"]), ); Map toJson() => { "modal": modal == null ? null : modal.toJson(), }; } class TentacledModal { TentacledModal({ this.modalWithTitleAndButtonRenderer, }); final TentacledModalWithTitleAndButtonRenderer modalWithTitleAndButtonRenderer; factory TentacledModal.fromRawJson(String str) => TentacledModal.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledModal.fromJson(Map json) => TentacledModal( modalWithTitleAndButtonRenderer: json["modalWithTitleAndButtonRenderer"] == null ? null : TentacledModalWithTitleAndButtonRenderer.fromJson( json["modalWithTitleAndButtonRenderer"]), ); Map toJson() => { "modalWithTitleAndButtonRenderer": modalWithTitleAndButtonRenderer == null ? null : modalWithTitleAndButtonRenderer.toJson(), }; } class TentacledModalWithTitleAndButtonRenderer { TentacledModalWithTitleAndButtonRenderer({ this.title, this.content, this.button, }); final DateText title; final DateText content; final TentacledButton button; factory TentacledModalWithTitleAndButtonRenderer.fromRawJson(String str) => TentacledModalWithTitleAndButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledModalWithTitleAndButtonRenderer.fromJson( Map json) => TentacledModalWithTitleAndButtonRenderer( title: json["title"] == null ? null : DateText.fromJson(json["title"]), content: json["content"] == null ? null : DateText.fromJson(json["content"]), button: json["button"] == null ? null : TentacledButton.fromJson(json["button"]), ); Map toJson() => { "title": title == null ? null : title.toJson(), "content": content == null ? null : content.toJson(), "button": button == null ? null : button.toJson(), }; } class TentacledButton { TentacledButton({ this.buttonRenderer, }); final TentacledButtonRenderer buttonRenderer; factory TentacledButton.fromRawJson(String str) => TentacledButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledButton.fromJson(Map json) => TentacledButton( buttonRenderer: json["buttonRenderer"] == null ? null : TentacledButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class TentacledButtonRenderer { TentacledButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.navigationEndpoint, this.trackingParams, }); final String style; final String size; final bool isDisabled; final DateText text; final StickyNavigationEndpoint navigationEndpoint; final String trackingParams; factory TentacledButtonRenderer.fromRawJson(String str) => TentacledButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledButtonRenderer.fromJson(Map json) => TentacledButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : DateText.fromJson(json["text"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : StickyNavigationEndpoint.fromJson(json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class StickyNavigationEndpoint { StickyNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.signInEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final FluffySignInEndpoint signInEndpoint; factory StickyNavigationEndpoint.fromRawJson(String str) => StickyNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory StickyNavigationEndpoint.fromJson(Map json) => StickyNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), signInEndpoint: json["signInEndpoint"] == null ? null : FluffySignInEndpoint.fromJson(json["signInEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "signInEndpoint": signInEndpoint == null ? null : signInEndpoint.toJson(), }; } class FluffySignInEndpoint { FluffySignInEndpoint({ this.nextEndpoint, this.continueAction, this.idamTag, }); final Endpoint nextEndpoint; final String continueAction; final String idamTag; factory FluffySignInEndpoint.fromRawJson(String str) => FluffySignInEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffySignInEndpoint.fromJson(Map json) => FluffySignInEndpoint( nextEndpoint: json["nextEndpoint"] == null ? null : Endpoint.fromJson(json["nextEndpoint"]), continueAction: json["continueAction"] == null ? null : json["continueAction"], idamTag: json["idamTag"] == null ? null : json["idamTag"], ); Map toJson() => { "nextEndpoint": nextEndpoint == null ? null : nextEndpoint.toJson(), "continueAction": continueAction == null ? null : continueAction, "idamTag": idamTag == null ? null : idamTag, }; } class TwoColumnWatchNextResultsSecondaryResults { TwoColumnWatchNextResultsSecondaryResults({ this.secondaryResults, }); final SecondaryResultsSecondaryResults secondaryResults; factory TwoColumnWatchNextResultsSecondaryResults.fromRawJson(String str) => TwoColumnWatchNextResultsSecondaryResults.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TwoColumnWatchNextResultsSecondaryResults.fromJson( Map json) => TwoColumnWatchNextResultsSecondaryResults( secondaryResults: json["secondaryResults"] == null ? null : SecondaryResultsSecondaryResults.fromJson( json["secondaryResults"]), ); Map toJson() => { "secondaryResults": secondaryResults == null ? null : secondaryResults.toJson(), }; } class SecondaryResultsSecondaryResults { SecondaryResultsSecondaryResults({ this.results, this.continuations, this.trackingParams, }); final List results; final List continuations; final String trackingParams; factory SecondaryResultsSecondaryResults.fromRawJson(String str) => SecondaryResultsSecondaryResults.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SecondaryResultsSecondaryResults.fromJson( Map json) => SecondaryResultsSecondaryResults( results: json["results"] == null ? null : List.from( json["results"].map((x) => SecondaryResultsResult.fromJson(x))), continuations: json["continuations"] == null ? null : List.from( json["continuations"].map((x) => Continuation.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "results": results == null ? null : List.from(results.map((x) => x.toJson())), "continuations": continuations == null ? null : List.from(continuations.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, }; } class SecondaryResultsResult { SecondaryResultsResult({ this.compactAutoplayRenderer, this.compactVideoRenderer, this.compactRadioRenderer, }); final CompactAutoplayRenderer compactAutoplayRenderer; final ResultCompactVideoRenderer compactVideoRenderer; final CompactRadioRenderer compactRadioRenderer; factory SecondaryResultsResult.fromRawJson(String str) => SecondaryResultsResult.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SecondaryResultsResult.fromJson(Map json) => SecondaryResultsResult( compactAutoplayRenderer: json["compactAutoplayRenderer"] == null ? null : CompactAutoplayRenderer.fromJson(json["compactAutoplayRenderer"]), compactVideoRenderer: json["compactVideoRenderer"] == null ? null : ResultCompactVideoRenderer.fromJson(json["compactVideoRenderer"]), compactRadioRenderer: json["compactRadioRenderer"] == null ? null : CompactRadioRenderer.fromJson(json["compactRadioRenderer"]), ); Map toJson() => { "compactAutoplayRenderer": compactAutoplayRenderer == null ? null : compactAutoplayRenderer.toJson(), "compactVideoRenderer": compactVideoRenderer == null ? null : compactVideoRenderer.toJson(), "compactRadioRenderer": compactRadioRenderer == null ? null : compactRadioRenderer.toJson(), }; } class CompactAutoplayRenderer { CompactAutoplayRenderer({ this.title, this.toggleDescription, this.infoIcon, this.infoText, this.contents, this.trackingParams, }); final DateText title; final TextClass toggleDescription; final IconImage infoIcon; final TextClass infoText; final List contents; final String trackingParams; factory CompactAutoplayRenderer.fromRawJson(String str) => CompactAutoplayRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactAutoplayRenderer.fromJson(Map json) => CompactAutoplayRenderer( title: json["title"] == null ? null : DateText.fromJson(json["title"]), toggleDescription: json["toggleDescription"] == null ? null : TextClass.fromJson(json["toggleDescription"]), infoIcon: json["infoIcon"] == null ? null : IconImage.fromJson(json["infoIcon"]), infoText: json["infoText"] == null ? null : TextClass.fromJson(json["infoText"]), contents: json["contents"] == null ? null : List.from(json["contents"] .map((x) => CompactAutoplayRendererContent.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "title": title == null ? null : title.toJson(), "toggleDescription": toggleDescription == null ? null : toggleDescription.toJson(), "infoIcon": infoIcon == null ? null : infoIcon.toJson(), "infoText": infoText == null ? null : infoText.toJson(), "contents": contents == null ? null : List.from(contents.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, }; } class CompactAutoplayRendererContent { CompactAutoplayRendererContent({ this.compactVideoRenderer, }); final ContentCompactVideoRenderer compactVideoRenderer; factory CompactAutoplayRendererContent.fromRawJson(String str) => CompactAutoplayRendererContent.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactAutoplayRendererContent.fromJson(Map json) => CompactAutoplayRendererContent( compactVideoRenderer: json["compactVideoRenderer"] == null ? null : ContentCompactVideoRenderer.fromJson( json["compactVideoRenderer"]), ); Map toJson() => { "compactVideoRenderer": compactVideoRenderer == null ? null : compactVideoRenderer.toJson(), }; } class ContentCompactVideoRenderer { ContentCompactVideoRenderer({ this.videoId, this.thumbnail, this.title, this.longBylineText, this.publishedTimeText, this.viewCountText, this.lengthText, this.navigationEndpoint, this.shortBylineText, this.channelThumbnail, this.ownerBadges, this.trackingParams, this.channelId, this.shortViewCountText, this.menu, this.thumbnailOverlays, this.accessibility, }); final String videoId; final ChannelThumbnailClass thumbnail; final LengthText title; final BylineText longBylineText; final DateText publishedTimeText; final DateText viewCountText; final LengthText lengthText; final CompactVideoRendererNavigationEndpoint navigationEndpoint; final BylineText shortBylineText; final ChannelThumbnailClass channelThumbnail; final List ownerBadges; final String trackingParams; final String channelId; final DateText shortViewCountText; final CompactVideoRendererMenu menu; final List thumbnailOverlays; final AccessibilityData accessibility; factory ContentCompactVideoRenderer.fromRawJson(String str) => ContentCompactVideoRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ContentCompactVideoRenderer.fromJson(Map json) => ContentCompactVideoRenderer( videoId: json["videoId"] == null ? null : json["videoId"], thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), title: json["title"] == null ? null : LengthText.fromJson(json["title"]), longBylineText: json["longBylineText"] == null ? null : BylineText.fromJson(json["longBylineText"]), publishedTimeText: json["publishedTimeText"] == null ? null : DateText.fromJson(json["publishedTimeText"]), viewCountText: json["viewCountText"] == null ? null : DateText.fromJson(json["viewCountText"]), lengthText: json["lengthText"] == null ? null : LengthText.fromJson(json["lengthText"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : CompactVideoRendererNavigationEndpoint.fromJson( json["navigationEndpoint"]), shortBylineText: json["shortBylineText"] == null ? null : BylineText.fromJson(json["shortBylineText"]), channelThumbnail: json["channelThumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["channelThumbnail"]), ownerBadges: json["ownerBadges"] == null ? null : List.from( json["ownerBadges"].map((x) => OwnerBadgeElement.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], channelId: json["channelId"] == null ? null : json["channelId"], shortViewCountText: json["shortViewCountText"] == null ? null : DateText.fromJson(json["shortViewCountText"]), menu: json["menu"] == null ? null : CompactVideoRendererMenu.fromJson(json["menu"]), thumbnailOverlays: json["thumbnailOverlays"] == null ? null : List.from( json["thumbnailOverlays"].map( (x) => CompactVideoRendererThumbnailOverlay.fromJson(x))), accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), ); Map toJson() => { "videoId": videoId == null ? null : videoId, "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "title": title == null ? null : title.toJson(), "longBylineText": longBylineText == null ? null : longBylineText.toJson(), "publishedTimeText": publishedTimeText == null ? null : publishedTimeText.toJson(), "viewCountText": viewCountText == null ? null : viewCountText.toJson(), "lengthText": lengthText == null ? null : lengthText.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "shortBylineText": shortBylineText == null ? null : shortBylineText.toJson(), "channelThumbnail": channelThumbnail == null ? null : channelThumbnail.toJson(), "ownerBadges": ownerBadges == null ? null : List.from(ownerBadges.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "channelId": channelId == null ? null : channelId, "shortViewCountText": shortViewCountText == null ? null : shortViewCountText.toJson(), "menu": menu == null ? null : menu.toJson(), "thumbnailOverlays": thumbnailOverlays == null ? null : List.from(thumbnailOverlays.map((x) => x.toJson())), "accessibility": accessibility == null ? null : accessibility.toJson(), }; } class BylineText { BylineText({ this.runs, }); final List runs; factory BylineText.fromRawJson(String str) => BylineText.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory BylineText.fromJson(Map json) => BylineText( runs: json["runs"] == null ? null : List.from( json["runs"].map((x) => LongBylineTextRun.fromJson(x))), ); Map toJson() => { "runs": runs == null ? null : List.from(runs.map((x) => x.toJson())), }; } class LongBylineTextRun { LongBylineTextRun({ this.text, this.navigationEndpoint, }); final String text; final VideoOwnerRendererNavigationEndpoint navigationEndpoint; factory LongBylineTextRun.fromRawJson(String str) => LongBylineTextRun.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory LongBylineTextRun.fromJson(Map json) => LongBylineTextRun( text: json["text"] == null ? null : json["text"], navigationEndpoint: json["navigationEndpoint"] == null ? null : VideoOwnerRendererNavigationEndpoint.fromJson( json["navigationEndpoint"]), ); Map toJson() => { "text": text == null ? null : text, "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), }; } class CompactVideoRendererMenu { CompactVideoRendererMenu({ this.menuRenderer, }); final PurpleMenuRenderer menuRenderer; factory CompactVideoRendererMenu.fromRawJson(String str) => CompactVideoRendererMenu.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactVideoRendererMenu.fromJson(Map json) => CompactVideoRendererMenu( menuRenderer: json["menuRenderer"] == null ? null : PurpleMenuRenderer.fromJson(json["menuRenderer"]), ); Map toJson() => { "menuRenderer": menuRenderer == null ? null : menuRenderer.toJson(), }; } class PurpleMenuRenderer { PurpleMenuRenderer({ this.items, this.trackingParams, this.accessibility, this.targetId, }); final List items; final String trackingParams; final AccessibilityData accessibility; final String targetId; factory PurpleMenuRenderer.fromRawJson(String str) => PurpleMenuRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleMenuRenderer.fromJson(Map json) => PurpleMenuRenderer( items: json["items"] == null ? null : List.from( json["items"].map((x) => FluffyItem.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), targetId: json["targetId"] == null ? null : json["targetId"], ); Map toJson() => { "items": items == null ? null : List.from(items.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "accessibility": accessibility == null ? null : accessibility.toJson(), "targetId": targetId == null ? null : targetId, }; } class FluffyItem { FluffyItem({ this.menuServiceItemRenderer, }); final MenuItemRenderer menuServiceItemRenderer; factory FluffyItem.fromRawJson(String str) => FluffyItem.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyItem.fromJson(Map json) => FluffyItem( menuServiceItemRenderer: json["menuServiceItemRenderer"] == null ? null : MenuItemRenderer.fromJson(json["menuServiceItemRenderer"]), ); Map toJson() => { "menuServiceItemRenderer": menuServiceItemRenderer == null ? null : menuServiceItemRenderer.toJson(), }; } class CompactVideoRendererNavigationEndpoint { CompactVideoRendererNavigationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.watchEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final PurpleWatchEndpoint watchEndpoint; factory CompactVideoRendererNavigationEndpoint.fromRawJson(String str) => CompactVideoRendererNavigationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactVideoRendererNavigationEndpoint.fromJson( Map json) => CompactVideoRendererNavigationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), watchEndpoint: json["watchEndpoint"] == null ? null : PurpleWatchEndpoint.fromJson(json["watchEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "watchEndpoint": watchEndpoint == null ? null : watchEndpoint.toJson(), }; } class PurpleWatchEndpoint { PurpleWatchEndpoint({ this.videoId, this.nofollow, }); final String videoId; final bool nofollow; factory PurpleWatchEndpoint.fromRawJson(String str) => PurpleWatchEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleWatchEndpoint.fromJson(Map json) => PurpleWatchEndpoint( videoId: json["videoId"] == null ? null : json["videoId"], nofollow: json["nofollow"] == null ? null : json["nofollow"], ); Map toJson() => { "videoId": videoId == null ? null : videoId, "nofollow": nofollow == null ? null : nofollow, }; } class CompactVideoRendererThumbnailOverlay { CompactVideoRendererThumbnailOverlay({ this.thumbnailOverlayTimeStatusRenderer, this.thumbnailOverlayToggleButtonRenderer, this.thumbnailOverlayNowPlayingRenderer, }); final ThumbnailOverlayTimeStatusRenderer thumbnailOverlayTimeStatusRenderer; final ThumbnailOverlayToggleButtonRenderer thumbnailOverlayToggleButtonRenderer; final ThumbnailOverlayNowPlayingRenderer thumbnailOverlayNowPlayingRenderer; factory CompactVideoRendererThumbnailOverlay.fromRawJson(String str) => CompactVideoRendererThumbnailOverlay.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactVideoRendererThumbnailOverlay.fromJson( Map json) => CompactVideoRendererThumbnailOverlay( thumbnailOverlayTimeStatusRenderer: json["thumbnailOverlayTimeStatusRenderer"] == null ? null : ThumbnailOverlayTimeStatusRenderer.fromJson( json["thumbnailOverlayTimeStatusRenderer"]), thumbnailOverlayToggleButtonRenderer: json["thumbnailOverlayToggleButtonRenderer"] == null ? null : ThumbnailOverlayToggleButtonRenderer.fromJson( json["thumbnailOverlayToggleButtonRenderer"]), thumbnailOverlayNowPlayingRenderer: json["thumbnailOverlayNowPlayingRenderer"] == null ? null : ThumbnailOverlayNowPlayingRenderer.fromJson( json["thumbnailOverlayNowPlayingRenderer"]), ); Map toJson() => { "thumbnailOverlayTimeStatusRenderer": thumbnailOverlayTimeStatusRenderer == null ? null : thumbnailOverlayTimeStatusRenderer.toJson(), "thumbnailOverlayToggleButtonRenderer": thumbnailOverlayToggleButtonRenderer == null ? null : thumbnailOverlayToggleButtonRenderer.toJson(), "thumbnailOverlayNowPlayingRenderer": thumbnailOverlayNowPlayingRenderer == null ? null : thumbnailOverlayNowPlayingRenderer.toJson(), }; } class ThumbnailOverlayNowPlayingRenderer { ThumbnailOverlayNowPlayingRenderer({ this.text, }); final TextClass text; factory ThumbnailOverlayNowPlayingRenderer.fromRawJson(String str) => ThumbnailOverlayNowPlayingRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ThumbnailOverlayNowPlayingRenderer.fromJson( Map json) => ThumbnailOverlayNowPlayingRenderer( text: json["text"] == null ? null : TextClass.fromJson(json["text"]), ); Map toJson() => { "text": text == null ? null : text.toJson(), }; } class ThumbnailOverlayTimeStatusRenderer { ThumbnailOverlayTimeStatusRenderer({ this.text, this.style, }); final LengthText text; final ThumbnailOverlayTimeStatusRendererStyle style; factory ThumbnailOverlayTimeStatusRenderer.fromRawJson(String str) => ThumbnailOverlayTimeStatusRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ThumbnailOverlayTimeStatusRenderer.fromJson( Map json) => ThumbnailOverlayTimeStatusRenderer( text: json["text"] == null ? null : LengthText.fromJson(json["text"]), style: json["style"] == null ? null : thumbnailOverlayTimeStatusRendererStyleValues.map[json["style"]], ); Map toJson() => { "text": text == null ? null : text.toJson(), "style": style == null ? null : thumbnailOverlayTimeStatusRendererStyleValues.reverse[style], }; } enum ThumbnailOverlayTimeStatusRendererStyle { DEFAULT } final thumbnailOverlayTimeStatusRendererStyleValues = EnumValues({"DEFAULT": ThumbnailOverlayTimeStatusRendererStyle.DEFAULT}); class ThumbnailOverlayToggleButtonRenderer { ThumbnailOverlayToggleButtonRenderer({ this.isToggled, this.untoggledIcon, this.toggledIcon, this.untoggledTooltip, this.toggledTooltip, this.untoggledServiceEndpoint, this.toggledServiceEndpoint, this.untoggledAccessibility, this.toggledAccessibility, this.trackingParams, }); final bool isToggled; final IconImage untoggledIcon; final IconImage toggledIcon; final UntoggledTooltip untoggledTooltip; final ToggledTooltip toggledTooltip; final UntoggledServiceEndpoint untoggledServiceEndpoint; final ToggledServiceEndpoint toggledServiceEndpoint; final AccessibilityData untoggledAccessibility; final AccessibilityData toggledAccessibility; final String trackingParams; factory ThumbnailOverlayToggleButtonRenderer.fromRawJson(String str) => ThumbnailOverlayToggleButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ThumbnailOverlayToggleButtonRenderer.fromJson( Map json) => ThumbnailOverlayToggleButtonRenderer( isToggled: json["isToggled"] == null ? null : json["isToggled"], untoggledIcon: json["untoggledIcon"] == null ? null : IconImage.fromJson(json["untoggledIcon"]), toggledIcon: json["toggledIcon"] == null ? null : IconImage.fromJson(json["toggledIcon"]), untoggledTooltip: json["untoggledTooltip"] == null ? null : untoggledTooltipValues.map[json["untoggledTooltip"]], toggledTooltip: json["toggledTooltip"] == null ? null : toggledTooltipValues.map[json["toggledTooltip"]], untoggledServiceEndpoint: json["untoggledServiceEndpoint"] == null ? null : UntoggledServiceEndpoint.fromJson( json["untoggledServiceEndpoint"]), toggledServiceEndpoint: json["toggledServiceEndpoint"] == null ? null : ToggledServiceEndpoint.fromJson(json["toggledServiceEndpoint"]), untoggledAccessibility: json["untoggledAccessibility"] == null ? null : AccessibilityData.fromJson(json["untoggledAccessibility"]), toggledAccessibility: json["toggledAccessibility"] == null ? null : AccessibilityData.fromJson(json["toggledAccessibility"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "isToggled": isToggled == null ? null : isToggled, "untoggledIcon": untoggledIcon == null ? null : untoggledIcon.toJson(), "toggledIcon": toggledIcon == null ? null : toggledIcon.toJson(), "untoggledTooltip": untoggledTooltip == null ? null : untoggledTooltipValues.reverse[untoggledTooltip], "toggledTooltip": toggledTooltip == null ? null : toggledTooltipValues.reverse[toggledTooltip], "untoggledServiceEndpoint": untoggledServiceEndpoint == null ? null : untoggledServiceEndpoint.toJson(), "toggledServiceEndpoint": toggledServiceEndpoint == null ? null : toggledServiceEndpoint.toJson(), "untoggledAccessibility": untoggledAccessibility == null ? null : untoggledAccessibility.toJson(), "toggledAccessibility": toggledAccessibility == null ? null : toggledAccessibility.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class ToggledServiceEndpoint { ToggledServiceEndpoint({ this.clickTrackingParams, this.commandMetadata, this.playlistEditEndpoint, }); final String clickTrackingParams; final OnCreateListCommandCommandMetadata commandMetadata; final ToggledServiceEndpointPlaylistEditEndpoint playlistEditEndpoint; factory ToggledServiceEndpoint.fromRawJson(String str) => ToggledServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ToggledServiceEndpoint.fromJson(Map json) => ToggledServiceEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnCreateListCommandCommandMetadata.fromJson( json["commandMetadata"]), playlistEditEndpoint: json["playlistEditEndpoint"] == null ? null : ToggledServiceEndpointPlaylistEditEndpoint.fromJson( json["playlistEditEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "playlistEditEndpoint": playlistEditEndpoint == null ? null : playlistEditEndpoint.toJson(), }; } class ToggledServiceEndpointPlaylistEditEndpoint { ToggledServiceEndpointPlaylistEditEndpoint({ this.playlistId, this.actions, }); final PlaylistId playlistId; final List actions; factory ToggledServiceEndpointPlaylistEditEndpoint.fromRawJson(String str) => ToggledServiceEndpointPlaylistEditEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ToggledServiceEndpointPlaylistEditEndpoint.fromJson( Map json) => ToggledServiceEndpointPlaylistEditEndpoint( playlistId: json["playlistId"] == null ? null : playlistIdValues.map[json["playlistId"]], actions: json["actions"] == null ? null : List.from( json["actions"].map((x) => FluffyAction.fromJson(x))), ); Map toJson() => { "playlistId": playlistId == null ? null : playlistIdValues.reverse[playlistId], "actions": actions == null ? null : List.from(actions.map((x) => x.toJson())), }; } class FluffyAction { FluffyAction({ this.action, this.removedVideoId, }); final HilariousAction action; final String removedVideoId; factory FluffyAction.fromRawJson(String str) => FluffyAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyAction.fromJson(Map json) => FluffyAction( action: json["action"] == null ? null : hilariousActionValues.map[json["action"]], removedVideoId: json["removedVideoId"] == null ? null : json["removedVideoId"], ); Map toJson() => { "action": action == null ? null : hilariousActionValues.reverse[action], "removedVideoId": removedVideoId == null ? null : removedVideoId, }; } enum HilariousAction { ACTION_REMOVE_VIDEO_BY_VIDEO_ID } final hilariousActionValues = EnumValues({ "ACTION_REMOVE_VIDEO_BY_VIDEO_ID": HilariousAction.ACTION_REMOVE_VIDEO_BY_VIDEO_ID }); enum PlaylistId { WL } final playlistIdValues = EnumValues({"WL": PlaylistId.WL}); enum ToggledTooltip { ADDED } final toggledTooltipValues = EnumValues({"Added": ToggledTooltip.ADDED}); class UntoggledServiceEndpoint { UntoggledServiceEndpoint({ this.clickTrackingParams, this.commandMetadata, this.playlistEditEndpoint, this.signalServiceEndpoint, }); final String clickTrackingParams; final OnCreateListCommandCommandMetadata commandMetadata; final UntoggledServiceEndpointPlaylistEditEndpoint playlistEditEndpoint; final UntoggledServiceEndpointSignalServiceEndpoint signalServiceEndpoint; factory UntoggledServiceEndpoint.fromRawJson(String str) => UntoggledServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory UntoggledServiceEndpoint.fromJson(Map json) => UntoggledServiceEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnCreateListCommandCommandMetadata.fromJson( json["commandMetadata"]), playlistEditEndpoint: json["playlistEditEndpoint"] == null ? null : UntoggledServiceEndpointPlaylistEditEndpoint.fromJson( json["playlistEditEndpoint"]), signalServiceEndpoint: json["signalServiceEndpoint"] == null ? null : UntoggledServiceEndpointSignalServiceEndpoint.fromJson( json["signalServiceEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "playlistEditEndpoint": playlistEditEndpoint == null ? null : playlistEditEndpoint.toJson(), "signalServiceEndpoint": signalServiceEndpoint == null ? null : signalServiceEndpoint.toJson(), }; } class UntoggledServiceEndpointPlaylistEditEndpoint { UntoggledServiceEndpointPlaylistEditEndpoint({ this.playlistId, this.actions, }); final PlaylistId playlistId; final List actions; factory UntoggledServiceEndpointPlaylistEditEndpoint.fromRawJson( String str) => UntoggledServiceEndpointPlaylistEditEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory UntoggledServiceEndpointPlaylistEditEndpoint.fromJson( Map json) => UntoggledServiceEndpointPlaylistEditEndpoint( playlistId: json["playlistId"] == null ? null : playlistIdValues.map[json["playlistId"]], actions: json["actions"] == null ? null : List.from( json["actions"].map((x) => TentacledAction.fromJson(x))), ); Map toJson() => { "playlistId": playlistId == null ? null : playlistIdValues.reverse[playlistId], "actions": actions == null ? null : List.from(actions.map((x) => x.toJson())), }; } class TentacledAction { TentacledAction({ this.addedVideoId, this.action, }); final String addedVideoId; final AmbitiousAction action; factory TentacledAction.fromRawJson(String str) => TentacledAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledAction.fromJson(Map json) => TentacledAction( addedVideoId: json["addedVideoId"] == null ? null : json["addedVideoId"], action: json["action"] == null ? null : ambitiousActionValues.map[json["action"]], ); Map toJson() => { "addedVideoId": addedVideoId == null ? null : addedVideoId, "action": action == null ? null : ambitiousActionValues.reverse[action], }; } enum AmbitiousAction { ACTION_ADD_VIDEO } final ambitiousActionValues = EnumValues({"ACTION_ADD_VIDEO": AmbitiousAction.ACTION_ADD_VIDEO}); class UntoggledServiceEndpointSignalServiceEndpoint { UntoggledServiceEndpointSignalServiceEndpoint({ this.signal, this.actions, }); final Signal signal; final List actions; factory UntoggledServiceEndpointSignalServiceEndpoint.fromRawJson( String str) => UntoggledServiceEndpointSignalServiceEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory UntoggledServiceEndpointSignalServiceEndpoint.fromJson( Map json) => UntoggledServiceEndpointSignalServiceEndpoint( signal: json["signal"] == null ? null : signalValues.map[json["signal"]], actions: json["actions"] == null ? null : List.from( json["actions"].map((x) => StickyAction.fromJson(x))), ); Map toJson() => { "signal": signal == null ? null : signalValues.reverse[signal], "actions": actions == null ? null : List.from(actions.map((x) => x.toJson())), }; } class StickyAction { StickyAction({ this.clickTrackingParams, this.addToPlaylistCommand, }); final String clickTrackingParams; final AddToPlaylistCommand addToPlaylistCommand; factory StickyAction.fromRawJson(String str) => StickyAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory StickyAction.fromJson(Map json) => StickyAction( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], addToPlaylistCommand: json["addToPlaylistCommand"] == null ? null : AddToPlaylistCommand.fromJson(json["addToPlaylistCommand"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "addToPlaylistCommand": addToPlaylistCommand == null ? null : addToPlaylistCommand.toJson(), }; } enum UntoggledTooltip { WATCH_LATER, ADD_TO_QUEUE } final untoggledTooltipValues = EnumValues({ "Add to queue": UntoggledTooltip.ADD_TO_QUEUE, "Watch later": UntoggledTooltip.WATCH_LATER }); class CompactRadioRenderer { CompactRadioRenderer({ this.playlistId, this.thumbnail, this.title, this.navigationEndpoint, this.videoCountText, this.secondaryNavigationEndpoint, this.shortBylineText, this.longBylineText, this.trackingParams, this.thumbnailText, this.videoCountShortText, this.shareUrl, this.thumbnailOverlays, }); final String playlistId; final ChannelThumbnailClass thumbnail; final DateText title; final SecondaryNavigationEndpointClass navigationEndpoint; final TextClass videoCountText; final SecondaryNavigationEndpointClass secondaryNavigationEndpoint; final DateText shortBylineText; final DateText longBylineText; final String trackingParams; final TextClass thumbnailText; final TextClass videoCountShortText; final String shareUrl; final List thumbnailOverlays; factory CompactRadioRenderer.fromRawJson(String str) => CompactRadioRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactRadioRenderer.fromJson(Map json) => CompactRadioRenderer( playlistId: json["playlistId"] == null ? null : json["playlistId"], thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), title: json["title"] == null ? null : DateText.fromJson(json["title"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : SecondaryNavigationEndpointClass.fromJson( json["navigationEndpoint"]), videoCountText: json["videoCountText"] == null ? null : TextClass.fromJson(json["videoCountText"]), secondaryNavigationEndpoint: json["secondaryNavigationEndpoint"] == null ? null : SecondaryNavigationEndpointClass.fromJson( json["secondaryNavigationEndpoint"]), shortBylineText: json["shortBylineText"] == null ? null : DateText.fromJson(json["shortBylineText"]), longBylineText: json["longBylineText"] == null ? null : DateText.fromJson(json["longBylineText"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], thumbnailText: json["thumbnailText"] == null ? null : TextClass.fromJson(json["thumbnailText"]), videoCountShortText: json["videoCountShortText"] == null ? null : TextClass.fromJson(json["videoCountShortText"]), shareUrl: json["shareUrl"] == null ? null : json["shareUrl"], thumbnailOverlays: json["thumbnailOverlays"] == null ? null : List.from( json["thumbnailOverlays"].map( (x) => CompactRadioRendererThumbnailOverlay.fromJson(x))), ); Map toJson() => { "playlistId": playlistId == null ? null : playlistId, "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "title": title == null ? null : title.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "videoCountText": videoCountText == null ? null : videoCountText.toJson(), "secondaryNavigationEndpoint": secondaryNavigationEndpoint == null ? null : secondaryNavigationEndpoint.toJson(), "shortBylineText": shortBylineText == null ? null : shortBylineText.toJson(), "longBylineText": longBylineText == null ? null : longBylineText.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "thumbnailText": thumbnailText == null ? null : thumbnailText.toJson(), "videoCountShortText": videoCountShortText == null ? null : videoCountShortText.toJson(), "shareUrl": shareUrl == null ? null : shareUrl, "thumbnailOverlays": thumbnailOverlays == null ? null : List.from(thumbnailOverlays.map((x) => x.toJson())), }; } class SecondaryNavigationEndpointClass { SecondaryNavigationEndpointClass({ this.clickTrackingParams, this.commandMetadata, this.watchEndpoint, }); final String clickTrackingParams; final AutoplayVideoCommandMetadata commandMetadata; final SecondaryNavigationEndpointWatchEndpoint watchEndpoint; factory SecondaryNavigationEndpointClass.fromRawJson(String str) => SecondaryNavigationEndpointClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SecondaryNavigationEndpointClass.fromJson( Map json) => SecondaryNavigationEndpointClass( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : AutoplayVideoCommandMetadata.fromJson(json["commandMetadata"]), watchEndpoint: json["watchEndpoint"] == null ? null : SecondaryNavigationEndpointWatchEndpoint.fromJson( json["watchEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "watchEndpoint": watchEndpoint == null ? null : watchEndpoint.toJson(), }; } class SecondaryNavigationEndpointWatchEndpoint { SecondaryNavigationEndpointWatchEndpoint({ this.videoId, this.playlistId, this.params, this.continuePlayback, }); final String videoId; final String playlistId; final String params; final bool continuePlayback; factory SecondaryNavigationEndpointWatchEndpoint.fromRawJson(String str) => SecondaryNavigationEndpointWatchEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SecondaryNavigationEndpointWatchEndpoint.fromJson( Map json) => SecondaryNavigationEndpointWatchEndpoint( videoId: json["videoId"] == null ? null : json["videoId"], playlistId: json["playlistId"] == null ? null : json["playlistId"], params: json["params"] == null ? null : json["params"], continuePlayback: json["continuePlayback"] == null ? null : json["continuePlayback"], ); Map toJson() => { "videoId": videoId == null ? null : videoId, "playlistId": playlistId == null ? null : playlistId, "params": params == null ? null : params, "continuePlayback": continuePlayback == null ? null : continuePlayback, }; } class CompactRadioRendererThumbnailOverlay { CompactRadioRendererThumbnailOverlay({ this.thumbnailOverlaySidePanelRenderer, this.thumbnailOverlayHoverTextRenderer, this.thumbnailOverlayNowPlayingRenderer, }); final ThumbnailOverlayRenderer thumbnailOverlaySidePanelRenderer; final ThumbnailOverlayRenderer thumbnailOverlayHoverTextRenderer; final ThumbnailOverlayNowPlayingRenderer thumbnailOverlayNowPlayingRenderer; factory CompactRadioRendererThumbnailOverlay.fromRawJson(String str) => CompactRadioRendererThumbnailOverlay.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory CompactRadioRendererThumbnailOverlay.fromJson( Map json) => CompactRadioRendererThumbnailOverlay( thumbnailOverlaySidePanelRenderer: json["thumbnailOverlaySidePanelRenderer"] == null ? null : ThumbnailOverlayRenderer.fromJson( json["thumbnailOverlaySidePanelRenderer"]), thumbnailOverlayHoverTextRenderer: json["thumbnailOverlayHoverTextRenderer"] == null ? null : ThumbnailOverlayRenderer.fromJson( json["thumbnailOverlayHoverTextRenderer"]), thumbnailOverlayNowPlayingRenderer: json["thumbnailOverlayNowPlayingRenderer"] == null ? null : ThumbnailOverlayNowPlayingRenderer.fromJson( json["thumbnailOverlayNowPlayingRenderer"]), ); Map toJson() => { "thumbnailOverlaySidePanelRenderer": thumbnailOverlaySidePanelRenderer == null ? null : thumbnailOverlaySidePanelRenderer.toJson(), "thumbnailOverlayHoverTextRenderer": thumbnailOverlayHoverTextRenderer == null ? null : thumbnailOverlayHoverTextRenderer.toJson(), "thumbnailOverlayNowPlayingRenderer": thumbnailOverlayNowPlayingRenderer == null ? null : thumbnailOverlayNowPlayingRenderer.toJson(), }; } class ThumbnailOverlayRenderer { ThumbnailOverlayRenderer({ this.text, this.icon, }); final TextClass text; final IconImage icon; factory ThumbnailOverlayRenderer.fromRawJson(String str) => ThumbnailOverlayRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ThumbnailOverlayRenderer.fromJson(Map json) => ThumbnailOverlayRenderer( text: json["text"] == null ? null : TextClass.fromJson(json["text"]), icon: json["icon"] == null ? null : IconImage.fromJson(json["icon"]), ); Map toJson() => { "text": text == null ? null : text.toJson(), "icon": icon == null ? null : icon.toJson(), }; } class ResultCompactVideoRenderer { ResultCompactVideoRenderer({ this.videoId, this.thumbnail, this.title, this.longBylineText, this.publishedTimeText, this.viewCountText, this.lengthText, this.navigationEndpoint, this.shortBylineText, this.channelThumbnail, this.ownerBadges, this.trackingParams, this.channelId, this.shortViewCountText, this.menu, this.thumbnailOverlays, this.accessibility, this.badges, }); final String videoId; final ChannelThumbnailClass thumbnail; final LengthText title; final BylineText longBylineText; final DateText publishedTimeText; final DateText viewCountText; final LengthText lengthText; final CompactVideoRendererNavigationEndpoint navigationEndpoint; final BylineText shortBylineText; final ChannelThumbnailClass channelThumbnail; final List ownerBadges; final String trackingParams; final String channelId; final DateText shortViewCountText; final CompactVideoRendererMenu menu; final List thumbnailOverlays; final AccessibilityData accessibility; final List badges; factory ResultCompactVideoRenderer.fromRawJson(String str) => ResultCompactVideoRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ResultCompactVideoRenderer.fromJson(Map json) => ResultCompactVideoRenderer( videoId: json["videoId"] == null ? null : json["videoId"], thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), title: json["title"] == null ? null : LengthText.fromJson(json["title"]), longBylineText: json["longBylineText"] == null ? null : BylineText.fromJson(json["longBylineText"]), publishedTimeText: json["publishedTimeText"] == null ? null : DateText.fromJson(json["publishedTimeText"]), viewCountText: json["viewCountText"] == null ? null : DateText.fromJson(json["viewCountText"]), lengthText: json["lengthText"] == null ? null : LengthText.fromJson(json["lengthText"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : CompactVideoRendererNavigationEndpoint.fromJson( json["navigationEndpoint"]), shortBylineText: json["shortBylineText"] == null ? null : BylineText.fromJson(json["shortBylineText"]), channelThumbnail: json["channelThumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["channelThumbnail"]), ownerBadges: json["ownerBadges"] == null ? null : List.from( json["ownerBadges"].map((x) => OwnerBadgeElement.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], channelId: json["channelId"] == null ? null : json["channelId"], shortViewCountText: json["shortViewCountText"] == null ? null : DateText.fromJson(json["shortViewCountText"]), menu: json["menu"] == null ? null : CompactVideoRendererMenu.fromJson(json["menu"]), thumbnailOverlays: json["thumbnailOverlays"] == null ? null : List.from( json["thumbnailOverlays"].map( (x) => CompactVideoRendererThumbnailOverlay.fromJson(x))), accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), badges: json["badges"] == null ? null : List.from( json["badges"].map((x) => PurpleBadge.fromJson(x))), ); Map toJson() => { "videoId": videoId == null ? null : videoId, "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "title": title == null ? null : title.toJson(), "longBylineText": longBylineText == null ? null : longBylineText.toJson(), "publishedTimeText": publishedTimeText == null ? null : publishedTimeText.toJson(), "viewCountText": viewCountText == null ? null : viewCountText.toJson(), "lengthText": lengthText == null ? null : lengthText.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "shortBylineText": shortBylineText == null ? null : shortBylineText.toJson(), "channelThumbnail": channelThumbnail == null ? null : channelThumbnail.toJson(), "ownerBadges": ownerBadges == null ? null : List.from(ownerBadges.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "channelId": channelId == null ? null : channelId, "shortViewCountText": shortViewCountText == null ? null : shortViewCountText.toJson(), "menu": menu == null ? null : menu.toJson(), "thumbnailOverlays": thumbnailOverlays == null ? null : List.from(thumbnailOverlays.map((x) => x.toJson())), "accessibility": accessibility == null ? null : accessibility.toJson(), "badges": badges == null ? null : List.from(badges.map((x) => x.toJson())), }; } class PurpleBadge { PurpleBadge({ this.metadataBadgeRenderer, }); final PurpleMetadataBadgeRenderer metadataBadgeRenderer; factory PurpleBadge.fromRawJson(String str) => PurpleBadge.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleBadge.fromJson(Map json) => PurpleBadge( metadataBadgeRenderer: json["metadataBadgeRenderer"] == null ? null : PurpleMetadataBadgeRenderer.fromJson( json["metadataBadgeRenderer"]), ); Map toJson() => { "metadataBadgeRenderer": metadataBadgeRenderer == null ? null : metadataBadgeRenderer.toJson(), }; } class PurpleMetadataBadgeRenderer { PurpleMetadataBadgeRenderer({ this.style, this.label, this.trackingParams, }); final String style; final String label; final String trackingParams; factory PurpleMetadataBadgeRenderer.fromRawJson(String str) => PurpleMetadataBadgeRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PurpleMetadataBadgeRenderer.fromJson(Map json) => PurpleMetadataBadgeRenderer( style: json["style"] == null ? null : json["style"], label: json["label"] == null ? null : json["label"], trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "style": style == null ? null : style, "label": label == null ? null : label, "trackingParams": trackingParams == null ? null : trackingParams, }; } class EngagementPanel { EngagementPanel({ this.engagementPanelSectionListRenderer, }); final EngagementPanelSectionListRenderer engagementPanelSectionListRenderer; factory EngagementPanel.fromRawJson(String str) => EngagementPanel.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EngagementPanel.fromJson(Map json) => EngagementPanel( engagementPanelSectionListRenderer: json["engagementPanelSectionListRenderer"] == null ? null : EngagementPanelSectionListRenderer.fromJson( json["engagementPanelSectionListRenderer"]), ); Map toJson() => { "engagementPanelSectionListRenderer": engagementPanelSectionListRenderer == null ? null : engagementPanelSectionListRenderer.toJson(), }; } class EngagementPanelSectionListRenderer { EngagementPanelSectionListRenderer({ this.panelIdentifier, this.content, this.targetId, this.visibility, this.header, }); final String panelIdentifier; final EngagementPanelSectionListRendererContent content; final String targetId; final String visibility; final Header header; factory EngagementPanelSectionListRenderer.fromRawJson(String str) => EngagementPanelSectionListRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EngagementPanelSectionListRenderer.fromJson( Map json) => EngagementPanelSectionListRenderer( panelIdentifier: json["panelIdentifier"] == null ? null : json["panelIdentifier"], content: json["content"] == null ? null : EngagementPanelSectionListRendererContent.fromJson( json["content"]), targetId: json["targetId"] == null ? null : json["targetId"], visibility: json["visibility"] == null ? null : json["visibility"], header: json["header"] == null ? null : Header.fromJson(json["header"]), ); Map toJson() => { "panelIdentifier": panelIdentifier == null ? null : panelIdentifier, "content": content == null ? null : content.toJson(), "targetId": targetId == null ? null : targetId, "visibility": visibility == null ? null : visibility, "header": header == null ? null : header.toJson(), }; } class EngagementPanelSectionListRendererContent { EngagementPanelSectionListRendererContent({ this.adsEngagementPanelContentRenderer, this.continuationItemRenderer, }); final AdsEngagementPanelContentRenderer adsEngagementPanelContentRenderer; final ContinuationItemRenderer continuationItemRenderer; factory EngagementPanelSectionListRendererContent.fromRawJson(String str) => EngagementPanelSectionListRendererContent.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EngagementPanelSectionListRendererContent.fromJson( Map json) => EngagementPanelSectionListRendererContent( adsEngagementPanelContentRenderer: json["adsEngagementPanelContentRenderer"] == null ? null : AdsEngagementPanelContentRenderer.fromJson( json["adsEngagementPanelContentRenderer"]), continuationItemRenderer: json["continuationItemRenderer"] == null ? null : ContinuationItemRenderer.fromJson( json["continuationItemRenderer"]), ); Map toJson() => { "adsEngagementPanelContentRenderer": adsEngagementPanelContentRenderer == null ? null : adsEngagementPanelContentRenderer.toJson(), "continuationItemRenderer": continuationItemRenderer == null ? null : continuationItemRenderer.toJson(), }; } class ContinuationItemRenderer { ContinuationItemRenderer({ this.trigger, this.continuationEndpoint, }); final String trigger; final ContinuationEndpoint continuationEndpoint; factory ContinuationItemRenderer.fromRawJson(String str) => ContinuationItemRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ContinuationItemRenderer.fromJson(Map json) => ContinuationItemRenderer( trigger: json["trigger"] == null ? null : json["trigger"], continuationEndpoint: json["continuationEndpoint"] == null ? null : ContinuationEndpoint.fromJson(json["continuationEndpoint"]), ); Map toJson() => { "trigger": trigger == null ? null : trigger, "continuationEndpoint": continuationEndpoint == null ? null : continuationEndpoint.toJson(), }; } class ContinuationEndpoint { ContinuationEndpoint({ this.clickTrackingParams, this.commandMetadata, this.getTranscriptEndpoint, }); final String clickTrackingParams; final OnCreateListCommandCommandMetadata commandMetadata; final GetTranscriptEndpoint getTranscriptEndpoint; factory ContinuationEndpoint.fromRawJson(String str) => ContinuationEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ContinuationEndpoint.fromJson(Map json) => ContinuationEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnCreateListCommandCommandMetadata.fromJson( json["commandMetadata"]), getTranscriptEndpoint: json["getTranscriptEndpoint"] == null ? null : GetTranscriptEndpoint.fromJson(json["getTranscriptEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "getTranscriptEndpoint": getTranscriptEndpoint == null ? null : getTranscriptEndpoint.toJson(), }; } class GetTranscriptEndpoint { GetTranscriptEndpoint({ this.params, }); final String params; factory GetTranscriptEndpoint.fromRawJson(String str) => GetTranscriptEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory GetTranscriptEndpoint.fromJson(Map json) => GetTranscriptEndpoint( params: json["params"] == null ? null : json["params"], ); Map toJson() => { "params": params == null ? null : params, }; } class Header { Header({ this.engagementPanelTitleHeaderRenderer, }); final EngagementPanelTitleHeaderRenderer engagementPanelTitleHeaderRenderer; factory Header.fromRawJson(String str) => Header.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Header.fromJson(Map json) => Header( engagementPanelTitleHeaderRenderer: json["engagementPanelTitleHeaderRenderer"] == null ? null : EngagementPanelTitleHeaderRenderer.fromJson( json["engagementPanelTitleHeaderRenderer"]), ); Map toJson() => { "engagementPanelTitleHeaderRenderer": engagementPanelTitleHeaderRenderer == null ? null : engagementPanelTitleHeaderRenderer.toJson(), }; } class EngagementPanelTitleHeaderRenderer { EngagementPanelTitleHeaderRenderer({ this.title, this.menu, this.visibilityButton, this.trackingParams, }); final TextClass title; final EngagementPanelTitleHeaderRendererMenu menu; final VisibilityButton visibilityButton; final String trackingParams; factory EngagementPanelTitleHeaderRenderer.fromRawJson(String str) => EngagementPanelTitleHeaderRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EngagementPanelTitleHeaderRenderer.fromJson( Map json) => EngagementPanelTitleHeaderRenderer( title: json["title"] == null ? null : TextClass.fromJson(json["title"]), menu: json["menu"] == null ? null : EngagementPanelTitleHeaderRendererMenu.fromJson(json["menu"]), visibilityButton: json["visibilityButton"] == null ? null : VisibilityButton.fromJson(json["visibilityButton"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "title": title == null ? null : title.toJson(), "menu": menu == null ? null : menu.toJson(), "visibilityButton": visibilityButton == null ? null : visibilityButton.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class EngagementPanelTitleHeaderRendererMenu { EngagementPanelTitleHeaderRendererMenu({ this.menuRenderer, }); final FluffyMenuRenderer menuRenderer; factory EngagementPanelTitleHeaderRendererMenu.fromRawJson(String str) => EngagementPanelTitleHeaderRendererMenu.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EngagementPanelTitleHeaderRendererMenu.fromJson( Map json) => EngagementPanelTitleHeaderRendererMenu( menuRenderer: json["menuRenderer"] == null ? null : FluffyMenuRenderer.fromJson(json["menuRenderer"]), ); Map toJson() => { "menuRenderer": menuRenderer == null ? null : menuRenderer.toJson(), }; } class FluffyMenuRenderer { FluffyMenuRenderer({ this.items, this.trackingParams, this.accessibility, }); final List items; final String trackingParams; final AccessibilityData accessibility; factory FluffyMenuRenderer.fromRawJson(String str) => FluffyMenuRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FluffyMenuRenderer.fromJson(Map json) => FluffyMenuRenderer( items: json["items"] == null ? null : List.from( json["items"].map((x) => TentacledItem.fromJson(x))), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], accessibility: json["accessibility"] == null ? null : AccessibilityData.fromJson(json["accessibility"]), ); Map toJson() => { "items": items == null ? null : List.from(items.map((x) => x.toJson())), "trackingParams": trackingParams == null ? null : trackingParams, "accessibility": accessibility == null ? null : accessibility.toJson(), }; } class TentacledItem { TentacledItem({ this.menuServiceItemRenderer, }); final MenuServiceItemRenderer menuServiceItemRenderer; factory TentacledItem.fromRawJson(String str) => TentacledItem.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory TentacledItem.fromJson(Map json) => TentacledItem( menuServiceItemRenderer: json["menuServiceItemRenderer"] == null ? null : MenuServiceItemRenderer.fromJson(json["menuServiceItemRenderer"]), ); Map toJson() => { "menuServiceItemRenderer": menuServiceItemRenderer == null ? null : menuServiceItemRenderer.toJson(), }; } class MenuServiceItemRenderer { MenuServiceItemRenderer({ this.text, this.serviceEndpoint, this.trackingParams, }); final TextClass text; final OnResponseReceivedEndpoint serviceEndpoint; final String trackingParams; factory MenuServiceItemRenderer.fromRawJson(String str) => MenuServiceItemRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory MenuServiceItemRenderer.fromJson(Map json) => MenuServiceItemRenderer( text: json["text"] == null ? null : TextClass.fromJson(json["text"]), serviceEndpoint: json["serviceEndpoint"] == null ? null : OnResponseReceivedEndpoint.fromJson(json["serviceEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "text": text == null ? null : text.toJson(), "serviceEndpoint": serviceEndpoint == null ? null : serviceEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class OnResponseReceivedEndpoint { OnResponseReceivedEndpoint({ this.clickTrackingParams, this.commandMetadata, this.signalServiceEndpoint, }); final String clickTrackingParams; final OnResponseReceivedEndpointCommandMetadata commandMetadata; final OnResponseReceivedEndpointSignalServiceEndpoint signalServiceEndpoint; factory OnResponseReceivedEndpoint.fromRawJson(String str) => OnResponseReceivedEndpoint.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory OnResponseReceivedEndpoint.fromJson(Map json) => OnResponseReceivedEndpoint( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], commandMetadata: json["commandMetadata"] == null ? null : OnResponseReceivedEndpointCommandMetadata.fromJson( json["commandMetadata"]), signalServiceEndpoint: json["signalServiceEndpoint"] == null ? null : OnResponseReceivedEndpointSignalServiceEndpoint.fromJson( json["signalServiceEndpoint"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "commandMetadata": commandMetadata == null ? null : commandMetadata.toJson(), "signalServiceEndpoint": signalServiceEndpoint == null ? null : signalServiceEndpoint.toJson(), }; } class OnResponseReceivedEndpointSignalServiceEndpoint { OnResponseReceivedEndpointSignalServiceEndpoint({ this.signal, this.actions, }); final Signal signal; final List actions; factory OnResponseReceivedEndpointSignalServiceEndpoint.fromRawJson( String str) => OnResponseReceivedEndpointSignalServiceEndpoint.fromJson( json.decode(str)); String toRawJson() => json.encode(toJson()); factory OnResponseReceivedEndpointSignalServiceEndpoint.fromJson( Map json) => OnResponseReceivedEndpointSignalServiceEndpoint( signal: json["signal"] == null ? null : signalValues.map[json["signal"]], actions: json["actions"] == null ? null : List.from( json["actions"].map((x) => IndigoAction.fromJson(x))), ); Map toJson() => { "signal": signal == null ? null : signalValues.reverse[signal], "actions": actions == null ? null : List.from(actions.map((x) => x.toJson())), }; } class IndigoAction { IndigoAction({ this.clickTrackingParams, this.signalAction, }); final String clickTrackingParams; final SignalAction signalAction; factory IndigoAction.fromRawJson(String str) => IndigoAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory IndigoAction.fromJson(Map json) => IndigoAction( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], signalAction: json["signalAction"] == null ? null : SignalAction.fromJson(json["signalAction"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "signalAction": signalAction == null ? null : signalAction.toJson(), }; } class SignalAction { SignalAction({ this.signal, }); final String signal; factory SignalAction.fromRawJson(String str) => SignalAction.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory SignalAction.fromJson(Map json) => SignalAction( signal: json["signal"] == null ? null : json["signal"], ); Map toJson() => { "signal": signal == null ? null : signal, }; } class VisibilityButton { VisibilityButton({ this.buttonRenderer, }); final VisibilityButtonButtonRenderer buttonRenderer; factory VisibilityButton.fromRawJson(String str) => VisibilityButton.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VisibilityButton.fromJson(Map json) => VisibilityButton( buttonRenderer: json["buttonRenderer"] == null ? null : VisibilityButtonButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class VisibilityButtonButtonRenderer { VisibilityButtonButtonRenderer({ this.icon, this.accessibility, this.trackingParams, this.accessibilityData, this.command, }); final IconImage icon; final Accessibility accessibility; final String trackingParams; final AccessibilityData accessibilityData; final ButtonRendererCommand command; factory VisibilityButtonButtonRenderer.fromRawJson(String str) => VisibilityButtonButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory VisibilityButtonButtonRenderer.fromJson(Map json) => VisibilityButtonButtonRenderer( icon: json["icon"] == null ? null : IconImage.fromJson(json["icon"]), accessibility: json["accessibility"] == null ? null : Accessibility.fromJson(json["accessibility"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], accessibilityData: json["accessibilityData"] == null ? null : AccessibilityData.fromJson(json["accessibilityData"]), command: json["command"] == null ? null : ButtonRendererCommand.fromJson(json["command"]), ); Map toJson() => { "icon": icon == null ? null : icon.toJson(), "accessibility": accessibility == null ? null : accessibility.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "accessibilityData": accessibilityData == null ? null : accessibilityData.toJson(), "command": command == null ? null : command.toJson(), }; } class ButtonRendererCommand { ButtonRendererCommand({ this.clickTrackingParams, this.changeEngagementPanelVisibilityAction, }); final String clickTrackingParams; final ChangeEngagementPanelVisibilityAction changeEngagementPanelVisibilityAction; factory ButtonRendererCommand.fromRawJson(String str) => ButtonRendererCommand.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ButtonRendererCommand.fromJson(Map json) => ButtonRendererCommand( clickTrackingParams: json["clickTrackingParams"] == null ? null : json["clickTrackingParams"], changeEngagementPanelVisibilityAction: json["changeEngagementPanelVisibilityAction"] == null ? null : ChangeEngagementPanelVisibilityAction.fromJson( json["changeEngagementPanelVisibilityAction"]), ); Map toJson() => { "clickTrackingParams": clickTrackingParams == null ? null : clickTrackingParams, "changeEngagementPanelVisibilityAction": changeEngagementPanelVisibilityAction == null ? null : changeEngagementPanelVisibilityAction.toJson(), }; } class FrameworkUpdates { FrameworkUpdates(); factory FrameworkUpdates.fromRawJson(String str) => FrameworkUpdates.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory FrameworkUpdates.fromJson(Map json) => FrameworkUpdates(); Map toJson() => {}; } class PlayerOverlays { PlayerOverlays({ this.playerOverlayRenderer, }); final PlayerOverlayRenderer playerOverlayRenderer; factory PlayerOverlays.fromRawJson(String str) => PlayerOverlays.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PlayerOverlays.fromJson(Map json) => PlayerOverlays( playerOverlayRenderer: json["playerOverlayRenderer"] == null ? null : PlayerOverlayRenderer.fromJson(json["playerOverlayRenderer"]), ); Map toJson() => { "playerOverlayRenderer": playerOverlayRenderer == null ? null : playerOverlayRenderer.toJson(), }; } class PlayerOverlayRenderer { PlayerOverlayRenderer({ this.endScreen, }); final EndScreen endScreen; factory PlayerOverlayRenderer.fromRawJson(String str) => PlayerOverlayRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory PlayerOverlayRenderer.fromJson(Map json) => PlayerOverlayRenderer( endScreen: json["endScreen"] == null ? null : EndScreen.fromJson(json["endScreen"]), ); Map toJson() => { "endScreen": endScreen == null ? null : endScreen.toJson(), }; } class EndScreen { EndScreen({ this.watchNextEndScreenRenderer, }); final WatchNextEndScreenRenderer watchNextEndScreenRenderer; factory EndScreen.fromRawJson(String str) => EndScreen.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndScreen.fromJson(Map json) => EndScreen( watchNextEndScreenRenderer: json["watchNextEndScreenRenderer"] == null ? null : WatchNextEndScreenRenderer.fromJson( json["watchNextEndScreenRenderer"]), ); Map toJson() => { "watchNextEndScreenRenderer": watchNextEndScreenRenderer == null ? null : watchNextEndScreenRenderer.toJson(), }; } class WatchNextEndScreenRenderer { WatchNextEndScreenRenderer({ this.results, this.title, this.trackingParams, }); final List results; final TextClass title; final String trackingParams; factory WatchNextEndScreenRenderer.fromRawJson(String str) => WatchNextEndScreenRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory WatchNextEndScreenRenderer.fromJson(Map json) => WatchNextEndScreenRenderer( results: json["results"] == null ? null : List.from(json["results"] .map((x) => WatchNextEndScreenRendererResult.fromJson(x))), title: json["title"] == null ? null : TextClass.fromJson(json["title"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "results": results == null ? null : List.from(results.map((x) => x.toJson())), "title": title == null ? null : title.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class WatchNextEndScreenRendererResult { WatchNextEndScreenRendererResult({ this.endScreenVideoRenderer, this.endScreenPlaylistRenderer, }); final EndScreenVideoRenderer endScreenVideoRenderer; final EndScreenPlaylistRenderer endScreenPlaylistRenderer; factory WatchNextEndScreenRendererResult.fromRawJson(String str) => WatchNextEndScreenRendererResult.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory WatchNextEndScreenRendererResult.fromJson( Map json) => WatchNextEndScreenRendererResult( endScreenVideoRenderer: json["endScreenVideoRenderer"] == null ? null : EndScreenVideoRenderer.fromJson(json["endScreenVideoRenderer"]), endScreenPlaylistRenderer: json["endScreenPlaylistRenderer"] == null ? null : EndScreenPlaylistRenderer.fromJson( json["endScreenPlaylistRenderer"]), ); Map toJson() => { "endScreenVideoRenderer": endScreenVideoRenderer == null ? null : endScreenVideoRenderer.toJson(), "endScreenPlaylistRenderer": endScreenPlaylistRenderer == null ? null : endScreenPlaylistRenderer.toJson(), }; } class EndScreenPlaylistRenderer { EndScreenPlaylistRenderer({ this.playlistId, this.title, this.thumbnail, this.longBylineText, this.videoCountText, this.navigationEndpoint, this.trackingParams, }); final String playlistId; final DateText title; final ChannelThumbnailClass thumbnail; final DateText longBylineText; final TextClass videoCountText; final SecondaryNavigationEndpointClass navigationEndpoint; final String trackingParams; factory EndScreenPlaylistRenderer.fromRawJson(String str) => EndScreenPlaylistRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndScreenPlaylistRenderer.fromJson(Map json) => EndScreenPlaylistRenderer( playlistId: json["playlistId"] == null ? null : json["playlistId"], title: json["title"] == null ? null : DateText.fromJson(json["title"]), thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), longBylineText: json["longBylineText"] == null ? null : DateText.fromJson(json["longBylineText"]), videoCountText: json["videoCountText"] == null ? null : TextClass.fromJson(json["videoCountText"]), navigationEndpoint: json["navigationEndpoint"] == null ? null : SecondaryNavigationEndpointClass.fromJson( json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "playlistId": playlistId == null ? null : playlistId, "title": title == null ? null : title.toJson(), "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "longBylineText": longBylineText == null ? null : longBylineText.toJson(), "videoCountText": videoCountText == null ? null : videoCountText.toJson(), "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class EndScreenVideoRenderer { EndScreenVideoRenderer({ this.videoId, this.thumbnail, this.title, this.shortBylineText, this.lengthText, this.lengthInSeconds, this.navigationEndpoint, this.trackingParams, this.shortViewCountText, this.publishedTimeText, this.thumbnailOverlays, }); final String videoId; final ChannelThumbnailClass thumbnail; final LengthText title; final BylineText shortBylineText; final DateText lengthText; final int lengthInSeconds; final Endpoint navigationEndpoint; final String trackingParams; final DateText shortViewCountText; final DateText publishedTimeText; final List thumbnailOverlays; factory EndScreenVideoRenderer.fromRawJson(String str) => EndScreenVideoRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndScreenVideoRenderer.fromJson(Map json) => EndScreenVideoRenderer( videoId: json["videoId"] == null ? null : json["videoId"], thumbnail: json["thumbnail"] == null ? null : ChannelThumbnailClass.fromJson(json["thumbnail"]), title: json["title"] == null ? null : LengthText.fromJson(json["title"]), shortBylineText: json["shortBylineText"] == null ? null : BylineText.fromJson(json["shortBylineText"]), lengthText: json["lengthText"] == null ? null : DateText.fromJson(json["lengthText"]), lengthInSeconds: json["lengthInSeconds"] == null ? null : json["lengthInSeconds"], navigationEndpoint: json["navigationEndpoint"] == null ? null : Endpoint.fromJson(json["navigationEndpoint"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], shortViewCountText: json["shortViewCountText"] == null ? null : DateText.fromJson(json["shortViewCountText"]), publishedTimeText: json["publishedTimeText"] == null ? null : DateText.fromJson(json["publishedTimeText"]), thumbnailOverlays: json["thumbnailOverlays"] == null ? null : List.from( json["thumbnailOverlays"].map( (x) => EndScreenVideoRendererThumbnailOverlay.fromJson(x))), ); Map toJson() => { "videoId": videoId == null ? null : videoId, "thumbnail": thumbnail == null ? null : thumbnail.toJson(), "title": title == null ? null : title.toJson(), "shortBylineText": shortBylineText == null ? null : shortBylineText.toJson(), "lengthText": lengthText == null ? null : lengthText.toJson(), "lengthInSeconds": lengthInSeconds == null ? null : lengthInSeconds, "navigationEndpoint": navigationEndpoint == null ? null : navigationEndpoint.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "shortViewCountText": shortViewCountText == null ? null : shortViewCountText.toJson(), "publishedTimeText": publishedTimeText == null ? null : publishedTimeText.toJson(), "thumbnailOverlays": thumbnailOverlays == null ? null : List.from(thumbnailOverlays.map((x) => x.toJson())), }; } class EndScreenVideoRendererThumbnailOverlay { EndScreenVideoRendererThumbnailOverlay({ this.thumbnailOverlayTimeStatusRenderer, this.thumbnailOverlayNowPlayingRenderer, }); final ThumbnailOverlayTimeStatusRenderer thumbnailOverlayTimeStatusRenderer; final ThumbnailOverlayNowPlayingRenderer thumbnailOverlayNowPlayingRenderer; factory EndScreenVideoRendererThumbnailOverlay.fromRawJson(String str) => EndScreenVideoRendererThumbnailOverlay.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory EndScreenVideoRendererThumbnailOverlay.fromJson( Map json) => EndScreenVideoRendererThumbnailOverlay( thumbnailOverlayTimeStatusRenderer: json["thumbnailOverlayTimeStatusRenderer"] == null ? null : ThumbnailOverlayTimeStatusRenderer.fromJson( json["thumbnailOverlayTimeStatusRenderer"]), thumbnailOverlayNowPlayingRenderer: json["thumbnailOverlayNowPlayingRenderer"] == null ? null : ThumbnailOverlayNowPlayingRenderer.fromJson( json["thumbnailOverlayNowPlayingRenderer"]), ); Map toJson() => { "thumbnailOverlayTimeStatusRenderer": thumbnailOverlayTimeStatusRenderer == null ? null : thumbnailOverlayTimeStatusRenderer.toJson(), "thumbnailOverlayNowPlayingRenderer": thumbnailOverlayNowPlayingRenderer == null ? null : thumbnailOverlayNowPlayingRenderer.toJson(), }; } class ResponseContext { ResponseContext({ this.serviceTrackingParams, this.webResponseContextExtensionData, }); final List serviceTrackingParams; final WebResponseContextExtensionData webResponseContextExtensionData; factory ResponseContext.fromRawJson(String str) => ResponseContext.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ResponseContext.fromJson(Map json) => ResponseContext( serviceTrackingParams: json["serviceTrackingParams"] == null ? null : List.from(json["serviceTrackingParams"] .map((x) => ServiceTrackingParam.fromJson(x))), webResponseContextExtensionData: json["webResponseContextExtensionData"] == null ? null : WebResponseContextExtensionData.fromJson( json["webResponseContextExtensionData"]), ); Map toJson() => { "serviceTrackingParams": serviceTrackingParams == null ? null : List.from(serviceTrackingParams.map((x) => x.toJson())), "webResponseContextExtensionData": webResponseContextExtensionData == null ? null : webResponseContextExtensionData.toJson(), }; } class ServiceTrackingParam { ServiceTrackingParam({ this.service, this.params, }); final String service; final List params; factory ServiceTrackingParam.fromRawJson(String str) => ServiceTrackingParam.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory ServiceTrackingParam.fromJson(Map json) => ServiceTrackingParam( service: json["service"] == null ? null : json["service"], params: json["params"] == null ? null : List.from(json["params"].map((x) => Param.fromJson(x))), ); Map toJson() => { "service": service == null ? null : service, "params": params == null ? null : List.from(params.map((x) => x.toJson())), }; } class Param { Param({ this.key, this.value, }); final String key; final String value; factory Param.fromRawJson(String str) => Param.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Param.fromJson(Map json) => Param( key: json["key"] == null ? null : json["key"], value: json["value"] == null ? null : json["value"], ); Map toJson() => { "key": key == null ? null : key, "value": value == null ? null : value, }; } class WebResponseContextExtensionData { WebResponseContextExtensionData({ this.ytConfigData, this.hasDecorated, }); final YtConfigData ytConfigData; final bool hasDecorated; factory WebResponseContextExtensionData.fromRawJson(String str) => WebResponseContextExtensionData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory WebResponseContextExtensionData.fromJson(Map json) => WebResponseContextExtensionData( ytConfigData: json["ytConfigData"] == null ? null : YtConfigData.fromJson(json["ytConfigData"]), hasDecorated: json["hasDecorated"] == null ? null : json["hasDecorated"], ); Map toJson() => { "ytConfigData": ytConfigData == null ? null : ytConfigData.toJson(), "hasDecorated": hasDecorated == null ? null : hasDecorated, }; } class YtConfigData { YtConfigData({ this.csn, this.visitorData, this.rootVisualElementType, }); final String csn; final String visitorData; final int rootVisualElementType; factory YtConfigData.fromRawJson(String str) => YtConfigData.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory YtConfigData.fromJson(Map json) => YtConfigData( csn: json["csn"] == null ? null : json["csn"], visitorData: json["visitorData"] == null ? null : json["visitorData"], rootVisualElementType: json["rootVisualElementType"] == null ? null : json["rootVisualElementType"], ); Map toJson() => { "csn": csn == null ? null : csn, "visitorData": visitorData == null ? null : visitorData, "rootVisualElementType": rootVisualElementType == null ? null : rootVisualElementType, }; } class Topbar { Topbar({ this.desktopTopbarRenderer, }); final DesktopTopbarRenderer desktopTopbarRenderer; factory Topbar.fromRawJson(String str) => Topbar.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory Topbar.fromJson(Map json) => Topbar( desktopTopbarRenderer: json["desktopTopbarRenderer"] == null ? null : DesktopTopbarRenderer.fromJson(json["desktopTopbarRenderer"]), ); Map toJson() => { "desktopTopbarRenderer": desktopTopbarRenderer == null ? null : desktopTopbarRenderer.toJson(), }; } class DesktopTopbarRenderer { DesktopTopbarRenderer({ this.logo, this.searchbox, this.trackingParams, this.countryCode, this.topbarButtons, this.hotkeyDialog, this.backButton, this.forwardButton, this.a11YSkipNavigationButton, }); final Logo logo; final Searchbox searchbox; final String trackingParams; final String countryCode; final List topbarButtons; final HotkeyDialog hotkeyDialog; final BackButtonClass backButton; final BackButtonClass forwardButton; final A11YSkipNavigationButtonClass a11YSkipNavigationButton; factory DesktopTopbarRenderer.fromRawJson(String str) => DesktopTopbarRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory DesktopTopbarRenderer.fromJson(Map json) => DesktopTopbarRenderer( logo: json["logo"] == null ? null : Logo.fromJson(json["logo"]), searchbox: json["searchbox"] == null ? null : Searchbox.fromJson(json["searchbox"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], countryCode: json["countryCode"] == null ? null : json["countryCode"], topbarButtons: json["topbarButtons"] == null ? null : List.from( json["topbarButtons"].map((x) => TopbarButton.fromJson(x))), hotkeyDialog: json["hotkeyDialog"] == null ? null : HotkeyDialog.fromJson(json["hotkeyDialog"]), backButton: json["backButton"] == null ? null : BackButtonClass.fromJson(json["backButton"]), forwardButton: json["forwardButton"] == null ? null : BackButtonClass.fromJson(json["forwardButton"]), a11YSkipNavigationButton: json["a11ySkipNavigationButton"] == null ? null : A11YSkipNavigationButtonClass.fromJson( json["a11ySkipNavigationButton"]), ); Map toJson() => { "logo": logo == null ? null : logo.toJson(), "searchbox": searchbox == null ? null : searchbox.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "countryCode": countryCode == null ? null : countryCode, "topbarButtons": topbarButtons == null ? null : List.from(topbarButtons.map((x) => x.toJson())), "hotkeyDialog": hotkeyDialog == null ? null : hotkeyDialog.toJson(), "backButton": backButton == null ? null : backButton.toJson(), "forwardButton": forwardButton == null ? null : forwardButton.toJson(), "a11ySkipNavigationButton": a11YSkipNavigationButton == null ? null : a11YSkipNavigationButton.toJson(), }; } class A11YSkipNavigationButtonClass { A11YSkipNavigationButtonClass({ this.buttonRenderer, }); final A11YSkipNavigationButtonButtonRenderer buttonRenderer; factory A11YSkipNavigationButtonClass.fromRawJson(String str) => A11YSkipNavigationButtonClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory A11YSkipNavigationButtonClass.fromJson(Map json) => A11YSkipNavigationButtonClass( buttonRenderer: json["buttonRenderer"] == null ? null : A11YSkipNavigationButtonButtonRenderer.fromJson( json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class A11YSkipNavigationButtonButtonRenderer { A11YSkipNavigationButtonButtonRenderer({ this.style, this.size, this.isDisabled, this.text, this.trackingParams, this.command, }); final String style; final String size; final bool isDisabled; final TextClass text; final String trackingParams; final OnResponseReceivedEndpoint command; factory A11YSkipNavigationButtonButtonRenderer.fromRawJson(String str) => A11YSkipNavigationButtonButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory A11YSkipNavigationButtonButtonRenderer.fromJson( Map json) => A11YSkipNavigationButtonButtonRenderer( style: json["style"] == null ? null : json["style"], size: json["size"] == null ? null : json["size"], isDisabled: json["isDisabled"] == null ? null : json["isDisabled"], text: json["text"] == null ? null : TextClass.fromJson(json["text"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], command: json["command"] == null ? null : OnResponseReceivedEndpoint.fromJson(json["command"]), ); Map toJson() => { "style": style == null ? null : style, "size": size == null ? null : size, "isDisabled": isDisabled == null ? null : isDisabled, "text": text == null ? null : text.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, "command": command == null ? null : command.toJson(), }; } class BackButtonClass { BackButtonClass({ this.buttonRenderer, }); final BackButtonButtonRenderer buttonRenderer; factory BackButtonClass.fromRawJson(String str) => BackButtonClass.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory BackButtonClass.fromJson(Map json) => BackButtonClass( buttonRenderer: json["buttonRenderer"] == null ? null : BackButtonButtonRenderer.fromJson(json["buttonRenderer"]), ); Map toJson() => { "buttonRenderer": buttonRenderer == null ? null : buttonRenderer.toJson(), }; } class BackButtonButtonRenderer { BackButtonButtonRenderer({ this.trackingParams, this.command, }); final String trackingParams; final OnResponseReceivedEndpoint command; factory BackButtonButtonRenderer.fromRawJson(String str) => BackButtonButtonRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory BackButtonButtonRenderer.fromJson(Map json) => BackButtonButtonRenderer( trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], command: json["command"] == null ? null : OnResponseReceivedEndpoint.fromJson(json["command"]), ); Map toJson() => { "trackingParams": trackingParams == null ? null : trackingParams, "command": command == null ? null : command.toJson(), }; } class HotkeyDialog { HotkeyDialog({ this.hotkeyDialogRenderer, }); final HotkeyDialogRenderer hotkeyDialogRenderer; factory HotkeyDialog.fromRawJson(String str) => HotkeyDialog.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory HotkeyDialog.fromJson(Map json) => HotkeyDialog( hotkeyDialogRenderer: json["hotkeyDialogRenderer"] == null ? null : HotkeyDialogRenderer.fromJson(json["hotkeyDialogRenderer"]), ); Map toJson() => { "hotkeyDialogRenderer": hotkeyDialogRenderer == null ? null : hotkeyDialogRenderer.toJson(), }; } class HotkeyDialogRenderer { HotkeyDialogRenderer({ this.title, this.sections, this.dismissButton, this.trackingParams, }); final TextClass title; final List sections; final A11YSkipNavigationButtonClass dismissButton; final String trackingParams; factory HotkeyDialogRenderer.fromRawJson(String str) => HotkeyDialogRenderer.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory HotkeyDialogRenderer.fromJson(Map json) => HotkeyDialogRenderer( title: json["title"] == null ? null : TextClass.fromJson(json["title"]), sections: json["sections"] == null ? null : List.from(json["sections"] .map((x) => HotkeyDialogRendererSection.fromJson(x))), dismissButton: json["dismissButton"] == null ? null : A11YSkipNavigationButtonClass.fromJson(json["dismissButton"]), trackingParams: json["trackingParams"] == null ? null : json["trackingParams"], ); Map toJson() => { "title": title == null ? null : title.toJson(), "sections": sections == null ? null : List.from(sections.map((x) => x.toJson())), "dismissButton": dismissButton == null ? null : dismissButton.toJson(), "trackingParams": trackingParams == null ? null : trackingParams, }; } class HotkeyDialogRendererSection { HotkeyDialogRendererSection({ this.hotkeyDialogSectionRenderer, }); final HotkeyDialogSectionRenderer hotkeyDialogSectionRenderer; factory HotkeyDialogRendererSection.fromRawJson(String str) => HotkeyDialogRendererSection.fromJson(json.decode(str)); String toRawJson() => json.encode(toJson()); factory HotkeyDialogRendererSection.fromJson(Map json) => HotkeyDialogRendererSection( hotkeyDialogSectionRenderer: json["hotkeyDialogSectionRenderer"] == null ? null : HotkeyDialogSectionRenderer.fromJson( json["hotkeyDialogSectionRenderer"]), ); Map toJson() => { "hotkeyDialogSectionRenderer": hotkeyDialogSectionRenderer == null ? null : hotkeyDialogSectionRenderer.toJson(), }; } class HotkeyDialogSectionRenderer { HotkeyDialogSectionRenderer({ this.title, this.options, }); final TextClass title; final List