2020-11-17 05:15:35 +00:00
|
|
|
<template>
|
2022-01-12 11:27:08 +00:00
|
|
|
<div class="flex">
|
|
|
|
<button @click="$router.go(-1) || $router.push('/')">
|
2022-01-30 23:48:27 +00:00
|
|
|
<font-awesome-icon icon="chevron-left" /><span class="ml-1.5" v-t="'actions.back'" />
|
2021-08-22 10:27:09 +00:00
|
|
|
</button>
|
2021-07-20 14:45:17 +00:00
|
|
|
</div>
|
2022-01-12 11:27:08 +00:00
|
|
|
<h1 v-t="'titles.preferences'" class="font-bold text-center" />
|
2020-11-22 04:34:27 +00:00
|
|
|
<hr />
|
2022-08-11 17:12:08 +00:00
|
|
|
<label for="ddlTheme" class="pref">
|
|
|
|
<strong v-t="'actions.theme'" />
|
|
|
|
<select id="ddlTheme" v-model="selectedTheme" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option v-t="'actions.auto'" value="auto" />
|
|
|
|
<option v-t="'actions.dark'" value="dark" />
|
2022-08-11 17:23:18 +00:00
|
|
|
<option v-t="'actions.light'" value="light" />
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="ddlLanguageSelection">
|
|
|
|
<strong v-t="'actions.language_selection'" />
|
|
|
|
<select id="ddlLanguageSelection" v-model="selectedLanguage" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option v-for="language in languages" :key="language.code" :value="language.code" v-text="language.name" />
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="ddlCountrySelection">
|
|
|
|
<strong v-t="'actions.country_selection'" />
|
2022-08-13 08:35:54 +00:00
|
|
|
<select id="ddlCountrySelection" v-model="countrySelected" class="select w-50" @change="onChange($event)">
|
2022-08-11 17:23:18 +00:00
|
|
|
<option v-for="country in countryMap" :key="country.code" :value="country.code" v-text="country.name" />
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="ddlDefaultHomepage">
|
|
|
|
<strong v-t="'actions.default_homepage'" />
|
|
|
|
<select id="ddlDefaultHomepage" v-model="defaultHomepage" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option v-t="'titles.trending'" value="trending" />
|
|
|
|
<option v-t="'titles.feed'" value="feed" />
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
|
2022-08-14 18:31:09 +00:00
|
|
|
<h2 class="text-center" v-t="'titles.player'" />
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="chkAutoPlayVideo">
|
|
|
|
<strong v-t="'actions.autoplay_video'" />
|
|
|
|
<input
|
|
|
|
id="chkAutoPlayVideo"
|
|
|
|
v-model="autoPlayVideo"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2023-05-19 15:38:11 +00:00
|
|
|
<label class="pref" for="chkAutoDisplayCaptions">
|
|
|
|
<strong v-t="'actions.auto_display_captions'" />
|
|
|
|
<input
|
|
|
|
id="chkAutoDisplayCaptions"
|
|
|
|
v-model="autoDisplayCaptions"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2023-03-02 21:56:06 +00:00
|
|
|
<label class="pref" for="chkAutoPlayNextCountdown">
|
|
|
|
<strong v-t="'actions.autoplay_next_countdown'" />
|
|
|
|
<input
|
|
|
|
id="chkAutoPlayNextCountdown"
|
|
|
|
v-model="autoPlayNextCountdown"
|
|
|
|
class="input w-24"
|
|
|
|
type="number"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="chkAudioOnly">
|
|
|
|
<strong v-t="'actions.audio_only'" />
|
|
|
|
<input id="chkAudioOnly" v-model="listen" class="checkbox" type="checkbox" @change="onChange($event)" />
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="ddlDefaultQuality">
|
|
|
|
<strong v-t="'actions.default_quality'" />
|
|
|
|
<select id="ddlDefaultQuality" v-model="defaultQuality" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option v-t="'actions.auto'" value="0" />
|
|
|
|
<option v-for="resolution in resolutions" :key="resolution" :value="resolution" v-text="`${resolution}p`" />
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="txtBufferingGoal">
|
|
|
|
<strong v-t="'actions.buffering_goal'" />
|
|
|
|
<input
|
|
|
|
id="txtBufferingGoal"
|
|
|
|
v-model="bufferingGoal"
|
2022-08-13 08:35:54 +00:00
|
|
|
class="input w-24"
|
2022-08-11 17:12:08 +00:00
|
|
|
type="text"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-10-23 23:19:57 +00:00
|
|
|
<label class="pref" for="chkMinimizeComments">
|
|
|
|
<strong v-t="'actions.minimize_comments_default'" />
|
2022-08-11 17:12:08 +00:00
|
|
|
<input
|
2022-10-23 23:19:57 +00:00
|
|
|
id="chkMinimizeComments"
|
|
|
|
v-model="minimizeComments"
|
2022-08-11 17:12:08 +00:00
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkMinimizeDescription">
|
|
|
|
<strong v-t="'actions.minimize_description_default'" />
|
|
|
|
<input
|
|
|
|
id="chkMinimizeDescription"
|
|
|
|
v-model="minimizeDescription"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkMinimizeRecommendations">
|
|
|
|
<strong v-t="'actions.minimize_recommendations_default'" />
|
|
|
|
<input
|
|
|
|
id="chkMinimizeRecommendations"
|
|
|
|
v-model="minimizeRecommendations"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-11-09 17:05:11 +00:00
|
|
|
<label class="pref" for="chkMinimizeChapters">
|
|
|
|
<strong v-t="'actions.minimize_chapters_default'" />
|
|
|
|
<input
|
|
|
|
id="chkMinimizeChapters"
|
|
|
|
v-model="minimizeChapters"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2023-06-13 12:06:53 +00:00
|
|
|
<!-- chapters layout on mobile -->
|
2023-06-13 17:45:43 +00:00
|
|
|
<label class="lg:invisible pref" for="chkMinimizeChapters">
|
2023-06-13 12:06:53 +00:00
|
|
|
<strong v-t="'actions.chapters_layout_mobile'" />
|
|
|
|
|
|
|
|
<select id="ddlDefaultHomepage" v-model="mobileChapterLayout" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option v-t="'video.chapters_horizontal'" value="Horizontal" />
|
|
|
|
<option v-t="'video.chapters_vertical'" value="Vertical" />
|
|
|
|
</select>
|
|
|
|
</label>
|
2022-11-02 16:10:27 +00:00
|
|
|
<label class="pref" for="chkShowWatchOnYouTube">
|
|
|
|
<strong v-t="'actions.show_watch_on_youtube'" />
|
|
|
|
<input
|
|
|
|
id="chkShowWatchOnYouTube"
|
|
|
|
v-model="showWatchOnYouTube"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2023-06-13 08:24:29 +00:00
|
|
|
<label class="pref" for="chkShowSearchSuggestions">
|
|
|
|
<strong v-t="'actions.show_search_suggestions'" />
|
|
|
|
<input
|
|
|
|
id="chkShowSearchSuggestions"
|
|
|
|
v-model="searchSuggestions"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-09-11 18:01:58 +00:00
|
|
|
<label class="pref" for="chkStoreSearchHistory">
|
|
|
|
<strong v-t="'actions.store_search_history'" />
|
|
|
|
<input
|
|
|
|
id="chkStoreSearchHistory"
|
|
|
|
v-model="searchHistory"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="chkStoreWatchHistory">
|
|
|
|
<strong v-t="'actions.store_watch_history'" />
|
|
|
|
<input
|
|
|
|
id="chkStoreWatchHistory"
|
|
|
|
v-model="watchHistory"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-09-10 17:08:50 +00:00
|
|
|
<label v-if="watchHistory" class="pref" for="chkHideWatched">
|
|
|
|
<strong v-t="'actions.hide_watched'" />
|
|
|
|
<input id="chkHideWatched" v-model="hideWatched" class="checkbox" type="checkbox" @change="onChange($event)" />
|
|
|
|
</label>
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="ddlEnabledCodecs">
|
|
|
|
<strong v-t="'actions.enabled_codecs'" />
|
|
|
|
<select
|
|
|
|
id="ddlEnabledCodecs"
|
|
|
|
v-model="enabledCodecs"
|
|
|
|
class="select w-auto h-auto"
|
|
|
|
multiple
|
|
|
|
@change="onChange($event)"
|
|
|
|
>
|
|
|
|
<option value="av1">AV1</option>
|
|
|
|
<option value="vp9">VP9</option>
|
|
|
|
<option value="avc">AVC (h.264)</option>
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkDisableLBRY">
|
|
|
|
<strong v-t="'actions.disable_lbry'" />
|
|
|
|
<input id="chkDisableLBRY" v-model="disableLBRY" class="checkbox" type="checkbox" @change="onChange($event)" />
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkEnableLBRYProxy">
|
|
|
|
<strong v-t="'actions.enable_lbry_proxy'" />
|
|
|
|
<input
|
|
|
|
id="chkEnableLBRYProxy"
|
|
|
|
v-model="proxyLBRY"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
|
|
|
|
|
|
|
<h2 class="text-center">SponsorBlock</h2>
|
|
|
|
<p class="text-center">
|
|
|
|
<span v-t="'actions.uses_api_from'" /><a class="link" href="https://sponsor.ajay.app/">sponsor.ajay.app</a>
|
|
|
|
</p>
|
|
|
|
<label class="pref" for="chkEnableSponsorblock">
|
|
|
|
<strong v-t="'actions.enable_sponsorblock'" />
|
|
|
|
<input
|
|
|
|
id="chkEnableSponsorblock"
|
|
|
|
v-model="sponsorBlock"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-11-17 16:24:56 +00:00
|
|
|
<div v-if="sponsorBlock">
|
2023-02-06 17:24:12 +00:00
|
|
|
<label v-for="[name, item] in skipOptions" class="pref" :for="'ddlSkip_' + name" :key="name">
|
|
|
|
<strong v-t="item.label" />
|
|
|
|
<select :id="'ddlSkip_' + name" v-model="item.value" class="select w-auto" @change="onChange($event)">
|
2023-02-01 15:37:43 +00:00
|
|
|
<option v-t="'actions.no'" value="no" />
|
|
|
|
<option v-t="'actions.skip_button_only'" value="button" />
|
|
|
|
<option v-t="'actions.skip_automatically'" value="auto" />
|
|
|
|
</select>
|
2022-11-17 16:24:56 +00:00
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkShowMarkers">
|
|
|
|
<strong v-t="'actions.show_markers'" />
|
|
|
|
<input
|
|
|
|
id="chkShowMarkers"
|
|
|
|
v-model="showMarkers"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2023-02-01 21:30:02 +00:00
|
|
|
<label class="pref" for="txtMinSegmentLength">
|
|
|
|
<strong v-t="'actions.min_segment_length'" />
|
|
|
|
<input
|
|
|
|
id="txtMinSegmentLength"
|
|
|
|
v-model="minSegmentLength"
|
|
|
|
class="input w-24"
|
|
|
|
type="text"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
2022-11-17 16:24:56 +00:00
|
|
|
</div>
|
2022-08-14 18:31:09 +00:00
|
|
|
<h2 class="text-center" v-t="'titles.instance'" />
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="ddlInstanceSelection">
|
|
|
|
<strong v-text="`${$t('actions.instance_selection')}:`" />
|
|
|
|
<select id="ddlInstanceSelection" v-model="selectedInstance" class="select w-auto" @change="onChange($event)">
|
|
|
|
<option
|
|
|
|
v-for="instance in instances"
|
|
|
|
:key="instance.name"
|
|
|
|
:value="instance.api_url"
|
|
|
|
v-text="instance.name"
|
|
|
|
/>
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
<label class="pref" for="chkAuthInstance">
|
|
|
|
<strong v-text="`${$t('actions.different_auth_instance')}:`" />
|
|
|
|
<input
|
|
|
|
id="chkAuthInstance"
|
|
|
|
v-model="authInstance"
|
|
|
|
class="checkbox"
|
|
|
|
type="checkbox"
|
|
|
|
@change="onChange($event)"
|
|
|
|
/>
|
|
|
|
</label>
|
|
|
|
<template v-if="authInstance">
|
|
|
|
<label class="pref" for="ddlAuthInstanceSelection">
|
|
|
|
<strong v-text="`${$t('actions.instance_auth_selection')}:`" />
|
|
|
|
<select
|
|
|
|
id="ddlAuthInstanceSelection"
|
|
|
|
v-model="selectedAuthInstance"
|
|
|
|
class="select w-auto"
|
|
|
|
@change="onChange($event)"
|
|
|
|
>
|
|
|
|
<option
|
|
|
|
v-for="instance in instances"
|
|
|
|
:key="instance.name"
|
|
|
|
:value="instance.api_url"
|
|
|
|
v-text="instance.name"
|
|
|
|
/>
|
|
|
|
</select>
|
|
|
|
</label>
|
|
|
|
</template>
|
2021-09-02 13:46:27 +00:00
|
|
|
<br />
|
2022-08-11 17:12:08 +00:00
|
|
|
|
|
|
|
<!-- options that are visible only when logged in -->
|
|
|
|
<div v-if="this.authenticated">
|
2022-08-14 18:31:09 +00:00
|
|
|
<h2 class="text-center" v-t="'titles.account'"></h2>
|
2022-08-11 17:12:08 +00:00
|
|
|
<label class="pref" for="txtDeleteAccountPassword">
|
|
|
|
<strong v-t="'actions.delete_account'" />
|
|
|
|
<div class="flex items-center">
|
|
|
|
<input
|
|
|
|
id="txtDeleteAccountPassword"
|
|
|
|
ref="txtDeleteAccountPassword"
|
|
|
|
v-model="password"
|
|
|
|
v-on:keyup.enter="deleteAccount"
|
|
|
|
:placeholder="$t('login.password')"
|
|
|
|
:aria-label="$t('login.password')"
|
2022-08-11 17:23:18 +00:00
|
|
|
class="input w-auto mr-2"
|
2022-08-11 17:12:08 +00:00
|
|
|
type="password"
|
|
|
|
/>
|
|
|
|
<a class="btn w-auto" @click="deleteAccount" v-t="'actions.delete_account'" />
|
|
|
|
</div>
|
|
|
|
</label>
|
|
|
|
<div class="pref">
|
|
|
|
<a class="btn w-auto" @click="logout" v-t="'actions.logout'" />
|
|
|
|
<a
|
|
|
|
class="btn w-auto"
|
|
|
|
style="margin-left: 0.5em"
|
|
|
|
@click="invalidateSession"
|
|
|
|
v-t="'actions.invalidate_session'"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<br />
|
|
|
|
</div>
|
2022-05-28 03:45:13 +00:00
|
|
|
<h2 id="instancesList" v-t="'actions.instances_list'" />
|
2022-01-12 11:27:08 +00:00
|
|
|
<table class="table">
|
2020-11-17 05:15:35 +00:00
|
|
|
<thead>
|
|
|
|
<tr>
|
2022-01-30 23:48:27 +00:00
|
|
|
<th v-t="'preferences.instance_name'" />
|
|
|
|
<th v-t="'preferences.instance_locations'" />
|
|
|
|
<th v-t="'preferences.has_cdn'" />
|
2022-02-23 12:38:21 +00:00
|
|
|
<th v-t="'preferences.registered_users'" />
|
2022-08-17 13:34:57 +00:00
|
|
|
<th class="lt-md:hidden" v-t="'preferences.version'" />
|
2022-02-23 12:38:21 +00:00
|
|
|
<th v-t="'preferences.up_to_date'" />
|
2022-01-30 23:48:27 +00:00
|
|
|
<th v-t="'preferences.ssl_score'" />
|
2020-11-17 05:15:35 +00:00
|
|
|
</tr>
|
|
|
|
</thead>
|
2021-10-08 18:52:51 +00:00
|
|
|
<tbody v-for="instance in instances" :key="instance.name">
|
2020-11-17 05:15:35 +00:00
|
|
|
<tr>
|
2021-12-27 16:29:25 +00:00
|
|
|
<td v-text="instance.name" />
|
|
|
|
<td v-text="instance.locations" />
|
2022-08-13 11:42:35 +00:00
|
|
|
<td v-text="`${instance.cdn ? '✅' : '❌'}`" />
|
2022-02-23 12:38:21 +00:00
|
|
|
<td v-text="instance.registered" />
|
2022-08-17 13:34:57 +00:00
|
|
|
<td class="lt-md:hidden" v-text="instance.version" />
|
2022-08-13 11:42:35 +00:00
|
|
|
<td v-text="`${instance.up_to_date ? '✅' : '❌'}`" />
|
2020-11-30 06:39:40 +00:00
|
|
|
<td>
|
2022-02-23 12:38:21 +00:00
|
|
|
<a :href="sslScore(instance.api_url)" target="_blank" v-t="'actions.view_ssl_score'" />
|
2020-11-30 06:39:40 +00:00
|
|
|
</td>
|
2020-11-17 05:15:35 +00:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2022-08-11 17:34:35 +00:00
|
|
|
<br />
|
2022-08-22 11:51:44 +00:00
|
|
|
<p v-t="'info.preferences_note'" />
|
2022-08-11 17:34:35 +00:00
|
|
|
<br />
|
2023-05-30 13:02:20 +00:00
|
|
|
<button class="btn" v-t="'actions.reset_preferences'" @click="showConfirmResetPrefsDialog = true" />
|
2022-08-13 11:42:35 +00:00
|
|
|
<button class="btn mx-4" v-t="'actions.backup_preferences'" @click="backupPreferences()" />
|
2022-08-14 18:31:09 +00:00
|
|
|
<label for="fileSelector" class="btn" v-t="'actions.restore_preferences'" @click="restorePreferences()" />
|
2022-08-13 09:29:31 +00:00
|
|
|
<input class="hidden" id="fileSelector" ref="fileSelector" type="file" @change="restorePreferences()" />
|
2023-05-30 13:02:20 +00:00
|
|
|
<ConfirmModal
|
|
|
|
v-if="showConfirmResetPrefsDialog"
|
|
|
|
@close="showConfirmResetPrefsDialog = false"
|
|
|
|
@confirm="resetPreferences()"
|
|
|
|
:message="$t('actions.confirm_reset_preferences')"
|
|
|
|
/>
|
2020-11-17 05:15:35 +00:00
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2021-09-21 20:24:21 +00:00
|
|
|
import CountryMap from "@/utils/CountryMaps/en.json";
|
2023-05-30 13:02:20 +00:00
|
|
|
import ConfirmModal from "./ConfirmModal.vue";
|
2020-11-17 05:15:35 +00:00
|
|
|
export default {
|
|
|
|
data() {
|
|
|
|
return {
|
2023-06-13 12:06:53 +00:00
|
|
|
mobileChapterLayout: "Vertical",
|
2020-11-17 05:15:35 +00:00
|
|
|
selectedInstance: null,
|
2022-07-21 04:04:57 +00:00
|
|
|
authInstance: false,
|
|
|
|
selectedAuthInstance: null,
|
2021-02-25 14:40:40 +00:00
|
|
|
instances: [],
|
2021-02-25 15:18:59 +00:00
|
|
|
sponsorBlock: true,
|
2023-02-06 17:24:12 +00:00
|
|
|
skipOptions: new Map([
|
|
|
|
["sponsor", { value: "auto", label: "actions.skip_sponsors" }],
|
|
|
|
["intro", { value: "no", label: "actions.skip_intro" }],
|
|
|
|
["outro", { value: "no", label: "actions.skip_outro" }],
|
|
|
|
["preview", { value: "no", label: "actions.skip_preview" }],
|
|
|
|
["interaction", { value: "auto", label: "actions.skip_interaction" }],
|
|
|
|
["selfpromo", { value: "auto", label: "actions.skip_self_promo" }],
|
|
|
|
["music_offtopic", { value: "auto", label: "actions.skip_non_music" }],
|
|
|
|
["poi_highlight", { value: "no", label: "actions.skip_highlight" }],
|
|
|
|
["filler", { value: "no", label: "actions.skip_filler_tangent" }],
|
|
|
|
]),
|
2022-06-06 02:18:47 +00:00
|
|
|
showMarkers: true,
|
2023-02-01 21:30:02 +00:00
|
|
|
minSegmentLength: 0,
|
2021-06-28 19:45:03 +00:00
|
|
|
selectedTheme: "dark",
|
2021-05-06 17:30:02 +00:00
|
|
|
autoPlayVideo: true,
|
2023-05-19 15:38:11 +00:00
|
|
|
autoDisplayCaptions: false,
|
2023-03-02 21:56:06 +00:00
|
|
|
autoPlayNextCountdown: 5,
|
2021-07-03 19:24:09 +00:00
|
|
|
listen: false,
|
2021-06-21 20:25:38 +00:00
|
|
|
resolutions: [144, 240, 360, 480, 720, 1080, 1440, 2160, 4320],
|
2021-06-21 20:03:11 +00:00
|
|
|
defaultQuality: 0,
|
2021-06-22 10:54:20 +00:00
|
|
|
bufferingGoal: 10,
|
2021-09-21 20:24:21 +00:00
|
|
|
countryMap: CountryMap,
|
2021-10-08 18:52:51 +00:00
|
|
|
countrySelected: "US",
|
2021-07-18 20:20:35 +00:00
|
|
|
defaultHomepage: "trending",
|
2022-10-23 23:19:57 +00:00
|
|
|
minimizeComments: false,
|
2021-07-30 09:03:16 +00:00
|
|
|
minimizeDescription: false,
|
2022-07-19 19:56:16 +00:00
|
|
|
minimizeRecommendations: false,
|
2022-11-09 17:05:11 +00:00
|
|
|
minimizeChapters: false,
|
2022-11-02 16:10:27 +00:00
|
|
|
showWatchOnYouTube: false,
|
2023-06-13 08:24:29 +00:00
|
|
|
searchSuggestions: true,
|
2021-08-22 10:27:09 +00:00
|
|
|
watchHistory: false,
|
2022-09-11 18:01:58 +00:00
|
|
|
searchHistory: false,
|
2022-09-10 17:08:50 +00:00
|
|
|
hideWatched: false,
|
2021-08-25 16:30:21 +00:00
|
|
|
selectedLanguage: "en",
|
|
|
|
languages: [
|
2022-06-16 14:55:08 +00:00
|
|
|
{ code: "ar", name: "Arabic" },
|
2022-06-02 18:46:52 +00:00
|
|
|
{ code: "az", name: "Azərbaycan" },
|
2023-03-12 03:06:15 +00:00
|
|
|
{ code: "bg", name: "Български" },
|
2021-09-06 07:08:15 +00:00
|
|
|
{ code: "bn", name: "বাংলা" },
|
2022-04-09 00:08:54 +00:00
|
|
|
{ code: "bs", name: "Bosanski" },
|
2022-02-15 10:57:37 +00:00
|
|
|
{ code: "ca", name: "Català" },
|
2021-12-27 11:15:23 +00:00
|
|
|
{ code: "cs", name: "Čeština" },
|
2022-03-20 18:36:05 +00:00
|
|
|
{ code: "da", name: "Dansk" },
|
2021-09-06 07:08:15 +00:00
|
|
|
{ code: "de", name: "Deutsch" },
|
|
|
|
{ code: "el", name: "Ελληνικά" },
|
2021-09-16 18:19:37 +00:00
|
|
|
{ code: "es", name: "Español" },
|
|
|
|
{ code: "en", name: "English" },
|
2022-02-15 10:57:37 +00:00
|
|
|
{ code: "eo", name: "Esperanto" },
|
2022-06-02 18:46:52 +00:00
|
|
|
{ code: "et", name: "Eesti" },
|
2021-09-16 18:19:37 +00:00
|
|
|
{ code: "fa", name: "فارسی" },
|
2021-09-23 22:37:40 +00:00
|
|
|
{ code: "fi", name: "Suomi" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "fr", name: "Français" },
|
2022-09-11 07:37:14 +00:00
|
|
|
{ code: "he", name: "עברית" },
|
2022-01-16 08:42:01 +00:00
|
|
|
{ code: "hi", name: "हिंदी" },
|
2021-12-09 14:43:53 +00:00
|
|
|
{ code: "id", name: "Indonesia" },
|
|
|
|
{ code: "is", name: "Íslenska" },
|
2022-11-25 15:54:33 +00:00
|
|
|
{ code: "kab", name: "Taqbaylit" },
|
2021-09-16 18:29:48 +00:00
|
|
|
{ code: "hr", name: "Hrvatski" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "it", name: "Italiano" },
|
2021-11-12 14:01:07 +00:00
|
|
|
{ code: "ja", name: "日本語" },
|
2021-12-24 10:47:32 +00:00
|
|
|
{ code: "ko", name: "한국어" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "lt", name: "Lietuvių kalba" },
|
2021-09-06 07:08:15 +00:00
|
|
|
{ code: "ml", name: "മലയാളം" },
|
2021-08-26 11:48:23 +00:00
|
|
|
{ code: "nb_NO", name: "Norwegian Bokmål" },
|
2022-04-09 00:08:54 +00:00
|
|
|
{ code: "nl", name: "Nederlands" },
|
2023-01-15 17:37:53 +00:00
|
|
|
{ code: "oc", name: "Occitan" },
|
2022-11-07 01:33:58 +00:00
|
|
|
{ code: "or", name: "ଓଡ଼ିଆ" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "pl", name: "Polski" },
|
2021-12-24 10:47:32 +00:00
|
|
|
{ code: "pt", name: "Português" },
|
2022-03-14 15:01:01 +00:00
|
|
|
{ code: "pt_PT", name: "Português (Portugal)" },
|
2022-06-16 14:55:08 +00:00
|
|
|
{ code: "pt_BR", name: "Português (Brasil)" },
|
2022-11-11 15:52:25 +00:00
|
|
|
{ code: "ro", name: "Română" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "ru", name: "Русский" },
|
2023-01-15 17:37:53 +00:00
|
|
|
{ code: "si", name: "සිංහල" },
|
2021-11-24 19:31:39 +00:00
|
|
|
{ code: "sr", name: "Српски" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "sv", name: "Svenska" },
|
2022-01-16 08:42:01 +00:00
|
|
|
{ code: "ta", name: "தமிழ்" },
|
2022-01-19 20:51:31 +00:00
|
|
|
{ code: "th", name: "ไทย" },
|
2021-09-06 07:08:15 +00:00
|
|
|
{ code: "tr", name: "Türkçe" },
|
2022-03-14 14:58:05 +00:00
|
|
|
{ code: "uk", name: "Українська" },
|
2022-04-07 02:34:48 +00:00
|
|
|
{ code: "vi", name: "Tiếng Việt" },
|
2021-09-16 18:29:48 +00:00
|
|
|
{ code: "zh_Hant", name: "繁體中文" },
|
2021-09-23 22:37:40 +00:00
|
|
|
{ code: "zh_Hans", name: "简体中文" },
|
2021-08-25 16:30:21 +00:00
|
|
|
],
|
2022-06-06 04:55:01 +00:00
|
|
|
enabledCodecs: ["vp9", "avc"],
|
2021-09-02 13:46:27 +00:00
|
|
|
disableLBRY: false,
|
|
|
|
proxyLBRY: false,
|
2022-07-20 14:15:27 +00:00
|
|
|
password: null,
|
2023-05-30 13:02:20 +00:00
|
|
|
showConfirmResetPrefsDialog: false,
|
2020-11-17 05:15:35 +00:00
|
|
|
};
|
|
|
|
},
|
2021-07-21 10:59:53 +00:00
|
|
|
activated() {
|
2021-08-25 16:30:21 +00:00
|
|
|
document.title = this.$t("titles.preferences") + " - Piped";
|
2021-07-21 10:59:53 +00:00
|
|
|
},
|
2021-09-21 20:24:21 +00:00
|
|
|
async mounted() {
|
2021-07-03 19:24:09 +00:00
|
|
|
if (Object.keys(this.$route.query).length > 0) this.$router.replace({ query: {} });
|
|
|
|
|
2022-02-23 12:38:21 +00:00
|
|
|
this.fetchJson("https://piped-instances.kavin.rocks/").then(resp => {
|
|
|
|
this.instances = resp;
|
2023-03-04 08:03:45 +00:00
|
|
|
if (!this.instances.some(instance => instance.api_url == this.apiUrl()))
|
2022-02-23 12:38:21 +00:00
|
|
|
this.instances.push({
|
|
|
|
name: "Custom Instance",
|
|
|
|
api_url: this.apiUrl(),
|
|
|
|
locations: "Unknown",
|
|
|
|
cdn: false,
|
2020-11-17 05:15:35 +00:00
|
|
|
});
|
2022-02-23 12:38:21 +00:00
|
|
|
});
|
2020-11-17 05:15:35 +00:00
|
|
|
|
2021-08-28 12:00:17 +00:00
|
|
|
if (this.testLocalStorage) {
|
2021-07-05 13:18:54 +00:00
|
|
|
this.selectedInstance = this.getPreferenceString("instance", "https://pipedapi.kavin.rocks");
|
2022-07-21 04:04:57 +00:00
|
|
|
this.authInstance = this.getPreferenceBoolean("authInstance", false);
|
|
|
|
this.selectedAuthInstance = this.getPreferenceString("auth_instance_url", this.selectedInstance);
|
2021-02-25 14:40:40 +00:00
|
|
|
|
2021-07-03 19:24:09 +00:00
|
|
|
this.sponsorBlock = this.getPreferenceBoolean("sponsorblock", true);
|
2023-02-02 13:25:45 +00:00
|
|
|
var skipOptions, skipList;
|
2023-02-06 17:18:04 +00:00
|
|
|
if ((skipOptions = this.getPreferenceJSON("skipOptions")) !== undefined) {
|
2023-02-06 17:24:12 +00:00
|
|
|
Object.entries(skipOptions).forEach(([key, value]) => {
|
|
|
|
var opt = this.skipOptions.get(key);
|
|
|
|
if (opt !== undefined) opt.value = value;
|
|
|
|
else console.log("Unknown sponsor type: " + key);
|
|
|
|
});
|
2023-02-06 17:18:04 +00:00
|
|
|
} else if ((skipList = this.getPreferenceString("selectedSkip")) !== undefined) {
|
2023-02-02 13:25:45 +00:00
|
|
|
skipList = skipList.split(",");
|
2023-02-06 17:24:12 +00:00
|
|
|
this.skipOptions.forEach(opt => (opt.value = "no"));
|
2021-02-25 15:18:59 +00:00
|
|
|
skipList.forEach(skip => {
|
2023-02-06 17:24:12 +00:00
|
|
|
var opt = this.skipOptions.get(skip);
|
|
|
|
if (opt !== undefined) opt.value = "auto";
|
|
|
|
else console.log("Unknown sponsor type: " + skip);
|
2021-02-25 15:18:59 +00:00
|
|
|
});
|
|
|
|
}
|
2021-05-06 17:30:02 +00:00
|
|
|
|
2022-06-06 02:18:47 +00:00
|
|
|
this.showMarkers = this.getPreferenceBoolean("showMarkers", true);
|
2023-02-02 13:25:45 +00:00
|
|
|
this.minSegmentLength = Math.max(this.getPreferenceNumber("minSegmentLength", 0), 0);
|
2021-07-03 19:24:09 +00:00
|
|
|
this.selectedTheme = this.getPreferenceString("theme", "dark");
|
2021-09-17 20:34:51 +00:00
|
|
|
this.autoPlayVideo = this.getPreferenceBoolean("playerAutoPlay", true);
|
2023-05-19 15:38:11 +00:00
|
|
|
this.autoDisplayCaptions = this.getPreferenceBoolean("autoDisplayCaptions", false);
|
2023-03-02 21:56:06 +00:00
|
|
|
this.autoPlayNextCountdown = this.getPreferenceNumber("autoPlayNextCountdown", 5);
|
2021-07-03 19:24:09 +00:00
|
|
|
this.listen = this.getPreferenceBoolean("listen", false);
|
2021-06-21 20:03:11 +00:00
|
|
|
this.defaultQuality = Number(localStorage.getItem("quality"));
|
2021-06-22 10:54:20 +00:00
|
|
|
this.bufferingGoal = Math.max(Number(localStorage.getItem("bufferGoal")), 10);
|
2021-10-08 18:52:51 +00:00
|
|
|
this.countrySelected = this.getPreferenceString("region", "US");
|
2021-07-18 20:20:35 +00:00
|
|
|
this.defaultHomepage = this.getPreferenceString("homepage", "trending");
|
2022-10-24 09:49:29 +00:00
|
|
|
this.minimizeComments = this.getPreferenceBoolean("minimizeComments", false);
|
2021-07-30 09:03:16 +00:00
|
|
|
this.minimizeDescription = this.getPreferenceBoolean("minimizeDescription", false);
|
2022-07-19 19:56:16 +00:00
|
|
|
this.minimizeRecommendations = this.getPreferenceBoolean("minimizeRecommendations", false);
|
2022-11-09 17:05:11 +00:00
|
|
|
this.minimizeChapters = this.getPreferenceBoolean("minimizeChapters", false);
|
2022-11-02 16:10:27 +00:00
|
|
|
this.showWatchOnYouTube = this.getPreferenceBoolean("showWatchOnYouTube", false);
|
2023-06-13 08:24:29 +00:00
|
|
|
this.searchSuggestions = this.getPreferenceBoolean("searchSuggestions", true);
|
2021-08-22 10:27:09 +00:00
|
|
|
this.watchHistory = this.getPreferenceBoolean("watchHistory", false);
|
2022-09-11 18:01:58 +00:00
|
|
|
this.searchHistory = this.getPreferenceBoolean("searchHistory", false);
|
2022-11-03 16:45:28 +00:00
|
|
|
this.selectedLanguage = this.getPreferenceString("hl", await this.defaultLanguage);
|
2022-06-06 04:55:01 +00:00
|
|
|
this.enabledCodecs = this.getPreferenceString("enabledCodecs", "vp9,avc").split(",");
|
2021-09-02 13:46:27 +00:00
|
|
|
this.disableLBRY = this.getPreferenceBoolean("disableLBRY", false);
|
|
|
|
this.proxyLBRY = this.getPreferenceBoolean("proxyLBRY", false);
|
2022-09-10 17:08:50 +00:00
|
|
|
this.hideWatched = this.getPreferenceBoolean("hideWatched", false);
|
2023-06-13 17:45:43 +00:00
|
|
|
this.mobileChapterLayout = this.getPreferenceString("mobileChapterLayout", "Vertical");
|
2021-09-21 20:24:21 +00:00
|
|
|
if (this.selectedLanguage != "en") {
|
|
|
|
try {
|
2021-12-28 14:39:20 +00:00
|
|
|
this.CountryMap = await import(`../utils/CountryMaps/${this.selectedLanguage}.json`).then(
|
|
|
|
val => val.default,
|
2021-09-23 22:37:40 +00:00
|
|
|
);
|
2021-09-21 20:24:21 +00:00
|
|
|
} catch (e) {
|
|
|
|
console.error("Countries not translated into " + this.selectedLanguage);
|
|
|
|
}
|
|
|
|
}
|
2021-02-25 14:40:40 +00:00
|
|
|
}
|
2020-11-17 05:15:35 +00:00
|
|
|
},
|
|
|
|
methods: {
|
2022-06-26 01:53:06 +00:00
|
|
|
async onChange() {
|
2021-08-28 12:00:17 +00:00
|
|
|
if (this.testLocalStorage) {
|
2021-06-28 19:45:03 +00:00
|
|
|
var shouldReload = false;
|
|
|
|
|
2021-08-22 10:27:09 +00:00
|
|
|
if (
|
|
|
|
this.getPreferenceString("theme", "dark") !== this.selectedTheme ||
|
2021-08-25 16:30:21 +00:00
|
|
|
this.getPreferenceBoolean("watchHistory", false) != this.watchHistory ||
|
2022-11-03 16:45:28 +00:00
|
|
|
this.getPreferenceString("hl", await this.defaultLanguage) !== this.selectedLanguage ||
|
2022-11-06 00:44:27 +00:00
|
|
|
this.getPreferenceString("enabledCodecs", "vp9,avc") !== this.enabledCodecs.join(",")
|
2021-08-22 10:27:09 +00:00
|
|
|
)
|
|
|
|
shouldReload = true;
|
2021-06-28 19:45:03 +00:00
|
|
|
|
2020-11-17 05:15:35 +00:00
|
|
|
localStorage.setItem("instance", this.selectedInstance);
|
2022-07-21 04:04:57 +00:00
|
|
|
localStorage.setItem("authInstance", this.authInstance);
|
|
|
|
localStorage.setItem("auth_instance_url", this.selectedAuthInstance);
|
2021-02-25 14:40:40 +00:00
|
|
|
localStorage.setItem("sponsorblock", this.sponsorBlock);
|
2021-02-25 15:18:59 +00:00
|
|
|
|
2023-02-06 17:24:12 +00:00
|
|
|
var skipOptions = {};
|
|
|
|
this.skipOptions.forEach((v, k) => (skipOptions[k] = v.value));
|
2023-02-01 15:37:43 +00:00
|
|
|
localStorage.setItem("skipOptions", JSON.stringify(skipOptions));
|
2021-05-06 17:30:02 +00:00
|
|
|
|
2022-06-06 02:18:47 +00:00
|
|
|
localStorage.setItem("showMarkers", this.showMarkers);
|
2023-02-01 21:30:02 +00:00
|
|
|
localStorage.setItem("minSegmentLength", this.minSegmentLength);
|
2021-06-28 19:45:03 +00:00
|
|
|
localStorage.setItem("theme", this.selectedTheme);
|
2021-05-06 17:30:02 +00:00
|
|
|
localStorage.setItem("playerAutoPlay", this.autoPlayVideo);
|
2023-05-19 15:38:11 +00:00
|
|
|
localStorage.setItem("autoDisplayCaptions", this.autoDisplayCaptions);
|
2023-03-02 21:56:06 +00:00
|
|
|
localStorage.setItem("autoPlayNextCountdown", this.autoPlayNextCountdown);
|
2021-07-03 19:24:09 +00:00
|
|
|
localStorage.setItem("listen", this.listen);
|
2021-06-21 20:03:11 +00:00
|
|
|
localStorage.setItem("quality", this.defaultQuality);
|
2021-06-22 10:54:20 +00:00
|
|
|
localStorage.setItem("bufferGoal", this.bufferingGoal);
|
2021-10-08 18:52:51 +00:00
|
|
|
localStorage.setItem("region", this.countrySelected);
|
2021-07-18 20:20:35 +00:00
|
|
|
localStorage.setItem("homepage", this.defaultHomepage);
|
2022-10-23 23:19:57 +00:00
|
|
|
localStorage.setItem("minimizeComments", this.minimizeComments);
|
2021-07-30 09:03:16 +00:00
|
|
|
localStorage.setItem("minimizeDescription", this.minimizeDescription);
|
2022-07-19 19:56:16 +00:00
|
|
|
localStorage.setItem("minimizeRecommendations", this.minimizeRecommendations);
|
2022-11-09 17:05:11 +00:00
|
|
|
localStorage.setItem("minimizeChapters", this.minimizeChapters);
|
2022-11-02 16:10:27 +00:00
|
|
|
localStorage.setItem("showWatchOnYouTube", this.showWatchOnYouTube);
|
2023-06-13 08:24:29 +00:00
|
|
|
localStorage.setItem("searchSuggestions", this.searchSuggestions);
|
2021-08-22 10:27:09 +00:00
|
|
|
localStorage.setItem("watchHistory", this.watchHistory);
|
2022-09-11 18:01:58 +00:00
|
|
|
localStorage.setItem("searchHistory", this.searchHistory);
|
2022-10-02 13:29:23 +00:00
|
|
|
if (!this.searchHistory) localStorage.removeItem("search_history");
|
2021-08-25 16:30:21 +00:00
|
|
|
localStorage.setItem("hl", this.selectedLanguage);
|
2021-08-27 07:33:55 +00:00
|
|
|
localStorage.setItem("enabledCodecs", this.enabledCodecs.join(","));
|
2021-09-02 13:46:27 +00:00
|
|
|
localStorage.setItem("disableLBRY", this.disableLBRY);
|
|
|
|
localStorage.setItem("proxyLBRY", this.proxyLBRY);
|
2022-09-10 17:08:50 +00:00
|
|
|
localStorage.setItem("hideWatched", this.hideWatched);
|
2023-06-13 12:06:53 +00:00
|
|
|
localStorage.setItem("mobileChapterLayout", this.mobileChapterLayout);
|
2021-06-28 19:45:03 +00:00
|
|
|
|
|
|
|
if (shouldReload) window.location.reload();
|
2021-02-25 14:40:40 +00:00
|
|
|
}
|
2020-11-30 06:39:40 +00:00
|
|
|
},
|
|
|
|
sslScore(url) {
|
2021-04-07 11:45:40 +00:00
|
|
|
return "https://www.ssllabs.com/ssltest/analyze.html?d=" + new URL(url).host + "&latest";
|
|
|
|
},
|
2022-07-20 14:15:27 +00:00
|
|
|
async deleteAccount() {
|
2022-07-21 04:04:57 +00:00
|
|
|
this.fetchJson(this.authApiUrl() + "/user/delete", null, {
|
2022-07-20 14:15:27 +00:00
|
|
|
method: "POST",
|
|
|
|
headers: {
|
|
|
|
Authorization: this.getAuthToken(),
|
|
|
|
},
|
|
|
|
body: JSON.stringify({
|
|
|
|
password: this.password,
|
|
|
|
}),
|
|
|
|
}).then(resp => {
|
|
|
|
if (!resp.error) {
|
|
|
|
this.logout();
|
|
|
|
} else alert(resp.error);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
logout() {
|
|
|
|
// reset the auth token
|
2022-07-21 04:04:57 +00:00
|
|
|
localStorage.removeItem("authToken" + this.hashCode(this.authApiUrl()));
|
2022-07-20 14:15:27 +00:00
|
|
|
// redirect to trending page
|
|
|
|
window.location = "/";
|
|
|
|
},
|
2022-08-11 17:41:07 +00:00
|
|
|
resetPreferences() {
|
2023-05-30 13:02:20 +00:00
|
|
|
this.showConfirmResetPrefsDialog = false;
|
2022-08-11 17:41:07 +00:00
|
|
|
// clear the local storage
|
|
|
|
localStorage.clear();
|
|
|
|
// redirect to the home page
|
|
|
|
window.location = "/";
|
|
|
|
},
|
2022-07-20 16:21:11 +00:00
|
|
|
async invalidateSession() {
|
2022-07-21 04:04:57 +00:00
|
|
|
this.fetchJson(this.authApiUrl() + "/logout", null, {
|
2022-07-20 16:21:11 +00:00
|
|
|
method: "POST",
|
|
|
|
headers: {
|
|
|
|
Authorization: this.getAuthToken(),
|
|
|
|
},
|
|
|
|
}).then(resp => {
|
|
|
|
if (!resp.error) {
|
|
|
|
this.logout();
|
|
|
|
} else alert(resp.error);
|
|
|
|
});
|
|
|
|
},
|
2022-08-13 09:29:31 +00:00
|
|
|
backupPreferences() {
|
|
|
|
const data = JSON.stringify(localStorage);
|
|
|
|
this.download(data, "preferences.json", "application/json");
|
|
|
|
},
|
|
|
|
restorePreferences() {
|
|
|
|
var file = this.$refs.fileSelector.files[0];
|
|
|
|
file.text().then(text => {
|
|
|
|
const data = JSON.parse(text);
|
|
|
|
Object.keys(data).forEach(function (key) {
|
|
|
|
localStorage.setItem(key, data[key]);
|
|
|
|
});
|
|
|
|
window.location.reload();
|
|
|
|
});
|
|
|
|
},
|
2021-04-07 11:45:40 +00:00
|
|
|
},
|
2023-05-30 13:02:20 +00:00
|
|
|
components: {
|
|
|
|
ConfirmModal,
|
|
|
|
},
|
2020-11-17 05:15:35 +00:00
|
|
|
};
|
|
|
|
</script>
|
2022-08-11 17:12:08 +00:00
|
|
|
|
|
|
|
<style>
|
|
|
|
.pref {
|
2022-08-17 13:34:57 +00:00
|
|
|
@apply flex justify-between items-center my-2 mx-[15vw] lt-md:mx-[2vw];
|
2022-08-11 17:12:08 +00:00
|
|
|
}
|
2023-03-01 15:55:30 +00:00
|
|
|
.pref:nth-child(odd) {
|
2023-03-11 18:00:13 +00:00
|
|
|
@apply bg-gray-200;
|
|
|
|
}
|
|
|
|
.dark .pref:nth-child(odd) {
|
2023-03-01 15:55:30 +00:00
|
|
|
@apply bg-dark-800;
|
|
|
|
}
|
2022-08-11 17:12:08 +00:00
|
|
|
</style>
|