nixamp 0.28.7 → 0.28.9

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 (80) hide show
  1. package/backtoschool/dist/assets/{ar-qWtdkIOw.js → ar-CmpEhms8.js} +1 -1
  2. package/backtoschool/dist/assets/{cs-O-6iUq7L.js → cs-BiiJOLTm.js} +1 -1
  3. package/{web/dist/assets/da-MlHOzqGo.js → backtoschool/dist/assets/da-DueRd5zz.js} +1 -1
  4. package/{web/dist/assets/de-Byc7wg7T.js → backtoschool/dist/assets/de-DIG6WxUZ.js} +1 -1
  5. package/backtoschool/dist/assets/{es-SiEP0g18.js → es-BwQQh_C8.js} +1 -1
  6. package/backtoschool/dist/assets/{fi-DFexxTi-.js → fi-DKPYMsbo.js} +1 -1
  7. package/backtoschool/dist/assets/{fr-BHMNLR57.js → fr-DNekMW0h.js} +1 -1
  8. package/{web/dist/assets/hi-D-0JPj2r.js → backtoschool/dist/assets/hi-CGlN72JQ.js} +1 -1
  9. package/backtoschool/dist/assets/{hu-WxKh5kIZ.js → hu-gcw9ouWH.js} +1 -1
  10. package/backtoschool/dist/assets/{id-BMS_sYt_.js → id-Bz51zxz6.js} +1 -1
  11. package/backtoschool/dist/assets/{index-CAxBxaVm.css → index-CP4oTs6H.css} +1 -1
  12. package/backtoschool/dist/assets/index-DDGO_FOw.js +113 -0
  13. package/backtoschool/dist/assets/{it-D5A6m68v.js → it-jO8u4ie7.js} +1 -1
  14. package/{web/dist/assets/nl-B_yl9TWr.js → backtoschool/dist/assets/nl-CnYXq0K4.js} +1 -1
  15. package/{web/dist/assets/ru-B8vxDDQh.js → backtoschool/dist/assets/ru-BatrUfYu.js} +1 -1
  16. package/backtoschool/dist/assets/{sv-DwuCaxjv.js → sv-CV2-POKP.js} +1 -1
  17. package/{web/dist/assets/uk-CB-i8MiC.js → backtoschool/dist/assets/uk-vLtqKpHm.js} +1 -1
  18. package/backtoschool/dist/assets/{vi-CEACVAuf.js → vi-BDZew-O9.js} +1 -1
  19. package/{web/dist/assets/zh-DvoeAN6z.js → backtoschool/dist/assets/zh-C9hBmQKA.js} +1 -1
  20. package/backtoschool/dist/index.html +2 -2
  21. package/backtoschool/dist/sw.js +23 -0
  22. package/dist/channels.js +8 -3
  23. package/dist/live-api.d.ts +1 -0
  24. package/dist/live-api.js +2 -0
  25. package/dist/locales/ar.d.ts +5 -0
  26. package/dist/locales/cs.d.ts +5 -0
  27. package/dist/locales/da.d.ts +5 -0
  28. package/dist/locales/de.d.ts +5 -0
  29. package/dist/locales/en.d.ts +5 -0
  30. package/dist/locales/es.d.ts +5 -0
  31. package/dist/locales/fi.d.ts +5 -0
  32. package/dist/locales/fr.d.ts +5 -0
  33. package/dist/locales/hi.d.ts +5 -0
  34. package/dist/locales/hu.d.ts +5 -0
  35. package/dist/locales/id.d.ts +5 -0
  36. package/dist/locales/it.d.ts +5 -0
  37. package/dist/locales/nl.d.ts +5 -0
  38. package/dist/locales/platforms.d.ts +5 -0
  39. package/dist/locales/platforms.js +5 -0
  40. package/dist/locales/ru.d.ts +5 -0
  41. package/dist/locales/sv.d.ts +5 -0
  42. package/dist/locales/uk.d.ts +5 -0
  43. package/dist/locales/vi.d.ts +5 -0
  44. package/dist/locales/zh.d.ts +5 -0
  45. package/dist/playlist.d.ts +2 -0
  46. package/dist/playlist.js +5 -3
  47. package/dist/server.d.ts +2 -1
  48. package/dist/server.js +47 -0
  49. package/package.json +3 -2
  50. package/src/channels.ts +7 -3
  51. package/src/live-api.ts +3 -0
  52. package/src/locales/platforms.ts +5 -0
  53. package/src/playlist.ts +6 -3
  54. package/src/server.ts +45 -0
  55. package/web/dist/assets/{ar-x6HrgYUm.js → ar-DUccFmQD.js} +1 -1
  56. package/web/dist/assets/{cs-CXZVcVnN.js → cs-BQEfu2Fc.js} +1 -1
  57. package/{backtoschool/dist/assets/da-CtdhUqOq.js → web/dist/assets/da-CGGLbyFk.js} +1 -1
  58. package/{backtoschool/dist/assets/de-DpIL8Ees.js → web/dist/assets/de-DGAqLgme.js} +1 -1
  59. package/web/dist/assets/{es-CU_hEZIn.js → es-CxV2y0ap.js} +1 -1
  60. package/web/dist/assets/{fi-DpLRNly_.js → fi-CYVOybkb.js} +1 -1
  61. package/web/dist/assets/{fr-CMTL_KOU.js → fr-Cw1jxRs3.js} +1 -1
  62. package/{backtoschool/dist/assets/hi-Bbvbrvch.js → web/dist/assets/hi-YfhgSAtT.js} +1 -1
  63. package/web/dist/assets/{hls-3VKVEQE3-Dlp5CG0J.js → hls-3VKVEQE3-p3XDqXrK.js} +1 -1
  64. package/web/dist/assets/{hu-CgtKY4ws.js → hu-D_Ick2R2.js} +1 -1
  65. package/web/dist/assets/{id-DyOnlGBJ.js → id-C1v276xP.js} +1 -1
  66. package/web/dist/assets/{index-BYQ3s2w2.css → index-CRvqNCjB.css} +1 -1
  67. package/web/dist/assets/index-eX-ZuPCD.js +3 -0
  68. package/web/dist/assets/{it-BMnlmtUl.js → it-CUhD_B0B.js} +1 -1
  69. package/web/dist/assets/{mpegts-B2qiRgm5.js → mpegts-Dvjt-GBC.js} +1 -1
  70. package/web/dist/assets/{mpegts-LO6RVLD6-BUK8jB_-.js → mpegts-LO6RVLD6-Bm2lroPK.js} +1 -1
  71. package/{backtoschool/dist/assets/nl-6C2ukGHx.js → web/dist/assets/nl-O73OuDxh.js} +1 -1
  72. package/{backtoschool/dist/assets/ru-DBAi8Upl.js → web/dist/assets/ru-DqcmvJGf.js} +1 -1
  73. package/web/dist/assets/{sv-DPT1ERzP.js → sv-COb1I4y-.js} +1 -1
  74. package/{backtoschool/dist/assets/uk-DKZMfSc9.js → web/dist/assets/uk-5wB1mzGf.js} +1 -1
  75. package/web/dist/assets/{vi-s2D7ZJTc.js → vi-BuK8LY7a.js} +1 -1
  76. package/{backtoschool/dist/assets/zh-yfl-mwgz.js → web/dist/assets/zh-BlmV0-AM.js} +1 -1
  77. package/web/dist/index.html +2 -2
  78. package/web/dist/sw.js +23 -23
  79. package/backtoschool/dist/assets/index-BTxRE5f2.js +0 -113
  80. package/web/dist/assets/index-CY9U4Kk_.js +0 -3
