1 line
5.1 KiB
JavaScript
1 line
5.1 KiB
JavaScript
import{Bn as e,Ct as t,Gt as n,Rn as r,Sn as i,St as a,Wt as o,Yt as s,_n as c,bt as l,ht as u,kt as d,qt as f,rn as p,wt as m,xt as h,zn as g}from"./client-Cla4nwje.js";import{t as _}from"./_plugin-vue_export-helper-B7eW7EFJ.js";import{t as v}from"./QrCode-Bpn3d7Xa.js";import{r as y}from"./application-i1Z_D_jG.js";var b=[{value:`SCREEN_TIMER_TYPE_BREAK`,label:`Перерыв`},{value:`SCREEN_TIMER_TYPE_BEFORE_GAME`,label:`До начала игры`},{value:`SCREEN_TIMER_TYPE_UNTIL_END`,label:`До конца игры`}];function x(e,t,n){let r=b.find(e=>e.value===(t??`SCREEN_TIMER_TYPE_BREAK`)).label;return!e?.trim()||e===r?b.find(e=>e.value===n).label:e}function S(e=``,t=``){try{let n=new URL(e);return/^https?:\/\/[^/\\\s?#]/.test(e)&&[`http:`,`https:`].includes(n.protocol)&&!!n.hostname&&!n.username&&!n.password&&e===e.trim()&&new TextEncoder().encode(e).length<=2048&&new TextEncoder().encode(t).length<=1e4}catch{return!1}}var C={key:0,class:`timer-preview`},w={key:1,class:`preview-message`},T=[`src`,`autoplay`,`loop`],E={key:3,class:`preview-message`},D={key:4,class:`preview-message`},O={key:5,class:`preview-qr`},k={key:1},A={key:2},j={key:6,class:`preview-team-list`},M={key:0,class:`preview-message`},N={key:2,class:`preview-message`},P={key:7,class:`preview-results`},F=[`src`],I={key:9,class:`preview-message`},L=_(d({__name:`ScreenPreview`,props:{state:{},questions:{},teams:{},teamNames:{},isThumbnail:{type:Boolean}},setup(d){let _=d,b=l(()=>Math.max(1,Math.ceil(Math.sqrt((_.teamNames?.length??0)/4)))),x=l(()=>Math.max(1,Math.ceil((_.teamNames?.length??0)/b.value))),L=c(Date.now()),R=c(0),z=c(Date.now()),B=c(),V=null,H=l(()=>{let e=_.state.backgroundImage||_.state.coverImage;return e?{backgroundImage:`linear-gradient(rgb(0 0 0 / 55%), rgb(0 0 0 / 55%)), url("${e}")`}:{}}),U=l(()=>_.state.timerState===`SCREEN_TIMER_STATE_RUNNING`?Math.max(0,R.value-(L.value-z.value)/1e3):R.value),W=l(()=>{let e=Math.floor(U.value/60),t=Math.floor(U.value%60);return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}),G=l(()=>y(_.state.introAudio)),K=l(()=>y(_.state.conclusionVideo));return p(()=>[_.state.timerRemainingSeconds,_.state.timerState,_.state.stateVersion],()=>{let e=Math.max(0,Number(_.state.timerRemainingSeconds||0));if(_.state.timerState===`SCREEN_TIMER_STATE_RUNNING`&&B.value===_.state.timerState){let t=Math.max(0,R.value-(Date.now()-z.value)/1e3);if(Math.abs(e-t)<=.5)return}R.value=e,z.value=Date.now(),B.value=_.state.timerState},{immediate:!0}),o(()=>{_.isThumbnail||(V=window.setInterval(()=>{L.value=Date.now()},250))}),n(()=>{V!=null&&window.clearInterval(V)}),(n,o)=>(f(),m(`div`,{class:r([`screen-preview`,{"screen-thumbnail":d.isThumbnail}]),style:g(H.value)},[d.state.mode===`SCREEN_MODE_TIMER`?(f(),m(`div`,C,[h(`h2`,null,e(d.state.timerLabel||`Перерыв`),1),h(`strong`,null,e(W.value),1)])):d.state.mode===`SCREEN_MODE_INTRO`?(f(),m(`div`,w,e(G.value?`Аудиозапись введения`:`Введение не задано`),1)):d.state.mode===`SCREEN_MODE_CONCLUSION`&&K.value?(f(),m(`video`,{key:2,src:K.value,autoplay:!d.isThumbnail,preload:`metadata`,class:`preview-video`,loop:!d.isThumbnail,muted:``,playsinline:``},null,8,T)):d.state.mode===`SCREEN_MODE_CONCLUSION`?(f(),m(`div`,E,` Видео закрывашки не задано `)):d.state.mode===`SCREEN_MODE_TEXT`?(f(),m(`div`,D,e(d.state.text),1)):d.state.mode===`SCREEN_MODE_QR`?(f(),m(`div`,O,[i(S)(d.state.qrUrl)?(f(),a(i(v),{key:0,value:d.state.qrUrl,size:512,padding:24},null,8,[`value`])):(f(),m(`span`,k,`Укажите ссылку для QR-кода`)),d.state.text?(f(),m(`p`,A,e(d.state.text),1)):t(``,!0)])):d.state.mode===`SCREEN_MODE_TEAMS`?(f(),m(`div`,j,[d.teamNames?d.teamNames.length?(f(),m(`div`,{key:1,class:`team-names`,style:g({gridTemplateColumns:`repeat(${b.value}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${x.value}, minmax(0, 1fr))`,fontSize:`min(${22.5/x.value}cqw, ${5/b.value}cqw)`})},[(f(!0),m(u,null,s(d.teamNames,(t,n)=>(f(),m(`p`,{key:n},e(t),1))),128))],4)):(f(),m(`p`,N,`Команды пока не зарегистрированы`)):(f(),m(`p`,M,`Список команд ещё не загружен`))])):d.state.mode===`SCREEN_MODE_RESULTS`?(f(),m(`div`,P,[o[4]||=h(`h2`,null,`Результаты`,-1),h(`table`,null,[h(`thead`,null,[h(`tr`,null,[o[0]||=h(`th`,null,`Место`,-1),o[1]||=h(`th`,null,`Команда`,-1),(f(!0),m(u,null,s(d.questions,t=>(f(),m(`th`,{key:t.code},e(t.code),1))),128)),o[2]||=h(`th`,null,`Сумма`,-1),o[3]||=h(`th`,null,`Ходы`,-1)])]),h(`tbody`,null,[(f(!0),m(u,null,s(d.teams,t=>(f(),m(`tr`,{key:t.team?.ID},[h(`td`,null,e(t.place),1),h(`td`,null,e(t.team?.name),1),(f(!0),m(u,null,s(d.questions,n=>(f(),m(`td`,{key:n.code},e(t.answers?.find(e=>e.questionCode===n.code)?.score??0),1))),128)),h(`td`,null,e(t.totalScore),1),h(`td`,null,e(t.actionsCount),1)]))),128))])])])):d.state.coverImage?(f(),m(`img`,{key:8,src:d.state.coverImage,alt:`Обложка дела`,class:`preview-cover`},null,8,F)):(f(),m(`div`,I,e(d.state.gameName||`Обложка не задана`),1))],6))}}),[[`__scopeId`,`data-v-e6fcac2b`]]);export{S as i,x as n,b as r,L as t}; |