@serifpersia/dango 3.7.3 → 3.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +10 -6
  2. package/client/dist/assets/{AnimeCard-BVufFeLC.js → AnimeCard-BxhPLWBG.js} +1 -1
  3. package/client/dist/assets/{AnimeInfo-Dihook4h.js → AnimeInfo-DcpKPBLS.js} +1 -1
  4. package/client/dist/assets/{AnimeInfoPage-K0ErjilQ.js → AnimeInfoPage-jKNSPHbX.js} +2 -2
  5. package/client/dist/assets/{Asmr-CP7vVwsh.js → Asmr-DlKBykO-.js} +2 -2
  6. package/client/dist/assets/Asmr-Do89pEHG.css +1 -0
  7. package/client/dist/assets/{AsmrResetProgressModal-cYO4Sr2k.js → AsmrResetProgressModal-DPHPLqPo.js} +1 -1
  8. package/client/dist/assets/{Home-BYuAVKgx.js → Home-D7-FNOmo.js} +1 -1
  9. package/client/dist/assets/{Insights-Bx01GySp.js → Insights-C9HufjGJ.js} +1 -1
  10. package/client/dist/assets/{LibraryListPage-BnrEDG8j.js → LibraryListPage-BT_xDjEq.js} +1 -1
  11. package/client/dist/assets/{ListeningList-kRSLAo3B.js → ListeningList-DL1rdCRi.js} +1 -1
  12. package/client/dist/assets/{Manga-COhyMd3K.js → Manga-BfFRq7eK.js} +1 -1
  13. package/client/dist/assets/{MangaInfoPage-LTEvl_nL.js → MangaInfoPage-wBJjn2FL.js} +1 -1
  14. package/client/dist/assets/{MangaReadPage-sEwzyBQ7.js → MangaReadPage-BAgsRqxt.js} +1 -1
  15. package/client/dist/assets/{MangaResetProgressModal-CbMR36Zu.js → MangaResetProgressModal-Br5zqZ-U.js} +1 -1
  16. package/client/dist/assets/{Mature-CMvs_-gf.js → Mature-MO7ZwJVT.js} +1 -1
  17. package/client/dist/assets/{MatureConsentModal-BnB-RHYQ.js → MatureConsentModal-Beq4JL0b.js} +1 -1
  18. package/client/dist/assets/{MediaCard-B0PJStxp.css → MediaCard-CoyScn-7.css} +1 -1
  19. package/client/dist/assets/MediaCard-lz7FdOe_.js +1 -0
  20. package/client/dist/assets/{OptionListMenu-onM2KK2X.js → OptionListMenu-BSUcso28.js} +1 -1
  21. package/client/dist/assets/Player-CnLC-x2S.js +56 -0
  22. package/client/dist/assets/{PlayerSettings-BfSv-hut.js → PlayerSettings-kqYmlLDl.js} +1 -1
  23. package/client/dist/assets/{QueueOptionsButton-B4Re8F3V.js → QueueOptionsButton-B8xuoYlH.js} +1 -1
  24. package/client/dist/assets/{QueueRail-Dkx_M6ng.js → QueueRail-D1FmM-GR.js} +1 -1
  25. package/client/dist/assets/{ReadingList-C--ZvTe2.js → ReadingList-D8ZiOnWi.js} +1 -1
  26. package/client/dist/assets/{ResetProgressModal-BuESoxbY.js → ResetProgressModal-0PvvM2XJ.js} +1 -1
  27. package/client/dist/assets/{Search-CEErwr88.js → Search-D1T-PrGX.js} +1 -1
  28. package/client/dist/assets/Settings-DALBQcFc.js +21 -0
  29. package/client/dist/assets/Settings-DYjRBgpE.css +1 -0
  30. package/client/dist/assets/{SkeletonGrid-QWMGLCGp.js → SkeletonGrid-pA-dcLBM.js} +1 -1
  31. package/client/dist/assets/Trackers-CvO6aWVx.css +1 -0
  32. package/client/dist/assets/Trackers-D68sJf1y.js +2 -0
  33. package/client/dist/assets/{Tv-C6F9655r.js → Tv-DO-WeaMv.js} +1 -1
  34. package/client/dist/assets/{TvInfo-BajXP7JJ.js → TvInfo-CpPIymn8.js} +1 -1
  35. package/client/dist/assets/{TvPopup-DZtX79Ol.js → TvPopup-BwGJ1Tjg.js} +1 -1
  36. package/client/dist/assets/{TvSearch-DcWcxRb1.js → TvSearch-D9SrfJjK.js} +1 -1
  37. package/client/dist/assets/{TvWatchlist-Cf_25dKi.js → TvWatchlist-25tpA8ln.js} +1 -1
  38. package/client/dist/assets/{Watchlist-DBmU8PNR.js → Watchlist-mlZQTcqR.js} +1 -1
  39. package/client/dist/assets/{hls-Bi-DS5KL.js → hls-qvAoYTJt.js} +1 -1
  40. package/client/dist/assets/index-DlcgJVM6.js +178 -0
  41. package/client/dist/assets/{index-B7katXv0.css → index-ZssheiHa.css} +1 -1
  42. package/client/dist/assets/{libraryInvalidation-DI-v-DQ1.js → libraryInvalidation-DdnIPcOQ.js} +1 -1
  43. package/client/dist/assets/{useAnimeInfoData-DpUA78Mv.js → useAnimeInfoData-tcGkDs2b.js} +1 -1
  44. package/client/dist/assets/{useAsmr-BwyYDnlP.js → useAsmr-B-FYJW2L.js} +1 -1
  45. package/client/dist/assets/{useAsmrPopup-BrrEaBlV.js → useAsmrPopup-Ct9jC6X6.js} +1 -1
  46. package/client/dist/assets/{useMangaLibrary-BAUaug-u.js → useMangaLibrary-BacTdrw2.js} +1 -1
  47. package/client/dist/assets/{useMangaPopup-3Lx5tEub.js → useMangaPopup-B_wRaMyP.js} +1 -1
  48. package/client/dist/assets/usePlaybackEnd-DLFOYx3Q.css +1 -0
  49. package/client/dist/assets/{usePlaybackEnd-CuDnNZ8o.js → usePlaybackEnd-DuEfjKb8.js} +2 -2
  50. package/client/dist/assets/{useProviders-CKqOSX5-.js → useProviders-D0XOHCsj.js} +1 -1
  51. package/client/dist/assets/{useTv-CZB47zUF.js → useTv-IidbSQU4.js} +1 -1
  52. package/client/dist/assets/{useTvLibrary-BGz7Unv_.js → useTvLibrary-DiCSdUOj.js} +1 -1
  53. package/client/dist/index.html +2 -2
  54. package/package.json +2 -2
  55. package/server/dist/server.js +251 -246
  56. package/server/dist/shipped-defaults.js +1 -1
  57. package/server/package.json +1 -1
  58. package/client/dist/assets/Asmr-Dl1EZqaI.css +0 -1
  59. package/client/dist/assets/MediaCard-hWGCEHWx.js +0 -1
  60. package/client/dist/assets/Player-2YKevlG4.js +0 -56
  61. package/client/dist/assets/Settings-BEHII_8K.css +0 -1
  62. package/client/dist/assets/Settings-C-QEEujv.js +0 -21
  63. package/client/dist/assets/Trackers-1i4Hd5D3.js +0 -2
  64. package/client/dist/assets/Trackers-D5XBOCDp.css +0 -1
  65. package/client/dist/assets/index-DB81Su4I.js +0 -178
  66. package/client/dist/assets/usePlaybackEnd-BtUHM1mW.css +0 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ _A local-first anime web app focused on performance, privacy, and personal libra
