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

2 lines
27 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.
import{c as sn}from"./engine-DDeQk6Ow.js";import{d as Te,c as u,b as c,C as I,i as ne,_ as Ye,t as _,f as E,x as p,n as r,U as he,F as M,E as ge,j as on,r as g,l as ln,p as Ct,Z as Et,s as Qe,o as rn,aH as cn,A as be,aI as un,aJ as dn,m as vn,aM as fn}from"./index-DbE8VwcP.js";import{p as R}from"./presentations-Cv1n4E0C.js";import{_ as _e}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{s as et,e as wt,f as tt,g as mn,h as pn,i as yn,d as bn,r as kn,j as wn,k as Fe,a as hn,l as ht,S as gn,H as Tn,m as _n,o as Sn,D as Cn,b as En,R as zn,n as $n}from"./remote-aOKX75Mt.js";import{f as Nn,C as Ue,p as jn,i as An,j as Dn,d as xn}from"./log-Xlt5jeld.js";import{c as Rn,a as In}from"./clock-4r1aA6KU.js";const Mn={key:0,class:"cast"},Ln=["aria-busy"],Pn={class:"cast-label"},Bn={key:0,class:"cast-tv"},On={key:0,"aria-live":"polite"},Vn=Te({__name:"CastButton",props:{availability:{},deviceName:{},tv:{}},emits:["request","log"],setup(n,{emit:y}){const t=n,o=y,s=p(()=>t.availability!=="off"&&t.availability!=="no-devices"),i=p(()=>t.availability==="connected"),d=p(()=>t.availability==="connecting"?"Łączę z TV…":t.availability==="connected"?t.deviceName?`Na TV: ${t.deviceName}`:"Na TV":"Wyświetl na TV"),v=p(()=>{const k=t.tv;return k?k.phase==="waiting"?"TV: czekam na bilet":k.phase==="loading"?"TV: przygotowuję slajdy…":k.phase==="error"?"TV: błąd, połącz ponownie":`TV: slajd ${k.number}${k.special?" · specjalny":""}`:""});return(k,z)=>s.value?(r(),u("div",Mn,[c("button",{type:"button",class:I(["cast-row",{on:i.value}]),"aria-busy":n.availability==="connecting"?"true":void 0,onClick:z[0]||(z[0]=$=>o("request"))},[ne(Ye,{class:"cast-icon",name:"cast"}),c("span",Pn,_(d.value),1)],10,Ln),i.value?(r(),u("p",Bn,[v.value?(r(),u("span",On,_(v.value),1)):E("",!0),c("button",{type:"button",class:"cast-log",onClick:z[1]||(z[1]=$=>o("log"))},"Dziennik TV")])):E("",!0)])):E("",!0)}}),qn=_e(Vn,[["__scopeId","data-v-ff9a5014"]]),Hn={class:"drawer"},Wn=["id","aria-label"],Kn={class:"sheet-head"},Gn=["disabled"],Jn={class:"sheet-title"},Zn={class:"title"},Fn={key:0,class:"subtitle"},Un=["disabled"],Xn=["innerHTML"],Yn={key:1,class:"empty"},Qn=["innerHTML"],ea={key:1,class:"empty"},ta=["data-current","aria-current","onClick"],na={class:"num"},aa={class:"row-title"},sa={key:0,class:"tag"},oa={key:1,class:"now"},ia={class:"list-foot"},la={key:0,class:"hint"},ra={class:"bar","aria-label":"Szuflady na telefonie"},ca=["disabled","aria-expanded","aria-controls","onClick"],ua=Te({__name:"RemoteDrawer",props:{deck:{},state:{},live:{type:Boolean},cursor:{},open:{},disabled:{type:Boolean},wakeLockMissing:{type:Boolean}},emits:["goto","cursor","open","close"],setup(n,{emit:y}){const t=n,o=y,s=[{kind:"say",label:"Powiedz"},{kind:"notes",label:"Notatki"},{kind:"slides",label:"Slajdy"}],i=p(()=>t.deck.slides.length),d=p(()=>mn(t.deck,t.state,t.live,t.cursor)),v=p(()=>t.live&&t.state?t.state.number:t.deck.slides[et(t.deck.slides,t.cursor)]?.number??0),k=p(()=>et(t.deck.slides,t.cursor)),z=p(()=>t.live&&t.state?t.state.number:t.deck.slides[k.value]?.number??t.cursor),$=p(()=>{const h=t.live&&t.state?.special?"s":"";return`${z.value}${h}`});function P(h){return h?/<img\b/i.test(h)?!0:h.replace(/<[^>]*>/g,"").replace(/&nbsp;|&#160;/g," ").trim()!=="":!1}const w=p(()=>P(d.value?.say_html)?wt(d.value?.say_html??""):""),b=p(()=>P(d.value?.notes_html)?wt(d.value?.notes_html??""):""),S=p(()=>t.open==="say"?`Powiedz · slajd ${z.value}`:t.open==="notes"?`Notatki · slajd ${z.value}`:"Slajdy"),D=p(()=>t.open==="slides"?"":t.live?"Widzisz tylko Ty":`Przeglądasz na telefonie · slajd ${k.value+1} z ${i.value}`),N=p(()=>!t.live&&(t.open==="say"||t.open==="notes")),G=p(()=>k.value>0),ae=p(()=>k.value<i.value-1),A=p(()=>t.deck.slides.map(h=>({number:h.number,title:tt(h),special:!!h.special})));function B(h){t.disabled||(t.open===h?o("close"):o("open",h))}function Y(h){const x=t.deck.slides[k.value+h];x&&o("cursor",x.number)}const J=g(null),O=g(null);return he([$,()=>t.open],()=>{J.value&&(J.value.scrollTop=0)}),he(()=>t.open,async h=>{if(h!=="slides")return;await Et(),O.value?.querySelector('[data-current="true"]')?.scrollIntoView({block:"center"})}),(h,x)=>{const se=ln("router-link");return r(),u("div",Hn,[n.open?(r(),u("section",{key:0,id:`remote-drawer-${n.open}`,class:"sheet","aria-label":S.value},[c("header",Kn,[N.value?(r(),u("button",{key:0,type:"button",class:"icon-btn","aria-label":"Poprzedni slajd na telefonie",disabled:!G.value,onClick:x[0]||(x[0]=T=>Y(-1))}," ‹ ",8,Gn)):E("",!0),c("div",Jn,[c("p",Zn,_(S.value),1),D.value?(r(),u("p",Fn,_(D.value),1)):E("",!0)]),N.value?(r(),u("button",{key:1,type:"button",class:"icon-btn","aria-label":"Następny slajd na telefonie",disabled:!ae.value,onClick:x[1]||(x[1]=T=>Y(1))}," › ",8,Un)):E("",!0),c("button",{type:"button",class:"close-btn",onClick:x[2]||(x[2]=T=>o("close"))},"Zamknij")]),c("div",{ref_key:"body",ref:J,class:I(["sheet-body",{reading:n.open!=="slides"}])},[n.open==="say"?(r(),u(M,{key:0},[w.value?(r(),u("div",{key:0,class:"text",innerHTML:w.value},null,8,Xn)):(r(),u("p",Yn,"Brak tekstu do powiedzenia na tym slajdzie."))],64)):n.open==="notes"?(r(),u(M,{key:1},[b.value?(r(),u("div",{key:0,class:"text",innerHTML:b.value},null,8,Qn)):(r(),u("p",ea,"Brak notatek do tego slajdu."))],64)):(r(),u(M,{key:2},[c("ol",{ref_key:"list",ref:O,class:"list"},[(r(!0),u(M,null,ge(A.value,T=>(r(),u("li",{key:T.number},[c("button",{type:"button",class:"row","data-current":T.number===v.value?"true":void 0,"aria-current":T.number===v.value?"true":void 0,onClick:Le=>o("goto",T.number)},[c("span",na,_(T.number),1),c("span",aa,_(T.title),1),T.special?(r(),u("span",sa,"+ specjalny")):E("",!0),T.number===v.value?(r(),u("span",oa,"teraz")):E("",!0)],8,ta)]))),128))],512),c("footer",ia,[ne(se,{class:"back-link",to:{name:"my-presentations"}},{default:on(()=>[...x[3]||(x[3]=[Ct("Wróć do moich prezentacji",-1)])]),_:1}),n.wakeLockMissing?(r(),u("p",la,"Ta przeglądarka nie pozwala zablokować wygaszania ekranu.")):E("",!0)])],64))],2)],8,Wn)):E("",!0),c("nav",ra,[(r(),u(M,null,ge(s,T=>c("button",{key:T.kind,type:"button",class:I(["tab",{open:n.open===T.kind}]),disabled:n.disabled,"aria-expanded":n.open===T.kind?"true":"false","aria-controls":`remote-drawer-${T.kind}`,onClick:Le=>B(T.kind)},_(T.label),11,ca)),64))])])}}}),da=_e(ua,[["__scopeId","data-v-9f920f42"]]),va=["aria-label"],fa={key:0,class:"eyebrow"},ma={class:"grid nav"},pa=["disabled","aria-busy","onClick"],ya={key:1,class:"grid fn"},ba=["disabled","aria-pressed","aria-busy","onClick"],ka={class:"label"},wa=Te({__name:"RemoteKeys",props:{state:{},live:{type:Boolean},busy:{},compact:{type:Boolean},cast:{type:Boolean}},emits:["press","reset"],setup(n,{emit:y}){const t=n,o=y,s=p(()=>pn(t.state,t.live,t.cast?"cast":"deck")),i=p(()=>t.cast?"Klawisze na TV":"Klawisze na komputerze"),d=p(()=>s.value.slice(0,2)),v=p(()=>s.value.slice(2));function k($){return(t.busy[$.action]??0)>0}function z($){$.enabled&&($.action==="clock-reset"?o("reset"):o("press",$.action))}return($,P)=>(r(),u("section",{class:I(["keys",{compact:n.compact}]),"aria-label":i.value},[n.compact?E("",!0):(r(),u("p",fa,_(i.value),1)),c("div",ma,[(r(!0),u(M,null,ge(d.value,w=>(r(),u("button",{key:w.action,type:"button",class:I(["key nav-key",w.action]),disabled:!w.enabled,"aria-busy":k(w)?"true":void 0,onClick:b=>z(w)},[w.action==="prev"?(r(),Qe(Ye,{key:0,class:"arrow",name:"arrow-left"})):E("",!0),c("span",null,_(w.label),1),w.action==="next"?(r(),Qe(Ye,{key:1,class:"arrow",name:"arrow-right"})):E("",!0)],10,pa))),128))]),n.compact?E("",!0):(r(),u("div",ya,[(r(!0),u(M,null,ge(v.value,w=>(r(),u("button",{key:w.action,type:"button",class:"key fn-key",disabled:!w.enabled,"aria-pressed":w.pressed===null?void 0:w.pressed?"true":"false","aria-busy":k(w)?"true":void 0,onClick:b=>z(w)},[c("span",ka,_(w.label),1),c("kbd",null,_(w.kbd),1)],8,ba))),128))]))],10,va))}}),gt=_e(wa,[["__scopeId","data-v-25e061a7"]]),ha={class:"top"},ga={class:"row row-title"},Ta={class:"deck-title"},_a={class:"row row-slide","aria-live":"polite"},Sa={class:"counter"},Ca={key:0,class:"slide-title"},Ea={key:1,class:"slide-title waiting"},za={class:"row row-chips","aria-label":"Na komputerze"},$a={class:"row row-clock"},Na={key:0,class:"idle"},ja={key:0,class:"chip"},Aa={key:2,class:"clock"},Da=Te({__name:"RemoteTopBar",props:{deckTitle:{},status:{},live:{type:Boolean},counter:{},slideTitle:{},chips:{},clock:{}},setup(n){const y=n,t=p(()=>yn(y.status));return(o,s)=>(r(),u("header",ha,[c("div",ga,[c("p",Ta,_(n.deckTitle),1),c("p",{class:I(["conn",{on:n.status==="live"}])},[s[0]||(s[0]=c("span",{class:"dot","aria-hidden":"true"},null,-1)),Ct(_(t.value),1)],2)]),c("div",_a,[c("p",Sa,_(n.counter),1),n.live?(r(),u("p",Ca,_(n.slideTitle),1)):(r(),u("p",Ea,"Czekam na wersję mówcy"))]),c("ul",za,[n.live?(r(!0),u(M,{key:0},ge(n.chips,i=>(r(),u("li",{key:i,class:I(["chip",{khaki:i==="Specjalny"}])},_(i),3))),128)):E("",!0)]),c("div",$a,[n.live&&n.clock&&n.clock.idle?(r(),u("p",Na,"Zegar ruszy przy pierwszej zmianie slajdu")):n.live&&n.clock?(r(),u(M,{key:1},[c("p",{class:I(["clock",{paused:n.clock.paused}])},[s[2]||(s[2]=c("span",{class:"lbl"},"Slajd",-1)),c("b",{class:I({over:n.clock.slideOver})},_(n.clock.slide),3),s[3]||(s[3]=c("span",{class:"sep","aria-hidden":"true"},"·",-1)),s[4]||(s[4]=c("span",{class:"lbl"},"Całość",-1)),c("b",{class:I({over:n.clock.totalOver})},_(n.clock.total),3),n.clock.pace?(r(),u(M,{key:0},[s[1]||(s[1]=c("span",{class:"sep","aria-hidden":"true"},"·",-1)),c("span",{class:I(["pace",{late:n.clock.late}])},_(n.clock.pace),3)],64)):E("",!0)],2),n.clock.paused?(r(),u("span",ja,"Pauza")):E("",!0)],64)):(r(),u("p",Aa,[...s[5]||(s[5]=[c("b",null,"—",-1)])]))])]))}}),xa=_e(Da,[["__scopeId","data-v-382e11de"]]),Ra="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",Xe="bm-cast-sender";function at(){return globalThis}function nt(){const n=at().cast?.framework;return n&&n.CastContext&&n.CastContextEventType?n:null}let ke=null;function Ia(n=1e4){return nt()?Promise.resolve(!0):ke||(typeof document>"u"?Promise.resolve(!1):(ke=new Promise(t=>{let o=!1,s=null;const i=d=>{o||(o=!0,s!==null&&clearTimeout(s),t(d&&nt()!==null))};try{at().__onGCastApiAvailable=v=>i(!!v);let d=document.getElementById(Xe);d||(d=document.createElement("script"),d.id=Xe,d.src=Ra,d.async=!0,d.addEventListener("error",()=>i(!1)),document.head.appendChild(d)),s=setTimeout(()=>i(!1),n)}catch{i(!1)}}).then(t=>(t||(ke=null,document.getElementById(Xe)?.remove()),t)),ke))}function Ma(n){switch(n){case"NOT_CONNECTED":return"available";case"CONNECTING":return"connecting";case"CONNECTED":return"connected";default:return"no-devices"}}function La(n){const y=nt();if(!y)return null;let t;try{t=y.CastContext.getInstance()}catch{return null}const o=y.CastContextEventType;let s=!1,i=null;const d=(b,S)=>{if(s)return;const D=jn(S);D&&n.onMessage(D)};function v(){const b=i;if(i=null,!!b)try{b.removeMessageListener(Ue,d)}catch{}}function k(){v();let b=null;try{b=t.getCurrentSession(),b?.addMessageListener(Ue,d)}catch{b=null}return i=b,b!==null}function z(b){s||n.onAvailability(Ma(b??""))}const $=b=>z(b.castState),P=b=>{if(s)return;const S=b.sessionState;S==="SESSION_STARTED"||S==="SESSION_RESUMED"?k()&&n.onSession(S==="SESSION_STARTED"?"started":"resumed"):S==="SESSION_ENDED"&&(v(),n.onSession("ended"))};try{t.addEventListener(o.CAST_STATE_CHANGED,$),t.addEventListener(o.SESSION_STATE_CHANGED,P)}catch{return null}try{const b=at().chrome?.cast?.AutoJoinPolicy?.ORIGIN_SCOPED??"origin_scoped";t.setOptions({receiverApplicationId:n.appId,autoJoinPolicy:b})}catch{}try{z(t.getCastState())}catch{z("")}let w=!1;try{w=t.getCurrentSession()!==null}catch{w=!1}return w&&queueMicrotask(()=>{!s&&i===null&&k()&&n.onSession("resumed")}),{async request(){if(!s)try{await t.requestSession()}catch{}},stop(){try{t.endCurrentSession(!0)}catch{}},async send(b){if(!Nn(b))throw new Error("cast message too large");let S=null;try{S=t.getCurrentSession()}catch{S=null}if(!S)throw new Error("no cast session");await S.sendMessage(Ue,b)},deviceName(){try{return t.getCurrentSession()?.getCastDevice()?.friendlyName??""}catch{return""}},connected(){try{return t.getCurrentSession()!==null}catch{return!1}},close(){if(!s){s=!0,v();try{t.removeEventListener(o.CAST_STATE_CHANGED,$),t.removeEventListener(o.SESSION_STATE_CHANGED,P)}catch{}}}}}const Pa=["speak","scheme","toolbar"],Ba=new Set(Pa);function Oa(n){const y=n.now??(()=>Date.now()),t=n.slides.map(i=>({number:i.number,hasSpecial:i.special!=null})),o=Rn({budgets:n.slides.map(i=>i.seconds),targetSeconds:n.targetSeconds,now:y}),s=sn({slides:t,history:{state:null,replaceState(){}},mode:"speaker",onNavigate:i=>{o.tick(),o.go(i)}});return{press(i){if(i==="sync"||i==="goto"||Ba.has(i))return!1;const d=kn(i);if(!d)return!1;const v=s.applyKey({key:d});return v==="pause"?o.pause():v==="clock"?o.toggleHidden():v==="reset"&&o.reset(),!0},goto(i){const d=t.findIndex(v=>v.number===i);return d<0?!1:(s.go(d),!0)},seed(i,d){t.some(v=>v.number===i)&&(o.tick(),s.showId(d?`${i}s`:String(i)),o.seek(s.snapshot().index))},state(i={}){return o.tick(),bn(s.snapshot(),o.view(),n.tab,{claim:!0,bye:i.bye,light:!1})},position(){const i=s.snapshot();return{number:i.number,special:i.special}}}}const Va=/^[A-Za-z0-9_-]{8,64}$/;function st(n){return"bm.cast."+n}function qa(n,y,t){if(!n)return null;let o;try{o=n.getItem(st(y))}catch{return null}if(!o)return null;let s;try{s=JSON.parse(o)}catch{return null}if(typeof s!="object"||s===null||Array.isArray(s))return null;const{tab:i,ticket:d,expires_at:v}=s;if(typeof i!="string"||!Va.test(i)||!An(d)||typeof v!="string")return null;const k=Date.parse(v);return!Number.isFinite(k)||k<=t?null:{tab:i,ticket:d,expires_at:v}}function Ha(n,y,t){if(n)try{n.setItem(st(y),JSON.stringify({tab:t.tab,ticket:t.ticket,expires_at:t.expires_at}))}catch{}}function Wa(n,y){if(n)try{n.removeItem(st(y))}catch{}}function Tt(n,y,t=10*6e4){const o=Date.parse(n);return Number.isFinite(o)?y>=o-t:!0}const Ka={key:0,class:"remote-status remote-label"},Ga={key:1,class:"remote-status"},Ja={key:0,class:"remote-alert",role:"alert"},Za={class:"remote-middle"},Fa={key:0,class:"remote-notice"},Ua={key:0,class:"remote-notice"},Xa={class:"remote-dialog-body"},Ya="Nie udało się wczytać prezentacji. Sprawdź połączenie z internetem i spróbuj ponownie.",Qa="Za dużo żądań w krótkim czasie. Odczekaj minutę i spróbuj ponownie.",te="Pilot niedostępny. Spróbuję połączyć się ponownie za 10 s.",es="Nie udało się połączyć z TV. Spróbuj ponownie.",we="TV nie odpowiada. Dotknij „Na TV”, aby zakończyć i połączyć ponownie.",_t="Nie udało się odnowić biletu TV. Spróbuję ponownie.",St="Nie udało się pobrać dziennika TV.",ts=2e3,ns=15e3,as=15e3,ss=3e4,os=Te({__name:"PresentationRemoteView",props:{slug:{}},setup(n){const y=n,t=vn(),o=g("pending"),s=g(null),i=g("");let d=0,v=0,k=null,z="",$=0,P=0,w=0,b=!1,S=0,D=Fe();const N=g(null),G=g(0),ae=g(Date.now()),A=g(!1),B=g(!1),Y=g("connecting"),J=g(!1),O=g(!1),h=g(!1),x=p(()=>B.value?"live":h.value?"unavailable":A.value?"live":Y.value==="connected"&&O.value?"waiting":J.value?"reconnecting":"connecting"),se=p(()=>s.value?.slides.length??0),T=p(()=>{const e=N.value;return!s.value||!e?0:et(s.value.slides,e.number)}),Le=p(()=>{const e=N.value;return A.value&&e?`${e.number} / ${e.total}`:`— / ${se.value}`}),zt=p(()=>{const e=N.value,a=s.value?.slides[T.value];return!e||!a?"":e.special&&a.special?tt(a.special):tt(a)}),$t=p(()=>N.value?_n(N.value):[]),Nt=p(()=>{const e=N.value;return!s.value||!e?null:In(Sn(e,s.value.slides.map(a=>a.seconds),s.value.target_seconds,T.value,G.value,ae.value))}),V=g(null),oe=g(1);he(N,e=>{e&&!e.bye&&e.number>0&&(oe.value=e.number)});function jt(e){se.value!==0&&(V.value=e)}function At(){V.value=null}function Dt(e){oe.value=e}function xt(e){if(f){re(),f.mode.goto(e)&&Z(),V.value=null;return}if(A.value){re(),Pe("goto",e),V.value=null;return}oe.value=e,V.value="say"}function Q(){ae.value=Date.now(),A.value=B.value||D.live(ae.value)}function Rt(e){if(f)return;const a=En(e);!a||a.event!==zn||D.observe(a.payload,Date.now())&&(N.value=D.current(),G.value=D.receivedAt(),Q(),a.payload.bye&&le())}function Se(){d&&window.clearTimeout(d),d=0}const j=g("");let H=0;function q(e,a=4e3){j.value=e,H&&window.clearTimeout(H),H=0,a>0&&(H=window.setTimeout(()=>{j.value="",H=0},a))}function W(){H&&window.clearTimeout(H),H=0,j.value=""}const ie=g({});function ot(e,a){const l=Math.max(0,(ie.value[e]??0)+a);ie.value={...ie.value,[e]:l}}async function Pe(e,a){const l={action:e,tab:D.actionTab()};a!==void 0&&(l.number=a),ot(e,1);try{await R.remote(y.slug,l),j.value&&j.value!==te&&W()}catch(m){q(ht(m instanceof be?m.status:-1))}finally{ot(e,-1)}}function le(){f||!O.value||R.remote(y.slug,{action:"sync",tab:""}).catch(()=>{})}function It(){O.value=!0,h.value=!1,j.value===te&&W(),D.release(),le()}function Mt(e){Y.value=e,e==="connected"?J.value=!0:O.value=!1}function Lt(e){if(O.value=!1,h.value=!0,e!==403||b){j.value===te&&W();return}b=!0,q(te,0),S=window.setTimeout(()=>{S=0,k?.resubscribe()},Cn)}function re(){typeof navigator.vibrate=="function"&&navigator.vibrate(15)}function it(e){if(f){re(),f.mode.press(e)&&Z();return}A.value&&(re(),Pe(e))}const ce=g(null),lt=g(null);function Pt(){if(!A.value)return;re();const e=ce.value;e&&(e.open||e.showModal(),Et(()=>lt.value?.focus()))}function Ce(){ce.value?.open&&ce.value.close()}function Bt(){if(Ce(),f){f.mode.press("clock-reset")&&Z();return}A.value&&Pe("clock-reset")}function Ot(e){e.target===ce.value&&Ce()}let ue=null,Ee=!1;const ze=g(!1);async function rt(){const e=navigator.wakeLock;if(!e||typeof e.request!="function"){ze.value=!0;return}if(!(ue&&!ue.released))try{const a=await e.request("screen");if(!Ee){a.release().catch(()=>{});return}ue=a,ze.value=!1}catch{ze.value=!0}}function Vt(){const e=ue;ue=null,e&&!e.released&&e.release().catch(()=>{})}function ct(){if(document.visibilityState!=="visible"){De();return}if(rt(),f){F&&Ke(),Ae.flush();return}le()}function Be(){$+=1,k?.close(),k=null,z="",O.value=!1,Y.value="connecting",J.value=!1,h.value=!1,b=!1,S&&window.clearTimeout(S),S=0,j.value===te&&W(),D=Fe(),N.value=null,G.value=0,Q()}async function qt(e){Be();const a=$;z=e;try{const l=()=>a===$,m=await fn(e,{onPublication:C=>{l()&&Rt(C)},onSubscribed:()=>{l()&&It()},onConnection:C=>{l()&&Mt(C)},onDenied:C=>{l()&&Lt(C)},onUnavailable:()=>{l()&&(h.value=!0)}});if(a!==$){m.close();return}k=m}catch{a===$&&(h.value=!0)}}function Ht(){const e=o.value==="ready"?s.value?.remote_channel??"":"";if(e!==z){if(!e){Be();return}qt(e)}}const Oe=g("off"),$e=g(""),Ne=g(null);let L=null,Ve="",je=0,f=null,de=0,ve=0,ut=Promise.resolve();const Ae=hn(()=>{Kt()},gn);function Z(){f&&Ae.call()}function De(){ve&&window.clearTimeout(ve),ve=0}function Wt(){De(),!(!f||document.visibilityState!=="visible")&&(ve=window.setTimeout(()=>{ve=0;const e=f;e&&((F||Tt(e.expiresAt,Date.now()))&&Ke(),Z())},Tn))}async function Kt(){const e=f;if(!e)return;const a=e.mode.state();Wt();const l=R.remoteState(e.slug,a);ut=l.catch(()=>{});try{if(await l,f!==e)return;N.value=a,G.value=Date.now(),Q(),j.value&&j.value!==te&&j.value!==we&&W()}catch(m){f===e&&q(ht(m instanceof be?m.status:-1))}}const xe=new Map;function dt(e,a){const l=window.setTimeout(()=>{xe.delete(l),R.castRevoke(e,a).catch(()=>{})},ns);xe.set(l,{slug:e,ticket:a})}function Gt(){for(const[e,a]of xe)window.clearTimeout(e),R.castRevoke(a.slug,a.ticket).catch(()=>{});xe.clear()}function qe(){try{return window.sessionStorage}catch{return null}}function vt(e){Ha(qe(),e.slug,{tab:e.tab,ticket:e.ticket,expires_at:e.expiresAt})}let He=null;function ee(e){const a=He;a&&(He=null,window.clearTimeout(a.timer),a.resolve(e))}function Jt(e){return ee(null),new Promise(a=>{const l=window.setTimeout(()=>ee(null),ts);He={resolve:a,timer:l},e.send({type:"where"}).catch(()=>ee(null))})}async function Zt(e){const a=s.value,l=L;if(!a||!l)return;const m=++de,C=y.slug,U=qa(qe(),C,Date.now()),X=e?U:null,Je=X?.tab??$n();let bt=X?.ticket??"",Ze=X?.expires_at??"",Re="";if(!X||Tt(Ze,Date.now())){let Me;try{Me=await R.castMint(C)}catch{if(m!==de)return;q(es),l.stop();return}if(m!==de||L!==l){R.castRevoke(C,Me.ticket).catch(()=>{});return}U&&(Re=U.ticket),bt=Me.ticket,Ze=Me.expires_at}const kt=Oa({slides:a.slides,targetSeconds:a.target_seconds,tab:Je}),ye=N.value;!X&&A.value&&ye&&!ye.bye&&ye.number>0&&kt.seed(ye.number,ye.special);const K={slug:C,tab:Je,ticket:bt,expiresAt:Ze,mode:kt};f=K,B.value=!0,F=!1,Ne.value=null,vt(K),Q(),X||Z();try{await l.send({type:"hello",ticket:K.ticket,tab:Je})}catch{f===K&&q(we,0)}if(Re&&Re!==K.ticket&&dt(C,Re),!X||f!==K)return;const Ie=await Jt(l);f===K&&(Ie&&Ie.number>0&&K.mode.seed(Ie.number,Ie.special),Z())}let F=!1,We=!1;async function Ke(){const e=f,a=L;if(!(!e||!a||We)){if(document.visibilityState!=="visible"){F=!0;return}We=!0,F=!1;try{let l;try{l=await R.castMint(e.slug)}catch{f===e&&(F=!0,q(_t));return}if(f!==e||L!==a){R.castRevoke(e.slug,l.ticket).catch(()=>{});return}const m=e.ticket;e.ticket=l.ticket,e.expiresAt=l.expires_at,vt(e);try{await a.send({type:"hello",ticket:e.ticket,tab:e.tab})}catch{f===e&&q(we,0)}m!==e.ticket&&dt(e.slug,m)}finally{We=!1}}}function Ge(){de+=1,Ne.value=null,ee(null),pe();const e=f;if(!e)return;f=null,B.value=!1,F=!1,Ae.cancel(),De();const a=e.mode.state({bye:!0});ut.then(()=>R.remoteState(e.slug,a)).catch(()=>{}),R.castRevoke(e.slug,e.ticket).catch(()=>{}),Gt(),Wa(qe(),e.slug),(j.value===we||j.value===_t)&&W(),D=Fe(),N.value=null,G.value=0,Q(),le()}function Ft(){de+=1,ee(null),pe(),f=null,B.value=!1,Ae.cancel(),De()}function Ut(e){if($e.value=L?.deviceName()??"",e==="ended"){Ge();return}e==="resumed"&&f||(f&&Ge(),Zt(e==="resumed"))}let fe=[],me=0;function pe(){me&&window.clearTimeout(me),me=0,fe=[]}function ft(){pe(),q(St)}function Xt(){const e=L;if(!e||!e.connected()){q(St);return}pe(),me=window.setTimeout(ft,as),e.send({type:"log"}).catch(ft)}function Yt(e){if(!me)return;const a=Date.now();fe=fe.filter(U=>a-U.at<ss&&U.of===e.of&&U.part!==e.part),fe.push({...e,at:a});const l=Dn(fe);if(l===null)return;pe();let m=l;try{m=JSON.parse(l)}catch{}const C=new Date().toISOString();xn(`bm-tv-${C.replace(/:/g,"-")}.json`,{receiver:m,phone:{tab:f?.tab??"",at:C}})}function Qt(e){switch(e.type){case"status":Ne.value=e,e.phase!=="waiting"&&j.value===we&&W(),e.phase==="ready"&&Z();return;case"position":ee({number:e.number,special:e.special});return;case"need-ticket":f&&Ke();return;case"log":Yt(e);return}}function en(){L?.request()}function mt(){je+=1,L?.close(),L=null,Ve="",Oe.value="off",$e.value=""}async function tn(e){const a=je;if(!await Ia()||a!==je||!Ee)return;const m=()=>a===je;L=La({appId:e,onAvailability:C=>{m()&&(Oe.value=C,$e.value=L?.deviceName()??"")},onSession:C=>{m()&&Ut(C)},onMessage:C=>{m()&&Qt(C)}})}function nn(){const e=s.value,a=o.value==="ready"&&e&&e.slides.length>0?e.cast_app_id??"":"",l=a?`${a}|${y.slug}`:"";l!==Ve&&(mt(),l&&(Ve=l,tn(a)))}async function pt(e){const a=++v;Se(),o.value="pending",s.value=null,i.value="",d=window.setTimeout(()=>{a===v&&o.value==="pending"&&(o.value="loading")},200);try{const l=await R.speaker(e);if(a!==v)return;Se();const m=l.slides??[];s.value={...l,slides:m},un(e),oe.value=m[0]?.number??1,V.value=null,document.title=l.title?`Pilot · ${l.title}`:"Pilot · BM II°",o.value=m.length===0?"empty":"ready"}catch(l){if(a!==v)return;if(Se(),l instanceof be&&l.status===404){dn(e),await t.replace({name:"my-presentations",query:{denied:"1"}});return}if(l instanceof be&&l.status===401)return;i.value=l instanceof be&&l.status===429?Qa:Ya,o.value="error"}}function an(){pt(y.slug)}function yt(e,a,l){if(document.querySelector(`meta[data-deck-remote="${l}"]`))return;const m=document.createElement("meta");m.name=e,m.content=a,m.dataset.deckRemote=l,document.head.appendChild(m)}return he(()=>y.slug,e=>{f&&Ge(),pt(e)},{immediate:!0}),he([s,o],()=>{Ht(),nn()}),rn(()=>{Ee=!0,document.documentElement.classList.add("deck-remote"),yt("robots","noindex","robots"),yt("theme-color","#141a18","theme"),document.addEventListener("visibilitychange",ct),P=window.setInterval(()=>{document.visibilityState==="visible"&&le()},wn),w=window.setInterval(Q,1e3),rt()}),cn(()=>{Ee=!1,v+=1,Se(),W(),Be(),Ft(),mt(),Ce(),Vt(),window.clearInterval(P),window.clearInterval(w),document.removeEventListener("visibilitychange",ct),document.documentElement.classList.remove("deck-remote"),document.querySelectorAll("meta[data-deck-remote]").forEach(e=>e.remove())}),(e,a)=>(r(),u("main",{class:I(["remote",{"remote-page":o.value==="ready"||o.value==="empty","remote-drawer-open":o.value==="ready"&&V.value}])},[o.value==="loading"?(r(),u("p",Ka,"Wczytywanie pilota…")):o.value==="error"?(r(),u("div",Ga,[c("p",null,_(i.value),1),c("button",{type:"button",class:"remote-retry",onClick:an},"Spróbuj ponownie")])):(o.value==="ready"||o.value==="empty")&&s.value?(r(),u(M,{key:2},[ne(xa,{class:"remote-top","deck-title":s.value.title,status:o.value==="empty"?"waiting":x.value,live:o.value==="ready"&&A.value,counter:Le.value,"slide-title":zt.value,chips:$t.value,clock:Nt.value},null,8,["deck-title","status","live","counter","slide-title","chips","clock"]),j.value?(r(),u("p",Ja,_(j.value),1)):E("",!0),c("div",Za,[o.value==="empty"?(r(),u("div",Fa,[...a[0]||(a[0]=[c("p",{class:"remote-notice-head"},"Ta prezentacja nie ma jeszcze slajdów.",-1),c("p",{class:"remote-muted"},"Dodaj slajdy w panelu administracyjnym i otwórz pilota ponownie.",-1)])])):V.value?(r(),Qe(gt,{key:1,compact:"",cast:B.value,state:N.value,live:A.value,busy:ie.value,onPress:it},null,8,["cast","state","live","busy"])):(r(),u(M,{key:2},[ne(qn,{availability:Oe.value,"device-name":$e.value,tv:Ne.value,onRequest:en,onLog:Xt},null,8,["availability","device-name","tv"]),A.value?E("",!0):(r(),u("div",Ua,[...a[1]||(a[1]=[c("p",{class:"remote-notice-head"},"Otwórz wersję mówcy na komputerze",-1),c("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(gt,{cast:B.value,state:N.value,live:A.value,busy:ie.value,onPress:it,onReset:Pt},null,8,["cast","state","live","busy"])],64))]),ne(da,{deck:s.value,state:N.value,live:o.value==="ready"&&A.value,cursor:oe.value,open:V.value,disabled:se.value===0,"wake-lock-missing":ze.value,onOpen:jt,onClose:At,onCursor:Dt,onGoto:xt},null,8,["deck","state","live","cursor","open","disabled","wake-lock-missing"])],64)):E("",!0),c("dialog",{ref_key:"resetDialog",ref:ce,class:"remote-dialog","aria-labelledby":"remote-reset-title","aria-describedby":"remote-reset-body",onClick:Ot},[c("div",Xa,[a[2]||(a[2]=c("p",{id:"remote-reset-title",class:"remote-dialog-title"},"Wyzerować zegar?",-1)),a[3]||(a[3]=c("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)),c("button",{type:"button",class:"remote-dialog-btn remote-dialog-danger",onClick:Bt},"Zeruj zegar"),c("button",{ref_key:"resetCancel",ref:lt,type:"button",class:"remote-dialog-btn",autofocus:"",onClick:Ce},"Anuluj",512)])],512)],2))}}),fs=_e(os,[["__scopeId","data-v-85090917"]]);export{fs as default};