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