import { checkbox, collapsibleList, explanation, footerButtons, multiPagePopup, popup, popupWithBottomButtons, sep, settingsCategory, switcher, socialLink, socialLinks, urgentNotice, keyboardShortcuts, webLoc, sponsoredList, betaTag } from "./elements.js"; import { services as s, authorInfo, version, repo, donations, supportedAudio, links } from "../config.js"; import { getCommitInfo } from "../sub/currentCommit.js"; import loc from "../../localization/manager.js"; import emoji from "../emoji.js"; import changelogManager from "../changelog/changelogManager.js"; let com = getCommitInfo(); let enabledServices = Object.keys(s).filter(p => s[p].enabled).sort().map((p) => { return `
• ${s[p].alias ? s[p].alias : p}` }).join('').substring(4) let donate = `` let donateLinks = `` let audioFormats = supportedAudio.map((p) => { return { "action": p } }) audioFormats.unshift({ "action": "best" }) for (let i in donations["links"]) { donateLinks += `REPLACEME ${i}` } let extr = '' for (let i in donations["crypto"]) { donate += `
${i} (REPLACEME)
${donations["crypto"][i]}
` extr = ' top-margin' } export default function(obj) { const t = (str, replace) => { return loc(obj.lang, str, replace) }; let ua = obj.useragent.toLowerCase(); let isIOS = ua.match("iphone os"); let isMobile = ua.match("android") || ua.match("iphone os"); let platform = isMobile ? "m" : "d"; if (isMobile && isIOS) platform = "i"; audioFormats[0]["text"] = t('SettingsAudioFormatBest'); try { return ` ${t("AppTitleCobalt")} ${multiPagePopup({ name: "about", closeAria: t('AccessibilityGoBack'), tabs: [{ name: "about", title: `${emoji("🐲")} ${t('AboutTab')}`, content: popup({ name: "about", header: { aboveTitle: { text: t('MadeWithLove'), url: authorInfo.link }, closeAria: t('AccessibilityGoBack'), title: `${emoji("🔮", 30)} ${t('TitlePopupAbout')}` }, body: [{ text: t('AboutSummary') }, { text: collapsibleList([{ name: "services", title: `${emoji("🔗")} ${t("CollapseServices")}`, body: `${enabledServices}` + `
${t("SupportNotAffiliated")}` + `${obj.lang === "ru" ? `
${t("SupportMetaNoticeRU")}` : ''}` + `
` + `${t("ServicesNote")}` }, { name: "keyboard", title: `${emoji("⌨")} ${t("CollapseKeyboard")}`, body: `${t("KeyboardShortcutsIntro")} ${keyboardShortcuts([{ items: [{ combo: "Shift+D", name: t("PasteFromClipboard") }, { combo: "Shift+K", name: t("ModeToggleAuto") }, { combo: "Shift+L", name: t("ModeToggleAudio") }] }, { items: [{ combo: "⌘/Ctrl+V", name: t("KeyboardShortcutQuickPaste") }, { combo: "Esc", name: t("KeyboardShortcutClear") }, { combo: "Esc", name: t("KeyboardShortcutClosePopup") }] }, { items: [{ combo: "Shift+B", name: t("AboutTab") }, { combo: "Shift+N", name: t("ChangelogTab") }, { combo: "Shift+M", name: t("TitlePopupSettings") }] }])}` }, { name: "support", title: `${emoji("❤️‍🩹")} ${t("CollapseSupport")}`, body: `${t("SupportSelfTroubleshooting")}` + `${socialLink(emoji("📢"), t("StatusPage"), links.statusPage)}` + `${socialLink(emoji("🔧"), t("TroubleshootingGuide"), links.troubleshootingGuide)}` + `
` + `${t("FollowSupport")}` + `${socialLinks(obj.lang)}` + `
` + `${t("SourceCode")}` + `${socialLink(emoji("🐙"), repo.replace("https://github.com/", ''), repo)}` }, { name: "privacy", title: `${emoji("🔒")} ${t("CollapsePrivacy")}`, body: t("PrivacyPolicy") }, { name: "legal", title: `${emoji("📑")} ${t("CollapseLegal")}`, body: t("FairUse") }]) }, ...(process.env.showSponsors ? [{ text: t("SponsoredBy"), classes: ["sponsored-by-text"], nopadding: true }, { text: sponsoredList(), raw: true }] : [] )] }) }, { name: "changelog", title: `${emoji("🎉")} ${t('ChangelogTab')}`, content: popup({ name: "changelog", header: { closeAria: t('AccessibilityGoBack'), title: `${emoji("🪄", 30)} ${t('TitlePopupChangelog')}` }, body: [{ text: `
${t('ChangelogLastMajor')}
`, raw: true }, { text: changelogManager("banner") ? `
`+ `
`: '', raw: true }, { text: changelogManager("version"), classes: ["changelog-tags"], nopadding: true }, { text: changelogManager("title"), classes: ["changelog-subtitle"], nopadding: true }, { text: changelogManager("content") }, { text: sep(), raw: true },{ text: `#${obj.hash}`, classes: ["changelog-tags"], nopadding: true }, { text: com[0], classes: ["changelog-subtitle"], nopadding: true }, { text: com[1] }, { text: `
${t('ChangelogOlder')}
`, raw: true }, { text: `
`, raw: true }] }) }, { name: "donate", title: `${emoji("💖")} ${t('DonationsTab')}`, content: popup({ name: "donate", header: { closeAria: t('AccessibilityGoBack'), title: emoji("💸", 30) + t('TitlePopupDonate') }, body: [{ text: `
${t('DonateSub')}
`, raw: true }, { text: `
`+ `
`, raw: true }, { text: t('DonateExplanation') }, { text: donateLinks.replace(/REPLACEME/g, t('DonateVia')), raw: true }, { text: t('DonateLinksDescription'), classes: ["explanation"] }, { text: sep(), raw: true }, { text: donate.replace(/REPLACEME/g, t('ClickToCopy')), classes: ["desc-padding"] }, { text: sep(), raw: true }, { text: t('DonateHireMe', authorInfo.link), classes: ["desc-padding"] }] }) }], })} ${multiPagePopup({ name: "settings", closeAria: t('AccessibilityGoBack'), header: { aboveTitle: { text: `v.${version}-${obj.hash}${platform} (${obj.branch})`, url: `${repo}/commit/${obj.hash}` }, title: `${emoji("⚙️", 30)} ${t('TitlePopupSettings')}` }, tabs: [{ name: "video", title: `${emoji("🎬")} ${t('SettingsVideoTab')}`, content: settingsCategory({ name: "downloads", title: t('SettingsQualitySubtitle'), body: switcher({ name: "vQuality", explanation: t('SettingsQualityDescription'), items: [{ action: "max", text: "8k+" }, { action: "2160", text: "4k" }, { action: "1440", text: "1440p" }, { action: "1080", text: "1080p" }, { action: "720", text: "720p" }, { action: "480", text: "480p" }, { action: "360", text: "360p" }] }) }) + settingsCategory({ name: "tiktok", title: "tiktok", body: checkbox([{ action: "disableTikTokWatermark", name: t("SettingsRemoveWatermark"), padding: "no-margin" }]) }) + settingsCategory({ name: "codec", title: t('SettingsCodecSubtitle'), body: switcher({ name: "vCodec", explanation: t('SettingsCodecDescription'), items: [{ action: "h264", text: "h264 (mp4)" }, { action: "av1", text: "av1 (mp4)" }, { action: "vp9", text: "vp9 (webm)" }] }) }) + settingsCategory({ name: "vimeo", title: t('SettingsVimeoPrefer'), body: switcher({ name: "vimeoDash", explanation: t('SettingsVimeoPreferDescription'), items: [{ action: "false", text: "progressive" }, { action: "true", text: "dash" }] }) }) }, { name: "audio", title: `${emoji("🎶")} ${t('SettingsAudioTab')}`, content: settingsCategory({ name: "general", title: t('SettingsFormatSubtitle'), body: switcher({ name: "aFormat", explanation: t('SettingsAudioFormatDescription'), items: audioFormats }) + sep(0) + checkbox([{ action: "muteAudio", name: t("SettingsVideoMute"), padding: "no-margin" }]) + explanation(t('SettingsVideoMuteExplanation')) }) + settingsCategory({ name: "dub", title: t("SettingsAudioDub"), body: switcher({ name: "dubLang", explanation: t('SettingsAudioDubDescription'), items: [{ action: "original", text: t('SettingsDubDefault') }, { action: "auto", text: t('SettingsDubAuto') }] }) }) + settingsCategory({ name: "tiktok", title: "tiktok", body: checkbox([{ action: "fullTikTokAudio", name: t("SettingsAudioFullTikTok"), padding: "no-margin" }]) + explanation(t('SettingsAudioFullTikTokDescription')) }) }, { name: "other", title: `${emoji("🪅")} ${t('SettingsOtherTab')}`, content: settingsCategory({ name: "appearance", title: t('SettingsAppearanceSubtitle'), body: switcher({ name: "theme", items: [{ action: "auto", text: t('SettingsThemeAuto') }, { action: "dark", text: t('SettingsThemeDark') }, { action: "light", text: t('SettingsThemeLight') }] }) }) + settingsCategory({ name: "filename", title: t('FilenameTitle'), body: switcher({ name: "filenamePattern", items: [{ action: "classic", text: t('FilenamePatternClassic') }, { action: "basic", text: t('FilenamePatternBasic') }, { action: "pretty", text: t('FilenamePatternPretty') }, { action: "nerdy", text: t('FilenamePatternNerdy') }] }) + `
${emoji('🎞️', 32, 1, 1)}
${t('Preview')}
${emoji('🎧', 32, 1, 1)}
${t('Preview')}
` + explanation(t('FilenameDescription')) }) + settingsCategory({ name: "accessibility", title: t('Accessibility'), body: checkbox([{ action: "alwaysVisibleButton", name: t("SettingsKeepDownloadButton"), aria: t("AccessibilityKeepDownloadButton") }, { action: "reduceTransparency", name: t("SettingsReduceTransparency") }, { action: "disableAnimations", name: t("SettingsDisableAnimations"), padding: "no-margin" }]) }) + settingsCategory({ name: "miscellaneous", title: t('Miscellaneous'), body: checkbox([{ action: "downloadPopup", name: t("SettingsEnableDownloadPopup"), aria: t("AccessibilityEnableDownloadPopup") }, { action: "disableMetadata", name: t("SettingsDisableMetadata") }, { action: "disableChangelog", name: t("SettingsDisableNotifications"), padding: "no-margin" }]) }) }] })} ${popupWithBottomButtons({ name: "picker", closeAria: t('AccessibilityGoBack'), header: { title: `${emoji("🧮", 30)}
`, explanation: `
`, }, buttons: [`${t('ImagePickerDownloadAudio')}`], content: '
' })} ` } catch (err) { return `${t('ErrorPageRenderFail', obj.hash)}`; } }