Files
sm-bm-plugin/public/assets/PresentationRemoteView-CSLV8dxL.js

2 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 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(/&nbsp;|&#160;/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};