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

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