@@ -1 +1 @@
1
- import{t as e}from"./index-CY9U4Kk_.js";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule||!o.call(e,`default`)?n(i,`default`,{value:e,enumerable:!0}):i,e)),u=[[/^(hvc1|hev1)/i,`H.265`],[/^av01/i,`AV1`],[/^(vp09|vp9)/i,`VP9`],[/^(ec-3|ec3)/i,`Dolby Digital Plus audio`],[/^(ac-3|ac3)/i,`Dolby Digital audio`],[/^dts/i,`DTS audio`],[/^(mp4a\.69|mp4a\.6b)/i,`MP2 audio`],[/^mp3$/i,`MP3 audio`],[/^mp4a\.40\./i,`AAC audio`]];function d(e){if(!e)return null;for(let[t,n]of u)if(t.test(e))return n;return e}function f(e,t){if(!t||!e)return[];if(e===`audio`){if(/^mp4a\.40\./i.test(t))return[`audio/mp4; codecs="mp4a.40.2"`];if(/^mp3$/i.test(t))return[`audio/mpeg`,`audio/mp4; codecs="mp3"`];if(/^opus$/i.test(t))return[`audio/mp4; codecs="opus"`,`audio/mp4; codecs="Opus"`]}return[`${e}/mp4; codecs="${t}"`]}function p(e,t,n=``,r=`stream`){if(!e||typeof t!=`function`)return null;let i=[[`video`,e.videoCodec],[`audio`,e.audioCodec]],a=[];for(let[e,n]of i)if(n&&!f(e,n).some(e=>{try{return t(e)}catch{return!1}})){let e=d(n);e&&a.push(e)}if(a.length===0)return null;let o=a.length===1?a[0]:`${String(a[0])} and ${String(a[1])}`;return`This ${r} is ${String(o)}, which this browser cannot decode.${n?` ${n}`:``}`}var m=2e3,h=5e3,g=3;function _(e,t={}){return{enableWorker:t.enableWorker??!1,enableStashBuffer:!0,stashInitialSize:393216,liveBufferLatencyChasing:!1,liveBufferLatencyMaxLatency:5,liveBufferLatencyMinRemain:1,autoCleanupSourceBuffer:!0,autoCleanupMaxBackwardDuration:30,autoCleanupMinBackwardDuration:10,lazyLoad:!1,lazyLoadMaxDuration:60,lazyLoadRecoverDuration:30,seekType:`range`}}async function v(t,n={}){let{media:r,src:i,isTv:a}=t,o=await e(()=>import(`./mpegts-B2qiRgm5.js`).then(e=>l(e.default,1)),[]),s=o.default??o;if(!s.getFeatureList().mseLivePlayback)return t.onError(`This browser cannot play transport streams.`),{destroy:()=>void 0,levels:()=>[]};let c=_(a,n),u=null,d=!1,f=0,v=null,y=null,b=-1,x=0,S=()=>{v&&clearTimeout(v),y&&clearInterval(y),v=null,y=null},C=()=>{if(!u)return;let e=u;u=null;try{e.destroy()}catch{}},w=e=>{d||(d=!0,S(),C(),t.onError(e))},T=e=>{if(!d){if(f>=5){w(e);return}f+=1,S(),C(),t.onNotice(`Reconnecting\u2026 (${String(f)}/5)`),v=setTimeout(()=>{v=null,d||D()},m*2**(f-1))}},E=()=>{y&&clearInterval(y),b=r.currentTime,x=0,y=setInterval(()=>{if(!d&&u){if(r.paused||r.ended||r.seeking){x=0,b=r.currentTime;return}if(r.currentTime===b){x+=1,x>=g&&(x=0,T(`The stream stopped sending.`));return}b=r.currentTime,x=0}},h)};function D(){u=s.createPlayer({type:`mpegts`,isLive:t.live,url:i,withCredentials:n.withCredentials??!1},c),u.on(s.Events.MEDIA_INFO??`media_info`,(...e)=>{let t=e[0],r=p(t,e=>globalThis.MediaSource?.isTypeSupported?.(e)??!1,n.unplayableAdvice??``);r&&w(r)}),u.on(s.Events.ERROR??`error`,(...e)=>{let t=String(e[1]??``);T(`This stream could not be played (${t}).`)}),u.attachMediaElement(r),u.load(),E(),t.onReady?.({live:t.live,levels:[]})}let O=()=>{f=0,t.onNotice(null)};return r.addEventListener(`playing`,O),D(),{destroy(){d=!0,S(),r.removeEventListener(`playing`,O),C()},levels:()=>[]}}export{v as createMpegtsEngine,s as t};
1
+ import{t as e}from"./index-eX-ZuPCD.js";var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=(e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule||!o.call(e,`default`)?n(i,`default`,{value:e,enumerable:!0}):i,e)),u=[[/^(hvc1|hev1)/i,`H.265`],[/^av01/i,`AV1`],[/^(vp09|vp9)/i,`VP9`],[/^(ec-3|ec3)/i,`Dolby Digital Plus audio`],[/^(ac-3|ac3)/i,`Dolby Digital audio`],[/^dts/i,`DTS audio`],[/^(mp4a\.69|mp4a\.6b)/i,`MP2 audio`],[/^mp3$/i,`MP3 audio`],[/^mp4a\.40\./i,`AAC audio`]];function d(e){if(!e)return null;for(let[t,n]of u)if(t.test(e))return n;return e}function f(e,t){if(!t||!e)return[];if(e===`audio`){if(/^mp4a\.40\./i.test(t))return[`audio/mp4; codecs="mp4a.40.2"`];if(/^mp3$/i.test(t))return[`audio/mpeg`,`audio/mp4; codecs="mp3"`];if(/^opus$/i.test(t))return[`audio/mp4; codecs="opus"`,`audio/mp4; codecs="Opus"`]}return[`${e}/mp4; codecs="${t}"`]}function p(e,t,n=``,r=`stream`){if(!e||typeof t!=`function`)return null;let i=[[`video`,e.videoCodec],[`audio`,e.audioCodec]],a=[];for(let[e,n]of i)if(n&&!f(e,n).some(e=>{try{return t(e)}catch{return!1}})){let e=d(n);e&&a.push(e)}if(a.length===0)return null;let o=a.length===1?a[0]:`${String(a[0])} and ${String(a[1])}`;return`This ${r} is ${String(o)}, which this browser cannot decode.${n?` ${n}`:``}`}var m=2e3,h=5e3,g=3;function _(e,t={}){return{enableWorker:t.enableWorker??!1,enableStashBuffer:!0,stashInitialSize:393216,liveBufferLatencyChasing:!1,liveBufferLatencyMaxLatency:5,liveBufferLatencyMinRemain:1,autoCleanupSourceBuffer:!0,autoCleanupMaxBackwardDuration:30,autoCleanupMinBackwardDuration:10,lazyLoad:!1,lazyLoadMaxDuration:60,lazyLoadRecoverDuration:30,seekType:`range`}}async function v(t,n={}){let{media:r,src:i,isTv:a}=t,o=await e(()=>import(`./mpegts-Dvjt-GBC.js`).then(e=>l(e.default,1)),[]),s=o.default??o;if(!s.getFeatureList().mseLivePlayback)return t.onError(`This browser cannot play transport streams.`),{destroy:()=>void 0,levels:()=>[]};let c=_(a,n),u=null,d=!1,f=0,v=null,y=null,b=-1,x=0,S=()=>{v&&clearTimeout(v),y&&clearInterval(y),v=null,y=null},C=()=>{if(!u)return;let e=u;u=null;try{e.destroy()}catch{}},w=e=>{d||(d=!0,S(),C(),t.onError(e))},T=e=>{if(!d){if(f>=5){w(e);return}f+=1,S(),C(),t.onNotice(`Reconnecting\u2026 (${String(f)}/5)`),v=setTimeout(()=>{v=null,d||D()},m*2**(f-1))}},E=()=>{y&&clearInterval(y),b=r.currentTime,x=0,y=setInterval(()=>{if(!d&&u){if(r.paused||r.ended||r.seeking){x=0,b=r.currentTime;return}if(r.currentTime===b){x+=1,x>=g&&(x=0,T(`The stream stopped sending.`));return}b=r.currentTime,x=0}},h)};function D(){u=s.createPlayer({type:`mpegts`,isLive:t.live,url:i,withCredentials:n.withCredentials??!1},c),u.on(s.Events.MEDIA_INFO??`media_info`,(...e)=>{let t=e[0],r=p(t,e=>globalThis.MediaSource?.isTypeSupported?.(e)??!1,n.unplayableAdvice??``);r&&w(r)}),u.on(s.Events.ERROR??`error`,(...e)=>{let t=String(e[1]??``);T(`This stream could not be played (${t}).`)}),u.attachMediaElement(r),u.load(),E(),t.onReady?.({live:t.live,levels:[]})}let O=()=>{f=0,t.onNotice(null)};return r.addEventListener(`playing`,O),D(),{destroy(){d=!0,S(),r.removeEventListener(`playing`,O),C()},levels:()=>[]}}export{v as createMpegtsEngine,s as t};
@@ -1 +1 @@
1
- import{t as e}from"./index-BTxRE5f2.js";var t={...e,"No parties live right now.":`Er zijn nu geen feestjes live.`,"Could not refresh parties.":`Feestjes konden niet worden bijgewerkt.`,"Pick a server in the directory, or paste its link here.":`Kies een server in de lijst of plak hier de link.`,"Interface language":`Interfacetaal`,Language:`Taal`,"Translation language":`Vertaaltaal`,"Original (auto-detect)":`Origineel (automatisch herkennen)`,Play:`Afspelen`,Pause:`Pauzeren`,Stop:`Stoppen`,Next:`Volgende`,Previous:`Vorige`,Select:`Selecteren`,"Next/Prev":`Volgende/Vorige`,Quit:`Afsluiten`,"Now Playing":`Speelt nu`,"Spectrum Analyser":`Spectrumanalyser`,Playlist:`Afspeellijst`,Files:`Bestanden`,"Open files":`Bestanden openen`,"Open folder":`Map openen`,"Add to library":`Toevoegen aan bibliotheek`,"Replace playlist":`Afspeellijst vervangen`,Filter:`Filteren`,Search:`Zoeken`,"Nothing loaded.":`Niets geladen.`,"Empty.":`Leeg.`,"Loading…":`Laden…`,"Connecting…":`Verbinden…`,Connected:`Verbonden`,"Not connected":`Niet verbonden`,"No source":`Geen bron`,Playing:`Speelt`,Stopped:`Gestopt`,Volume:`Volume`,Seek:`Afspeelpositie`,"Full screen":`Volledig scherm`,Download:`Downloaden`,Share:`Delen`,Copy:`Kopiëren`,"Copy link":`Link kopiëren`,Copied:`Gekopieerd`,Save:`Opslaan`,Cancel:`Annuleren`,Close:`Sluiten`,Remove:`Verwijderen`,Delete:`Wissen`,Edit:`Bewerken`,Add:`Toevoegen`,Send:`Verzenden`,Retry:`Opnieuw proberen`,Back:`Terug`,"Next page":`Volgende pagina`,"Previous page":`Vorige pagina`,"Show more":`Meer tonen`,Panels:`Panelen`,"Reset layout":`Indeling herstellen`,Show:`Tonen`,Hide:`Verbergen`,Collapse:`Inklappen`,Expand:`Uitklappen`,"Move up":`Omhoog`,"Move down":`Omlaag`,Install:`Installeren`,"TV mode":`TV-modus`,On:`Aan`,Off:`Uit`,Account:`Account`,"Sign in":`Inloggen`,"Sign out":`Uitloggen`,"Create account":`Account maken`,Email:`E-mail`,Password:`Wachtwoord`,"Forgot password?":`Wachtwoord vergeten?`,"Welcome back":`Welkom terug`,Profile:`Profiel`,Handle:`Gebruikersnaam`,"Your servers":`Je servers`,Server:`Server`,Connect:`Verbinden`,Disconnect:`Verbinding verbreken`,Directory:`Overzicht`,Favourites:`Favorieten`,Follow:`Volgen`,Unfollow:`Ontvolgen`,Notifications:`Meldingen`,"Phone number":`Telefoonnummer`,"Save number":`Nummer opslaan`,Transcript:`Transcript`,Captions:`Ondertiteling`,"Translate audio":`Audio vertalen`,"Audio language":`Audiotaal`,"Audio options":`Audio-opties`,"Keep background sound":`Achtergrondgeluid behouden`,"Background level":`Achtergrondvolume`,"Speaker voices":`Stemmen van sprekers`,"Any voice":`Elke stem`,"Male voice":`Mannelijke stem`,"Female voice":`Vrouwelijke stem`,"Original audio.":`Originele audio.`,"Buy translated audio":`Vertaalde audio kopen`,"Audio credit":`Audiotegoed`,"Buy pass":`Pas kopen`,Pass:`Pas`,"Pay with":`Betalen met`,"Check payment":`Betaling controleren`,"Open checkout":`Naar betalen`,"Free sessions":`Gratis sessies`,"Usage rates and expiry":`Tarieven en geldigheid`,Catalogs:`Catalogi`,"Add catalog":`Catalogus toevoegen`,"Catalog name":`Catalogusnaam`,Link:`Link`,"Play link":`Link afspelen`,"Go live":`Live gaan`,Publish:`Publiceren`,Listen:`Luisteren`,"Live now":`Nu live`,Upcoming:`Binnenkort`,Parties:`Kijkfeesten`,"Join party":`Meedoen met kijkfeest`,"Invite code":`Uitnodigingscode`,Invite:`Uitnodigen`,Chat:`Chat`,"Chat message":`Chatbericht`,People:`Personen`,Speaker:`Spreker`,Speakers:`Sprekers`,Listener:`Luisteraar`,Moderator:`Moderator`,"Raise hand":`Hand opsteken`,"Hand raises":`Opgestoken handen`,Questions:`Vragen`,Resources:`Materialen`,Replay:`Terugkijken`,Schedule:`Schema`,Event:`Evenement`,Host:`Gastheer`,About:`Over`,Stage:`Podium`,Title:`Titel`,Description:`Beschrijving`,Topic:`Onderwerp`,Public:`Openbaar`,"Anyone with the link":`Iedereen met de link`,"Invited people":`Uitgenodigde personen`,"Who can join":`Wie kan meedoen`,"Date and time":`Datum en tijd`,"Expected length":`Verwachte duur`,Repeat:`Herhalen`,"Does not repeat":`Niet herhalen`,"Every day":`Elke dag`,"Every week":`Elke week`,Homepage:`Website`,"Host name":`Naam van de gastheer`,"Profile photo URL":`URL van profielfoto`,"Broadcast link":`Uitzendlink`,"Edit event":`Evenement bewerken`,"Save changes":`Wijzigingen opslaan`,"Create live":`Live-uitzending maken`,"Schedule class":`Les plannen`,"Start class":`Les starten`,"End event":`Evenement beëindigen`,"End session":`Sessie beëindigen`,"Session ended":`Sessie beëindigd`,"Event ended":`Evenement beëindigd`,Cancelled:`Geannuleerd`,"Replay available":`Opname beschikbaar`,Join:`Meedoen`,"Create invite":`Uitnodiging maken`,"Invite as":`Uitnodigen als`,"Watch now":`Nu kijken`,"Start a room":`Kamer starten`,"Recent replays":`Recente opnamen`,"Your account":`Je account`,"Write with AI":`Schrijven met AI`,"Suggested title":`Voorgestelde titel`,"Suggested description":`Voorgestelde beschrijving`,"Suggested topic":`Voorgesteld onderwerp`,"Use these details":`Deze gegevens gebruiken`,"Learn something live.":`Leer iets live.`,"Screen share":`Scherm delen`,"Upload and broadcast":`Uploaden en uitzenden`,Help:`Help`,"Reload Player":`Speler herladen`,"Copy Bundled CLI Path":`Pad van meegeleverde CLI kopiëren`,"Developer tools":`Ontwikkelaarstools`,Undo:`Ongedaan maken`,Redo:`Opnieuw uitvoeren`,Cut:`Knippen`,Paste:`Plakken`,"Select all":`Alles selecteren`,Status:`Status`,"Activity log":`Activiteitenlogboek`,Admin:`Beheer`,"Playback controls":`Afspeelbediening`,"Tracks and folders":`Nummers en mappen`,"Original-language captions.":`Ondertiteling in de oorspronkelijke taal.`,"Skip to playback controls":`Naar afspeelbediening`,"Skip to playlist":`Naar afspeellijst`,"Skip to transcript and translated audio":`Naar transcript en vertaalde audio`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`Er zijn nu geen feestjes live.`,"Could not refresh parties.":`Feestjes konden niet worden bijgewerkt.`,"Pick a server in the directory, or paste its link here.":`Kies een server in de lijst of plak hier de link.`,"Interface language":`Interfacetaal`,Language:`Taal`,"Translation language":`Vertaaltaal`,"Original (auto-detect)":`Origineel (automatisch herkennen)`,Play:`Afspelen`,Pause:`Pauzeren`,Stop:`Stoppen`,Next:`Volgende`,Previous:`Vorige`,Select:`Selecteren`,"Next/Prev":`Volgende/Vorige`,Quit:`Afsluiten`,"Now Playing":`Speelt nu`,"Spectrum Analyser":`Spectrumanalyser`,Playlist:`Afspeellijst`,Files:`Bestanden`,"Open files":`Bestanden openen`,"Open folder":`Map openen`,"Add to library":`Toevoegen aan bibliotheek`,"Replace playlist":`Afspeellijst vervangen`,Filter:`Filteren`,Search:`Zoeken`,"Nothing loaded.":`Niets geladen.`,"Empty.":`Leeg.`,"Loading…":`Laden…`,"Connecting…":`Verbinden…`,Connected:`Verbonden`,"Not connected":`Niet verbonden`,"No source":`Geen bron`,Playing:`Speelt`,Stopped:`Gestopt`,Volume:`Volume`,Seek:`Afspeelpositie`,"Full screen":`Volledig scherm`,Download:`Downloaden`,Share:`Delen`,Copy:`Kopiëren`,"Copy link":`Link kopiëren`,Copied:`Gekopieerd`,Save:`Opslaan`,Cancel:`Annuleren`,Close:`Sluiten`,Remove:`Verwijderen`,Delete:`Wissen`,Edit:`Bewerken`,Add:`Toevoegen`,Send:`Verzenden`,Retry:`Opnieuw proberen`,Back:`Terug`,"Next page":`Volgende pagina`,"Previous page":`Vorige pagina`,"Show more":`Meer tonen`,Panels:`Panelen`,"Reset layout":`Indeling herstellen`,Show:`Tonen`,Hide:`Verbergen`,Collapse:`Inklappen`,Expand:`Uitklappen`,"Move up":`Omhoog`,"Move down":`Omlaag`,Install:`Installeren`,"TV mode":`TV-modus`,On:`Aan`,Off:`Uit`,Account:`Account`,"Sign in":`Inloggen`,"Sign out":`Uitloggen`,"Create account":`Account maken`,Email:`E-mail`,Password:`Wachtwoord`,"Forgot password?":`Wachtwoord vergeten?`,"Welcome back":`Welkom terug`,Profile:`Profiel`,Handle:`Gebruikersnaam`,"Your servers":`Je servers`,Server:`Server`,Connect:`Verbinden`,Disconnect:`Verbinding verbreken`,Directory:`Overzicht`,Favourites:`Favorieten`,Follow:`Volgen`,Unfollow:`Ontvolgen`,Notifications:`Meldingen`,"Phone number":`Telefoonnummer`,"Save number":`Nummer opslaan`,Transcript:`Transcript`,Captions:`Ondertiteling`,"Translate audio":`Audio vertalen`,"Audio language":`Audiotaal`,"Audio options":`Audio-opties`,"Keep background sound":`Achtergrondgeluid behouden`,"Background level":`Achtergrondvolume`,"Speaker voices":`Stemmen van sprekers`,"Any voice":`Elke stem`,"Male voice":`Mannelijke stem`,"Female voice":`Vrouwelijke stem`,"Original audio.":`Originele audio.`,"Buy translated audio":`Vertaalde audio kopen`,"Audio credit":`Audiotegoed`,"Buy pass":`Pas kopen`,Pass:`Pas`,"Pay with":`Betalen met`,"Check payment":`Betaling controleren`,"Open checkout":`Naar betalen`,"Free sessions":`Gratis sessies`,"Usage rates and expiry":`Tarieven en geldigheid`,Catalogs:`Catalogi`,"Add catalog":`Catalogus toevoegen`,"Catalog name":`Catalogusnaam`,Link:`Link`,"Play link":`Link afspelen`,"Go live":`Live gaan`,Publish:`Publiceren`,Listen:`Luisteren`,"Live now":`Nu live`,Upcoming:`Binnenkort`,Parties:`Kijkfeesten`,"Join party":`Meedoen met kijkfeest`,"Invite code":`Uitnodigingscode`,Invite:`Uitnodigen`,Chat:`Chat`,"Chat message":`Chatbericht`,People:`Personen`,Speaker:`Spreker`,Speakers:`Sprekers`,Listener:`Luisteraar`,Moderator:`Moderator`,"Raise hand":`Hand opsteken`,"Hand raises":`Opgestoken handen`,Questions:`Vragen`,Resources:`Materialen`,Replay:`Terugkijken`,Schedule:`Schema`,Event:`Evenement`,Host:`Gastheer`,About:`Over`,Stage:`Podium`,Title:`Titel`,Description:`Beschrijving`,Topic:`Onderwerp`,Public:`Openbaar`,"Anyone with the link":`Iedereen met de link`,"Invited people":`Uitgenodigde personen`,"Who can join":`Wie kan meedoen`,"Date and time":`Datum en tijd`,"Expected length":`Verwachte duur`,Repeat:`Herhalen`,"Does not repeat":`Niet herhalen`,"Every day":`Elke dag`,"Every week":`Elke week`,Homepage:`Website`,"Host name":`Naam van de gastheer`,"Profile photo URL":`URL van profielfoto`,"Broadcast link":`Uitzendlink`,"Edit event":`Evenement bewerken`,"Save changes":`Wijzigingen opslaan`,"Create live":`Live-uitzending maken`,"Schedule class":`Les plannen`,"Start class":`Les starten`,"End event":`Evenement beëindigen`,"End session":`Sessie beëindigen`,"Session ended":`Sessie beëindigd`,"Event ended":`Evenement beëindigd`,Cancelled:`Geannuleerd`,"Replay available":`Opname beschikbaar`,Join:`Meedoen`,"Create invite":`Uitnodiging maken`,"Invite as":`Uitnodigen als`,"Watch now":`Nu kijken`,"Start a room":`Kamer starten`,"Recent replays":`Recente opnamen`,"Your account":`Je account`,"Write with AI":`Schrijven met AI`,"Suggested title":`Voorgestelde titel`,"Suggested description":`Voorgestelde beschrijving`,"Suggested topic":`Voorgesteld onderwerp`,"Use these details":`Deze gegevens gebruiken`,"Learn something live.":`Leer iets live.`,"Screen share":`Scherm delen`,"Upload and broadcast":`Uploaden en uitzenden`,Help:`Help`,"Reload Player":`Speler herladen`,"Copy Bundled CLI Path":`Pad van meegeleverde CLI kopiëren`,"Developer tools":`Ontwikkelaarstools`,Undo:`Ongedaan maken`,Redo:`Opnieuw uitvoeren`,Cut:`Knippen`,Paste:`Plakken`,"Select all":`Alles selecteren`,Status:`Status`,"Activity log":`Activiteitenlogboek`,Admin:`Beheer`,"Playback controls":`Afspeelbediening`,"Tracks and folders":`Nummers en mappen`,"Original-language captions.":`Ondertiteling in de oorspronkelijke taal.`,"Skip to playback controls":`Naar afspeelbediening`,"Skip to playlist":`Naar afspeellijst`,"Skip to transcript and translated audio":`Naar transcript en vertaalde audio`};export{t as default};
@@ -1 +1 @@
1
- import{t as e}from"./index-BTxRE5f2.js";var t={...e,"No parties live right now.":`Сейчас нет вечеринок в эфире.`,"Could not refresh parties.":`Не удалось обновить список вечеринок.`,"Pick a server in the directory, or paste its link here.":`Выберите сервер в каталоге или вставьте его ссылку сюда.`,"Interface language":`Язык интерфейса`,Language:`Язык`,"Translation language":`Язык перевода`,"Original (auto-detect)":`Оригинал (автоопределение)`,Play:`Воспроизвести`,Pause:`Пауза`,Stop:`Остановить`,Next:`Далее`,Previous:`Назад`,Select:`Выбрать`,"Next/Prev":`Далее/Назад`,Quit:`Выйти`,"Now Playing":`Сейчас играет`,"Spectrum Analyser":`Анализатор спектра`,Playlist:`Плейлист`,Files:`Файлы`,"Open files":`Открыть файлы`,"Open folder":`Открыть папку`,"Add to library":`Добавить в библиотеку`,"Replace playlist":`Заменить плейлист`,Filter:`Фильтр`,Search:`Поиск`,"Nothing loaded.":`Ничего не загружено.`,"Empty.":`Пусто.`,"Loading…":`Загрузка…`,"Connecting…":`Подключение…`,Connected:`Подключено`,"Not connected":`Нет подключения`,"No source":`Нет источника`,Playing:`Воспроизведение`,Stopped:`Остановлено`,Volume:`Громкость`,Seek:`Позиция воспроизведения`,"Full screen":`Полный экран`,Download:`Скачать`,Share:`Поделиться`,Copy:`Копировать`,"Copy link":`Копировать ссылку`,Copied:`Скопировано`,Save:`Сохранить`,Cancel:`Отмена`,Close:`Закрыть`,Remove:`Убрать`,Delete:`Удалить`,Edit:`Изменить`,Add:`Добавить`,Send:`Отправить`,Retry:`Повторить`,Back:`Назад`,"Next page":`Следующая страница`,"Previous page":`Предыдущая страница`,"Show more":`Показать ещё`,Panels:`Панели`,"Reset layout":`Сбросить расположение`,Show:`Показать`,Hide:`Скрыть`,Collapse:`Свернуть`,Expand:`Развернуть`,"Move up":`Вверх`,"Move down":`Вниз`,Install:`Установить`,"TV mode":`Режим ТВ`,On:`Вкл.`,Off:`Выкл.`,Account:`Аккаунт`,"Sign in":`Войти`,"Sign out":`Выйти из аккаунта`,"Create account":`Создать аккаунт`,Email:`Эл. почта`,Password:`Пароль`,"Forgot password?":`Забыли пароль?`,"Welcome back":`С возвращением`,Profile:`Профиль`,Handle:`Имя пользователя`,"Your servers":`Ваши серверы`,Server:`Сервер`,Connect:`Подключиться`,Disconnect:`Отключиться`,Directory:`Каталог`,Favourites:`Избранное`,Follow:`Подписаться`,Unfollow:`Отписаться`,Notifications:`Уведомления`,"Phone number":`Номер телефона`,"Save number":`Сохранить номер`,Transcript:`Расшифровка`,Captions:`Субтитры`,"Translate audio":`Переводить аудио`,"Audio language":`Язык аудио`,"Audio options":`Настройки аудио`,"Keep background sound":`Сохранить фоновые звуки`,"Background level":`Громкость фона`,"Speaker voices":`Голоса участников`,"Any voice":`Любой голос`,"Male voice":`Мужской голос`,"Female voice":`Женский голос`,"Original audio.":`Оригинальное аудио.`,"Buy translated audio":`Купить перевод аудио`,"Audio credit":`Баланс аудио`,"Buy pass":`Купить пропуск`,Pass:`Пропуск`,"Pay with":`Оплатить через`,"Check payment":`Проверить оплату`,"Open checkout":`Перейти к оплате`,"Free sessions":`Бесплатные сеансы`,"Usage rates and expiry":`Тарифы и срок действия`,Catalogs:`Каталоги`,"Add catalog":`Добавить каталог`,"Catalog name":`Название каталога`,Link:`Ссылка`,"Play link":`Воспроизвести ссылку`,"Go live":`Начать эфир`,Publish:`Опубликовать`,Listen:`Слушать`,"Live now":`Сейчас в эфире`,Upcoming:`Скоро`,Parties:`Совместные просмотры`,"Join party":`Присоединиться к просмотру`,"Invite code":`Код приглашения`,Invite:`Пригласить`,Chat:`Чат`,"Chat message":`Сообщение в чате`,People:`Участники`,Speaker:`Выступающий`,Speakers:`Выступающие`,Listener:`Слушатель`,Moderator:`Модератор`,"Raise hand":`Поднять руку`,"Hand raises":`Поднятые руки`,Questions:`Вопросы`,Resources:`Материалы`,Replay:`Запись`,Schedule:`Расписание`,Event:`Событие`,Host:`Ведущий`,About:`О событии`,Stage:`Сцена`,Title:`Название`,Description:`Описание`,Topic:`Тема`,Public:`Публичное`,"Anyone with the link":`Все, у кого есть ссылка`,"Invited people":`Приглашённые`,"Who can join":`Кто может присоединиться`,"Date and time":`Дата и время`,"Expected length":`Ожидаемая длительность`,Repeat:`Повторение`,"Does not repeat":`Не повторяется`,"Every day":`Каждый день`,"Every week":`Каждую неделю`,Homepage:`Веб-сайт`,"Host name":`Имя ведущего`,"Profile photo URL":`URL фото профиля`,"Broadcast link":`Ссылка на трансляцию`,"Edit event":`Изменить событие`,"Save changes":`Сохранить изменения`,"Create live":`Создать эфир`,"Schedule class":`Запланировать занятие`,"Start class":`Начать занятие`,"End event":`Завершить событие`,"End session":`Завершить сеанс`,"Session ended":`Сеанс завершён`,"Event ended":`Событие завершено`,Cancelled:`Отменено`,"Replay available":`Запись доступна`,Join:`Присоединиться`,"Create invite":`Создать приглашение`,"Invite as":`Пригласить как`,"Watch now":`Смотреть сейчас`,"Start a room":`Создать комнату`,"Recent replays":`Недавние записи`,"Your account":`Ваш аккаунт`,"Write with AI":`Написать с ИИ`,"Suggested title":`Предложенное название`,"Suggested description":`Предложенное описание`,"Suggested topic":`Предложенная тема`,"Use these details":`Использовать эти данные`,"Learn something live.":`Учитесь в прямом эфире.`,"Screen share":`Поделиться экраном`,"Upload and broadcast":`Загрузить и транслировать`,Help:`Помощь`,"Reload Player":`Перезагрузить плеер`,"Copy Bundled CLI Path":`Копировать путь к встроенному CLI`,"Developer tools":`Инструменты разработчика`,Undo:`Отменить`,Redo:`Повторить действие`,Cut:`Вырезать`,Paste:`Вставить`,"Select all":`Выбрать всё`,Status:`Статус`,"Activity log":`Журнал активности`,Admin:`Администрирование`,"Playback controls":`Управление воспроизведением`,"Tracks and folders":`Треки и папки`,"Original-language captions.":`Субтитры на языке оригинала.`,"Skip to playback controls":`К управлению воспроизведением`,"Skip to playlist":`К плейлисту`,"Skip to transcript and translated audio":`К расшифровке и переводу аудио`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`Сейчас нет вечеринок в эфире.`,"Could not refresh parties.":`Не удалось обновить список вечеринок.`,"Pick a server in the directory, or paste its link here.":`Выберите сервер в каталоге или вставьте его ссылку сюда.`,"Interface language":`Язык интерфейса`,Language:`Язык`,"Translation language":`Язык перевода`,"Original (auto-detect)":`Оригинал (автоопределение)`,Play:`Воспроизвести`,Pause:`Пауза`,Stop:`Остановить`,Next:`Далее`,Previous:`Назад`,Select:`Выбрать`,"Next/Prev":`Далее/Назад`,Quit:`Выйти`,"Now Playing":`Сейчас играет`,"Spectrum Analyser":`Анализатор спектра`,Playlist:`Плейлист`,Files:`Файлы`,"Open files":`Открыть файлы`,"Open folder":`Открыть папку`,"Add to library":`Добавить в библиотеку`,"Replace playlist":`Заменить плейлист`,Filter:`Фильтр`,Search:`Поиск`,"Nothing loaded.":`Ничего не загружено.`,"Empty.":`Пусто.`,"Loading…":`Загрузка…`,"Connecting…":`Подключение…`,Connected:`Подключено`,"Not connected":`Нет подключения`,"No source":`Нет источника`,Playing:`Воспроизведение`,Stopped:`Остановлено`,Volume:`Громкость`,Seek:`Позиция воспроизведения`,"Full screen":`Полный экран`,Download:`Скачать`,Share:`Поделиться`,Copy:`Копировать`,"Copy link":`Копировать ссылку`,Copied:`Скопировано`,Save:`Сохранить`,Cancel:`Отмена`,Close:`Закрыть`,Remove:`Убрать`,Delete:`Удалить`,Edit:`Изменить`,Add:`Добавить`,Send:`Отправить`,Retry:`Повторить`,Back:`Назад`,"Next page":`Следующая страница`,"Previous page":`Предыдущая страница`,"Show more":`Показать ещё`,Panels:`Панели`,"Reset layout":`Сбросить расположение`,Show:`Показать`,Hide:`Скрыть`,Collapse:`Свернуть`,Expand:`Развернуть`,"Move up":`Вверх`,"Move down":`Вниз`,Install:`Установить`,"TV mode":`Режим ТВ`,On:`Вкл.`,Off:`Выкл.`,Account:`Аккаунт`,"Sign in":`Войти`,"Sign out":`Выйти из аккаунта`,"Create account":`Создать аккаунт`,Email:`Эл. почта`,Password:`Пароль`,"Forgot password?":`Забыли пароль?`,"Welcome back":`С возвращением`,Profile:`Профиль`,Handle:`Имя пользователя`,"Your servers":`Ваши серверы`,Server:`Сервер`,Connect:`Подключиться`,Disconnect:`Отключиться`,Directory:`Каталог`,Favourites:`Избранное`,Follow:`Подписаться`,Unfollow:`Отписаться`,Notifications:`Уведомления`,"Phone number":`Номер телефона`,"Save number":`Сохранить номер`,Transcript:`Расшифровка`,Captions:`Субтитры`,"Translate audio":`Переводить аудио`,"Audio language":`Язык аудио`,"Audio options":`Настройки аудио`,"Keep background sound":`Сохранить фоновые звуки`,"Background level":`Громкость фона`,"Speaker voices":`Голоса участников`,"Any voice":`Любой голос`,"Male voice":`Мужской голос`,"Female voice":`Женский голос`,"Original audio.":`Оригинальное аудио.`,"Buy translated audio":`Купить перевод аудио`,"Audio credit":`Баланс аудио`,"Buy pass":`Купить пропуск`,Pass:`Пропуск`,"Pay with":`Оплатить через`,"Check payment":`Проверить оплату`,"Open checkout":`Перейти к оплате`,"Free sessions":`Бесплатные сеансы`,"Usage rates and expiry":`Тарифы и срок действия`,Catalogs:`Каталоги`,"Add catalog":`Добавить каталог`,"Catalog name":`Название каталога`,Link:`Ссылка`,"Play link":`Воспроизвести ссылку`,"Go live":`Начать эфир`,Publish:`Опубликовать`,Listen:`Слушать`,"Live now":`Сейчас в эфире`,Upcoming:`Скоро`,Parties:`Совместные просмотры`,"Join party":`Присоединиться к просмотру`,"Invite code":`Код приглашения`,Invite:`Пригласить`,Chat:`Чат`,"Chat message":`Сообщение в чате`,People:`Участники`,Speaker:`Выступающий`,Speakers:`Выступающие`,Listener:`Слушатель`,Moderator:`Модератор`,"Raise hand":`Поднять руку`,"Hand raises":`Поднятые руки`,Questions:`Вопросы`,Resources:`Материалы`,Replay:`Запись`,Schedule:`Расписание`,Event:`Событие`,Host:`Ведущий`,About:`О событии`,Stage:`Сцена`,Title:`Название`,Description:`Описание`,Topic:`Тема`,Public:`Публичное`,"Anyone with the link":`Все, у кого есть ссылка`,"Invited people":`Приглашённые`,"Who can join":`Кто может присоединиться`,"Date and time":`Дата и время`,"Expected length":`Ожидаемая длительность`,Repeat:`Повторение`,"Does not repeat":`Не повторяется`,"Every day":`Каждый день`,"Every week":`Каждую неделю`,Homepage:`Веб-сайт`,"Host name":`Имя ведущего`,"Profile photo URL":`URL фото профиля`,"Broadcast link":`Ссылка на трансляцию`,"Edit event":`Изменить событие`,"Save changes":`Сохранить изменения`,"Create live":`Создать эфир`,"Schedule class":`Запланировать занятие`,"Start class":`Начать занятие`,"End event":`Завершить событие`,"End session":`Завершить сеанс`,"Session ended":`Сеанс завершён`,"Event ended":`Событие завершено`,Cancelled:`Отменено`,"Replay available":`Запись доступна`,Join:`Присоединиться`,"Create invite":`Создать приглашение`,"Invite as":`Пригласить как`,"Watch now":`Смотреть сейчас`,"Start a room":`Создать комнату`,"Recent replays":`Недавние записи`,"Your account":`Ваш аккаунт`,"Write with AI":`Написать с ИИ`,"Suggested title":`Предложенное название`,"Suggested description":`Предложенное описание`,"Suggested topic":`Предложенная тема`,"Use these details":`Использовать эти данные`,"Learn something live.":`Учитесь в прямом эфире.`,"Screen share":`Поделиться экраном`,"Upload and broadcast":`Загрузить и транслировать`,Help:`Помощь`,"Reload Player":`Перезагрузить плеер`,"Copy Bundled CLI Path":`Копировать путь к встроенному CLI`,"Developer tools":`Инструменты разработчика`,Undo:`Отменить`,Redo:`Повторить действие`,Cut:`Вырезать`,Paste:`Вставить`,"Select all":`Выбрать всё`,Status:`Статус`,"Activity log":`Журнал активности`,Admin:`Администрирование`,"Playback controls":`Управление воспроизведением`,"Tracks and folders":`Треки и папки`,"Original-language captions.":`Субтитры на языке оригинала.`,"Skip to playback controls":`К управлению воспроизведением`,"Skip to playlist":`К плейлисту`,"Skip to transcript and translated audio":`К расшифровке и переводу аудио`};export{t as default};
@@ -1 +1 @@
1
- import{n as e}from"./index-CY9U4Kk_.js";var t={...e,"No parties live right now.":`Inga partyn är live just nu.`,"Could not refresh parties.":`Kunde inte uppdatera partyn.`,"Pick a server in the directory, or paste its link here.":`Välj en server i katalogen eller klistra in dess länk här.`,"Interface language":`Gränssnittsspråk`,Language:`Språk`,"Translation language":`Översättningsspråk`,"Original (auto-detect)":`Original (identifiera automatiskt)`,Play:`Spela`,Pause:`Pausa`,Stop:`Stoppa`,Next:`Nästa`,Previous:`Föregående`,Select:`Välj`,"Next/Prev":`Nästa/Föregående`,Quit:`Avsluta`,"Now Playing":`Spelas nu`,"Spectrum Analyser":`Spektrumanalysator`,Playlist:`Spellista`,Files:`Filer`,"Open files":`Öppna filer`,"Open folder":`Öppna mapp`,"Add to library":`Lägg till i biblioteket`,"Replace playlist":`Ersätt spellistan`,Filter:`Filtrera`,Search:`Sök`,"Nothing loaded.":`Inget laddat.`,"Empty.":`Tomt.`,"Loading…":`Laddar…`,"Connecting…":`Ansluter…`,Connected:`Ansluten`,"Not connected":`Inte ansluten`,"No source":`Ingen källa`,Playing:`Spelar`,Stopped:`Stoppad`,Volume:`Volym`,Seek:`Uppspelningsposition`,"Full screen":`Helskärm`,Download:`Ladda ned`,Share:`Dela`,Copy:`Kopiera`,"Copy link":`Kopiera länk`,Copied:`Kopierat`,Save:`Spara`,Cancel:`Avbryt`,Close:`Stäng`,Remove:`Ta bort`,Delete:`Radera`,Edit:`Redigera`,Add:`Lägg till`,Send:`Skicka`,Retry:`Försök igen`,Back:`Tillbaka`,"Next page":`Nästa sida`,"Previous page":`Föregående sida`,"Show more":`Visa fler`,Panels:`Paneler`,"Reset layout":`Återställ layout`,Show:`Visa`,Hide:`Dölj`,Collapse:`Fäll ihop`,Expand:`Fäll ut`,"Move up":`Flytta upp`,"Move down":`Flytta ned`,Install:`Installera`,"TV mode":`TV-läge`,On:`På`,Off:`Av`,Account:`Konto`,"Sign in":`Logga in`,"Sign out":`Logga ut`,"Create account":`Skapa konto`,Email:`E-post`,Password:`Lösenord`,"Forgot password?":`Glömt lösenordet?`,"Welcome back":`Välkommen tillbaka`,Profile:`Profil`,Handle:`Användarnamn`,"Your servers":`Dina servrar`,Server:`Server`,Connect:`Anslut`,Disconnect:`Koppla från`,Directory:`Katalog`,Favourites:`Favoriter`,Follow:`Följ`,Unfollow:`Sluta följa`,Notifications:`Aviseringar`,"Phone number":`Telefonnummer`,"Save number":`Spara nummer`,Transcript:`Transkription`,Captions:`Undertexter`,"Translate audio":`Översätt ljud`,"Audio language":`Ljudspråk`,"Audio options":`Ljudalternativ`,"Keep background sound":`Behåll bakgrundsljud`,"Background level":`Bakgrundsvolym`,"Speaker voices":`Talarröster`,"Any voice":`Valfri röst`,"Male voice":`Manlig röst`,"Female voice":`Kvinnlig röst`,"Original audio.":`Originalljud.`,"Buy translated audio":`Köp översatt ljud`,"Audio credit":`Ljudsaldo`,"Buy pass":`Köp pass`,Pass:`Pass`,"Pay with":`Betala med`,"Check payment":`Kontrollera betalning`,"Open checkout":`Gå till betalning`,"Free sessions":`Gratis sessioner`,"Usage rates and expiry":`Priser och giltighet`,Catalogs:`Kataloger`,"Add catalog":`Lägg till katalog`,"Catalog name":`Katalognamn`,Link:`Länk`,"Play link":`Spela länk`,"Go live":`Sänd live`,Publish:`Publicera`,Listen:`Lyssna`,"Live now":`Live nu`,Upcoming:`Kommande`,Parties:`Tittarfester`,"Join party":`Gå med i festen`,"Invite code":`Inbjudningskod`,Invite:`Bjud in`,Chat:`Chatt`,"Chat message":`Chattmeddelande`,People:`Personer`,Speaker:`Talare`,Speakers:`Talare`,Listener:`Lyssnare`,Moderator:`Moderator`,"Raise hand":`Räck upp handen`,"Hand raises":`Uppräckta händer`,Questions:`Frågor`,Resources:`Resurser`,Replay:`Repris`,Schedule:`Schema`,Event:`Evenemang`,Host:`Värd`,About:`Om`,Stage:`Scen`,Title:`Titel`,Description:`Beskrivning`,Topic:`Ämne`,Public:`Offentlig`,"Anyone with the link":`Alla med länken`,"Invited people":`Inbjudna personer`,"Who can join":`Vem får delta`,"Date and time":`Datum och tid`,"Expected length":`Planerad längd`,Repeat:`Upprepa`,"Does not repeat":`Upprepas inte`,"Every day":`Varje dag`,"Every week":`Varje vecka`,Homepage:`Webbplats`,"Host name":`Värdens namn`,"Profile photo URL":`URL till profilbild`,"Broadcast link":`Sändningslänk`,"Edit event":`Redigera evenemang`,"Save changes":`Spara ändringar`,"Create live":`Skapa livesändning`,"Schedule class":`Schemalägg lektion`,"Start class":`Starta lektion`,"End event":`Avsluta evenemang`,"End session":`Avsluta session`,"Session ended":`Sessionen avslutad`,"Event ended":`Evenemanget avslutat`,Cancelled:`Inställt`,"Replay available":`Repris tillgänglig`,Join:`Gå med`,"Create invite":`Skapa inbjudan`,"Invite as":`Bjud in som`,"Watch now":`Titta nu`,"Start a room":`Skapa ett rum`,"Recent replays":`Senaste repriserna`,"Your account":`Ditt konto`,"Write with AI":`Skriv med AI`,"Suggested title":`Föreslagen titel`,"Suggested description":`Föreslagen beskrivning`,"Suggested topic":`Föreslaget ämne`,"Use these details":`Använd dessa uppgifter`,"Learn something live.":`Lär dig något live.`,"Screen share":`Dela skärm`,"Upload and broadcast":`Ladda upp och sänd`,Help:`Hjälp`,"Reload Player":`Ladda om spelaren`,"Copy Bundled CLI Path":`Kopiera sökvägen till medföljande CLI`,"Developer tools":`Utvecklarverktyg`,Undo:`Ångra`,Redo:`Gör om`,Cut:`Klipp ut`,Paste:`Klistra in`,"Select all":`Markera allt`,Status:`Status`,"Activity log":`Aktivitetslogg`,Admin:`Administration`,"Playback controls":`Uppspelningskontroller`,"Tracks and folders":`Spår och mappar`,"Original-language captions.":`Undertexter på originalspråket.`,"Skip to playback controls":`Hoppa till uppspelningskontroller`,"Skip to playlist":`Hoppa till spellistan`,"Skip to transcript and translated audio":`Hoppa till transkription och översatt ljud`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`Inga partyn är live just nu.`,"Could not refresh parties.":`Kunde inte uppdatera partyn.`,"Pick a server in the directory, or paste its link here.":`Välj en server i katalogen eller klistra in dess länk här.`,"Interface language":`Gränssnittsspråk`,Language:`Språk`,"Translation language":`Översättningsspråk`,"Original (auto-detect)":`Original (identifiera automatiskt)`,Play:`Spela`,Pause:`Pausa`,Stop:`Stoppa`,Next:`Nästa`,Previous:`Föregående`,Select:`Välj`,"Next/Prev":`Nästa/Föregående`,Quit:`Avsluta`,"Now Playing":`Spelas nu`,"Spectrum Analyser":`Spektrumanalysator`,Playlist:`Spellista`,Files:`Filer`,"Open files":`Öppna filer`,"Open folder":`Öppna mapp`,"Add to library":`Lägg till i biblioteket`,"Replace playlist":`Ersätt spellistan`,Filter:`Filtrera`,Search:`Sök`,"Nothing loaded.":`Inget laddat.`,"Empty.":`Tomt.`,"Loading…":`Laddar…`,"Connecting…":`Ansluter…`,Connected:`Ansluten`,"Not connected":`Inte ansluten`,"No source":`Ingen källa`,Playing:`Spelar`,Stopped:`Stoppad`,Volume:`Volym`,Seek:`Uppspelningsposition`,"Full screen":`Helskärm`,Download:`Ladda ned`,Share:`Dela`,Copy:`Kopiera`,"Copy link":`Kopiera länk`,Copied:`Kopierat`,Save:`Spara`,Cancel:`Avbryt`,Close:`Stäng`,Remove:`Ta bort`,Delete:`Radera`,Edit:`Redigera`,Add:`Lägg till`,Send:`Skicka`,Retry:`Försök igen`,Back:`Tillbaka`,"Next page":`Nästa sida`,"Previous page":`Föregående sida`,"Show more":`Visa fler`,Panels:`Paneler`,"Reset layout":`Återställ layout`,Show:`Visa`,Hide:`Dölj`,Collapse:`Fäll ihop`,Expand:`Fäll ut`,"Move up":`Flytta upp`,"Move down":`Flytta ned`,Install:`Installera`,"TV mode":`TV-läge`,On:`På`,Off:`Av`,Account:`Konto`,"Sign in":`Logga in`,"Sign out":`Logga ut`,"Create account":`Skapa konto`,Email:`E-post`,Password:`Lösenord`,"Forgot password?":`Glömt lösenordet?`,"Welcome back":`Välkommen tillbaka`,Profile:`Profil`,Handle:`Användarnamn`,"Your servers":`Dina servrar`,Server:`Server`,Connect:`Anslut`,Disconnect:`Koppla från`,Directory:`Katalog`,Favourites:`Favoriter`,Follow:`Följ`,Unfollow:`Sluta följa`,Notifications:`Aviseringar`,"Phone number":`Telefonnummer`,"Save number":`Spara nummer`,Transcript:`Transkription`,Captions:`Undertexter`,"Translate audio":`Översätt ljud`,"Audio language":`Ljudspråk`,"Audio options":`Ljudalternativ`,"Keep background sound":`Behåll bakgrundsljud`,"Background level":`Bakgrundsvolym`,"Speaker voices":`Talarröster`,"Any voice":`Valfri röst`,"Male voice":`Manlig röst`,"Female voice":`Kvinnlig röst`,"Original audio.":`Originalljud.`,"Buy translated audio":`Köp översatt ljud`,"Audio credit":`Ljudsaldo`,"Buy pass":`Köp pass`,Pass:`Pass`,"Pay with":`Betala med`,"Check payment":`Kontrollera betalning`,"Open checkout":`Gå till betalning`,"Free sessions":`Gratis sessioner`,"Usage rates and expiry":`Priser och giltighet`,Catalogs:`Kataloger`,"Add catalog":`Lägg till katalog`,"Catalog name":`Katalognamn`,Link:`Länk`,"Play link":`Spela länk`,"Go live":`Sänd live`,Publish:`Publicera`,Listen:`Lyssna`,"Live now":`Live nu`,Upcoming:`Kommande`,Parties:`Tittarfester`,"Join party":`Gå med i festen`,"Invite code":`Inbjudningskod`,Invite:`Bjud in`,Chat:`Chatt`,"Chat message":`Chattmeddelande`,People:`Personer`,Speaker:`Talare`,Speakers:`Talare`,Listener:`Lyssnare`,Moderator:`Moderator`,"Raise hand":`Räck upp handen`,"Hand raises":`Uppräckta händer`,Questions:`Frågor`,Resources:`Resurser`,Replay:`Repris`,Schedule:`Schema`,Event:`Evenemang`,Host:`Värd`,About:`Om`,Stage:`Scen`,Title:`Titel`,Description:`Beskrivning`,Topic:`Ämne`,Public:`Offentlig`,"Anyone with the link":`Alla med länken`,"Invited people":`Inbjudna personer`,"Who can join":`Vem får delta`,"Date and time":`Datum och tid`,"Expected length":`Planerad längd`,Repeat:`Upprepa`,"Does not repeat":`Upprepas inte`,"Every day":`Varje dag`,"Every week":`Varje vecka`,Homepage:`Webbplats`,"Host name":`Värdens namn`,"Profile photo URL":`URL till profilbild`,"Broadcast link":`Sändningslänk`,"Edit event":`Redigera evenemang`,"Save changes":`Spara ändringar`,"Create live":`Skapa livesändning`,"Schedule class":`Schemalägg lektion`,"Start class":`Starta lektion`,"End event":`Avsluta evenemang`,"End session":`Avsluta session`,"Session ended":`Sessionen avslutad`,"Event ended":`Evenemanget avslutat`,Cancelled:`Inställt`,"Replay available":`Repris tillgänglig`,Join:`Gå med`,"Create invite":`Skapa inbjudan`,"Invite as":`Bjud in som`,"Watch now":`Titta nu`,"Start a room":`Skapa ett rum`,"Recent replays":`Senaste repriserna`,"Your account":`Ditt konto`,"Write with AI":`Skriv med AI`,"Suggested title":`Föreslagen titel`,"Suggested description":`Föreslagen beskrivning`,"Suggested topic":`Föreslaget ämne`,"Use these details":`Använd dessa uppgifter`,"Learn something live.":`Lär dig något live.`,"Screen share":`Dela skärm`,"Upload and broadcast":`Ladda upp och sänd`,Help:`Hjälp`,"Reload Player":`Ladda om spelaren`,"Copy Bundled CLI Path":`Kopiera sökvägen till medföljande CLI`,"Developer tools":`Utvecklarverktyg`,Undo:`Ångra`,Redo:`Gör om`,Cut:`Klipp ut`,Paste:`Klistra in`,"Select all":`Markera allt`,Status:`Status`,"Activity log":`Aktivitetslogg`,Admin:`Administration`,"Playback controls":`Uppspelningskontroller`,"Tracks and folders":`Spår och mappar`,"Original-language captions.":`Undertexter på originalspråket.`,"Skip to playback controls":`Hoppa till uppspelningskontroller`,"Skip to playlist":`Hoppa till spellistan`,"Skip to transcript and translated audio":`Hoppa till transkription och översatt ljud`};export{t as default};
@@ -1 +1 @@
1
- import{t as e}from"./index-BTxRE5f2.js";var t={...e,"No parties live right now.":`Зараз немає вечірок наживо.`,"Could not refresh parties.":`Не вдалося оновити список вечірок.`,"Pick a server in the directory, or paste its link here.":`Виберіть сервер у каталозі або вставте його посилання сюди.`,"Interface language":`Мова інтерфейсу`,Language:`Мова`,"Translation language":`Мова перекладу`,"Original (auto-detect)":`Оригінал (автовизначення)`,Play:`Відтворити`,Pause:`Пауза`,Stop:`Зупинити`,Next:`Далі`,Previous:`Назад`,Select:`Вибрати`,"Next/Prev":`Далі/Назад`,Quit:`Вийти`,"Now Playing":`Зараз грає`,"Spectrum Analyser":`Аналізатор спектра`,Playlist:`Список відтворення`,Files:`Файли`,"Open files":`Відкрити файли`,"Open folder":`Відкрити папку`,"Add to library":`Додати до бібліотеки`,"Replace playlist":`Замінити список`,Filter:`Фільтр`,Search:`Пошук`,"Nothing loaded.":`Нічого не завантажено.`,"Empty.":`Порожньо.`,"Loading…":`Завантаження…`,"Connecting…":`Підключення…`,Connected:`Підключено`,"Not connected":`Немає з’єднання`,"No source":`Немає джерела`,Playing:`Відтворення`,Stopped:`Зупинено`,Volume:`Гучність`,Seek:`Позиція відтворення`,"Full screen":`На весь екран`,Download:`Завантажити`,Share:`Поділитися`,Copy:`Копіювати`,"Copy link":`Копіювати посилання`,Copied:`Скопійовано`,Save:`Зберегти`,Cancel:`Скасувати`,Close:`Закрити`,Remove:`Прибрати`,Delete:`Видалити`,Edit:`Редагувати`,Add:`Додати`,Send:`Надіслати`,Retry:`Спробувати ще`,Back:`Назад`,"Next page":`Наступна сторінка`,"Previous page":`Попередня сторінка`,"Show more":`Показати більше`,Panels:`Панелі`,"Reset layout":`Скинути розташування`,Show:`Показати`,Hide:`Приховати`,Collapse:`Згорнути`,Expand:`Розгорнути`,"Move up":`Вгору`,"Move down":`Вниз`,Install:`Установити`,"TV mode":`Режим ТБ`,On:`Увімк.`,Off:`Вимк.`,Account:`Обліковий запис`,"Sign in":`Увійти`,"Sign out":`Вийти з облікового запису`,"Create account":`Створити обліковий запис`,Email:`Ел. пошта`,Password:`Пароль`,"Forgot password?":`Забули пароль?`,"Welcome back":`З поверненням`,Profile:`Профіль`,Handle:`Ім’я користувача`,"Your servers":`Ваші сервери`,Server:`Сервер`,Connect:`Підключитися`,Disconnect:`Відключитися`,Directory:`Каталог`,Favourites:`Обране`,Follow:`Підписатися`,Unfollow:`Відписатися`,Notifications:`Сповіщення`,"Phone number":`Номер телефону`,"Save number":`Зберегти номер`,Transcript:`Транскрипція`,Captions:`Субтитри`,"Translate audio":`Перекладати аудіо`,"Audio language":`Мова аудіо`,"Audio options":`Налаштування аудіо`,"Keep background sound":`Зберегти фонові звуки`,"Background level":`Гучність фону`,"Speaker voices":`Голоси учасників`,"Any voice":`Будь-який голос`,"Male voice":`Чоловічий голос`,"Female voice":`Жіночий голос`,"Original audio.":`Оригінальне аудіо.`,"Buy translated audio":`Придбати переклад аудіо`,"Audio credit":`Аудіобаланс`,"Buy pass":`Купити пропуск`,Pass:`Пропуск`,"Pay with":`Оплатити через`,"Check payment":`Перевірити оплату`,"Open checkout":`Перейти до оплати`,"Free sessions":`Безкоштовні сеанси`,"Usage rates and expiry":`Тарифи та строк дії`,Catalogs:`Каталоги`,"Add catalog":`Додати каталог`,"Catalog name":`Назва каталогу`,Link:`Посилання`,"Play link":`Відтворити посилання`,"Go live":`Почати ефір`,Publish:`Опублікувати`,Listen:`Слухати`,"Live now":`Зараз наживо`,Upcoming:`Незабаром`,Parties:`Спільні перегляди`,"Join party":`Приєднатися до перегляду`,"Invite code":`Код запрошення`,Invite:`Запросити`,Chat:`Чат`,"Chat message":`Повідомлення чату`,People:`Учасники`,Speaker:`Мовець`,Speakers:`Мовці`,Listener:`Слухач`,Moderator:`Модератор`,"Raise hand":`Підняти руку`,"Hand raises":`Підняті руки`,Questions:`Запитання`,Resources:`Матеріали`,Replay:`Запис`,Schedule:`Розклад`,Event:`Подія`,Host:`Ведучий`,About:`Про подію`,Stage:`Сцена`,Title:`Назва`,Description:`Опис`,Topic:`Тема`,Public:`Публічна`,"Anyone with the link":`Усі з посиланням`,"Invited people":`Запрошені люди`,"Who can join":`Хто може приєднатися`,"Date and time":`Дата й час`,"Expected length":`Очікувана тривалість`,Repeat:`Повторення`,"Does not repeat":`Не повторюється`,"Every day":`Щодня`,"Every week":`Щотижня`,Homepage:`Вебсайт`,"Host name":`Ім’я ведучого`,"Profile photo URL":`URL фото профілю`,"Broadcast link":`Посилання на трансляцію`,"Edit event":`Редагувати подію`,"Save changes":`Зберегти зміни`,"Create live":`Створити ефір`,"Schedule class":`Запланувати заняття`,"Start class":`Почати заняття`,"End event":`Завершити подію`,"End session":`Завершити сеанс`,"Session ended":`Сеанс завершено`,"Event ended":`Подію завершено`,Cancelled:`Скасовано`,"Replay available":`Запис доступний`,Join:`Приєднатися`,"Create invite":`Створити запрошення`,"Invite as":`Запросити як`,"Watch now":`Дивитися зараз`,"Start a room":`Створити кімнату`,"Recent replays":`Нещодавні записи`,"Your account":`Ваш обліковий запис`,"Write with AI":`Написати з ШІ`,"Suggested title":`Запропонована назва`,"Suggested description":`Запропонований опис`,"Suggested topic":`Запропонована тема`,"Use these details":`Використати ці дані`,"Learn something live.":`Навчайтеся наживо.`,"Screen share":`Поділитися екраном`,"Upload and broadcast":`Завантажити й транслювати`,Help:`Довідка`,"Reload Player":`Перезавантажити плеєр`,"Copy Bundled CLI Path":`Копіювати шлях до вбудованого CLI`,"Developer tools":`Інструменти розробника`,Undo:`Скасувати дію`,Redo:`Повторити дію`,Cut:`Вирізати`,Paste:`Вставити`,"Select all":`Вибрати все`,Status:`Стан`,"Activity log":`Журнал активності`,Admin:`Адміністрування`,"Playback controls":`Керування відтворенням`,"Tracks and folders":`Треки та папки`,"Original-language captions.":`Субтитри мовою оригіналу.`,"Skip to playback controls":`До керування відтворенням`,"Skip to playlist":`До списку відтворення`,"Skip to transcript and translated audio":`До транскрипції та перекладу аудіо`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`Зараз немає вечірок наживо.`,"Could not refresh parties.":`Не вдалося оновити список вечірок.`,"Pick a server in the directory, or paste its link here.":`Виберіть сервер у каталозі або вставте його посилання сюди.`,"Interface language":`Мова інтерфейсу`,Language:`Мова`,"Translation language":`Мова перекладу`,"Original (auto-detect)":`Оригінал (автовизначення)`,Play:`Відтворити`,Pause:`Пауза`,Stop:`Зупинити`,Next:`Далі`,Previous:`Назад`,Select:`Вибрати`,"Next/Prev":`Далі/Назад`,Quit:`Вийти`,"Now Playing":`Зараз грає`,"Spectrum Analyser":`Аналізатор спектра`,Playlist:`Список відтворення`,Files:`Файли`,"Open files":`Відкрити файли`,"Open folder":`Відкрити папку`,"Add to library":`Додати до бібліотеки`,"Replace playlist":`Замінити список`,Filter:`Фільтр`,Search:`Пошук`,"Nothing loaded.":`Нічого не завантажено.`,"Empty.":`Порожньо.`,"Loading…":`Завантаження…`,"Connecting…":`Підключення…`,Connected:`Підключено`,"Not connected":`Немає з’єднання`,"No source":`Немає джерела`,Playing:`Відтворення`,Stopped:`Зупинено`,Volume:`Гучність`,Seek:`Позиція відтворення`,"Full screen":`На весь екран`,Download:`Завантажити`,Share:`Поділитися`,Copy:`Копіювати`,"Copy link":`Копіювати посилання`,Copied:`Скопійовано`,Save:`Зберегти`,Cancel:`Скасувати`,Close:`Закрити`,Remove:`Прибрати`,Delete:`Видалити`,Edit:`Редагувати`,Add:`Додати`,Send:`Надіслати`,Retry:`Спробувати ще`,Back:`Назад`,"Next page":`Наступна сторінка`,"Previous page":`Попередня сторінка`,"Show more":`Показати більше`,Panels:`Панелі`,"Reset layout":`Скинути розташування`,Show:`Показати`,Hide:`Приховати`,Collapse:`Згорнути`,Expand:`Розгорнути`,"Move up":`Вгору`,"Move down":`Вниз`,Install:`Установити`,"TV mode":`Режим ТБ`,On:`Увімк.`,Off:`Вимк.`,Account:`Обліковий запис`,"Sign in":`Увійти`,"Sign out":`Вийти з облікового запису`,"Create account":`Створити обліковий запис`,Email:`Ел. пошта`,Password:`Пароль`,"Forgot password?":`Забули пароль?`,"Welcome back":`З поверненням`,Profile:`Профіль`,Handle:`Ім’я користувача`,"Your servers":`Ваші сервери`,Server:`Сервер`,Connect:`Підключитися`,Disconnect:`Відключитися`,Directory:`Каталог`,Favourites:`Обране`,Follow:`Підписатися`,Unfollow:`Відписатися`,Notifications:`Сповіщення`,"Phone number":`Номер телефону`,"Save number":`Зберегти номер`,Transcript:`Транскрипція`,Captions:`Субтитри`,"Translate audio":`Перекладати аудіо`,"Audio language":`Мова аудіо`,"Audio options":`Налаштування аудіо`,"Keep background sound":`Зберегти фонові звуки`,"Background level":`Гучність фону`,"Speaker voices":`Голоси учасників`,"Any voice":`Будь-який голос`,"Male voice":`Чоловічий голос`,"Female voice":`Жіночий голос`,"Original audio.":`Оригінальне аудіо.`,"Buy translated audio":`Придбати переклад аудіо`,"Audio credit":`Аудіобаланс`,"Buy pass":`Купити пропуск`,Pass:`Пропуск`,"Pay with":`Оплатити через`,"Check payment":`Перевірити оплату`,"Open checkout":`Перейти до оплати`,"Free sessions":`Безкоштовні сеанси`,"Usage rates and expiry":`Тарифи та строк дії`,Catalogs:`Каталоги`,"Add catalog":`Додати каталог`,"Catalog name":`Назва каталогу`,Link:`Посилання`,"Play link":`Відтворити посилання`,"Go live":`Почати ефір`,Publish:`Опублікувати`,Listen:`Слухати`,"Live now":`Зараз наживо`,Upcoming:`Незабаром`,Parties:`Спільні перегляди`,"Join party":`Приєднатися до перегляду`,"Invite code":`Код запрошення`,Invite:`Запросити`,Chat:`Чат`,"Chat message":`Повідомлення чату`,People:`Учасники`,Speaker:`Мовець`,Speakers:`Мовці`,Listener:`Слухач`,Moderator:`Модератор`,"Raise hand":`Підняти руку`,"Hand raises":`Підняті руки`,Questions:`Запитання`,Resources:`Матеріали`,Replay:`Запис`,Schedule:`Розклад`,Event:`Подія`,Host:`Ведучий`,About:`Про подію`,Stage:`Сцена`,Title:`Назва`,Description:`Опис`,Topic:`Тема`,Public:`Публічна`,"Anyone with the link":`Усі з посиланням`,"Invited people":`Запрошені люди`,"Who can join":`Хто може приєднатися`,"Date and time":`Дата й час`,"Expected length":`Очікувана тривалість`,Repeat:`Повторення`,"Does not repeat":`Не повторюється`,"Every day":`Щодня`,"Every week":`Щотижня`,Homepage:`Вебсайт`,"Host name":`Ім’я ведучого`,"Profile photo URL":`URL фото профілю`,"Broadcast link":`Посилання на трансляцію`,"Edit event":`Редагувати подію`,"Save changes":`Зберегти зміни`,"Create live":`Створити ефір`,"Schedule class":`Запланувати заняття`,"Start class":`Почати заняття`,"End event":`Завершити подію`,"End session":`Завершити сеанс`,"Session ended":`Сеанс завершено`,"Event ended":`Подію завершено`,Cancelled:`Скасовано`,"Replay available":`Запис доступний`,Join:`Приєднатися`,"Create invite":`Створити запрошення`,"Invite as":`Запросити як`,"Watch now":`Дивитися зараз`,"Start a room":`Створити кімнату`,"Recent replays":`Нещодавні записи`,"Your account":`Ваш обліковий запис`,"Write with AI":`Написати з ШІ`,"Suggested title":`Запропонована назва`,"Suggested description":`Запропонований опис`,"Suggested topic":`Запропонована тема`,"Use these details":`Використати ці дані`,"Learn something live.":`Навчайтеся наживо.`,"Screen share":`Поділитися екраном`,"Upload and broadcast":`Завантажити й транслювати`,Help:`Довідка`,"Reload Player":`Перезавантажити плеєр`,"Copy Bundled CLI Path":`Копіювати шлях до вбудованого CLI`,"Developer tools":`Інструменти розробника`,Undo:`Скасувати дію`,Redo:`Повторити дію`,Cut:`Вирізати`,Paste:`Вставити`,"Select all":`Вибрати все`,Status:`Стан`,"Activity log":`Журнал активності`,Admin:`Адміністрування`,"Playback controls":`Керування відтворенням`,"Tracks and folders":`Треки та папки`,"Original-language captions.":`Субтитри мовою оригіналу.`,"Skip to playback controls":`До керування відтворенням`,"Skip to playlist":`До списку відтворення`,"Skip to transcript and translated audio":`До транскрипції та перекладу аудіо`};export{t as default};
@@ -1 +1 @@
1
- import{n as e}from"./index-CY9U4Kk_.js";var t={...e,"No parties live right now.":`Hiện không có buổi xem chung nào trực tiếp.`,"Could not refresh parties.":`Không thể cập nhật các buổi xem chung.`,"Pick a server in the directory, or paste its link here.":`Chọn máy chủ trong danh bạ hoặc dán liên kết vào đây.`,"Interface language":`Ngôn ngữ giao diện`,Language:`Ngôn ngữ`,"Translation language":`Ngôn ngữ dịch`,"Original (auto-detect)":`Gốc (tự động phát hiện)`,Play:`Phát`,Pause:`Tạm dừng`,Stop:`Dừng`,Next:`Tiếp theo`,Previous:`Trước`,Select:`Chọn`,"Next/Prev":`Tiếp/Trước`,Quit:`Thoát`,"Now Playing":`Đang phát`,"Spectrum Analyser":`Bộ phân tích phổ`,Playlist:`Danh sách phát`,Files:`Tệp`,"Open files":`Mở tệp`,"Open folder":`Mở thư mục`,"Add to library":`Thêm vào thư viện`,"Replace playlist":`Thay danh sách phát`,Filter:`Lọc`,Search:`Tìm kiếm`,"Nothing loaded.":`Chưa tải nội dung.`,"Empty.":`Trống.`,"Loading…":`Đang tải…`,"Connecting…":`Đang kết nối…`,Connected:`Đã kết nối`,"Not connected":`Chưa kết nối`,"No source":`Không có nguồn`,Playing:`Đang phát`,Stopped:`Đã dừng`,Volume:`Âm lượng`,Seek:`Vị trí phát`,"Full screen":`Toàn màn hình`,Download:`Tải xuống`,Share:`Chia sẻ`,Copy:`Sao chép`,"Copy link":`Sao chép liên kết`,Copied:`Đã sao chép`,Save:`Lưu`,Cancel:`Hủy`,Close:`Đóng`,Remove:`Bỏ`,Delete:`Xóa`,Edit:`Sửa`,Add:`Thêm`,Send:`Gửi`,Retry:`Thử lại`,Back:`Quay lại`,"Next page":`Trang tiếp`,"Previous page":`Trang trước`,"Show more":`Xem thêm`,Panels:`Bảng`,"Reset layout":`Đặt lại bố cục`,Show:`Hiện`,Hide:`Ẩn`,Collapse:`Thu gọn`,Expand:`Mở rộng`,"Move up":`Chuyển lên`,"Move down":`Chuyển xuống`,Install:`Cài đặt`,"TV mode":`Chế độ TV`,On:`Bật`,Off:`Tắt`,Account:`Tài khoản`,"Sign in":`Đăng nhập`,"Sign out":`Đăng xuất`,"Create account":`Tạo tài khoản`,Email:`Email`,Password:`Mật khẩu`,"Forgot password?":`Quên mật khẩu?`,"Welcome back":`Chào mừng trở lại`,Profile:`Hồ sơ`,Handle:`Tên người dùng`,"Your servers":`Máy chủ của bạn`,Server:`Máy chủ`,Connect:`Kết nối`,Disconnect:`Ngắt kết nối`,Directory:`Danh bạ`,Favourites:`Yêu thích`,Follow:`Theo dõi`,Unfollow:`Bỏ theo dõi`,Notifications:`Thông báo`,"Phone number":`Số điện thoại`,"Save number":`Lưu số`,Transcript:`Bản chép lời`,Captions:`Phụ đề`,"Translate audio":`Dịch âm thanh`,"Audio language":`Ngôn ngữ âm thanh`,"Audio options":`Tùy chọn âm thanh`,"Keep background sound":`Giữ âm thanh nền`,"Background level":`Âm lượng nền`,"Speaker voices":`Giọng người nói`,"Any voice":`Giọng bất kỳ`,"Male voice":`Giọng nam`,"Female voice":`Giọng nữ`,"Original audio.":`Âm thanh gốc.`,"Buy translated audio":`Mua âm thanh đã dịch`,"Audio credit":`Số dư âm thanh`,"Buy pass":`Mua vé truy cập`,Pass:`Vé truy cập`,"Pay with":`Thanh toán bằng`,"Check payment":`Kiểm tra thanh toán`,"Open checkout":`Đi đến thanh toán`,"Free sessions":`Phiên miễn phí`,"Usage rates and expiry":`Giá sử dụng và thời hạn`,Catalogs:`Danh mục`,"Add catalog":`Thêm danh mục`,"Catalog name":`Tên danh mục`,Link:`Liên kết`,"Play link":`Phát liên kết`,"Go live":`Phát trực tiếp`,Publish:`Xuất bản`,Listen:`Nghe`,"Live now":`Đang trực tiếp`,Upcoming:`Sắp diễn ra`,Parties:`Buổi xem chung`,"Join party":`Tham gia xem chung`,"Invite code":`Mã mời`,Invite:`Mời`,Chat:`Trò chuyện`,"Chat message":`Tin nhắn trò chuyện`,People:`Mọi người`,Speaker:`Người nói`,Speakers:`Người nói`,Listener:`Người nghe`,Moderator:`Điều hành viên`,"Raise hand":`Giơ tay`,"Hand raises":`Các lượt giơ tay`,Questions:`Câu hỏi`,Resources:`Tài liệu`,Replay:`Bản phát lại`,Schedule:`Lịch`,Event:`Sự kiện`,Host:`Người chủ trì`,About:`Giới thiệu`,Stage:`Sân khấu`,Title:`Tiêu đề`,Description:`Mô tả`,Topic:`Chủ đề`,Public:`Công khai`,"Anyone with the link":`Bất kỳ ai có liên kết`,"Invited people":`Người được mời`,"Who can join":`Ai có thể tham gia`,"Date and time":`Ngày và giờ`,"Expected length":`Thời lượng dự kiến`,Repeat:`Lặp lại`,"Does not repeat":`Không lặp lại`,"Every day":`Mỗi ngày`,"Every week":`Mỗi tuần`,Homepage:`Trang web`,"Host name":`Tên người chủ trì`,"Profile photo URL":`URL ảnh hồ sơ`,"Broadcast link":`Liên kết phát sóng`,"Edit event":`Sửa sự kiện`,"Save changes":`Lưu thay đổi`,"Create live":`Tạo buổi trực tiếp`,"Schedule class":`Lên lịch lớp học`,"Start class":`Bắt đầu lớp học`,"End event":`Kết thúc sự kiện`,"End session":`Kết thúc phiên`,"Session ended":`Phiên đã kết thúc`,"Event ended":`Sự kiện đã kết thúc`,Cancelled:`Đã hủy`,"Replay available":`Có bản phát lại`,Join:`Tham gia`,"Create invite":`Tạo lời mời`,"Invite as":`Mời với vai trò`,"Watch now":`Xem ngay`,"Start a room":`Tạo phòng`,"Recent replays":`Bản phát lại gần đây`,"Your account":`Tài khoản của bạn`,"Write with AI":`Viết bằng AI`,"Suggested title":`Tiêu đề gợi ý`,"Suggested description":`Mô tả gợi ý`,"Suggested topic":`Chủ đề gợi ý`,"Use these details":`Dùng thông tin này`,"Learn something live.":`Học điều mới qua trực tiếp.`,"Screen share":`Chia sẻ màn hình`,"Upload and broadcast":`Tải lên và phát sóng`,Help:`Trợ giúp`,"Reload Player":`Tải lại trình phát`,"Copy Bundled CLI Path":`Sao chép đường dẫn CLI đi kèm`,"Developer tools":`Công cụ nhà phát triển`,Undo:`Hoàn tác`,Redo:`Làm lại`,Cut:`Cắt`,Paste:`Dán`,"Select all":`Chọn tất cả`,Status:`Trạng thái`,"Activity log":`Nhật ký hoạt động`,Admin:`Quản trị`,"Playback controls":`Điều khiển phát`,"Tracks and folders":`Bản nhạc và thư mục`,"Original-language captions.":`Phụ đề bằng ngôn ngữ gốc.`,"Skip to playback controls":`Chuyển đến điều khiển phát`,"Skip to playlist":`Chuyển đến danh sách phát`,"Skip to transcript and translated audio":`Chuyển đến bản chép lời và âm thanh đã dịch`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`Hiện không có buổi xem chung nào trực tiếp.`,"Could not refresh parties.":`Không thể cập nhật các buổi xem chung.`,"Pick a server in the directory, or paste its link here.":`Chọn máy chủ trong danh bạ hoặc dán liên kết vào đây.`,"Interface language":`Ngôn ngữ giao diện`,Language:`Ngôn ngữ`,"Translation language":`Ngôn ngữ dịch`,"Original (auto-detect)":`Gốc (tự động phát hiện)`,Play:`Phát`,Pause:`Tạm dừng`,Stop:`Dừng`,Next:`Tiếp theo`,Previous:`Trước`,Select:`Chọn`,"Next/Prev":`Tiếp/Trước`,Quit:`Thoát`,"Now Playing":`Đang phát`,"Spectrum Analyser":`Bộ phân tích phổ`,Playlist:`Danh sách phát`,Files:`Tệp`,"Open files":`Mở tệp`,"Open folder":`Mở thư mục`,"Add to library":`Thêm vào thư viện`,"Replace playlist":`Thay danh sách phát`,Filter:`Lọc`,Search:`Tìm kiếm`,"Nothing loaded.":`Chưa tải nội dung.`,"Empty.":`Trống.`,"Loading…":`Đang tải…`,"Connecting…":`Đang kết nối…`,Connected:`Đã kết nối`,"Not connected":`Chưa kết nối`,"No source":`Không có nguồn`,Playing:`Đang phát`,Stopped:`Đã dừng`,Volume:`Âm lượng`,Seek:`Vị trí phát`,"Full screen":`Toàn màn hình`,Download:`Tải xuống`,Share:`Chia sẻ`,Copy:`Sao chép`,"Copy link":`Sao chép liên kết`,Copied:`Đã sao chép`,Save:`Lưu`,Cancel:`Hủy`,Close:`Đóng`,Remove:`Bỏ`,Delete:`Xóa`,Edit:`Sửa`,Add:`Thêm`,Send:`Gửi`,Retry:`Thử lại`,Back:`Quay lại`,"Next page":`Trang tiếp`,"Previous page":`Trang trước`,"Show more":`Xem thêm`,Panels:`Bảng`,"Reset layout":`Đặt lại bố cục`,Show:`Hiện`,Hide:`Ẩn`,Collapse:`Thu gọn`,Expand:`Mở rộng`,"Move up":`Chuyển lên`,"Move down":`Chuyển xuống`,Install:`Cài đặt`,"TV mode":`Chế độ TV`,On:`Bật`,Off:`Tắt`,Account:`Tài khoản`,"Sign in":`Đăng nhập`,"Sign out":`Đăng xuất`,"Create account":`Tạo tài khoản`,Email:`Email`,Password:`Mật khẩu`,"Forgot password?":`Quên mật khẩu?`,"Welcome back":`Chào mừng trở lại`,Profile:`Hồ sơ`,Handle:`Tên người dùng`,"Your servers":`Máy chủ của bạn`,Server:`Máy chủ`,Connect:`Kết nối`,Disconnect:`Ngắt kết nối`,Directory:`Danh bạ`,Favourites:`Yêu thích`,Follow:`Theo dõi`,Unfollow:`Bỏ theo dõi`,Notifications:`Thông báo`,"Phone number":`Số điện thoại`,"Save number":`Lưu số`,Transcript:`Bản chép lời`,Captions:`Phụ đề`,"Translate audio":`Dịch âm thanh`,"Audio language":`Ngôn ngữ âm thanh`,"Audio options":`Tùy chọn âm thanh`,"Keep background sound":`Giữ âm thanh nền`,"Background level":`Âm lượng nền`,"Speaker voices":`Giọng người nói`,"Any voice":`Giọng bất kỳ`,"Male voice":`Giọng nam`,"Female voice":`Giọng nữ`,"Original audio.":`Âm thanh gốc.`,"Buy translated audio":`Mua âm thanh đã dịch`,"Audio credit":`Số dư âm thanh`,"Buy pass":`Mua vé truy cập`,Pass:`Vé truy cập`,"Pay with":`Thanh toán bằng`,"Check payment":`Kiểm tra thanh toán`,"Open checkout":`Đi đến thanh toán`,"Free sessions":`Phiên miễn phí`,"Usage rates and expiry":`Giá sử dụng và thời hạn`,Catalogs:`Danh mục`,"Add catalog":`Thêm danh mục`,"Catalog name":`Tên danh mục`,Link:`Liên kết`,"Play link":`Phát liên kết`,"Go live":`Phát trực tiếp`,Publish:`Xuất bản`,Listen:`Nghe`,"Live now":`Đang trực tiếp`,Upcoming:`Sắp diễn ra`,Parties:`Buổi xem chung`,"Join party":`Tham gia xem chung`,"Invite code":`Mã mời`,Invite:`Mời`,Chat:`Trò chuyện`,"Chat message":`Tin nhắn trò chuyện`,People:`Mọi người`,Speaker:`Người nói`,Speakers:`Người nói`,Listener:`Người nghe`,Moderator:`Điều hành viên`,"Raise hand":`Giơ tay`,"Hand raises":`Các lượt giơ tay`,Questions:`Câu hỏi`,Resources:`Tài liệu`,Replay:`Bản phát lại`,Schedule:`Lịch`,Event:`Sự kiện`,Host:`Người chủ trì`,About:`Giới thiệu`,Stage:`Sân khấu`,Title:`Tiêu đề`,Description:`Mô tả`,Topic:`Chủ đề`,Public:`Công khai`,"Anyone with the link":`Bất kỳ ai có liên kết`,"Invited people":`Người được mời`,"Who can join":`Ai có thể tham gia`,"Date and time":`Ngày và giờ`,"Expected length":`Thời lượng dự kiến`,Repeat:`Lặp lại`,"Does not repeat":`Không lặp lại`,"Every day":`Mỗi ngày`,"Every week":`Mỗi tuần`,Homepage:`Trang web`,"Host name":`Tên người chủ trì`,"Profile photo URL":`URL ảnh hồ sơ`,"Broadcast link":`Liên kết phát sóng`,"Edit event":`Sửa sự kiện`,"Save changes":`Lưu thay đổi`,"Create live":`Tạo buổi trực tiếp`,"Schedule class":`Lên lịch lớp học`,"Start class":`Bắt đầu lớp học`,"End event":`Kết thúc sự kiện`,"End session":`Kết thúc phiên`,"Session ended":`Phiên đã kết thúc`,"Event ended":`Sự kiện đã kết thúc`,Cancelled:`Đã hủy`,"Replay available":`Có bản phát lại`,Join:`Tham gia`,"Create invite":`Tạo lời mời`,"Invite as":`Mời với vai trò`,"Watch now":`Xem ngay`,"Start a room":`Tạo phòng`,"Recent replays":`Bản phát lại gần đây`,"Your account":`Tài khoản của bạn`,"Write with AI":`Viết bằng AI`,"Suggested title":`Tiêu đề gợi ý`,"Suggested description":`Mô tả gợi ý`,"Suggested topic":`Chủ đề gợi ý`,"Use these details":`Dùng thông tin này`,"Learn something live.":`Học điều mới qua trực tiếp.`,"Screen share":`Chia sẻ màn hình`,"Upload and broadcast":`Tải lên và phát sóng`,Help:`Trợ giúp`,"Reload Player":`Tải lại trình phát`,"Copy Bundled CLI Path":`Sao chép đường dẫn CLI đi kèm`,"Developer tools":`Công cụ nhà phát triển`,Undo:`Hoàn tác`,Redo:`Làm lại`,Cut:`Cắt`,Paste:`Dán`,"Select all":`Chọn tất cả`,Status:`Trạng thái`,"Activity log":`Nhật ký hoạt động`,Admin:`Quản trị`,"Playback controls":`Điều khiển phát`,"Tracks and folders":`Bản nhạc và thư mục`,"Original-language captions.":`Phụ đề bằng ngôn ngữ gốc.`,"Skip to playback controls":`Chuyển đến điều khiển phát`,"Skip to playlist":`Chuyển đến danh sách phát`,"Skip to transcript and translated audio":`Chuyển đến bản chép lời và âm thanh đã dịch`};export{t as default};
@@ -1 +1 @@
1
- import{t as e}from"./index-BTxRE5f2.js";var t={...e,"No parties live right now.":`目前没有正在直播的派对。`,"Could not refresh parties.":`无法刷新派对列表。`,"Pick a server in the directory, or paste its link here.":`从目录中选择服务器,或在此粘贴其链接。`,"Interface language":`界面语言`,Language:`语言`,"Translation language":`翻译语言`,"Original (auto-detect)":`原文(自动检测)`,Play:`播放`,Pause:`暂停`,Stop:`停止`,Next:`下一个`,Previous:`上一个`,Select:`选择`,"Next/Prev":`下一个/上一个`,Quit:`退出`,"Now Playing":`正在播放`,"Spectrum Analyser":`频谱分析仪`,Playlist:`播放列表`,Files:`文件`,"Open files":`打开文件`,"Open folder":`打开文件夹`,"Add to library":`添加到媒体库`,"Replace playlist":`替换播放列表`,Filter:`筛选`,Search:`搜索`,"Nothing loaded.":`尚未加载内容。`,"Empty.":`空。`,"Loading…":`正在加载…`,"Connecting…":`正在连接…`,Connected:`已连接`,"Not connected":`未连接`,"No source":`无来源`,Playing:`播放中`,Stopped:`已停止`,Volume:`音量`,Seek:`播放位置`,"Full screen":`全屏`,Download:`下载`,Share:`分享`,Copy:`复制`,"Copy link":`复制链接`,Copied:`已复制`,Save:`保存`,Cancel:`取消`,Close:`关闭`,Remove:`移除`,Delete:`删除`,Edit:`编辑`,Add:`添加`,Send:`发送`,Retry:`重试`,Back:`返回`,"Next page":`下一页`,"Previous page":`上一页`,"Show more":`显示更多`,Panels:`面板`,"Reset layout":`重置布局`,Show:`显示`,Hide:`隐藏`,Collapse:`收起`,Expand:`展开`,"Move up":`上移`,"Move down":`下移`,Install:`安装`,"TV mode":`电视模式`,On:`开启`,Off:`关闭`,Account:`账户`,"Sign in":`登录`,"Sign out":`退出登录`,"Create account":`创建账户`,Email:`电子邮箱`,Password:`密码`,"Forgot password?":`忘记密码?`,"Welcome back":`欢迎回来`,Profile:`个人资料`,Handle:`用户名`,"Your servers":`你的服务器`,Server:`服务器`,Connect:`连接`,Disconnect:`断开连接`,Directory:`目录`,Favourites:`收藏`,Follow:`关注`,Unfollow:`取消关注`,Notifications:`通知`,"Phone number":`电话号码`,"Save number":`保存号码`,Transcript:`文字稿`,Captions:`字幕`,"Translate audio":`翻译音频`,"Audio language":`音频语言`,"Audio options":`音频选项`,"Keep background sound":`保留背景声音`,"Background level":`背景音量`,"Speaker voices":`说话者声音`,"Any voice":`任意声音`,"Male voice":`男声`,"Female voice":`女声`,"Original audio.":`原始音频。`,"Buy translated audio":`购买翻译音频`,"Audio credit":`音频余额`,"Buy pass":`购买通行证`,Pass:`通行证`,"Pay with":`支付方式`,"Check payment":`检查付款`,"Open checkout":`前往付款`,"Free sessions":`免费会话`,"Usage rates and expiry":`使用费率与有效期`,Catalogs:`内容目录`,"Add catalog":`添加目录`,"Catalog name":`目录名称`,Link:`链接`,"Play link":`播放链接`,"Go live":`开始直播`,Publish:`发布`,Listen:`收听`,"Live now":`正在直播`,Upcoming:`即将开始`,Parties:`一起看`,"Join party":`加入一起看`,"Invite code":`邀请码`,Invite:`邀请`,Chat:`聊天`,"Chat message":`聊天消息`,People:`参与者`,Speaker:`发言者`,Speakers:`发言者`,Listener:`听众`,Moderator:`主持人`,"Raise hand":`举手`,"Hand raises":`举手列表`,Questions:`问题`,Resources:`资料`,Replay:`回放`,Schedule:`日程`,Event:`活动`,Host:`主办人`,About:`关于`,Stage:`舞台`,Title:`标题`,Description:`描述`,Topic:`主题`,Public:`公开`,"Anyone with the link":`拥有链接的任何人`,"Invited people":`受邀者`,"Who can join":`谁可以加入`,"Date and time":`日期与时间`,"Expected length":`预计时长`,Repeat:`重复`,"Does not repeat":`不重复`,"Every day":`每天`,"Every week":`每周`,Homepage:`网站`,"Host name":`主办人姓名`,"Profile photo URL":`头像网址`,"Broadcast link":`直播链接`,"Edit event":`编辑活动`,"Save changes":`保存更改`,"Create live":`创建直播`,"Schedule class":`安排课程`,"Start class":`开始课程`,"End event":`结束活动`,"End session":`结束本次会话`,"Session ended":`会话已结束`,"Event ended":`活动已结束`,Cancelled:`已取消`,"Replay available":`可观看回放`,Join:`加入`,"Create invite":`创建邀请`,"Invite as":`邀请身份`,"Watch now":`立即观看`,"Start a room":`创建房间`,"Recent replays":`近期回放`,"Your account":`你的账户`,"Write with AI":`用 AI 撰写`,"Suggested title":`建议标题`,"Suggested description":`建议描述`,"Suggested topic":`建议主题`,"Use these details":`使用这些信息`,"Learn something live.":`实时学习新知识。`,"Screen share":`共享屏幕`,"Upload and broadcast":`上传并直播`,Help:`帮助`,"Reload Player":`重新加载播放器`,"Copy Bundled CLI Path":`复制内置命令行工具路径`,"Developer tools":`开发者工具`,Undo:`撤销`,Redo:`重做`,Cut:`剪切`,Paste:`粘贴`,"Select all":`全选`,Status:`状态`,"Activity log":`活动日志`,Admin:`管理`,"Playback controls":`播放控制`,"Tracks and folders":`曲目与文件夹`,"Original-language captions.":`原语言字幕。`,"Skip to playback controls":`跳转到播放控制`,"Skip to playlist":`跳转到播放列表`,"Skip to transcript and translated audio":`跳转到文字稿和翻译音频`};export{t as default};
1
+ import{n as e}from"./index-eX-ZuPCD.js";var t={...e,"No parties live right now.":`目前没有正在直播的派对。`,"Could not refresh parties.":`无法刷新派对列表。`,"Pick a server in the directory, or paste its link here.":`从目录中选择服务器,或在此粘贴其链接。`,"Interface language":`界面语言`,Language:`语言`,"Translation language":`翻译语言`,"Original (auto-detect)":`原文(自动检测)`,Play:`播放`,Pause:`暂停`,Stop:`停止`,Next:`下一个`,Previous:`上一个`,Select:`选择`,"Next/Prev":`下一个/上一个`,Quit:`退出`,"Now Playing":`正在播放`,"Spectrum Analyser":`频谱分析仪`,Playlist:`播放列表`,Files:`文件`,"Open files":`打开文件`,"Open folder":`打开文件夹`,"Add to library":`添加到媒体库`,"Replace playlist":`替换播放列表`,Filter:`筛选`,Search:`搜索`,"Nothing loaded.":`尚未加载内容。`,"Empty.":`空。`,"Loading…":`正在加载…`,"Connecting…":`正在连接…`,Connected:`已连接`,"Not connected":`未连接`,"No source":`无来源`,Playing:`播放中`,Stopped:`已停止`,Volume:`音量`,Seek:`播放位置`,"Full screen":`全屏`,Download:`下载`,Share:`分享`,Copy:`复制`,"Copy link":`复制链接`,Copied:`已复制`,Save:`保存`,Cancel:`取消`,Close:`关闭`,Remove:`移除`,Delete:`删除`,Edit:`编辑`,Add:`添加`,Send:`发送`,Retry:`重试`,Back:`返回`,"Next page":`下一页`,"Previous page":`上一页`,"Show more":`显示更多`,Panels:`面板`,"Reset layout":`重置布局`,Show:`显示`,Hide:`隐藏`,Collapse:`收起`,Expand:`展开`,"Move up":`上移`,"Move down":`下移`,Install:`安装`,"TV mode":`电视模式`,On:`开启`,Off:`关闭`,Account:`账户`,"Sign in":`登录`,"Sign out":`退出登录`,"Create account":`创建账户`,Email:`电子邮箱`,Password:`密码`,"Forgot password?":`忘记密码?`,"Welcome back":`欢迎回来`,Profile:`个人资料`,Handle:`用户名`,"Your servers":`你的服务器`,Server:`服务器`,Connect:`连接`,Disconnect:`断开连接`,Directory:`目录`,Favourites:`收藏`,Follow:`关注`,Unfollow:`取消关注`,Notifications:`通知`,"Phone number":`电话号码`,"Save number":`保存号码`,Transcript:`文字稿`,Captions:`字幕`,"Translate audio":`翻译音频`,"Audio language":`音频语言`,"Audio options":`音频选项`,"Keep background sound":`保留背景声音`,"Background level":`背景音量`,"Speaker voices":`说话者声音`,"Any voice":`任意声音`,"Male voice":`男声`,"Female voice":`女声`,"Original audio.":`原始音频。`,"Buy translated audio":`购买翻译音频`,"Audio credit":`音频余额`,"Buy pass":`购买通行证`,Pass:`通行证`,"Pay with":`支付方式`,"Check payment":`检查付款`,"Open checkout":`前往付款`,"Free sessions":`免费会话`,"Usage rates and expiry":`使用费率与有效期`,Catalogs:`内容目录`,"Add catalog":`添加目录`,"Catalog name":`目录名称`,Link:`链接`,"Play link":`播放链接`,"Go live":`开始直播`,Publish:`发布`,Listen:`收听`,"Live now":`正在直播`,Upcoming:`即将开始`,Parties:`一起看`,"Join party":`加入一起看`,"Invite code":`邀请码`,Invite:`邀请`,Chat:`聊天`,"Chat message":`聊天消息`,People:`参与者`,Speaker:`发言者`,Speakers:`发言者`,Listener:`听众`,Moderator:`主持人`,"Raise hand":`举手`,"Hand raises":`举手列表`,Questions:`问题`,Resources:`资料`,Replay:`回放`,Schedule:`日程`,Event:`活动`,Host:`主办人`,About:`关于`,Stage:`舞台`,Title:`标题`,Description:`描述`,Topic:`主题`,Public:`公开`,"Anyone with the link":`拥有链接的任何人`,"Invited people":`受邀者`,"Who can join":`谁可以加入`,"Date and time":`日期与时间`,"Expected length":`预计时长`,Repeat:`重复`,"Does not repeat":`不重复`,"Every day":`每天`,"Every week":`每周`,Homepage:`网站`,"Host name":`主办人姓名`,"Profile photo URL":`头像网址`,"Broadcast link":`直播链接`,"Edit event":`编辑活动`,"Save changes":`保存更改`,"Create live":`创建直播`,"Schedule class":`安排课程`,"Start class":`开始课程`,"End event":`结束活动`,"End session":`结束本次会话`,"Session ended":`会话已结束`,"Event ended":`活动已结束`,Cancelled:`已取消`,"Replay available":`可观看回放`,Join:`加入`,"Create invite":`创建邀请`,"Invite as":`邀请身份`,"Watch now":`立即观看`,"Start a room":`创建房间`,"Recent replays":`近期回放`,"Your account":`你的账户`,"Write with AI":`用 AI 撰写`,"Suggested title":`建议标题`,"Suggested description":`建议描述`,"Suggested topic":`建议主题`,"Use these details":`使用这些信息`,"Learn something live.":`实时学习新知识。`,"Screen share":`共享屏幕`,"Upload and broadcast":`上传并直播`,Help:`帮助`,"Reload Player":`重新加载播放器`,"Copy Bundled CLI Path":`复制内置命令行工具路径`,"Developer tools":`开发者工具`,Undo:`撤销`,Redo:`重做`,Cut:`剪切`,Paste:`粘贴`,"Select all":`全选`,Status:`状态`,"Activity log":`活动日志`,Admin:`管理`,"Playback controls":`播放控制`,"Tracks and folders":`曲目与文件夹`,"Original-language captions.":`原语言字幕。`,"Skip to playback controls":`跳转到播放控制`,"Skip to playlist":`跳转到播放列表`,"Skip to transcript and translated audio":`跳转到文字稿和翻译音频`};export{t as default};
@@ -17,8 +17,8 @@
17
17
  <meta property="og:title" content="nixamp: broadcast live radio, TV and film from your own machine" />