6
6
 
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-897cff?style=for-the-badge)](https://opensource.org/licenses/MIT)
8
8
  ![Github stars](https://img.shields.io/github/stars/serifpersia/dango.svg?style=for-the-badge&color=897cff)
9
- [![App version](https://img.shields.io/badge/dango-3.7.3-897cff?style=for-the-badge)](https://github.com/serifpersia/dango)
9
+ [![App version](https://img.shields.io/badge/dango-3.7.5-897cff?style=for-the-badge)](https://github.com/serifpersia/dango)
10
10
 
11
11
  [![Provider Status](https://dango-users-badge.ramiserifpersia.workers.dev/?provider=all)](https://dango-users-badge.ramiserifpersia.workers.dev/?view=status)
12
12
 
@@ -25,7 +25,7 @@ _A local-first anime web app focused on performance, privacy, and personal libra
25
25
  - **Multi-Provider Playback:** Switch seamlessly between multiple third-party streaming providers directly within the player interface.
26
26
  - **Watchlist Tracking:** Categorize titles (Watching, Completed, Plan to Watch) with fine-grained progress states.
27
27
  - **Library Insights:** Built-in dashboard tracking viewing habits, personal stats, and completion ratios.
28
- - **Trackers & Sync:** Bi-directional AniList sync and one-way MyAnimeList list imports.
28
+ - **Trackers & Sync:** Bi-directional AniList and MyAnimeList sync for anime and manga, plus username and XML list imports.
29
29
  - **Expanded Media Hub:** Dedicated interfaces for Manga, ASMR, and TV/Movies.
30
30
  - **LAN Security:** Optional LAN authentication with password enforcement for multi-device local network deployments.
31
31
 
@@ -267,11 +267,15 @@ Used as a manual fallback for services like Mega, Dropbox, or custom WebDAV:
267
267
 
268
268
  ### AniList
269
269
 
270
- Bidirectional sync is fully supported:
270
+ Bidirectional sync for anime and manga. Go to **Trackers**, connect, then **Sync Now** (anime) / **Start Sync** (manga). Progress and statuses merge both ways; remote-only entries import, local-only entries push. AniList requires no setup.
271
271
 
272
- - Go to **Trackers** in the navigation panel.
273
- - Select **Sync Now**.
274
- - Local episode progress updates remotely; external catalog updates merge safely into your local database without overwriting uncommitted states.
272
+ ### MyAnimeList
273
+
274
+ Release builds use Dango's auth worker (no setup). For your own app, create one at [MAL API settings](https://myanimelist.net/apiconfig), register `your-origin/api/tracker/mal/callback`, and paste client ID/secret in **Trackers** (or set `MAL_CLIENT_ID`/`MAL_CLIENT_SECRET`). MAL needs the secret even with PKCE. `MAL_AUTH_WORKER_URL` points self-built releases at a worker.
275
+
276
+ **Sync Now** merges your authenticated list both ways. Remote-only entries import, local-only push, missing entries are never deleted. Unmatched titles are reported, not guessed. Username and XML imports work without login. Manga sync links by exact title first, then searches up to 25 unlinked titles per sync.
277
+
278
+ Progress is pushed on **Sync Now** (and on playback once an episode reaches 80% for the active tracker). MAL tokens refresh automatically; credentials stay on this server and are excluded from library exports. Disconnect removes local tokens. Server needs HTTPS access to `myanimelist.net`, `api.myanimelist.net`, and `graphql.anilist.co`.
275
279
 
276
280
  ---
277
281
 
@@ -1 +1 @@
1
- import{T as A,u as o,N as M,S as $}from"./vendor-core-DfaOB3Rn.js";import{I as b}from"./vendor-icons-DrybRNxP.js";import{u as B}from"./useAnimeInfoData-DpUA78Mv.js";import{d as C,s as P,g as v}from"./index-DB81Su4I.js";import{Q as D}from"./QueueOptionsButton-B4Re8F3V.js";import{p as y,a as I,m as N,M as _}from"./MediaCard-hWGCEHWx.js";import{C as w}from"./playbackCompletion-IPHm9fp5.js";const k=({showId:e,anchorRect:r,onMouseEnter:d,onMouseLeave:c,onRequestClose:u})=>{const{showMeta:t,loadingMeta:i,inWatchlist:h,toggleWatchlist:m}=B(e),{titlePreference:s}=C(),n=A(()=>t?.name?s==="name"?t.name:s==="nativeName"?t.names?.native||t.name:s==="englishName"&&t.names?.english||t.name:"",[t,s]),l=[];t?.score&&l.push({icon:"star",label:String(t.score),accent:!0}),t?.status&&l.push({icon:"tv",label:t.status});const f=Array.isArray(t?.genres)&&t.genres.length>0?t.genres.filter(Boolean).slice(0,4).map(a=>typeof a=="string"?a:a?.name).filter(a=>!!a):[];return o(I,{anchorRect:r,title:n,loading:i,error:t?void 0:"Failed to load info.",meta:l,genres:f,synopsis:t?.description?P(t.description):"No synopsis available.",primaryAction:{to:`/watch/${t?.id||e}`,label:"Watch now",icon:"play"},secondaryAction:{to:`/anime/${t?.id||e}`,label:"Read more"},bookmarked:h,onToggleBookmark:m,extraActions:a=>t?o(D,{showId:e,showName:t.name||t.names?.romaji,showThumbnail:t.thumbnail,nativeName:t.names?.native,englishName:t.names?.english,showType:t.type,className:y.watchlistBtn,activeClassName:y.active,align:"left",onMenuOpenChange:a}):null,onMouseEnter:d,onMouseLeave:c,onRequestClose:u})},j=M(({anime:e,continueWatching:r=!1,onRemove:d,config:c,layout:u="vertical"})=>{const t=e.currentTime||0,i=e.duration||0,h=t>5&&i>5&&t<i*w,m=t>0&&(i<=5||t>=i*w),s=e.episodeNumber,n=r?{pathname:s?`/watch/${e._id}/${s}`:`/watch/${e._id}`,state:{name:e.name,thumbnail:e.thumbnail||"",nativeName:e.nativeName,englishName:e.englishName,type:e.type}}:s?`/watch/${e._id}/${s}`:`/anime/${e._id}`,l=(()=>{if(typeof n=="string")return n.startsWith("/watch/");const p=n.pathname;return typeof p=="string"&&p.startsWith("/watch/")})(),f=r&&s?`EP ${s}`:e.watchedCount!==void 0&&e.watchedCount>0?`EP ${e.watchedCount}`:null,a=[e.airTime,e.aired===!1&&e.nextEpisodeAirDate?`· ${e.nextEpisodeAirDate.split(",")[0]}`:""].filter(Boolean).join(" "),E=e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"),T=o($,{children:[(e.availableEpisodesDetail?.sub||e.availableEpisodes?.sub)&&o("div",{className:N.metaItem,children:[o(b,{name:"closed-captioning",size:10}),e.availableEpisodesDetail?.sub?.length??e.availableEpisodes?.sub]}),(e.availableEpisodesDetail?.dub||e.availableEpisodes?.dub)&&o("div",{className:N.metaItem,children:[o(b,{name:"microphone",size:10}),e.availableEpisodesDetail?.dub?.length??e.availableEpisodes?.dub]})]});return o(_,{item:{id:e.id||e.showId||e._id,title:e.name,nativeName:e.nativeName,englishName:e.englishName,thumbnail:e.thumbnail,typeBadge:e.type||"TV",chapterBadge:f,airMeta:a||void 0,isAdult:E,notAired:e.aired===!1},linkTo:n,hoverIcon:l?"play":"info",progress:h?{percent:t/i*100,label:`${v(t)} / ${v(i)}`}:m?{percent:100,label:"Watched"}:void 0,showProgress:r,metaRow:T,display:c,layout:u,onRemove:d,showRemoveButton:c?.elements?.poster?.removeButton??(r&&!!d),showInfoButton:!r,enrichedId:e._id,renderPopup:(p,g)=>o(k,{showId:e._id,anchorRect:p,onMouseEnter:g.onMouseEnter,onMouseLeave:g.onMouseLeave,onRequestClose:g.close})})});export{j as A};
1
+ import{T as A,u as o,N as M,S as $}from"./vendor-core-DfaOB3Rn.js";import{I as b}from"./vendor-icons-DrybRNxP.js";import{u as B}from"./useAnimeInfoData-tcGkDs2b.js";import{d as C,s as P,g as v}from"./index-DlcgJVM6.js";import{Q as D}from"./QueueOptionsButton-B8xuoYlH.js";import{p as y,a as I,m as N,M as _}from"./MediaCard-lz7FdOe_.js";import{C as w}from"./playbackCompletion-IPHm9fp5.js";const k=({showId:e,anchorRect:r,onMouseEnter:d,onMouseLeave:c,onRequestClose:u})=>{const{showMeta:t,loadingMeta:i,inWatchlist:h,toggleWatchlist:m}=B(e),{titlePreference:s}=C(),n=A(()=>t?.name?s==="name"?t.name:s==="nativeName"?t.names?.native||t.name:s==="englishName"&&t.names?.english||t.name:"",[t,s]),l=[];t?.score&&l.push({icon:"star",label:String(t.score),accent:!0}),t?.status&&l.push({icon:"tv",label:t.status});const f=Array.isArray(t?.genres)&&t.genres.length>0?t.genres.filter(Boolean).slice(0,4).map(a=>typeof a=="string"?a:a?.name).filter(a=>!!a):[];return o(I,{anchorRect:r,title:n,loading:i,error:t?void 0:"Failed to load info.",meta:l,genres:f,synopsis:t?.description?P(t.description):"No synopsis available.",primaryAction:{to:`/watch/${t?.id||e}`,label:"Watch now",icon:"play"},secondaryAction:{to:`/anime/${t?.id||e}`,label:"Read more"},bookmarked:h,onToggleBookmark:m,extraActions:a=>t?o(D,{showId:e,showName:t.name||t.names?.romaji,showThumbnail:t.thumbnail,nativeName:t.names?.native,englishName:t.names?.english,showType:t.type,className:y.watchlistBtn,activeClassName:y.active,align:"left",onMenuOpenChange:a}):null,onMouseEnter:d,onMouseLeave:c,onRequestClose:u})},j=M(({anime:e,continueWatching:r=!1,onRemove:d,config:c,layout:u="vertical"})=>{const t=e.currentTime||0,i=e.duration||0,h=t>5&&i>5&&t<i*w,m=t>0&&(i<=5||t>=i*w),s=e.episodeNumber,n=r?{pathname:s?`/watch/${e._id}/${s}`:`/watch/${e._id}`,state:{name:e.name,thumbnail:e.thumbnail||"",nativeName:e.nativeName,englishName:e.englishName,type:e.type}}:s?`/watch/${e._id}/${s}`:`/anime/${e._id}`,l=(()=>{if(typeof n=="string")return n.startsWith("/watch/");const p=n.pathname;return typeof p=="string"&&p.startsWith("/watch/")})(),f=r&&s?`EP ${s}`:e.watchedCount!==void 0&&e.watchedCount>0?`EP ${e.watchedCount}`:null,a=[e.airTime,e.aired===!1&&e.nextEpisodeAirDate?`· ${e.nextEpisodeAirDate.split(",")[0]}`:""].filter(Boolean).join(" "),E=e.isAdult||e.rating==="R+"||e.rating==="Rx"||e.rating?.includes("17+"),T=o($,{children:[(e.availableEpisodesDetail?.sub||e.availableEpisodes?.sub)&&o("div",{className:N.metaItem,children:[o(b,{name:"closed-captioning",size:10}),e.availableEpisodesDetail?.sub?.length??e.availableEpisodes?.sub]}),(e.availableEpisodesDetail?.dub||e.availableEpisodes?.dub)&&o("div",{className:N.metaItem,children:[o(b,{name:"microphone",size:10}),e.availableEpisodesDetail?.dub?.length??e.availableEpisodes?.dub]})]});return o(_,{item:{id:e.id||e.showId||e._id,title:e.name,nativeName:e.nativeName,englishName:e.englishName,thumbnail:e.thumbnail,typeBadge:e.type||"TV",chapterBadge:f,airMeta:a||void 0,isAdult:E,notAired:e.aired===!1},linkTo:n,hoverIcon:l?"play":"info",progress:h?{percent:t/i*100,label:`${v(t)} / ${v(i)}`}:m?{percent:100,label:"Watched"}:void 0,showProgress:r,metaRow:T,display:c,layout:u,onRemove:d,showRemoveButton:c?.elements?.poster?.removeButton??(r&&!!d),showInfoButton:!r,enrichedId:e._id,renderPopup:(p,g)=>o(k,{showId:e._id,anchorRect:p,onMouseEnter:g.onMouseEnter,onMouseLeave:g.onMouseLeave,onRequestClose:g.close})})});export{j as A};
@@ -1 +1 @@
1
- import{o as y,a as I,d as T,h as b,T as S,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{u as B}from"./useAnimeInfoData-DpUA78Mv.js";import{d as w,e as M,f as m,s as x,M as A,B as p}from"./index-DB81Su4I.js";import{A as D}from"./AnimeMetaDetails-D8WIiO4b.js";import{S as G}from"./SynopsisText-B3Sa5pRv.js";import{Q as P}from"./QueueOptionsButton-B4Re8F3V.js";import"./vendor-query-BBT5_sHx.js";import"./useIsMobile-Dvx1uJ82.js";import"./vendor-ui-3qrARCPr.js";const W="_container_1obln_1",O="_heroSection_1obln_11",$="_bannerContainer_1obln_17",U="_banner_1obln_17",j="_bannerOverlay_1obln_37",q="_heroContent_1obln_49",z="_posterContainer_1obln_62",V="_floatIn_1obln_1",Q="_poster_1obln_62",E="_infoGlass_1obln_86",H="_slideUpIn_1obln_1",F="_title_1obln_100",J="_quickMeta_1obln_109",K="_metaItem_1obln_117",L="_iconStar_1obln_126",R="_iconTv_1obln_129",X="_iconType_1obln_132",Y="_iconClock_1obln_135",Z="_genres_1obln_139",ee="_genre_1obln_139",ne="_infoColumns_1obln_165",te="_synopsisSection_1obln_180",oe="_sectionTitleSmall_1obln_188",se="_actions_1obln_210",ae="_watchBtn_1obln_216",ie="_watchlistBtn_1obln_238",le="_active_1obln_258",ce="_detailsToggleBtn_1obln_265",re="_expandedContent_1obln_288",me="_fadeIn_1obln_1",_e="_detailsGridContainer_1obln_293",de="_detailItem_1obln_301",he="_airingValue_1obln_320",be="_loadingDetails_1obln_325",pe="_spinner_1obln_334",ue="_spin_1obln_334",ve="_heroSkeleton_1obln_349",ge="_skeletonBanner_1obln_353",ke="_skeletonPoster_1obln_354",fe="_skeletonTitle_1obln_355",Ne="_skeletonMeta_1obln_356",Ce="_skeletonDesc_1obln_357",ye="_skeletonActions_1obln_358",Ie="_skeletonContent_1obln_391",Te="_skeletonInfo_1obln_405",t={container:W,heroSection:O,bannerContainer:$,banner:U,bannerOverlay:j,heroContent:q,posterContainer:z,floatIn:V,poster:Q,infoGlass:E,slideUpIn:H,title:F,quickMeta:J,metaItem:K,iconStar:L,iconTv:R,iconType:X,iconClock:Y,genres:Z,genre:ee,infoColumns:ne,synopsisSection:te,sectionTitleSmall:oe,actions:se,watchBtn:ae,watchlistBtn:ie,active:le,detailsToggleBtn:ce,expandedContent:re,fadeIn:me,detailsGridContainer:_e,detailItem:de,airingValue:he,loadingDetails:be,spinner:pe,spin:ue,heroSkeleton:ve,skeletonBanner:ge,skeletonPoster:ke,skeletonTitle:fe,skeletonMeta:Ne,skeletonDesc:Ce,skeletonActions:ye,"skeleton-wave":"_skeleton-wave_1obln_1",skeletonContent:Ie,skeletonInfo:Te};function Oe(){const{id:s}=y(),a=I(),{titlePreference:l}=w(),[i,u]=T(!1),{showMeta:n,loadingMeta:v,toggleWatchlist:g,inWatchlist:c}=B(s),{hasConsent:k,grant:f}=M();b(()=>{s&&n?.id&&n.id!==s&&a(`/anime/${n.id}`,{replace:!0})},[s,n,a]),b(()=>{document.title=n?.name?`${n.name} - dango`:"Anime - dango"},[n?.name]);const N=()=>n?.name?l==="name"?n.name:l==="nativeName"?n.names?.native||n.name:l==="englishName"&&n.names?.english||n.name:"",C=()=>{s&&a(`/watch/${s}`)},_=S(()=>n?.bannerImage?m(n.bannerImage):n?.thumbnail?m(n.thumbnail,1200,450):"",[n?.bannerImage,n?.thumbnail]);if(v||!n?.name)return e("div",{className:t.container,children:e("div",{className:t.heroSkeleton,children:[e("div",{className:t.skeletonBanner}),e("div",{className:t.skeletonContent,children:[e("div",{className:t.skeletonPoster}),e("div",{className:t.skeletonInfo,children:[e("div",{className:t.skeletonTitle}),e("div",{className:t.skeletonMeta}),e("div",{className:t.skeletonDesc}),e("div",{className:t.skeletonActions})]})]})]})});const d=n.isAdult===!0&&!k;return e("div",{className:t.container,style:d?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:[e("div",{className:t.heroSection,children:[e("div",{className:t.bannerContainer,children:[e("div",{className:t.banner,style:_?{backgroundImage:`url(${_})`}:void 0}),e("div",{className:t.bannerOverlay})]}),e("div",{className:t.heroContent,children:[e("div",{className:t.posterContainer,children:e("img",{src:m(n.thumbnail||"",320,480),alt:n.name,className:t.poster,decoding:"async"})}),e("div",{className:t.infoGlass,children:[e("div",{children:[e("h1",{className:t.title,children:N()}),e("div",{className:t.quickMeta,children:[n.score&&e("div",{className:t.metaItem,children:[e(o,{name:"star",className:t.iconStar}),e("span",{children:n.score})]}),n.status&&e("div",{className:t.metaItem,children:[e(o,{name:"tv",className:t.iconTv}),e("span",{children:n.status})]}),n.type&&e("div",{className:t.metaItem,children:[e(o,{name:"layer-group",className:t.iconType}),e("span",{children:n.type})]})]}),Array.isArray(n.genres)&&n.genres.length>0&&e("div",{className:t.genres,children:n.genres.filter(Boolean).slice(0,5).map(r=>{const h=typeof r=="string"?r:r?.name;return e("span",{className:t.genre,children:h},h)})})]}),e("div",{className:t.infoColumns,children:[e("div",{className:t.synopsisSection,children:[e("h2",{className:t.sectionTitleSmall,children:"Synopsis"}),e(G,{text:x(n.description),emptyText:"No description available."}),e("button",{className:t.detailsToggleBtn,onClick:()=>{u(!i)},children:[i?e(o,{name:"chevron-up"}):e(o,{name:"chevron-down"}),i?"Hide Details":"Show Details"]})]}),i&&e("div",{className:t.expandedContent,children:e(D,{showMeta:n,styles:t})})]}),e("div",{className:t.actions,children:[e("button",{className:t.watchBtn,onClick:C,children:[e(o,{name:"play",size:14}),"Start Watching"]}),e("button",{className:`${t.watchlistBtn} ${c?t.active:""}`,onClick:g,children:[c?e(o,{name:"check",size:14}):e(o,{name:"plus",size:14}),c?"In Watchlist":"Add to Watchlist"]}),e(P,{showId:s,showName:n.name||n.names?.romaji,showThumbnail:n.thumbnail,nativeName:n.names?.native,englishName:n.names?.english,showType:n.type,className:t.watchlistBtn,activeClassName:t.active})]})]})]})]}),d&&e(A,{isOpen:!0,title:"Content Warning",onClose:()=>a("/"),children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e("p",{children:"This title contains mature content intended for adult audiences."}),e("p",{children:["By proceeding, you confirm that you are ",e("strong",{children:"18 years of age or older"})," (or the age of majority in your jurisdiction) and wish to view this content."]}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(p,{variant:"secondary",onClick:()=>a("/"),children:"Go Back"}),e(p,{onClick:f,children:"I'm 18+, Continue"})]})]})})]})}export{Oe as default};
1
+ import{o as y,a as I,d as T,h as b,T as S,u as e}from"./vendor-core-DfaOB3Rn.js";import{I as o}from"./vendor-icons-DrybRNxP.js";import{u as B}from"./useAnimeInfoData-tcGkDs2b.js";import{d as w,e as M,f as m,s as x,M as A,B as p}from"./index-DlcgJVM6.js";import{A as D}from"./AnimeMetaDetails-D8WIiO4b.js";import{S as G}from"./SynopsisText-B3Sa5pRv.js";import{Q as P}from"./QueueOptionsButton-B8xuoYlH.js";import"./vendor-query-BBT5_sHx.js";import"./useIsMobile-Dvx1uJ82.js";import"./vendor-ui-3qrARCPr.js";const W="_container_1obln_1",O="_heroSection_1obln_11",$="_bannerContainer_1obln_17",U="_banner_1obln_17",j="_bannerOverlay_1obln_37",q="_heroContent_1obln_49",z="_posterContainer_1obln_62",V="_floatIn_1obln_1",Q="_poster_1obln_62",E="_infoGlass_1obln_86",H="_slideUpIn_1obln_1",F="_title_1obln_100",J="_quickMeta_1obln_109",K="_metaItem_1obln_117",L="_iconStar_1obln_126",R="_iconTv_1obln_129",X="_iconType_1obln_132",Y="_iconClock_1obln_135",Z="_genres_1obln_139",ee="_genre_1obln_139",ne="_infoColumns_1obln_165",te="_synopsisSection_1obln_180",oe="_sectionTitleSmall_1obln_188",se="_actions_1obln_210",ae="_watchBtn_1obln_216",ie="_watchlistBtn_1obln_238",le="_active_1obln_258",ce="_detailsToggleBtn_1obln_265",re="_expandedContent_1obln_288",me="_fadeIn_1obln_1",_e="_detailsGridContainer_1obln_293",de="_detailItem_1obln_301",he="_airingValue_1obln_320",be="_loadingDetails_1obln_325",pe="_spinner_1obln_334",ue="_spin_1obln_334",ve="_heroSkeleton_1obln_349",ge="_skeletonBanner_1obln_353",ke="_skeletonPoster_1obln_354",fe="_skeletonTitle_1obln_355",Ne="_skeletonMeta_1obln_356",Ce="_skeletonDesc_1obln_357",ye="_skeletonActions_1obln_358",Ie="_skeletonContent_1obln_391",Te="_skeletonInfo_1obln_405",t={container:W,heroSection:O,bannerContainer:$,banner:U,bannerOverlay:j,heroContent:q,posterContainer:z,floatIn:V,poster:Q,infoGlass:E,slideUpIn:H,title:F,quickMeta:J,metaItem:K,iconStar:L,iconTv:R,iconType:X,iconClock:Y,genres:Z,genre:ee,infoColumns:ne,synopsisSection:te,sectionTitleSmall:oe,actions:se,watchBtn:ae,watchlistBtn:ie,active:le,detailsToggleBtn:ce,expandedContent:re,fadeIn:me,detailsGridContainer:_e,detailItem:de,airingValue:he,loadingDetails:be,spinner:pe,spin:ue,heroSkeleton:ve,skeletonBanner:ge,skeletonPoster:ke,skeletonTitle:fe,skeletonMeta:Ne,skeletonDesc:Ce,skeletonActions:ye,"skeleton-wave":"_skeleton-wave_1obln_1",skeletonContent:Ie,skeletonInfo:Te};function Oe(){const{id:s}=y(),a=I(),{titlePreference:l}=w(),[i,u]=T(!1),{showMeta:n,loadingMeta:v,toggleWatchlist:g,inWatchlist:c}=B(s),{hasConsent:k,grant:f}=M();b(()=>{s&&n?.id&&n.id!==s&&a(`/anime/${n.id}`,{replace:!0})},[s,n,a]),b(()=>{document.title=n?.name?`${n.name} - dango`:"Anime - dango"},[n?.name]);const N=()=>n?.name?l==="name"?n.name:l==="nativeName"?n.names?.native||n.name:l==="englishName"&&n.names?.english||n.name:"",C=()=>{s&&a(`/watch/${s}`)},_=S(()=>n?.bannerImage?m(n.bannerImage):n?.thumbnail?m(n.thumbnail,1200,450):"",[n?.bannerImage,n?.thumbnail]);if(v||!n?.name)return e("div",{className:t.container,children:e("div",{className:t.heroSkeleton,children:[e("div",{className:t.skeletonBanner}),e("div",{className:t.skeletonContent,children:[e("div",{className:t.skeletonPoster}),e("div",{className:t.skeletonInfo,children:[e("div",{className:t.skeletonTitle}),e("div",{className:t.skeletonMeta}),e("div",{className:t.skeletonDesc}),e("div",{className:t.skeletonActions})]})]})]})});const d=n.isAdult===!0&&!k;return e("div",{className:t.container,style:d?{filter:"blur(14px)",pointerEvents:"none",userSelect:"none"}:void 0,children:[e("div",{className:t.heroSection,children:[e("div",{className:t.bannerContainer,children:[e("div",{className:t.banner,style:_?{backgroundImage:`url(${_})`}:void 0}),e("div",{className:t.bannerOverlay})]}),e("div",{className:t.heroContent,children:[e("div",{className:t.posterContainer,children:e("img",{src:m(n.thumbnail||"",320,480),alt:n.name,className:t.poster,decoding:"async"})}),e("div",{className:t.infoGlass,children:[e("div",{children:[e("h1",{className:t.title,children:N()}),e("div",{className:t.quickMeta,children:[n.score&&e("div",{className:t.metaItem,children:[e(o,{name:"star",className:t.iconStar}),e("span",{children:n.score})]}),n.status&&e("div",{className:t.metaItem,children:[e(o,{name:"tv",className:t.iconTv}),e("span",{children:n.status})]}),n.type&&e("div",{className:t.metaItem,children:[e(o,{name:"layer-group",className:t.iconType}),e("span",{children:n.type})]})]}),Array.isArray(n.genres)&&n.genres.length>0&&e("div",{className:t.genres,children:n.genres.filter(Boolean).slice(0,5).map(r=>{const h=typeof r=="string"?r:r?.name;return e("span",{className:t.genre,children:h},h)})})]}),e("div",{className:t.infoColumns,children:[e("div",{className:t.synopsisSection,children:[e("h2",{className:t.sectionTitleSmall,children:"Synopsis"}),e(G,{text:x(n.description),emptyText:"No description available."}),e("button",{className:t.detailsToggleBtn,onClick:()=>{u(!i)},children:[i?e(o,{name:"chevron-up"}):e(o,{name:"chevron-down"}),i?"Hide Details":"Show Details"]})]}),i&&e("div",{className:t.expandedContent,children:e(D,{showMeta:n,styles:t})})]}),e("div",{className:t.actions,children:[e("button",{className:t.watchBtn,onClick:C,children:[e(o,{name:"play",size:14}),"Start Watching"]}),e("button",{className:`${t.watchlistBtn} ${c?t.active:""}`,onClick:g,children:[c?e(o,{name:"check",size:14}):e(o,{name:"plus",size:14}),c?"In Watchlist":"Add to Watchlist"]}),e(P,{showId:s,showName:n.name||n.names?.romaji,showThumbnail:n.thumbnail,nativeName:n.names?.native,englishName:n.names?.english,showType:n.type,className:t.watchlistBtn,activeClassName:t.active})]})]})]})]}),d&&e(A,{isOpen:!0,title:"Content Warning",onClose:()=>a("/"),children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e("p",{children:"This title contains mature content intended for adult audiences."}),e("p",{children:["By proceeding, you confirm that you are ",e("strong",{children:"18 years of age or older"})," (or the age of majority in your jurisdiction) and wish to view this content."]}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(p,{variant:"secondary",onClick:()=>a("/"),children:"Go Back"}),e(p,{onClick:f,children:"I'm 18+, Continue"})]})]})})]})}export{Oe as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AnimeInfo-Dihook4h.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/useAnimeInfoData-DpUA78Mv.js","assets/vendor-query-BBT5_sHx.js","assets/index-DB81Su4I.js","assets/index-B7katXv0.css","assets/QueueOptionsButton-B4Re8F3V.js","assets/vendor-ui-3qrARCPr.js","assets/QueueOptionsButton-CM15uQn8.css","assets/AnimeMetaDetails-D8WIiO4b.js","assets/AnimeMetaDetails-BwNQnRCd.css","assets/SynopsisText-B3Sa5pRv.js","assets/useIsMobile-Dvx1uJ82.js","assets/SynopsisText-CYv2W3yR.css","assets/AnimeInfo-BivVqWcB.css"])))=>i.map(i=>d[i]);
2
- import{a0 as r,_ as t}from"./index-DB81Su4I.js";import{u as o,P as e,z as i}from"./vendor-core-DfaOB3Rn.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";const a=i(()=>t(()=>import("./AnimeInfo-Dihook4h.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])));function p(){return o(e,{fallback:o(r,{}),children:o(a,{})})}export{p as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AnimeInfo-DcpKPBLS.js","assets/vendor-core-DfaOB3Rn.js","assets/vendor-icons-DrybRNxP.js","assets/useAnimeInfoData-tcGkDs2b.js","assets/vendor-query-BBT5_sHx.js","assets/index-DlcgJVM6.js","assets/index-ZssheiHa.css","assets/QueueOptionsButton-B8xuoYlH.js","assets/vendor-ui-3qrARCPr.js","assets/QueueOptionsButton-CM15uQn8.css","assets/AnimeMetaDetails-D8WIiO4b.js","assets/AnimeMetaDetails-BwNQnRCd.css","assets/SynopsisText-B3Sa5pRv.js","assets/useIsMobile-Dvx1uJ82.js","assets/SynopsisText-CYv2W3yR.css","assets/AnimeInfo-BivVqWcB.css"])))=>i.map(i=>d[i]);
2
+ import{a0 as r,_ as t}from"./index-DlcgJVM6.js";import{u as o,P as e,z as i}from"./vendor-core-DfaOB3Rn.js";import"./vendor-query-BBT5_sHx.js";import"./vendor-icons-DrybRNxP.js";const a=i(()=>t(()=>import("./AnimeInfo-DcpKPBLS.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])));function p(){return o(e,{fallback:o(r,{}),children:o(a,{})})}export{p as default};
@@ -1,2 +1,2 @@
1
- import{T as We,u as e,A as $,d as f,h as w,a as Ye,g as Pe,q as Q,S as O,$ as qe,o as gt,p as kt}from"./vendor-core-DfaOB3Rn.js";import{I as _}from"./vendor-icons-DrybRNxP.js";import{u as ft}from"./vendor-query-BBT5_sHx.js";import{T as Ue}from"./ToggleSwitch-CN_ppEc9.js";import{M as _t}from"./MatureConsentModal-BnB-RHYQ.js";import{M as bt,P as yt}from"./MediaCard-hWGCEHWx.js";import{c as Ke,a as Qe,d as vt,e as Xe,f as Ze,g as wt,h as Ct,i as Nt,j as Tt,k as Ve,l as Ie}from"./useAsmr-BwyYDnlP.js";import{g as ve,t as xe,W as jt,B as Je,M as et,P as M,A as te,e as St,X as At,q as ze}from"./index-DB81Su4I.js";import{u as Bt,A as Lt}from"./useAsmrPopup-BrrEaBlV.js";import{l as Rt}from"./hls-Bi-DS5KL.js";import{p as ae}from"./page.module-C1MlZzf3.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./libraryInvalidation-DI-v-DQ1.js";import"./usePopup-DS9jMzp6.js";const Mt="_sortSelect_12kj5_1",It="_grid_12kj5_11",Pt="_fetching_12kj5_18",xt="_thumbPlaceholder_12kj5_57",$t="_asmrCardWrap_12kj5_93",Et="_bookmarkBtn_12kj5_98",Ht="_bookmarked_12kj5_122",Ft="_statusMsg_12kj5_145",Ot="_skeletonCard_12kj5_153",Dt="_skeletonThumb_12kj5_158",Wt="_skeletonLine_12kj5_164",qt="_shimmer_12kj5_171",Ut="_matureToggleWrap_12kj5_212",Vt="_matureLabel_12kj5_219",Jt="_translateToggleWrap_12kj5_225",zt="_filterTogglesGroup_12kj5_232",Gt="_filterBar_12kj5_244",Yt="_filterLabel_12kj5_251",Kt="_detailOverlay_12kj5_256",Qt="_detailModal_12kj5_268",Xt="_detailClose_12kj5_280",Zt="_detailHeader_12kj5_296",ea="_detailCover_12kj5_302",ta="_detailInfo_12kj5_311",aa="_detailTitle_12kj5_315",na="_detailRj_12kj5_322",ra="_metaRow_12kj5_328",sa="_metaLabel_12kj5_334",la="_tagChips_12kj5_340",oa="_tagChip_12kj5_340",ca="_npOverlay_12kj5_356",ia="_playerBarDocked_12kj5_371",da="_playerBarDockedHidden_12kj5_385",ua="_npOverlayControlsHidden_12kj5_396",ma="_npArrow_12kj5_396",ha="_npImageCount_12kj5_397",pa="_npStage_12kj5_406",ga="_sliderViewport_12kj5_422",ka="_slide_12kj5_422",fa="_slideImg_12kj5_424",_a="_npStageBlank_12kj5_443",ba="_sliderTrack_12kj5_462",ya="_slideImgLoaded_12kj5_495",va="_slideSpinner_12kj5_500",wa="_npArrowLeft_12kj5_550",Ca="_npArrowRight_12kj5_554",Na="_chapterPanel_12kj5_571",Ta="_chapterRow_12kj5_586",ja="_chapterRowActive_12kj5_605",Sa="_chapterRowTime_12kj5_609",Aa="_chapterRowLabel_12kj5_620",Ba="_npBackdrop_12kj5_626",La="_playerBtn_12kj5_632",Ra="_playerBtnActive_12kj5_632",Ma="_tracksSection_12kj5_638",Ia="_tracksHeading_12kj5_642",Pa="_trackList_12kj5_648",xa="_trackRow_12kj5_657",$a="_trackIcon_12kj5_675",Ea="_trackLabel_12kj5_680",Ha="_trackType_12kj5_685",Fa="_noTracks_12kj5_690",Oa="_playAllBtn_12kj5_695",Da="_detailActions_12kj5_708",Wa="_playerBar_12kj5_371",qa="_playerActions_12kj5_731",Ua="_playerInfo_12kj5_737",Va="_playerTitle_12kj5_742",Ja="_playerTrack_12kj5_751",za="_playerControls_12kj5_757",Ga="_seekRow_12kj5_764",Ya="_playerButtons_12kj5_772",Ka="_seekBtn_12kj5_807",Qa="_seekBtnLabel_12kj5_812",Xa="_playBtn_12kj5_817",Za="_seekBar_12kj5_864",en="_volumeBar_12kj5_865",tn="_timeLabel_12kj5_957",an="_playerRight_12kj5_963",nn="_volumeIcon_12kj5_969",rn="_playerToggle_12kj5_1013",t={sortSelect:Mt,grid:It,fetching:Pt,thumbPlaceholder:xt,asmrCardWrap:$t,bookmarkBtn:Et,bookmarked:Ht,statusMsg:Ft,skeletonCard:Ot,skeletonThumb:Dt,skeletonLine:Wt,shimmer:qt,matureToggleWrap:Ut,matureLabel:Vt,translateToggleWrap:Jt,filterTogglesGroup:zt,filterBar:Gt,filterLabel:Yt,detailOverlay:Kt,detailModal:Qt,detailClose:Xt,detailHeader:Zt,detailCover:ea,detailInfo:ta,detailTitle:aa,detailRj:na,metaRow:ra,metaLabel:sa,tagChips:la,tagChip:oa,npOverlay:ca,playerBarDocked:ia,playerBarDockedHidden:da,npOverlayControlsHidden:ua,npArrow:ma,npImageCount:ha,npStage:pa,sliderViewport:ga,slide:ka,slideImg:fa,npStageBlank:_a,sliderTrack:ba,slideImgLoaded:ya,slideSpinner:va,npArrowLeft:wa,npArrowRight:Ca,chapterPanel:Na,chapterRow:Ta,chapterRowActive:ja,chapterRowTime:Sa,chapterRowLabel:Aa,npBackdrop:Ba,playerBtn:La,playerBtnActive:Ra,tracksSection:Ma,tracksHeading:Ia,trackList:Pa,trackRow:xa,trackIcon:$a,trackLabel:Ea,trackType:Ha,noTracks:Fa,playAllBtn:Oa,detailActions:Da,playerBar:Wa,playerActions:qa,playerInfo:Ua,playerTitle:Va,playerTrack:Ja,playerControls:za,seekRow:Ga,playerButtons:Ya,seekBtn:Ka,seekBtnLabel:Qa,playBtn:Xa,seekBar:Za,volumeBar:en,timeLabel:tn,playerRight:an,volumeIcon:nn,playerToggle:rn},sn=({work:s,onClose:o,onPlay:C,t:g})=>{const{data:i,isLoading:h}=Ke(s.id||null),b=Qe(s),{data:j}=vt(b||void 0),{toggle:y,bookmarkedIds:T}=Xe(),{data:I}=Ze(b||void 0),R=b?T.has(b):!!j?.inLibrary,v=We(()=>(i?.description||s.description||"").split(`
2
- `).map(c=>{const l=c.indexOf(":");return l===-1?null:{label:c.slice(0,l),value:c.slice(l+1).trim()}}).filter(c=>!!c&&!!c.value),[i?.description,s.description]),k=i?.tracks||[],S=s.thumbnail||i?.images?.[0],N=We(()=>{const c=I?.progress??[];return c.length>0?c.reduce((l,A)=>l.updatedAt>=A.updatedAt?l:A):null},[I]),u=N&&N.trackIndex<k.length?N.trackIndex:null;return e("div",{className:t.detailOverlay,onClick:o,children:e("div",{className:t.detailModal,onClick:c=>c.stopPropagation(),children:[e("button",{className:t.detailClose,onClick:o,"aria-label":"Close",children:e(_,{name:"times"})}),e("div",{className:t.detailHeader,children:[S?e("img",{className:t.detailCover,src:S,alt:s.name,decoding:"async"}):e("div",{className:`${t.detailCover} ${t.thumbPlaceholder}`}),e("div",{className:t.detailInfo,children:[e("h2",{className:t.detailTitle,children:g?g(s.name):s.name}),e("p",{className:t.detailRj,children:s.id}),v.map(c=>c.label==="Tags"?e("p",{className:t.metaRow,children:[e("span",{className:t.metaLabel,children:"Tags"}),e("span",{className:t.tagChips,children:c.value.split(", ").map(l=>e("span",{className:t.tagChip,children:l},l))})]},c.label):e("p",{className:t.metaRow,children:[e("span",{className:t.metaLabel,children:c.label}),c.value]},c.label))]})]}),e("div",{className:t.tracksSection,children:[e("h3",{className:t.tracksHeading,children:h?"Loading tracks…":`Tracks (${k.length})`}),!h&&(k.length>0?e("ul",{className:t.trackList,children:k.map((c,l)=>e("li",{children:e("button",{className:t.trackRow,onClick:()=>C(s,k,l),children:[e(_,{name:"play",className:t.trackIcon}),e("span",{className:t.trackLabel,children:c.resolutionStr}),e("span",{className:t.trackType,children:c.hls?"HLS":"MP3"})]})},c.link))}):e("p",{className:t.noTracks,children:"No audio streams available for this work."}))]}),e("div",{className:t.detailActions,children:[!h&&k.length>0&&e("button",{className:t.playAllBtn,onClick:()=>C(s,k,0),children:[e(_,{name:"play"})," Play from start"]}),!h&&u!==null&&N&&e("button",{className:t.playAllBtn,onClick:()=>C(s,k,u),children:[e(_,{name:"history"})," Resume track ",u+1," ·"," ",ve(N.currentTime),N.duration>0?` / ${ve(N.duration)}`:""]}),b&&e("button",{className:t.playAllBtn,onClick:()=>y({rjCode:b,title:s.name,thumbnail:s.thumbnail||"",isAdult:!!s.isAdult}),"aria-pressed":R,children:[e(_,{name:R?"check":"plus"})," ",R?"In listening list":"Add to listening list"]})]})]})})},ln=({title:s,images:o,chapters:C,tracks:g,trackIndex:i,expanded:h,isAdult:b,rjCode:j,t:y,onTrackChange:T,onExpandedChange:I,onClose:R})=>{const v=$(null),k=$(null),[S,N]=f(!1),[u,c]=f(0),[l,A]=f(0),[p,q]=f(0),[B,X]=f(!0),[H,Y]=f(0),[E,ne]=f(new Set),[D,Z]=f(!1),[me,P]=f(!0),ee=$("");ee.current||(ee.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`asmr-${Date.now()}-${Math.random().toString(36).slice(2)}`);const[W,we]=f(()=>{const a=parseFloat(localStorage.getItem("asmrVolume")||"");return Number.isFinite(a)?a:1}),he=$(W);w(()=>{he.current=W},[W]);const pe=Ye(),z=Pe.useMemo(()=>j?wt(j):"",[j]),Ce=Ct(),re=Nt(),{data:se}=Ze(z||void 0),[Be,le]=f(!1),K=$(""),U=$(null),ge=$(0),G=$(0),oe=$(0),ce=g[i],V=ce?.link,Ne=ce?.hls,ke=ce?.resolutionStr||"",ie=o.length>0,fe=`${z}:${i}`,de=Pe.useMemo(()=>(se?.progress??[]).find(r=>r.trackIndex===i)??null,[se,i]),n=$({workId:"",trackIndex:0,trackLabel:""}),d=$(se);d.current=se,n.current={workId:z,trackIndex:i,trackLabel:ke};const L=Q((a,r,m,x=!1)=>{!a.workId||!m||m<10||!x&&Math.abs(r-ge.current)<5||(ge.current=r,Ce.mutate({workId:a.workId,trackIndex:a.trackIndex,trackLabel:a.trackLabel,currentTime:Math.floor(r),duration:Math.floor(m),title:s,thumbnail:o[0]||"",rjCode:a.workId,isAdult:b?1:0}))},[Ce,s,o,b]),ue=Q((a=!1)=>{U.current&&(clearTimeout(U.current),U.current=null),L(n.current,G.current,oe.current,a)},[L]),J=$(ue);J.current=ue;const _e=$(L);_e.current=L;const F=Q(()=>{k.current&&(k.current.destroy(),k.current=null)},[]);w(()=>{const a=v.current;if(!a||!V)return;const r={workId:z,trackIndex:i,trackLabel:ke},m=()=>{U.current&&(clearTimeout(U.current),U.current=null),_e.current(r,G.current,oe.current,!0)};c(0),A(0),q(0),N(!1),G.current=0,oe.current=0,ge.current=0,F();const x=d.current?.progress?.find(Ae=>Ae.trackIndex===i),Se=x?.currentTime||0,Le=x?.duration||0,ye=Se>=10&&Le-Se>=15;if(Ne){let Ae=!1;return(async()=>{const Re=await Rt();if(!Ae)if(Re&&Re.isSupported()){const Me=new Re({enableWorker:!0});k.current=Me,Me.loadSource(V),Me.attachMedia(a),ye||a.play().catch(()=>N(!1))}else a.src=V,a.load(),a.volume=he.current,ye||a.play().catch(()=>N(!1))})(),()=>{Ae=!0,F(),a.removeAttribute("src"),m()}}else a.src=V;return a.load(),a.volume=he.current,ye||a.play().catch(()=>N(!1)),()=>{F(),a.removeAttribute("src"),m()}},[V,Ne,F,z,i,ke]),w(()=>()=>F(),[F]),w(()=>{const a=()=>{document.visibilityState==="hidden"&&J.current()},r=()=>J.current();return document.addEventListener("visibilitychange",a),window.addEventListener("pagehide",r),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("pagehide",r)}},[]),w(()=>{if(!de||K.current===fe||!(l>0))return;const a=de.currentTime||0,r=de.duration||l;if(K.current=fe,!(a>=10&&r-a>=15&&G.current<a))return;const m=v.current;m&&(m.currentTime=a,G.current=a,c(a),m.play().catch(()=>{}))},[de,l,fe]),w(()=>{const a=v.current;a&&(a.volume=W)},[W]),w(()=>{if(h)return document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")},[h]),w(()=>{Y(0)},[o]),w(()=>{h&&P(!0)},[h]),w(()=>{D&&P(!0)},[D]);const Te=Q(a=>{if(!s||g.length===0)return;const r=g[i],m=r?`${r.resolutionStr} (${i+1}/${g.length})`:"",x=v.current,Se=x?x.currentTime:0,Le=x&&x.duration||0,ye=o[0]||"";xe.discord.asmrPresence.mutate({title:s,trackLabel:m,isPlaying:a,thumbnail:ye,thumbnails:o,currentTime:Se,duration:Le,isAdult:!!b,rjCode:j||"",sessionId:ee.current}).catch(()=>{}),xe.discord.heartbeat.mutate({sessionId:ee.current}).catch(()=>{})},[s,g,i,o,b,j]);w(()=>{Te(S)},[Te,S,i,s,h]),w(()=>{if(!S)return;const a=window.setInterval(()=>Te(!0),15e3);return()=>window.clearInterval(a)},[S,Te]),w(()=>{const a=ee.current,r=()=>jt(a),m=()=>r(),x=()=>{document.visibilityState==="hidden"&&r()};return window.addEventListener("pagehide",m),window.addEventListener("beforeunload",m),document.addEventListener("visibilitychange",x),()=>{window.removeEventListener("pagehide",m),window.removeEventListener("beforeunload",m),document.removeEventListener("visibilitychange",x),r()}},[]);const je=Q(a=>{ne(r=>{if(r.has(a))return r;const m=new Set(r);return m.add(a),m})},[]),at=Q((a,r)=>{a&&a.complete&&a.naturalWidth>0&&je(r)},[je]);w(()=>{if(!h)return;const a=r=>{if(r.key==="Escape"){D?Z(!1):I(!1);return}!B||o.length<2||(r.key==="ArrowLeft"&&Y(m=>Math.max(0,m-1)),r.key==="ArrowRight"&&Y(m=>Math.min(o.length-1,m+1)))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[h,B,o.length,D,I]);const nt=()=>{const a=v.current;a&&(a.paused?a.play().catch(()=>{}):a.pause())},rt=a=>{const r=v.current;if(!r||!l)return;const m=parseFloat(a.currentTarget.value);r.currentTime=m,c(m)},st=()=>{ue(!0),i<g.length-1?T(i+1):le(!0)},lt=a=>{const r=a.currentTarget.currentTime;G.current=r,c(r),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>J.current(),5e3)},ot=()=>{N(!1),J.current()},ct=a=>{const r=a.currentTarget.duration;oe.current=Number.isFinite(r)?r:0,A(a.currentTarget.duration)},it=Q(()=>{z&&re.mutate({rjCode:z,title:s,thumbnail:o[0]||"",status:"Completed",isAdult:!!b,silent:!0}),le(!1),R(),pe("/")},[z,re,s,o,b,R,pe]),dt=C.reduce((a,r,m)=>u>=r.time?m:a,-1),ut=a=>{const r=v.current;r&&(r.currentTime=a,c(a))},$e=a=>{const r=v.current;if(!r)return;const m=Number.isFinite(r.currentTime)?r.currentTime:u,x=Math.max(0,Math.min(l||1/0,m+a));r.currentTime=x,c(x),P(!0)},Ee=l?Math.min(100,u/l*100):0,mt=l?Math.min(100,Math.max(Ee,p/l*100)):0,ht=e(O,{children:[e("div",{className:t.playerButtons,children:[e("button",{className:t.playerBtn,onClick:()=>T(Math.max(0,i-1)),disabled:i===0,"aria-label":"Previous track",children:e(_,{name:"step-backward"})}),e("button",{className:`${t.playerBtn} ${t.seekBtn}`,onClick:()=>$e(-10),"aria-label":"Seek back 10 seconds",title:"Back 10s",children:[e(_,{name:"undo"}),e("span",{className:t.seekBtnLabel,children:"10"})]}),e("button",{className:`${t.playerBtn} ${t.playBtn}`,onClick:nt,"aria-label":S?"Pause":"Play",children:S?e(_,{name:"pause"}):e(_,{name:"play"})}),e("button",{className:`${t.playerBtn} ${t.seekBtn}`,onClick:()=>$e(10),"aria-label":"Seek forward 10 seconds",title:"Forward 10s",children:[e(_,{name:"redo"}),e("span",{className:t.seekBtnLabel,children:"10"})]}),e("button",{className:t.playerBtn,onClick:()=>T(Math.min(g.length-1,i+1)),disabled:i>=g.length-1,"aria-label":"Next track",children:e(_,{name:"step-forward"})})]}),e("div",{className:t.seekRow,children:[e("span",{className:t.timeLabel,children:ve(u)}),e("input",{className:t.seekBar,type:"range",min:0,max:l||0,step:.1,value:Math.min(u,l||0),onChange:rt,style:{"--played-percent":`${Ee}%`,"--buffered-percent":`${mt}%`},"aria-label":"Seek"}),e("span",{className:t.timeLabel,children:ve(l)})]})]}),He=e(O,{children:[e("button",{className:`${t.playerBtn} ${t.playerToggle}`,onClick:()=>I(!h),"aria-label":h?"Minimize player":"Expand player",title:h?"Minimize to browse":"Expand",children:h?e(_,{name:"chevron-down"}):e(_,{name:"chevron-up"})}),e("div",{className:t.playerInfo,children:[e("p",{className:t.playerTitle,title:s,children:y?y(s):s}),e("p",{className:t.playerTrack,children:[ce?.resolutionStr||"",g.length>1?` (${i+1}/${g.length})`:""]})]}),e("div",{className:t.playerControls,children:ht}),e("div",{className:t.playerRight,children:[W===0?e(_,{name:"volume-mute",className:t.volumeIcon}):W<.5?e(_,{name:"volume-down",className:t.volumeIcon}):e(_,{name:"volume-up",className:t.volumeIcon}),e("input",{className:t.volumeBar,type:"range",min:0,max:1,step:.01,value:W,onChange:a=>{const r=parseFloat(a.currentTarget.value);we(r),localStorage.setItem("asmrVolume",String(r))},style:{"--volume-percent":`${W*100}%`},"aria-label":"Volume"})]}),e("div",{className:t.playerActions,children:[h&&ie&&e("button",{className:t.playerBtn,onClick:()=>X(a=>!a),"aria-label":B?"Hide images":"Show images",title:B?"Hide images":"Show images",children:B?e(_,{name:"eye-slash"}):e(_,{name:"image"})}),h&&C.length>0&&e("button",{className:`${t.playerBtn} ${D?t.playerBtnActive:""}`,onClick:()=>Z(a=>!a),"aria-label":D?"Hide bookmarks":"Show bookmarks",title:"Timestamps",children:e(_,{name:"list-ol"})}),e("button",{className:t.playerBtn,onClick:R,"aria-label":"Close player",children:e(_,{name:"times"})})]})]}),Fe=e("audio",{ref:v,preload:"metadata",onPlay:()=>N(!0),onPause:ot,onTimeUpdate:lt,onLoadedMetadata:ct,onProgress:a=>{const r=a.currentTarget;r.buffered.length>0&&q(r.buffered.end(r.buffered.length-1))},onEnded:st}),Oe=e(et,{isOpen:Be,onClose:()=>le(!1),title:"Finished!",children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e(_,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),e("p",{style:{fontSize:"1.1rem",fontWeight:600},children:y?y(s):s}),e("p",{style:{color:"var(--text-secondary)"},children:"You finished this work!"}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(Je,{variant:"secondary",onClick:()=>le(!1),children:"Close"}),e(Je,{onClick:it,children:"Mark Completed & Back to Home"})]})]})});if(!h)return qe(e(O,{children:[Fe,e("div",{className:t.playerBar,children:He}),Oe]}),document.body);const be=Math.min(H,Math.max(0,o.length-1)),De=o[be],pt=B&&ie&&!!De&&!E.has(De);return qe(e(O,{children:[Fe,Oe,e("div",{className:`${t.npOverlay} ${me?"":t.npOverlayControlsHidden}`,children:[e("div",{className:`${t.npStage} ${!B||!ie?t.npStageBlank:""}`,onClick:()=>P(a=>!a),children:B&&ie&&e(O,{children:[e("div",{className:t.sliderViewport,children:[e("div",{className:t.sliderTrack,style:{transform:`translateX(-${be*100}%)`},children:o.map(a=>e("div",{className:t.slide,children:e("img",{ref:r=>at(r,a),src:a,alt:`${y?y(s):s} - work image`,loading:"lazy",decoding:"async",draggable:!1,onLoad:()=>je(a),onError:()=>je(a),className:`${t.slideImg} ${E.has(a)?t.slideImgLoaded:""}`})},a))}),pt&&e("span",{className:t.slideSpinner,"aria-label":"Loading image"})]}),o.length>1&&e(O,{children:[e("button",{className:`${t.npArrow} ${t.npArrowLeft}`,onClick:a=>{a.stopPropagation(),Y(r=>Math.max(0,r-1)),P(!0)},disabled:be===0,"aria-label":"Previous image",children:e(_,{name:"chevron-left"})}),e("button",{className:`${t.npArrow} ${t.npArrowRight}`,onClick:a=>{a.stopPropagation(),Y(r=>Math.min(o.length-1,r+1)),P(!0)},disabled:be===o.length-1,"aria-label":"Next image",children:e(_,{name:"chevron-right"})}),e("span",{className:t.npImageCount,onClick:a=>a.stopPropagation(),children:[be+1," / ",o.length]})]})]})}),e("div",{className:`${t.playerBar} ${t.playerBarDocked} ${me?"":t.playerBarDockedHidden}`,onClick:a=>a.stopPropagation(),children:[He,D&&e(O,{children:[e("div",{className:t.npBackdrop,onClick:()=>Z(!1)}),e("div",{className:t.chapterPanel,children:C.map((a,r)=>e("button",{className:`${t.chapterRow} ${r===dt?t.chapterRowActive:""}`,title:y?y(a.label):a.label,onClick:()=>{ut(a.time),Z(!1)},children:[e("span",{className:t.chapterRowTime,children:ve(a.time)}),e("span",{className:t.chapterRowLabel,title:y?y(a.label):a.label,children:y?y(a.label):a.label})]},`${a.time}-${r}`))})]})]})]})]}),document.body)},on="https://github.com/serifpersia/dango/releases/latest/download/dango-extension.zip",cn=s=>{try{return JSON.parse(s.detail)}catch{return null}},dn=({isOpen:s,onClose:o,onSuccess:C})=>{const[g,i]=f(1),[h,b]=f(typeof navigator<"u"?navigator.userAgent:""),[j,y]=f(""),[T,I]=f(!1),[R,v]=f(!1),k=$(null),S=typeof navigator<"u"?navigator.userAgent:"",N=/android/i.test(S),u=/firefox|fxios/i.test(S)&&!N,c=!u&&!N&&/chrome|chromium|edg|brave/i.test(S),l=u||c;w(()=>{s&&(i(1),b(typeof navigator<"u"?navigator.userAgent:""),y(""),I(!1),v(!1))},[s]),w(()=>()=>{k.current&&(window.removeEventListener("dango:jasmr-cookie",k.current),k.current=null)},[]);const A=async()=>{localStorage.setItem("jasmr_ua",h),window.open("https://japaneseasmr.com","_blank","noopener,noreferrer"),i(2)},p=()=>{if(R)return;v(!0);const B=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,X=window.setTimeout(()=>{v(!1),k.current&&(window.removeEventListener("dango:jasmr-cookie",k.current),k.current=null),te.error("Helper not detected - install it via about:debugging first.")},3e3),H=Y=>{const E=cn(Y);if(!(!E||E.requestId!==B))if(window.clearTimeout(X),window.removeEventListener("dango:jasmr-cookie",H),k.current=null,v(!1),E?.ok&&E.cookie)y(E.cookie),te.success("Cookie extracted from helper!");else if(E?.error==="NO_COOKIE"){const ne=E.debug?.stores?.length??0,D=E.debug?.names??[];te.error(`Helper found no cf_clearance (checked ${ne} stores, saw: ${D.join(", ")||"none"}) - solve the challenge on the JapaneseASMR tab first.`)}else te.error("Helper request failed - try again.")};k.current=H,window.addEventListener("dango:jasmr-cookie",H),window.dispatchEvent(new CustomEvent("dango:get-jasmr-cookie",{detail:{requestId:B}}))},q=async()=>{if(!j.trim()){te.error("Please enter the cf_clearance cookie");return}I(!0);try{localStorage.setItem("jasmr_cookie",j.trim()),te.success("Cookie updated successfully!"),C?.(),o()}catch{te.error("Failed to save cookie")}finally{I(!1)}};return e(et,{isOpen:s,onClose:o,title:"JapaneseASMR Verification Required",children:e("div",{className:M.container,children:g===1?e(O,{children:[e("p",{children:["JapaneseASMR is protected by a Cloudflare challenge. Solve it once in your browser and paste the ",e("strong",{children:"cf_clearance"})," cookie so the app can load the site for you."]}),e("div",{className:M.field,children:[e("label",{children:"Your User-Agent (must match the browser you solve the challenge with):"}),e("textarea",{value:h,onChange:B=>b(B.currentTarget.value),rows:3,className:M.textarea})]}),e("div",{className:M.actions,children:[e("button",{className:M.secondaryButton,onClick:o,children:"Cancel"}),e("button",{className:M.button,onClick:A,children:"Start Verification (Opens JapaneseASMR)"})]})]}):e(O,{children:[e("p",{children:["1. Solve the challenge on the ",e("strong",{children:"JapaneseASMR tab"})," (keep that tab open).",e("br",{}),"2. Copy the ",e("strong",{children:"cf_clearance"})," cookie value using one of these:",e("br",{}),e("br",{}),e("strong",{children:"Chrome / Edge — DevTools:"})," press ",e("code",{children:"F12"})," →"," ",e("strong",{children:"Application"})," → ",e("strong",{children:"Cookies"})," →"," ",e("code",{children:"https://japaneseasmr.com"}),". Find ",e("strong",{children:"cf_clearance"}),", double-click its ",e("strong",{children:"Value"})," to select it, then copy.",e("br",{}),e("br",{}),e("strong",{children:"Firefox — Storage Inspector:"})," press ",e("code",{children:"F12"})," →"," ",e("strong",{children:"Storage"})," → ",e("strong",{children:"Cookies"})," →"," ",e("code",{children:"https://japaneseasmr.com"}),". Find ",e("strong",{children:"cf_clearance"}),", right-click the value → ",e("strong",{children:"Copy Value"}),".",e("br",{}),e("br",{}),e("strong",{children:"Either browser — extension:"})," open"," ",e("strong",{children:"Cookie Manager"})," while on the JapaneseASMR tab, find"," ",e("strong",{children:"cf_clearance"}),", and copy its value (or use the extension's export).",e("br",{}),e("br",{}),"3. Paste it below. Copy ",e("strong",{children:"only the value"})," — remove any"," ",e("code",{children:"cf_clearance="})," prefix or quotes if they were included."]}),l&&e("div",{className:M.hint,children:[e("strong",{children:"Dango helper (one-time setup):"})," ",u?e(O,{children:["type ",e("code",{children:"about:debugging"})," in the address bar →"," ",e("strong",{children:"This Firefox"})," → ",e("strong",{children:"Load Temporary Add-on"})," ","→ open the ",e("code",{children:"dango-extension/firefox"})," folder and pick"," ",e("code",{children:"manifest.json"}),". (Temporary helpers unload when Firefox closes - repeat after a restart.)"]}):e(O,{children:["type ",e("code",{children:"chrome://extensions"})," in the address bar → enable"," ",e("strong",{children:"Developer mode"})," → ",e("strong",{children:"Load unpacked"})," → open the ",e("code",{children:"dango-extension/chrome"})," folder. (Unpacked helpers show a developer-mode notice - expected.)"]})," ","Use this link to download the extension and extract it:"," ",e("a",{href:on,target:"_blank",rel:"noreferrer",className:M.link,children:"dango-extension.zip"}),". Then click Extract below and the field fills itself.",e("div",{className:M.actions,children:e("button",{className:M.button,onClick:p,disabled:R,type:"button",children:R?"Extracting…":"Extract cookie from helper"})})]}),e("div",{className:M.field,children:[e("label",{children:"cf_clearance cookie value:"}),e("input",{type:"text",value:j,onChange:B=>y(B.currentTarget.value),placeholder:"e.g. xxxxxxxx.xxxxxxxx.xxxxxxx-xxxxxxx",className:M.input})]}),e("div",{className:M.actions,children:[e("button",{className:M.secondaryButton,onClick:o,children:"Cancel"}),e("button",{className:M.secondaryButton,onClick:()=>i(1),children:"Back"}),e("button",{className:M.button,onClick:q,disabled:T,children:T?"Saving...":"Submit"})]})]})})})},tt="asmrTranslateCache",un=10080*60*1e3;function mn(){try{const s=localStorage.getItem(tt);if(!s)return new Map;const o=JSON.parse(s);return new Map(Object.entries(o))}catch{return new Map}}function hn(s){try{const o={};for(const[C,g]of s)o[C]=g;localStorage.setItem(tt,JSON.stringify(o))}catch{}}function Ge(s){return/[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]/.test(s)}async function pn(s){const o=s.map(i=>i.trim()).filter(Boolean);if(o.length===0)return new Map;const C=await xe.settings.translate.mutate({texts:o,source:"ja",target:"en"}),g=new Map;for(const[i,h]of Object.entries(C.translations||{}))g.set(i,h);for(const i of o)g.has(i)||g.set(i,i);return g}function gn(s,o){const[C,g]=f(new Map),[i,h]=f(!1),b=$(null),j=s.join("");return w(()=>{const T=j?j.split(""):[];if(!o||T.length===0){g(new Map),h(!1);return}const I=Array.from(new Set(T.map(u=>u.trim()).filter(Boolean).filter(Ge)));if(I.length===0){g(new Map);return}b.current||(b.current=mn());const R=Date.now(),v=new Map,k=[];for(const u of I){const c=b.current.get(u);c&&R-c.ts<un?v.set(u,c.t):k.push(u)}if(k.length===0){g(v);return}let S=!1;h(!0);const N=[];for(let u=0;u<k.length;u+=15)N.push(k.slice(u,u+15));return(async()=>{const u=new Map;for(const l of N){try{const A=await pn(l);for(const[p,q]of A)u.set(p,q)}catch{}await new Promise(A=>setTimeout(A,120))}if(S)return;if(b.current){for(const[l,A]of u)b.current.set(l,{t:A,ts:Date.now()});hn(b.current)}const c=new Map([...v,...u]);g(c),h(!1)})(),()=>{S=!0}},[o,j]),{t:T=>!o||!T||!Ge(T)?T:C.get(T.trim())||T,map:C,isTranslating:i}}const kn=[{label:"Date",options:[{value:"latest",label:"Latest"},{value:"oldest",label:"Oldest"}]},{label:"Title",options:[{value:"title_asc",label:"A → Z"},{value:"title_desc",label:"Z → A"}]},{label:"Popular (Views)",options:[{value:"popular_recent",label:"Recent"},{value:"popular_week",label:"Week"},{value:"popular_month",label:"Month"},{value:"popular_6_months",label:"6 Months"},{value:"popular_year",label:"Year"},{value:"popular",label:"All Time"}]},{label:"Most Commented",options:[{value:"comments_week",label:"Week"},{value:"comments_month",label:"Month"},{value:"comments_year",label:"Year"},{value:"comments",label:"All Time"}]},{label:"Other",options:[{value:"random",label:"Random"}]}],fn=[{value:"",label:"All"},{value:"sfw",label:"SFW / 全年齢"},{value:"r-15",label:"R-15"},{value:"r-18",label:"NSFW / R18"},{value:"yuri",label:"Yuri / Girls love / 百合"},{value:"otokonoko",label:"Otoko no ko / 男の娘"},{value:"futanari",label:"Futanari / フタナリ"},{value:"r-18g",label:"R-18G / グロ"}],_n=[{value:"sfw",label:"SFW / 全年齢"}],Pn=()=>{const{rj:s}=gt(),o=Ye(),[C,g]=kt(),{hasConsent:i,grant:h}=St(),[b,j]=f(!1),[y,T]=f(()=>C.get("q")||""),[I,R]=f(()=>C.get("q")||""),[v,k]=f("latest"),[S,N]=f("sfw"),[u,c]=f(1),[l,A]=f(null),[p,q]=f(null),[B,X]=f(!0),[H,Y]=f(()=>localStorage.getItem("asmrTranslateEN")==="true"),[E,ne]=f(!1),D=ft(),{toggle:Z,bookmarkedIds:me}=Xe(),{popup:P,openPopup:ee,scheduleClose:W,cancelClose:we,closePopup:he}=Bt();w(()=>At("jasmr",()=>ne(!0)),[]),w(()=>{localStorage.setItem("asmrTranslateEN",String(H))},[H]);const pe=i,z=pe?S:"sfw",Ce=pe?fn:_n,{data:re,isLoading:se,isError:Be,isFetching:le}=Tt(I,u,v,z),K=Pe.useMemo(()=>re?.shows??[],[re?.shows]),U=re?.hasNext??!1;w(()=>{if(!s){l&&!p&&A(null);return}const n=s.toUpperCase();if(p&&(p.work.id?.toUpperCase()===n||p.work._id?.toUpperCase()===n)){l&&A(null);return}const d=K.find(L=>(L.id||L._id)?.toUpperCase()===n);d?(!l||(l.id||l._id)!==(d.id||d._id))&&A(d):(!l||(l.id||l._id)?.toUpperCase()!==n)&&A({_id:n,id:n,name:n})},[s,K,p,l]);const ge=Q(()=>{o("/asmr")},[o]);w(()=>{!s&&p&&q(null)},[s,p]);const{data:G}=Ke(p&&p.work.id||null),oe=p?[p.work.thumbnail,...G?.images||[]].filter(Boolean):[],ce=[...K.map(n=>n.name),l?.name||"",p?.work.name||"",...G?.chapters?.map(n=>n.label)||[]].filter(Boolean),{t:V}=gn(ce,H);w(()=>{const n=p?p.work.name:l?l.name:s?s.toUpperCase():"",d=n?H?V(n):n:"",L=d?`${d} - dango`:"dango";document.title=L;try{window.history.replaceState(window.history.state,L,window.location.href)}catch{}},[l,p,s,H,V]);const Ne=n=>{n.preventDefault(),R(y),c(1);const d=new URLSearchParams(C);y.trim()?d.set("q",y.trim()):d.delete("q"),d.delete("page"),g(d,{replace:!0})};w(()=>{const n=C.get("q")||"";T(d=>d===n?d:n),R(d=>d===n?d:n),c(1)},[C]);const ke=n=>{n.currentTarget.checked&&!i&&j(!0)},ie=()=>{h(),j(!1),c(1)},fe=()=>{j(!1)},de=Q((n,d,L)=>{A(null),X(!0),q({work:n,tracks:d,index:L})},[]);return e("div",{className:`${ae.page} ${p?ae.pageWithPlayer:""}`,children:[!(p&&B)&&e(O,{children:[e("header",{className:ae.header,children:[e("h1",{className:ae.pageTitle,children:[e(_,{name:"headphones"})," ASMR"]}),e("form",{className:ae.searchForm,onSubmit:Ne,children:[e("input",{className:ae.searchInput,type:"text",value:y,onChange:n=>T(n.currentTarget.value),placeholder:"Search works, circles, CV… (-word excludes)","aria-label":"Search ASMR works"}),e("button",{className:ae.searchBtn,type:"submit","aria-label":"Search",children:e(_,{name:"search"})})]})]}),e("div",{className:t.filterBar,children:[e("label",{className:t.filterLabel,htmlFor:"asmr-sort",children:"Sort"}),e("select",{id:"asmr-sort",className:t.sortSelect,value:v,onChange:n=>{k(n.currentTarget.value),c(1)},children:kn.map(n=>e("optgroup",{label:n.label,children:n.options.map(d=>e("option",{value:d.value,children:d.label},d.value))},n.label))}),e("label",{className:t.filterLabel,htmlFor:"asmr-rating",children:"Type"}),e("select",{id:"asmr-rating",className:t.sortSelect,value:S,onChange:n=>{N(n.currentTarget.value),c(1)},children:Ce.map(n=>e("option",{value:n.value,children:n.label},n.value))}),e("div",{className:t.filterTogglesGroup,children:[e("div",{className:t.translateToggleWrap,children:[e("span",{className:t.filterLabel,children:"JP"}),e(Ue,{id:"asmr-translate-toggle",isChecked:H,onChange:n=>Y(n.currentTarget.checked)}),e("span",{className:t.filterLabel,children:"EN"})]}),!i&&e("div",{className:t.matureToggleWrap,children:[e("label",{className:t.matureLabel,htmlFor:"asmr-mature-toggle",children:"Mature"}),e(Ue,{id:"asmr-mature-toggle",isChecked:!1,onChange:ke})]})]})]}),Be?e("p",{className:t.statusMsg,children:"Failed to load works. Please try again."}):se&&K.length===0?e("div",{className:t.grid,"aria-hidden":!0,children:Array.from({length:12}).map((n,d)=>e("div",{className:t.skeletonCard,children:[e("div",{className:`${t.skeletonThumb} ${t.shimmer}`}),e("div",{className:`${t.skeletonLine} ${t.shimmer}`,style:{width:"88%"}}),e("div",{className:`${t.skeletonLine} ${t.shimmer}`,style:{width:"55%"}})]},d))}):K.length===0?e("p",{className:t.statusMsg,children:"No works found."}):e(O,{children:[e("div",{className:`${t.grid} ${le?t.fetching:""}`,children:K.map(n=>{const d=H?{...n,name:V(n.name)}:n,L=Qe(n),ue=Ve(L),J=me.has(ue),_e=`/asmr/${encodeURIComponent(L)}`;return e("div",{className:t.asmrCardWrap,children:[e(bt,{item:{id:ue,title:d.name,thumbnail:n.thumbnail||"",typeBadge:L||void 0,isAdult:Ie(n)},linkTo:_e,hoverIcon:"info",layout:"horizontal",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!1,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:F=>ee(F,{rjCode:L,title:d.name,thumbnail:n.thumbnail||"",isAdult:Ie(n),rating:n.rating,listenTarget:_e}),onPopupHoverIntent:F=>F?we():W(),rawThumbnail:!0}),e("button",{className:`${t.bookmarkBtn} ${J?t.bookmarked:""}`,onClick:F=>{F.preventDefault(),F.stopPropagation(),Z({rjCode:L,title:n.name,thumbnail:n.thumbnail||"",isAdult:Ie(n)})},title:J?"Remove from listening list":"Add to listening list","aria-label":J?"Remove from listening list":"Add to listening list","aria-pressed":J,children:e(_,{name:J?"check":"plus",size:12})})]},n._id||n.id)})}),e(yt,{page:u,canGoNext:U,onChange:n=>c(n),variant:"labeled"})]})]}),l&&e(sn,{work:l,onClose:ge,onPlay:de,t:V}),P&&e(Lt,{data:P.data,anchorRect:P.rect,bookmarked:me.has(Ve(P.data.rjCode)),onToggleBookmark:()=>Z({rjCode:P.data.rjCode,title:P.data.title,thumbnail:P.data.thumbnail||"",isAdult:P.data.isAdult}),onMouseEnter:we,onMouseLeave:W,onRequestClose:he}),E&&e(dn,{isOpen:E,onClose:()=>ne(!1),onSuccess:()=>{D.invalidateQueries({queryKey:[ze.asmrBrowse]}),D.invalidateQueries({queryKey:[ze.asmrWork]})}}),b&&e(_t,{isOpen:!0,scope:"section",showResetHint:!0,onClose:fe,onGrant:ie}),p&&e(ln,{title:p.work.name,images:oe,chapters:G?.chapters||[],tracks:p.tracks,trackIndex:p.index,expanded:B,isAdult:!!p.work.isAdult,rjCode:p.work.id||p.work._id,t:V,onTrackChange:n=>q(d=>d&&{...d,index:n}),onExpandedChange:X,onClose:()=>{q(null),X(!0),s&&o("/asmr")}})]})};export{Pn as default};
1
+ import{T as We,u as e,A as E,d as y,h as w,a as Ye,g as xe,q as Q,S as O,$ as qe,o as gt,p as ft}from"./vendor-core-DfaOB3Rn.js";import{I as _}from"./vendor-icons-DrybRNxP.js";import{u as yt}from"./vendor-query-BBT5_sHx.js";import{T as Ue}from"./ToggleSwitch-CN_ppEc9.js";import{M as _t}from"./MatureConsentModal-Beq4JL0b.js";import{M as bt,P as kt}from"./MediaCard-lz7FdOe_.js";import{c as Ke,a as Qe,d as vt,e as Xe,f as Ze,g as wt,h as Ct,i as Nt,j as Tt,k as Ve,l as Pe}from"./useAsmr-B-FYJW2L.js";import{g as ve,t as $e,W as St,B as Je,M as et,P as I,A as te,e as At,X as Bt,q as ze}from"./index-DlcgJVM6.js";import{u as Lt,A as Rt}from"./useAsmrPopup-Ct9jC6X6.js";import{l as Mt}from"./hls-qvAoYTJt.js";import{p as ae}from"./page.module-C1MlZzf3.js";import"./vendor-ui-3qrARCPr.js";import"./useIsMobile-Dvx1uJ82.js";import"./libraryInvalidation-DdnIPcOQ.js";import"./usePopup-DS9jMzp6.js";const It="_sortSelect_1f2gy_1",Pt="_grid_1f2gy_11",xt="_fetching_1f2gy_25",$t="_thumbPlaceholder_1f2gy_64",Et="_asmrCardWrap_1f2gy_100",jt="_bookmarkBtn_1f2gy_105",Ht="_bookmarked_1f2gy_129",Ft="_statusMsg_1f2gy_152",Ot="_skeletonCard_1f2gy_160",Dt="_skeletonThumb_1f2gy_165",Wt="_skeletonLine_1f2gy_171",qt="_shimmer_1f2gy_178",Ut="_matureToggleWrap_1f2gy_219",Vt="_matureLabel_1f2gy_226",Jt="_translateToggleWrap_1f2gy_232",zt="_filterTogglesGroup_1f2gy_239",Gt="_filterBar_1f2gy_251",Yt="_filterLabel_1f2gy_258",Kt="_detailOverlay_1f2gy_263",Qt="_detailModal_1f2gy_275",Xt="_detailClose_1f2gy_287",Zt="_detailHeader_1f2gy_303",ea="_detailCover_1f2gy_309",ta="_detailInfo_1f2gy_318",aa="_detailTitle_1f2gy_322",na="_detailRj_1f2gy_329",ra="_metaRow_1f2gy_335",sa="_metaLabel_1f2gy_341",la="_tagChips_1f2gy_347",oa="_tagChip_1f2gy_347",ca="_npOverlay_1f2gy_363",ia="_playerBarDocked_1f2gy_378",da="_playerBarDockedHidden_1f2gy_392",ua="_npOverlayControlsHidden_1f2gy_403",ma="_npArrow_1f2gy_403",ha="_npImageCount_1f2gy_404",pa="_npStage_1f2gy_413",ga="_sliderViewport_1f2gy_429",fa="_slide_1f2gy_429",ya="_slideImg_1f2gy_431",_a="_npStageBlank_1f2gy_450",ba="_sliderTrack_1f2gy_469",ka="_slideImgLoaded_1f2gy_502",va="_slideSpinner_1f2gy_507",wa="_npArrowLeft_1f2gy_557",Ca="_npArrowRight_1f2gy_561",Na="_chapterPanel_1f2gy_578",Ta="_chapterRow_1f2gy_593",Sa="_chapterRowActive_1f2gy_612",Aa="_chapterRowTime_1f2gy_616",Ba="_chapterRowLabel_1f2gy_627",La="_npBackdrop_1f2gy_633",Ra="_playerBtn_1f2gy_639",Ma="_playerBtnActive_1f2gy_639",Ia="_tracksSection_1f2gy_645",Pa="_tracksHeading_1f2gy_649",xa="_trackList_1f2gy_655",$a="_trackRow_1f2gy_664",Ea="_trackIcon_1f2gy_682",ja="_trackLabel_1f2gy_687",Ha="_trackType_1f2gy_692",Fa="_noTracks_1f2gy_697",Oa="_playAllBtn_1f2gy_702",Da="_detailActions_1f2gy_715",Wa="_playerBar_1f2gy_378",qa="_playerActions_1f2gy_738",Ua="_playerInfo_1f2gy_744",Va="_playerTitle_1f2gy_749",Ja="_playerTrack_1f2gy_758",za="_playerControls_1f2gy_764",Ga="_seekRow_1f2gy_771",Ya="_playerButtons_1f2gy_779",Ka="_seekBtn_1f2gy_814",Qa="_seekBtnLabel_1f2gy_819",Xa="_playBtn_1f2gy_824",Za="_seekBar_1f2gy_871",en="_volumeBar_1f2gy_872",tn="_timeLabel_1f2gy_964",an="_playerRight_1f2gy_970",nn="_volumeIcon_1f2gy_976",rn="_playerToggle_1f2gy_1020",t={sortSelect:It,grid:Pt,fetching:xt,thumbPlaceholder:$t,asmrCardWrap:Et,bookmarkBtn:jt,bookmarked:Ht,statusMsg:Ft,skeletonCard:Ot,skeletonThumb:Dt,skeletonLine:Wt,shimmer:qt,matureToggleWrap:Ut,matureLabel:Vt,translateToggleWrap:Jt,filterTogglesGroup:zt,filterBar:Gt,filterLabel:Yt,detailOverlay:Kt,detailModal:Qt,detailClose:Xt,detailHeader:Zt,detailCover:ea,detailInfo:ta,detailTitle:aa,detailRj:na,metaRow:ra,metaLabel:sa,tagChips:la,tagChip:oa,npOverlay:ca,playerBarDocked:ia,playerBarDockedHidden:da,npOverlayControlsHidden:ua,npArrow:ma,npImageCount:ha,npStage:pa,sliderViewport:ga,slide:fa,slideImg:ya,npStageBlank:_a,sliderTrack:ba,slideImgLoaded:ka,slideSpinner:va,npArrowLeft:wa,npArrowRight:Ca,chapterPanel:Na,chapterRow:Ta,chapterRowActive:Sa,chapterRowTime:Aa,chapterRowLabel:Ba,npBackdrop:La,playerBtn:Ra,playerBtnActive:Ma,tracksSection:Ia,tracksHeading:Pa,trackList:xa,trackRow:$a,trackIcon:Ea,trackLabel:ja,trackType:Ha,noTracks:Fa,playAllBtn:Oa,detailActions:Da,playerBar:Wa,playerActions:qa,playerInfo:Ua,playerTitle:Va,playerTrack:Ja,playerControls:za,seekRow:Ga,playerButtons:Ya,seekBtn:Ka,seekBtnLabel:Qa,playBtn:Xa,seekBar:Za,volumeBar:en,timeLabel:tn,playerRight:an,volumeIcon:nn,playerToggle:rn},sn=({work:s,onClose:o,onPlay:C,t:g})=>{const{data:i,isLoading:h}=Ke(s.id||null),b=Qe(s),{data:S}=vt(b||void 0),{toggle:k,bookmarkedIds:T}=Xe(),{data:P}=Ze(b||void 0),M=b?T.has(b):!!S?.inLibrary,v=We(()=>(i?.description||s.description||"").split(`
2
+ `).map(c=>{const l=c.indexOf(":");return l===-1?null:{label:c.slice(0,l),value:c.slice(l+1).trim()}}).filter(c=>!!c&&!!c.value),[i?.description,s.description]),f=i?.tracks||[],A=s.thumbnail||i?.images?.[0],N=We(()=>{const c=P?.progress??[];return c.length>0?c.reduce((l,B)=>l.updatedAt>=B.updatedAt?l:B):null},[P]),u=N&&N.trackIndex<f.length?N.trackIndex:null;return e("div",{className:t.detailOverlay,onClick:o,children:e("div",{className:t.detailModal,onClick:c=>c.stopPropagation(),children:[e("button",{className:t.detailClose,onClick:o,"aria-label":"Close",children:e(_,{name:"times"})}),e("div",{className:t.detailHeader,children:[A?e("img",{className:t.detailCover,src:A,alt:s.name,decoding:"async"}):e("div",{className:`${t.detailCover} ${t.thumbPlaceholder}`}),e("div",{className:t.detailInfo,children:[e("h2",{className:t.detailTitle,children:g?g(s.name):s.name}),e("p",{className:t.detailRj,children:s.id}),v.map(c=>c.label==="Tags"?e("p",{className:t.metaRow,children:[e("span",{className:t.metaLabel,children:"Tags"}),e("span",{className:t.tagChips,children:c.value.split(", ").map(l=>e("span",{className:t.tagChip,children:l},l))})]},c.label):e("p",{className:t.metaRow,children:[e("span",{className:t.metaLabel,children:c.label}),c.value]},c.label))]})]}),e("div",{className:t.tracksSection,children:[e("h3",{className:t.tracksHeading,children:h?"Loading tracks…":`Tracks (${f.length})`}),!h&&(f.length>0?e("ul",{className:t.trackList,children:f.map((c,l)=>e("li",{children:e("button",{className:t.trackRow,onClick:()=>C(s,f,l),children:[e(_,{name:"play",className:t.trackIcon}),e("span",{className:t.trackLabel,children:c.resolutionStr}),e("span",{className:t.trackType,children:c.hls?"HLS":"MP3"})]})},c.link))}):e("p",{className:t.noTracks,children:"No audio streams available for this work."}))]}),e("div",{className:t.detailActions,children:[!h&&f.length>0&&e("button",{className:t.playAllBtn,onClick:()=>C(s,f,0),children:[e(_,{name:"play"})," Play from start"]}),!h&&u!==null&&N&&e("button",{className:t.playAllBtn,onClick:()=>C(s,f,u),children:[e(_,{name:"history"})," Resume track ",u+1," ·"," ",ve(N.currentTime),N.duration>0?` / ${ve(N.duration)}`:""]}),b&&e("button",{className:t.playAllBtn,onClick:()=>k({rjCode:b,title:s.name,thumbnail:s.thumbnail||"",isAdult:!!s.isAdult}),"aria-pressed":M,children:[e(_,{name:M?"check":"plus"})," ",M?"In listening list":"Add to listening list"]})]})]})})},ln=({title:s,images:o,chapters:C,tracks:g,trackIndex:i,expanded:h,isAdult:b,rjCode:S,t:k,onTrackChange:T,onExpandedChange:P,onClose:M})=>{const v=E(null),f=E(null),[A,N]=y(!1),[u,c]=y(0),[l,B]=y(0),[p,q]=y(0),[L,X]=y(!0),[H,Y]=y(0),[j,ne]=y(new Set),[D,Z]=y(!1),[me,x]=y(!0),ee=E("");ee.current||(ee.current=typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():`asmr-${Date.now()}-${Math.random().toString(36).slice(2)}`);const[W,we]=y(()=>{const a=parseFloat(localStorage.getItem("asmrVolume")||"");return Number.isFinite(a)?a:1}),he=E(W);w(()=>{he.current=W},[W]);const pe=Ye(),z=xe.useMemo(()=>S?wt(S):"",[S]),Ce=Ct(),re=Nt(),{data:se}=Ze(z||void 0),[Le,le]=y(!1),K=E(""),U=E(null),ge=E(0),G=E(0),oe=E(0),ce=g[i],V=ce?.link,Ne=ce?.hls,fe=ce?.resolutionStr||"",ie=o.length>0,ye=`${z}:${i}`,de=xe.useMemo(()=>(se?.progress??[]).find(r=>r.trackIndex===i)??null,[se,i]),n=E({workId:"",trackIndex:0,trackLabel:""}),d=E(se);d.current=se,n.current={workId:z,trackIndex:i,trackLabel:fe};const R=Q((a,r,m,$=!1)=>{!a.workId||!m||m<10||!$&&Math.abs(r-ge.current)<5||(ge.current=r,Ce.mutate({workId:a.workId,trackIndex:a.trackIndex,trackLabel:a.trackLabel,currentTime:Math.floor(r),duration:Math.floor(m),title:s,thumbnail:o[0]||"",rjCode:a.workId,isAdult:b?1:0}))},[Ce,s,o,b]),ue=Q((a=!1)=>{U.current&&(clearTimeout(U.current),U.current=null),R(n.current,G.current,oe.current,a)},[R]),J=E(ue);J.current=ue;const _e=E(R);_e.current=R;const F=Q(()=>{f.current&&(f.current.destroy(),f.current=null)},[]);w(()=>{const a=v.current;if(!a||!V)return;const r={workId:z,trackIndex:i,trackLabel:fe},m=()=>{U.current&&(clearTimeout(U.current),U.current=null),_e.current(r,G.current,oe.current,!0)};c(0),B(0),q(0),N(!1),G.current=0,oe.current=0,ge.current=0,F();const $=d.current?.progress?.find(Be=>Be.trackIndex===i),Ae=$?.currentTime||0,Re=$?.duration||0,ke=Ae>=10&&Re-Ae>=15;if(Ne){let Be=!1;return(async()=>{const Me=await Mt();if(!Be)if(Me&&Me.isSupported()){const Ie=new Me({enableWorker:!0});f.current=Ie,Ie.loadSource(V),Ie.attachMedia(a),ke||a.play().catch(()=>N(!1))}else a.src=V,a.load(),a.volume=he.current,ke||a.play().catch(()=>N(!1))})(),()=>{Be=!0,F(),a.removeAttribute("src"),m()}}else a.src=V;return a.load(),a.volume=he.current,ke||a.play().catch(()=>N(!1)),()=>{F(),a.removeAttribute("src"),m()}},[V,Ne,F,z,i,fe]),w(()=>()=>F(),[F]),w(()=>{const a=()=>{document.visibilityState==="hidden"&&J.current()},r=()=>J.current();return document.addEventListener("visibilitychange",a),window.addEventListener("pagehide",r),()=>{document.removeEventListener("visibilitychange",a),window.removeEventListener("pagehide",r)}},[]),w(()=>{if(!de||K.current===ye||!(l>0))return;const a=de.currentTime||0,r=de.duration||l;if(K.current=ye,!(a>=10&&r-a>=15&&G.current<a))return;const m=v.current;m&&(m.currentTime=a,G.current=a,c(a),m.play().catch(()=>{}))},[de,l,ye]),w(()=>{const a=v.current;a&&(a.volume=W)},[W]),w(()=>{if(h)return document.body.classList.add("asmr-player-open"),()=>document.body.classList.remove("asmr-player-open")},[h]),w(()=>{Y(0)},[o]),w(()=>{h&&x(!0)},[h]),w(()=>{D&&x(!0)},[D]);const Te=Q(a=>{if(!s||g.length===0)return;const r=g[i],m=r?`${r.resolutionStr} (${i+1}/${g.length})`:"",$=v.current,Ae=$?$.currentTime:0,Re=$&&$.duration||0,ke=o[0]||"";$e.discord.asmrPresence.mutate({title:s,trackLabel:m,isPlaying:a,thumbnail:ke,thumbnails:o,currentTime:Ae,duration:Re,isAdult:!!b,rjCode:S||"",sessionId:ee.current}).catch(()=>{}),$e.discord.heartbeat.mutate({sessionId:ee.current}).catch(()=>{})},[s,g,i,o,b,S]);w(()=>{Te(A)},[Te,A,i,s,h]),w(()=>{if(!A)return;const a=window.setInterval(()=>Te(!0),15e3);return()=>window.clearInterval(a)},[A,Te]),w(()=>{const a=ee.current,r=()=>St(a),m=()=>r(),$=()=>{document.visibilityState==="hidden"&&r()};return window.addEventListener("pagehide",m),window.addEventListener("beforeunload",m),document.addEventListener("visibilitychange",$),()=>{window.removeEventListener("pagehide",m),window.removeEventListener("beforeunload",m),document.removeEventListener("visibilitychange",$),r()}},[]);const Se=Q(a=>{ne(r=>{if(r.has(a))return r;const m=new Set(r);return m.add(a),m})},[]),at=Q((a,r)=>{a&&a.complete&&a.naturalWidth>0&&Se(r)},[Se]);w(()=>{if(!h)return;const a=r=>{if(r.key==="Escape"){D?Z(!1):P(!1);return}!L||o.length<2||(r.key==="ArrowLeft"&&Y(m=>Math.max(0,m-1)),r.key==="ArrowRight"&&Y(m=>Math.min(o.length-1,m+1)))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[h,L,o.length,D,P]);const nt=()=>{const a=v.current;a&&(a.paused?a.play().catch(()=>{}):a.pause())},rt=a=>{const r=v.current;if(!r||!l)return;const m=parseFloat(a.currentTarget.value);r.currentTime=m,c(m)},st=()=>{ue(!0),i<g.length-1?T(i+1):le(!0)},lt=a=>{const r=a.currentTarget.currentTime;G.current=r,c(r),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>J.current(),5e3)},ot=()=>{N(!1),J.current()},ct=a=>{const r=a.currentTarget.duration;oe.current=Number.isFinite(r)?r:0,B(a.currentTarget.duration)},it=Q(()=>{z&&re.mutate({rjCode:z,title:s,thumbnail:o[0]||"",status:"Completed",isAdult:!!b,silent:!0}),le(!1),M(),pe("/")},[z,re,s,o,b,M,pe]),dt=C.reduce((a,r,m)=>u>=r.time?m:a,-1),ut=a=>{const r=v.current;r&&(r.currentTime=a,c(a))},Ee=a=>{const r=v.current;if(!r)return;const m=Number.isFinite(r.currentTime)?r.currentTime:u,$=Math.max(0,Math.min(l||1/0,m+a));r.currentTime=$,c($),x(!0)},je=l?Math.min(100,u/l*100):0,mt=l?Math.min(100,Math.max(je,p/l*100)):0,ht=e(O,{children:[e("div",{className:t.playerButtons,children:[e("button",{className:t.playerBtn,onClick:()=>T(Math.max(0,i-1)),disabled:i===0,"aria-label":"Previous track",children:e(_,{name:"step-backward"})}),e("button",{className:`${t.playerBtn} ${t.seekBtn}`,onClick:()=>Ee(-10),"aria-label":"Seek back 10 seconds",title:"Back 10s",children:[e(_,{name:"undo"}),e("span",{className:t.seekBtnLabel,children:"10"})]}),e("button",{className:`${t.playerBtn} ${t.playBtn}`,onClick:nt,"aria-label":A?"Pause":"Play",children:A?e(_,{name:"pause"}):e(_,{name:"play"})}),e("button",{className:`${t.playerBtn} ${t.seekBtn}`,onClick:()=>Ee(10),"aria-label":"Seek forward 10 seconds",title:"Forward 10s",children:[e(_,{name:"redo"}),e("span",{className:t.seekBtnLabel,children:"10"})]}),e("button",{className:t.playerBtn,onClick:()=>T(Math.min(g.length-1,i+1)),disabled:i>=g.length-1,"aria-label":"Next track",children:e(_,{name:"step-forward"})})]}),e("div",{className:t.seekRow,children:[e("span",{className:t.timeLabel,children:ve(u)}),e("input",{className:t.seekBar,type:"range",min:0,max:l||0,step:.1,value:Math.min(u,l||0),onChange:rt,style:{"--played-percent":`${je}%`,"--buffered-percent":`${mt}%`},"aria-label":"Seek"}),e("span",{className:t.timeLabel,children:ve(l)})]})]}),He=e(O,{children:[e("button",{className:`${t.playerBtn} ${t.playerToggle}`,onClick:()=>P(!h),"aria-label":h?"Minimize player":"Expand player",title:h?"Minimize to browse":"Expand",children:h?e(_,{name:"chevron-down"}):e(_,{name:"chevron-up"})}),e("div",{className:t.playerInfo,children:[e("p",{className:t.playerTitle,title:s,children:k?k(s):s}),e("p",{className:t.playerTrack,children:[ce?.resolutionStr||"",g.length>1?` (${i+1}/${g.length})`:""]})]}),e("div",{className:t.playerControls,children:ht}),e("div",{className:t.playerRight,children:[W===0?e(_,{name:"volume-mute",className:t.volumeIcon}):W<.5?e(_,{name:"volume-down",className:t.volumeIcon}):e(_,{name:"volume-up",className:t.volumeIcon}),e("input",{className:t.volumeBar,type:"range",min:0,max:1,step:.01,value:W,onChange:a=>{const r=parseFloat(a.currentTarget.value);we(r),localStorage.setItem("asmrVolume",String(r))},style:{"--volume-percent":`${W*100}%`},"aria-label":"Volume"})]}),e("div",{className:t.playerActions,children:[h&&ie&&e("button",{className:t.playerBtn,onClick:()=>X(a=>!a),"aria-label":L?"Hide images":"Show images",title:L?"Hide images":"Show images",children:L?e(_,{name:"eye-slash"}):e(_,{name:"image"})}),h&&C.length>0&&e("button",{className:`${t.playerBtn} ${D?t.playerBtnActive:""}`,onClick:()=>Z(a=>!a),"aria-label":D?"Hide bookmarks":"Show bookmarks",title:"Timestamps",children:e(_,{name:"list-ol"})}),e("button",{className:t.playerBtn,onClick:M,"aria-label":"Close player",children:e(_,{name:"times"})})]})]}),Fe=e("audio",{ref:v,preload:"metadata",onPlay:()=>N(!0),onPause:ot,onTimeUpdate:lt,onLoadedMetadata:ct,onProgress:a=>{const r=a.currentTarget;r.buffered.length>0&&q(r.buffered.end(r.buffered.length-1))},onEnded:st}),Oe=e(et,{isOpen:Le,onClose:()=>le(!1),title:"Finished!",children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e(_,{name:"check-circle",size:48,style:{color:"var(--accent-lighter)",marginBottom:"0.5rem"}}),e("p",{style:{fontSize:"1.1rem",fontWeight:600},children:k?k(s):s}),e("p",{style:{color:"var(--text-secondary)"},children:"You finished this work!"}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(Je,{variant:"secondary",onClick:()=>le(!1),children:"Close"}),e(Je,{onClick:it,children:"Mark Completed & Back to Home"})]})]})});if(!h)return qe(e(O,{children:[Fe,e("div",{className:t.playerBar,children:He}),Oe]}),document.body);const be=Math.min(H,Math.max(0,o.length-1)),De=o[be],pt=L&&ie&&!!De&&!j.has(De);return qe(e(O,{children:[Fe,Oe,e("div",{className:`${t.npOverlay} ${me?"":t.npOverlayControlsHidden}`,children:[e("div",{className:`${t.npStage} ${!L||!ie?t.npStageBlank:""}`,onClick:()=>x(a=>!a),children:L&&ie&&e(O,{children:[e("div",{className:t.sliderViewport,children:[e("div",{className:t.sliderTrack,style:{transform:`translateX(-${be*100}%)`},children:o.map(a=>e("div",{className:t.slide,children:e("img",{ref:r=>at(r,a),src:a,alt:`${k?k(s):s} - work image`,loading:"lazy",decoding:"async",draggable:!1,onLoad:()=>Se(a),onError:()=>Se(a),className:`${t.slideImg} ${j.has(a)?t.slideImgLoaded:""}`})},a))}),pt&&e("span",{className:t.slideSpinner,"aria-label":"Loading image"})]}),o.length>1&&e(O,{children:[e("button",{className:`${t.npArrow} ${t.npArrowLeft}`,onClick:a=>{a.stopPropagation(),Y(r=>Math.max(0,r-1)),x(!0)},disabled:be===0,"aria-label":"Previous image",children:e(_,{name:"chevron-left"})}),e("button",{className:`${t.npArrow} ${t.npArrowRight}`,onClick:a=>{a.stopPropagation(),Y(r=>Math.min(o.length-1,r+1)),x(!0)},disabled:be===o.length-1,"aria-label":"Next image",children:e(_,{name:"chevron-right"})}),e("span",{className:t.npImageCount,onClick:a=>a.stopPropagation(),children:[be+1," / ",o.length]})]})]})}),e("div",{className:`${t.playerBar} ${t.playerBarDocked} ${me?"":t.playerBarDockedHidden}`,onClick:a=>a.stopPropagation(),children:[He,D&&e(O,{children:[e("div",{className:t.npBackdrop,onClick:()=>Z(!1)}),e("div",{className:t.chapterPanel,children:C.map((a,r)=>e("button",{className:`${t.chapterRow} ${r===dt?t.chapterRowActive:""}`,title:k?k(a.label):a.label,onClick:()=>{ut(a.time),Z(!1)},children:[e("span",{className:t.chapterRowTime,children:ve(a.time)}),e("span",{className:t.chapterRowLabel,title:k?k(a.label):a.label,children:k?k(a.label):a.label})]},`${a.time}-${r}`))})]})]})]})]}),document.body)},on="https://github.com/serifpersia/dango/releases/latest/download/dango-extension.zip",cn=s=>{try{return JSON.parse(s.detail)}catch{return null}},dn=({isOpen:s,onClose:o,onSuccess:C})=>{const[g,i]=y(1),[h,b]=y(typeof navigator<"u"?navigator.userAgent:""),[S,k]=y(""),[T,P]=y(!1),[M,v]=y(!1),f=E(null),A=typeof navigator<"u"?navigator.userAgent:"",N=/android/i.test(A),u=/firefox|fxios/i.test(A)&&!N,c=!u&&!N&&/chrome|chromium|edg|brave/i.test(A),l=u||c;w(()=>{s&&(i(1),b(typeof navigator<"u"?navigator.userAgent:""),k(""),P(!1),v(!1))},[s]),w(()=>()=>{f.current&&(window.removeEventListener("dango:jasmr-cookie",f.current),f.current=null)},[]);const B=async()=>{localStorage.setItem("jasmr_ua",h),window.open("https://japaneseasmr.com","_blank","noopener,noreferrer"),i(2)},p=()=>{if(M)return;v(!0);const L=`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,X=window.setTimeout(()=>{v(!1),f.current&&(window.removeEventListener("dango:jasmr-cookie",f.current),f.current=null),te.error("Helper not detected - install it via about:debugging first.")},3e3),H=Y=>{const j=cn(Y);if(!(!j||j.requestId!==L))if(window.clearTimeout(X),window.removeEventListener("dango:jasmr-cookie",H),f.current=null,v(!1),j?.ok&&j.cookie)k(j.cookie),te.success("Cookie extracted from helper!");else if(j?.error==="NO_COOKIE"){const ne=j.debug?.stores?.length??0,D=j.debug?.names??[];te.error(`Helper found no cf_clearance (checked ${ne} stores, saw: ${D.join(", ")||"none"}) - solve the challenge on the JapaneseASMR tab first.`)}else te.error("Helper request failed - try again.")};f.current=H,window.addEventListener("dango:jasmr-cookie",H),window.dispatchEvent(new CustomEvent("dango:get-jasmr-cookie",{detail:{requestId:L}}))},q=async()=>{if(!S.trim()){te.error("Please enter the cf_clearance cookie");return}P(!0);try{localStorage.setItem("jasmr_cookie",S.trim()),te.success("Cookie updated successfully!"),C?.(),o()}catch{te.error("Failed to save cookie")}finally{P(!1)}};return e(et,{isOpen:s,onClose:o,title:"JapaneseASMR Verification Required",children:e("div",{className:I.container,children:g===1?e(O,{children:[e("p",{children:["JapaneseASMR is protected by a Cloudflare challenge. Solve it once in your browser and paste the ",e("strong",{children:"cf_clearance"})," cookie so the app can load the site for you."]}),e("div",{className:I.field,children:[e("label",{children:"Your User-Agent (must match the browser you solve the challenge with):"}),e("textarea",{value:h,onChange:L=>b(L.currentTarget.value),rows:3,className:I.textarea})]}),e("div",{className:I.actions,children:[e("button",{className:I.secondaryButton,onClick:o,children:"Cancel"}),e("button",{className:I.button,onClick:B,children:"Start Verification (Opens JapaneseASMR)"})]})]}):e(O,{children:[e("p",{children:["1. Solve the challenge on the ",e("strong",{children:"JapaneseASMR tab"})," (keep that tab open).",e("br",{}),"2. Copy the ",e("strong",{children:"cf_clearance"})," cookie value using one of these:",e("br",{}),e("br",{}),e("strong",{children:"Chrome / Edge — DevTools:"})," press ",e("code",{children:"F12"})," →"," ",e("strong",{children:"Application"})," → ",e("strong",{children:"Cookies"})," →"," ",e("code",{children:"https://japaneseasmr.com"}),". Find ",e("strong",{children:"cf_clearance"}),", double-click its ",e("strong",{children:"Value"})," to select it, then copy.",e("br",{}),e("br",{}),e("strong",{children:"Firefox — Storage Inspector:"})," press ",e("code",{children:"F12"})," →"," ",e("strong",{children:"Storage"})," → ",e("strong",{children:"Cookies"})," →"," ",e("code",{children:"https://japaneseasmr.com"}),". Find ",e("strong",{children:"cf_clearance"}),", right-click the value → ",e("strong",{children:"Copy Value"}),".",e("br",{}),e("br",{}),e("strong",{children:"Either browser — extension:"})," open"," ",e("strong",{children:"Cookie Manager"})," while on the JapaneseASMR tab, find"," ",e("strong",{children:"cf_clearance"}),", and copy its value (or use the extension's export).",e("br",{}),e("br",{}),"3. Paste it below. Copy ",e("strong",{children:"only the value"})," — remove any"," ",e("code",{children:"cf_clearance="})," prefix or quotes if they were included."]}),l&&e("div",{className:I.hint,children:[e("strong",{children:"Dango helper (one-time setup):"})," ",u?e(O,{children:["type ",e("code",{children:"about:debugging"})," in the address bar →"," ",e("strong",{children:"This Firefox"})," → ",e("strong",{children:"Load Temporary Add-on"})," ","→ open the ",e("code",{children:"dango-extension/firefox"})," folder and pick"," ",e("code",{children:"manifest.json"}),". (Temporary helpers unload when Firefox closes - repeat after a restart.)"]}):e(O,{children:["type ",e("code",{children:"chrome://extensions"})," in the address bar → enable"," ",e("strong",{children:"Developer mode"})," → ",e("strong",{children:"Load unpacked"})," → open the ",e("code",{children:"dango-extension/chrome"})," folder. (Unpacked helpers show a developer-mode notice - expected.)"]})," ","Use this link to download the extension and extract it:"," ",e("a",{href:on,target:"_blank",rel:"noreferrer",className:I.link,children:"dango-extension.zip"}),". Then click Extract below and the field fills itself.",e("div",{className:I.actions,children:e("button",{className:I.button,onClick:p,disabled:M,type:"button",children:M?"Extracting…":"Extract cookie from helper"})})]}),e("div",{className:I.field,children:[e("label",{children:"cf_clearance cookie value:"}),e("input",{type:"text",value:S,onChange:L=>k(L.currentTarget.value),placeholder:"e.g. xxxxxxxx.xxxxxxxx.xxxxxxx-xxxxxxx",className:I.input})]}),e("div",{className:I.actions,children:[e("button",{className:I.secondaryButton,onClick:o,children:"Cancel"}),e("button",{className:I.secondaryButton,onClick:()=>i(1),children:"Back"}),e("button",{className:I.button,onClick:q,disabled:T,children:T?"Saving...":"Submit"})]})]})})})},tt="asmrTranslateCache",un=10080*60*1e3;function mn(){try{const s=localStorage.getItem(tt);if(!s)return new Map;const o=JSON.parse(s);return new Map(Object.entries(o))}catch{return new Map}}function hn(s){try{const o={};for(const[C,g]of s)o[C]=g;localStorage.setItem(tt,JSON.stringify(o))}catch{}}function Ge(s){return/[\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FAF]/.test(s)}async function pn(s){const o=s.map(i=>i.trim()).filter(Boolean);if(o.length===0)return new Map;const C=await $e.settings.translate.mutate({texts:o,source:"ja",target:"en"}),g=new Map;for(const[i,h]of Object.entries(C.translations||{}))g.set(i,h);for(const i of o)g.has(i)||g.set(i,i);return g}function gn(s,o){const[C,g]=y(new Map),[i,h]=y(!1),b=E(null),S=s.join("");return w(()=>{const T=S?S.split(""):[];if(!o||T.length===0){g(new Map),h(!1);return}const P=Array.from(new Set(T.map(u=>u.trim()).filter(Boolean).filter(Ge)));if(P.length===0){g(new Map);return}b.current||(b.current=mn());const M=Date.now(),v=new Map,f=[];for(const u of P){const c=b.current.get(u);c&&M-c.ts<un?v.set(u,c.t):f.push(u)}if(f.length===0){g(v);return}let A=!1;h(!0);const N=[];for(let u=0;u<f.length;u+=15)N.push(f.slice(u,u+15));return(async()=>{const u=new Map;for(const l of N){try{const B=await pn(l);for(const[p,q]of B)u.set(p,q)}catch{}await new Promise(B=>setTimeout(B,120))}if(A)return;if(b.current){for(const[l,B]of u)b.current.set(l,{t:B,ts:Date.now()});hn(b.current)}const c=new Map([...v,...u]);g(c),h(!1)})(),()=>{A=!0}},[o,S]),{t:T=>!o||!T||!Ge(T)?T:C.get(T.trim())||T,map:C,isTranslating:i}}const fn=[{label:"Date",options:[{value:"latest",label:"Latest"},{value:"oldest",label:"Oldest"}]},{label:"Title",options:[{value:"title_asc",label:"A → Z"},{value:"title_desc",label:"Z → A"}]},{label:"Popular (Views)",options:[{value:"popular_recent",label:"Recent"},{value:"popular_week",label:"Week"},{value:"popular_month",label:"Month"},{value:"popular_6_months",label:"6 Months"},{value:"popular_year",label:"Year"},{value:"popular",label:"All Time"}]},{label:"Most Commented",options:[{value:"comments_week",label:"Week"},{value:"comments_month",label:"Month"},{value:"comments_year",label:"Year"},{value:"comments",label:"All Time"}]},{label:"Other",options:[{value:"random",label:"Random"}]}],yn=[{value:"",label:"All"},{value:"sfw",label:"SFW / 全年齢"},{value:"r-15",label:"R-15"},{value:"r-18",label:"NSFW / R18"},{value:"yuri",label:"Yuri / Girls love / 百合"},{value:"otokonoko",label:"Otoko no ko / 男の娘"},{value:"futanari",label:"Futanari / フタナリ"},{value:"r-18g",label:"R-18G / グロ"}],_n=[{value:"sfw",label:"SFW / 全年齢"}],xn=()=>{const{rj:s}=gt(),o=Ye(),[C,g]=ft(),{hasConsent:i,grant:h}=At(),[b,S]=y(!1),[k,T]=y(()=>C.get("q")||""),[P,M]=y(()=>C.get("q")||""),[v,f]=y("latest"),[A,N]=y("sfw"),[u,c]=y(1),[l,B]=y(null),[p,q]=y(null),[L,X]=y(!0),[H,Y]=y(()=>localStorage.getItem("asmrTranslateEN")==="true"),[j,ne]=y(!1),D=yt(),{toggle:Z,bookmarkedIds:me}=Xe(),{popup:x,openPopup:ee,scheduleClose:W,cancelClose:we,closePopup:he}=Lt();w(()=>Bt("jasmr",()=>ne(!0)),[]),w(()=>{localStorage.setItem("asmrTranslateEN",String(H))},[H]);const pe=i,z=pe?A:"sfw",Ce=pe?yn:_n,{data:re,isLoading:se,isError:Le,isFetching:le}=Tt(P,u,v,z),K=xe.useMemo(()=>re?.shows??[],[re?.shows]),U=re?.hasNext??!1;w(()=>{if(!s){l&&!p&&B(null);return}const n=s.toUpperCase();if(p&&(p.work.id?.toUpperCase()===n||p.work._id?.toUpperCase()===n)){l&&B(null);return}const d=K.find(R=>(R.id||R._id)?.toUpperCase()===n);d?(!l||(l.id||l._id)!==(d.id||d._id))&&B(d):(!l||(l.id||l._id)?.toUpperCase()!==n)&&B({_id:n,id:n,name:n})},[s,K,p,l]);const ge=Q(()=>{o("/asmr")},[o]);w(()=>{!s&&p&&q(null)},[s,p]);const{data:G}=Ke(p&&p.work.id||null),oe=p?[p.work.thumbnail,...G?.images||[]].filter(Boolean):[],ce=[...K.map(n=>n.name),l?.name||"",p?.work.name||"",...G?.chapters?.map(n=>n.label)||[]].filter(Boolean),{t:V}=gn(ce,H);w(()=>{const n=p?p.work.name:l?l.name:s?s.toUpperCase():"",d=n?H?V(n):n:"",R=d?`${d} - dango`:"dango";document.title=R;try{window.history.replaceState(window.history.state,R,window.location.href)}catch{}},[l,p,s,H,V]);const Ne=n=>{n.preventDefault(),M(k),c(1);const d=new URLSearchParams(C);k.trim()?d.set("q",k.trim()):d.delete("q"),d.delete("page"),g(d,{replace:!0})};w(()=>{const n=C.get("q")||"";T(d=>d===n?d:n),M(d=>d===n?d:n),c(1)},[C]);const fe=n=>{n.currentTarget.checked&&!i&&S(!0)},ie=()=>{h(),S(!1),c(1)},ye=()=>{S(!1)},de=Q((n,d,R)=>{B(null),X(!0),q({work:n,tracks:d,index:R})},[]);return e("div",{className:`${ae.page} ${p?ae.pageWithPlayer:""}`,children:[!(p&&L)&&e(O,{children:[e("header",{className:ae.header,children:[e("h1",{className:ae.pageTitle,children:[e(_,{name:"headphones"})," ASMR"]}),e("form",{className:ae.searchForm,onSubmit:Ne,children:[e("input",{className:ae.searchInput,type:"text",value:k,onChange:n=>T(n.currentTarget.value),placeholder:"Search works, circles, CV… (-word excludes)","aria-label":"Search ASMR works"}),e("button",{className:ae.searchBtn,type:"submit","aria-label":"Search",children:e(_,{name:"search"})})]})]}),e("div",{className:t.filterBar,children:[e("label",{className:t.filterLabel,htmlFor:"asmr-sort",children:"Sort"}),e("select",{id:"asmr-sort",className:t.sortSelect,value:v,onChange:n=>{f(n.currentTarget.value),c(1)},children:fn.map(n=>e("optgroup",{label:n.label,children:n.options.map(d=>e("option",{value:d.value,children:d.label},d.value))},n.label))}),e("label",{className:t.filterLabel,htmlFor:"asmr-rating",children:"Type"}),e("select",{id:"asmr-rating",className:t.sortSelect,value:A,onChange:n=>{N(n.currentTarget.value),c(1)},children:Ce.map(n=>e("option",{value:n.value,children:n.label},n.value))}),e("div",{className:t.filterTogglesGroup,children:[e("div",{className:t.translateToggleWrap,children:[e("span",{className:t.filterLabel,children:"JP"}),e(Ue,{id:"asmr-translate-toggle",isChecked:H,onChange:n=>Y(n.currentTarget.checked)}),e("span",{className:t.filterLabel,children:"EN"})]}),!i&&e("div",{className:t.matureToggleWrap,children:[e("label",{className:t.matureLabel,htmlFor:"asmr-mature-toggle",children:"Mature"}),e(Ue,{id:"asmr-mature-toggle",isChecked:!1,onChange:fe})]})]})]}),Le?e("p",{className:t.statusMsg,children:"Failed to load works. Please try again."}):se&&K.length===0?e("div",{className:t.grid,"aria-hidden":!0,children:Array.from({length:12}).map((n,d)=>e("div",{className:t.skeletonCard,children:[e("div",{className:`${t.skeletonThumb} ${t.shimmer}`}),e("div",{className:`${t.skeletonLine} ${t.shimmer}`,style:{width:"88%"}}),e("div",{className:`${t.skeletonLine} ${t.shimmer}`,style:{width:"55%"}})]},d))}):K.length===0?e("p",{className:t.statusMsg,children:"No works found."}):e(O,{children:[e("div",{className:`${t.grid} ${le?t.fetching:""}`,children:K.map(n=>{const d=H?{...n,name:V(n.name)}:n,R=Qe(n),ue=Ve(R),J=me.has(ue),_e=`/asmr/${encodeURIComponent(R)}`;return e("div",{className:t.asmrCardWrap,children:[e(bt,{item:{id:ue,title:d.name,thumbnail:n.thumbnail||"",typeBadge:R||void 0,isAdult:Pe(n)},linkTo:_e,hoverIcon:"info",layout:"horizontal",showInfoButton:!0,display:{elements:{poster:{typeBadge:!0,chapterBadge:!1,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!1,meta:!1}}},onOpenDetails:F=>ee(F,{rjCode:R,title:d.name,thumbnail:n.thumbnail||"",isAdult:Pe(n),rating:n.rating,listenTarget:_e}),onPopupHoverIntent:F=>F?we():W(),rawThumbnail:!0}),e("button",{className:`${t.bookmarkBtn} ${J?t.bookmarked:""}`,onClick:F=>{F.preventDefault(),F.stopPropagation(),Z({rjCode:R,title:n.name,thumbnail:n.thumbnail||"",isAdult:Pe(n)})},title:J?"Remove from listening list":"Add to listening list","aria-label":J?"Remove from listening list":"Add to listening list","aria-pressed":J,children:e(_,{name:J?"check":"plus",size:12})})]},n._id||n.id)})}),e(kt,{page:u,canGoNext:U,onChange:n=>c(n),variant:"labeled"})]})]}),l&&e(sn,{work:l,onClose:ge,onPlay:de,t:V}),x&&e(Rt,{data:x.data,anchorRect:x.rect,bookmarked:me.has(Ve(x.data.rjCode)),onToggleBookmark:()=>Z({rjCode:x.data.rjCode,title:x.data.title,thumbnail:x.data.thumbnail||"",isAdult:x.data.isAdult}),onMouseEnter:we,onMouseLeave:W,onRequestClose:he}),j&&e(dn,{isOpen:j,onClose:()=>ne(!1),onSuccess:()=>{D.invalidateQueries({queryKey:[ze.asmrBrowse]}),D.invalidateQueries({queryKey:[ze.asmrWork]})}}),b&&e(_t,{isOpen:!0,scope:"section",showResetHint:!0,onClose:ye,onGrant:ie}),p&&e(ln,{title:p.work.name,images:oe,chapters:G?.chapters||[],tracks:p.tracks,trackIndex:p.index,expanded:L,isAdult:!!p.work.isAdult,rjCode:p.work.id||p.work._id,t:V,onTrackChange:n=>q(d=>d&&{...d,index:n}),onExpandedChange:X,onClose:()=>{q(null),X(!0),s&&o("/asmr")}})]})};export{xn as default};
@@ -0,0 +1 @@
1
+ ._sortSelect_1f2gy_1{padding:var(--space-2-5) var(--space-3);border:var(--space-px) solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);font-size:var(--font-size-sm);cursor:pointer}._grid_1f2gy_11{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--size-220),1fr));gap:var(--space-4);transition:opacity var(--transition-fast)}@media(max-width:600px){._grid_1f2gy_11{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}}._fetching_1f2gy_25{opacity:.45;pointer-events:none}._card_1f2gy_30{display:flex;flex-direction:column;text-align:left;padding:0;border:none;background:none;cursor:pointer;color:inherit}._thumbWrap_1f2gy_41{position:relative;aspect-ratio:4 / 3;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-tertiary);transition:transform var(--transition-fast) var(--ease-smooth),box-shadow var(--transition-fast) var(--ease-smooth)}._card_1f2gy_30:hover ._thumbWrap_1f2gy_41{transform:translateY(calc(var(--space-1) * -1));box-shadow:var(--shadow-lg)}._thumb_1f2gy_41{width:100%;height:100%;object-fit:cover;display:block}._thumbPlaceholder_1f2gy_64{display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);font-size:var(--font-size-sm)}._adultBadge_1f2gy_72{position:absolute;top:var(--space-2);right:var(--space-2);padding:var(--space-2px) var(--space-2);border-radius:var(--radius-full);background:var(--color-danger-bg);color:var(--text-primary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}._cardTitle_1f2gy_84{margin:var(--space-2) 0 var(--space-2px);font-size:var(--font-size-sm);color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}._cardMeta_1f2gy_94{margin:0;font-size:var(--font-size-xs);color:var(--text-tertiary)}._asmrCardWrap_1f2gy_100{position:relative;min-width:0}._bookmarkBtn_1f2gy_105{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;border-radius:50%;background-color:#0009;color:#fff;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s ease,background-color .15s ease,transform .15s ease;z-index:20}._asmrCardWrap_1f2gy_100:hover ._bookmarkBtn_1f2gy_105,._asmrCardWrap_1f2gy_100:focus-within ._bookmarkBtn_1f2gy_105,._bookmarkBtn_1f2gy_105._bookmarked_1f2gy_129{opacity:1}._bookmarkBtn_1f2gy_105:hover{background-color:var(--accent);border-color:var(--accent);color:var(--accent-text);transform:scale(1.08)}._bookmarkBtn_1f2gy_105._bookmarked_1f2gy_129{background-color:var(--accent);border-color:var(--accent);color:var(--accent-text)}@media(hover:none),(pointer:coarse){._bookmarkBtn_1f2gy_105{opacity:1}}._statusMsg_1f2gy_152{text-align:center;color:var(--text-secondary);padding:var(--space-8) 0}._skeletonCard_1f2gy_160{display:flex;flex-direction:column}._skeletonThumb_1f2gy_165{aspect-ratio:16 / 9;border-radius:var(--radius-lg);background:var(--bg-tertiary)}._skeletonLine_1f2gy_171{height:var(--space-3);border-radius:var(--radius-xs);margin-top:var(--space-2);background:var(--bg-tertiary)}._shimmer_1f2gy_178{position:relative;overflow:hidden}._shimmer_1f2gy_178:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--shimmer-highlight),transparent);animation:_skeleton-wave_1f2gy_1 var(--duration-shimmer) infinite}._pagination_1f2gy_192{display:flex;align-items:center;justify-content:center;gap:var(--space-4);margin-top:var(--space-6)}._pageBtn_1f2gy_200{padding:var(--space-2) var(--space-5);border:var(--space-px) solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer}._pageBtn_1f2gy_200:disabled{opacity:.4;cursor:not-allowed}._pageIndicator_1f2gy_214{color:var(--text-secondary);font-size:var(--font-size-sm)}._matureToggleWrap_1f2gy_219{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}._matureLabel_1f2gy_226{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--text-secondary)}._translateToggleWrap_1f2gy_232{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}._filterTogglesGroup_1f2gy_239{display:flex;align-items:center;gap:var(--space-4);margin-left:auto}._filterTogglesGroup_1f2gy_239 ._translateToggleWrap_1f2gy_232,._filterTogglesGroup_1f2gy_239 ._matureToggleWrap_1f2gy_219{margin-left:0}._filterBar_1f2gy_251{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4)}._filterLabel_1f2gy_258{font-size:var(--font-size-sm);color:var(--text-secondary)}._detailOverlay_1f2gy_263{position:fixed;inset:0;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;background:var(--bg-overlay-heavy);-webkit-backdrop-filter:blur(var(--blur-sm));backdrop-filter:blur(var(--blur-sm));padding:var(--space-4)}._detailModal_1f2gy_275{position:relative;width:min(var(--size-720),100%);max-height:85vh;overflow-y:auto;border-radius:var(--radius-xl);border:var(--space-px) solid var(--border-secondary);background:var(--bg-elevated);box-shadow:var(--glass-shadow);padding:var(--space-5)}._detailClose_1f2gy_287{position:absolute;top:var(--space-3);right:var(--space-3);display:flex;align-items:center;justify-content:center;width:var(--size-34);height:var(--size-34);border:none;border-radius:var(--radius-full);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer}._detailHeader_1f2gy_303{display:flex;flex-direction:column;gap:var(--space-4)}._detailCover_1f2gy_309{width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:var(--radius-lg);flex-shrink:0;background:var(--bg-tertiary)}._detailInfo_1f2gy_318{min-width:0}._detailTitle_1f2gy_322{margin:0 0 var(--space-2);font-size:var(--font-size-lg);color:var(--text-primary);line-height:1.35}._detailRj_1f2gy_329{margin:0 0 var(--space-3);font-size:var(--font-size-xs);color:var(--text-tertiary)}._metaRow_1f2gy_335{margin:0 0 4px;font-size:var(--font-size-sm);color:var(--text-secondary)}._metaLabel_1f2gy_341{display:inline-block;min-width:var(--space-16);color:var(--text-tertiary)}._tagChips_1f2gy_347{display:inline-flex;flex-wrap:wrap;gap:var(--space-1)}._tagChip_1f2gy_347{padding:var(--space-2px) var(--space-2);border-radius:var(--radius-full);background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--font-size-xs)}._npOverlay_1f2gy_363{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;flex-direction:column;background:var(--bg-dark);overflow:hidden;overscroll-behavior:contain}body.asmr-player-open{overflow:hidden}._playerBarDocked_1f2gy_378{position:static;transform:translateY(0);max-height:var(--size-240);overflow:visible;transition:transform var(--transition-emphasized),max-height var(--transition-emphasized),opacity var(--transition-base),padding var(--transition-base),border-width var(--transition-base);will-change:transform,max-height,opacity}._playerBarDockedHidden_1f2gy_392{max-height:0!important;opacity:0;transform:translateY(18%);padding-top:0!important;padding-bottom:0!important;border-width:0!important;pointer-events:none;overflow:hidden!important}._npOverlayControlsHidden_1f2gy_403 ._npArrow_1f2gy_403,._npOverlayControlsHidden_1f2gy_403 ._npImageCount_1f2gy_404{opacity:0;pointer-events:none;transform:translateY(-50%) scale(.96);transition:opacity var(--transition-base),transform var(--transition-emphasized)}._npOverlayControlsHidden_1f2gy_403 ._npStage_1f2gy_413{cursor:pointer}._npStage_1f2gy_413{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--bg-black);transition:padding var(--transition-emphasized)}._npStage_1f2gy_413,._sliderViewport_1f2gy_429,._slide_1f2gy_429,._slideImg_1f2gy_431{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;outline:none;-webkit-user-select:none;user-select:none}._npStage_1f2gy_413:focus,._sliderViewport_1f2gy_429:focus,._slide_1f2gy_429:focus,._slideImg_1f2gy_431:focus{outline:none!important;box-shadow:none!important}._slideImg_1f2gy_431::-moz-focus-inner{border:0}._npStageBlank_1f2gy_450{background:var(--bg-dark)}._npStageImg_1f2gy_454{max-width:min(92vw,var(--size-900));max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none}._sliderViewport_1f2gy_429{position:absolute;inset:0;overflow:hidden}._sliderTrack_1f2gy_469{display:flex;height:100%;transition:transform var(--transition-normal);will-change:transform}._slide_1f2gy_429{flex:0 0 100%;height:100%;display:flex;align-items:center;justify-content:center;padding:var(--space-5) var(--size-84);box-sizing:border-box;transition:padding var(--transition-emphasized)}._slideImg_1f2gy_431{max-width:100%;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;opacity:0;transform:scale(.985);-webkit-tap-highlight-color:transparent;outline:none;transition:opacity var(--transition-base),transform var(--transition-emphasized),max-height var(--transition-emphasized)}._slideImgLoaded_1f2gy_502{opacity:1;transform:none}._slideSpinner_1f2gy_507{position:absolute;left:50%;top:50%;width:var(--size-44);height:var(--size-44);margin:calc(var(--size-22) * -1) 0 0 calc(var(--size-22) * -1);border-radius:var(--radius-full);border:var(--space-2px) solid var(--border-strong);border-top-color:var(--text-primary);animation:_spin_1f2gy_1 var(--duration-spin) linear infinite;pointer-events:none}@keyframes _spin_1f2gy_1{to{transform:rotate(360deg)}}._npArrow_1f2gy_403{position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:var(--size-48);height:var(--size-48);border:var(--space-px) solid var(--border-strong);border-radius:var(--radius-full);background:var(--bg-scrim);-webkit-backdrop-filter:blur(var(--blur-md));backdrop-filter:blur(var(--blur-md));box-shadow:var(--shadow-scrim);color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast)}._npArrow_1f2gy_403:hover:not(:disabled){background:var(--bg-scrim-strong)}._npArrow_1f2gy_403:disabled{opacity:.25;cursor:not-allowed}._npArrowLeft_1f2gy_557{left:var(--space-5)}._npArrowRight_1f2gy_561{right:var(--space-5)}._npImageCount_1f2gy_404{position:absolute;top:calc(var(--space-4) + var(--space-16));right:var(--space-4);padding:var(--space-2px) var(--space-2-5);border-radius:var(--radius-full);background:var(--bg-overlay-strong);color:var(--text-secondary);font-size:var(--font-size-xs);font-variant-numeric:tabular-nums;z-index:var(--z-base)}._chapterPanel_1f2gy_578{position:absolute;bottom:calc(100% + var(--space-2-5));right:var(--space-5);width:min(var(--size-440),calc(100vw - var(--space-8)));max-height:min(46vh,var(--size-420));overflow-y:auto;background:var(--bg-elevated);border:var(--space-px) solid var(--border-secondary);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);padding:var(--space-1-5);z-index:var(--z-dropdown)}._chapterRow_1f2gy_593{display:flex;align-items:baseline;gap:var(--space-3);width:100%;text-align:left;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-primary);cursor:pointer;font-size:var(--font-size-sm)}._chapterRow_1f2gy_593:hover{background:var(--bg-tertiary)}._chapterRowActive_1f2gy_612{background:var(--bg-selected)}._chapterRowTime_1f2gy_616{flex-shrink:0;color:var(--text-tertiary);font-variant-numeric:tabular-nums}._chapterRowActive_1f2gy_612 ._chapterRowTime_1f2gy_616{color:var(--accent);font-weight:var(--font-weight-semibold)}._chapterRowLabel_1f2gy_627{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._npBackdrop_1f2gy_633{position:fixed;inset:0;z-index:-1}._playerBtn_1f2gy_639._playerBtnActive_1f2gy_639{color:var(--accent);background:color-mix(in srgb,var(--accent) 20%,transparent);box-shadow:0 0 10px var(--accent-glow)}._tracksSection_1f2gy_645{margin-top:var(--space-5)}._tracksHeading_1f2gy_649{font-size:var(--font-size-base);color:var(--text-primary);margin:0 0 var(--space-2)}._trackList_1f2gy_655{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1-5)}._trackRow_1f2gy_664{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border:var(--space-px) solid var(--border-secondary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font-size:var(--font-size-sm)}._trackRow_1f2gy_664:hover{border-color:var(--accent)}._trackIcon_1f2gy_682{color:var(--accent);flex-shrink:0}._trackLabel_1f2gy_687{flex:1;text-align:left}._trackType_1f2gy_692{font-size:var(--font-size-xs);color:var(--text-tertiary)}._noTracks_1f2gy_697{color:var(--text-secondary);font-size:var(--font-size-sm)}._playAllBtn_1f2gy_702{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2-5) var(--space-5);border:none;border-radius:var(--radius-md);background:var(--accent);color:var(--accent-text);font-size:var(--font-size-base);cursor:pointer}._detailActions_1f2gy_715{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5)}._playerBar_1f2gy_378{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-overlay);display:flex;align-items:center;gap:var(--space-4);padding:var(--space-2-5) var(--space-5);padding-bottom:calc(var(--space-2-5) + env(safe-area-inset-bottom,0px));background:var(--glass-bg);border-top:var(--space-px) solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur-lg));backdrop-filter:blur(var(--blur-lg))}._playerActions_1f2gy_738{display:flex;align-items:center;gap:var(--space-2)}._playerInfo_1f2gy_744{min-width:0;width:var(--size-240)}._playerTitle_1f2gy_749{margin:0;font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._playerTrack_1f2gy_758{margin:var(--space-2px) 0 0;font-size:var(--font-size-xs);color:var(--text-tertiary)}._playerControls_1f2gy_764{display:flex;align-items:center;gap:var(--space-3);flex:1}._seekRow_1f2gy_771{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0}._playerButtons_1f2gy_779{display:flex;align-items:center;gap:var(--space-2)}._playerBtn_1f2gy_639{display:flex;align-items:center;justify-content:center;width:var(--size-36);height:var(--size-36);border:none;border-radius:var(--radius-full);background:transparent;color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast),transform var(--transition-quick),opacity var(--transition-fast)}._playerBtn_1f2gy_639:disabled{opacity:.35;cursor:not-allowed}@media(hover:hover)and (pointer:fine){._playerBtn_1f2gy_639:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}._seekBtn_1f2gy_814:hover:not(:disabled){background:var(--bg-hover-strong);color:var(--accent)}._seekBtn_1f2gy_814:hover ._seekBtnLabel_1f2gy_819{background:var(--accent);color:var(--accent-text)}._playBtn_1f2gy_824:hover:not(:disabled){background:var(--accent-light);color:var(--accent-text);box-shadow:0 0 12px var(--accent-glow)}}._playerBtn_1f2gy_639:active:not(:disabled){transform:scale(.94);transition:transform var(--transition-quick),background var(--transition-quick)}._playBtn_1f2gy_824{background:var(--accent);color:var(--accent-text);width:var(--size-42);height:var(--size-42)}._playBtn_1f2gy_824:disabled{opacity:1}._seekBtn_1f2gy_814{position:relative;font-size:var(--font-size-sm);color:var(--text-primary)}._seekBtnLabel_1f2gy_819{position:absolute;bottom:var(--space-px);left:50%;transform:translate(-50%);font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);line-height:1;letter-spacing:-.02em;background:var(--bg-overlay);color:var(--text-primary);padding:var(--space-px) var(--space-2px);border-radius:var(--radius-sm);pointer-events:none}._seekBar_1f2gy_871,._volumeBar_1f2gy_872{-webkit-appearance:none;appearance:none;height:var(--size-18);background:transparent;cursor:pointer}._seekBar_1f2gy_871::-webkit-slider-runnable-track,._volumeBar_1f2gy_872::-webkit-slider-runnable-track{width:100%;height:var(--space-1);border-radius:var(--space-1)}._seekBar_1f2gy_871::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--played-percent, 0%),var(--track-buffered) var(--played-percent, 0%),var(--track-buffered) var(--buffered-percent, 0%),var(--track-bg) var(--buffered-percent, 0%),var(--track-bg) 100%)}._volumeBar_1f2gy_872::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--volume-percent, 100%),var(--track-bg) var(--volume-percent, 100%),var(--track-bg) 100%)}._seekBar_1f2gy_871::-moz-range-track{width:100%;height:var(--space-1);border-radius:var(--space-1);background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--played-percent, 0%),var(--track-buffered) var(--played-percent, 0%),var(--track-buffered) var(--buffered-percent, 0%),var(--track-bg) var(--buffered-percent, 0%),var(--track-bg) 100%)}._volumeBar_1f2gy_872::-moz-range-track{width:100%;height:var(--space-1);border-radius:var(--space-1);background:linear-gradient(to right,var(--accent) 0%,var(--accent) var(--volume-percent, 100%),var(--track-bg) var(--volume-percent, 100%),var(--track-bg) 100%)}._seekBar_1f2gy_871::-webkit-slider-thumb,._volumeBar_1f2gy_872::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:var(--space-3);width:var(--space-3);border-radius:var(--radius-full);background:var(--text-primary);margin-top:calc(var(--space-1) * -1);box-shadow:var(--shadow-thumb)}._seekBar_1f2gy_871::-moz-range-thumb,._volumeBar_1f2gy_872::-moz-range-thumb{height:var(--space-3);width:var(--space-3);border:none;border-radius:var(--radius-full);background:var(--text-primary);box-shadow:var(--shadow-thumb)}._seekBar_1f2gy_871{flex:1;min-width:0}._timeLabel_1f2gy_964{font-size:var(--font-size-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}._playerRight_1f2gy_970{display:flex;align-items:center;gap:var(--space-2)}._volumeIcon_1f2gy_976{color:var(--text-secondary)}._volumeBar_1f2gy_872{width:var(--size-90)}@media(max-width:768px){._detailHeader_1f2gy_303{flex-direction:column}._detailCover_1f2gy_309{width:100%}._filterBar_1f2gy_251{flex-wrap:wrap}._filterBar_1f2gy_251 ._sortSelect_1f2gy_1{flex:1 1 var(--size-140);min-width:0}._pageWithPlayer_1f2gy_1002{padding-bottom:var(--layout-player-mobile)}._playerBar_1f2gy_378{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"toggle info actions" "controls controls controls" "volume volume volume";align-items:center;column-gap:var(--space-2);row-gap:var(--space-2px);padding:var(--space-2) var(--space-3);padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom,0px))}._playerToggle_1f2gy_1020{grid-area:toggle}._playerInfo_1f2gy_744{grid-area:info;width:auto}._playerActions_1f2gy_738{grid-area:actions;margin-right:calc(var(--space-1-5) * -1)}._playerControls_1f2gy_764{grid-area:controls;gap:var(--space-2);min-width:0;justify-content:center}._playerRight_1f2gy_970{grid-area:volume;width:100%}._volumeBar_1f2gy_872{flex:1;width:auto;height:var(--space-6)}._slide_1f2gy_429{padding:0 var(--size-52)}._npArrow_1f2gy_403{width:var(--size-42);height:var(--size-42);opacity:.85}._npArrowLeft_1f2gy_557{left:var(--space-2)}._npArrowRight_1f2gy_561{right:var(--space-2)}._npImageCount_1f2gy_404{top:calc(var(--space-3) + env(safe-area-inset-top,0px));right:var(--space-3)}._chapterPanel_1f2gy_578{right:var(--space-3);max-height:55vh}}@media(max-width:768px)and (orientation:portrait){._npStage_1f2gy_413{height:100%}._sliderViewport_1f2gy_429{inset:0}._slide_1f2gy_429{padding:0}._npOverlay_1f2gy_363:not(._npOverlayControlsHidden_1f2gy_403) ._slide_1f2gy_429{padding-bottom:var(--space-2-5)}._npOverlay_1f2gy_363:not(._npOverlayControlsHidden_1f2gy_403) ._slideImg_1f2gy_431{max-height:calc(100% - var(--space-2-5))}._slideImg_1f2gy_431{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;object-position:center}._playerBar_1f2gy_378{grid-template-areas:"toggle info actions" "controls controls controls" "volume volume volume";row-gap:var(--space-2-5);padding:var(--space-2-5) var(--space-3);padding-bottom:calc(var(--space-2-5) + env(safe-area-inset-bottom,0px))}._playerControls_1f2gy_764{flex-direction:column;align-items:center;gap:var(--space-2);width:100%}._playerButtons_1f2gy_779{justify-content:center;width:100%;gap:var(--space-1-5)}._seekRow_1f2gy_771{width:100%;justify-content:center}._seekRow_1f2gy_771 ._seekBar_1f2gy_871{flex:1}._playerRight_1f2gy_970{justify-content:center;width:100%}._playerRight_1f2gy_970 ._volumeBar_1f2gy_872{flex:1;width:100%;max-width:var(--size-320)}}
@@ -1 +1 @@
1
- import{u as i}from"./vendor-core-DfaOB3Rn.js";import{R as n}from"./ResetProgressModal-BuESoxbY.js";import{s as a,n as g}from"./useAsmr-BwyYDnlP.js";const p=({workId:e,title:s,onClose:r})=>{const o=a(),m=g();return i(n,{isOpen:!!e,itemName:s,progressKind:"listening",listLabel:"my listening list",onClose:r,onConfirm:t=>{e&&(o.mutate({workId:e}),t&&m.mutate({id:e}))}})};export{p as A};
1
+ import{u as i}from"./vendor-core-DfaOB3Rn.js";import{R as n}from"./ResetProgressModal-0PvvM2XJ.js";import{s as a,n as g}from"./useAsmr-B-FYJW2L.js";const p=({workId:e,title:s,onClose:r})=>{const o=a(),m=g();return i(n,{isOpen:!!e,itemName:s,progressKind:"listening",listLabel:"my listening list",onClose:r,onConfirm:t=>{e&&(o.mutate({workId:e}),t&&m.mutate({id:e}))}})};export{p as A};