diff --git a/README.md b/README.md index 40203292..24ebc057 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ By using Piped, you can freely watch and listen to content without the fear of p - [x] Login - [x] Feeds - [x] Playlists -- [x] Integration with SponsorBlock +- [x] Integration with [SponsorBlock](https://github.com/ajayyy/SponsorBlock) - [x] Integration with [LBRY](https://lbry.com/) for streaming - [x] Integration with [Return YouTube Dislike](https://returnyoutubedislike.com/) via [RYD-Proxy](https://github.com/TeamPiped/RYD-Proxy) - [x] 4K support @@ -38,6 +38,7 @@ By using Piped, you can freely watch and listen to content without the fear of p - [x] Locally saved Preferences - [x] [Available in many languages](src/locales), thanks to [our translators](https://hosted.weblate.org/projects/piped/frontend/) - [x] Embedded video support +- [x] No age restriction **Technical Features** diff --git a/package.json b/package.json index bb588158..a56233fa 100644 --- a/package.json +++ b/package.json @@ -20,31 +20,31 @@ "mux.js": "^6.2.0", "shaka-player": "4.2.1", "stream": "^0.0.2", - "vue": "^3.2.39", + "vue": "^3.2.40", "vue-i18n": "^9.2.2", "vue-router": "^4.1.5", "xml-js": "^1.6.11" }, "devDependencies": { - "@iconify/json": "^2.1.108", - "@intlify/vite-plugin-vue-i18n": "^6.0.1", - "@unocss/preset-icons": "^0.45.13", - "@unocss/preset-web-fonts": "^0.45.7", - "@unocss/transformer-directives": "^0.45.7", - "@unocss/transformer-variant-group": "^0.45.13", + "@iconify/json": "^2.1.118", + "@intlify/vite-plugin-vue-i18n": "^6.0.3", + "@unocss/preset-icons": "^0.45.25", + "@unocss/preset-web-fonts": "^0.45.25", + "@unocss/transformer-directives": "^0.45.26", + "@unocss/transformer-variant-group": "^0.45.25", "@vitejs/plugin-legacy": "^1.8.2", "@vitejs/plugin-vue": "^2.3.4", - "@vue/compiler-sfc": "3.2.39", + "@vue/compiler-sfc": "3.2.40", "babel-eslint": "^10.1.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.5.1", + "eslint-plugin-vue": "^9.6.0", "prettier": "^2.7.1", - "unocss": "^0.45.21", + "unocss": "^0.45.26", "vite": "^2.9.14", "vite-plugin-eslint": "^1.8.1", - "vite-plugin-pwa": "^0.12.7" + "vite-plugin-pwa": "^0.12.8" }, "eslintConfig": { "root": true, diff --git a/src/App.vue b/src/App.vue index d4110563..b35662aa 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,21 +1,14 @@ <template> <div class="w-full min-h-screen px-1vw reset" :class="[theme]"> <NavBar /> + <router-view v-slot="{ Component }"> <keep-alive :max="5"> <component :is="Component" :key="$route.fullPath" /> </keep-alive> </router-view> - <footer class="text-center"> - <a aria-label="GitHub" href="https://github.com/TeamPiped/Piped"> - <font-awesome-icon :icon="['fab', 'github']" /> - </a> - <a class="ml-2" href="https://github.com/TeamPiped/Piped#donations"> - <font-awesome-icon :icon="['fab', 'bitcoin']" /> - <span class="ml-1" v-t="'actions.donations'" /> - </a> - </footer> + <FooterComponent /> </div> </template> @@ -85,9 +78,11 @@ button, <script> import NavBar from "./components/NavBar.vue"; +import FooterComponent from "./components/FooterComponent.vue"; export default { components: { NavBar, + FooterComponent, }, mounted() { if (this.getPreferenceBoolean("watchHistory", false)) diff --git a/src/components/FeedPage.vue b/src/components/FeedPage.vue index 5360abf1..5d797be0 100644 --- a/src/components/FeedPage.vue +++ b/src/components/FeedPage.vue @@ -16,7 +16,7 @@ <hr /> <div class="video-grid"> - <VideoItem v-for="video in videos" :key="video.url" :video="video" /> + <VideoItem :is-feed="true" v-for="video in videos" :key="video.url" :video="video" /> </div> </template> diff --git a/src/components/FooterComponent.vue b/src/components/FooterComponent.vue new file mode 100644 index 00000000..c90d99fb --- /dev/null +++ b/src/components/FooterComponent.vue @@ -0,0 +1,59 @@ +<template> + <footer class="text-center py-40 children:(mx-30) w-full mt-10 mb-5"> + <a aria-label="GitHub" href="https://github.com/TeamPiped/Piped" target="_blank"> + <font-awesome-icon :icon="['fab', 'github']" /> + <span class="ml-2" v-t="'actions.source_code'" /> + </a> + <a href="https://piped-docs.kavin.rocks/" target="_blank"> + <font-awesome-icon :icon="['fa', 'book']" /> + <span class="ml-2" v-t="'actions.documentation'" /> + </a> + <a href="https://github.com/TeamPiped/Piped#donations" target="_blank"> + <font-awesome-icon :icon="['fab', 'bitcoin']" /> + <span class="ml-2" v-t="'actions.donations'" /> + </a> + <a v-if="statusPageHref" :href="statusPageHref"> + <font-awesome-icon :icon="['fa', 'server']" /> + <span class="ml-2" v-t="'actions.status_page'" /> + </a> + <a v-if="donationHref" :href="donationHref"> + <font-awesome-icon :icon="['fa', 'donate']" /> + <span class="ml-2" v-t="'actions.instance_donations'" /> + </a> + </footer> +</template> + +<script> +export default { + data() { + return { + donationHref: null, + statusPageHref: null, + }; + }, + mounted() { + this.fetchConfig(); + }, + methods: { + async fetchConfig() { + this.fetchJson(this.apiUrl() + "/config").then(config => { + this.donationHref = config?.donationUrl; + this.statusPageHref = config?.statusPageUrl; + }); + }, + }, +}; +</script> + +<style> +footer { + @apply bg-light-900; + border-radius: var(--efy_radius); +} +.dark footer { + @apply bg-dark-800; +} +.auto footer { + @apply dark:(bg-dark-800); +} +</style> diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index 9d6d48a4..d23f982c 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -79,7 +79,7 @@ /> </div> <SearchSuggestions - v-show="searchText && suggestionsVisible" + v-show="(searchText || showSearchHistory) && suggestionsVisible" ref="searchSuggestions" :search-text="searchText" @searchchange="onSearchTextChange" @@ -119,6 +119,9 @@ export default { shouldShowTrending(_this) { return _this.getPreferenceString("homepage", "trending") != "trending"; }, + showSearchHistory() { + return localStorage.getItem("searchHistory") && localStorage.getItem("search_history"); + }, }, methods: { // focus on search bar when Ctrl+k is pressed @@ -145,6 +148,7 @@ export default { } }, onInputFocus() { + if (this.showSearchHistory) this.$refs.searchSuggestions.refreshSuggestions(); this.suggestionsVisible = true; }, onInputBlur() { diff --git a/src/components/PreferencesPage.vue b/src/components/PreferencesPage.vue index b9710859..b817eb60 100644 --- a/src/components/PreferencesPage.vue +++ b/src/components/PreferencesPage.vue @@ -41,7 +41,6 @@ <option v-t="'titles.feed'" value="feed" /> </select> </label> - <label class="pref" for="ddlInstanceSelection"> <strong v-text="`${$t('actions.instance_selection')}:`" /> <select @@ -421,6 +420,8 @@ export default { minimizeDescription: false, minimizeRecommendations: false, watchHistory: false, + searchHistory: false, + hideWatched: false, selectedLanguage: "en", languages: [ { code: "ar", name: "Arabic" }, @@ -555,10 +556,12 @@ export default { this.minimizeDescription = this.getPreferenceBoolean("minimizeDescription", false); this.minimizeRecommendations = this.getPreferenceBoolean("minimizeRecommendations", false); this.watchHistory = this.getPreferenceBoolean("watchHistory", false); + this.searchHistory = this.getPreferenceBoolean("searchHistory", false); this.selectedLanguage = this.getPreferenceString("hl", await this.defaultLangage); this.enabledCodecs = this.getPreferenceString("enabledCodecs", "vp9,avc").split(","); this.disableLBRY = this.getPreferenceBoolean("disableLBRY", false); this.proxyLBRY = this.getPreferenceBoolean("proxyLBRY", false); + this.hideWatched = this.getPreferenceBoolean("hideWatched", false); if (this.selectedLanguage != "en") { try { this.CountryMap = await import(`../utils/CountryMaps/${this.selectedLanguage}.json`).then( @@ -612,10 +615,13 @@ export default { localStorage.setItem("minimizeDescription", this.minimizeDescription); localStorage.setItem("minimizeRecommendations", this.minimizeRecommendations); localStorage.setItem("watchHistory", this.watchHistory); + localStorage.setItem("searchHistory", this.searchHistory); + if (!this.searchHistory) localStorage.removeItem("search_history"); localStorage.setItem("hl", this.selectedLanguage); localStorage.setItem("enabledCodecs", this.enabledCodecs.join(",")); localStorage.setItem("disableLBRY", this.disableLBRY); localStorage.setItem("proxyLBRY", this.proxyLBRY); + localStorage.setItem("hideWatched", this.hideWatched); if (shouldReload) window.location.reload(); } diff --git a/src/components/SearchResults.vue b/src/components/SearchResults.vue index 0e16f69a..8d3098b8 100644 --- a/src/components/SearchResults.vue +++ b/src/components/SearchResults.vue @@ -77,6 +77,7 @@ export default { mounted() { if (this.handleRedirect()) return; this.updateResults(); + this.saveQueryToHistory(); }, activated() { this.handleRedirect(); @@ -138,6 +139,19 @@ export default { return true; } }, + saveQueryToHistory() { + if (!this.getPreferenceBoolean("searchHistory", false)) return; + const query = this.$route.query.search_query; + if (!query) return; + const searchHistory = JSON.parse(localStorage.getItem("search_history")) ?? []; + if (searchHistory.includes(query)) { + const index = searchHistory.indexOf(query); + searchHistory.splice(index, 1); + } + searchHistory.unshift(query); + if (searchHistory.length > 10) searchHistory.shift(); + localStorage.setItem("search_history", JSON.stringify(searchHistory)); + }, }, }; </script> diff --git a/src/components/SearchSuggestions.vue b/src/components/SearchSuggestions.vue index e8154b74..4108d02e 100644 --- a/src/components/SearchSuggestions.vue +++ b/src/components/SearchSuggestions.vue @@ -47,11 +47,16 @@ export default { } }, async refreshSuggestions() { - this.searchSuggestions = ( - await this.fetchJson(this.apiUrl() + "/opensearch/suggestions", { - query: this.searchText, - }) - )?.[1]; + if (!this.searchText) { + if (this.getPreferenceBoolean("searchHistory", false)) + this.searchSuggestions = JSON.parse(localStorage.getItem("search_history")) ?? []; + } else { + this.searchSuggestions = ( + await this.fetchJson(this.apiUrl() + "/opensearch/suggestions", { + query: this.searchText, + }) + )?.[1]; + } this.searchSuggestions.unshift(this.searchText); this.setSelected(0); }, diff --git a/src/components/VideoItem.vue b/src/components/VideoItem.vue index 235f051d..1d593874 100644 --- a/src/components/VideoItem.vue +++ b/src/components/VideoItem.vue @@ -1,5 +1,5 @@ <template> - <div> + <div v-if="showVideo"> <router-link :to="{ path: '/watch', @@ -133,6 +133,10 @@ export default { return {}; }, }, + isFeed: { + type: Boolean, + default: false, + }, height: { type: String, default: "118" }, width: { type: String, default: "210" }, hideChannel: { type: Boolean, default: false }, @@ -143,8 +147,12 @@ export default { data() { return { showModal: false, + showVideo: true, }; }, + mounted() { + this.shouldShowVideo(); + }, methods: { removeVideo() { if (confirm(this.$t("actions.delete_playlist_video_confirm"))) { @@ -165,6 +173,19 @@ export default { }); } }, + shouldShowVideo() { + if (!this.isFeed || !this.getPreferenceBoolean("hideWatched", false)) return; + + const objectStore = window.db.transaction("watch_history", "readonly").objectStore("watch_history"); + const request = objectStore.get(this.video.url.substr(-11)); + request.onsuccess = event => { + const video = event.target.result; + if (video && (video.currentTime ?? 0) > video.duration * 0.9) { + this.showVideo = false; + return; + } + }; + }, }, computed: { short() { diff --git a/src/locales/ar.json b/src/locales/ar.json index b6546b4d..14e7d711 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -105,7 +105,8 @@ "copy_link": "نسخ الرابط", "time_code": "رمز الوقت (بالثواني)", "rename_playlist": "إعادة تسمية قائمة التشغيل", - "new_playlist_name": "اسم قائمة تشغيل جديد" + "new_playlist_name": "اسم قائمة تشغيل جديد", + "show_chapters": "الفصول" }, "video": { "sponsor_segments": "المقاطع الإعلانية", diff --git a/src/locales/ca.json b/src/locales/ca.json index 67858026..64b2a22b 100644 --- a/src/locales/ca.json +++ b/src/locales/ca.json @@ -100,7 +100,9 @@ "share": "Compartir", "time_code": "Moment (en segons)", "copy_link": "Copiar l'enllaç", - "follow_link": "Vés a l'enllaç" + "follow_link": "Vés a l'enllaç", + "rename_playlist": "Canviar el nom de la llista de reproducció", + "new_playlist_name": "Nom nou de la llista de reproducció" }, "comment": { "pinned_by": "Fixat per", diff --git a/src/locales/cs.json b/src/locales/cs.json index 17bad614..d3817f21 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -98,11 +98,12 @@ "share": "Sdílet", "with_timecode": "Sdílet s časovým kódem", "piped_link": "Odkaz na Piped", - "follow_link": "Následovat odkaz", + "follow_link": "Otevřít odkaz", "copy_link": "Kopírovat odkaz", "time_code": "Časový kód (v sekundách)", "rename_playlist": "Přejmenovat playlist", - "new_playlist_name": "Nový název playlistu" + "new_playlist_name": "Nový název playlistu", + "show_chapters": "Kapitoly" }, "player": { "watch_on": "Sledovat na {0}" diff --git a/src/locales/de.json b/src/locales/de.json index 0d910267..9b3181c4 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -89,7 +89,8 @@ "reset_preferences": "Einstellungen zurücksetzen", "confirm_reset_preferences": "Bist du sicher, dass du deine Einstellungen zurücksetzen möchtest?", "backup_preferences": "Einstellungen sichern", - "restore_preferences": "Einstellungen wiederherstellen" + "restore_preferences": "Einstellungen wiederherstellen", + "show_chapters": "Kapitel" }, "player": { "watch_on": "Auf {0} ansehen" diff --git a/src/locales/en.json b/src/locales/en.json index e1dfd229..fe8175f3 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -61,7 +61,7 @@ "import_from_json": "Import from JSON/CSV", "loop_this_video": "Loop this Video", "auto_play_next_video": "Auto Play next Video", - "donations": "Donations", + "donations": "Development donations", "minimize_description": "Minimize Description", "show_description": "Description", "minimize_recommendations": "Minimize Recommendations", @@ -106,7 +106,13 @@ "follow_link": "Follow link", "copy_link": "Copy link", "time_code": "Time code (in seconds)", - "show_chapters": "Chapters" + "show_chapters": "Chapters", + "store_search_history": "Store Search history", + "hide_watched": "Hide watched videos in the feed", + "documentation": "Documentation", + "status_page": "Status", + "source_code": "Source code", + "instance_donations": "Instance donations" }, "comment": { "pinned_by": "Pinned by", diff --git a/src/locales/eo.json b/src/locales/eo.json index fe0bf319..ddfb360d 100644 --- a/src/locales/eo.json +++ b/src/locales/eo.json @@ -40,6 +40,10 @@ "donations": "Donacoj", "show_more": "Montri pli", "yes": "Jes", - "no": "Ne" + "no": "Ne", + "show_chapters": "Sekcioj" + }, + "video": { + "chapters": "Sekcioj" } } diff --git a/src/locales/es.json b/src/locales/es.json index 825c9038..06fd5ff1 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -114,7 +114,8 @@ "confirm_reset_preferences": "¿Estás seguro de que quieres restablecer tus preferencias?", "backup_preferences": "Preferencias de copia de seguridad", "restore_preferences": "Restablecer las preferencias", - "back_to_home": "Volver a la página de inicio" + "back_to_home": "Volver a la página de inicio", + "show_chapters": "Capítulos" }, "titles": { "feed": "Feed", diff --git a/src/locales/fr.json b/src/locales/fr.json index 7ad44569..b69811ec 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -102,7 +102,8 @@ "follow_link": "Ouvrir le lien", "time_code": "Horodatage (en secondes)", "rename_playlist": "Renommer la liste de lecture", - "new_playlist_name": "Nouveau nom de la liste de lecture" + "new_playlist_name": "Nouveau nom de la liste de lecture", + "show_chapters": "Chapitres" }, "player": { "watch_on": "Regarder sur {0}" diff --git a/src/locales/he.json b/src/locales/he.json index bfc00e14..8095f089 100644 --- a/src/locales/he.json +++ b/src/locales/he.json @@ -102,7 +102,11 @@ "loop_this_video": "ניגון הסרטון בלולאה", "minimize_recommendations": "מזעור המלצות", "rename_playlist": "שינוי שם רשימת נגינה", - "new_playlist_name": "שם לרשימת נגינה חדשה" + "new_playlist_name": "שם לרשימת נגינה חדשה", + "show_chapters": "פרקים", + "skip_intro": "דילוג על הפוגה/הנפשת הקדמה", + "skip_outro": "דילוג על כרטיסי סיום/קרדיטים", + "skip_filler_tangent": "דילוג על משיקים למילוי" }, "comment": { "pinned_by": "ננעץ על ידי", diff --git a/src/locales/hr.json b/src/locales/hr.json index d2cf8080..d0d3368d 100644 --- a/src/locales/hr.json +++ b/src/locales/hr.json @@ -114,7 +114,8 @@ "with_timecode": "Dijeli s vremenskim kodom", "rename_playlist": "Preimenuj popis snimaka", "new_playlist_name": "Ime novog popisa snimaka", - "share": "Dijeli" + "share": "Dijeli", + "show_chapters": "Poglavlja" }, "player": { "watch_on": "Gledaj na {0}" @@ -130,7 +131,7 @@ "playlists": "Playliste", "account": "Račun", "instance": "Instanca", - "player": "Player" + "player": "Plejer" }, "login": { "password": "Lozinka", diff --git a/src/locales/id.json b/src/locales/id.json index 1393b656..efb17982 100644 --- a/src/locales/id.json +++ b/src/locales/id.json @@ -105,7 +105,8 @@ "follow_link": "Ikuti tautan", "copy_link": "Salin tautan", "time_code": "Kode waktu (dalam detik)", - "back_to_home": "Kembali ke beranda" + "back_to_home": "Kembali ke beranda", + "show_chapters": "Bab" }, "comment": { "pinned_by": "Dipasangi pin oleh", diff --git a/src/locales/it.json b/src/locales/it.json index f7667acd..d89c2b1f 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -89,7 +89,8 @@ "follow_link": "Apri il collegamento", "with_timecode": "Condividi con marca temporale", "new_playlist_name": "Nuovo nome dalla playlist", - "rename_playlist": "Rinomina la playlist" + "rename_playlist": "Rinomina la playlist", + "show_chapters": "Capitoli" }, "player": { "watch_on": "Guarda su {0}" diff --git a/src/locales/ko.json b/src/locales/ko.json index 09683dfe..e7985b73 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -16,7 +16,7 @@ "enable_sponsorblock": "Sponsorblock 활성화", "skip_outro": "최종 화면/크레딧 스킵", "skip_preview": "미리보기/요약 스킵", - "uses_api_from": "의 API를 사용: ", + "uses_api_from": "해당 API 사용: ", "skip_non_music": "음악: 음악이 아닌 구간 스킵", "skip_self_promo": "셀프 프로모션 스킵", "buffering_goal": "버퍼링 목표 (초)", @@ -24,10 +24,10 @@ "store_watch_history": "시청 기록 저장", "language_selection": "언어 선택", "no": "아니요", - "loop_this_video": "이 영상 반복", - "auto_play_next_video": "다음 영상 자동 재생", + "loop_this_video": "이 동영상 반복", + "auto_play_next_video": "다음 동영상 자동 재생", "minimize_description": "설명 최소화", - "show_recommendations": "추천 영상 표시", + "show_recommendations": "추천 동영상 표시", "sort_by": "정렬:", "most_recent": "가장 최신", "channel_name_asc": "채널 이름 (A-Z)", @@ -40,31 +40,64 @@ "instance_selection": "인스턴스 선택", "import_from_json": "JSON/CSV에서 가져오기", "light": "라이트", - "autoplay_video": "영상 자동 재생", + "autoplay_video": "동영상 자동 재생", "default_quality": "기본 화질", "default_homepage": "기본 홈페이지", - "instances_list": "인스턴스 리스트", + "instances_list": "인스턴스 목록", "show_more": "더 보기", "export_to_json": "JSON으로 내보내기", "donations": "기부", "show_description": "설명 표시", "disable_lbry": "LBRY 스트리밍 비활성화", "enable_lbry_proxy": "LBRY 프록시 활성화", - "minimize_recommendations": "추천 영상 최소화", + "minimize_recommendations": "추천 동영상 최소화", "loading": "로딩...", "view_ssl_score": "SSL 점수 보기", "skip_intro": "중간 휴식/인트로 애니메이션 스킵", "search": "검색", "clear_history": "기록 지우기", "show_replies": "답글 보기", - "skip_highlight": "하이라이트 스킵" + "skip_highlight": "하이라이트 스킵", + "select_playlist": "재생목록 선택", + "please_select_playlist": "재생목록을 선택하세요", + "create_playlist": "재생목록 만들기", + "delete_playlist": "재생목록 삭제", + "delete_playlist_video_confirm": "재생목록에서 동영상을 삭제하시겠습니까?", + "add_to_playlist": "재생목록에 추가", + "remove_from_playlist": "재생목록에서 제거", + "delete_playlist_confirm": "이 재생목록을 삭제하시겠습니까?", + "delete_account": "계정 삭제", + "logout": "이 기기에서 로그아웃", + "show_chapters": "챕터", + "download_as_txt": ".txt로 다운로드", + "new_playlist_name": "새 재생목록 이름", + "rename_playlist": "재생목록 이름 변경", + "share": "공유", + "copy_link": "링크 복사", + "time_code": "시작 시간 (초)", + "follow_link": "링크 열기", + "piped_link": "Piped 링크", + "with_timecode": "시작 시간을 포함하여 공유", + "skip_filler_tangent": "잡담/농담 스킵", + "show_markers": "플레이어에 마커 표시", + "reset_preferences": "설정 초기화", + "confirm_reset_preferences": "설정을 초기화 하시겠습니까?", + "restore_preferences": "설정 복원", + "backup_preferences": "설정 백업", + "back_to_home": "홈으로 가기", + "minimize_recommendations_default": "기본적으로 추천 동영상 최소화", + "invalidate_session": "모든 기기에서 로그아웃", + "instance_auth_selection": "인증 인스턴스 선택", + "different_auth_instance": "인증에 다른 인스턴스 사용", + "clone_playlist": "재생목록 복제", + "clone_playlist_success": "성공적으로 복제되었습니다!" }, "titles": { "feed": "피드", "preferences": "설정", "history": "시청 기록", "subscriptions": "구독", - "trending": "트렌드", + "trending": "인기", "login": "로그인", "register": "가입", "playlists": "재생목록", @@ -76,26 +109,52 @@ "watch_on": "에서 보기 {0}" }, "comment": { - "pinned_by": "에 의해 고정됨" + "pinned_by": "에 의해 고정됨", + "disabled": "업로더가 댓글을 비활성화했습니다.", + "user_disabled": "설정에서 댓글을 비활성화했습니다.", + "loading": "댓글 로드 중..." }, "preferences": { "has_cdn": "CDN 여부?", "ssl_score": "SSL 점수", "instance_locations": "인스턴스 위치", - "instance_name": "인스턴스 이름" + "instance_name": "인스턴스 이름", + "registered_users": "등록 된 사용자", + "version": "버전", + "up_to_date": "최신 버전?" }, "login": { "username": "유저 이름", "password": "비밀번호" }, "video": { - "videos": "영상", + "videos": "동영상", "views": "{views} 조회수", "watched": "시청함", "sponsor_segments": "스폰서 세그먼트", - "ratings_disabled": "등급 비활성화됨" + "ratings_disabled": "등급 비활성화됨", + "live": "{0} 라이브", + "shorts": "Shorts", + "chapters": "챕터" }, "search": { - "did_you_mean": "이것을 찾으셨나요: {0}?" + "did_you_mean": "이것을 찾으셨나요: {0}?", + "all": "YouTube: 전체", + "music_playlists": "YT Music: 재생목록", + "videos": "YouTube: 동영상", + "music_songs": "YT Music: 음악", + "channels": "YouTube: 채널", + "playlists": "YouTube: 재생목록", + "music_videos": "YT Music: 동영상", + "music_albums": "YT Music: 앨범" + }, + "info": { + "cannot_copy": "복사할 수 없습니다!", + "copied": "복사되었습니다!", + "preferences_note": "참고: 설정은 브라우저 로컬 저장소에 저장됩니다. 브라우저 데이터를 삭제하면 초기화됩니다.", + "page_not_found": "페이지를 찾을 수 없음" + }, + "subscriptions": { + "subscribed_channels_count": "구독: {0}" } } diff --git a/src/locales/nb_NO.json b/src/locales/nb_NO.json index 1759e37f..10309b02 100644 --- a/src/locales/nb_NO.json +++ b/src/locales/nb_NO.json @@ -80,7 +80,17 @@ "reset_preferences": "Tilbakestill innstillinger", "backup_preferences": "Innstillinger for sikkerhetskopiering", "confirm_reset_preferences": "Tilbakestill alle innstillingene?", - "restore_preferences": "Gjenopprett innstillinger" + "restore_preferences": "Gjenopprett innstillinger", + "show_chapters": "Kapitler", + "rename_playlist": "Gi spillelisten ny navn", + "new_playlist_name": "Nytt spillelistenavn", + "share": "Del", + "with_timecode": "Del med tidskode", + "piped_link": "Piped-lenke", + "follow_link": "Følg lenke", + "copy_link": "Kopier lenke", + "time_code": "Tidskode (sekunder)", + "back_to_home": "Tilbake til startsiden" }, "player": { "watch_on": "Vis på {0}" @@ -143,5 +153,11 @@ }, "information": { "preferences_note": "Merk: Innstillinger lagres lokalt i din nettleser. Sletting av nettleserdata sletter dem." + }, + "info": { + "preferences_note": "Merk: Innstillinger spares i nettleserens lokallager. Sletting av nettleserdata tilbakestiller dem.", + "cannot_copy": "Kan ikke kopiere", + "page_not_found": "Fant ikke siden", + "copied": "Kopiert" } } diff --git a/src/locales/pt_PT.json b/src/locales/pt_PT.json index dc234026..ddf91038 100644 --- a/src/locales/pt_PT.json +++ b/src/locales/pt_PT.json @@ -7,7 +7,10 @@ "trending": "Tendências", "login": "Iniciar Sessão", "register": "Registar", - "playlists": "Listas de Reprodução" + "playlists": "Listas de Reprodução", + "account": "Conta", + "instance": "Instância", + "player": "Reprodutor" }, "actions": { "view_subscriptions": "Ver Subscrições", @@ -86,7 +89,20 @@ "instance_auth_selection": "Selecção da Instância para Autenticação", "invalidate_session": "Terminar sessão em todos os aparelhos", "clone_playlist": "Clonar Lista de Reprodução", - "clone_playlist_success": "Clonada com sucesso!" + "clone_playlist_success": "Clonada com sucesso!", + "rename_playlist": "Renomear", + "restore_preferences": "Restaurar configurações", + "confirm_reset_preferences": "Tem a certeza que quer redefinir as suas configurações?", + "new_playlist_name": "Novo nome da lista de reprodução", + "share": "Partilhar", + "with_timecode": "Partilhar com código de tempo", + "piped_link": "Ligação do Piped", + "follow_link": "Seguir ligação", + "copy_link": "Copiar ligação", + "time_code": "Código de tempo (em segundos)", + "reset_preferences": "Redefinir preferências", + "backup_preferences": "Exportar configurações", + "back_to_home": "Voltar ao início" }, "comment": { "pinned_by": "Afixado por", @@ -133,5 +149,11 @@ }, "subscriptions": { "subscribed_channels_count": "Subscrito a: {0}" + }, + "info": { + "preferences_note": "Nota: as configurações são guardadas no armazenamento local to seu navegador. Eliminar os dados de navegação irá redefini-las.", + "page_not_found": "Página não encontrada", + "copied": "Copiada!", + "cannot_copy": "Não foi possível copiar!" } } diff --git a/src/locales/ru.json b/src/locales/ru.json index 294174ab..a877fd68 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -7,7 +7,10 @@ "preferences": "Настройки", "history": "История просмотров", "subscriptions": "Ваши подписки", - "playlists": "Плейлисты" + "playlists": "Плейлисты", + "account": "Аккаунт", + "player": "Плеер", + "instance": "Сервер" }, "player": { "watch_on": "Смотреть на {0}" @@ -89,7 +92,21 @@ "different_auth_instance": "Использовать другие средства аутентификации", "instance_auth_selection": "Выбор средств аутентификации", "clone_playlist": "Клонировать плейлист", - "clone_playlist_success": "Клонирование прошло успешно!" + "clone_playlist_success": "Клонирование прошло успешно!", + "show_chapters": "Части", + "rename_playlist": "Переименовать плейлист", + "new_playlist_name": "Новое название плейлиста", + "share": "Поделиться", + "with_timecode": "Поделиться с отметкой времени", + "piped_link": "Ссылка Piped", + "follow_link": "Ссылка подписки", + "copy_link": "Скопировать ссылку", + "time_code": "Тайм-код (в секундах)", + "reset_preferences": "Сбросить настройки", + "confirm_reset_preferences": "Вы уверены, что хотите сбросить настройки?", + "backup_preferences": "Настройки бэкапов", + "restore_preferences": "Восстановить настройки", + "back_to_home": "Вернутся на главную" }, "comment": { "pinned_by": "Прикреплено пользователем", @@ -133,5 +150,11 @@ }, "subscriptions": { "subscribed_channels_count": "Подписан на: {0}" + }, + "info": { + "preferences_note": "Примечание: настройки сохранены в локальном хранилище браузера. При удалении данных браузера они будут удалены.", + "copied": "Скопировано!", + "cannot_copy": "Не получилось скопировать!", + "page_not_found": "Страница не найдена" } } diff --git a/src/locales/sr.json b/src/locales/sr.json index ea0443be..8726cd48 100644 --- a/src/locales/sr.json +++ b/src/locales/sr.json @@ -78,9 +78,18 @@ "delete_playlist_confirm": "Избрисати овај попис снимака?", "please_select_playlist": "Молим вас одаберите попис снимака", "show_markers": "Prikaži obeleživače na plejeru", - "delete_account": "Obriši nalog", + "delete_account": "Обриши налог", "logout": "Одјава са овог уређаја", - "minimize_recommendations_default": "Umanji preporuke kao podrazumevano" + "minimize_recommendations_default": "Умањи Препоруке као Подразумевано", + "download_as_txt": "Преузмите као .ткт", + "reset_preferences": "Ресетирајте преференције", + "confirm_reset_preferences": "Да ли сте сигурни да желите да ресетујете подешавања?", + "backup_preferences": "Спреми сигурносну копију поставки", + "invalidate_session": "Одјавите се са свих уређаја", + "different_auth_instance": "Користите другу инстанцу за аутентификацију", + "instance_auth_selection": "Избор инстанце аутентикације", + "clone_playlist": "Клонирајте листу за репродукцију", + "clone_playlist_success": "Успешно клонирано!" }, "preferences": { "instance_locations": "Локација инстанце", @@ -114,7 +123,10 @@ "trending": "У тренду", "login": "Пријава", "subscriptions": "Праћења", - "playlists": "Пописи Снимака" + "playlists": "Пописи Снимака", + "account": "Рачун", + "instance": "Инстанца", + "player": "Плејер" }, "comment": { "pinned_by": "Закачено од стране" diff --git a/src/locales/tr.json b/src/locales/tr.json index 6876589b..905cb832 100644 --- a/src/locales/tr.json +++ b/src/locales/tr.json @@ -89,7 +89,8 @@ "piped_link": "Piped bağlantısı", "share": "Paylaş", "rename_playlist": "Oynatma listesini yeniden adlandır", - "new_playlist_name": "Yeni oynatma listesi adı" + "new_playlist_name": "Yeni oynatma listesi adı", + "show_chapters": "Bölümler" }, "player": { "watch_on": "{0} üzerinde izle" diff --git a/src/locales/zh_Hans.json b/src/locales/zh_Hans.json index 63e00eca..cada3d7a 100644 --- a/src/locales/zh_Hans.json +++ b/src/locales/zh_Hans.json @@ -89,7 +89,8 @@ "with_timecode": "用时间码分享", "time_code": "时间码(单位:秒)", "rename_playlist": "重命名播放列表", - "new_playlist_name": "新播放列表名" + "new_playlist_name": "新播放列表名", + "show_chapters": "章节" }, "video": { "sponsor_segments": "赞助商部分", diff --git a/src/locales/zh_Hant.json b/src/locales/zh_Hant.json index fb32ef82..f4f37308 100644 --- a/src/locales/zh_Hant.json +++ b/src/locales/zh_Hant.json @@ -60,7 +60,17 @@ "select_playlist": "選擇播放清單", "add_to_playlist": "加到播放清單", "delete_playlist_video_confirm": "要從播放清單中移除影片嗎?", - "delete_account": "刪除帳戶" + "delete_account": "刪除帳戶", + "show_chapters": "章節", + "download_as_txt": "以 .txt 下載", + "share": "分享", + "new_playlist_name": "播放清單的新名稱", + "rename_playlist": "重新命名播放清單", + "reset_preferences": "重設偏好設定", + "confirm_reset_preferences": "確定要重設偏好設定嗎?", + "backup_preferences": "備份偏好設定", + "restore_preferences": "復原偏好設定", + "back_to_home": "回首頁" }, "titles": { "history": "歷史記錄", @@ -71,7 +81,8 @@ "login": "登入", "subscriptions": "訂閱內容", "playlists": "播放清單", - "account": "帳戶" + "account": "帳戶", + "player": "播放器" }, "preferences": { "registered_users": "已註冊的使用者", @@ -104,5 +115,11 @@ "pinned_by": "置頂者:", "disabled": "上傳者停用了留言功能。", "loading": "留言載入中……" + }, + "info": { + "copied": "已複製!", + "cannot_copy": "無法複製!", + "page_not_found": "找不到頁面", + "preferences_note": "註:偏好設定儲存在本機的瀏覽器的儲存空間內。如果清除瀏覽器的資料,偏好設定就會重設。" } } diff --git a/src/main.js b/src/main.js index 1a59d8c2..3d9d90fb 100644 --- a/src/main.js +++ b/src/main.js @@ -17,6 +17,9 @@ import { faXmark, faClone, faShare, + faBook, + faServer, + faDonate, } from "@fortawesome/free-solid-svg-icons"; import { faGithub, faBitcoin } from "@fortawesome/free-brands-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; @@ -39,6 +42,9 @@ library.add( faXmark, faClone, faShare, + faBook, + faServer, + faDonate, ); import router from "@/router/router.js"; @@ -183,7 +189,7 @@ const mixin = { const emailRegex = /([\w-\\.]+@(?:[\w-]+\.)+[\w-]{2,4})/g; return string .replace(urlRegex, url => { - if (url.endsWith("</a>")) return url; + if (url.endsWith("</a>") || url.endsWith("<a")) return url; return `<a href="${url}" target="_blank">${url}</a>`; }) .replace(emailRegex, email => { diff --git a/yarn.lock b/yarn.lock index 74aeab73..2d29a1d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,7 +25,7 @@ execa "^5.1.1" find-up "^5.0.0" -"@antfu/utils@^0.5.0", "@antfu/utils@^0.5.2": +"@antfu/utils@^0.5.2": version "0.5.2" resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.5.2.tgz#8c2d931ff927be0ebe740169874a3d4004ab414b" integrity sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA== @@ -997,35 +997,35 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@iconify/json@^2.1.108": - version "2.1.108" - resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.108.tgz#9dc4af162cf2a5fd078e9231199c585fff0655fd" - integrity sha512-7Cd15eXt493VT6APSQn+oNT3NqSnK/tfQPTqoh2K3aeHQNfVzkEmWPSyrzqWUAqOFHcA/Xtfz/pvd/25ecDbcQ== +"@iconify/json@^2.1.118": + version "2.1.118" + resolved "https://registry.yarnpkg.com/@iconify/json/-/json-2.1.118.tgz#bb29db70d1be64a2caf8b8d340870f32c61189b6" + integrity sha512-mvCocCcWIIoF/IiBQS0hIMqpmXYVbZsmNM8CyQCn6jEPEEKWpW5/vK+W+qOWO7+F7Hrs3//8OyLMh131by7zSQ== dependencies: "@iconify/types" "*" pathe "^0.3.0" -"@iconify/types@*", "@iconify/types@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@iconify/types/-/types-1.1.0.tgz#dc15fc988b1b3fd558dd140a24ede7e0aac11280" - integrity sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw== +"@iconify/types@*", "@iconify/types@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" + integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== -"@iconify/utils@^1.0.33": - version "1.0.33" - resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-1.0.33.tgz#9952ecae79e3b1685b83c58159c1d48959f6105a" - integrity sha512-vGeAqo7aGPxOQmGdVoXFUOuyN+0V7Lcrx2EvaiRjxUD1x6Om0Tvq2bdm7E24l2Pz++4S0mWMCVFXe/17EtKImQ== +"@iconify/utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.0.0.tgz#2a807c79b2dea549a014166c4311961935d25780" + integrity sha512-thvwZ6m3frWJiOYwRdHPSPGC25rmyvDl0vXdQ8ocRJZx31m8Pn4y7V1mTc5UReR6MiAj+hrV2UPZQjx7zI960g== dependencies: "@antfu/install-pkg" "^0.1.0" - "@antfu/utils" "^0.5.0" - "@iconify/types" "^1.1.0" + "@antfu/utils" "^0.5.2" + "@iconify/types" "^2.0.0" debug "^4.3.4" kolorist "^1.5.1" - local-pkg "^0.4.1" + local-pkg "^0.4.2" -"@intlify/bundle-utils@next": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@intlify/bundle-utils/-/bundle-utils-3.1.0.tgz#42bff44116bdb49621146cd5622c4c45019c8862" - integrity sha512-ghlJ0kR2cCQ8D+poKknC0Xx0ncOt3J3os7CcIAqqIWVF7k6AtGoCDnIru+YzlZcvFRNmP9wEZ7jKliojCdAWNg== +"@intlify/bundle-utils@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@intlify/bundle-utils/-/bundle-utils-3.2.1.tgz#f1a00fb31716567c8da63fbb351c3199ca12d467" + integrity sha512-rf4cLBOnbqmpXVcCdcYHilZpMt1m82syh3WLBJlZvGxN2KkH9HeHVH4+bnibF/SDXCHNh6lM6wTpS/qw+PkcMg== dependencies: "@intlify/message-compiler" next "@intlify/shared" next @@ -1076,12 +1076,12 @@ resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.2.2.tgz#5011be9ca2b4ab86f8660739286e2707f9abb4a5" integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q== -"@intlify/vite-plugin-vue-i18n@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-6.0.1.tgz#6beaedc351b6a9fe37f9f23a43c200c56d2c34b6" - integrity sha512-FFVcxVU4bR9vdDLNbltM5mrhndnXMErO01i0RrpdyMegEt3Nu/YLoH0sFdjRun7/RY4vaEnhTnFvVf9uO0dQvg== +"@intlify/vite-plugin-vue-i18n@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@intlify/vite-plugin-vue-i18n/-/vite-plugin-vue-i18n-6.0.3.tgz#57a6900de02a9829e52b16bf072768534c7664ef" + integrity sha512-6SgNzPAOCR90wvt368lKzi7f/5ZEWJn22UCGvhFsP3XvKqlF3cVzojahgQ6o+LTdCkExeM6wPgd+haFf28E9VQ== dependencies: - "@intlify/bundle-utils" next + "@intlify/bundle-utils" "^3.2.1" "@intlify/shared" next "@rollup/pluginutils" "^4.2.0" debug "^4.3.1" @@ -1273,165 +1273,168 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== -"@unocss/astro@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.45.21.tgz#076bd99b38cc666dfb851f49f5cfe517e6529e30" - integrity sha512-6lsDQu6nBX5CZZ+JPqAdp9ypkZrzi6NuBgyjZtChCoLhwEB2kNDCg7Qwu93Ee7/TT8MYAiANar9N+U2EuxzcKA== +"@unocss/astro@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/astro/-/astro-0.45.26.tgz#2d3af08aa91744ee6003b827a258fd781d6736dc" + integrity sha512-jAdbYNwjyzh05B4B7lhuHYmkNfmIZsQGhRNXogOx0t1BMzRZg9jID5xsJiujaElQL6ll53pbuRRyGV80o75n0Q== dependencies: - "@unocss/core" "0.45.21" - "@unocss/reset" "0.45.21" - "@unocss/vite" "0.45.21" + "@unocss/core" "0.45.26" + "@unocss/reset" "0.45.26" + "@unocss/vite" "0.45.26" -"@unocss/cli@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.45.21.tgz#5b908d314c122906b1c8890b8933ebe998f2928a" - integrity sha512-iyeunJpb4x0mJ7gtHT/3M0FDER6T03RZ2CCfiydRoxE9jUCfrk6cXO0CT4lt86Jr6+NIjw5gncMuvDXzjDe3fw== +"@unocss/cli@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/cli/-/cli-0.45.26.tgz#8e3c443c98a5d9cb1040411660f98d86ac60049b" + integrity sha512-pev56gZRYow+/38TfSVMVWmtgl4UGNrgJULqHhfXxHn/CjiG+wJ95/PLYbY/GIZRXy4ttpsVU/iF/5uRvvJ3RA== dependencies: - "@unocss/config" "0.45.21" - "@unocss/core" "0.45.21" - "@unocss/preset-uno" "0.45.21" + "@ampproject/remapping" "^2.2.0" + "@rollup/pluginutils" "^4.2.1" + "@unocss/config" "0.45.26" + "@unocss/core" "0.45.26" + "@unocss/preset-uno" "0.45.26" cac "^6.7.14" chokidar "^3.5.3" colorette "^2.0.19" consola "^2.15.3" - fast-glob "^3.2.11" - pathe "^0.3.5" + fast-glob "^3.2.12" + magic-string "^0.26.3" + pathe "^0.3.7" perfect-debounce "^0.1.3" -"@unocss/config@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.45.21.tgz#9c4593e71b1596fdd50743c1a247dc3ce70028ec" - integrity sha512-EXHdUwwKQ0Y9MizXpfGoCL8RRPoZ2d0l5uYeyB2qETCcwjm2pM5qodEssll/B4mHNfjv51ywsnSSAwHP7GR+8A== +"@unocss/config@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/config/-/config-0.45.26.tgz#be2fe98a355c707edc14b09219f5f5051330fd63" + integrity sha512-bmNlYoGl4oHdmrb6TwuiVbVShuT3TsYJQ6MPXnVipPkAJpyJ47uU6ZAfDMqwCU0AqsLah3hSDQpDIJL5j+9tug== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" unconfig "^0.3.6" -"@unocss/core@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.45.21.tgz#ae9be954459d8df9c7eac3b307918136c5f8253a" - integrity sha512-9yvgEYHFy6NFQwiQ0fEMg3QUGvcHfXbSmZszupa8ojpbR7UM26Ng+RY/Tyx1zh9HBaS7N+73z7u6gcygc7mUJA== +"@unocss/core@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/core/-/core-0.45.26.tgz#529e729d302e92b3dc1f0dee9b361c0c43235a01" + integrity sha512-V7lNAXy1Ou2+UsD8n8a0ynE7BPuMtZSn6dQtrhNvtkstEBZtBAvlGM07wnSqwZfYeKs8k/MA6Z7S0yJKQzcl1Q== -"@unocss/inspector@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.45.21.tgz#79929569a4072fb9543d601292e64c445d10646c" - integrity sha512-NgtlIt8e1Zjc9Fh19RTBbo9asgXfK00kq00khngGfvjdQu+MMGsjGPz/PYkFrAdjcXVxyV1aKr0PKXQr2e6ZOA== +"@unocss/inspector@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/inspector/-/inspector-0.45.26.tgz#437ba058b177d591547b2400138cfe7d5752fac7" + integrity sha512-rteTaMVWstGlCG5+k744kFzQLYAWgCf2ys2CRfm6SX7YC2JGBmELCwSABGrylkyItTnH50ayZcDk21GKEfC/Mw== dependencies: gzip-size "^6.0.0" sirv "^2.0.2" -"@unocss/preset-attributify@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.45.21.tgz#91a2efe19dbf100b149654d63187e0ffc5764351" - integrity sha512-CdS2YUyHH1WGBlcGcbVqcwiGL4u7QL8lGnB1wPRPiCF3c3JEHVQxVP7g6MwAThU/6RRKZDaReuZkhhUswBFysA== +"@unocss/preset-attributify@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-attributify/-/preset-attributify-0.45.26.tgz#48c898c049daa2acbaeb179f95df710702196a32" + integrity sha512-+BA27/d+IEJtt/P7+fHUl/OYJNhSVBoCRxIO6JiQhEw36n821UMVd9CdnfxPBEBIaS2fXQvNF4yO5jnr4Wj5Qw== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/preset-icons@0.45.21", "@unocss/preset-icons@^0.45.13": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.45.21.tgz#eebdfaabe85905e2a3a2fcdb965518571c1f9d02" - integrity sha512-7DyE2eE/pprJYVUGSD3Hlrq/me2I8jJryd9QDoB8aEOgWmmhUGn2f9A34jU0109LtUH1QBIolufVMq3i/fJUag== +"@unocss/preset-icons@0.45.26", "@unocss/preset-icons@^0.45.25": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-icons/-/preset-icons-0.45.26.tgz#e816e3114ab9ed666bcdf92024de466075935a59" + integrity sha512-PL2Fi6KGYZAY9vNyEC+EBDqSYaiXEuUaTkPOaCVrEsig0E5DOm62A5FmJ/0vHmNSXEOVqV17jiDKp+fNM/h61g== dependencies: - "@iconify/utils" "^1.0.33" - "@unocss/core" "0.45.21" + "@iconify/utils" "^2.0.0" + "@unocss/core" "0.45.26" ohmyfetch "^0.4.18" -"@unocss/preset-mini@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.45.21.tgz#88165cb31af3d2a2bbc1222dc193db355f486274" - integrity sha512-rEKAueN9eLQRciyzlYSiYCHwfCZc1zhOcbYP+v20PDOhCee80fjUCUJSZcdSZstBrtLwDJ2V3FVXNRjHeq8aNA== +"@unocss/preset-mini@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-mini/-/preset-mini-0.45.26.tgz#11659ea15415cd9dd75f6d4750e8fba1faac427d" + integrity sha512-Kab6F2pZHzJudGene6NwGMYA96fuU8gNjCVouSd6oqFF1ZhEBxkQOR56TRjppyCi0MU89hciV5T6kcVZDquGUw== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/preset-tagify@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.45.21.tgz#9944b17f1b3efc9f779f7b101d0e1882f31aaa1e" - integrity sha512-o1I8WcNt2OuAQrMX8kq/OM2Ag/S+jQkfWOn9Az6yNvZKfTyyz8RMJ3+wkBzk8u2L9mwdvabaWUDIDPrKtCjQvA== +"@unocss/preset-tagify@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-tagify/-/preset-tagify-0.45.26.tgz#c78842adf2ead4dd7d0c766a852ca6f701b7a62d" + integrity sha512-4zhdD/EKW5BYsiKO8PQdUXU4I5riJNM9ykEyhESFaCM6/+3a8GRvrnON57cRuiqX5LvJeXfbtGXQCOdMGEIi4Q== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/preset-typography@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.45.21.tgz#4cc7ac18b789fee10b952cbe2607a586983b0fca" - integrity sha512-D+d1IYq50Bh9WvFD/ILNWYuOrPi1dCHEDAv84Ijx+pt+Iwd/jDIAg3cJ0ukT6SZdRW+3lFa4nDhghQg+6CIO3g== +"@unocss/preset-typography@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-typography/-/preset-typography-0.45.26.tgz#a547272b5118b71e4feb0c534a45664fa51e62f4" + integrity sha512-HBkox5t1AKQ3SwMbvDhHDaWBOsP3Z1RW67oyVpEgipZHL5SYN9YwGkveaj6J0SJDJMtYRwFkKD5Zvd4KvnzSfQ== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/preset-uno@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.45.21.tgz#c25394f8bf19dc339c3e151f6401575b19c639ae" - integrity sha512-DGDSXY+YkLM8bbo9nVShJ0/JHXcGb68loizPpxCq4pvcqU0L7y3UtfiT4mXPuO/RgoGuLE5JXtnWDIP5dFLzsA== +"@unocss/preset-uno@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-uno/-/preset-uno-0.45.26.tgz#39aac369a27ecb788d2a0aabff01739166489dc0" + integrity sha512-Am4Ymz7tKwufm6QP2GxT8oIQ1Qez+ikk5miZ94K5IpMguVqMP1FwAu8aFtoItH5jVuDb4JxyZyo66oSFd4+h8g== dependencies: - "@unocss/core" "0.45.21" - "@unocss/preset-mini" "0.45.21" - "@unocss/preset-wind" "0.45.21" + "@unocss/core" "0.45.26" + "@unocss/preset-mini" "0.45.26" + "@unocss/preset-wind" "0.45.26" -"@unocss/preset-web-fonts@0.45.21", "@unocss/preset-web-fonts@^0.45.7": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.45.21.tgz#f80faa6df8c3a60f50cf8f250fcda90e67cf4409" - integrity sha512-LwEgY6g89h8Do65tvhpD8Uv0SMwmggR887VfYHUBlTWy2gM2Yj0Lxm+KWuFjCNMQhzAGZInoFL8VXHl8ORME7Q== +"@unocss/preset-web-fonts@0.45.26", "@unocss/preset-web-fonts@^0.45.25": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-web-fonts/-/preset-web-fonts-0.45.26.tgz#b0cbf9c73af3c1ff9690ed3bfd5a95c1ecc14fd0" + integrity sha512-6J3VjrYcYGwVDzdcKE0NYQhvuXkS/Fo54ZlEWScVOSygvBYOEsObo+6Vs9Q1yMbVuVnNrt3R38/KMQFqPEWXKw== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" ohmyfetch "^0.4.18" -"@unocss/preset-wind@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.45.21.tgz#1151f9e66ed29542eb1ff36aa63cd1e29afb41d2" - integrity sha512-1Xn9nw7OhgfTncMeujRxf6aJoLFFLRtJFx6r0/+Mn6I7nf3b5NNmkqSbM78qJZwN9Y9oe+OnRDWHd77Cgk1nwA== +"@unocss/preset-wind@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/preset-wind/-/preset-wind-0.45.26.tgz#708d80c27a54c779740d0c65a205683a126c4b74" + integrity sha512-/7YnUIXBkakeNzDpxsOzoHgVKL/nH9kyKHT1hSLj60IlAoN+YfoOwpCOn+taysovjiGmLIKdeEuOAN3HuEi1aw== dependencies: - "@unocss/core" "0.45.21" - "@unocss/preset-mini" "0.45.21" + "@unocss/core" "0.45.26" + "@unocss/preset-mini" "0.45.26" -"@unocss/reset@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.45.21.tgz#026c871bec05702a22dd214a4d274b5c4ff3b018" - integrity sha512-9JyC8P8qci1fuUvIOZXfO0jsug2YOUlFq8bx904J4sQ33qFl4NhkrpXAU+kFs0HS5SvgUx7BDfLY7W7BGG3RxQ== +"@unocss/reset@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/reset/-/reset-0.45.26.tgz#cf4bf80c1a9c7405ac0b8b4975738eabda222d04" + integrity sha512-9X0cSvGPXdZ1KAuiWzFWtcoyfC7b8j4GYHr4lDXRkPC5oI3CJhw4WcdvzTHVPqOX2CKqq731H4GhcQ5c5LBuHA== -"@unocss/scope@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.45.21.tgz#202cd76135b60b46affc5de4a35ef7ee0ca99b06" - integrity sha512-oyi6onHnUrdieQI19qKlkMXqykeU5i6mmuHg1VCVSlvh2QQhHypacIAVSohK88DQucVIfzHTWxBqHxZGHCs5Ag== +"@unocss/scope@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/scope/-/scope-0.45.26.tgz#2affb43950fbb978c55d6449eef641dd51de8f87" + integrity sha512-t5ADmEW9Rhf4Ku0DHwgPoy2mTU0eRrpx6QfXFWtWC+ZtHsjOcC9RXgWYXKZmINtiY+FzQ8A+v/k0wlIuvhJF7g== -"@unocss/transformer-attributify-jsx@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.45.21.tgz#fec5612b6a6344083dbf081682482280dee1910e" - integrity sha512-5Fa0srxIB3qanlDCZKhVLl+RfZO4NjS6zuEm+tCCEFp7sSWSdoXWU/dpfDowboqht+B9hGrH/TNeghrxa5O9Wg== +"@unocss/transformer-attributify-jsx@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/transformer-attributify-jsx/-/transformer-attributify-jsx-0.45.26.tgz#db8ae47be30f5dcfdf8681a50c0562ebf03e88bf" + integrity sha512-fuNnbqe/Ld07fZLZhNtJb6HpSNf6Lw+HlPGdDNzKdbOVUkJwCmBuRifySLkx4HMCn+ld/iniZvyqUgRDLOVanA== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/transformer-compile-class@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.45.21.tgz#2d79ebec9ef24307ac69e5f5ee5169a7cdc092fd" - integrity sha512-NGB3VMV3DIzBqBA0jC6B29Tv8h7LlDe9oduDliM5ex6sA2l09FzrJNfyEVA1AxGUF2uE8T+1AJsnlclMsvM0hQ== +"@unocss/transformer-compile-class@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/transformer-compile-class/-/transformer-compile-class-0.45.26.tgz#a2cbdf4880c5f8cdcf80c79869db40e05cea26b0" + integrity sha512-cuDUnNrXcqMezuHcT74tBWdbA55hKTS+g8iESaREnRbdCfnmxTSO/GyrRPsQB5ULL465ENwiOaXJhKkLSfTQqw== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/transformer-directives@0.45.21", "@unocss/transformer-directives@^0.45.7": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.45.21.tgz#effe3353c4675a44d12cb853cb7ac65789561131" - integrity sha512-bF7UThxj81+MM5ZZ0LLaEFhiexSbftF+Ld+AxHhe0MtaBo1oZp8z9AQrCCfQC1rJY5zAcbBGjTJO5BSVsvIDlQ== +"@unocss/transformer-directives@0.45.26", "@unocss/transformer-directives@^0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/transformer-directives/-/transformer-directives-0.45.26.tgz#5d8dfc0ab191d7bc9e8c43507d7a929a321f0703" + integrity sha512-9Ypquxnsp2gAAlEPhQwXIfaEVqWsLyryd0VttQy0+kzxG8koPiMkKtYsiw6vN8tsEzklVQiydLct4HCONaMzHQ== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" css-tree "^2.2.1" -"@unocss/transformer-variant-group@0.45.21", "@unocss/transformer-variant-group@^0.45.13": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.45.21.tgz#4ed0121a1af616af7cb8865ff455811ab0c90652" - integrity sha512-MnvZ3IDuMKGEmAcQZ2SOJz9/daLKl/+MPiJVYPPT01y71e0yWDRUJR1YRZXcatgH60tiyPelC7u8MNNNZOoqMw== +"@unocss/transformer-variant-group@0.45.26", "@unocss/transformer-variant-group@^0.45.25": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/transformer-variant-group/-/transformer-variant-group-0.45.26.tgz#2704b7662781ddd4405f75297c5609e606ec57e8" + integrity sha512-MUManbGNe1q5/dm4QLW1SbegeH/06ZbYyREfJEy7U5Ze5Npe67a1eZ4EA4b6el5Y8Bd+wpJ4xj1D+fxC6NVWJQ== dependencies: - "@unocss/core" "0.45.21" + "@unocss/core" "0.45.26" -"@unocss/vite@0.45.21": - version "0.45.21" - resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.45.21.tgz#3bf44805e817504470983139ef2343656dc79da0" - integrity sha512-BrCJMSy9i9j9mmzu2pfPFQuRPNWASxQfy3D6k+4R3c51OfKBSDcfeD7FyM866TE1gllCIFdQQH1Ay+tXkjlOMQ== +"@unocss/vite@0.45.26": + version "0.45.26" + resolved "https://registry.yarnpkg.com/@unocss/vite/-/vite-0.45.26.tgz#171dad95151341dce8a73f3b5897c9b706e75e8a" + integrity sha512-9BNJXBN0UG+olMbfIcVcrJgBetyO3HOP6Wx3r5Oc8iwfYSxrWQlHFF+yVJi/+oxsENfsjAgCRH7O+nF4FrXceA== dependencies: "@ampproject/remapping" "^2.2.0" "@rollup/pluginutils" "^4.2.1" - "@unocss/config" "0.45.21" - "@unocss/core" "0.45.21" - "@unocss/inspector" "0.45.21" - "@unocss/scope" "0.45.21" - "@unocss/transformer-directives" "0.45.21" + "@unocss/config" "0.45.26" + "@unocss/core" "0.45.26" + "@unocss/inspector" "0.45.26" + "@unocss/scope" "0.45.26" + "@unocss/transformer-directives" "0.45.26" magic-string "^0.26.3" "@vitejs/plugin-legacy@^1.8.2": @@ -1450,100 +1453,100 @@ resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz#966a6279060eb2d9d1a02ea1a331af071afdcf9e" integrity sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg== -"@vue/compiler-core@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.39.tgz#0d77e635f4bdb918326669155a2dc977c053943e" - integrity sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw== +"@vue/compiler-core@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.40.tgz#c785501f09536748121e937fb87605bbb1ada8e5" + integrity sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA== dependencies: "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.39" + "@vue/shared" "3.2.40" estree-walker "^2.0.2" source-map "^0.6.1" -"@vue/compiler-dom@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz#bd69d35c1a48fe2cea4ab9e96d2a3a735d146fdf" - integrity sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw== +"@vue/compiler-dom@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.40.tgz#c225418773774db536174d30d3f25ba42a33e7e4" + integrity sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw== dependencies: - "@vue/compiler-core" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-core" "3.2.40" + "@vue/shared" "3.2.40" -"@vue/compiler-sfc@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz#8fe29990f672805b7c5a2ecfa5b05e681c862ea2" - integrity sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA== +"@vue/compiler-sfc@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.40.tgz#61823283efc84d25d9d2989458f305d32a2ed141" + integrity sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.39" - "@vue/compiler-dom" "3.2.39" - "@vue/compiler-ssr" "3.2.39" - "@vue/reactivity-transform" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-core" "3.2.40" + "@vue/compiler-dom" "3.2.40" + "@vue/compiler-ssr" "3.2.40" + "@vue/reactivity-transform" "3.2.40" + "@vue/shared" "3.2.40" estree-walker "^2.0.2" magic-string "^0.25.7" postcss "^8.1.10" source-map "^0.6.1" -"@vue/compiler-ssr@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz#4f3bfb535cb98b764bee45e078700e03ccc60633" - integrity sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ== +"@vue/compiler-ssr@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.40.tgz#67df95a096c63e9ec4b50b84cc6f05816793629c" + integrity sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ== dependencies: - "@vue/compiler-dom" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-dom" "3.2.40" + "@vue/shared" "3.2.40" "@vue/devtools-api@^6.1.4", "@vue/devtools-api@^6.2.1": version "6.2.1" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz#6f2948ff002ec46df01420dfeff91de16c5b4092" integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ== -"@vue/reactivity-transform@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz#da6ae6c8fd77791b9ae21976720d116591e1c4aa" - integrity sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A== +"@vue/reactivity-transform@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.40.tgz#dc24b9074b26f0d9dd2034c6349f5bb2a51c86ac" + integrity sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw== dependencies: "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-core" "3.2.40" + "@vue/shared" "3.2.40" estree-walker "^2.0.2" magic-string "^0.25.7" -"@vue/reactivity@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.39.tgz#e6e3615fe2288d4232b104640ddabd0729a78c80" - integrity sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ== +"@vue/reactivity@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.40.tgz#ae65496f5b364e4e481c426f391568ed7d133cca" + integrity sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA== dependencies: - "@vue/shared" "3.2.39" + "@vue/shared" "3.2.40" -"@vue/runtime-core@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.39.tgz#dc1faccab11b3e81197aba33fb30c9447c1d2c84" - integrity sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g== +"@vue/runtime-core@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.40.tgz#e814358bf1b0ff6d4a6b4f8f62d9f341964fb275" + integrity sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg== dependencies: - "@vue/reactivity" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/reactivity" "3.2.40" + "@vue/shared" "3.2.40" -"@vue/runtime-dom@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.39.tgz#4a8cb132bcef316e8151c5ed07fc7272eb064614" - integrity sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA== +"@vue/runtime-dom@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.40.tgz#975119feac5ab703aa9bbbf37c9cc966602c8eab" + integrity sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww== dependencies: - "@vue/runtime-core" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/runtime-core" "3.2.40" + "@vue/shared" "3.2.40" csstype "^2.6.8" -"@vue/server-renderer@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.39.tgz#4358292d925233b0d8b54cf0513eaece8b2351c5" - integrity sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ== +"@vue/server-renderer@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.40.tgz#55eaac31f7105c3907e1895129bf4efb6b0ce393" + integrity sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w== dependencies: - "@vue/compiler-ssr" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-ssr" "3.2.40" + "@vue/shared" "3.2.40" -"@vue/shared@3.2.39": - version "3.2.39" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.39.tgz#302df167559a1a5156da162d8cc6760cef67f8e3" - integrity sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw== +"@vue/shared@3.2.40": + version "3.2.40" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.40.tgz#e57799da2a930b975321981fcee3d1e90ed257ae" + integrity sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ== acorn-jsx@^5.2.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: version "5.3.2" @@ -2182,10 +2185,10 @@ eslint-plugin-prettier@^4.2.1: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-vue@^9.5.1: - version "9.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.5.1.tgz#87ce075882cf7d824b95f46c224f91495fafcc54" - integrity sha512-Y0sL2RY7Xc9S8kNih9lbwHIDmewUg9bfas6WSzsOWRgDXhIHKxRBZYNAnVcXBFfE+bMWHUA5GLChl7TcTYUI8w== +eslint-plugin-vue@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.6.0.tgz#5d1825b93d54595b1ba97106843e1d28cf3bb291" + integrity sha512-zzySkJgVbFCylnG2+9MDF7N+2Rjze2y0bF8GyUNpFOnT8mCMfqqtLDJkHBuYu9N/psW1A6DVbQhPkP92E+qakA== dependencies: eslint-utils "^3.0.0" natural-compare "^1.4.0" @@ -2382,10 +2385,10 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^3.2.11, fast-glob@^3.2.5: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.5: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2915,7 +2918,7 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -local-pkg@^0.4.1: +local-pkg@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.2.tgz#13107310b77e74a0e513147a131a2ba288176c2f" integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg== @@ -3176,10 +3179,10 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -pathe@^0.3.0, pathe@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.5.tgz#87e5c1164ded1bebeb9dea5dab63563144062303" - integrity sha512-grU/QeYP0ChuE5kjU2/k8VtAeODzbernHlue0gTa27+ayGIu3wqYBIPGfP9r5xSqgCgDd4nWrjKXEfxMillByg== +pathe@^0.3.0, pathe@^0.3.7: + version "0.3.8" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.8.tgz#3584f03fda1981a6efe8bc24623d82cbb4219acb" + integrity sha512-c71n61F1skhj/jzZe+fWE9XDoTYjWbUwIKVwFftZ5IOgiX44BVkTkD+/803YDgR50tqeO4eXWxLyVHBLWQAD1g== perfect-debounce@^0.1.3: version "0.1.3" @@ -3772,28 +3775,28 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unocss@^0.45.21: - version "0.45.21" - resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.45.21.tgz#200e9e8361d4f6c3d0bf4c99c48c59c857798731" - integrity sha512-tx0FZEbRhl4pjo9LQaFXIBzSt3EqWujPdNaaLypVPIqPEwms49cXw4vi3JKDYrL9xbQ+Xf0izwPpCIwBxMprDA== +unocss@^0.45.26: + version "0.45.26" + resolved "https://registry.yarnpkg.com/unocss/-/unocss-0.45.26.tgz#ec1a79480ce6bbb58c64199203c2263c458b4b8f" + integrity sha512-d8mDD6YewHfSCA2uGbBzKY/UnQRSrIDgP7gI61Ll6XY+DcLCVMn0vc1BubQGEL2K0wP9wDsI8HDR6VzDI/0w9w== dependencies: - "@unocss/astro" "0.45.21" - "@unocss/cli" "0.45.21" - "@unocss/core" "0.45.21" - "@unocss/preset-attributify" "0.45.21" - "@unocss/preset-icons" "0.45.21" - "@unocss/preset-mini" "0.45.21" - "@unocss/preset-tagify" "0.45.21" - "@unocss/preset-typography" "0.45.21" - "@unocss/preset-uno" "0.45.21" - "@unocss/preset-web-fonts" "0.45.21" - "@unocss/preset-wind" "0.45.21" - "@unocss/reset" "0.45.21" - "@unocss/transformer-attributify-jsx" "0.45.21" - "@unocss/transformer-compile-class" "0.45.21" - "@unocss/transformer-directives" "0.45.21" - "@unocss/transformer-variant-group" "0.45.21" - "@unocss/vite" "0.45.21" + "@unocss/astro" "0.45.26" + "@unocss/cli" "0.45.26" + "@unocss/core" "0.45.26" + "@unocss/preset-attributify" "0.45.26" + "@unocss/preset-icons" "0.45.26" + "@unocss/preset-mini" "0.45.26" + "@unocss/preset-tagify" "0.45.26" + "@unocss/preset-typography" "0.45.26" + "@unocss/preset-uno" "0.45.26" + "@unocss/preset-web-fonts" "0.45.26" + "@unocss/preset-wind" "0.45.26" + "@unocss/reset" "0.45.26" + "@unocss/transformer-attributify-jsx" "0.45.26" + "@unocss/transformer-compile-class" "0.45.26" + "@unocss/transformer-directives" "0.45.26" + "@unocss/transformer-variant-group" "0.45.26" + "@unocss/vite" "0.45.26" upath@^1.2.0: version "1.2.0" @@ -3826,10 +3829,10 @@ vite-plugin-eslint@^1.8.1: "@types/eslint" "^8.4.5" rollup "^2.77.2" -vite-plugin-pwa@^0.12.7: - version "0.12.7" - resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.12.7.tgz#ff4de762926809c56aca43aad8b49a4c6727230e" - integrity sha512-salSwS1wWc1niNWfhX2W6gtfXmk+XESMz62w95EHLq6fSM2bDgDm1APmvq1nkDcxH6Onky7HxysCBKMzvOHXYg== +vite-plugin-pwa@^0.12.8: + version "0.12.8" + resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.12.8.tgz#9eee41771fd9b84bdd5fb548cf6e19ed09bfc2ae" + integrity sha512-pSiFHmnJGMQJJL8aJzQ8SaraZBSBPMGvGUkCNzheIq9UQCEk/eP3UmANNmS9eupuhIpTK8AdxTOHcaMcAqAbCA== dependencies: debug "^4.3.4" fast-glob "^3.2.11" @@ -3880,16 +3883,16 @@ vue-router@^4.1.5: dependencies: "@vue/devtools-api" "^6.1.4" -vue@^3.2.39: - version "3.2.39" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.39.tgz#de071c56c4c32c41cbd54e55f11404295c0dd62d" - integrity sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g== +vue@^3.2.40: + version "3.2.40" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.40.tgz#23f387f6f9b3a0767938db6751e4fb5900f0ee34" + integrity sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A== dependencies: - "@vue/compiler-dom" "3.2.39" - "@vue/compiler-sfc" "3.2.39" - "@vue/runtime-dom" "3.2.39" - "@vue/server-renderer" "3.2.39" - "@vue/shared" "3.2.39" + "@vue/compiler-dom" "3.2.40" + "@vue/compiler-sfc" "3.2.40" + "@vue/runtime-dom" "3.2.40" + "@vue/server-renderer" "3.2.40" + "@vue/shared" "3.2.40" webidl-conversions@^4.0.2: version "4.0.2"