18
18
  <meta property="og:description" content="Launch your own live radio, TV and film network from your machine. Listen free, go live in one command, get paid with x402." />
19
19
  <meta property="og:type" content="website" />
20
- <script type="module" crossorigin src="/assets/index-CY9U4Kk_.js"></script>
21
- <link rel="stylesheet" crossorigin href="/assets/index-BYQ3s2w2.css">
20
+ <script type="module" crossorigin src="/assets/index-eX-ZuPCD.js"></script>
21
+ <link rel="stylesheet" crossorigin href="/assets/index-CRvqNCjB.css">
22
22
  </head>
23
23
  <body>
24
24
  <nav class="skip-links" aria-label="Skip to a section" data-i18n-aria-label="Skip to a section">
package/web/dist/sw.js CHANGED
@@ -1,34 +1,34 @@
1
1
  /* nixamp service worker — generated, do not edit */
2
- const CACHE = "nixamp-1789452119552";
2
+ const CACHE = "nixamp-1789454369620";
3
3
  const PRECACHE = [
4
4
  "/",
5
5
  "/.well-known/openaccess.json",
6
6
  "/apple-touch-icon.png",
7
- "/assets/ar-x6HrgYUm.js",
7
+ "/assets/ar-DUccFmQD.js",
8
8
  "/assets/background.worker-Hz7oaQ8X.js",
9
- "/assets/cs-CXZVcVnN.js",
10
- "/assets/da-MlHOzqGo.js",
11
- "/assets/de-Byc7wg7T.js",
12
- "/assets/es-CU_hEZIn.js",
13
- "/assets/fi-DpLRNly_.js",
14
- "/assets/fr-CMTL_KOU.js",
15
- "/assets/hi-D-0JPj2r.js",
16
- "/assets/hls-3VKVEQE3-Dlp5CG0J.js",
9
+ "/assets/cs-BQEfu2Fc.js",
10
+ "/assets/da-CGGLbyFk.js",
11
+ "/assets/de-DGAqLgme.js",
12
+ "/assets/es-CxV2y0ap.js",
13
+ "/assets/fi-CYVOybkb.js",
14
+ "/assets/fr-Cw1jxRs3.js",
15
+ "/assets/hi-YfhgSAtT.js",
16
+ "/assets/hls-3VKVEQE3-p3XDqXrK.js",
17
17
  "/assets/hls-n74Cnh8A.js",
18
- "/assets/hu-CgtKY4ws.js",
19
- "/assets/id-DyOnlGBJ.js",
20
- "/assets/index-BYQ3s2w2.css",
21
- "/assets/index-CY9U4Kk_.js",
22
- "/assets/it-BMnlmtUl.js",
23
- "/assets/mpegts-B2qiRgm5.js",
24
- "/assets/mpegts-LO6RVLD6-BUK8jB_-.js",
18
+ "/assets/hu-D_Ick2R2.js",
19
+ "/assets/id-C1v276xP.js",
20
+ "/assets/index-CRvqNCjB.css",
21
+ "/assets/index-eX-ZuPCD.js",
22
+ "/assets/it-CUhD_B0B.js",
23
+ "/assets/mpegts-Dvjt-GBC.js",
24
+ "/assets/mpegts-LO6RVLD6-Bm2lroPK.js",
25
25
  "/assets/native-C7JTKWJH-BUyIoj0P.js",
26
- "/assets/nl-B_yl9TWr.js",
27
- "/assets/ru-B8vxDDQh.js",
28
- "/assets/sv-DPT1ERzP.js",
29
- "/assets/uk-CB-i8MiC.js",
30
- "/assets/vi-s2D7ZJTc.js",
31
- "/assets/zh-DvoeAN6z.js",
26
+ "/assets/nl-O73OuDxh.js",
27
+ "/assets/ru-DqcmvJGf.js",
28
+ "/assets/sv-COb1I4y-.js",
29
+ "/assets/uk-5wB1mzGf.js",
30
+ "/assets/vi-BuK8LY7a.js",
31
+ "/assets/zh-BlmV0-AM.js",
32
32
  "/favicon.png",
33
33
  "/hero.png",
34
34
  "/icons/icon-192-maskable.png",
@@ -1,113 +0,0 @@
1
- (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={"Supported platforms":`Supported platforms`,"In review":`In review`,"Not available":`Not available`,"Install PWA":`Install PWA`,"PWA installed":`PWA installed`,"Web app":`Web app`,"Install the web app":`Install the web app`,"Keep BackToSchool on your home screen or desktop. No app store needed.":`Keep BackToSchool on your home screen or desktop. No app store needed.`,"iPhone or iPad: open this site in Safari, tap Share, then Add to Home Screen.":`iPhone or iPad: open this site in Safari, tap Share, then Add to Home Screen.`,"Android: open your browser menu and choose Install app or Add to Home screen.":`Android: open your browser menu and choose Install app or Add to Home screen.`,"Desktop: look for Install in the address bar or browser menu. The option depends on your browser.":`Desktop: look for Install in the address bar or browser menu. The option depends on your browser.`,"You can also keep using BackToSchool in this browser.":`You can also keep using BackToSchool in this browser.`,"The web app is installed. You can keep learning here.":`The web app is installed. You can keep learning here.`,"Continue learning":`Continue learning`,"The install prompt could not open. Select Web app again for installation instructions.":`The install prompt could not open. Select Web app again for installation instructions.`},t={...e,"No parties live right now.":`No parties live right now.`,"Could not refresh parties.":`Could not refresh parties.`,"Pick a server in the directory, or paste its link here.":`Pick a server in the directory, or paste its link here.`,"Interface language":`Interface language`,Language:`Language`,"Translation language":`Translation language`,"Original (auto-detect)":`Original (auto-detect)`,Play:`Play`,Pause:`Pause`,Stop:`Stop`,Next:`Next`,Previous:`Previous`,Select:`Select`,"Next/Prev":`Next/Prev`,Quit:`Quit`,"Now Playing":`Now Playing`,"Spectrum Analyser":`Spectrum Analyser`,Playlist:`Playlist`,Files:`Files`,"Open files":`Open files`,"Open folder":`Open folder`,"Add to library":`Add to library`,"Replace playlist":`Replace playlist`,Filter:`Filter`,Search:`Search`,"Nothing loaded.":`Nothing loaded.`,"Empty.":`Empty.`,"Loading…":`Loading…`,"Connecting…":`Connecting…`,Connected:`Connected`,"Not connected":`Not connected`,"No source":`No source`,Playing:`Playing`,Stopped:`Stopped`,Volume:`Volume`,Seek:`Seek`,"Full screen":`Full screen`,Download:`Download`,Share:`Share`,Copy:`Copy`,"Copy link":`Copy link`,Copied:`Copied`,Save:`Save`,Cancel:`Cancel`,Close:`Close`,Remove:`Remove`,Delete:`Delete`,Edit:`Edit`,Add:`Add`,Send:`Send`,Retry:`Retry`,Back:`Back`,"Next page":`Next page`,"Previous page":`Previous page`,"Show more":`Show more`,Panels:`Panels`,"Reset layout":`Reset layout`,Show:`Show`,Hide:`Hide`,Collapse:`Collapse`,Expand:`Expand`,"Move up":`Move up`,"Move down":`Move down`,Install:`Install`,"TV mode":`TV mode`,On:`On`,Off:`Off`,Account:`Account`,"Sign in":`Sign in`,"Sign out":`Sign out`,"Create account":`Create account`,Email:`Email`,Password:`Password`,"Forgot password?":`Forgot password?`,"Welcome back":`Welcome back`,Profile:`Profile`,Handle:`Handle`,"Your servers":`Your servers`,Server:`Server`,Connect:`Connect`,Disconnect:`Disconnect`,Directory:`Directory`,Favourites:`Favourites`,Follow:`Follow`,Unfollow:`Unfollow`,Notifications:`Notifications`,"Phone number":`Phone number`,"Save number":`Save number`,Transcript:`Transcript`,Captions:`Captions`,"Translate audio":`Translate audio`,"Audio language":`Audio language`,"Audio options":`Audio options`,"Keep background sound":`Keep background sound`,"Background level":`Background level`,"Speaker voices":`Speaker voices`,"Any voice":`Any voice`,"Male voice":`Male voice`,"Female voice":`Female voice`,"Original audio.":`Original audio.`,"Buy translated audio":`Buy translated audio`,"Audio credit":`Audio credit`,"Buy pass":`Buy pass`,Pass:`Pass`,"Pay with":`Pay with`,"Check payment":`Check payment`,"Open checkout":`Open checkout`,"Free sessions":`Free sessions`,"Usage rates and expiry":`Usage rates and expiry`,Catalogs:`Catalogs`,"Add catalog":`Add catalog`,"Catalog name":`Catalog name`,Link:`Link`,"Play link":`Play link`,"Go live":`Go live`,Publish:`Publish`,Listen:`Listen`,"Live now":`Live now`,Upcoming:`Upcoming`,Parties:`Parties`,"Join party":`Join party`,"Invite code":`Invite code`,Invite:`Invite`,Chat:`Chat`,"Chat message":`Chat message`,People:`People`,Speaker:`Speaker`,Speakers:`Speakers`,Listener:`Listener`,Moderator:`Moderator`,"Raise hand":`Raise hand`,"Hand raises":`Hand raises`,Questions:`Questions`,Resources:`Resources`,Replay:`Replay`,Schedule:`Schedule`,Event:`Event`,Host:`Host`,About:`About`,Stage:`Stage`,Title:`Title`,Description:`Description`,Topic:`Topic`,Public:`Public`,"Anyone with the link":`Anyone with the link`,"Invited people":`Invited people`,"Who can join":`Who can join`,"Date and time":`Date and time`,"Expected length":`Expected length`,Repeat:`Repeat`,"Does not repeat":`Does not repeat`,"Every day":`Every day`,"Every week":`Every week`,Homepage:`Homepage`,"Host name":`Host name`,"Profile photo URL":`Profile photo URL`,"Broadcast link":`Broadcast link`,"Edit event":`Edit event`,"Save changes":`Save changes`,"Create live":`Create live`,"Schedule class":`Schedule class`,"Start class":`Start class`,"End event":`End event`,"End session":`End session`,"Session ended":`Session ended`,"Event ended":`Event ended`,Cancelled:`Cancelled`,"Replay available":`Replay available`,Join:`Join`,"Create invite":`Create invite`,"Invite as":`Invite as`,"Watch now":`Watch now`,"Start a room":`Start a room`,"Recent replays":`Recent replays`,"Your account":`Your account`,"Write with AI":`Write with AI`,"Suggested title":`Suggested title`,"Suggested description":`Suggested description`,"Suggested topic":`Suggested topic`,"Use these details":`Use these details`,"Learn something live.":`Learn something live.`,"Screen share":`Screen share`,"Upload and broadcast":`Upload and broadcast`,Help:`Help`,"Reload Player":`Reload Player`,"Copy Bundled CLI Path":`Copy Bundled CLI Path`,"Developer tools":`Developer tools`,Undo:`Undo`,Redo:`Redo`,Cut:`Cut`,Paste:`Paste`,"Select all":`Select all`,Status:`Status`,"Activity log":`Activity log`,Admin:`Admin`,"Playback controls":`Playback controls`,"Tracks and folders":`Tracks and folders`,"Original-language captions.":`Original-language captions.`,"Skip to playback controls":`Skip to playback controls`,"Skip to playlist":`Skip to playlist`,"Skip to transcript and translated audio":`Skip to transcript and translated audio`},n={"■ STOPPED":`Stopped`,"▶ PLAYING":`Playing`,LOADING:`Loading…`,"no source":`No source`,"not connected":`Not connected`,"Now playing":`Now Playing`,"● GO LIVE":`Go live`,"● Go live":`Go live`,"⤓ Download":`Download`,"A man's voice":`Male voice`,"A woman's voice":`Female voice`,"Catalogs on this server":`Catalogs`,"Catalog folders":`Catalogs`,"Parties on this server":`Parties`,"Servers streaming now":`Directory`,"Playlist (0)":`Playlist`,"Playlist folders":`Playlist`,"Playlist pages":`Playlist`,"Filter these files":`Filter`,"Filter these entries":`Filter`,"Filter the entries":`Filter`,"Filter the playlist":`Filter`,"Create a free account":`Create account`,"Create one":`Create account`,"Create your account":`Create account`,"New here? Create an account":`Create account`,"Already have an account? Sign in":`Sign in`,"Your NixAmp account":`Your account`,"Your public handle":`Handle`,handle:`Handle`,password:`Password`,"Phone number for texts":`Phone number`,"Back to the player":`Back`,"Share what is playing":`Share`,"Share this stream":`Share`,"Link to this stream":`Link`,"Copy this stream's URL":`Copy link`,"A link to play":`Link`,"A server's link":`Server`,"Close translated audio purchase":`Close`,"Open secure checkout ↗ (new tab)":`Open checkout`,"Checking…":`Loading…`,"Browse the directory":`Directory`,"See what is live":`Live now`,"Join live":`Join`,"Raise Hand":`Raise hand`,"Hand Raises":`Hand raises`,"Hide this":`Hide`,Log:`Activity log`,"Status:":`Status`,"Nixamp player":`Playback controls`,"Nixamp audio and video player":`Playback controls`,"What is being said":`Transcript`,"The room's chat":`Chat`,Trollbox:`Chat`,"A line for the trollbox":`Chat message`,"Say something to the room…":`Chat message`,"Send it":`Send`,"Something to add":`Chat message`,"What to call it":`Catalog name`,"call it something":`Catalog name`,"An m3u catalog to add":`Catalogs`,"On this device":`Play`,"Play on this device":`Play`,"What this is":`About`,"Looking for servers…":`Loading…`,"Finding today’s conversations…":`Loading…`,"Coming up":`Upcoming`,"Listen after class":`Replay`,"Schedule live":`Schedule class`,"Schedule a class":`Schedule class`,"Plan a conversation":`Schedule class`,"Your classroom":`Event`,"Join in":`Join`,"Open a room →":`Start a room`,"Chat message":`Chat message`,"Add to the conversation":`Chat message`,"Create live":`Create live`,"Host stage":`Stage`,"Your host":`Host`,"Class host":`Host`,"Hand raised ✓":`Raise hand`,"Copied ✓":`Copied`,"Screen share with Pairux ↗":`Screen share`,"Upload & broadcast in Nixamp ↗":`Upload and broadcast`,"Open Music Folder…":`Open folder`,"Choose a music folder":`Open folder`,"Main navigation":`Panels`,"Skip to a section":`Panels`},r=[{code:`en`,label:`English`},{code:`de`,label:`Deutsch`},{code:`sv`,label:`Svenska`},{code:`es`,label:`Español`},{code:`fr`,label:`Français`},{code:`it`,label:`Italiano`},{code:`nl`,label:`Nederlands`},{code:`da`,label:`Dansk`},{code:`fi`,label:`Suomi`},{code:`ru`,label:`Русский`},{code:`uk`,label:`Українська`},{code:`cs`,label:`Čeština`},{code:`hu`,label:`Magyar`},{code:`zh`,label:`中文`},{code:`ar`,label:`العربية`},{code:`hi`,label:`हिन्दी`},{code:`vi`,label:`Tiếng Việt`},{code:`id`,label:`Bahasa Indonesia`}],i=`nixamp.ui.language`;function a(e){let t=typeof e==`string`?e.trim().toLowerCase().split(/[-_.@]/)[0]:``;return r.find(e=>e.code===t)?.code??`en`}function o(e,t=[]){let n=e=>{let t=typeof e==`string`?e.trim().toLowerCase().split(/[-_.@]/)[0]:``;return r.find(e=>e.code===t)?.code};return n(e)??t.map(n).find(Boolean)??`en`}var s=`modulepreload`,c=function(e){return`/`+e},l={},u=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=c(t,n),t=u(t),t in l)return;l[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:s,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},d={en:async()=>({default:t}),de:()=>u(()=>import(`./de-DpIL8Ees.js`),[]),sv:()=>u(()=>import(`./sv-DwuCaxjv.js`),[]),es:()=>u(()=>import(`./es-SiEP0g18.js`),[]),fr:()=>u(()=>import(`./fr-BHMNLR57.js`),[]),it:()=>u(()=>import(`./it-D5A6m68v.js`),[]),nl:()=>u(()=>import(`./nl-6C2ukGHx.js`),[]),da:()=>u(()=>import(`./da-CtdhUqOq.js`),[]),fi:()=>u(()=>import(`./fi-DFexxTi-.js`),[]),ru:()=>u(()=>import(`./ru-DBAi8Upl.js`),[]),uk:()=>u(()=>import(`./uk-DKZMfSc9.js`),[]),cs:()=>u(()=>import(`./cs-O-6iUq7L.js`),[]),hu:()=>u(()=>import(`./hu-WxKh5kIZ.js`),[]),zh:()=>u(()=>import(`./zh-yfl-mwgz.js`),[]),ar:()=>u(()=>import(`./ar-qWtdkIOw.js`),[]),hi:()=>u(()=>import(`./hi-Bbvbrvch.js`),[]),vi:()=>u(()=>import(`./vi-CEACVAuf.js`),[]),id:()=>u(()=>import(`./id-BMS_sYt_.js`),[])},f=new class{load;code=`en`;get language(){return this.code}constructor(e=async e=>(await d[e]()).default){this.load=e}messages=t;revision=0;numberFormats=new Map;dateFormats=new Map;listeners=new Set;async setLanguage(e){let t=++this.revision,n=a(e),r=await this.load(n);if(t!==this.revision)return!1;this.code=n,this.messages=r,this.numberFormats.clear(),this.dateFormats.clear();for(let e of this.listeners)e();return!0}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}text(e,t={}){let r=this.language!==`en`&&Object.hasOwn(n,e)?n[e]:e,i=Object.hasOwn(this.messages,r)?this.messages[r]:e;return this.language!==`en`&&Object.hasOwn(n,e)&&(i=(e.match(/^[▶■●⤓]\s+/)?.[0]??``)+i+(e.endsWith(` ✓`)?` ✓`:``)),i.replace(/\{([\w]+)\}/g,(e,n)=>Object.hasOwn(t,n)?String(t[n]):e)}number(e,t){let n=JSON.stringify(t??{}),r=this.numberFormats.get(n);return r||(this.numberFormats.size>=64&&this.numberFormats.clear(),r=new Intl.NumberFormat(this.language,t),this.numberFormats.set(n,r)),r.format(e)}date(e,t){let n=JSON.stringify(t??{}),r=this.dateFormats.get(n);return r||(this.dateFormats.size>=64&&this.dateFormats.clear(),r=new Intl.DateTimeFormat(this.language,t),this.dateFormats.set(n,r)),r.format(e)}get direction(){return this.language===`ar`?`rtl`:`ltr`}},p=(e,t)=>f.text(e,t),m=new Map;function h(e,t,n){let r=m.get(e);r||(r=new Map,m.set(e,r)),r.set(t,n),n()}function g(e,t){e instanceof Element&&e.removeAttribute(`data-i18n`);let n=``,r;return h(e,`text`,()=>{if(r!==void 0&&e.textContent!==r){m.get(e)?.delete(`text`);return}n=t()??``,r=n,e.textContent!==n&&(e.textContent=n)}),n}var ee=[`aria-label`,`title`,`placeholder`,`data-title`],te=[`[data-i18n]`,...ee.map(e=>`[data-i18n-${e}]`)].join(`,`);function ne(e){let t=[...e.querySelectorAll(te)];e instanceof HTMLElement&&e.matches(te)&&t.unshift(e);for(let e of t){if(e.closest(`[translate="no"], [contenteditable="true"]`))continue;let t=e.getAttribute(`data-i18n`);if(t){let n=e.textContent;h(e,`text`,()=>{if(e.textContent!==n){m.get(e)?.delete(`text`),e.removeAttribute(`data-i18n`);return}n=p(t),e.textContent!==n&&(e.textContent=n)})}for(let t of ee){let n=e.getAttribute(`data-i18n-${t}`);if(n){let r=e.getAttribute(t);h(e,t,()=>{if(e.getAttribute(t)!==r){m.get(e)?.delete(t),e.removeAttribute(`data-i18n-${t}`);return}r=p(n),e.getAttribute(t)!==r&&e.setAttribute(t,r)})}}}}function _(){document.documentElement.lang=f.language,document.documentElement.dir=f.direction;for(let[e,t]of m){if(!e.isConnected){m.delete(e);continue}for(let e of t.values())e()}for(let e of document.querySelectorAll(`[data-ui-language]`))e.value=f.language}var re=0;async function ie(e){let t=++re;try{if(!await f.setLanguage(e)||t!==re)return;try{localStorage.setItem(i,f.language)}catch{}window.nixampLanguage?.set(f.language).catch(()=>{})}catch{_()}}async function ae(){let e=o(null,navigator.languages);try{e=o(await window.nixampLanguage?.get()??localStorage.getItem(`nixamp.ui.language`),navigator.languages)}catch{}for(let e of document.querySelectorAll(`[data-ui-language]`))e.replaceChildren(...r.map(e=>{let t=new Option(e.label,e.code);return t.lang=e.code,t.dir=`auto`,t})),e.addEventListener(`change`,()=>{ie(e.value)});ne(document),_(),f.onChange(_),new MutationObserver(e=>{for(let t of e)for(let e of t.addedNodes)e instanceof Element&&ne(e);for(let e of m.keys())e.isConnected||m.delete(e)}).observe(document.body,{childList:!0,subtree:!0}),window.addEventListener(`storage`,e=>{e.key===`nixamp.ui.language`&&f.setLanguage(o(e.newValue,navigator.languages)).catch(()=>{})}),window.nixampLanguage?.subscribe(e=>{e!==f.language&&f.setLanguage(e).catch(()=>{})});try{await f.setLanguage(e)}catch{}}var v=null,y=!1,b=window.matchMedia(`(display-mode: standalone)`).matches||!!navigator.standalone;window.addEventListener(`beforeinstallprompt`,e=>{e.preventDefault(),v=e}),window.addEventListener(`appinstalled`,()=>{b=!0,v=null;let e=document.querySelector(`[data-pwa-label]`);e&&g(e,()=>p(`PWA installed`))});function oe(){let e=b?`PWA installed`:`Install PWA`;return`<div class="platforms" role="group" aria-label="Supported platforms" data-i18n-aria-label="Supported platforms">
2
- <div class="platform-badges">
3
- <div class="platform-badge platform-fire-tv">
4
- <img src="/platform-icons/amazon.svg" width="28" height="28" alt="" />
5
- <span><small data-i18n="In review">In review</small><strong>Amazon Fire TV</strong><small>Fire TV Stick</small></span>
6
- </div>
7
- <button class="platform-badge platform-pwa" type="button" data-install-pwa>
8
- <img src="/platform-icons/pwa.svg" width="40" height="40" alt="" />
9
- <span><small data-pwa-label data-i18n="${e}">${e}</small><strong data-i18n="Web app">Web app</strong></span>
10
- </button>
11
- <button class="platform-badge platform-unavailable" type="button" disabled>
12
- <img src="/platform-icons/apple.svg" width="28" height="28" alt="" />
13
- <span><small data-i18n="Not available">Not available</small><strong>App Store</strong></span>
14
- </button>
15
- <button class="platform-badge platform-unavailable" type="button" disabled>
16
- <img src="/platform-icons/google-play.svg" width="28" height="28" alt="" />
17
- <span><small data-i18n="Not available">Not available</small><strong>Google Play</strong></span>
18
- </button>
19
- </div>
20
- </div>`}function se(){let e=document.querySelector(`#pwa-dialog`);e.querySelector(`[data-pwa-instructions]`).hidden=b,e.querySelector(`[data-pwa-installed]`).hidden=!b,e.open||e.showModal()}document.addEventListener(`click`,e=>{let t=e.target.closest(`[data-install-pwa]`);if(!t||y)return;if(b||!v){se();return}let n=v;v=null,y=!0,t.setAttribute(`aria-busy`,`true`),n.prompt().catch(()=>{let e=document.querySelector(`#pwa-status`);e&&g(e,()=>p(`The install prompt could not open. Select Web app again for installation instructions.`))}).finally(()=>{y=!1,t.removeAttribute(`aria-busy`)})}),document.querySelector(`#pwa-dialog`).addEventListener(`close`,()=>{document.querySelector(`[data-install-pwa]`)?.focus({preventScroll:!0})});var x=class extends Error{status;constructor(e,t){super(e),this.status=t}};async function S(e,t={}){let n=await fetch(e,{credentials:`same-origin`,...t,headers:{...t.body?{"content-type":`application/json`}:{},...t.headers}}),r={};try{r=await n.json()}catch{r={}}if(!n.ok)throw new x(String((r&&typeof r==`object`?r:{}).error??`That did not work.`),n.status);return r}function C(e,t,n=`POST`){return S(e,{method:n,body:JSON.stringify(t)})}function ce(e,t,n){let r=e.querySelector(`#event-ai-write`),i=e.querySelector(`#event-ai-cancel`),a=e.querySelector(`#event-ai-apply`),o=e.querySelector(`#event-ai-preview`),s=e.querySelector(`#event-ai-status`),c={title:e.querySelector(`#event-ai-title`),description:e.querySelector(`#event-ai-description`),topic:e.querySelector(`#event-ai-topic`)},l=null,u=null,d=null,f=t=>e.elements.namedItem(t).value,m=()=>({title:f(`title`),description:f(`description`),topic:f(`topic`),hostName:f(`hostName`),startsAt:f(`startsAt`),timezone:n(),duration:f(`expectedDurationMinutes`),recurrence:f(`recurrence`)});function h(){l?.abort(),l=null,u=null,d=null,o.hidden=!0,o.removeAttribute(`aria-busy`),i.hidden=!0,g(r,()=>p(`Write with AI`)),r.removeAttribute(`aria-disabled`),g(a,()=>p(`Use these details`)),a.setAttribute(`aria-disabled`,`true`),s.textContent=``;for(let e of Object.values(c))e.value=``}return r.addEventListener(`click`,async()=>{if(l||e.getAttribute(`aria-busy`)===`true`)return;let n=m();if(![n.title,n.description,n.topic].some(e=>e.trim())){s.textContent=`Add a title, description, or topic first. Your words become the prompt.`;return}let f=new AbortController;l=f,d=n,u=null,r.setAttribute(`aria-disabled`,`true`),r.textContent=`Writing…`,i.hidden=!1,g(i,()=>p(`Cancel`)),o.hidden=!1,o.setAttribute(`aria-busy`,`true`),g(a,()=>p(`Use these details`)),a.setAttribute(`aria-disabled`,`true`);for(let e of Object.values(c))e.value=``;s.textContent=`Writing a draft from your event details… You can keep editing.`;try{let e=await S(`/api/v1/events/ai-draft`,{method:`POST`,body:JSON.stringify(n),signal:f.signal});if(l!==f||!t.open)return;u=e.draft;for(let e of[`title`,`description`,`topic`])c[e].value=u[e];a.removeAttribute(`aria-disabled`),s.textContent=`Draft ready. Review it below, then use these details if you like them.`}catch(e){if(l!==f||f.signal.aborted)return;s.textContent=e instanceof Error?e.message:`Could not write a draft. Your text is unchanged.`}finally{l===f&&(l=null,o.removeAttribute(`aria-busy`),r.removeAttribute(`aria-disabled`),r.textContent=`Write again`,i.textContent=`Discard draft`)}}),i.addEventListener(`click`,()=>{let e=!!l;h(),s.textContent=e?`Draft cancelled. Your text is unchanged.`:`Draft discarded. Your text is unchanged.`,i.hidden=!1,i.textContent=`Dismiss`}),a.addEventListener(`click`,()=>{if(u&&d&&!l&&a.getAttribute(`aria-disabled`)!==`true`){if(JSON.stringify(m())!==JSON.stringify(d)){s.textContent=`Your inputs changed while this draft was being written. Click Write again to include those edits, or copy text from the preview.`;return}for(let t of[`title`,`description`,`topic`])e.elements.namedItem(t).value=u[t];a.setAttribute(`aria-disabled`,`true`),a.textContent=`Details applied`,s.textContent=`Draft applied to your form. Review your event and save when you’re ready.`}}),t.addEventListener(`close`,h),e.addEventListener(`submit`,()=>{l&&h()}),{reset:h}}function w(e){if(typeof e!=`string`||e.length>2048)return null;try{let t=new URL(e);return t.protocol!==`https:`||t.username||t.password?null:t.href}catch{return null}}function le(e){let t=w(e);if(!t)return null;let n=new URL(t);if(!n.port&&(n.hostname===`pairux.com`||n.hostname===`www.pairux.com`)){let e=/^\/(?:l|join|embed)\/([A-Za-z0-9_-]{1,64})\/?$/.exec(n.pathname)?.[1];return e?{provider:`pairux`,url:`https://pairux.com/l/${e}`,embed:`https://pairux.com/embed/${e}`,join:`https://pairux.com/join/${e}`}:null}if(!n.port&&(n.hostname===`nixamp.com`||n.hostname===`www.nixamp.com`)){if(n.pathname!==`/`)return null;let e=n.searchParams.get(`url`)||``,t=n.searchParams.get(`play`)||(e?`live`:``);if(/\/admin\//i.test(e)||/\/admin\//i.test(t)||n.searchParams.has(`key`)||e&&!w(e)||!/^(?:live|channel:[^\s]+|track:\d+)$/.test(t)&&!w(t))return null;let r=new URL(`https://nixamp.com/`);e&&r.searchParams.set(`url`,e),r.searchParams.set(`play`,t);let i=r.href;return r.searchParams.set(`embed`,`1`),{provider:`nixamp`,url:i,embed:r.href,join:i}}if(n.hostname.endsWith(`.nixamp.com`)&&/^\/view\/[A-Za-z0-9_-]+\/?$/.test(n.pathname)&&!n.search){let e=new URL(`https://nixamp.com/`);return e.searchParams.set(`url`,n.href),e.searchParams.set(`play`,`live`),le(e.href)}return null}ae();var T=document.querySelector(`#main`),E=document.querySelector(`#account-button`),D=document.querySelector(`#account-dialog`),O=document.querySelector(`#account-form`),ue=document.querySelector(`#account-title`),de=document.querySelector(`#account-copy`),k=document.querySelector(`#account-error`),fe=document.querySelector(`#account-mode`),A=document.querySelector(`#event-dialog`),j=document.querySelector(`#event-form`),pe=document.querySelector(`#event-form-title`),me=document.querySelector(`#event-kicker`),M=document.querySelector(`#event-submit`),N=document.querySelector(`#event-error`),P=document.querySelector(`#schedule-fields`),F=null,I=!1,L=!1,R=null,z=!1,B=null,V=null,H=null,he=ce(j,A,()=>R?.timezone??Intl.DateTimeFormat().resolvedOptions().timeZone??`UTC`),ge=new WeakMap;function _e(e,t){ge.get(e)===t||e.contains(document.activeElement)||(e.innerHTML=t,ge.set(e,t))}function U(e){return String(e??``).replaceAll(`&`,`&amp;`).replaceAll(`<`,`&lt;`).replaceAll(`>`,`&gt;`).replaceAll(`"`,`&quot;`).replaceAll(`'`,`&#039;`)}function ve(e){let t=document.querySelector(`#event-update`);t&&t.textContent!==e&&(t.textContent=e),document.querySelector(`.class-update`)?.removeAttribute(`hidden`)}function W(e){return`/live/${encodeURIComponent(e.slug)}`}function G(){let e=new URLSearchParams(location.search).get(`invite`);return e?`?invite=${encodeURIComponent(e)}`:``}function K(e,t={}){return e?new Intl.DateTimeFormat(f.language,{weekday:`short`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,...t}).format(new Date(e)):`Time to be announced`}function q(e){return e.status===`live`?p(`Live now`):e.status===`ended`?e.recordingId?p(`Replay available`):p(`Event ended`):e.status===`cancelled`?p(`Cancelled`):K(e.startsAt)}function ye(e){return H?.permissions.includes(e)??!1}function J(){g(E,()=>F?F.email.split(`@`)[0]||p(`Account`):p(`Sign in`)),E.classList.toggle(`signed-in`,!!F)}async function be(){try{F=(await S(`/api/v1/auth/me`)).account}catch{F=null}J()}function Y(e){if(F){D.showModal(),ue.textContent=`Signed in as ${F.email}`,de.textContent=`Your BackToSchool identity is your NixAmp account.`,O.hidden=!0;return}B=e??null,O.hidden=!1,k.textContent=``,xe(),D.showModal()}function xe(){g(ue,()=>p(I?`Create your account`:`Welcome back`)),de.textContent=I?`One NixAmp account works here and everywhere NixAmp goes.`:`Sign in to host, chat, or raise your hand.`,g(fe,()=>p(I?`Already have an account? Sign in`:`New here? Create an account`)),document.querySelector(`#account-forgot`).hidden=I;let e=O.elements.namedItem(`password`);e.autocomplete=I?`new-password`:`current-password`,g(O.querySelector(`button[type="submit"]`),()=>p(I?`Create account`:`Sign in`))}function X(e){let t=new Date(e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)}T${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function Z(e,t=null){if(!F){Y(()=>Z(e,t));return}if(z)return;R=t,he.reset(),j.reset(),L=e===`scheduled`,P.hidden=!L,g(pe,()=>p(t?`Edit event`:L?`Schedule a class`:`Go live`)),g(me,()=>t?p(`Your classroom`):`Teach something live`),g(M,()=>p(t?`Save changes`:L?`Schedule class`:`Create live`)),N.textContent=``;let n=j.elements.namedItem(`startsAt`);if(n.required=L&&(!t||!!t.startsAt),t){for(let e of[`title`,`description`,`topic`,`visibility`,`broadcastUrl`,`hostName`,`homepageUrl`,`avatarUrl`,`recurrence`])j.elements.namedItem(e).value=t[e]??(e===`recurrence`?`none`:``);for(let e of[`chatEnabled`,`handRaiseEnabled`])j.elements.namedItem(e).checked=t[e];t.startsAt&&(n.value=X(t.startsAt));let e=j.elements.namedItem(`expectedDurationMinutes`),r=String(t.expectedDurationMinutes??60);[...e.options].some(e=>e.value===r)||e.add(new Option(`${r} minutes`,r)),e.value=r}else if(L){let e=new Date(Date.now()+36e5);e.setMinutes(Math.ceil(e.getMinutes()/15)*15,0,0),n.value=X(e.toISOString())}let r=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`;document.querySelector(`#schedule-timezone`).textContent=`Date and time are shown in ${r}.`+(t?.recurrence?` This class repeats in ${t.timezone}.`:``),A.showModal()}function Q(e){history.pushState(null,``,e),$()}function Se(e){let t=e.status===`live`||e.status===`starting`;return`
21
- <article class="event-card ${t?`is-live`:``}">
22
- <a href="${W(e)}" data-link>
23
- <div class="event-card-top">
24
- <span class="status-pill ${t?`status-live`:``}">${t?`Live`:U(q(e))}</span>
25
- ${e.topic?`<span class="topic">${U(e.topic)}</span>`:``}
26
- </div>
27
- <h3>${U(e.title)}</h3>
28
- <p>${U(e.description||`Drop in and learn something with us.`)}</p>
29
- <span class="event-link">${t?`Watch live`:`See event`}<span aria-hidden="true">→</span></span>
30
- </a>
31
- </article>`}async function Ce(){document.title=`BackToSchool.help — Learn something live`;let{events:e}=await S(`/api/v1/events?limit=60`).catch(()=>({events:[]})),t=e.filter(e=>e.status===`live`||e.status===`starting`),n=e.filter(e=>e.status===`scheduled`||e.status===`draft`),r=e.filter(e=>e.status===`ended`&&e.recordingId);T.innerHTML=`
32
- <section class="hero">
33
- <div class="hero-copy">
34
- <span class="eyebrow">Go back to school whenever you want</span>
35
- <h1>Learn something<br /><em>live.</em></h1>
36
- <p>Watch a live lesson, follow a screen share, and ask questions as you learn.</p>
37
- <div class="hero-actions">
38
- <button class="button button-primary" type="button" data-event-mode="live"><span class="live-dot"></span><span data-i18n="Go live"> Go live</span></button>
39
- <button class="button button-secondary" type="button" data-event-mode="scheduled" data-i18n="Schedule live">Schedule live</button>
40
- </div>
41
- <p class="hero-note">Watch classes and screen shares. No account required.</p>
42
- ${oe()}
43
- </div>
44
- <div class="hero-board" aria-label="What is happening today">
45
- <span class="tape tape-one" aria-hidden="true"></span>
46
- <span class="tape tape-two" aria-hidden="true"></span>
47
- <div class="board-rule"></div>
48
- <span class="board-label">Today’s lesson</span>
49
- <strong>${U(t[0]?.title??n[0]?.title??`The best teachers are curious people`)}</strong>
50
- <p>${t[0]?`Happening right now`:n[0]?q(n[0]):`Host the first live conversation`}</p>
51
- ${t[0]?`<a href="${W(t[0])}" data-link class="board-action"><span data-i18n="Watch now">Watch now </span><span>↗</span></a>`:`<button type="button" data-event-mode="live" class="board-action"><span data-i18n="Start a room">Start a room </span><span>↗</span></button>`}
52
- <div class="board-doodles" aria-hidden="true"><span>?</span><span>✦</span><span>≈</span></div>
53
- </div>
54
- </section>
55
-
56
- <section class="event-section" id="live">
57
- <div class="section-heading">
58
- <div><span class="eyebrow">Walk in anytime</span><h2 data-i18n="Live now">Live now</h2></div>
59
- <span class="section-count">${t.length} ${t.length===1?`room`:`rooms`}</span>
60
- </div>
61
- <div class="event-grid">
62
- ${t.length?t.map(Se).join(``):`<div class="empty-card"><span>☕</span><h3>The halls are quiet.</h3><p>Start a live and give people something worth dropping into.</p><button class="text-button" data-event-mode="live" data-i18n="Open a room →">Open a room →</button></div>`}
63
- </div>
64
- </section>
65
-
66
- <section class="event-section event-section-tint" id="upcoming">
67
- <div class="section-heading">
68
- <div><span class="eyebrow">Save your seat</span><h2 data-i18n="Coming up">Coming up</h2></div>
69
- </div>
70
- <div class="upcoming-list">
71
- ${n.length?n.map(e=>`
72
- <a class="upcoming-row" href="${W(e)}" data-link>
73
- <time>${U(K(e.startsAt,{weekday:`short`,month:`short`,day:`numeric`}))}</time>
74
- <span><strong>${U(e.title)}</strong><small>${U(e.topic||`Live conversation`)}</small></span>
75
- <span class="row-arrow">→</span>
76
- </a>`).join(``):`<p class="empty-line">Nothing scheduled yet. Your idea could be next.</p>`}
77
- </div>
78
- </section>
79
-
80
- ${r.length?`<section class="event-section"><div class="section-heading"><div><span class="eyebrow" data-i18n="Listen after class">Listen after class</span><h2 data-i18n="Recent replays">Recent replays</h2></div></div><div class="event-grid">${r.map(Se).join(``)}</div></section>`:``}
81
-
82
- <section class="host-callout">
83
- <span class="eyebrow">Know a thing or two?</span>
84
- <h2>Someone wants to hear it.</h2>
85
- <p>You don’t need a studio or a syllabus. Bring an idea and start talking.</p>
86
- <button class="button button-light" type="button" data-event-mode="scheduled" data-i18n="Plan a conversation">Plan a conversation</button>
87
- </section>`}function we(e){let t=le(e.broadcastUrl);if(t)return`<div class="classroom-video"><iframe src="${U(t.embed)}" title="${U(e.title)} broadcast" allow="autoplay; fullscreen; picture-in-picture; encrypted-media" allowfullscreen referrerpolicy="strict-origin-when-cross-origin"></iframe></div>
88
- <p class="broadcast-caption"><a class="button button-secondary" href="${U(t.join)}" target="_blank" rel="noopener noreferrer">${t.provider===`pairux`?`Join screen share on Pairux`:`Open video in Nixamp`} ↗</a></p>`;let n=G(),r=e.recordingId&&e.status===`ended`?`/api/v1/recordings/${encodeURIComponent(e.recordingId)}`:`/api/channels/${encodeURIComponent(e.roomId)}${n}`,i=e.status===`live`||!!e.recordingId;return`
89
- <div class="listen-card ${i?``:`waiting`}">
90
- <div class="sound-orbit" aria-hidden="true"><span></span><span></span><span></span><b>▶</b></div>
91
- <div>
92
- <span class="eyebrow">${e.status===`live`?`On air now`:e.recordingId?p(`Replay`):`The room opens soon`}</span>
93
- <h2>${i?e.status===`live`?`Listen live`:`Listen again`:`We’ll see you here.`}</h2>
94
- <p id="player-note">${i?`Press play and you’re in. No sign-up, no setup.`:U(q(e))}</p>
95
- ${i?`<button class="button button-primary listen-button" type="button" data-listen><span class="live-dot"></span> ${e.status===`live`?`Listen live`:`Play replay`}</button><audio id="event-audio" preload="none" src="${U(r)}" controls></audio>`:``}
96
- </div>
97
- </div>`}function Te(e){return e.chatEnabled?`
98
- <div id="chat-messages" class="chat-messages"><p class="muted">Loading the conversation…</p></div>
99
- ${F?`<form id="chat-form" class="inline-form"><input name="body" maxlength="1000" placeholder="Add to the conversation" data-i18n-placeholder="Add to the conversation" aria-label="Chat message" data-i18n-aria-label="Chat message" required /><button class="button button-small" type="submit" data-i18n="Send">Send</button></form>`:`<button class="text-button" type="button" data-sign-in>Sign in to join the chat →</button>`}`:`<div class="panel-empty">Chat is off for this event.</div>`}function Ee(e,t){switch(e){case`event-header`:return`<div class="event-heading"><span class="status-pill ${t.status===`live`?`status-live`:``}">${U(q(t))}</span>${t.topic?`<span class="topic">${U(t.topic)}</span>`:``}<h1>${U(t.title)}</h1><p>${U(t.description||`A live conversation powered by NixAmp.`)}</p></div>`;case`player`:return we(t);case`stage`:return`<div class="stage-card"><span class="stage-avatar">${U(t.title.slice(0,1).toUpperCase())}</span><div><span class="eyebrow" data-i18n="Host stage">Host stage</span><h2>${U(t.title)}</h2><p id="broadcast-note">${t.status===`live`?`This event is live.`:`Start when you’re ready.`}</p></div></div>`;case`host`:return`<div class="host-line">${t.avatarUrl?`<img class="avatar host-avatar" src="${U(t.avatarUrl)}" alt="" referrerpolicy="no-referrer" />`:`<span class="avatar">${U((t.hostName||t.title).slice(0,1))}</span>`}<div><small data-i18n="Your host">Your host</small><strong>${U(t.hostName||p(`Class host`))}</strong>${t.homepageUrl?`<a href="${U(t.homepageUrl)}" target="_blank" rel="noopener noreferrer">Visit homepage ↗</a>`:``}</div></div>`;case`about`:return`<p class="reading-copy">${U(t.description||`Come listen, learn, and ask a question live.`)}</p>${t.topic?`<span class="topic topic-large">${U(t.topic)}</span>`:``}`;case`join`:return F?`<p class="panel-empty">You’re signed in and ready to participate.</p>`:`<div class="join-line"><div><strong>Want to ask something?</strong><p>Join with your NixAmp account.</p></div><button class="button button-secondary" type="button" data-sign-in data-i18n="Join in">Join in</button></div>`;case`chat`:return Te(t);case`questions`:return`<div class="panel-empty">Questions shared in chat can be brought onto the stage.</div>`;case`resources`:return`<div class="panel-empty">The host hasn’t added resources yet.</div>`;case`participants`:return`<div class="metric"><strong id="listener-count">—</strong><span>listening now</span></div>`;case`speakers`:return`<div class="people-row"><span class="avatar">H</span><span><strong data-i18n="Host">Host</strong><small>On stage</small></span></div>`;case`raise-hand`:return t.handRaiseEnabled?`<div class="join-line"><div><strong>Have something to add?</strong><p>Let the host know you’d like to speak.</p></div><button class="button button-secondary" type="button" data-raise-hand data-i18n="Raise hand">Raise hand</button></div>`:null;case`hand-raises`:return`<div id="hand-raises" class="hand-raises"><p class="muted">No hands raised.</p></div>`;case`invite`:return`<form id="invite-form" class="form-stack compact"><label><span data-i18n="Email">Email</span><input name="email" type="email" placeholder="someone@example.com" required /></label><label><span data-i18n="Invite as">Invite as</span><select name="role"><option value="listener" data-i18n="Listener">Listener</option><option value="speaker" data-i18n="Speaker">Speaker</option><option value="moderator" data-i18n="Moderator">Moderator</option></select></label><button class="button button-small" type="submit" data-i18n="Create invite">Create invite</button><p id="invite-note" class="form-note"></p></form>`;case`share`:return`<div class="share-box"><input id="share-url" value="${U(location.href)}" readonly aria-label="Event URL" /><button class="button button-small" type="button" data-copy data-i18n="Copy link">Copy link</button></div>`;case`event-controls`:return`<div class="control-stack">
100
- <a href="https://pairux.com/dashboard" target="_blank" rel="noopener noreferrer" data-i18n="Screen share with Pairux ↗">Screen share with Pairux ↗</a>
101
- <a href="https://nixamp.com/#files-panel" target="_blank" rel="noopener noreferrer" data-i18n="Upload &amp; broadcast in Nixamp ↗">Upload &amp; broadcast in Nixamp ↗</a>
102
- ${[`draft`,`scheduled`,`starting`].includes(t.status)?`<button class="button button-primary" type="button" data-start-event data-i18n="Start class">Start class</button>`:``}
103
- <button class="button button-danger" type="button" data-end-event ${t.status===`live`?``:`hidden`}>${t.recurrence?`End session & schedule next`:p(`End event`)}</button>
104
- <p id="broadcast-note" class="form-note" role="status">${t.broadcastUrl?`Start the broadcast in Pairux or Nixamp, then start the class here.`:`Add your broadcast link with Edit event.`}</p>
105
- </div>`;case`schedule`:return`<div class="metric"><strong>${U(K(t.startsAt,{timeZone:t.timezone}))}</strong><span>${U(t.timezone)}${t.recurrence?` · Repeats ${t.recurrence}`:``}</span></div>`;case`recording`:return`<div class="control-line"><span>${t.recordingEnabled?`Recording requested`:`Recording is off`}</span><span class="status-dot ${t.recordingEnabled?`on`:``}"></span></div>`;default:return null}}async function De(e){let t=await S(`/api/v1/events/${encodeURIComponent(e)}${G()}`);V?.(),V=null,H=t;let n=t.event;document.title=`${n.title} — BackToSchool.help`,document.querySelector(`meta[name="description"]`)?.setAttribute(`content`,n.description||`Listen to ${n.title} live on BackToSchool.help.`),document.querySelector(`meta[property="og:title"]`)?.setAttribute(`content`,n.title),document.querySelector(`meta[property="og:description"]`)?.setAttribute(`content`,n.description||p(`Learn something live.`));let r=(e,t)=>`<section class="event-panel panel-${e}"><h2 class="panel-title">${t}</h2>${Ee(e,n)??``}</section>`;T.innerHTML=`
106
- <div class="event-shell">
107
- <div class="event-toolbar"><a class="back-link" href="/" data-link>← Explore more lives</a>${F?.id===n.ownerId?`<button class="button button-secondary" type="button" data-edit-event data-i18n="Edit event">Edit event</button>`:``}</div>
108
- <div class="class-update" hidden><p id="event-update" role="status" class="form-note"></p><button class="text-button" data-refresh-event>Refresh class details</button><button class="text-button" data-dismiss-update>Dismiss</button></div>
109
- <div class="event-layout">
110
- <div class="region region-primary">${r(`event-header`,`Live classroom`)}${r(`player`,`Watch class`)}${r(`chat`,`Class chat`)}</div>
111
- <aside class="region region-secondary">${r(`host`,`Meet your host`)}${r(`schedule`,p(`Schedule`))}${F?.id===n.ownerId?r(`event-controls`,`Host controls`):r(`join`,`Join the class`)}${F?.id===n.ownerId&&n.visibility===`private`?`<details class="event-panel"><summary>Invite students</summary>${Ee(`invite`,n)}</details>`:``}${r(`share`,`Share class`)}${F?.id===n.ownerId&&n.handRaiseEnabled?r(`hand-raises`,`Raised hands`):n.handRaiseEnabled?r(`raise-hand`,`Ask a question`):``}</aside>
112
- </div>
113
- </div>`,Oe(n)}function Oe(e){document.querySelector(`[data-listen]`)?.addEventListener(`click`,async e=>{let t=e.currentTarget,n=document.querySelector(`#event-audio`);if(n){t.disabled=!0,g(t,()=>p(`Connecting…`));try{await n.play(),t.textContent=`You’re listening`,document.querySelector(`#player-note`).textContent=`Live audio from this NixAmp room.`}catch{t.disabled=!1,t.textContent=`Try listening again`,document.querySelector(`#player-note`).textContent=`The host may still be getting ready. Try again in a moment.`}}});let t=document.querySelector(`#chat-form`);t?.addEventListener(`submit`,n=>{n.preventDefault();let r=t.elements.namedItem(`body`),i=r.value.trim();i&&(r.value=``,C(`/api/v1/events/${encodeURIComponent(e.id)}/chat`,{body:i}).then(()=>ke(e)).catch(e=>{r.placeholder=e instanceof Error?e.message:`Could not send`}))});let n=document.querySelector(`#invite-form`);n?.addEventListener(`submit`,t=>{t.preventDefault();let r=new FormData(n),i=document.querySelector(`#invite-note`);i.textContent=`Creating invite…`,S(`/api/v1/events/${encodeURIComponent(e.id)}/invitations`,{method:`POST`,body:JSON.stringify({email:r.get(`email`),role:r.get(`role`)})}).then(async({inviteUrl:e,sent:t})=>{await navigator.clipboard?.writeText(e).catch(()=>void 0),i.textContent=t?`Invite sent. The link is copied too.`:`Invite link copied: ${e}`,n.reset()}).catch(e=>{i.textContent=e instanceof Error?e.message:`Could not invite`})}),document.querySelector(`[data-raise-hand]`)?.addEventListener(`click`,t=>{let n=t.currentTarget;n.disabled=!0,C(`/api/v1/events/${encodeURIComponent(e.id)}/hand-raises`,{}).then(()=>{g(n,()=>p(`Hand raised ✓`))}).catch(e=>{n.disabled=!1,n.textContent=e instanceof x&&e.status===401?`Sign in to raise hand`:`Try again`})}),document.querySelector(`[data-edit-event]`)?.addEventListener(`click`,()=>Z(`scheduled`,H.event)),document.querySelector(`[data-start-event]`)?.addEventListener(`click`,()=>void Me()),document.querySelector(`[data-dismiss-update]`)?.addEventListener(`click`,()=>document.querySelector(`.class-update`).hidden=!0),document.querySelector(`[data-refresh-event]`)?.addEventListener(`click`,()=>Q(W(e)+G())),document.querySelector(`[data-end-event]`)?.addEventListener(`click`,()=>void Ne()),document.querySelector(`[data-copy]`)?.addEventListener(`click`,async e=>{await navigator.clipboard.writeText(location.href),g(e.currentTarget,()=>p(`Copied ✓`))});let r=0,i=0;e.chatEnabled&&(ke(e),r=window.setInterval(()=>void ke(e),4e3),i=ye(`event.moderate`)?window.setInterval(()=>void Ae(e),3e3):0,Ae(e));let a=e.version,o=window.setInterval(()=>void S(`/api/v1/events/${encodeURIComponent(e.id)}${G()}`).then(e=>{if(e.event.version===H?.event.version||e.event.version===a)return;a=e.event.version;let t=document.querySelector(`.event-heading .status-pill`),n=q(e.event);t&&t.textContent!==n&&(t.textContent=n,t.classList.toggle(`status-live`,e.event.status===`live`)),ve(`The host updated this class. Refresh the details when you’re ready.`)}).catch(()=>void 0),5e3);V=()=>{clearInterval(r),clearInterval(i),clearInterval(o)},je(e)}async function ke(e){let t=document.querySelector(`#chat-messages`);if(t)try{let{messages:n}=await S(`/api/v1/events/${encodeURIComponent(e.id)}/chat${G()}`);_e(t,n.length?n.map(e=>`<div class="chat-message"><span class="avatar avatar-small">${U(e.authorName.slice(0,1).toUpperCase())}</span><p><strong>${U(e.authorName)}</strong><span>${U(e.body)}</span></p></div>`).join(``):`<p class="muted">No messages yet. Say hello when you’re ready.</p>`)}catch{t.innerHTML=`<p class="muted">Chat is taking a break. You can still watch the class.</p>`}}async function Ae(e){let t=document.querySelector(`#hand-raises`);if(t&&ye(`event.moderate`))try{let{handRaises:n}=await S(`/api/v1/events/${encodeURIComponent(e.id)}/hand-raises`);if(t.contains(document.activeElement))return;_e(t,n.length?n.map(e=>`<div class="raise-row"><span><strong>${U(e.displayName)}</strong><small>${U(e.state)}</small></span><div><button class="text-button" data-hand="${U(e.accountId)}" data-state="invited"><span data-i18n="Invite">Invite</span></button><button class="text-button" data-hand="${U(e.accountId)}" data-state="dismissed">Dismiss</button></div></div>`).join(``):`<p class="muted">No hands raised.</p>`)}catch{t.contains(document.activeElement)||(t.innerHTML=`<p class="muted">Could not refresh hand raises.</p>`)}}async function je(e){let t=document.querySelector(`#listener-count`);if(t)try{let{channels:n}=await S(`/api/channels`);t.textContent=String(n.find(t=>t.id===e.roomId)?.listeners??0)}catch{t.textContent=`0`}}async function Me(){if(!H)return;let e=document.querySelector(`#broadcast-note`),t=document.querySelector(`[data-start-event]`);if(!H.event.broadcastUrl){e&&(e.textContent=`Add a Pairux or Nixamp broadcast link with Edit event first.`);return}if(t?.getAttribute(`aria-disabled`)!==`true`){t?.setAttribute(`aria-disabled`,`true`);try{H=await S(`/api/v1/events/${encodeURIComponent(H.event.id)}/start`,{method:`POST`,body:JSON.stringify({version:H.event.version})}),t&&(t.textContent=`Class is live`),document.querySelector(`[data-end-event]`)?.removeAttribute(`hidden`);let n=document.querySelector(`.event-heading .status-pill`);n&&(g(n,()=>p(`Live now`)),n.classList.add(`status-live`)),e&&(e.textContent=`Your class is live. Viewers can join using this page.`)}catch(n){t?.removeAttribute(`aria-disabled`),e&&(e.textContent=n instanceof Error?n.message:`Could not start the class.`)}}}async function Ne(){let e=document.querySelector(`[data-end-event]`);if(!H||e?.getAttribute(`aria-disabled`)===`true`)return;e?.setAttribute(`aria-disabled`,`true`);let t=H.event;try{let e=await S(`/api/v1/events/${encodeURIComponent(t.id)}/end`,{method:`POST`,body:JSON.stringify({version:t.version})});H=e;let n=document.querySelector(`.event-heading .status-pill`);n&&(n.textContent=q(e.event),n.classList.remove(`status-live`)),await fetch(`/api/channels/${encodeURIComponent(t.roomId)}`,{method:`DELETE`,credentials:`same-origin`});let r=document.querySelector(`#broadcast-note`);r&&(r.textContent=e.event.recurrence?`Session ended. Next class: ${K(e.event.startsAt)}. End the broadcast in Pairux or Nixamp too.`:`Event ended. End the broadcast in Pairux or Nixamp too.`);let i=document.querySelector(`[data-end-event]`);i&&(g(i,()=>p(`Session ended`)),i.setAttribute(`aria-disabled`,`true`)),ve(`This session has ended. Refresh to see the latest schedule.`)}catch(t){e?.removeAttribute(`aria-disabled`);let n=document.querySelector(`#broadcast-note`);n&&(n.textContent=t instanceof Error?t.message:`Could not end the event.`)}}async function $(){V?.(),V=null,H=null;let e=/^\/live\/([^/]+)\/?$/.exec(location.pathname);try{e?await De(decodeURIComponent(e[1])):await Ce()}catch(e){T.innerHTML=`<section class="error-page"><span class="eyebrow">Class dismissed?</span><h1>${U(e instanceof x&&e.status===404?`That live event isn’t available.`:`We couldn’t open this page.`)}</h1><p>${U(e instanceof Error?e.message:`Try again in a moment.`)}</p><a href="/" data-link class="button button-primary">Back to live events</a></section>`}}E.addEventListener(`click`,()=>{if(!F){Y();return}confirm(`Signed in as ${F.email}. Sign out?`)&&S(`/api/v1/auth/logout`,{method:`POST`}).finally(()=>{F=null,J(),$()})}),fe.addEventListener(`click`,()=>{I=!I,k.textContent=``,xe()}),O.addEventListener(`submit`,e=>{e.preventDefault();let t=new FormData(O),n=O.querySelector(`button[type="submit"]`);n.disabled=!0,k.textContent=``,S(`/api/v1/auth/${I?`signup`:`login`}`,{method:`POST`,body:JSON.stringify({email:t.get(`email`),password:t.get(`password`)})}).then(e=>{F=e.account,J(),O.reset(),D.close();let t=B;B=null,t?t():$()}).catch(e=>{k.textContent=e instanceof Error?e.message:`That did not work.`}).finally(()=>{n.disabled=!1})}),j.querySelector(`[name="recurrence"]`)?.addEventListener(`change`,()=>{j.elements.namedItem(`recurrence`).value!==`none`&&(L=!0,P.hidden=!1,j.elements.namedItem(`startsAt`).required=!0)}),j.addEventListener(`submit`,e=>{if(e.preventDefault(),z)return;let t=new FormData(j),n=R,r=String(t.get(`startsAt`)??``),i=!n?.startsAt||r!==X(n.startsAt),a=String(t.get(`recurrence`));if(a!==`none`&&!r&&!L){L=!0,P.hidden=!1,j.elements.namedItem(`startsAt`).required=!0,N.textContent=`Choose the first class date and time for this recurring schedule.`;return}z=!0,M.setAttribute(`aria-disabled`,`true`),j.setAttribute(`aria-busy`,`true`),N.textContent=``;let o={title:t.get(`title`),description:t.get(`description`),topic:t.get(`topic`),visibility:t.get(`visibility`),broadcastUrl:t.get(`broadcastUrl`),hostName:t.get(`hostName`),homepageUrl:t.get(`homepageUrl`),avatarUrl:t.get(`avatarUrl`),recurrence:a,chatEnabled:t.get(`chatEnabled`)===`on`,handRaiseEnabled:t.get(`handRaiseEnabled`)===`on`,...n?{version:n.version}:{kind:`class`},...L?{startsAt:r?i?new Date(r).toISOString():n.startsAt:null,timezone:i?Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`:n.timezone,expectedDurationMinutes:Number(t.get(`expectedDurationMinutes`))}:{}};S(n?`/api/v1/events/${encodeURIComponent(n.id)}`:`/api/v1/events`,{method:n?`PATCH`:`POST`,body:JSON.stringify(o)}).then(async e=>{n?(await De(e.event.slug),A.close(),document.querySelector(`[data-edit-event]`)?.focus({preventScroll:!0})):(A.close(),Q(W(e.event))),j.reset(),R=null}).catch(e=>{N.textContent=e instanceof Error?e.message:`Could not save the event.`}).finally(()=>{z=!1,M.removeAttribute(`aria-disabled`),j.removeAttribute(`aria-busy`)})}),document.addEventListener(`click`,e=>{let t=e.target,n=t.closest(`a[data-link]`);if(n&&n.origin===location.origin){e.preventDefault(),Q(`${n.pathname}${n.search}`);return}let r=t.closest(`[data-event-mode]`)?.dataset.eventMode;(r===`live`||r===`scheduled`)&&Z(r),t.closest(`[data-sign-in]`)&&Y(()=>void $());let i=t.closest(`[data-close]`);i&&i.closest(`dialog`)?.close();let a=t.closest(`[data-hand]`);a&&H&&(a.disabled=!0,C(`/api/v1/events/${encodeURIComponent(H.event.id)}/hand-raises/${encodeURIComponent(a.dataset.hand??``)}`,{state:a.dataset.state},`PATCH`).then(()=>Ae(H.event)).finally(()=>{a.disabled=!1}))}),window.addEventListener(`popstate`,()=>void $()),be().then(()=>$());export{e as t};