7 lines
53 KiB
JavaScript
7 lines
53 KiB
JavaScript
import{D as e,E as t,I as n,K as r,Lt as i,M as a,N as o,O as s,Rt as c,T as l,V as ee,W as te,Y as u,Z as d,at as f,gt as p,j as m,l as h,ot as g,q as _,r as ne,rt as re,u as ie,w as v,xt as y,y as b,yt as x,zt as S}from"./client-Dr2LhGo3.js";import{H as C,N as ae,R as w,V as T,n as E,o as oe,r as se,t as ce}from"./light-DXa4IKh6.js";import{d as le,t as D}from"./Card-CgNNn5jI.js";import{t as O}from"./Modal-8YQR0UBj.js";import{t as ue}from"./use-merged-state-ByR-vZB2.js";import{n as de,t as k}from"./Button-B_ppA4iO.js";import{t as fe}from"./Select-D807ISno.js";import{n as pe,r as A}from"./use-form-item-CC5qNKr7.js";import{a as me,r as j}from"./resolve-slot-DAynYbhJ.js";import{r as he}from"./Suffix-C-k201Qu.js";import{t as ge}from"./Add-2BconUTZ.js";import{t as M}from"./Input-Dr720NP-.js";import{t as N}from"./Remove-DahbCeLn.js";import{t as _e}from"./Tag-BCnDoLE2.js";import{t as ve}from"./Alert-D9tcNb9i.js";import{n as ye,r as be,t as P}from"./es-DGj7CO5b.js";import{t as F}from"./Space-DfIJ4gDx.js";import{t as I}from"./Flex-CmbuP0JJ.js";import{t as xe}from"./Rate-CGIyr1an.js";import{t as Se}from"./QrCode-C77qvj1J.js";import{t as L}from"./text-CJWSHi1z.js";import{S as Ce,U as R,X as z,rt as we,tt as Te,w as Ee}from"./index-D9DHo4Ux.js";import{t as De}from"./HeaderMenu-C_AUdGBz.js";import{t as Oe}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ke}from"./Settings-Buf1j0KY.js";import{t as Ae}from"./binary_client-nwaUaC1C.js";import{n as je,r as Me}from"./application-DXNAO2qx.js";import{t as Ne}from"./useSimplePolling-CNLkEswH.js";import{n as Pe,t as Fe}from"./datetime-BJNH0M1T.js";function Ie(e){let{textColorDisabled:t}=e;return{iconColorDisabled:t}}var Le=E({name:`InputNumber`,common:ce,peers:{Button:Ce,Input:Ee},self:Ie}),B=T([C(`input-number-suffix`,`
|
||
display: inline-block;
|
||
margin-right: 10px;
|
||
`),C(`input-number-prefix`,`
|
||
display: inline-block;
|
||
margin-left: 10px;
|
||
`)]);function Re(e){return e==null||typeof e==`string`&&e.trim()===``?null:Number(e)}function ze(e){return e.includes(`.`)&&(/^(-)?\d+.*(\.|0)$/.test(e)||/^-?\d*$/.test(e))||e===`-`||e===`-0`}function V(e){return e==null?!0:!Number.isNaN(e)}function H(e,t){return typeof e==`number`?t===void 0?String(e):e.toFixed(t):``}function U(e){if(e===null)return null;if(typeof e==`number`)return e;{let t=Number(e);return Number.isNaN(t)?null:t}}var W=800,G=100,Be=o({name:`InputNumber`,props:Object.assign(Object.assign({},se.props),{autofocus:Boolean,loading:{type:Boolean,default:void 0},placeholder:String,defaultValue:{type:Number,default:null},value:Number,step:{type:[Number,String],default:1},min:[Number,String],max:[Number,String],size:String,disabled:{type:Boolean,default:void 0},validator:Function,bordered:{type:Boolean,default:void 0},showButton:{type:Boolean,default:!0},buttonPlacement:{type:String,default:`right`},inputProps:Object,readonly:Boolean,clearable:Boolean,keyboard:{type:Object,default:{}},updateValueOnInput:{type:Boolean,default:!0},round:{type:Boolean,default:void 0},parse:Function,format:Function,precision:Number,status:String,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onFocus:[Function,Array],onBlur:[Function,Array],onClear:[Function,Array],onChange:[Function,Array]}),slots:Object,setup(e){let{mergedBorderedRef:t,mergedClsPrefixRef:n,mergedRtlRef:r,mergedComponentPropsRef:i}=ae(e),a=se(`InputNumber`,`-input-number`,B,Le,e,n),{localeRef:o}=he(`InputNumber`),s=pe(e,{mergedSize:t=>{let{size:n}=e;if(n)return n;let{mergedSize:r}=t||{};return r?.value?r.value:i?.value?.InputNumber?.size||`medium`}}),{mergedSizeRef:c,mergedDisabledRef:l,mergedStatusRef:te}=s,u=p(null),d=p(null),f=p(null),m=p(e.defaultValue),h=ue(x(e,`value`),m),g=p(``),_=e=>{let t=String(e).split(`.`)[1];return t?t.length:0},ne=t=>{let n=[e.min,e.max,e.step,t].map(e=>e===void 0?0:_(e));return Math.max(...n)},ie=z(()=>{let{placeholder:t}=e;return t===void 0?o.value.placeholder:t}),y=z(()=>{let t=U(e.step);return t===null||t===0?1:Math.abs(t)}),b=z(()=>{let t=U(e.min);return t===null?null:t}),S=z(()=>{let t=U(e.max);return t===null?null:t}),C=()=>{let{value:t}=h;if(V(t)){let{format:n,precision:r}=e;n?g.value=n(t):t===null||r===void 0||_(t)>r?g.value=H(t,void 0):g.value=H(t,r)}else g.value=String(t)};C();let T=t=>{let{value:n}=h;if(t===n){C();return}let{"onUpdate:value":r,onUpdateValue:i,onChange:a}=e,{nTriggerFormInput:o,nTriggerFormChange:c}=s;a&&A(a,t),i&&A(i,t),r&&A(r,t),m.value=t,o(),c()},E=({offset:t,doUpdateIfValid:n,fixPrecision:r,isInputing:i})=>{let{value:a}=g;if(i&&ze(a))return!1;let o=(e.parse||Re)(a);if(o===null)return n&&T(null),null;if(V(o)){let a=_(o),{precision:s}=e;if(s!==void 0&&s<a&&!r)return!1;let c=Number.parseFloat((o+t).toFixed(s??ne(o)));if(V(c)){let{value:t}=S,{value:r}=b;if(t!==null&&c>t){if(!n||i)return!1;c=t}if(r!==null&&c<r){if(!n||i)return!1;c=r}return e.validator&&!e.validator(c)?!1:(n&&T(c),c)}}return!1},ce=z(()=>E({offset:0,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})===!1),D=z(()=>{let{value:t}=h;if(e.validator&&t===null)return!1;let{value:n}=y;return E({offset:-n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1}),O=z(()=>{let{value:t}=h;if(e.validator&&t===null)return!1;let{value:n}=y;return E({offset:+n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1});function de(t){let{onFocus:n}=e,{nTriggerFormFocus:r}=s;n&&A(n,t),r()}function k(t){if(t.target===u.value?.wrapperElRef)return;let n=E({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0});if(n!==!1){let e=u.value?.inputElRef;e&&(e.value=String(n||``)),h.value===n&&C()}else C();let{onBlur:r}=e,{nTriggerFormBlur:i}=s;r&&A(r,t),i(),ee(()=>{C()})}function fe(t){let{onClear:n}=e;n&&A(n,t)}function me(){let{value:t}=O;if(!t){xe();return}let{value:n}=h;if(n===null)e.validator||T(N());else{let{value:e}=y;E({offset:e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}function j(){let{value:t}=D;if(!t){F();return}let{value:n}=h;if(n===null)e.validator||T(N());else{let{value:e}=y;E({offset:-e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}let ge=de,M=k;function N(){if(e.validator)return null;let{value:t}=b,{value:n}=S;return t===null?n===null?0:Math.min(0,n):Math.max(0,t)}function _e(e){fe(e),T(null)}function ve(e){var t;f.value?.$el.contains(e.target)&&e.preventDefault(),d.value?.$el.contains(e.target)&&e.preventDefault(),(t=u.value)==null||t.activate()}let ye=null,be=null,P=null;function F(){P&&=(window.clearTimeout(P),null),ye&&=(window.clearInterval(ye),null)}let I=null;function xe(){I&&=(window.clearTimeout(I),null),be&&=(window.clearInterval(be),null)}function Se(){F(),P=window.setTimeout(()=>{ye=window.setInterval(()=>{j()},G)},W),le(`mouseup`,document,F,{once:!0})}function L(){xe(),I=window.setTimeout(()=>{be=window.setInterval(()=>{me()},G)},W),le(`mouseup`,document,xe,{once:!0})}let Ce=()=>{be||me()},R=()=>{ye||j()};function we(t){var n;if(t.key===`Enter`){if(t.target===u.value?.wrapperElRef)return;E({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&((n=u.value)==null||n.deactivate())}else if(t.key===`ArrowUp`){if(!O.value||e.keyboard.ArrowUp===!1)return;t.preventDefault(),E({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&me()}else if(t.key===`ArrowDown`){if(!D.value||e.keyboard.ArrowDown===!1)return;t.preventDefault(),E({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&j()}}function Te(t){g.value=t,e.updateValueOnInput&&!e.format&&!e.parse&&e.precision===void 0&&E({offset:0,doUpdateIfValid:!0,isInputing:!0,fixPrecision:!1})}re(h,()=>{C()});let Ee={focus:()=>u.value?.focus(),blur:()=>u.value?.blur(),select:()=>u.value?.select()},De=oe(`InputNumber`,r,n);return Object.assign(Object.assign({},Ee),{rtlEnabled:De,inputInstRef:u,minusButtonInstRef:d,addButtonInstRef:f,mergedClsPrefix:n,mergedBordered:t,uncontrolledValue:m,mergedValue:h,mergedPlaceholder:ie,displayedValueInvalid:ce,mergedSize:c,mergedDisabled:l,displayedValue:g,addable:O,minusable:D,mergedStatus:te,handleFocus:ge,handleBlur:M,handleClear:_e,handleMouseDown:ve,handleAddClick:Ce,handleMinusClick:R,handleAddMousedown:L,handleMinusMousedown:Se,handleKeyDown:we,handleUpdateDisplayedValue:Te,mergedTheme:a,inputThemeOverrides:{paddingSmall:`0 8px 0 10px`,paddingMedium:`0 8px 0 12px`,paddingLarge:`0 8px 0 14px`},buttonThemeOverrides:v(()=>{let{self:{iconColorDisabled:e}}=a.value,[t,n,r,i]=w(e);return{textColorTextDisabled:`rgb(${t}, ${n}, ${r})`,opacityDisabled:`${i}`}})})},render(){let{mergedClsPrefix:e,$slots:t}=this,r=()=>n(de,{text:!0,disabled:!this.minusable||this.mergedDisabled||this.readonly,focusable:!1,theme:this.mergedTheme.peers.Button,themeOverrides:this.mergedTheme.peerOverrides.Button,builtinThemeOverrides:this.buttonThemeOverrides,onClick:this.handleMinusClick,onMousedown:this.handleMinusMousedown,ref:`minusButtonInstRef`},{icon:()=>j(t[`minus-icon`],()=>[n(R,{clsPrefix:e},{default:()=>n(N,null)})])}),i=()=>n(de,{text:!0,disabled:!this.addable||this.mergedDisabled||this.readonly,focusable:!1,theme:this.mergedTheme.peers.Button,themeOverrides:this.mergedTheme.peerOverrides.Button,builtinThemeOverrides:this.buttonThemeOverrides,onClick:this.handleAddClick,onMousedown:this.handleAddMousedown,ref:`addButtonInstRef`},{icon:()=>j(t[`add-icon`],()=>[n(R,{clsPrefix:e},{default:()=>n(ge,null)})])});return n(`div`,{class:[`${e}-input-number`,this.rtlEnabled&&`${e}-input-number--rtl`]},n(M,{ref:`inputInstRef`,autofocus:this.autofocus,status:this.mergedStatus,bordered:this.mergedBordered,loading:this.loading,value:this.displayedValue,onUpdateValue:this.handleUpdateDisplayedValue,theme:this.mergedTheme.peers.Input,themeOverrides:this.mergedTheme.peerOverrides.Input,builtinThemeOverrides:this.inputThemeOverrides,size:this.mergedSize,placeholder:this.mergedPlaceholder,disabled:this.mergedDisabled,readonly:this.readonly,round:this.round,textDecoration:this.displayedValueInvalid?`line-through`:void 0,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeydown:this.handleKeyDown,onMousedown:this.handleMouseDown,onClear:this.handleClear,clearable:this.clearable,inputProps:this.inputProps,internalLoadingBeforeSuffix:!0},{prefix:()=>this.showButton&&this.buttonPlacement===`both`?[r(),me(t.prefix,t=>t?n(`span`,{class:`${e}-input-number-prefix`},t):null)]:t.prefix?.call(t),suffix:()=>this.showButton?[me(t.suffix,t=>t?n(`span`,{class:`${e}-input-number-suffix`},t):null),this.buttonPlacement===`right`?r():null,i()]:t.suffix?.call(t)}))}}),K={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Ve=o({name:`Flag`,render:function(e,t){return u(),s(`svg`,K,t[0]||=[l(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,fill:`currentColor`},null,-1)])}}),q={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},He=o({name:`Pause`,render:function(e,t){return u(),s(`svg`,q,t[0]||=[l(`path`,{d:`M12 8v16H8V8h4m0-2H8a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2z`,fill:`currentColor`},null,-1),l(`path`,{d:`M24 8v16h-4V8h4m0-2h-4a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2z`,fill:`currentColor`},null,-1)])}}),Ue={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},We=o({name:`Play`,render:function(e,t){return u(),s(`svg`,Ue,t[0]||=[l(`path`,{d:`M7 28a1 1 0 0 1-1-1V5a1 1 0 0 1 1.482-.876l20 11a1 1 0 0 1 0 1.752l-20 11A1 1 0 0 1 7 28zM8 6.69V25.31L24.925 16z`,fill:`currentColor`},null,-1)])}}),Ge={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Ke=o({name:`Reset`,render:function(e,t){return u(),s(`svg`,Ge,t[0]||=[l(`path`,{d:`M18 28A12 12 0 1 0 6 16v6.2l-3.6-3.6L1 20l6 6l6-6l-1.4-1.4L8 22.2V16a10 10 0 1 1 10 10z`,fill:`currentColor`},null,-1)])}}),qe={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Je=o({name:`Trophy`,render:function(e,t){return u(),s(`svg`,qe,t[0]||=[l(`path`,{d:`M26 7h-2V6a2.002 2.002 0 0 0-2-2H10a2.002 2.002 0 0 0-2 2v1H6a2.002 2.002 0 0 0-2 2v3a4.005 4.005 0 0 0 4 4h.322A8.169 8.169 0 0 0 15 21.934V26h-5v2h12v-2h-5v-4.069A7.966 7.966 0 0 0 23.74 16H24a4.005 4.005 0 0 0 4-4V9a2.002 2.002 0 0 0-2-2zM8 14a2.002 2.002 0 0 1-2-2V9h2zm14 0a6 6 0 0 1-6.186 5.997A6.2 6.2 0 0 1 10 13.707V6h12zm4-2a2.002 2.002 0 0 1-2 2V9h2z`,fill:`currentColor`},null,-1)])}}),Ye={key:0,class:`timer-preview`},Xe=[`src`],Ze=[`src`],Qe={key:3,class:`preview-message`},$e={key:4,class:`preview-message`},et={key:5,class:`preview-message`},tt={key:6,class:`preview-message`},nt={key:7,class:`preview-results`},rt=[`src`],it=Oe(o({__name:`ScreenPreview`,props:{state:{},questions:{},teams:{}},setup(t){let n=t,i=p(Date.now()),a=p(0),o=p(Date.now()),ee=p(),te=null,f=v(()=>{let e=n.state.backgroundImage||n.state.coverImage;return e?{backgroundImage:`linear-gradient(rgb(0 0 0 / 55%), rgb(0 0 0 / 55%)), url("${e}")`}:{}}),m=v(()=>n.state.timerState===`SCREEN_TIMER_STATE_RUNNING`?Math.max(0,a.value-(i.value-o.value)/1e3):a.value),h=v(()=>{let e=Math.floor(m.value/60),t=Math.floor(m.value%60);return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}),g=v(()=>Me(n.state.introAudio)),ne=v(()=>Me(n.state.conclusionVideo));return re(()=>[n.state.timerRemainingSeconds,n.state.timerState,n.state.stateVersion],()=>{let e=Math.max(0,Number(n.state.timerRemainingSeconds||0));if(n.state.timerState===`SCREEN_TIMER_STATE_RUNNING`&&ee.value===n.state.timerState){let t=Math.max(0,a.value-(Date.now()-o.value)/1e3);if(Math.abs(e-t)<=.5)return}a.value=e,o.value=Date.now(),ee.value=n.state.timerState},{immediate:!0}),r(()=>{te=window.setInterval(()=>{i.value=Date.now()},250)}),_(()=>{te!=null&&window.clearInterval(te)}),(n,r)=>(u(),s(`div`,{class:`screen-preview`,style:c(f.value)},[t.state.mode===`SCREEN_MODE_TIMER`?(u(),s(`div`,Ye,[l(`h2`,null,S(t.state.timerLabel||`Перерыв`),1),l(`strong`,null,S(h.value),1)])):t.state.mode===`SCREEN_MODE_INTRO`&&g.value?(u(),s(`audio`,{key:1,src:g.value,controls:``},null,8,Xe)):t.state.mode===`SCREEN_MODE_CONCLUSION`&&ne.value?(u(),s(`video`,{key:2,src:ne.value,autoplay:``,class:`preview-video`,loop:``,muted:``,playsinline:``},null,8,Ze)):t.state.mode===`SCREEN_MODE_CONCLUSION`?(u(),s(`div`,Qe,` Видео закрывашки не задано `)):t.state.mode===`SCREEN_MODE_INTRO_DONE`?(u(),s(`div`,$e,`Успехов`)):t.state.mode===`SCREEN_MODE_CONCLUSION_DONE`?(u(),s(`div`,et,` Спасибо за игру! `)):t.state.mode===`SCREEN_MODE_TEXT`?(u(),s(`div`,tt,S(t.state.text),1)):t.state.mode===`SCREEN_MODE_RESULTS`?(u(),s(`div`,nt,[r[4]||=l(`h2`,null,`Результаты`,-1),l(`table`,null,[l(`thead`,null,[l(`tr`,null,[r[0]||=l(`th`,null,`Место`,-1),r[1]||=l(`th`,null,`Команда`,-1),(u(!0),s(b,null,d(t.questions,e=>(u(),s(`th`,{key:e.code},S(e.code),1))),128)),r[2]||=l(`th`,null,`Сумма`,-1),r[3]||=l(`th`,null,`Ходы`,-1)])]),l(`tbody`,null,[(u(!0),s(b,null,d(t.teams,e=>(u(),s(`tr`,{key:e.team?.ID},[l(`td`,null,S(e.place),1),l(`td`,null,S(e.team?.name),1),(u(!0),s(b,null,d(t.questions,t=>(u(),s(`td`,{key:t.code},S(e.answers?.find(e=>e.questionCode===t.code)?.score??0),1))),128)),l(`td`,null,S(e.totalScore),1),l(`td`,null,S(e.actionsCount),1)]))),128))])])])):t.state.coverImage?(u(),s(`img`,{key:8,src:t.state.coverImage,alt:`Обложка дела`,class:`preview-cover`},null,8,rt)):e(``,!0)],4))}}),[[`__scopeId`,`data-v-d5134fb8`]]),at={class:`center-block-custom`},ot={class:`width1200`},st={class:`settings-block`},ct={class:`screens-block`},lt={key:1,class:`screen-empty`},ut={class:`screen-status`},dt={key:0,class:`screen-error`},ft={class:`screen-plan`},pt={key:0,class:`screen-empty`},mt={class:`map-preview-layout`},ht={class:`map-block`},gt=[`onPointerdown`],_t=[`onPointerdown`],vt={key:2},yt=[`onClick`],bt={class:`screen-preview-panel`},xt={key:1,class:`screen-preview-placeholder`},St={class:`team-content-block`},Ct={class:`title-block`},wt={class:`team-name-block`},Tt={key:0},Et={key:1},Dt={key:0},Ot={key:0},kt={key:1},At={key:2},jt={key:3},Mt={key:4},Nt={key:0,class:`give-application-image-block`},Pt=[`src`],Ft=[`src`],It=[`href`],Lt=[`href`],Rt={class:`qr-block`},zt={key:0,class:`answers-empty`},Bt={class:`answers-question-title`},Vt={class:`answers-question-answer`},Ht={class:`correct-answer`},Ut={class:`answers-team-name`},Wt={class:`answers-team-answer`},Gt={key:0,class:`answers-empty`},J=Oe(o({__name:`GamePage`,setup(n){let r=ye(),o=Ae(),_=p(!1),re=ie(),x=h().params.id,C=be(),ae=p(!1),w=p({name:``,description:``,format:`online`,location:``}),T=p(!1),E=p(!1),oe=p(!1),se=p(!1),ce=p(``),le=p(``),ue=p(1),de=p(``),pe=p(!1),A=p(``),me=p(``),j=p(!1),he=p(1),ge=p([]),N=p(!1),Ce=p(!1),R=p(``),z=p(),Ee=p(!1),Oe=p(!1),Ie,Le=0,B=p({ID:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,format:void 0,location:void 0,scenario:void 0,teams:void 0}),Re=[{label:`Ожидает ответа`,value:`pending`},{label:`Подтверждено`,value:`confirmed`},{label:`Отменено`,value:`cancelled`}],ze=v(()=>(B.value.teams||[]).filter(e=>e.participationStatus!==`cancelled`).length),V=v(()=>new Map((B.value.teams||[]).filter(e=>e.applications?.length).map(e=>[e.ID,e]))),H=p([]),U=p(),W=p([]),G=p(!1),K=p(!1),q=p(`use`),Ue=0,Ge=new WeakMap,qe=0,Ye=p([]),Xe=p([]),Ze=p([]),Qe=p(!1),$e=p(100),et=p(0),tt=v(()=>H.value.find(e=>e.status===`connected`)||H.value[0]),nt=v(()=>H.value.some(e=>e.status===`disconnected`)),rt=[{label:`Обложка`,value:`SCREEN_MODE_COVER`},{label:`Введение`,value:`SCREEN_MODE_INTRO`},{label:`Успехов`,value:`SCREEN_MODE_INTRO_DONE`},{label:`Закрывашка`,value:`SCREEN_MODE_CONCLUSION`},{label:`Спасибо за игру`,value:`SCREEN_MODE_CONCLUSION_DONE`},{label:`Результаты`,value:`SCREEN_MODE_RESULTS`},{label:`Таймер`,value:`SCREEN_MODE_TIMER`},{label:`Текст`,value:`SCREEN_MODE_TEXT`}],J=p(1),Y=p({x:0,y:0}),X,Kt;async function Z(e){let t=await r.GetGame({ID:e});B.value=t.game,B.value.teams=B.value.teams?.sort((e,t)=>{let n=0;(e.applications?.length||0)>0&&(n=1);let r=0;if((t.applications?.length||0)>0&&(r=1),n>r)return-1;if(n<r)return 1;let i=e.name||``,a=t.name||``;return i>a?1:i<a?-1:0})}Z(Number(x));async function qt(){let e=await r.GetGameScreens({gameID:Number(x)});if(H.value=e.screens||[],tt.value?.mode===`SCREEN_MODE_RESULTS`){let e=await r.GetGameResults({gameID:Number(x)});Ye.value=e.questions||[],Xe.value=e.teams||[]}else Ye.value=[],Xe.value=[]}qt();function Jt(){return q.value===`edit`}async function Yt(){if(Jt()||G.value)return;let e=++Ue,t=await r.GetScreenPlan({gameID:Number(x)});e!==Ue||Jt()||G.value||(U.value=t.plan,W.value=t.plan?.steps?.map(e=>({...e}))||[])}Yt();function Xt(){W.value.push({mode:`SCREEN_MODE_TEXT`,text:`Новый экран`,timerLabel:`Перерыв`,timerDurationSeconds:600}),G.value=!0,q.value=`edit`}function Zt(){U.value&&(W.value=U.value.steps?.map(e=>({...e}))||[],q.value=`edit`)}function Qt(){G.value&&!window.confirm(`Отменить несохранённые изменения плана?`)||(W.value=U.value?.steps?.map(e=>({...e}))||[],G.value=!1,q.value=`use`)}function $t(e){W.value.splice(e,1),G.value=!0}function en(e,t){let n=e+t;if(n<0||n>=W.value.length)return;let[r]=W.value.splice(e,1);W.value.splice(n,0,r),G.value=!0}function tn(){G.value=!0}function nn(e){let t=Ge.get(e);return t===void 0&&(t=qe++,Ge.set(e,t)),t}async function rn(){if(!K.value){Ue+=1,K.value=!0;try{let e=Math.min(U.value?.currentStep||0,Math.max(0,W.value.length-1)),t=await r.SaveScreenPlan({gameID:Number(x),steps:W.value,currentStep:e});U.value=t.plan,W.value=t.plan?.steps?.map(e=>({...e}))||[],G.value=!1,q.value=`use`,C.success(t.plan?`План экранов сохранён`:`План экранов удалён`)}catch(e){C.error(e instanceof Error?e.message:`Не удалось сохранить план экранов`)}finally{K.value=!1}}}async function an(e){if(!(G.value||!U.value))try{let t=await r.SetScreenPlanStep({gameID:Number(x),currentStep:e});U.value=t.plan,await qt()}catch(e){C.error(e instanceof Error?e.message:`Не удалось перейти на шаг плана`)}}async function Q(e,t){if(!(G.value||e!==`SCREEN_MODE_TIMER`&&e!==`SCREEN_MODE_INTRO`&&e!==`SCREEN_MODE_CONCLUSION`))try{await r.SendScreenCommand({gameID:Number(x),command:t,positionMs:Math.max(0,Math.round(et.value*1e3)),volume:Math.max(0,Math.min(100,Math.round($e.value)))}),await qt()}catch(e){C.error(e instanceof Error?e.message:`Не удалось управлять экраном`)}}function on(){cancelAnimationFrame(Le),Ie?.getTracks().forEach(e=>e.stop()),Ie=void 0,Oe.value=!1}function sn(){on(),Ce.value=!1}function cn(e){try{let t=new URL(e,window.location.origin),n=t.searchParams.get(`screenId`),r=t.searchParams.get(`accessToken`);return t.pathname!==`/screen`||!n||!r?void 0:{screenID:n,accessToken:r}}catch{return}}async function ln(e,t){if(!Ee.value){Ee.value=!0;try{await r.BindScreen({screenID:e,accessToken:t,gameID:Number(x)}),C.success(`Экран привязан к игре`),await qt(),sn()}catch(e){C.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{Ee.value=!1}}}async function un(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){R.value=`Сканирование камерой не поддерживается в этом браузере.`,Ce.value=!0;return}Ce.value=!0,R.value=``;try{if(Ie=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),Oe.value=!0,await ee(),!z.value)return;z.value.srcObject=Ie,await z.value.play();let t=new e,n=async()=>{if(!(!z.value||!Ie))try{let e=(await t.detect(z.value))[0]?.rawValue;if(e){let t=cn(e);if(t){on(),await ln(t.screenID,t.accessToken);return}R.value=`Это не QR-код экрана.`}Le=requestAnimationFrame(n)}catch{R.value=`Не удалось распознать QR-код.`,on()}};Le=requestAnimationFrame(n)}catch{R.value=`Не удалось открыть камеру.`,on()}}async function dn(){if(X||Qe.value)return;let e=await r.GetGameMap({gameID:Number(x)});Ze.value=e.items||[]}dn();async function fn(e,t=e.hidden){Qe.value=!0;try{await r.UpdateGameMapItem({gameID:Number(x),kind:e.kind,itemID:e.itemID,x:Math.round(e.x||0),y:Math.round(e.y||0),hidden:t})}finally{Qe.value=!1}}function pn(e,t){X={item:e,startX:t.clientX,startY:t.clientY,itemX:e.x||0,itemY:e.y||0},window.addEventListener(`pointermove`,mn),window.addEventListener(`pointerup`,hn,{once:!0})}function mn(e){if(!X)return;let t=X.item.kind===`team`?20:1;X.item.x=Math.round((X.itemX+(e.clientX-X.startX)/J.value)/t)*t,X.item.y=Math.round((X.itemY+(e.clientY-X.startY)/J.value)/t)*t}async function hn(){if(!X)return;let e=X.item;X=void 0,window.removeEventListener(`pointermove`,mn),await fn(e),await dn()}async function gn(e){e.hidden=!e.hidden,await fn(e)}function _n(e){J.value=Math.min(2,Math.max(.5,Number((J.value+e).toFixed(2))))}function vn(){J.value=1,Y.value={x:0,y:0}}function yn(e){e.button===0&&(Kt={startX:e.clientX,startY:e.clientY,offsetX:Y.value.x,offsetY:Y.value.y},window.addEventListener(`pointermove`,bn),window.addEventListener(`pointerup`,xn,{once:!0}))}function bn(e){Kt&&(Y.value={x:Kt.offsetX+e.clientX-Kt.startX,y:Kt.offsetY+e.clientY-Kt.startY})}function xn(){Kt=void 0,window.removeEventListener(`pointermove`,bn)}function Sn(e){e.preventDefault(),_n(e.deltaY<0?.1:-.1)}async function Cn(e){await r.SetScreenSound({screenID:e.ID,soundEnabled:!0}),await qt()}async function wn(e){await r.UnbindScreen({screenID:e.ID}),await qt()}async function Tn(e,t,n=!1){let r=`/team-story/`+e+`?password=`+t;if(n){window.open(r,`_blank`);return}re.push(r)}async function En(){if(!(_.value||!B.value.teams?.length)){_.value=!0;try{let{blob:e,filename:t}=await o.downloadTeamQR(B.value.ID),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}catch(e){C.error(e instanceof Error?e.message:`Не удалось скачать QR команд`)}finally{_.value=!1}}}function Dn(){re.push(`/games/`+x+`/results`)}function On(){w.value={name:B.value.name||``,description:B.value.description||``,format:B.value.format||`online`,location:B.value.location||``},ae.value=!0}function kn(){ae.value=!1}async function An(){await r.UpdateGame({ID:B.value.ID,name:w.value.name,description:w.value.description,format:w.value.format,location:w.value.location.trim(),startAt:B.value.startAt,scenarioID:B.value.scenario?.ID}),await Z(B.value.ID),ae.value=!1}let jn=p({ID:0,name:``,status:``,password:``,actionsCount:0,applications:[],captainEmail:void 0,participantsCount:void 0,participationStatus:void 0,participationSource:void 0,participationEmailError:void 0,participationEmailSent:void 0}),Mn=p(``),Nn=p({ID:0,name:``,status:``,password:``,actionsCount:0,applications:[],captainEmail:void 0,participantsCount:void 0,participationStatus:void 0,participationSource:void 0,participationEmailError:void 0,participationEmailSent:void 0}),$=p({name:``,image:``,file_type:``}),Pn=window.location.href;function Fn(e,t){jn.value=e,$.value=t,T.value=!0}async function In(){if(ue.value<1||ue.value>8){C.error(`Укажите от 1 до 8 игроков`);return}await r.AddTeam({gameID:B.value.ID,name:ce.value,captainEmail:le.value.trim(),participantsCount:ue.value}),await Z(B.value.ID),E.value=!1,le.value=``,ue.value=1}async function Ln(){await r.GiveTeamApplications({ID:jn.value.ID,name:$.value.name}),await Z(B.value.ID),T.value=!1}async function Rn(e){Nn.value=e,oe.value=!0}async function zn(){await r.DeleteTeam({ID:Nn.value.ID}),await Z(B.value.ID),oe.value=!1}async function Bn(){await r.DeleteGame({ID:B.value.ID}),C.success(`Игра удалена`),re.push(`/games`)}function Vn(e,t){return ne()+`/team-story/`+e+`?password=`+t}async function Hn(e,t){A.value=e,me.value=t,pe.value=!0}function Un(){he.value=1,ge.value=[],j.value=!0}async function Wn(){if(!(N.value||!B.value.ID)){N.value=!0;try{let e=await r.IssueGameTickets({gameID:B.value.ID,count:he.value});ge.value=e.tickets||[],C.success(`Выпущено билетов: ${ge.value.length}`)}catch(e){C.error(e instanceof Error?e.message:`Не удалось выпустить билеты`)}finally{N.value=!1}}}Ne(()=>{Z(Number(x)),qt(),Yt(),dn()},2e3),te(on);async function Gn(){await r.ResetGame({ID:B.value.ID}),await Z(B.value.ID)}async function Kn(){await r.StartGame({ID:B.value.ID}),await Z(B.value.ID)}async function qn(){await r.PauseGame({ID:B.value.ID}),await Z(B.value.ID)}async function Jn(){await r.PlayGame({ID:B.value.ID}),await Z(B.value.ID)}async function Yn(){await r.FinishGame({ID:B.value.ID}),await Z(B.value.ID)}let Xn=p(!1),Zn=p(!1),Qn=p([]),$n=p(0),er=p(0),tr=p([]),nr=p([]),rr=p({});function ir(e,t){return(e??``)+`:`+(t??``)}function ar(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function or(e,t){rr.value[e]=t===null?void 0:t}async function sr(){let e=await r.GetGameAnswers({gameID:Number(x)});tr.value=e.questions||[],nr.value=e.teams||[];let t={};for(let e of nr.value)for(let n of e.answers||[])t[ir(e.team?.ID,n.questionCode)]=n.score;rr.value=t}async function cr(){Xn.value=!0,await sr()}async function lr(){Zn.value=!0;let e=await r.GetGameReviewsForModeration({gameID:Number(x)});Qn.value=e.reviews||[],$n.value=e.averageRating||0,er.value=e.reviewsCount||0}async function ur(e,t){await r.ModerateGameReview({ID:e.ID,status:t}),await lr()}async function dr(){for(let e of tr.value)for(let t of nr.value){let n=rr.value[ir(t.team?.ID,e.code)];await r.SetTeamAnswerScore({ID:t.team?.ID,questionCode:e.code,score:n??void 0})}C.success(`Баллы сохранены`),await sr()}function fr(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function pr(e,t){if(e==``)return`Игра ещё не началась`;let n=Pe(e),r=fr();t!=``&&(r=Pe(t));let i=r.getTime()-n.getTime();if(i<0)return`Игра ещё не началась`;let a=Math.floor(i/1e3),o=Math.floor(a/60),s=Math.floor(o/60),c=Math.floor(s/24),l=Math.floor(c/30),ee=Math.floor(c/365);return ee>0?`${ee}г ${c%365}д`:l>0?`${l}мес ${c%30}д`:c>0?`${c}д ${s%24}ч`:s>0?`${s}ч ${o%60}м`:o>0?`${o}м ${a%60}с`:`${a}с`}let mr=p(``);return Ne(()=>{mr.value=pr(B.value.startedAt||``,B.value.endedAt||``)},1e3),(n,r)=>(u(),s(b,null,[l(`div`,at,[l(`div`,ot,[l(`div`,st,[a(y(I),{justify:`space-between`},{default:f(()=>[a(y(F),null,{default:f(()=>[a(y(_e),{bordered:!1,type:`info`},{default:f(()=>[m(` Участвуют команд: `+S(ze.value),1)]),_:1}),a(y(_e),{type:`info`},{default:f(()=>[m(S(mr.value),1)]),_:1}),y(Fe)(B.value.startAt)?(u(),t(y(_e),{key:0,type:`info`},{default:f(()=>[m(` Начало: `+S(y(Fe)(B.value.startAt)),1)]),_:1})):e(``,!0)]),_:1}),a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{quaternary:``,onClick:r[0]||=e=>Hn(y(Pn),`Админка`)},{default:f(()=>[...r[55]||=[m(` QR `,-1)]]),_:1}),a(y(k),{quaternary:``,onClick:r[1]||=e=>Un()},{default:f(()=>[...r[56]||=[m(` Выпустить билеты `,-1)]]),_:1}),a(y(k),{quaternary:``,onClick:r[2]||=e=>cr()},{default:f(()=>[...r[57]||=[m(` Ответы команд `,-1)]]),_:1}),B.value.status==`finish`?(u(),t(y(k),{key:0,quaternary:``,onClick:r[3]||=e=>Dn()},{default:f(()=>[a(y(P),{class:`settings-icon`},{default:f(()=>[a(y(Je))]),_:1}),r[58]||=m(` Итоги `,-1)]),_:1})):e(``,!0),ze.value?(u(),t(y(k),{key:1,quaternary:``,loading:_.value,disabled:_.value,onClick:r[4]||=e=>En()},{default:f(()=>[...r[59]||=[m(` QR команд `,-1)]]),_:1},8,[`loading`,`disabled`])):e(``,!0),a(y(k),{quaternary:``,onClick:r[5]||=e=>On()},{default:f(()=>[a(y(P),{class:`settings-icon`},{default:f(()=>[a(y(ke))]),_:1}),r[60]||=m(` Настройки `,-1)]),_:1}),(B.value.teams?.length||0)==0?(u(),t(y(k),{key:2,type:`error`,quaternary:``,onClick:r[6]||=e=>se.value=!0},{default:f(()=>[...r[61]||=[m(` Удалить игру `,-1)]]),_:1})):e(``,!0),a(y(F),null,{default:f(()=>[B.value.status==`draft`?e(``,!0):(u(),t(y(k),{key:0,type:`info`,dashed:``,onClick:r[7]||=e=>Gn()},{default:f(()=>[a(y(P),null,{default:f(()=>[a(y(Ke))]),_:1})]),_:1})),B.value.status==`draft`?(u(),t(y(k),{key:1,type:`info`,dashed:``,onClick:r[8]||=e=>Kn()},{default:f(()=>[a(y(P),null,{default:f(()=>[a(y(We))]),_:1})]),_:1})):e(``,!0),B.value.status==`pause`?(u(),t(y(k),{key:2,type:`info`,dashed:``,onClick:r[9]||=e=>Jn()},{default:f(()=>[a(y(P),null,{default:f(()=>[a(y(We))]),_:1})]),_:1})):e(``,!0),B.value.status==`run`?(u(),t(y(k),{key:3,type:`info`,dashed:``,onClick:r[10]||=e=>qn()},{default:f(()=>[a(y(P),null,{default:f(()=>[a(y(He))]),_:1})]),_:1})):e(``,!0),B.value.status==`finish`?e(``,!0):(u(),t(y(k),{key:4,type:`info`,dashed:``,onClick:r[11]||=e=>Yn()},{default:f(()=>[a(y(P),null,{default:f(()=>[a(y(Ve))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),l(`div`,ct,[a(y(I),{align:`center`,justify:`space-between`},{default:f(()=>[r[63]||=l(`p`,{class:`screens-title`},`Экраны`,-1),a(y(k),{size:`small`,type:`primary`,onClick:un},{default:f(()=>[...r[62]||=[m(`Привязать экран`,-1)]]),_:1})]),_:1}),nt.value?(u(),t(y(ve),{key:0,type:`warning`,title:`Проверьте подключение экрана`},{default:f(()=>[...r[64]||=[m(` Один или несколько экранов не выходят на связь более минуты. `,-1)]]),_:1})):e(``,!0),H.value.length===0?(u(),s(`p`,lt,`К игре пока не привязаны экраны.`)):(u(),s(b,{key:2},[(u(!0),s(b,null,d(H.value,n=>(u(),s(`div`,{key:n.ID,class:`screen-row`},[l(`div`,null,[l(`div`,null,`Экран `+S(n.ID),1),l(`div`,ut,S(n.status===`connected`?`Онлайн`:`Оффлайн`),1),n.error?(u(),s(`div`,dt,S(n.error),1)):e(``,!0)]),a(y(I),{justify:`end`},{default:f(()=>[n.soundEnabled?(u(),t(y(_e),{key:0,type:`success`},{default:f(()=>[...r[65]||=[m(`Со звуком`,-1)]]),_:1})):(u(),t(y(k),{key:1,size:`small`,onClick:e=>Cn(n)},{default:f(()=>[...r[66]||=[m(`Назначить звук`,-1)]]),_:1},8,[`onClick`])),a(y(k),{size:`small`,type:`error`,ghost:``,onClick:e=>wn(n)},{default:f(()=>[...r[67]||=[m(` Отвязать `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]))),128)),l(`div`,ft,[a(y(I),{align:`center`,justify:`space-between`},{default:f(()=>[r[72]||=l(`p`,{class:`screens-title`},`План экранов`,-1),a(y(F),null,{default:f(()=>[!U.value&&q.value===`use`?(u(),t(y(k),{key:0,size:`small`,onClick:Xt},{default:f(()=>[...r[68]||=[m(` Создать план `,-1)]]),_:1})):e(``,!0),U.value&&q.value===`use`?(u(),t(y(k),{key:1,size:`small`,onClick:Zt},{default:f(()=>[...r[69]||=[m(`Редактировать`,-1)]]),_:1})):e(``,!0),q.value===`edit`?(u(),s(b,{key:2},[a(y(k),{size:`small`,disabled:K.value,onClick:Qt},{default:f(()=>[...r[70]||=[m(` Отменить `,-1)]]),_:1},8,[`disabled`]),a(y(k),{size:`small`,type:`primary`,loading:K.value,disabled:K.value,onClick:rn},{default:f(()=>[...r[71]||=[m(` Сохранить план `,-1)]]),_:1},8,[`loading`,`disabled`])],64)):e(``,!0)]),_:1})]),_:1}),!U.value&&q.value===`use`?(u(),s(`p`,pt,`План экранов ещё не создан.`)):q.value===`edit`?(u(),s(b,{key:1},[(u(!0),s(b,null,d(W.value,(n,i)=>(u(),t(y(F),{key:nn(n),align:`center`,wrap:``},{default:f(()=>[a(y(L),null,{default:f(()=>[m(S(i+1),1)]),_:2},1024),a(y(fe),{value:n.mode,"onUpdate:value":[e=>n.mode=e,tn],options:rt,disabled:K.value,size:`small`,style:{width:`180px`}},null,8,[`value`,`onUpdate:value`,`disabled`]),n.mode===`SCREEN_MODE_TEXT`?(u(),t(y(M),{key:0,value:n.text,"onUpdate:value":[e=>n.text=e,tn],disabled:K.value,size:`small`,placeholder:`Текст экрана`,style:{"min-width":`240px`}},null,8,[`value`,`onUpdate:value`,`disabled`])):e(``,!0),n.mode===`SCREEN_MODE_TIMER`?(u(),s(b,{key:1},[a(y(M),{value:n.timerLabel,"onUpdate:value":[e=>n.timerLabel=e,tn],disabled:K.value,size:`small`,placeholder:`Надпись таймера`},null,8,[`value`,`onUpdate:value`,`disabled`]),a(y(Be),{value:n.timerDurationSeconds,"onUpdate:value":[e=>n.timerDurationSeconds=e,tn],min:1,max:86400,disabled:K.value,size:`small`,placeholder:`Секунды`},null,8,[`value`,`onUpdate:value`,`disabled`])],64)):e(``,!0),a(y(k),{size:`small`,disabled:K.value||i===0,onClick:e=>en(i,-1)},{default:f(()=>[...r[73]||=[m(` ↑ `,-1)]]),_:1},8,[`disabled`,`onClick`]),a(y(k),{size:`small`,disabled:K.value||i===W.value.length-1,onClick:e=>en(i,1)},{default:f(()=>[...r[74]||=[m(` ↓ `,-1)]]),_:1},8,[`disabled`,`onClick`]),a(y(k),{size:`small`,type:`error`,ghost:``,disabled:K.value,onClick:e=>$t(i)},{default:f(()=>[...r[75]||=[m(` Удалить `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024))),128)),a(y(F),null,{default:f(()=>[a(y(k),{size:`small`,disabled:K.value,onClick:Xt},{default:f(()=>[...r[76]||=[m(` Добавить шаг `,-1)]]),_:1},8,[`disabled`]),W.value.length?(u(),t(y(k),{key:0,size:`small`,disabled:K.value,onClick:r[12]||=e=>{W.value=[],tn()}},{default:f(()=>[...r[77]||=[m(` Удалить план `,-1)]]),_:1},8,[`disabled`])):e(``,!0)]),_:1})],64)):U.value?(u(!0),s(b,{key:2},d(U.value.steps||[],(n,i)=>(u(),t(y(F),{key:i,align:`center`,wrap:``},{default:f(()=>[a(y(L),null,{default:f(()=>[m(S(i+1),1)]),_:2},1024),a(y(L),null,{default:f(()=>[m(S(rt.find(e=>e.value===n.mode)?.label)+` `,1),n.mode===`SCREEN_MODE_TEXT`?(u(),s(b,{key:0},[m(`: `+S(n.text),1)],64)):n.mode===`SCREEN_MODE_TIMER`?(u(),s(b,{key:1},[m(` : `+S(n.timerLabel)+` (`+S(n.timerDurationSeconds)+` с) `,1)],64)):e(``,!0)]),_:2},1024),a(y(k),{size:`small`,type:U.value.currentStep===i?`primary`:`default`,disabled:U.value.currentStep===i,onClick:e=>an(i)},{default:f(()=>[...r[78]||=[m(` Показать `,-1)]]),_:1},8,[`type`,`disabled`,`onClick`]),U.value.currentStep===i?(u(),s(b,{key:0},[n.mode===`SCREEN_MODE_TIMER`?(u(),s(b,{key:0},[a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_TIMER_START`)},{default:f(()=>[...r[79]||=[m(` Старт `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_TIMER_PAUSE`)},{default:f(()=>[...r[80]||=[m(` Пауза `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_TIMER_RESUME`)},{default:f(()=>[...r[81]||=[m(` Продолжить `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_TIMER_RESET`)},{default:f(()=>[...r[82]||=[m(` Сбросить `,-1)]]),_:1},8,[`onClick`])],64)):n.mode===`SCREEN_MODE_INTRO`||n.mode===`SCREEN_MODE_CONCLUSION`?(u(),s(b,{key:1},[a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_PLAY`)},{default:f(()=>[...r[83]||=[m(` Запуск `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_PAUSE`)},{default:f(()=>[...r[84]||=[m(` Пауза `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_RESUME`)},{default:f(()=>[...r[85]||=[m(` Продолжить `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_STOP`)},{default:f(()=>[...r[86]||=[m(` Стоп `,-1)]]),_:1},8,[`onClick`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_REPLAY`)},{default:f(()=>[...r[87]||=[m(` Повтор `,-1)]]),_:1},8,[`onClick`]),a(y(Be),{value:$e.value,"onUpdate:value":r[13]||=e=>$e.value=e,min:0,max:100,step:5,size:`small`},null,8,[`value`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_VOLUME`)},{default:f(()=>[...r[88]||=[m(` Громкость `,-1)]]),_:1},8,[`onClick`]),a(y(Be),{value:et.value,"onUpdate:value":r[14]||=e=>et.value=e,min:0,step:5,size:`small`},null,8,[`value`]),a(y(k),{size:`small`,onClick:e=>Q(n.mode,`SCREEN_COMMAND_SEEK`)},{default:f(()=>[...r[89]||=[m(` Перемотать `,-1)]]),_:1},8,[`onClick`])],64)):e(``,!0)],64)):e(``,!0)]),_:2},1024))),128)):e(``,!0)])],64))]),l(`div`,mt,[l(`div`,ht,[a(y(I),{align:`center`,justify:`space-between`},{default:f(()=>[r[93]||=l(`p`,{class:`screens-title`},`Карта помещения`,-1),a(y(F),null,{default:f(()=>[a(y(k),{size:`small`,onClick:r[15]||=e=>_n(-.1)},{default:f(()=>[...r[90]||=[m(`−`,-1)]]),_:1}),a(y(L),null,{default:f(()=>[m(S(Math.round(J.value*100))+`%`,1)]),_:1}),a(y(k),{size:`small`,onClick:r[16]||=e=>_n(.1)},{default:f(()=>[...r[91]||=[m(`+`,-1)]]),_:1}),a(y(k),{size:`small`,onClick:vn},{default:f(()=>[...r[92]||=[m(`Сбросить`,-1)]]),_:1})]),_:1})]),_:1}),l(`div`,{class:`map-field`,onPointerdown:yn,onWheel:Sn},[l(`div`,{class:`map-canvas`,style:c({transform:`translate(${Y.value.x}px, ${Y.value.y}px) scale(${J.value})`})},[(u(!0),s(b,null,d(Ze.value,n=>g((u(),s(`div`,{key:`${n.kind}-${n.itemID}`,class:i([`map-item`,[n.kind===`screen`?`map-screen`:n.kind===`organizer_desk`?`map-organizer-desk`:`map-team`,{"map-team-needs-applications":n.kind===`team`&&V.value.has(n.itemID)}]]),style:c({left:`${n.x||0}px`,top:`${n.y||0}px`}),onPointerdown:we(e=>n.kind!==`team`&&pn(n,e),[`stop`])},[n.kind===`team`?(u(),s(`div`,{key:0,class:`map-team-handle`,onPointerdown:we(e=>pn(n,e),[`stop`])},null,40,_t)):e(``,!0),l(`span`,null,S(n.label),1),n.kind===`team`&&V.value.has(n.itemID)?(u(),t(y(F),{key:1,class:`map-team-applications`,vertical:``},{default:f(()=>[(u(!0),s(b,null,d(V.value.get(n.itemID)?.applications,e=>(u(),t(y(k),{key:e.name,size:`small`,onClick:t=>Fn(V.value.get(n.itemID),e)},{default:f(()=>[m(` Выдать: `+S(e.name),1)]),_:2},1032,[`onClick`]))),128))]),_:2},1024)):e(``,!0),n.kind===`screen`?(u(),s(`small`,vt,S(n.status)+S(n.soundEnabled?` · звук`:``),1)):e(``,!0),l(`button`,{class:`map-item-hide`,type:`button`,onPointerdown:r[17]||=we(()=>{},[`stop`]),onClick:we(e=>gn(n),[`stop`])},` × `,40,yt)],46,gt)),[[Te,!n.hidden]])),128))],4)],32),Ze.value.some(e=>e.hidden)?(u(),t(y(F),{key:0,class:`map-hidden-items`},{default:f(()=>[(u(!0),s(b,null,d(Ze.value.filter(e=>e.hidden),e=>(u(),t(y(k),{key:`hidden-${e.kind}-${e.itemID}`,size:`small`,onClick:t=>gn(e)},{default:f(()=>[m(` Добавить `+S(e.label),1)]),_:2},1032,[`onClick`]))),128))]),_:1})):e(``,!0)]),l(`aside`,bt,[r[94]||=l(`p`,{class:`screens-title`},`Превью экрана`,-1),tt.value?.status===`connected`?(u(),t(it,{key:0,state:tt.value,questions:Ye.value,teams:Xe.value},null,8,[`state`,`questions`,`teams`])):(u(),s(`div`,xt,`Экран не подключён`))])]),l(`div`,{class:`team-block team-block-hover`,onClick:r[18]||=e=>E.value=!0},[...r[95]||=[l(`p`,{class:`place-image-plus`},`+`,-1)]]),(u(!0),s(b,null,d(B.value.teams,n=>(u(),s(`div`,{key:n.ID,class:`team-block`},[l(`div`,St,[a(y(I),{justify:`space-between`},{default:f(()=>[l(`div`,Ct,[l(`span`,wt,[m(S(n.name)+` `,1),n.captainEmail?(u(),s(`small`,Tt,` — `+S(n.captainEmail),1)):e(``,!0),n.participantsCount?(u(),s(`small`,Et,` · Участников: `+S(n.participantsCount),1)):e(``,!0)]),n.captainEmail||n.participationStatus!==`pending`?(u(),s(`div`,Dt,[m(S(Re.find(e=>e.value===n.participationStatus)?.label),1),n.participationSource===`automatic`?(u(),s(`span`,Ot,` · автоматически`)):e(``,!0)])):e(``,!0),n.captainEmail?n.participationEmailError?(u(),s(`div`,At,` Ошибка отправки: `+S(n.participationEmailError),1)):n.participationEmailSent?(u(),s(`div`,jt,`Письмо отправлено`)):e(``,!0):(u(),s(`div`,kt,`Почта капитана не указана`)),n.participationStatus===`cancelled`?e(``,!0):(u(),s(`div`,Mt,` Поездки: `+S(n.actionsCount),1))]),a(y(I),{justify:`end`},{default:f(()=>[n.participationStatus===`cancelled`?e(``,!0):(u(),t(y(k),{key:0,onClick:e=>Hn(Vn(n.ID,n.password),`Подсмотреть игру`)},{default:f(()=>[...r[96]||=[m(` QR `,-1)]]),_:1},8,[`onClick`])),n.participationStatus===`cancelled`?e(``,!0):(u(),t(y(k),{key:1,onClick:e=>Tn(n.ID,n.password,!0)},{default:f(()=>[...r[97]||=[m(` Подсмотреть игру `,-1)]]),_:1},8,[`onClick`])),a(y(k),{type:`error`,ghost:``,onClick:e=>Rn(n)},{default:f(()=>[...r[98]||=[m(` Удалить `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(u(!0),s(b,null,d(n.applications,e=>(u(),t(y(k),{key:e.name,class:`link-button`,onClick:t=>Fn(n,e)},{default:f(()=>[m(` Выдать: `+S(e.name),1)]),_:2},1032,[`onClick`]))),128))])]))),128))])]),a(y(O),{show:Ce.value,"onUpdate:show":r[19]||=e=>Ce.value=e,onAfterLeave:on},{default:f(()=>[a(y(D),{style:{width:`min(600px, 94vw)`},title:`Привязать экран`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:sn},{default:f(()=>[...r[99]||=[m(` x `,-1)]]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[l(`video`,{ref_key:`screenScannerVideo`,ref:z,class:`screen-scanner-video`,muted:``,playsinline:``},null,512),R.value?(u(),t(y(ve),{key:0,type:`error`},{default:f(()=>[m(S(R.value),1)]),_:1})):e(``,!0),!Oe.value&&!Ee.value?(u(),t(y(k),{key:1,type:`primary`,onClick:un},{default:f(()=>[...r[100]||=[m(` Сканировать QR-код `,-1)]]),_:1})):e(``,!0),Oe.value?(u(),t(y(k),{key:2,onClick:on},{default:f(()=>[...r[101]||=[m(`Остановить камеру`,-1)]]),_:1})):e(``,!0),Ee.value?(u(),t(y(k),{key:3,type:`primary`,loading:``},{default:f(()=>[...r[102]||=[m(`Привязка…`,-1)]]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:ae.value,"onUpdate:show":r[26]||=e=>ae.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[20]||=e=>kn()},{default:f(()=>[...r[103]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[25]||=e=>An(),ghost:``},{default:f(()=>[...r[108]||=[m(` Сохранить изменения `,-1)]]),_:1})]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[r[104]||=l(`p`,null,`Название`,-1),a(y(M),{value:w.value.name,"onUpdate:value":r[21]||=e=>w.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),r[105]||=l(`p`,{class:`settings-header`},`Формат игры`,-1),a(y(fe),{value:w.value.format,"onUpdate:value":r[22]||=e=>w.value.format=e,options:[{label:`Online`,value:`online`},{label:`Offline`,value:`offline`}],"aria-label":`Формат игры`},null,8,[`value`]),r[106]||=l(`p`,{class:`settings-header`},`Описание`,-1),a(y(M),{value:w.value.description,"onUpdate:value":r[23]||=e=>w.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),r[107]||=l(`p`,{class:`settings-header`},`Место проведения`,-1),a(y(M),{value:w.value.location,"onUpdate:value":r[24]||=e=>w.value.location=e,type:`text`,placeholder:`Оставьте пустым для онлайн-игры`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:T.value,"onUpdate:show":r[29]||=e=>T.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[27]||=e=>T.value=!1},{default:f(()=>[...r[109]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[28]||=e=>Ln(),ghost:``},{default:f(()=>[...r[112]||=[m(` Выдать `,-1)]]),_:1})]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[r[110]||=l(`p`,null,`Команда`,-1),l(`h3`,null,S(jn.value.name),1),r[111]||=l(`p`,null,`Улика`,-1),l(`h3`,null,S($.value.name),1),y(je)($.value)==`image`&&$.value.image?(u(),s(`div`,Nt,[l(`img`,{src:y(Me)($.value.image),class:`give-application-image`},null,8,Pt)])):y(je)($.value)==`audio`&&$.value.image?(u(),s(`audio`,{key:1,src:y(Me)($.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,Ft)):y(je)($.value)==`pdf`&&$.value.image?(u(),s(`a`,{key:2,href:y(Me)($.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,It)):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:E.value,"onUpdate:show":r[35]||=e=>E.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[30]||=e=>E.value=!1},{default:f(()=>[...r[113]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[34]||=e=>In(),disabled:ce.value.length==0},{default:f(()=>[...r[114]||=[m(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[a(y(M),{value:ce.value,"onUpdate:value":r[31]||=e=>ce.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`]),a(y(M),{value:le.value,"onUpdate:value":r[32]||=e=>le.value=e,"input-props":{type:`email`,autocomplete:`email`},placeholder:`Почта капитана (необязательно)`,"aria-label":`Почта капитана (необязательно)`},null,8,[`value`]),a(y(Be),{value:ue.value,"onUpdate:value":r[33]||=e=>ue.value=e,min:1,max:8,precision:0,placeholder:`Количество игроков`,"aria-label":`Количество игроков`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:oe.value,"onUpdate:show":r[39]||=e=>oe.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[36]||=e=>oe.value=!1},{default:f(()=>[...r[115]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[38]||=e=>zn(),disabled:Mn.value!=Nn.value.name},{default:f(()=>[...r[118]||=[m(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[l(`p`,null,[r[116]||=m(` Введите название команды `,-1),a(y(L),{class:`name-text`,strong:``},{default:f(()=>[m(S(Nn.value.name),1)]),_:1}),r[117]||=m(` чтобы удалить его `,-1)]),a(y(M),{value:Mn.value,"onUpdate:value":r[37]||=e=>Mn.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:se.value,"onUpdate:show":r[43]||=e=>se.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[40]||=e=>se.value=!1},{default:f(()=>[...r[119]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[42]||=e=>Bn(),disabled:de.value!=B.value.name},{default:f(()=>[...r[122]||=[m(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[l(`p`,null,[r[120]||=m(` Введите название игры `,-1),a(y(L),{class:`name-text`,strong:``},{default:f(()=>[m(S(B.value.name),1)]),_:1}),r[121]||=m(` чтобы удалить её `,-1)]),a(y(M),{value:de.value,"onUpdate:value":r[41]||=e=>de.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:j.value,"onUpdate:show":r[47]||=e=>j.value=e},{default:f(()=>[a(y(D),{style:{width:`min(94vw, 700px)`},title:`Выпуск билетов`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[44]||=e=>j.value=!1},{default:f(()=>[...r[123]||=[m(` x `,-1)]]),_:1})]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[a(y(Be),{value:he.value,"onUpdate:value":r[45]||=e=>he.value=e,min:1,max:100},null,8,[`value`]),a(y(k),{type:`primary`,loading:N.value,disabled:N.value,onClick:r[46]||=e=>Wn()},{default:f(()=>[...r[124]||=[m(` Выпустить `,-1)]]),_:1},8,[`loading`,`disabled`]),(u(!0),s(b,null,d(ge.value,e=>(u(),s(`div`,{key:e.ID,class:`issued-ticket`},[l(`div`,null,`Билет №`+S(e.ID),1),l(`a`,{href:e.URL,target:`_blank`,rel:`noreferrer`},`Открыть страницу билета`,8,Lt),a(y(k),{size:`small`,onClick:t=>Hn(e.URL,`Билет №${e.ID}`)},{default:f(()=>[...r[125]||=[m(` Показать QR `,-1)]]),_:1},8,[`onClick`])]))),128))]),_:1})]),_:1})]),_:1},8,[`show`]),a(y(O),{show:pe.value,"onUpdate:show":r[49]||=e=>pe.value=e},{default:f(()=>[a(y(D),{style:{width:`600px`},title:me.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":f(()=>[a(y(k),{onClick:r[48]||=e=>pe.value=!1},{default:f(()=>[...r[126]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[...r[127]||=[]]),default:f(()=>[a(y(F),{vertical:``},{default:f(()=>[l(`div`,Rt,[a(y(Se),{value:A.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`]),a(y(O),{show:Xn.value,"onUpdate:show":r[52]||=e=>Xn.value=e},{default:f(()=>[a(y(D),{style:{width:`min(94vw, 900px)`},title:`Ответы команд`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":f(()=>[a(y(k),{onClick:r[50]||=e=>Xn.value=!1},{default:f(()=>[...r[128]||=[m(` x `,-1)]]),_:1})]),footer:f(()=>[a(y(I),{justify:`end`},{default:f(()=>[a(y(k),{onClick:r[51]||=e=>dr(),disabled:tr.value.length==0},{default:f(()=>[...r[131]||=[m(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:f(()=>[tr.value.length==0?(u(),s(`div`,zt,` Вопросы дела не заданы или команды ещё не отвечали. `)):e(``,!0),(u(!0),s(b,null,d(tr.value,e=>(u(),s(`div`,{key:e.code,class:`answers-question-block`},[l(`p`,Bt,S(e.code)+`: `+S(e.text),1),l(`p`,Vt,[r[129]||=m(` Правильный ответ:`,-1),r[130]||=l(`br`,null,null,-1),l(`span`,Ht,S(e.answer||`—`),1)]),(u(!0),s(b,null,d(nr.value,t=>(u(),s(`div`,{key:t.team?.ID,class:`answers-team-row`},[l(`div`,Ut,S(t.team?.name),1),l(`div`,Wt,S(ar(t,e.code)||`—`),1),a(y(Be),{value:rr.value[ir(t.team?.ID,e.code)],"onUpdate:value":n=>or(ir(t.team?.ID,e.code),n),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])]))),128))]))),128))]),_:1})]),_:1},8,[`show`]),a(y(O),{show:Zn.value,"onUpdate:show":r[54]||=e=>Zn.value=e},{default:f(()=>[a(y(D),{style:{width:`min(94vw, 800px)`},title:`Отзывы игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":f(()=>[a(y(k),{onClick:r[53]||=e=>Zn.value=!1},{default:f(()=>[...r[132]||=[m(` x `,-1)]]),_:1})]),default:f(()=>[a(y(I),{align:`center`,class:`reviews-summary`},{default:f(()=>[a(y(xe),{value:$n.value,readonly:``,"allow-half":``},null,8,[`value`]),l(`span`,null,S(er.value?`${$n.value.toFixed(1)} · ${er.value}`:`Пока нет отзывов`),1)]),_:1}),Qn.value.length==0?(u(),s(`div`,Gt,`Отзывов пока нет.`)):e(``,!0),(u(!0),s(b,null,d(Qn.value,n=>(u(),s(`div`,{key:n.ID,class:`review-row`},[a(y(I),{justify:`space-between`,align:`center`},{default:f(()=>[l(`strong`,null,S(n.teamName),1),a(y(_e),null,{default:f(()=>[m(S(n.status),1)]),_:2},1024)]),_:2},1024),a(y(xe),{value:n.rating,readonly:``,size:`small`},null,8,[`value`]),l(`div`,null,`Сложность: `+S([``,`лёгкая`,`средняя`,`тяжёлая`][n.difficulty||0]),1),l(`p`,null,S(n.text),1),n.status==`pending`?(u(),t(y(I),{key:0,justify:`end`},{default:f(()=>[a(y(k),{type:`success`,onClick:e=>ur(n,`approved`)},{default:f(()=>[...r[133]||=[m(`Одобрить`,-1)]]),_:1},8,[`onClick`]),a(y(k),{type:`error`,ghost:``,onClick:e=>ur(n,`rejected`)},{default:f(()=>[...r[134]||=[m(`Отклонить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):n.status==`approved`?(u(),t(y(I),{key:1,justify:`end`},{default:f(()=>[a(y(k),{type:`error`,ghost:``,onClick:e=>ur(n,`hidden`)},{default:f(()=>[...r[135]||=[m(`Скрыть`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):e(``,!0)]))),128))]),_:1})]),_:1},8,[`show`]),a(De,{active:`games`})],64))}}),[[`__scopeId`,`data-v-071d31e7`]]),Y=o({__name:`GameView`,setup(e){return(e,n)=>(u(),t(J))}});export{Y as default}; |