Files
sm-bm-plugin/public/assets/PresentationRemoteView-DCKt4fp6.js
2026-10-08 18:14:15 +02:00

2 lines
5.2 KiB
JavaScript

import{d as H,A,q as J,S as X,c as s,a as o,t as h,F as ee,e as N,r as u,s as te,o as l,Q as _,l as ne}from"./index-CvyVvvnt.js";import{p as P}from"./presentations-B2_nwGC8.js";import{e as oe,f as L,o as ae,b as ie,R as re}from"./realtime-DuTUbwvj.js";import{_ as se}from"./_plugin-vue_export-helper-DlAUqK2U.js";const le={class:"remote"},ce={key:0,class:"remote-status"},ue={key:1,class:"remote-status"},de={key:2,class:"remote-status"},me={class:"remote-top"},pe={class:"remote-title"},ve={class:"remote-counter","aria-live":"polite"},fe={key:0,class:"remote-alert",role:"alert"},we={key:1,class:"remote-offline"},ye={class:"remote-keys","aria-label":"Klawisze na komputerze"},be=["disabled"],ke=["disabled"],he="Nie udało się wczytać prezentacji. Sprawdź połączenie z internetem i spróbuj ponownie.",_e="Za dużo żądań w krótkim czasie. Odczekaj minutę i spróbuj ponownie.",ze=H({__name:"PresentationRemoteView",props:{slug:{}},setup(B){const w=B,M=ne(),a=u("pending"),i=u(null),z=u(""),d=u("");let y=0,m=0,r=0,j=null,E="",b=0,p=!1,q=0,x=0,v=L();const g=u(null),c=u(!1),O=te(()=>{const e=i.value?.slides.length??0,t=g.value;return c.value&&t?`${t.number} / ${t.total}`:`— / ${e}`});function S(){c.value=v.live(Date.now())}function F(e){const t=ie(e);!t||t.event!==re||v.observe(t.payload,Date.now())&&(g.value=v.current(),S())}function k(){y&&window.clearTimeout(y),y=0}function K(e){const t=e instanceof _?e.status:-1;return t===0?"Nie wysłano: brak połączenia z internetem. Naciśnij ponownie.":t===429?"Za dużo naciśnięć naraz. Odczekaj chwilę i naciśnij ponownie.":t===503?"Pilot jest teraz niedostępny. Steruj klawiaturą na komputerze.":"Nie wysłano polecenia. Naciśnij ponownie."}function W(e){d.value=e,r&&window.clearTimeout(r),r=window.setTimeout(()=>{d.value="",r=0},4e3)}function D(){r&&window.clearTimeout(r),r=0,d.value=""}async function Z(e){try{await P.remote(w.slug,{action:e,tab:v.actionTab()}),D()}catch(t){W(K(t))}}function T(){p&&P.remote(w.slug,{action:"sync",tab:""}).catch(()=>{})}function Q(){p=!0,T()}function I(){document.visibilityState==="visible"&&T()}function V(e){c.value&&(navigator.vibrate?.(15),Z(e))}function R(){b+=1,j?.close(),j=null,E="",p=!1,v=L(),g.value=null,S()}async function U(e){R();const t=b;E=e;try{const n=()=>t===b,f=await ae(e,{onPublication:C=>{n()&&F(C)},onSubscribed:()=>{n()&&Q()},onConnection:C=>{n()&&C!=="connected"&&(p=!1)},onDenied:()=>{n()&&(p=!1)}});if(t!==b){f.close();return}j=f}catch{}}function Y(){const e=a.value==="ready"?i.value?.remote_channel??"":"";if(e!==E){if(!e){R();return}U(e)}}async function $(e){const t=++m;k(),a.value="pending",i.value=null,z.value="",y=window.setTimeout(()=>{t===m&&a.value==="pending"&&(a.value="loading")},200);try{const n=await P.speaker(e);if(t!==m)return;k();const f=n.slides??[];i.value={...n,slides:f},document.title=n.title?`Pilot · ${n.title}`:"Pilot · BM II°",a.value=f.length===0?"empty":"ready"}catch(n){if(t!==m)return;if(k(),n instanceof _&&n.status===404){await M.replace({name:"my-presentations",query:{denied:"1"}});return}if(n instanceof _&&n.status===401)return;z.value=n instanceof _&&n.status===429?_e:he,a.value="error"}}function G(){$(w.slug)}return A(()=>w.slug,e=>{$(e)},{immediate:!0}),A([i,a],()=>{Y()}),J(()=>{if(document.documentElement.classList.add("deck-remote"),!document.querySelector('meta[data-deck-remote="robots"]')){const e=document.createElement("meta");e.name="robots",e.content="noindex",e.dataset.deckRemote="robots",document.head.appendChild(e)}if(!document.querySelector('meta[data-deck-remote="theme"]')){const e=document.createElement("meta");e.name="theme-color",e.content="#141a18",e.dataset.deckRemote="theme",document.head.appendChild(e)}document.addEventListener("visibilitychange",I),q=window.setInterval(()=>{document.visibilityState==="visible"&&T()},oe),x=window.setInterval(S,1e3)}),X(()=>{m+=1,k(),D(),R(),window.clearInterval(q),window.clearInterval(x),document.removeEventListener("visibilitychange",I),document.documentElement.classList.remove("deck-remote"),document.querySelectorAll("meta[data-deck-remote]").forEach(e=>e.remove())}),(e,t)=>(l(),s("main",le,[a.value==="loading"?(l(),s("p",ce,"Wczytywanie pilota…")):a.value==="error"?(l(),s("div",ue,[o("p",null,h(z.value),1),o("button",{type:"button",class:"remote-retry",onClick:G},"Spróbuj ponownie")])):a.value==="empty"?(l(),s("div",de,[...t[2]||(t[2]=[o("p",null,"Ta prezentacja nie ma jeszcze slajdów.",-1),o("p",{class:"remote-muted"},"Dodaj slajdy w panelu administracyjnym i otwórz pilota ponownie.",-1)])])):a.value==="ready"&&i.value?(l(),s(ee,{key:3},[o("header",me,[o("p",pe,h(i.value.title),1),o("p",ve,h(O.value),1)]),d.value?(l(),s("p",fe,h(d.value),1)):N("",!0),c.value?N("",!0):(l(),s("div",we,[...t[3]||(t[3]=[o("p",{class:"remote-offline-head"},"Otwórz wersję mówcy na komputerze",-1),o("p",{class:"remote-muted"},"Klawisze zadziałają, gdy wersja mówcy tej prezentacji będzie otwarta na komputerze.",-1)])])),o("section",ye,[o("button",{type:"button",class:"remote-key",disabled:!c.value,onClick:t[0]||(t[0]=n=>V("prev"))},"Wstecz",8,be),o("button",{type:"button",class:"remote-key remote-next",disabled:!c.value,onClick:t[1]||(t[1]=n=>V("next"))},"Dalej",8,ke)])],64)):N("",!0)]))}}),Te=se(ze,[["__scopeId","data-v-c232a88e"]]);export{Te as default};