2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
/* empty css */import{d as oe,A as G,c as n,a,e as k,t as p,F as j,y as X,h as se,i as Ue,x as T,s as d,r as m,k as Fe,o as t,m as xe,K as Re,B as fe,_ as Te,q as Ge,U as Xe,S as ne,V as Je,W as Qe,l as et}from"./index-DHNZ-nL_.js";import{p as me}from"./presentations-B5eMs5_8.js";import{s as pe,f as je,g as ke,h as tt,i as at,j as nt,k as st,l as Ce,m as ot,q as lt,u as it,v as rt,o as ct,D as ut,d as dt,R as vt}from"./realtime-BCasip2-.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";const mt={class:"drawer"},ft=["id","aria-label"],pt={class:"sheet-head"},kt=["disabled"],yt={class:"sheet-title"},bt={class:"title"},wt={key:0,class:"subtitle"},ht=["disabled"],gt=["innerHTML"],zt={key:1,class:"empty"},_t=["innerHTML"],$t={key:1,class:"empty"},Tt=["data-current","aria-current","onClick"],jt={class:"num"},Ct={class:"row-title"},St={key:0,class:"tag"},xt={key:1,class:"now"},Rt={class:"list-foot"},Bt={key:0,class:"hint"},Et={class:"bar","aria-label":"Szuflady na telefonie"},Lt=["disabled","aria-expanded","aria-controls","onClick"],Pt=oe({__name:"RemoteDrawer",props:{deck:{},state:{},live:{type:Boolean},cursor:{},open:{},disabled:{type:Boolean},wakeLockMissing:{type:Boolean}},emits:["goto","cursor","open","close"],setup(l,{emit:S}){const s=l,r=S,i=[{kind:"say",label:"Powiedz"},{kind:"notes",label:"Notatki"},{kind:"slides",label:"Slajdy"}],_=d(()=>s.deck.slides.length),C=d(()=>tt(s.deck,s.state,s.live,s.cursor)),$=d(()=>s.live&&s.state?s.state.number:s.deck.slides[pe(s.deck.slides,s.cursor)]?.number??0),z=d(()=>pe(s.deck.slides,s.cursor)),w=d(()=>s.live&&s.state?s.state.number:s.deck.slides[z.value]?.number??s.cursor),L=d(()=>{const f=s.live&&s.state?.special?"s":"";return`${w.value}${f}`});function c(f){return f?/<img\b/i.test(f)?!0:f.replace(/<[^>]*>/g,"").replace(/ | /g," ").trim()!=="":!1}const N=d(()=>c(C.value?.say_html)?je(C.value?.say_html??""):""),I=d(()=>c(C.value?.notes_html)?je(C.value?.notes_html??""):""),P=d(()=>s.open==="say"?`Powiedz · slajd ${w.value}`:s.open==="notes"?`Notatki · slajd ${w.value}`:"Slajdy"),x=d(()=>s.open==="slides"?"":s.live?"Widzisz tylko Ty":`Przeglądasz na telefonie · slajd ${z.value+1} z ${_.value}`),b=d(()=>!s.live&&(s.open==="say"||s.open==="notes")),V=d(()=>z.value>0),A=d(()=>z.value<_.value-1),h=d(()=>s.deck.slides.map(f=>({number:f.number,title:ke(f),special:!!f.special})));function K(f){s.disabled||(s.open===f?r("close"):r("open",f))}function q(f){const y=s.deck.slides[z.value+f];y&&r("cursor",y.number)}const R=m(null),E=m(null);return G([L,()=>s.open],()=>{R.value&&(R.value.scrollTop=0)}),G(()=>s.open,async f=>{if(f!=="slides")return;await Re(),E.value?.querySelector('[data-current="true"]')?.scrollIntoView({block:"center"})}),(f,y)=>{const J=Fe("router-link");return t(),n("div",mt,[l.open?(t(),n("section",{key:0,id:`remote-drawer-${l.open}`,class:"sheet","aria-label":P.value},[a("header",pt,[b.value?(t(),n("button",{key:0,type:"button",class:"icon-btn","aria-label":"Poprzedni slajd na telefonie",disabled:!V.value,onClick:y[0]||(y[0]=v=>q(-1))}," ‹ ",8,kt)):k("",!0),a("div",yt,[a("p",bt,p(P.value),1),x.value?(t(),n("p",wt,p(x.value),1)):k("",!0)]),b.value?(t(),n("button",{key:1,type:"button",class:"icon-btn","aria-label":"Następny slajd na telefonie",disabled:!A.value,onClick:y[1]||(y[1]=v=>q(1))}," › ",8,ht)):k("",!0),a("button",{type:"button",class:"close-btn",onClick:y[2]||(y[2]=v=>r("close"))},"Zamknij")]),a("div",{ref_key:"body",ref:R,class:T(["sheet-body",{reading:l.open!=="slides"}])},[l.open==="say"?(t(),n(j,{key:0},[N.value?(t(),n("div",{key:0,class:"text",innerHTML:N.value},null,8,gt)):(t(),n("p",zt,"Brak tekstu do powiedzenia na tym slajdzie."))],64)):l.open==="notes"?(t(),n(j,{key:1},[I.value?(t(),n("div",{key:0,class:"text",innerHTML:I.value},null,8,_t)):(t(),n("p",$t,"Brak notatek do tego slajdu."))],64)):(t(),n(j,{key:2},[a("ol",{ref_key:"list",ref:E,class:"list"},[(t(!0),n(j,null,X(h.value,v=>(t(),n("li",{key:v.number},[a("button",{type:"button",class:"row","data-current":v.number===$.value?"true":void 0,"aria-current":v.number===$.value?"true":void 0,onClick:ie=>r("goto",v.number)},[a("span",jt,p(v.number),1),a("span",Ct,p(v.title),1),v.special?(t(),n("span",St,"+ specjalny")):k("",!0),v.number===$.value?(t(),n("span",xt,"teraz")):k("",!0)],8,Tt)]))),128))],512),a("footer",Rt,[se(J,{class:"back-link",to:{name:"my-presentations"}},{default:Ue(()=>[...y[3]||(y[3]=[xe("Wróć do moich prezentacji",-1)])]),_:1}),l.wakeLockMissing?(t(),n("p",Bt,"Ta przeglądarka nie pozwala zablokować wygaszania ekranu.")):k("",!0)])],64))],2)],8,ft)):k("",!0),a("nav",Et,[(t(),n(j,null,X(i,v=>a("button",{key:v.kind,type:"button",class:T(["tab",{open:l.open===v.kind}]),disabled:l.disabled,"aria-expanded":l.open===v.kind?"true":"false","aria-controls":`remote-drawer-${v.kind}`,onClick:ie=>K(v.kind)},p(v.label),11,Lt)),64))])])}}}),Dt=le(Pt,[["__scopeId","data-v-9f920f42"]]),Mt={key:0,class:"eyebrow"},Nt={class:"grid nav"},It=["disabled","aria-busy","onClick"],qt={key:1,class:"grid fn"},Vt=["disabled","aria-pressed","aria-busy","onClick"],At={class:"label"},Kt=oe({__name:"RemoteKeys",props:{state:{},live:{type:Boolean},busy:{},compact:{type:Boolean}},emits:["press","reset"],setup(l,{emit:S}){const s=l,r=S,i=d(()=>at(s.state,s.live)),_=d(()=>i.value.slice(0,2)),C=d(()=>i.value.slice(2));function $(w){return(s.busy[w.action]??0)>0}function z(w){w.enabled&&(w.action==="clock-reset"?r("reset"):r("press",w.action))}return(w,L)=>(t(),n("section",{class:T(["keys",{compact:l.compact}]),"aria-label":"Klawisze na komputerze"},[l.compact?k("",!0):(t(),n("p",Mt,"Klawisze na komputerze")),a("div",Nt,[(t(!0),n(j,null,X(_.value,c=>(t(),n("button",{key:c.action,type:"button",class:T(["key nav-key",c.action]),disabled:!c.enabled,"aria-busy":$(c)?"true":void 0,onClick:N=>z(c)},[c.action==="prev"?(t(),fe(Te,{key:0,class:"arrow",name:"arrow-left"})):k("",!0),a("span",null,p(c.label),1),c.action==="next"?(t(),fe(Te,{key:1,class:"arrow",name:"arrow-right"})):k("",!0)],10,It))),128))]),l.compact?k("",!0):(t(),n("div",qt,[(t(!0),n(j,null,X(C.value,c=>(t(),n("button",{key:c.action,type:"button",class:T(["key fn-key",{wide:c.action==="first"||c.action==="last"}]),disabled:!c.enabled,"aria-pressed":c.pressed===null?void 0:c.pressed?"true":"false","aria-busy":$(c)?"true":void 0,onClick:N=>z(c)},[a("span",At,p(c.label),1),a("kbd",null,p(c.kbd),1)],10,Vt))),128))]))],2))}}),Se=le(Kt,[["__scopeId","data-v-840f2c56"]]),Ht={class:"top"},Wt={class:"row row-title"},Ot={class:"deck-title"},Yt={class:"row row-slide","aria-live":"polite"},Zt={class:"counter"},Ut={key:0,class:"slide-title"},Ft={key:1,class:"slide-title waiting"},Gt={class:"row row-chips","aria-label":"Na komputerze"},Xt={class:"row row-clock"},Jt={key:0,class:"idle"},Qt={key:0,class:"chip"},ea={key:2,class:"clock"},ta=oe({__name:"RemoteTopBar",props:{deckTitle:{},status:{},live:{type:Boolean},counter:{},slideTitle:{},chips:{},clock:{}},setup(l){const S=l,s=d(()=>nt(S.status));return(r,i)=>(t(),n("header",Ht,[a("div",Wt,[a("p",Ot,p(l.deckTitle),1),a("p",{class:T(["conn",{on:l.status==="live"}])},[i[0]||(i[0]=a("span",{class:"dot","aria-hidden":"true"},null,-1)),xe(p(s.value),1)],2)]),a("div",Yt,[a("p",Zt,p(l.counter),1),l.live?(t(),n("p",Ut,p(l.slideTitle),1)):(t(),n("p",Ft,"Czekam na wersję mówcy"))]),a("ul",Gt,[l.live?(t(!0),n(j,{key:0},X(l.chips,_=>(t(),n("li",{key:_,class:T(["chip",{khaki:_==="Specjalny"}])},p(_),3))),128)):k("",!0)]),a("div",Xt,[l.live&&l.clock&&l.clock.idle?(t(),n("p",Jt,"Zegar ruszy przy pierwszej zmianie slajdu")):l.live&&l.clock?(t(),n(j,{key:1},[a("p",{class:T(["clock",{paused:l.clock.paused}])},[i[2]||(i[2]=a("span",{class:"lbl"},"Slajd",-1)),a("b",{class:T({over:l.clock.slideOver})},p(l.clock.slide),3),i[3]||(i[3]=a("span",{class:"sep","aria-hidden":"true"},"·",-1)),i[4]||(i[4]=a("span",{class:"lbl"},"Całość",-1)),a("b",{class:T({over:l.clock.totalOver})},p(l.clock.total),3),l.clock.pace?(t(),n(j,{key:0},[i[1]||(i[1]=a("span",{class:"sep","aria-hidden":"true"},"·",-1)),a("span",{class:T(["pace",{late:l.clock.late}])},p(l.clock.pace),3)],64)):k("",!0)],2),l.clock.paused?(t(),n("span",Qt,"Pauza")):k("",!0)],64)):(t(),n("p",ea,[...i[5]||(i[5]=[a("b",null,"—",-1)])]))])]))}}),aa=le(ta,[["__scopeId","data-v-382e11de"]]),na={key:0,class:"remote-status remote-label"},sa={key:1,class:"remote-status"},oa={key:0,class:"remote-alert",role:"alert"},la={class:"remote-middle"},ia={key:0,class:"remote-notice"},ra={key:0,class:"remote-notice"},ca={class:"remote-dialog-body"},ua="Nie udało się wczytać prezentacji. Sprawdź połączenie z internetem i spróbuj ponownie.",da="Za dużo żądań w krótkim czasie. Odczekaj minutę i spróbuj ponownie.",F="Pilot niedostępny. Spróbuję połączyć się ponownie za 10 s.",va=oe({__name:"PresentationRemoteView",props:{slug:{}},setup(l){const S=l,s=et(),r=m("pending"),i=m(null),_=m("");let C=0,$=0,z=null,w="",L=0,c=0,N=0,I=!1,P=0,x=Ce();const b=m(null),V=m(0),A=m(Date.now()),h=m(!1),K=m("connecting"),q=m(!1),R=m(!1),E=m(!1),f=d(()=>E.value?"unavailable":h.value?"live":K.value==="connected"&&R.value?"waiting":q.value?"reconnecting":"connecting"),y=d(()=>i.value?.slides.length??0),J=d(()=>{const e=b.value;return!i.value||!e?0:pe(i.value.slides,e.number)}),v=d(()=>{const e=b.value;return h.value&&e?`${e.number} / ${e.total}`:`— / ${y.value}`}),ie=d(()=>{const e=b.value,o=i.value?.slides[J.value];return!e||!o?"":e.special&&o.special?ke(o.special):ke(o)}),Be=d(()=>b.value?lt(b.value):[]),Ee=d(()=>{const e=b.value;return!i.value||!e?null:it(rt(e,i.value.slides.map(o=>o.seconds),i.value.target_seconds,J.value,V.value,A.value))}),D=m(null),H=m(1);G(b,e=>{e&&!e.bye&&e.number>0&&(H.value=e.number)});function Le(e){y.value!==0&&(D.value=e)}function Pe(){D.value=null}function De(e){H.value=e}function Me(e){if(h.value){ue(),ce("goto",e),D.value=null;return}H.value=e,D.value="say"}function re(){A.value=Date.now(),h.value=x.live(A.value)}function Ne(e){const o=dt(e);!o||o.event!==vt||x.observe(o.payload,Date.now())&&(b.value=x.current(),V.value=x.receivedAt(),re(),o.payload.bye&&ee())}function Q(){C&&window.clearTimeout(C),C=0}const B=m("");let M=0;function ye(e,o=4e3){B.value=e,M&&window.clearTimeout(M),M=0,o>0&&(M=window.setTimeout(()=>{B.value="",M=0},o))}function W(){M&&window.clearTimeout(M),M=0,B.value=""}const O=m({});function be(e,o){const u=Math.max(0,(O.value[e]??0)+o);O.value={...O.value,[e]:u}}async function ce(e,o){const u={action:e,tab:x.actionTab()};o!==void 0&&(u.number=o),be(e,1);try{await me.remote(S.slug,u),B.value&&B.value!==F&&W()}catch(g){ye(ot(g instanceof ne?g.status:-1))}finally{be(e,-1)}}function ee(){R.value&&me.remote(S.slug,{action:"sync",tab:""}).catch(()=>{})}function Ie(){R.value=!0,E.value=!1,B.value===F&&W(),x.release(),ee()}function qe(e){K.value=e,e==="connected"?q.value=!0:R.value=!1}function Ve(e){if(R.value=!1,E.value=!0,e!==403||I){B.value===F&&W();return}I=!0,ye(F,0),P=window.setTimeout(()=>{P=0,z?.resubscribe()},ut)}function ue(){typeof navigator.vibrate=="function"&&navigator.vibrate(15)}function we(e){h.value&&(ue(),ce(e))}const Y=m(null),he=m(null);function Ae(){if(!h.value)return;ue();const e=Y.value;e&&(e.open||e.showModal(),Re(()=>he.value?.focus()))}function te(){Y.value?.open&&Y.value.close()}function Ke(){te(),h.value&&ce("clock-reset")}function He(e){e.target===Y.value&&te()}let Z=null,de=!1;const ae=m(!1);async function ge(){const e=navigator.wakeLock;if(!e||typeof e.request!="function"){ae.value=!0;return}if(!(Z&&!Z.released))try{const o=await e.request("screen");if(!de){o.release().catch(()=>{});return}Z=o,ae.value=!1}catch{ae.value=!0}}function We(){const e=Z;Z=null,e&&!e.released&&e.release().catch(()=>{})}function ze(){document.visibilityState==="visible"&&(ge(),ee())}function ve(){L+=1,z?.close(),z=null,w="",R.value=!1,K.value="connecting",q.value=!1,E.value=!1,I=!1,P&&window.clearTimeout(P),P=0,B.value===F&&W(),x=Ce(),b.value=null,V.value=0,re()}async function Oe(e){ve();const o=L;w=e;try{const u=()=>o===L,g=await ct(e,{onPublication:U=>{u()&&Ne(U)},onSubscribed:()=>{u()&&Ie()},onConnection:U=>{u()&&qe(U)},onDenied:U=>{u()&&Ve(U)},onUnavailable:()=>{u()&&(E.value=!0)}});if(o!==L){g.close();return}z=g}catch{o===L&&(E.value=!0)}}function Ye(){const e=r.value==="ready"?i.value?.remote_channel??"":"";if(e!==w){if(!e){ve();return}Oe(e)}}async function _e(e){const o=++$;Q(),r.value="pending",i.value=null,_.value="",C=window.setTimeout(()=>{o===$&&r.value==="pending"&&(r.value="loading")},200);try{const u=await me.speaker(e);if(o!==$)return;Q();const g=u.slides??[];i.value={...u,slides:g},Je(e),H.value=g[0]?.number??1,D.value=null,document.title=u.title?`Pilot · ${u.title}`:"Pilot · BM II°",r.value=g.length===0?"empty":"ready"}catch(u){if(o!==$)return;if(Q(),u instanceof ne&&u.status===404){Qe(e),await s.replace({name:"my-presentations",query:{denied:"1"}});return}if(u instanceof ne&&u.status===401)return;_.value=u instanceof ne&&u.status===429?da:ua,r.value="error"}}function Ze(){_e(S.slug)}function $e(e,o,u){if(document.querySelector(`meta[data-deck-remote="${u}"]`))return;const g=document.createElement("meta");g.name=e,g.content=o,g.dataset.deckRemote=u,document.head.appendChild(g)}return G(()=>S.slug,e=>{_e(e)},{immediate:!0}),G([i,r],()=>{Ye()}),Ge(()=>{de=!0,document.documentElement.classList.add("deck-remote"),$e("robots","noindex","robots"),$e("theme-color","#141a18","theme"),document.addEventListener("visibilitychange",ze),c=window.setInterval(()=>{document.visibilityState==="visible"&&ee()},st),N=window.setInterval(re,1e3),ge()}),Xe(()=>{de=!1,$+=1,Q(),W(),ve(),te(),We(),window.clearInterval(c),window.clearInterval(N),document.removeEventListener("visibilitychange",ze),document.documentElement.classList.remove("deck-remote"),document.querySelectorAll("meta[data-deck-remote]").forEach(e=>e.remove())}),(e,o)=>(t(),n("main",{class:T(["remote",{"remote-page":r.value==="ready"||r.value==="empty","remote-drawer-open":r.value==="ready"&&D.value}])},[r.value==="loading"?(t(),n("p",na,"Wczytywanie pilota…")):r.value==="error"?(t(),n("div",sa,[a("p",null,p(_.value),1),a("button",{type:"button",class:"remote-retry",onClick:Ze},"Spróbuj ponownie")])):(r.value==="ready"||r.value==="empty")&&i.value?(t(),n(j,{key:2},[se(aa,{class:"remote-top","deck-title":i.value.title,status:r.value==="empty"?"waiting":f.value,live:r.value==="ready"&&h.value,counter:v.value,"slide-title":ie.value,chips:Be.value,clock:Ee.value},null,8,["deck-title","status","live","counter","slide-title","chips","clock"]),B.value?(t(),n("p",oa,p(B.value),1)):k("",!0),a("div",la,[r.value==="empty"?(t(),n("div",ia,[...o[0]||(o[0]=[a("p",{class:"remote-notice-head"},"Ta prezentacja nie ma jeszcze slajdów.",-1),a("p",{class:"remote-muted"},"Dodaj slajdy w panelu administracyjnym i otwórz pilota ponownie.",-1)])])):D.value?(t(),fe(Se,{key:1,compact:"",state:b.value,live:h.value,busy:O.value,onPress:we},null,8,["state","live","busy"])):(t(),n(j,{key:2},[h.value?k("",!0):(t(),n("div",ra,[...o[1]||(o[1]=[a("p",{class:"remote-notice-head"},"Otwórz wersję mówcy na komputerze",-1),a("p",{class:"remote-muted"}," Klawisze zadziałają, gdy wersja mówcy tej prezentacji będzie otwarta na komputerze. Powiedz i notatki możesz czytać już teraz. ",-1)])])),se(Se,{state:b.value,live:h.value,busy:O.value,onPress:we,onReset:Ae},null,8,["state","live","busy"])],64))]),se(Dt,{deck:i.value,state:b.value,live:r.value==="ready"&&h.value,cursor:H.value,open:D.value,disabled:y.value===0,"wake-lock-missing":ae.value,onOpen:Le,onClose:Pe,onCursor:De,onGoto:Me},null,8,["deck","state","live","cursor","open","disabled","wake-lock-missing"])],64)):k("",!0),a("dialog",{ref_key:"resetDialog",ref:Y,class:"remote-dialog","aria-labelledby":"remote-reset-title","aria-describedby":"remote-reset-body",onClick:He},[a("div",ca,[o[2]||(o[2]=a("p",{id:"remote-reset-title",class:"remote-dialog-title"},"Wyzerować zegar?",-1)),o[3]||(o[3]=a("p",{id:"remote-reset-body",class:"remote-muted"}," Czas całości i wszystkich slajdów wróci do zera, a zegar ruszy przy następnej zmianie slajdu. ",-1)),a("button",{type:"button",class:"remote-dialog-btn remote-dialog-danger",onClick:Ke},"Zeruj zegar"),a("button",{ref_key:"resetCancel",ref:he,type:"button",class:"remote-dialog-btn",autofocus:"",onClick:te},"Anuluj",512)])],512)],2))}}),ba=le(va,[["__scopeId","data-v-534bc4ac"]]);export{ba as default};
|