From 9389be8b97c0b51fb7c6dce94416422520d1b07b Mon Sep 17 00:00:00 2001 From: leowang Date: Sun, 24 May 2026 10:38:02 +0800 Subject: [PATCH] Refactor UI toward HeroUI --- public/sw.js | 2 +- src/__mocks__/heroui-react.tsx | 127 +- src/app/admin/page.tsx | 3509 +++++++---------- src/app/douban/page.tsx | 17 +- src/app/globals.css | 624 +-- src/app/live/page.tsx | 375 +- src/app/login/page.tsx | 62 +- src/app/page.tsx | 215 +- src/app/play/page.tsx | 320 +- src/app/search/page.tsx | 174 +- src/app/shortdrama/page.tsx | 13 +- src/app/warning/page.tsx | 90 +- src/app/warning/warning-client.tsx | 72 + src/components/BackButton.tsx | 3 +- src/components/ChatModal.tsx | 1204 +++--- src/components/ContinueWatching.tsx | 33 +- src/components/DataMigration.tsx | 253 +- src/components/DoubanCustomSelector.tsx | 55 +- src/components/DoubanSelector.tsx | 167 +- src/components/EpgScrollableRow.tsx | 114 +- src/components/EpisodeSelector.tsx | 75 +- src/components/GlobalErrorIndicator.tsx | 44 +- src/components/MobileActionSheet.tsx | 41 +- src/components/MobileBottomNav.tsx | 65 +- src/components/MobileHeader.tsx | 20 +- src/components/MultiLevelSelector.tsx | 107 +- src/components/ScrollableRow.tsx | 21 +- src/components/SearchResultFilter.tsx | 130 +- src/components/SearchSuggestions.tsx | 33 +- src/components/ShortDramaSelector.tsx | 38 +- src/components/Sidebar.tsx | 228 +- src/components/ThemeManager.tsx | 236 +- src/components/ThemeToggle.tsx | 17 +- src/components/UserMenu.tsx | 1092 ++--- src/components/VersionPanel.tsx | 400 +- src/components/VideoCard.tsx | 232 +- src/components/WeekdaySelector.tsx | 15 +- .../__tests__/MultiLevelSelector.test.tsx | 5 +- .../__tests__/SearchResultFilter.test.tsx | 30 +- .../__tests__/WeekdaySelector.test.tsx | 8 +- src/components/ui/HeroPrimitives.tsx | 78 +- 41 files changed, 3902 insertions(+), 6442 deletions(-) create mode 100644 src/app/warning/warning-client.tsx diff --git a/public/sw.js b/public/sw.js index 41f368c..980cb97 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1 +1 @@ -if(!self.define){let e,a={};const s=(s,i)=>(s=new URL(s+".js",i).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(i,t)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(a[n])return;let c={};const r=e=>s(e,n),d={module:{uri:n},exports:c,require:r};a[n]=Promise.all(i.map(e=>d[e]||r(e))).then(e=>(t(...e),c))}}define(["./workbox-e9849328"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"77fad10ad50663097c31428d5b12a1e5"},{url:"/_next/static/chunks/1508-3c73cf19686cadb0.js",revision:"3c73cf19686cadb0"},{url:"/_next/static/chunks/173-1669782a013aeaf3.js",revision:"1669782a013aeaf3"},{url:"/_next/static/chunks/212-c92804cd5c36ccfe.js",revision:"c92804cd5c36ccfe"},{url:"/_next/static/chunks/2552-a2762fb5fbd854a1.js",revision:"a2762fb5fbd854a1"},{url:"/_next/static/chunks/3743-8a860a8640d68ebf.js",revision:"8a860a8640d68ebf"},{url:"/_next/static/chunks/3951-22078bdcaa5d4c34.js",revision:"22078bdcaa5d4c34"},{url:"/_next/static/chunks/5688-7cf3621a969b7c92.js",revision:"7cf3621a969b7c92"},{url:"/_next/static/chunks/569-d2b86132bd89d967.js",revision:"d2b86132bd89d967"},{url:"/_next/static/chunks/7870.7199854d4bfb7214.js",revision:"7199854d4bfb7214"},{url:"/_next/static/chunks/8280-6752c64629143d2d.js",revision:"6752c64629143d2d"},{url:"/_next/static/chunks/835-1311a5ac1bc1a551.js",revision:"1311a5ac1bc1a551"},{url:"/_next/static/chunks/861965c9-56382d4621d981d6.js",revision:"56382d4621d981d6"},{url:"/_next/static/chunks/8964-6d97c60ba451925c.js",revision:"6d97c60ba451925c"},{url:"/_next/static/chunks/91-d548b42997c8e531.js",revision:"d548b42997c8e531"},{url:"/_next/static/chunks/app/_not-found/page-78c67c2f5e3ce386.js",revision:"78c67c2f5e3ce386"},{url:"/_next/static/chunks/app/admin/page-02e3de5347e83d30.js",revision:"02e3de5347e83d30"},{url:"/_next/static/chunks/app/api/admin/category/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/config/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/config_file/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/config_subscription/fetch/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/data_migration/export/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/data_migration/import/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/live/refresh/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/live/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/reset/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/site/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/source/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/source/validate/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/theme/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/admin/user/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/avatar/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/change-password/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/conversations/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/friend-requests/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/friends/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/messages/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/online-users/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/search-users/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/chat/send-message/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/cron/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/danmu/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/detail/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/douban/categories/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/douban/recommends/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/douban/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/favorites/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/health/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/image-proxy/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/live/channels/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/live/epg/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/live/precheck/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/live/sources/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/login/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/logout/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/machine-code/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/playrecords/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/key/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/logo/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/m3u8/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/segment/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/video/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/proxy/video/test/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/search/one/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/search/resources/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/search/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/search/suggestions/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/search/ws/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/searchhistory/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/server-config/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/categories/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/latest/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/list/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/parse/all/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/parse/batch/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/parse/single/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/recommend/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/shortdrama/search/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/skipconfigs/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/api/websocket/route-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/app/douban/page-68a0f171df154de1.js",revision:"68a0f171df154de1"},{url:"/_next/static/chunks/app/layout-eee56bff5d56971d.js",revision:"eee56bff5d56971d"},{url:"/_next/static/chunks/app/live/page-c79dcfda0db9759f.js",revision:"c79dcfda0db9759f"},{url:"/_next/static/chunks/app/login/page-ce9a811dbe356faa.js",revision:"ce9a811dbe356faa"},{url:"/_next/static/chunks/app/page-9238457484c64e40.js",revision:"9238457484c64e40"},{url:"/_next/static/chunks/app/play/page-e93a3711ebc430b1.js",revision:"e93a3711ebc430b1"},{url:"/_next/static/chunks/app/search/page-7bda0bb1bce38bbc.js",revision:"7bda0bb1bce38bbc"},{url:"/_next/static/chunks/app/shortdrama/page-8e9d000974aeee47.js",revision:"8e9d000974aeee47"},{url:"/_next/static/chunks/app/warning/page-99ed47280272a40e.js",revision:"99ed47280272a40e"},{url:"/_next/static/chunks/deb030d4-c5209a2ceb93feb3.js",revision:"c5209a2ceb93feb3"},{url:"/_next/static/chunks/framework-38d00379d7a41d4e.js",revision:"38d00379d7a41d4e"},{url:"/_next/static/chunks/main-80d1b284ea08d4a6.js",revision:"80d1b284ea08d4a6"},{url:"/_next/static/chunks/main-app-2a0dd42e958c98cd.js",revision:"2a0dd42e958c98cd"},{url:"/_next/static/chunks/pages/_app-31f2fea9e30ebfdd.js",revision:"31f2fea9e30ebfdd"},{url:"/_next/static/chunks/pages/_error-55c33958c98286e9.js",revision:"55c33958c98286e9"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-4638d3f2b0151932.js",revision:"4638d3f2b0151932"},{url:"/_next/static/css/7d61d42bc9dabdcf.css",revision:"7d61d42bc9dabdcf"},{url:"/_next/static/css/ccce47fdcedd91d2.css",revision:"ccce47fdcedd91d2"},{url:"/_next/static/jB8ZT4m_Flo1Q5ANENOf0/_buildManifest.js",revision:"4740a4478df99a73dadc7052247a6d6d"},{url:"/_next/static/jB8ZT4m_Flo1Q5ANENOf0/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/favicon.ico",revision:"27cf5167605c37fe0dc1624590c96b7a"},{url:"/icons/icon-192x192.png",revision:"e214d3db80d2eb6ef7a911b3f9433b81"},{url:"/icons/icon-256x256.png",revision:"a5cd7490191373b684033f1b33c9d9da"},{url:"/icons/icon-384x384.png",revision:"8540e29a41812989d2d5bf8f61e1e755"},{url:"/icons/icon-512x512.png",revision:"3e5597604f2c5d99d7ab62b02f6863d3"},{url:"/logo.png",revision:"3da704450f5c0807a0c8ad9840461521"},{url:"/manifest.json",revision:"46f3847d5e244fb9c639fa86902e15db"},{url:"/robots.txt",revision:"0483b37fb6cf7455cefe516197e39241"},{url:"/screenshot1.png",revision:"d7de3a25686c5b9c9d8c8675bc6109fc"},{url:"/screenshot2.png",revision:"b0b715a3018d2f02aba5d94762473bb6"},{url:"/screenshot3.png",revision:"7e454c28e110e291ee12f494fb3cf40c"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:i})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;const a=e.pathname;return!a.startsWith("/api/auth/")&&!!a.startsWith("/api/")},new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")},new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>!(self.origin===e.origin),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}); +if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(c,i)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(a[t])return;let n={};const r=e=>s(e,t),o={module:{uri:t},exports:n,require:r};a[t]=Promise.all(c.map(e=>o[e]||r(e))).then(e=>(i(...e),n))}}define(["./workbox-e9849328"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"d2019de4567fa49ebf790c101ad36a37"},{url:"/_next/static/AOD2poraHkhTOa43IALRS/_buildManifest.js",revision:"4740a4478df99a73dadc7052247a6d6d"},{url:"/_next/static/AOD2poraHkhTOa43IALRS/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/_next/static/chunks/1214-239f55f0a9968ae6.js",revision:"239f55f0a9968ae6"},{url:"/_next/static/chunks/212-c92804cd5c36ccfe.js",revision:"c92804cd5c36ccfe"},{url:"/_next/static/chunks/260-1e4d5095326f1929.js",revision:"1e4d5095326f1929"},{url:"/_next/static/chunks/394-ed74bf23acf690cd.js",revision:"ed74bf23acf690cd"},{url:"/_next/static/chunks/4707-a33a49083c72c92d.js",revision:"a33a49083c72c92d"},{url:"/_next/static/chunks/5688-7cf3621a969b7c92.js",revision:"7cf3621a969b7c92"},{url:"/_next/static/chunks/569-39bc114fdf6847db.js",revision:"39bc114fdf6847db"},{url:"/_next/static/chunks/6247-0803ce791127ffc4.js",revision:"0803ce791127ffc4"},{url:"/_next/static/chunks/6837-0542749c23ed2959.js",revision:"0542749c23ed2959"},{url:"/_next/static/chunks/7422-b8e062ed75f815a0.js",revision:"b8e062ed75f815a0"},{url:"/_next/static/chunks/7678-2c39a82db7ab4d79.js",revision:"2c39a82db7ab4d79"},{url:"/_next/static/chunks/7809-e061e97228be14bd.js",revision:"e061e97228be14bd"},{url:"/_next/static/chunks/7870.7199854d4bfb7214.js",revision:"7199854d4bfb7214"},{url:"/_next/static/chunks/835-1311a5ac1bc1a551.js",revision:"1311a5ac1bc1a551"},{url:"/_next/static/chunks/861965c9-56382d4621d981d6.js",revision:"56382d4621d981d6"},{url:"/_next/static/chunks/8964-a51299cec5301680.js",revision:"a51299cec5301680"},{url:"/_next/static/chunks/app/_not-found/page-eaf37efff24851e5.js",revision:"eaf37efff24851e5"},{url:"/_next/static/chunks/app/admin/page-0f29387e2be4272e.js",revision:"0f29387e2be4272e"},{url:"/_next/static/chunks/app/api/admin/category/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/config/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/config_file/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/config_subscription/fetch/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/data_migration/export/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/data_migration/import/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/live/refresh/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/live/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/reset/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/site/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/source/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/source/validate/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/theme/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/admin/user/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/avatar/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/change-password/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/conversations/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/friend-requests/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/friends/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/messages/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/online-users/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/search-users/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/chat/send-message/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/cron/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/danmu/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/detail/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/douban/categories/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/douban/recommends/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/douban/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/favorites/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/health/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/image-proxy/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/live/channels/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/live/epg/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/live/precheck/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/live/sources/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/login/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/logout/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/machine-code/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/playrecords/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/key/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/logo/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/m3u8/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/segment/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/video/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/proxy/video/test/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/search/one/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/search/resources/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/search/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/search/suggestions/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/search/ws/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/searchhistory/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/server-config/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/categories/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/latest/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/list/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/parse/all/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/parse/batch/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/parse/single/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/recommend/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/shortdrama/search/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/skipconfigs/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/api/websocket/route-86f2c28a81077b9d.js",revision:"86f2c28a81077b9d"},{url:"/_next/static/chunks/app/douban/page-f54a581a7ad3f486.js",revision:"f54a581a7ad3f486"},{url:"/_next/static/chunks/app/layout-91dc4f35c822836a.js",revision:"91dc4f35c822836a"},{url:"/_next/static/chunks/app/live/page-5317e86b4e682269.js",revision:"5317e86b4e682269"},{url:"/_next/static/chunks/app/login/page-4cea8d8ecc9cdf94.js",revision:"4cea8d8ecc9cdf94"},{url:"/_next/static/chunks/app/page-e783191d2c33ca32.js",revision:"e783191d2c33ca32"},{url:"/_next/static/chunks/app/play/page-f7b5e4a15ca70bf8.js",revision:"f7b5e4a15ca70bf8"},{url:"/_next/static/chunks/app/search/page-2d08139976f3568c.js",revision:"2d08139976f3568c"},{url:"/_next/static/chunks/app/shortdrama/page-103d01c7dd76fc57.js",revision:"103d01c7dd76fc57"},{url:"/_next/static/chunks/app/warning/page-7e49052845300dc2.js",revision:"7e49052845300dc2"},{url:"/_next/static/chunks/deb030d4-c5209a2ceb93feb3.js",revision:"c5209a2ceb93feb3"},{url:"/_next/static/chunks/framework-38d00379d7a41d4e.js",revision:"38d00379d7a41d4e"},{url:"/_next/static/chunks/main-80d1b284ea08d4a6.js",revision:"80d1b284ea08d4a6"},{url:"/_next/static/chunks/main-app-2a0dd42e958c98cd.js",revision:"2a0dd42e958c98cd"},{url:"/_next/static/chunks/pages/_app-31f2fea9e30ebfdd.js",revision:"31f2fea9e30ebfdd"},{url:"/_next/static/chunks/pages/_error-55c33958c98286e9.js",revision:"55c33958c98286e9"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-4638d3f2b0151932.js",revision:"4638d3f2b0151932"},{url:"/_next/static/css/ccce47fdcedd91d2.css",revision:"ccce47fdcedd91d2"},{url:"/_next/static/css/e4073aa98cbbf8c1.css",revision:"e4073aa98cbbf8c1"},{url:"/favicon.ico",revision:"27cf5167605c37fe0dc1624590c96b7a"},{url:"/icons/icon-192x192.png",revision:"e214d3db80d2eb6ef7a911b3f9433b81"},{url:"/icons/icon-256x256.png",revision:"a5cd7490191373b684033f1b33c9d9da"},{url:"/icons/icon-384x384.png",revision:"8540e29a41812989d2d5bf8f61e1e755"},{url:"/icons/icon-512x512.png",revision:"3e5597604f2c5d99d7ab62b02f6863d3"},{url:"/logo.png",revision:"3da704450f5c0807a0c8ad9840461521"},{url:"/manifest.json",revision:"46f3847d5e244fb9c639fa86902e15db"},{url:"/robots.txt",revision:"0483b37fb6cf7455cefe516197e39241"},{url:"/screenshot1.png",revision:"d7de3a25686c5b9c9d8c8675bc6109fc"},{url:"/screenshot2.png",revision:"b0b715a3018d2f02aba5d94762473bb6"},{url:"/screenshot3.png",revision:"7e454c28e110e291ee12f494fb3cf40c"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:c})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:json|xml|csv)$/i,new e.NetworkFirst({cacheName:"static-data-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;const a=e.pathname;return!a.startsWith("/api/auth/")&&!!a.startsWith("/api/")},new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>{if(!(self.origin===e.origin))return!1;return!e.pathname.startsWith("/api/")},new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(({url:e})=>!(self.origin===e.origin),new e.NetworkFirst({cacheName:"cross-origin",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:3600})]}),"GET")}); diff --git a/src/__mocks__/heroui-react.tsx b/src/__mocks__/heroui-react.tsx index c2abb70..11ff17d 100644 --- a/src/__mocks__/heroui-react.tsx +++ b/src/__mocks__/heroui-react.tsx @@ -10,6 +10,10 @@ const MenuActionContext = createContext<{ onAction?: (key: React.Key) => void; selectedKeys?: Iterable; }>({}); +const SelectContext = createContext<{ + value?: React.Key | React.Key[] | null; + onChange?: (value: React.Key | React.Key[] | null) => void; +}>({}); type OverlayStateValue = { isOpen: boolean; @@ -370,11 +374,132 @@ export const Dropdown = Object.assign(DropdownRoot, { ItemIndicator: () =>