7 lines
67 KiB
JavaScript
7 lines
67 KiB
JavaScript
import{$ as e,B as t,Bt as n,D as r,E as i,G as a,H as o,Ht as s,I as c,J as l,M as u,N as d,O as f,Q as p,St as m,T as h,Vt as g,X as _,ct as v,et as y,it as b,j as x,l as S,lt as C,ot as w,q as T,tt as E,u as ee,w as D,wt as O,y as k,yt as A}from"./client-BfLkiLXr.js";import{H as j,N as M,R as te,V as N,n as ne,o as re,r as P,t as ie}from"./light-CQqBJDIF.js";import{d as ae,t as F}from"./Card-Bd33-XLP.js";import{i as oe}from"./Suffix-DAc8j_o9.js";import{t as I}from"./Modal-Bf1YRxqZ.js";import{t as se}from"./use-merged-state-dkR4-L7l.js";import{n as ce,t as L}from"./Button-CQugdyX-.js";import{n as le,t as ue}from"./Tabs-DcCALMUK.js";import{t as de}from"./Select-BVkOct7-.js";import{n as fe,r as R}from"./use-form-item-CNSxJCAT.js";import{r as pe,t as z}from"./Upload-BbjGf0yV.js";import{a as me,r as he}from"./resolve-slot-KJb3g6uS.js";import{t as B}from"./Add-BuMSfhgj.js";import{t as V}from"./Input-DtkYsIjo.js";import{n as ge,t as _e}from"./Switch-C-UpupA3.js";import{t as ve}from"./Tag-Cc78OBPZ.js";import{t as H}from"./Alert-BHXYJt68.js";import{n as ye,t as be}from"./es-Cl6F7gM1.js";import{t as U}from"./Space-Cor4u6Cp.js";import{t as W}from"./Flex-DYgSVOkz.js";import{t as xe}from"./Rate-DCI4HKyO.js";import{t as Se}from"./QrCode-CVrmGyVF.js";import{E as G,G as K,Q as q,at as J,it as Ce,n as we,rt as Te,w as Ee}from"./index-CHmzhHGh.js";import{t as De}from"./HeaderMenu-DDKHYZjb.js";import{t as Y}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as Oe}from"./binary_client-JY_1til-.js";import{n as ke,r as Ae}from"./application-C4Z-1-Lm.js";import{n as je,t as Me}from"./datetime-BJNH0M1T.js";import{t as Ne}from"./useSimplePolling-DYmAkdfU.js";function Pe(e){let{textColorDisabled:t}=e;return{iconColorDisabled:t}}var Fe=ne({name:`InputNumber`,common:ie,peers:{Button:Ee,Input:G},self:Pe}),Ie=N([j(`input-number-suffix`,`
|
||
display: inline-block;
|
||
margin-right: 10px;
|
||
`),j(`input-number-prefix`,`
|
||
display: inline-block;
|
||
margin-left: 10px;
|
||
`)]);function Le(e){return e==null||typeof e==`string`&&e.trim()===``?null:Number(e)}function X(e){return e.includes(`.`)&&(/^(-)?\d+.*(\.|0)$/.test(e)||/^-?\d*$/.test(e))||e===`-`||e===`-0`}function Z(e){return e==null?!0:!Number.isNaN(e)}function Re(e,t){return typeof e==`number`?t===void 0?String(e):e.toFixed(t):``}function ze(e){if(e===null)return null;if(typeof e==`number`)return e;{let t=Number(e);return Number.isNaN(t)?null:t}}var Be=800,Ve=100,He=d({name:`InputNumber`,props:Object.assign(Object.assign({},P.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}=M(e),a=P(`InputNumber`,`-input-number`,Ie,Fe,e,n),{localeRef:s}=oe(`InputNumber`),c=fe(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:l,mergedDisabledRef:u,mergedStatusRef:d}=c,f=A(null),p=A(null),h=A(null),g=A(e.defaultValue),_=se(m(e,`value`),g),v=A(``),y=e=>{let t=String(e).split(`.`)[1];return t?t.length:0},b=t=>{let n=[e.min,e.max,e.step,t].map(e=>e===void 0?0:y(e));return Math.max(...n)},x=q(()=>{let{placeholder:t}=e;return t===void 0?s.value.placeholder:t}),S=q(()=>{let t=ze(e.step);return t===null||t===0?1:Math.abs(t)}),C=q(()=>{let t=ze(e.min);return t===null?null:t}),T=q(()=>{let t=ze(e.max);return t===null?null:t}),E=()=>{let{value:t}=_;if(Z(t)){let{format:n,precision:r}=e;n?v.value=n(t):t===null||r===void 0||y(t)>r?v.value=Re(t,void 0):v.value=Re(t,r)}else v.value=String(t)};E();let ee=t=>{let{value:n}=_;if(t===n){E();return}let{"onUpdate:value":r,onUpdateValue:i,onChange:a}=e,{nTriggerFormInput:o,nTriggerFormChange:s}=c;a&&R(a,t),i&&R(i,t),r&&R(r,t),g.value=t,o(),s()},O=({offset:t,doUpdateIfValid:n,fixPrecision:r,isInputing:i})=>{let{value:a}=v;if(i&&X(a))return!1;let o=(e.parse||Le)(a);if(o===null)return n&&ee(null),null;if(Z(o)){let a=y(o),{precision:s}=e;if(s!==void 0&&s<a&&!r)return!1;let c=Number.parseFloat((o+t).toFixed(s??b(o)));if(Z(c)){let{value:t}=T,{value:r}=C;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&&ee(c),c)}}return!1},k=q(()=>O({offset:0,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})===!1),j=q(()=>{let{value:t}=_;if(e.validator&&t===null)return!1;let{value:n}=S;return O({offset:-n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1}),N=q(()=>{let{value:t}=_;if(e.validator&&t===null)return!1;let{value:n}=S;return O({offset:+n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1});function ne(t){let{onFocus:n}=e,{nTriggerFormFocus:r}=c;n&&R(n,t),r()}function ie(t){if(t.target===f.value?.wrapperElRef)return;let n=O({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0});if(n!==!1){let e=f.value?.inputElRef;e&&(e.value=String(n||``)),_.value===n&&E()}else E();let{onBlur:r}=e,{nTriggerFormBlur:i}=c;r&&R(r,t),i(),o(()=>{E()})}function F(t){let{onClear:n}=e;n&&R(n,t)}function I(){let{value:t}=N;if(!t){ge();return}let{value:n}=_;if(n===null)e.validator||ee(ue());else{let{value:e}=S;O({offset:e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}function ce(){let{value:t}=j;if(!t){B();return}let{value:n}=_;if(n===null)e.validator||ee(ue());else{let{value:e}=S;O({offset:-e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}let L=ne,le=ie;function ue(){if(e.validator)return null;let{value:t}=C,{value:n}=T;return t===null?n===null?0:Math.min(0,n):Math.max(0,t)}function de(e){F(e),ee(null)}function pe(e){var t;h.value?.$el.contains(e.target)&&e.preventDefault(),p.value?.$el.contains(e.target)&&e.preventDefault(),(t=f.value)==null||t.activate()}let z=null,me=null,he=null;function B(){he&&=(window.clearTimeout(he),null),z&&=(window.clearInterval(z),null)}let V=null;function ge(){V&&=(window.clearTimeout(V),null),me&&=(window.clearInterval(me),null)}function _e(){B(),he=window.setTimeout(()=>{z=window.setInterval(()=>{ce()},Ve)},Be),ae(`mouseup`,document,B,{once:!0})}function ve(){ge(),V=window.setTimeout(()=>{me=window.setInterval(()=>{I()},Ve)},Be),ae(`mouseup`,document,ge,{once:!0})}let H=()=>{me||I()},ye=()=>{z||ce()};function be(t){var n;if(t.key===`Enter`){if(t.target===f.value?.wrapperElRef)return;O({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&((n=f.value)==null||n.deactivate())}else if(t.key===`ArrowUp`){if(!N.value||e.keyboard.ArrowUp===!1)return;t.preventDefault(),O({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&I()}else if(t.key===`ArrowDown`){if(!j.value||e.keyboard.ArrowDown===!1)return;t.preventDefault(),O({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&ce()}}function U(t){v.value=t,e.updateValueOnInput&&!e.format&&!e.parse&&e.precision===void 0&&O({offset:0,doUpdateIfValid:!0,isInputing:!0,fixPrecision:!1})}w(_,()=>{E()});let W={focus:()=>f.value?.focus(),blur:()=>f.value?.blur(),select:()=>f.value?.select()},xe=re(`InputNumber`,r,n);return Object.assign(Object.assign({},W),{rtlEnabled:xe,inputInstRef:f,minusButtonInstRef:p,addButtonInstRef:h,mergedClsPrefix:n,mergedBordered:t,uncontrolledValue:g,mergedValue:_,mergedPlaceholder:x,displayedValueInvalid:k,mergedSize:l,mergedDisabled:u,displayedValue:v,addable:N,minusable:j,mergedStatus:d,handleFocus:L,handleBlur:le,handleClear:de,handleMouseDown:pe,handleAddClick:H,handleMinusClick:ye,handleAddMousedown:ve,handleMinusMousedown:_e,handleKeyDown:be,handleUpdateDisplayedValue:U,mergedTheme:a,inputThemeOverrides:{paddingSmall:`0 8px 0 10px`,paddingMedium:`0 8px 0 12px`,paddingLarge:`0 8px 0 14px`},buttonThemeOverrides:D(()=>{let{self:{iconColorDisabled:e}}=a.value,[t,n,r,i]=te(e);return{textColorTextDisabled:`rgb(${t}, ${n}, ${r})`,opacityDisabled:`${i}`}})})},render(){let{mergedClsPrefix:e,$slots:t}=this,n=()=>c(ce,{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:()=>he(t[`minus-icon`],()=>[c(K,{clsPrefix:e},{default:()=>c(ge,null)})])}),r=()=>c(ce,{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:()=>he(t[`add-icon`],()=>[c(K,{clsPrefix:e},{default:()=>c(B,null)})])});return c(`div`,{class:[`${e}-input-number`,this.rtlEnabled&&`${e}-input-number--rtl`]},c(V,{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`?[n(),me(t.prefix,t=>t?c(`span`,{class:`${e}-input-number-prefix`},t):null)]:t.prefix?.call(t),suffix:()=>this.showButton?[me(t.suffix,t=>t?c(`span`,{class:`${e}-input-number-suffix`},t):null),this.buttonPlacement===`right`?n():null,r()]:t.suffix?.call(t)}))}}),Ue={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},We=d({name:`Flag`,render:function(e,t){return _(),f(`svg`,Ue,t[0]||=[h(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,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=d({name:`Pause`,render:function(e,t){return _(),f(`svg`,Ge,t[0]||=[h(`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),h(`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)])}}),qe={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Je=d({name:`Play`,render:function(e,t){return _(),f(`svg`,qe,t[0]||=[h(`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)])}}),Ye={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Xe=d({name:`Reset`,render:function(e,t){return _(),f(`svg`,Ye,t[0]||=[h(`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)])}}),Ze={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Qe=d({name:`Trophy`,render:function(e,t){return _(),f(`svg`,Ze,t[0]||=[h(`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)])}}),$e={key:0,class:`timer-preview`},et=[`src`],tt=[`src`],nt={key:3,class:`preview-message`},rt={key:4,class:`preview-message`},it={key:5,class:`preview-message`},at={key:6,class:`preview-message`},ot={key:7,class:`preview-results`},st=[`src`],ct=Y(d({__name:`ScreenPreview`,props:{state:{},questions:{},teams:{}},setup(e){let t=e,n=A(Date.now()),i=A(0),a=A(Date.now()),o=A(),c=null,u=D(()=>{let e=t.state.backgroundImage||t.state.coverImage;return e?{backgroundImage:`linear-gradient(rgb(0 0 0 / 55%), rgb(0 0 0 / 55%)), url("${e}")`}:{}}),d=D(()=>t.state.timerState===`SCREEN_TIMER_STATE_RUNNING`?Math.max(0,i.value-(n.value-a.value)/1e3):i.value),m=D(()=>{let e=Math.floor(d.value/60),t=Math.floor(d.value%60);return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}),v=D(()=>Ae(t.state.introAudio)),y=D(()=>Ae(t.state.conclusionVideo));return w(()=>[t.state.timerRemainingSeconds,t.state.timerState,t.state.stateVersion],()=>{let e=Math.max(0,Number(t.state.timerRemainingSeconds||0));if(t.state.timerState===`SCREEN_TIMER_STATE_RUNNING`&&o.value===t.state.timerState){let t=Math.max(0,i.value-(Date.now()-a.value)/1e3);if(Math.abs(e-t)<=.5)return}i.value=e,a.value=Date.now(),o.value=t.state.timerState},{immediate:!0}),T(()=>{c=window.setInterval(()=>{n.value=Date.now()},250)}),l(()=>{c!=null&&window.clearInterval(c)}),(t,n)=>(_(),f(`div`,{class:`screen-preview`,style:g(u.value)},[e.state.mode===`SCREEN_MODE_TIMER`?(_(),f(`div`,$e,[h(`h2`,null,s(e.state.timerLabel||`Перерыв`),1),h(`strong`,null,s(m.value),1)])):e.state.mode===`SCREEN_MODE_INTRO`&&v.value?(_(),f(`audio`,{key:1,src:v.value,controls:``},null,8,et)):e.state.mode===`SCREEN_MODE_CONCLUSION`&&y.value?(_(),f(`video`,{key:2,src:y.value,autoplay:``,class:`preview-video`,loop:``,muted:``,playsinline:``},null,8,tt)):e.state.mode===`SCREEN_MODE_CONCLUSION`?(_(),f(`div`,nt,` Видео закрывашки не задано `)):e.state.mode===`SCREEN_MODE_INTRO_DONE`?(_(),f(`div`,rt,`Успехов`)):e.state.mode===`SCREEN_MODE_CONCLUSION_DONE`?(_(),f(`div`,it,` Спасибо за игру! `)):e.state.mode===`SCREEN_MODE_TEXT`?(_(),f(`div`,at,s(e.state.text),1)):e.state.mode===`SCREEN_MODE_RESULTS`?(_(),f(`div`,ot,[n[4]||=h(`h2`,null,`Результаты`,-1),h(`table`,null,[h(`thead`,null,[h(`tr`,null,[n[0]||=h(`th`,null,`Место`,-1),n[1]||=h(`th`,null,`Команда`,-1),(_(!0),f(k,null,p(e.questions,e=>(_(),f(`th`,{key:e.code},s(e.code),1))),128)),n[2]||=h(`th`,null,`Сумма`,-1),n[3]||=h(`th`,null,`Ходы`,-1)])]),h(`tbody`,null,[(_(!0),f(k,null,p(e.teams,t=>(_(),f(`tr`,{key:t.team?.ID},[h(`td`,null,s(t.place),1),h(`td`,null,s(t.team?.name),1),(_(!0),f(k,null,p(e.questions,e=>(_(),f(`td`,{key:e.code},s(t.answers?.find(t=>t.questionCode===e.code)?.score??0),1))),128)),h(`td`,null,s(t.totalScore),1),h(`td`,null,s(t.actionsCount),1)]))),128))])])])):e.state.coverImage?(_(),f(`img`,{key:8,src:e.state.coverImage,alt:`Обложка дела`,class:`preview-cover`},null,8,st)):r(``,!0)],4))}}),[[`__scopeId`,`data-v-d5134fb8`]]),Q=Y(d({__name:`UiBlock`,props:{tag:{default:`div`}},setup(t){return(n,r)=>(_(),i(E(t.tag),{class:`ui-block`},{default:v(()=>[e(n.$slots,`default`,{},void 0,!0)]),_:3}))}}),[[`__scopeId`,`data-v-80193f22`]]),lt={class:`map-preview-layout`},ut=[`onPointerdown`],dt=[`onPointerdown`],ft={key:2},pt=[`onClick`],mt={key:1,class:`screen-preview-placeholder`},ht={class:`screen-plan`},gt={key:0,class:`screen-empty`},_t=20,vt=Y(d({__name:`GameMapPanel`,props:{mapItems:{},teams:{},screens:{},previewQuestions:{},previewTeams:{},screenPlan:{},screenPlanDraft:{},screenPlanDirty:{type:Boolean},screenPlanSaving:{type:Boolean},screenPlanMode:{},screenVolume:{},screenPosition:{}},emits:[`saveItem`,`dragging`,`giveApplication`,`addStep`,`edit`,`cancel`,`removeStep`,`moveStep`,`dirty`,`clearPlan`,`save`,`setStep`,`command`,`update:screenVolume`,`update:screenPosition`],setup(e,{emit:t}){let o=e,c=t,l=A(1),d=A({x:0,y:0}),m=A(),y=D(()=>o.screens.find(e=>e.status===`connected`)||o.screens[0]),b=D(()=>new Map(o.teams.filter(e=>e.applications?.length).map(e=>[e.ID,e]))),S=[{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`}],w,T;function E(e){let t=m.value;if(!t)return;let n=t.getBoundingClientRect();return{x:(e.clientX-n.left-t.clientLeft-d.value.x)/l.value,y:(e.clientY-n.top-t.clientTop-d.value.y)/l.value}}function ee(e,t){let n=E(t);n&&(w={item:e,offsetX:n.x-(e.x||0),offsetY:n.y-(e.y||0)},c(`dragging`,!0),window.addEventListener(`pointermove`,j),window.addEventListener(`pointerup`,M,{once:!0}),window.addEventListener(`pointercancel`,M,{once:!0}))}function j(e){if(!w)return;let t=E(e);t&&(w.item.x=Math.round((t.x-w.offsetX)/_t)*_t,w.item.y=Math.round((t.y-w.offsetY)/_t)*_t)}function M(){if(!w)return;let e=w.item;w=void 0,window.removeEventListener(`pointermove`,j),window.removeEventListener(`pointerup`,M),window.removeEventListener(`pointercancel`,M),c(`dragging`,!1),c(`saveItem`,e)}function te(e){e.hidden=!e.hidden,c(`saveItem`,e,e.hidden)}function N(e){l.value=Math.min(2,Math.max(.5,Number((l.value+e).toFixed(2))))}function ne(){l.value=1,d.value={x:0,y:0}}function re(e){e.button===0&&(T={startX:e.clientX,startY:e.clientY,offsetX:d.value.x,offsetY:d.value.y},window.addEventListener(`pointermove`,P),window.addEventListener(`pointerup`,ie,{once:!0}))}function P(e){T&&(d.value={x:T.offsetX+e.clientX-T.startX,y:T.offsetY+e.clientY-T.startY})}function ie(){T=void 0,window.removeEventListener(`pointermove`,P)}function ae(e){e.preventDefault(),N(e.deltaY<0?.1:-.1)}return a(()=>{w&&c(`dragging`,!1),window.removeEventListener(`pointermove`,j),window.removeEventListener(`pointerup`,M),window.removeEventListener(`pointercancel`,M),window.removeEventListener(`pointermove`,P),window.removeEventListener(`pointerup`,ie)}),(t,a)=>(_(),f(`div`,lt,[u(Q,null,{default:v(()=>[u(O(W),{align:`center`,justify:`space-between`,class:`screen-header`},{default:v(()=>[a[18]||=h(`p`,{class:`screens-title`},`Карта помещения`,-1),u(O(U),null,{default:v(()=>[u(O(L),{size:`small`,onClick:a[0]||=e=>N(-.1)},{default:v(()=>[...a[15]||=[x(`−`,-1)]]),_:1}),u(O(pe),null,{default:v(()=>[x(s(Math.round(l.value*100))+`%`,1)]),_:1}),u(O(L),{size:`small`,onClick:a[1]||=e=>N(.1)},{default:v(()=>[...a[16]||=[x(`+`,-1)]]),_:1}),u(O(L),{size:`small`,onClick:ne},{default:v(()=>[...a[17]||=[x(`Сбросить`,-1)]]),_:1})]),_:1})]),_:1}),h(`div`,{ref_key:`mapField`,ref:m,class:`map-field`,onPointerdown:re,onWheel:ae},[h(`div`,{class:`map-canvas`,style:g({transform:`translate(${d.value.x}px, ${d.value.y}px) scale(${l.value})`})},[(_(!0),f(k,null,p(e.mapItems,e=>C((_(),f(`div`,{key:`${e.kind}-${e.itemID}`,class:n([`map-item`,[e.kind===`screen`?`map-screen`:e.kind===`organizer_desk`?`map-organizer-desk`:`map-team`,{"map-team-needs-applications":e.kind===`team`&&b.value.has(e.itemID)}]]),style:g({left:`${e.x||0}px`,top:`${e.y||0}px`}),onPointerdown:J(t=>e.kind!==`team`&&ee(e,t),[`stop`])},[e.kind===`team`?(_(),f(`div`,{key:0,class:`map-team-handle`,onPointerdown:J(t=>ee(e,t),[`stop`])},null,40,dt)):r(``,!0),h(`span`,null,s(e.label),1),e.kind===`team`&&b.value.has(e.itemID)?(_(),i(O(U),{key:1,class:`map-team-applications`,vertical:``},{default:v(()=>[(_(!0),f(k,null,p(b.value.get(e.itemID)?.applications,t=>(_(),i(O(L),{key:t.name,size:`small`,onClick:n=>c(`giveApplication`,b.value.get(e.itemID),t)},{default:v(()=>[x(` Выдать: `+s(t.name),1)]),_:2},1032,[`onClick`]))),128))]),_:2},1024)):r(``,!0),e.kind===`screen`?(_(),f(`small`,ft,s(e.status)+s(e.soundEnabled?` · звук`:``),1)):r(``,!0),h(`button`,{class:`map-item-hide`,type:`button`,onPointerdown:a[2]||=J(()=>{},[`stop`]),onClick:J(t=>te(e),[`stop`])},` × `,40,pt)],46,ut)),[[Te,!e.hidden]])),128))],4)],544),e.mapItems.some(e=>e.hidden)?(_(),i(O(U),{key:0,class:`map-hidden-items`},{default:v(()=>[(_(!0),f(k,null,p(e.mapItems.filter(e=>e.hidden),e=>(_(),i(O(L),{key:`hidden-${e.kind}-${e.itemID}`,size:`small`,onClick:t=>te(e)},{default:v(()=>[x(` Добавить `+s(e.label),1)]),_:2},1032,[`onClick`]))),128))]),_:1})):r(``,!0)]),_:1}),u(Q,{tag:`aside`,class:`screen-preview-panel`},{default:v(()=>[a[41]||=h(`p`,{class:`screens-title`},`Превью экрана`,-1),y.value?.status===`connected`?(_(),i(ct,{key:0,state:y.value,questions:e.previewQuestions,teams:e.previewTeams},null,8,[`state`,`questions`,`teams`])):(_(),f(`div`,mt,`Экран не подключён`)),h(`div`,ht,[u(O(W),{align:`center`,justify:`space-between`,class:`screen-header`},{default:v(()=>[a[23]||=h(`p`,{class:`screens-title`},`План экранов`,-1),u(O(U),null,{default:v(()=>[!e.screenPlan&&e.screenPlanMode===`use`?(_(),i(O(L),{key:0,size:`small`,onClick:a[3]||=e=>c(`addStep`)},{default:v(()=>[...a[19]||=[x(` Создать план `,-1)]]),_:1})):r(``,!0),e.screenPlan&&e.screenPlanMode===`use`?(_(),i(O(L),{key:1,size:`small`,onClick:a[4]||=e=>c(`edit`)},{default:v(()=>[...a[20]||=[x(` Редактировать `,-1)]]),_:1})):r(``,!0),e.screenPlanMode===`edit`?(_(),f(k,{key:2},[u(O(L),{size:`small`,disabled:e.screenPlanSaving,onClick:a[5]||=e=>c(`cancel`)},{default:v(()=>[...a[21]||=[x(` Отменить `,-1)]]),_:1},8,[`disabled`]),u(O(L),{size:`small`,type:`primary`,loading:e.screenPlanSaving,disabled:e.screenPlanSaving,onClick:a[6]||=e=>c(`save`)},{default:v(()=>[...a[22]||=[x(` Сохранить план `,-1)]]),_:1},8,[`loading`,`disabled`])],64)):r(``,!0)]),_:1})]),_:1}),!e.screenPlan&&e.screenPlanMode===`use`?(_(),f(`p`,gt,` План экранов ещё не создан. `)):e.screenPlanMode===`edit`?(_(),f(k,{key:1},[(_(!0),f(k,null,p(e.screenPlanDraft,(t,n)=>(_(),i(O(U),{key:n,class:`screen-plan-step`,align:`center`,justify:`space-between`,wrap:``},{default:v(()=>[u(O(U),{align:`center`,wrap:``},{default:v(()=>[u(O(pe),null,{default:v(()=>[x(s(n+1),1)]),_:2},1024),u(O(de),{value:t.mode,"onUpdate:value":[e=>t.mode=e,a[7]||=e=>c(`dirty`)],options:S,disabled:e.screenPlanSaving,size:`small`,style:{width:`180px`}},null,8,[`value`,`onUpdate:value`,`disabled`]),t.mode===`SCREEN_MODE_TEXT`?(_(),i(O(V),{key:0,value:t.text,"onUpdate:value":[e=>t.text=e,a[8]||=e=>c(`dirty`)],disabled:e.screenPlanSaving,size:`small`,placeholder:`Текст экрана`,style:{"min-width":`240px`}},null,8,[`value`,`onUpdate:value`,`disabled`])):r(``,!0),t.mode===`SCREEN_MODE_TIMER`?(_(),f(k,{key:1},[u(O(V),{value:t.timerLabel,"onUpdate:value":[e=>t.timerLabel=e,a[9]||=e=>c(`dirty`)],disabled:e.screenPlanSaving,size:`small`,placeholder:`Надпись таймера`},null,8,[`value`,`onUpdate:value`,`disabled`]),u(O(He),{value:t.timerDurationSeconds,"onUpdate:value":[e=>t.timerDurationSeconds=e,a[10]||=e=>c(`dirty`)],min:1,max:86400,disabled:e.screenPlanSaving,size:`small`,placeholder:`Секунды`},null,8,[`value`,`onUpdate:value`,`disabled`])],64)):r(``,!0)]),_:2},1024),u(O(U),{class:`screen-plan-actions`},{default:v(()=>[u(O(L),{size:`small`,disabled:e.screenPlanSaving||n===0,onClick:e=>c(`moveStep`,n,-1)},{default:v(()=>[...a[24]||=[x(` ↑ `,-1)]]),_:1},8,[`disabled`,`onClick`]),u(O(L),{size:`small`,disabled:e.screenPlanSaving||n===e.screenPlanDraft.length-1,onClick:e=>c(`moveStep`,n,1)},{default:v(()=>[...a[25]||=[x(` ↓ `,-1)]]),_:1},8,[`disabled`,`onClick`]),u(O(L),{size:`small`,type:`error`,ghost:``,disabled:e.screenPlanSaving,onClick:e=>c(`removeStep`,n)},{default:v(()=>[...a[26]||=[x(` Удалить `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)]),_:2},1024))),128)),u(O(U),null,{default:v(()=>[u(O(L),{size:`small`,disabled:e.screenPlanSaving,onClick:a[11]||=e=>c(`addStep`)},{default:v(()=>[...a[27]||=[x(` Добавить шаг `,-1)]]),_:1},8,[`disabled`]),e.screenPlanDraft.length?(_(),i(O(L),{key:0,size:`small`,disabled:e.screenPlanSaving,onClick:a[12]||=e=>c(`clearPlan`)},{default:v(()=>[...a[28]||=[x(` Удалить план `,-1)]]),_:1},8,[`disabled`])):r(``,!0)]),_:1})],64)):e.screenPlan?(_(!0),f(k,{key:2},p(e.screenPlan.steps||[],(t,n)=>(_(),i(O(U),{key:n,class:`screen-plan-step`,align:`center`,justify:`space-between`,wrap:``},{default:v(()=>[u(O(U),{align:`center`},{default:v(()=>[u(O(pe),null,{default:v(()=>[x(s(n+1),1)]),_:2},1024),u(O(pe),null,{default:v(()=>[x(s(S.find(e=>e.value===t.mode)?.label)+` `,1),t.mode===`SCREEN_MODE_TEXT`?(_(),f(k,{key:0},[x(`: `+s(t.text),1)],64)):t.mode===`SCREEN_MODE_TIMER`?(_(),f(k,{key:1},[x(` : `+s(t.timerLabel)+` (`+s(t.timerDurationSeconds)+` с) `,1)],64)):r(``,!0)]),_:2},1024)]),_:2},1024),u(O(U),{class:`screen-plan-actions`},{default:v(()=>[u(O(L),{size:`small`,type:e.screenPlan.currentStep===n?`primary`:`default`,disabled:e.screenPlan.currentStep===n,onClick:e=>c(`setStep`,n)},{default:v(()=>[...a[29]||=[x(` Показать `,-1)]]),_:1},8,[`type`,`disabled`,`onClick`]),e.screenPlan.currentStep===n?(_(),f(k,{key:0},[t.mode===`SCREEN_MODE_TIMER`?(_(),f(k,{key:0},[u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_TIMER_START`)},{default:v(()=>[...a[30]||=[x(` Старт `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_TIMER_PAUSE`)},{default:v(()=>[...a[31]||=[x(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_TIMER_RESUME`)},{default:v(()=>[...a[32]||=[x(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_TIMER_RESET`)},{default:v(()=>[...a[33]||=[x(` Сбросить `,-1)]]),_:1},8,[`onClick`])],64)):t.mode===`SCREEN_MODE_INTRO`||t.mode===`SCREEN_MODE_CONCLUSION`?(_(),f(k,{key:1},[u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_PLAY`)},{default:v(()=>[...a[34]||=[x(` Запуск `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_PAUSE`)},{default:v(()=>[...a[35]||=[x(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_RESUME`)},{default:v(()=>[...a[36]||=[x(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_STOP`)},{default:v(()=>[...a[37]||=[x(` Стоп `,-1)]]),_:1},8,[`onClick`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_REPLAY`)},{default:v(()=>[...a[38]||=[x(` Повтор `,-1)]]),_:1},8,[`onClick`]),u(O(He),{value:e.screenVolume,min:0,max:100,step:5,size:`small`,"onUpdate:value":a[13]||=e=>c(`update:screenVolume`,e)},null,8,[`value`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_VOLUME`)},{default:v(()=>[...a[39]||=[x(` Громкость `,-1)]]),_:1},8,[`onClick`]),u(O(He),{value:e.screenPosition,min:0,step:5,size:`small`,"onUpdate:value":a[14]||=e=>c(`update:screenPosition`,e)},null,8,[`value`]),u(O(L),{size:`small`,onClick:e=>c(`command`,t.mode,`SCREEN_COMMAND_SEEK`)},{default:v(()=>[...a[40]||=[x(` Перемотать `,-1)]]),_:1},8,[`onClick`])],64)):r(``,!0)],64)):r(``,!0)]),_:2},1024)]),_:2},1024))),128)):r(``,!0)])]),_:1})]))}}),[[`__scopeId`,`data-v-1e1af018`]]),yt=Y(d({__name:`ScreenBindingModal`,props:t({binding:{type:Boolean}},{show:{type:Boolean,required:!0},showModifiers:{}}),emits:t([`scanned`],[`update:show`]),setup(e,{emit:t}){let n=b(e,`show`),c=t,l=A(``),d=A(),f=A(!1),p,m=0;function g(){cancelAnimationFrame(m),p?.getTracks().forEach(e=>e.stop()),p=void 0,f.value=!1}function y(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 S(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){l.value=`Сканирование камерой не поддерживается в этом браузере.`;return}l.value=``;try{if(p=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),f.value=!0,await o(),!d.value)return;d.value.srcObject=p,await d.value.play();let t=new e,r=async()=>{if(!(!d.value||!p))try{let e=(await t.detect(d.value))[0]?.rawValue;if(e){let t=y(e);if(t){g(),n.value=!1,c(`scanned`,t.screenID,t.accessToken);return}l.value=`Это не QR-код экрана.`}m=requestAnimationFrame(r)}catch{l.value=`Не удалось распознать QR-код.`,g()}};m=requestAnimationFrame(r)}catch{l.value=`Не удалось открыть камеру.`,g()}}function C(){g(),n.value=!1}return w(n,e=>{e?S():g()}),a(g),(t,a)=>(_(),i(O(I),{show:n.value,"onUpdate:show":a[0]||=e=>n.value=e},{default:v(()=>[u(O(F),{style:{width:`min(600px, 94vw)`},title:`Привязать экран`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:C},{default:v(()=>[...a[1]||=[x(` x `,-1)]]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[h(`video`,{ref_key:`scannerVideo`,ref:d,class:`screen-scanner-video`,muted:``,playsinline:``},null,512),l.value?(_(),i(O(H),{key:0,type:`error`},{default:v(()=>[x(s(l.value),1)]),_:1})):r(``,!0),!f.value&&!e.binding?(_(),i(O(L),{key:1,type:`primary`,onClick:S},{default:v(()=>[...a[2]||=[x(` Сканировать QR-код `,-1)]]),_:1})):r(``,!0),f.value?(_(),i(O(L),{key:2,onClick:g},{default:v(()=>[...a[3]||=[x(`Остановить камеру`,-1)]]),_:1})):r(``,!0),e.binding?(_(),i(O(L),{key:3,type:`primary`,loading:``},{default:v(()=>[...a[4]||=[x(`Привязка…`,-1)]]),_:1})):r(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-5f530845`]]),bt={key:1,class:`screen-empty`},xt={class:`screen-status`},St={key:0,class:`screen-error`},$={key:0,class:`track-list`},Ct={key:0,class:`track-empty`},wt={class:`track-main`},Tt={class:`track-number`},Et={class:`track-details`},Dt={class:`track-name`},Ot={class:`volume-control`},kt=Y(d({__name:`GameScreensPanel`,props:{screens:{},screenBinding:{type:Boolean},playlists:{},music:{}},emits:[`bind`,`setSound`,`unbind`,`setMusic`,`createPlaylist`,`deletePlaylist`,`uploadTrack`,`deleteTrack`],setup(e,{emit:t}){let a=e,o=t,c=A(!1),l=A(``);function d(e){e.file.file&&o(`uploadTrack`,e.file.file)}function m(e){e!==a.music?.trackIndex&&o(`setMusic`,{trackIndex:e,positionMs:0})}return(t,g)=>{let b=y(`n-tag`);return _(),f(k,null,[u(Q,null,{default:v(()=>[u(O(W),{align:`center`,justify:`space-between`,class:`screen-header`},{default:v(()=>[g[13]||=h(`p`,{class:`screens-title`},`Экраны`,-1),u(O(L),{size:`small`,onClick:g[0]||=e=>c.value=!0},{default:v(()=>[...g[12]||=[x(` Привязать экран `,-1)]]),_:1})]),_:1}),e.screens.some(e=>e.status===`disconnected`)?(_(),i(O(H),{key:0,type:`warning`,title:`Проверьте подключение экрана`},{default:v(()=>[...g[14]||=[x(` Один или несколько экранов не выходят на связь более минуты. `,-1)]]),_:1})):r(``,!0),e.screens.length===0?(_(),f(`p`,bt,`К игре пока не привязаны экраны.`)):(_(!0),f(k,{key:2},p(e.screens,e=>(_(),f(`div`,{key:e.ID,class:`screen-row`},[h(`div`,null,[h(`div`,null,`Экран `+s(e.ID),1),h(`div`,xt,s(e.status===`connected`?`Онлайн`:`Оффлайн`),1),e.error?(_(),f(`div`,St,s(e.error),1)):r(``,!0)]),u(O(W),{justify:`end`},{default:v(()=>[e.soundEnabled?(_(),i(b,{key:0,type:`success`},{default:v(()=>[...g[15]||=[x(`Со звуком`,-1)]]),_:1})):(_(),i(O(L),{key:1,size:`small`,onClick:t=>o(`setSound`,e)},{default:v(()=>[...g[16]||=[x(`Назначить звук`,-1)]]),_:1},8,[`onClick`])),u(O(L),{size:`small`,type:`error`,ghost:``,onClick:t=>o(`unbind`,e)},{default:v(()=>[...g[17]||=[x(` Отвязать `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]))),128))]),_:1}),u(yt,{show:c.value,"onUpdate:show":g[1]||=e=>c.value=e,binding:a.screenBinding,onScanned:g[2]||=(e,t)=>o(`bind`,e,t)},null,8,[`show`,`binding`]),u(Q,{class:`music-block`},{default:v(()=>[g[29]||=h(`p`,{class:`screens-title`},`Музыка`,-1),u(O(W),{align:`center`,wrap:``,class:`playlist-actions`},{default:v(()=>[u(O(V),{value:l.value,"onUpdate:value":g[3]||=e=>l.value=e,placeholder:`Новый плейлист`,style:{"max-width":`220px`}},null,8,[`value`]),u(O(L),{size:`small`,disabled:!l.value.trim(),onClick:g[4]||=e=>{o(`createPlaylist`,l.value.trim()),l.value=``}},{default:v(()=>[...g[18]||=[x(` Создать `,-1)]]),_:1},8,[`disabled`]),a.music?.playlist?.ID?(_(),i(O(L),{key:0,size:`small`,type:`error`,ghost:``,onClick:g[5]||=e=>o(`deletePlaylist`,a.music.playlist.ID)},{default:v(()=>[...g[19]||=[x(` Удалить плейлист `,-1)]]),_:1})):r(``,!0),u(O(z),{accept:`.mp3,audio/mpeg`,"default-upload":!1,"show-file-list":!1,onChange:d},{default:v(()=>[u(O(L),{size:`small`},{default:v(()=>[...g[20]||=[x(`Добавить MP3`,-1)]]),_:1})]),_:1})]),_:1}),u(O(W),{align:`center`,wrap:``},{default:v(()=>[u(O(de),{value:a.music?.playlist?.ID,options:a.playlists.map(e=>({label:e.name,value:e.ID})),placeholder:`Плейлист`,clearable:``,style:{"min-width":`220px`},"onUpdate:value":g[6]||=e=>o(`setMusic`,{playlistID:e||0,trackIndex:0,playback:`MUSIC_PLAYBACK_STOPPED`})},null,8,[`value`,`options`]),a.music?.playlist?(_(),f(`div`,$,[a.music.playlist.tracks?.length?r(``,!0):(_(),f(`p`,Ct,`В плейлисте пока нет треков.`)),(_(!0),f(k,null,p(a.music.playlist.tracks,(e,t)=>(_(),f(`div`,{key:e.ID,class:n([`track-row`,{"track-row-active":t===(a.music.trackIndex??0)}])},[h(`div`,wt,[h(`span`,Tt,s(t+1),1),h(`span`,Et,[h(`span`,Dt,s(e.name||`Трек ${t+1}`),1)])]),u(O(W),{align:`center`,class:`track-actions`},{default:v(()=>[u(O(L),{size:`small`,type:t===(a.music.trackIndex??0)?`success`:`primary`,ghost:``,class:n({"track-switch-active":t===(a.music.trackIndex??0)}),onClick:e=>m(t)},{default:v(()=>[x(s(t===(a.music.trackIndex??0)?a.music.playback===`MUSIC_PLAYBACK_PLAYING`?`Играет`:`Выбран`:`Включить`),1)]),_:2},1032,[`type`,`class`,`onClick`]),u(O(L),{size:`small`,type:`error`,ghost:``,onClick:t=>o(`deleteTrack`,e.ID)},{default:v(()=>[...g[21]||=[x(` Удалить `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)],2))),128))])):r(``,!0),u(O(L),{size:`small`,onClick:g[7]||=e=>o(`setMusic`,{playback:`MUSIC_PLAYBACK_PLAYING`})},{default:v(()=>[...g[22]||=[x(`Старт`,-1)]]),_:1}),u(O(L),{size:`small`,onClick:g[8]||=e=>o(`setMusic`,{playback:`MUSIC_PLAYBACK_PAUSED`})},{default:v(()=>[...g[23]||=[x(`Пауза`,-1)]]),_:1}),u(O(L),{size:`small`,onClick:g[9]||=e=>o(`setMusic`,{playback:`MUSIC_PLAYBACK_STOPPED`,positionMs:0})},{default:v(()=>[...g[24]||=[x(`Стоп`,-1)]]),_:1}),h(`div`,Ot,[g[26]||=h(`span`,{class:`volume-label`},`Громкость`,-1),u(O(He),{value:a.music?.volume??100,min:0,max:100,step:5,size:`small`,"show-button":!0,"aria-label":`Громкость музыки`,class:`volume-input`,"onUpdate:value":g[10]||=e=>e!=null&&o(`setMusic`,{volume:e})},{suffix:v(()=>[...g[25]||=[x(`%`,-1)]]),_:1},8,[`value`])]),u(O(_e),{value:a.music?.loop,round:!1,"onUpdate:value":g[11]||=e=>o(`setMusic`,{loop:e})},{checked:v(()=>[...g[27]||=[x(`Loop`,-1)]]),unchecked:v(()=>[...g[28]||=[x(`Loop`,-1)]]),_:1},8,[`value`])]),_:1})]),_:1})],64)}}}),[[`__scopeId`,`data-v-c8e2dfff`]]),At={class:`team-content-block`},jt={class:`title-block`},Mt={class:`team-name-block`},Nt={key:0},Pt={key:1},Ft={key:0},It={key:0},Lt={key:1},Rt={key:2},zt={key:3},Bt={key:4},Vt=Y(d({__name:`GameTeamsPanel`,props:{teams:{},participationOptions:{}},emits:[`add`,`open-qr`,`preview`,`delete`,`give-application`],setup(e,{emit:t}){let n=t;return(t,a)=>(_(),f(k,null,[u(Q,{class:`team-block-hover`,onClick:a[0]||=e=>n(`add`)},{default:v(()=>[...a[1]||=[h(`p`,{class:`place-image-plus`},`+`,-1)]]),_:1}),(_(!0),f(k,null,p(e.teams,t=>(_(),i(Q,{key:t.ID},{default:v(()=>[h(`div`,At,[u(O(W),{justify:`space-between`},{default:v(()=>[h(`div`,jt,[h(`span`,Mt,[x(s(t.name)+` `,1),t.captainEmail?(_(),f(`small`,Nt,` — `+s(t.captainEmail),1)):r(``,!0),t.participantsCount?(_(),f(`small`,Pt,` · Участников: `+s(t.participantsCount),1)):r(``,!0)]),t.captainEmail||t.participationStatus!==`pending`?(_(),f(`div`,Ft,[x(s(e.participationOptions.find(e=>e.value===t.participationStatus)?.label),1),t.participationSource===`automatic`?(_(),f(`span`,It,` · автоматически`)):r(``,!0)])):r(``,!0),t.captainEmail?t.participationEmailError?(_(),f(`div`,Rt,` Ошибка отправки: `+s(t.participationEmailError),1)):t.participationEmailSent?(_(),f(`div`,zt,`Письмо отправлено`)):r(``,!0):(_(),f(`div`,Lt,`Почта капитана не указана`)),t.participationStatus===`cancelled`?r(``,!0):(_(),f(`div`,Bt,` Поездки: `+s(t.actionsCount),1))]),u(O(W),{justify:`end`},{default:v(()=>[t.participationStatus===`cancelled`?r(``,!0):(_(),i(O(L),{key:0,onClick:e=>n(`open-qr`,t)},{default:v(()=>[...a[2]||=[x(`QR`,-1)]]),_:1},8,[`onClick`])),t.participationStatus===`cancelled`?r(``,!0):(_(),i(O(L),{key:1,onClick:e=>n(`preview`,t.ID,t.password)},{default:v(()=>[...a[3]||=[x(`Подсмотреть игру`,-1)]]),_:1},8,[`onClick`])),u(O(L),{type:`error`,ghost:``,onClick:e=>n(`delete`,t)},{default:v(()=>[...a[4]||=[x(`Удалить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(_(!0),f(k,null,p(t.applications,e=>(_(),i(O(L),{key:e.name,class:`link-button`,onClick:r=>n(`give-application`,t,e)},{default:v(()=>[x(` Выдать: `+s(e.name),1)]),_:2},1032,[`onClick`]))),128))])]),_:2},1024))),128))],64))}}),[[`__scopeId`,`data-v-561486cb`]]),Ht={key:0},Ut={key:1},Wt={key:2},Gt=Y(d({__name:`TicketCheckModal`,props:{show:{type:Boolean,required:!0},showModifiers:{}},emits:[`update:show`],setup(e){let t=b(e,`show`),n=we(),c=ye(),l=A(``),d=A(),p=A(``),m=A(!1),g=A(),y=A(!1),S,C=0,T=D(()=>{try{return new URL(l.value.trim()).pathname.match(/\/tickets\/([^/]+)/)?.[1]||``}catch{return l.value.trim()}});async function E(){if(!(!T.value||m.value)){m.value=!0,p.value=``,d.value=void 0;try{let e=await n.GetTicket({token:T.value});e.ticket?d.value=e.ticket:p.value=`Билет не найден`}catch(e){p.value=e instanceof Error?e.message:`Не удалось проверить билет`}finally{m.value=!1}}}async function ee(){if(!(!T.value||m.value)){m.value=!0,p.value=``;try{let e=await n.AcceptTicket({token:T.value});e.ticket?(d.value=e.ticket,c.success(`Билет принят`)):p.value=`Не удалось принять билет`}catch(e){p.value=e instanceof Error?e.message:`Не удалось принять билет`}finally{m.value=!1}}}async function j(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){p.value=`Сканирование камерой не поддерживается. Введите ссылку вручную.`;return}p.value=``;try{if(S=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),y.value=!0,await o(),!g.value)return;g.value.srcObject=S,await g.value.play();let t=new e,n=async()=>{if(!(!y.value||!g.value))try{let e=(await t.detect(g.value))[0]?.rawValue;if(e){l.value=e,M(),await E();return}C=requestAnimationFrame(n)}catch{p.value=`Не удалось распознать QR-код.`,M()}};C=requestAnimationFrame(n)}catch{p.value=`Не удалось открыть камеру. Введите ссылку вручную.`,M()}}function M(){cancelAnimationFrame(C),S?.getTracks().forEach(e=>e.stop()),S=void 0,y.value=!1}function te(){M(),t.value=!1}return w(t,e=>{e?j():M()}),a(M),(e,n)=>(_(),i(O(I),{show:t.value,"onUpdate:show":n[1]||=e=>t.value=e},{default:v(()=>[u(O(F),{style:{width:`min(600px, 94vw)`},title:`Проверка билета`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:te},{default:v(()=>[...n[2]||=[x(` x `,-1)]]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[y.value?(_(),f(`video`,{key:0,ref_key:`video`,ref:g,class:`ticket-scanner-video`,muted:``,playsinline:``},null,512)):r(``,!0),p.value?(_(),i(O(H),{key:1,type:`error`},{default:v(()=>[x(s(p.value),1)]),_:1})):r(``,!0),y.value?(_(),i(O(L),{key:3,onClick:M},{default:v(()=>[...n[4]||=[x(`Остановить камеру`,-1)]]),_:1})):(_(),i(O(L),{key:2,onClick:j},{default:v(()=>[...n[3]||=[x(`Сканировать QR-код`,-1)]]),_:1})),u(O(V),{value:l.value,"onUpdate:value":n[0]||=e=>l.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:Ce(E,[`enter`])},null,8,[`value`]),u(O(L),{type:`primary`,loading:m.value,onClick:E},{default:v(()=>[...n[5]||=[x(` Проверить билет `,-1)]]),_:1},8,[`loading`]),d.value?(_(),f(k,{key:4},[u(O(H),{type:d.value.status===`active`?`success`:`warning`},{default:v(()=>[x(s(d.value.gameName),1),n[6]||=h(`br`,null,null,-1),x(` Статус: `+s(d.value.status===`active`?`действителен`:`уже использован`)+` `,1),d.value.usedBy?(_(),f(`span`,Ht,` · `+s(d.value.usedBy),1)):r(``,!0),d.value.usedAt?(_(),f(`br`,Ut)):r(``,!0),d.value.usedAt?(_(),f(`span`,Wt,`Использован: `+s(O(Me)(d.value.usedAt)),1)):r(``,!0)]),_:1},8,[`type`]),d.value.status===`active`&&d.value.gameStatus!==`finish`?(_(),i(O(L),{key:0,type:`primary`,loading:m.value,onClick:ee},{default:v(()=>[...n[7]||=[x(` Принять билет `,-1)]]),_:1},8,[`loading`])):r(``,!0)],64)):r(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-fe322487`]]),Kt={class:`center-block-custom`},qt={class:`width1200`},Jt={class:`game-tab-content`},Yt=[`href`],Xt={class:`game-tab-content`},Zt={class:`game-tab-content`},Qt={class:`game-tab-content`},$t={class:`game-tab-content`},en={class:`qr-block`},tn={class:`game-tab-content`},nn={key:0,class:`answers-empty`},rn={class:`answers-question-title`},an={class:`answers-question-answer`},on={class:`correct-answer`},sn={class:`answers-team-name`},cn={class:`answers-team-answer`},ln={key:0,class:`give-application-image-block`},un=[`src`],dn=[`src`],fn=[`href`],pn={class:`qr-block`},mn={key:0,class:`answers-empty`},hn=`https://www.sberbank.ru/ru/choise_bank?requisiteNumber=79609361994&bankCode=100000000111`,gn=Y(d({__name:`GamePage`,setup(e){let t=we(),n=Oe(),a=A(!1),o=ee(),c=S(),l=c.params.id;function d(e){return[`settings`,`teams`,`screens`,`game`,`payment`,`answers`].includes(e)}let m=typeof c.query.tab==`string`?c.query.tab:``,g=A(d(m)?m:`game`);async function y(e){d(e)&&(g.value=e,await o.replace({query:{...c.query,tab:e}}),e===`answers`&&await Sn())}let b=ye(),C=A({name:``,description:``,format:`online`,location:``}),w=A(!1),T=A(!1),E=A(!1),j=A(!1),M=A(!1),te=A(``),N=A(``),ne=A(1),re=A(``),P=A(!1),ie=A(``),ae=A(``),oe=A(!1),se=A(1),ce=A([]),fe=A(!1),R=A(!1),z=A({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}),me=[{label:`Ожидает ответа`,value:`pending`},{label:`Подтверждено`,value:`confirmed`},{label:`Отменено`,value:`cancelled`}],he=D(()=>(z.value.teams||[]).filter(e=>e.participationStatus!==`cancelled`).length),B=A([]),ge=A([]),_e=A(),H=A(),G=A([]),K=A(!1),q=A(!1),J=A(`use`),Ce=0,Te=A([]),Ee=A([]),Y=A([]),Pe=A(!1),Fe=A(!1),Ie=A(100),Le=A(0);async function X(e){let n=await t.GetGame({ID:e});z.value=n.game,w.value||=(C.value={name:z.value.name||``,description:z.value.description||``,format:z.value.format||`online`,location:z.value.location||``},!0),z.value.teams=z.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})}X(Number(l));async function Z(){let e=await t.GetGameScreens({gameID:Number(l)});if(B.value=e.screens||[],(B.value.find(e=>e.status===`connected`)||B.value[0])?.mode===`SCREEN_MODE_RESULTS`){let e=await t.GetGameResults({gameID:Number(l)});Te.value=e.questions||[],Ee.value=e.teams||[]}else Te.value=[],Ee.value=[]}Z();async function Re(){try{let e=await t.GetGameMusic({gameID:Number(l)});ge.value=e.playlists||[],_e.value=e.state}catch(e){b.error(e instanceof Error?e.message:`Не удалось получить музыку игры`)}}Re();function ze(){return J.value===`edit`}async function Be(){if(console.log(`getScreenPlan`),ze()||K.value)return;console.log(`no skip getScreenPlan`);let e=++Ce,n=await t.GetScreenPlan({gameID:Number(l)});e!==Ce||ze()||K.value||(H.value=n.plan,G.value=n.plan?.steps?.map(e=>({...e}))||[])}Be();function Ve(){G.value.push({mode:`SCREEN_MODE_TEXT`,text:`Новый экран`,timerLabel:`Перерыв`,timerDurationSeconds:600}),K.value=!0,J.value=`edit`}function Ue(){H.value&&(G.value=H.value.steps?.map(e=>({...e}))||[],J.value=`edit`)}function Ge(){K.value&&!window.confirm(`Отменить несохранённые изменения плана?`)||(G.value=H.value?.steps?.map(e=>({...e}))||[],K.value=!1,J.value=`use`)}function qe(e){G.value.splice(e,1),K.value=!0}function Ye(e,t){let n=e+t;if(n<0||n>=G.value.length)return;let[r]=G.value.splice(e,1);G.value.splice(n,0,r),K.value=!0}function Ze(){K.value=!0}function $e(){G.value=[],Ze()}async function et(){if(!q.value){Ce+=1,q.value=!0;try{let e=Math.min(H.value?.currentStep||0,Math.max(0,G.value.length-1)),n=await t.SaveScreenPlan({gameID:Number(l),steps:G.value,currentStep:e});H.value=n.plan,G.value=n.plan?.steps?.map(e=>({...e}))||[],K.value=!1,J.value=`use`,b.success(n.plan?`План экранов сохранён`:`План экранов удалён`)}catch(e){b.error(e instanceof Error?e.message:`Не удалось сохранить план экранов`)}finally{q.value=!1}}}async function tt(e){if(!(K.value||!H.value))try{let n=await t.SetScreenPlanStep({gameID:Number(l),currentStep:e});H.value=n.plan,await Z()}catch(e){b.error(e instanceof Error?e.message:`Не удалось перейти на шаг плана`)}}async function nt(e,n){if(!(K.value||e!==`SCREEN_MODE_TIMER`&&e!==`SCREEN_MODE_INTRO`&&e!==`SCREEN_MODE_CONCLUSION`))try{await t.SendScreenCommand({gameID:Number(l),command:n,positionMs:Math.max(0,Math.round(Le.value*1e3)),volume:Math.max(0,Math.min(100,Math.round(Ie.value)))}),await Z()}catch(e){b.error(e instanceof Error?e.message:`Не удалось управлять экраном`)}}async function rt(e,n){if(!R.value){R.value=!0;try{await t.BindScreen({screenID:e,accessToken:n,gameID:Number(l)}),b.success(`Экран привязан к игре`),await Z()}catch(e){b.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{R.value=!1}}}async function it(){if(Pe.value||Fe.value)return;let e=await t.GetGameMap({gameID:Number(l)});Pe.value||Fe.value||(Y.value=e.items||[])}it();async function at(e,n=e.hidden){Pe.value=!0;try{await t.UpdateGameMapItem({gameID:Number(l),kind:e.kind,itemID:e.itemID,x:Math.round(e.x||0),y:Math.round(e.y||0),hidden:n})}finally{Pe.value=!1}}async function ot(e,t=e.hidden){await at(e,t),await it()}async function st(e){await t.SetScreenSound({screenID:e.ID,soundEnabled:!0}),await Z()}async function ct(e){let n=_e.value;try{let r=await t.SetGameMusic({gameID:Number(l),playlistID:e.playlistID??n?.playlist?.ID??0,trackIndex:e.trackIndex??n?.trackIndex??0,positionMs:e.positionMs??n?.positionMs??0,volume:e.volume??n?.volume??100,loop:e.loop??n?.loop??!1,playback:e.playback??n?.playback??`MUSIC_PLAYBACK_STOPPED`});_e.value=r.state}catch(e){b.error(e instanceof Error?e.message:`Не удалось изменить музыку`)}}async function lt(e){try{await t.CreatePlaylist({name:e}),await Re()}catch(e){b.error(e instanceof Error?e.message:`Не удалось создать плейлист`)}}async function ut(e){try{await t.DeletePlaylist({ID:e}),await Re()}catch(e){b.error(e instanceof Error?e.message:`Не удалось удалить плейлист`)}}async function dt(e){let n=_e.value?.playlist?.ID;if(!n){b.warning(`Сначала выберите плейлист`);return}try{let r=pt(new Uint8Array(await e.arrayBuffer()));await t.UploadPlaylistTrack({playlistID:n,name:e.name,filename:e.name,data:r}),await Re()}catch(e){b.error(e instanceof Error?e.message:`Не удалось загрузить MP3`)}}async function ft(e){let n=_e.value?.playlist?.ID;if(n)try{await t.DeletePlaylistTrack({playlistID:n,trackID:e}),await Re()}catch(e){b.error(e instanceof Error?e.message:`Не удалось удалить трек`)}}function pt(e){let t=``;for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}async function mt(e){await t.UnbindScreen({screenID:e.ID}),await Z()}async function ht(e,t,n=!1){let r=`/team-story/`+e+`?password=`+t;if(n){window.open(r,`_blank`);return}o.push(r)}async function gt(){if(!(a.value||!z.value.teams?.length)){a.value=!0;try{let{blob:e,filename:t}=await n.downloadTeamQR(z.value.ID),r=URL.createObjectURL(e),i=document.createElement(`a`);i.href=r,i.download=t,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){b.error(e instanceof Error?e.message:`Не удалось скачать QR команд`)}finally{a.value=!1}}}function _t(){o.push(`/games/`+l+`/results`)}async function yt(){await t.UpdateGame({ID:z.value.ID,name:C.value.name,description:C.value.description,format:C.value.format,location:C.value.location.trim(),startAt:z.value.startAt,scenarioID:z.value.scenario?.ID}),await X(z.value.ID)}let bt=A({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}),xt=A(``),St=A({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}),$=A({name:``,image:``,file_type:``}),Ct=window.location.href;function wt(e,t){bt.value=e,$.value=t,T.value=!0}async function Tt(){if(ne.value<1||ne.value>8){b.error(`Укажите от 1 до 8 игроков`);return}await t.AddTeam({gameID:z.value.ID,name:te.value,captainEmail:N.value.trim(),participantsCount:ne.value}),await X(z.value.ID),E.value=!1,N.value=``,ne.value=1}async function Et(){await t.GiveTeamApplications({ID:bt.value.ID,name:$.value.name}),await X(z.value.ID),T.value=!1}async function Dt(e){St.value=e,j.value=!0}async function Ot(){await t.DeleteTeam({ID:St.value.ID}),await X(z.value.ID),j.value=!1}async function At(){await t.DeleteGame({ID:z.value.ID}),b.success(`Игра удалена`),o.push(`/games`)}function jt(e,t){let n=new URL(`/team-story/${e}`,window.location.origin);return n.searchParams.set(`password`,t),n.toString()}function Mt(e){Nt(jt(e.ID,e.password),`Подсмотреть игру`)}async function Nt(e,t){ie.value=e,ae.value=t,P.value=!0}async function Pt(){if(!(fe.value||!z.value.ID)){fe.value=!0;try{let e=await t.IssueGameTickets({gameID:z.value.ID,count:se.value});ce.value=e.tickets||[],b.success(`Выпущено билетов: ${ce.value.length}`)}catch(e){b.error(e instanceof Error?e.message:`Не удалось выпустить билеты`)}finally{fe.value=!1}}}Ne(()=>{X(Number(l)),Z(),Re(),Be(),it()},2e3);async function Ft(){await t.ResetGame({ID:z.value.ID}),await X(z.value.ID)}async function It(){await t.StartGame({ID:z.value.ID}),await X(z.value.ID)}async function Lt(){await t.PauseGame({ID:z.value.ID}),await X(z.value.ID)}async function Rt(){await t.PlayGame({ID:z.value.ID}),await X(z.value.ID)}async function zt(){await t.FinishGame({ID:z.value.ID}),await X(z.value.ID)}let Bt=A(!1),Ht=A([]),Ut=A(0),Wt=A(0),gn=A([]),_n=A([]),vn=A({});function yn(e,t){return(e??``)+`:`+(t??``)}function bn(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function xn(e,t){vn.value[e]=t===null?void 0:t}async function Sn(){let e=await t.GetGameAnswers({gameID:Number(l)});gn.value=e.questions||[],_n.value=e.teams||[];let n={};for(let e of _n.value)for(let t of e.answers||[])n[yn(e.team?.ID,t.questionCode)]=t.score;vn.value=n}async function Cn(){Bt.value=!0;let e=await t.GetGameReviewsForModeration({gameID:Number(l)});Ht.value=e.reviews||[],Ut.value=e.averageRating||0,Wt.value=e.reviewsCount||0}async function wn(e,n){await t.ModerateGameReview({ID:e.ID,status:n}),await Cn()}async function Tn(){for(let e of gn.value)for(let n of _n.value){let r=vn.value[yn(n.team?.ID,e.code)];await t.SetTeamAnswerScore({ID:n.team?.ID,questionCode:e.code,score:r??void 0})}b.success(`Баллы сохранены`),await Sn()}g.value===`answers`&&Sn();function En(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function Dn(e,t){if(e==``)return`Игра ещё не началась`;let n=je(e),r=En();t!=``&&(r=je(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),u=Math.floor(c/365);return u>0?`${u}г ${c%365}д`:l>0?`${l}мес ${c%30}д`:c>0?`${c}д ${s%24}ч`:s>0?`${s}ч ${o%60}м`:o>0?`${o}м ${a%60}с`:`${a}с`}let On=A(``);return Ne(()=>{On.value=Dn(z.value.startedAt||``,z.value.endedAt||``)},1e3),(e,t)=>(_(),f(k,null,[h(`div`,Kt,[h(`div`,qt,[u(O(ue),{value:g.value,type:`line`,animated:``,"onUpdate:value":y},{default:v(()=>[u(O(le),{name:`settings`,tab:`Настройки`},{default:v(()=>[h(`div`,Jt,[u(Q,null,{default:v(()=>[u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{quaternary:``,onClick:t[0]||=e=>Nt(O(Ct),`Админка`)},{default:v(()=>[...t[45]||=[x(`QR`,-1)]]),_:1}),z.value.status==`finish`?(_(),i(O(L),{key:0,quaternary:``,onClick:t[1]||=e=>_t()},{default:v(()=>[u(O(be),{class:`settings-icon`},{default:v(()=>[u(O(Qe))]),_:1}),t[46]||=x(` Итоги `,-1)]),_:1})):r(``,!0),(z.value.teams?.length||0)==0?(_(),i(O(L),{key:1,type:`error`,quaternary:``,onClick:t[2]||=e=>M.value=!0},{default:v(()=>[...t[47]||=[x(` Удалить игру `,-1)]]),_:1})):r(``,!0)]),_:1})]),_:1}),u(Q,null,{default:v(()=>[t[53]||=h(`p`,{class:`screens-title`},`Настройки игры`,-1),u(O(U),{vertical:``},{default:v(()=>[t[48]||=h(`p`,null,`Название`,-1),u(O(V),{value:C.value.name,"onUpdate:value":t[3]||=e=>C.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),t[49]||=h(`p`,{class:`settings-header`},`Формат игры`,-1),u(O(de),{value:C.value.format,"onUpdate:value":t[4]||=e=>C.value.format=e,options:[{label:`Online`,value:`online`},{label:`Offline`,value:`offline`}],"aria-label":`Формат игры`},null,8,[`value`]),t[50]||=h(`p`,{class:`settings-header`},`Описание`,-1),u(O(V),{value:C.value.description,"onUpdate:value":t[5]||=e=>C.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),t[51]||=h(`p`,{class:`settings-header`},`Место проведения`,-1),u(O(V),{value:C.value.location,"onUpdate:value":t[6]||=e=>C.value.location=e,type:`text`,placeholder:`Оставьте пустым для онлайн-игры`},null,8,[`value`])]),_:1}),u(O(W),{justify:`end`,class:`settings-actions`},{default:v(()=>[u(O(L),{onClick:t[7]||=e=>yt()},{default:v(()=>[...t[52]||=[x(`Сохранить изменения`,-1)]]),_:1})]),_:1})]),_:1}),u(Q,null,{default:v(()=>[t[56]||=h(`p`,{class:`screens-title`},`Выпуск билетов`,-1),u(O(U),{vertical:``},{default:v(()=>[u(O(He),{value:se.value,"onUpdate:value":t[8]||=e=>se.value=e,min:1,max:100},null,8,[`value`]),(_(!0),f(k,null,p(ce.value,e=>(_(),f(`div`,{key:e.ID,class:`issued-ticket`},[h(`div`,null,`Билет №`+s(e.ID),1),h(`a`,{href:e.URL,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть страницу билета `,8,Yt),u(O(L),{size:`small`,onClick:t=>Nt(e.URL,`Билет №${e.ID}`)},{default:v(()=>[...t[54]||=[x(` Показать QR `,-1)]]),_:1},8,[`onClick`])]))),128))]),_:1}),u(O(W),{justify:`end`,class:`settings-actions`},{default:v(()=>[u(O(L),{loading:fe.value,disabled:fe.value,onClick:t[9]||=e=>Pt()},{default:v(()=>[...t[55]||=[x(` Выпустить `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})])]),_:1}),u(O(le),{name:`teams`,tab:`Команды`},{default:v(()=>[h(`div`,Xt,[u(O(W),{justify:`space-between`,align:`center`},{default:v(()=>[u(O(ve),{bordered:!1,type:`info`},{default:v(()=>[x(` Участвуют команд: `+s(he.value),1)]),_:1}),he.value?(_(),i(O(L),{key:0,quaternary:``,loading:a.value,disabled:a.value,onClick:t[10]||=e=>gt()},{default:v(()=>[...t[57]||=[x(` QR команд `,-1)]]),_:1},8,[`loading`,`disabled`])):r(``,!0)]),_:1}),u(Vt,{teams:z.value.teams||[],"participation-options":me,onAdd:t[11]||=e=>E.value=!0,onOpenQr:Mt,onPreview:t[12]||=(e,t)=>ht(e,t,!0),onDelete:Dt,onGiveApplication:wt},null,8,[`teams`])])]),_:1}),u(O(le),{name:`screens`,tab:`Экраны`},{default:v(()=>[h(`div`,Zt,[u(kt,{screens:B.value,"screen-binding":R.value,playlists:ge.value,music:_e.value,onBind:rt,onSetSound:st,onUnbind:mt,onSetMusic:ct,onCreatePlaylist:lt,onDeletePlaylist:ut,onUploadTrack:dt,onDeleteTrack:ft},null,8,[`screens`,`screen-binding`,`playlists`,`music`])])]),_:1}),u(O(le),{name:`game`,tab:`Игра`},{default:v(()=>[h(`div`,Qt,[u(Q,null,{default:v(()=>[u(O(W),{justify:`space-between`},{default:v(()=>[u(O(U),null,{default:v(()=>[u(O(ve),{type:`info`},{default:v(()=>[x(s(On.value),1)]),_:1}),O(Me)(z.value.startAt)?(_(),i(O(ve),{key:0,type:`info`},{default:v(()=>[x(` Начало: `+s(O(Me)(z.value.startAt)),1)]),_:1})):r(``,!0)]),_:1}),u(O(W),{justify:`end`},{default:v(()=>[z.value.status==`draft`?r(``,!0):(_(),i(O(L),{key:0,type:`info`,dashed:``,onClick:t[13]||=e=>Ft()},{default:v(()=>[u(O(be),null,{default:v(()=>[u(O(Xe))]),_:1})]),_:1})),z.value.status==`draft`?(_(),i(O(L),{key:1,type:`info`,dashed:``,onClick:t[14]||=e=>It()},{default:v(()=>[u(O(be),null,{default:v(()=>[u(O(Je))]),_:1})]),_:1})):r(``,!0),z.value.status==`pause`?(_(),i(O(L),{key:2,type:`info`,dashed:``,onClick:t[15]||=e=>Rt()},{default:v(()=>[u(O(be),null,{default:v(()=>[u(O(Je))]),_:1})]),_:1})):r(``,!0),z.value.status==`run`?(_(),i(O(L),{key:3,type:`info`,dashed:``,onClick:t[16]||=e=>Lt()},{default:v(()=>[u(O(be),null,{default:v(()=>[u(O(Ke))]),_:1})]),_:1})):r(``,!0),z.value.status==`finish`?r(``,!0):(_(),i(O(L),{key:4,type:`info`,dashed:``,onClick:t[17]||=e=>zt()},{default:v(()=>[u(O(be),null,{default:v(()=>[u(O(We))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1}),u(vt,{"map-items":Y.value,teams:z.value.teams||[],screens:B.value,"preview-questions":Te.value,"preview-teams":Ee.value,"screen-plan":H.value,"screen-plan-draft":G.value,"screen-plan-dirty":K.value,"screen-plan-saving":q.value,"screen-plan-mode":J.value,"screen-volume":Ie.value,"screen-position":Le.value,onSaveItem:ot,onDragging:t[18]||=e=>Fe.value=e,onGiveApplication:wt,onAddStep:Ve,onEdit:Ue,onCancel:Ge,onRemoveStep:qe,onMoveStep:Ye,onDirty:Ze,onClearPlan:$e,onSave:et,onSetStep:tt,onCommand:nt,"onUpdate:screenVolume":t[19]||=e=>Ie.value=e??0,"onUpdate:screenPosition":t[20]||=e=>Le.value=e??0},null,8,[`map-items`,`teams`,`screens`,`preview-questions`,`preview-teams`,`screen-plan`,`screen-plan-draft`,`screen-plan-dirty`,`screen-plan-saving`,`screen-plan-mode`,`screen-volume`,`screen-position`])])]),_:1}),u(O(le),{name:`payment`,tab:`Оплата`},{default:v(()=>[h(`div`,$t,[u(Q,null,{default:v(()=>[u(O(W),{align:`center`,justify:`space-between`},{default:v(()=>[t[59]||=h(`p`,{class:`screens-title`},`Билеты`,-1),u(O(L),{size:`small`,onClick:t[21]||=e=>oe.value=!0},{default:v(()=>[...t[58]||=[x(` Проверить билет `,-1)]]),_:1})]),_:1})]),_:1}),u(Q,null,{default:v(()=>[t[60]||=h(`p`,{class:`screens-title`},`Оплата игры`,-1),h(`div`,en,[u(O(Se),{value:hn,size:300,padding:0})]),h(`p`,null,[h(`a`,{href:hn,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть ссылку оплаты `)])]),_:1})])]),_:1}),u(O(le),{name:`answers`,tab:`Проверка ответов`},{default:v(()=>[h(`div`,tn,[gn.value.length==0?(_(),f(`div`,nn,` Вопросы дела не заданы или команды ещё не отвечали. `)):r(``,!0),(_(!0),f(k,null,p(gn.value,e=>(_(),i(Q,{key:e.code},{default:v(()=>[h(`p`,rn,s(e.code)+`: `+s(e.text),1),h(`p`,an,[t[61]||=x(` Правильный ответ:`,-1),t[62]||=h(`br`,null,null,-1),h(`span`,on,s(e.answer||`—`),1)]),(_(!0),f(k,null,p(_n.value,t=>(_(),f(`div`,{key:t.team?.ID,class:`answers-team-row`},[h(`div`,sn,s(t.team?.name),1),h(`div`,cn,s(bn(t,e.code)||`—`),1),u(O(He),{value:vn.value[yn(t.team?.ID,e.code)],"onUpdate:value":n=>xn(yn(t.team?.ID,e.code),n),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])]))),128))]),_:2},1024))),128)),u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{onClick:t[22]||=e=>Tn(),disabled:gn.value.length==0},{default:v(()=>[...t[63]||=[x(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})])]),_:1})]),_:1},8,[`value`])])]),u(Gt,{show:oe.value,"onUpdate:show":t[23]||=e=>oe.value=e},null,8,[`show`]),u(O(I),{show:T.value,"onUpdate:show":t[26]||=e=>T.value=e},{default:v(()=>[u(O(F),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:t[24]||=e=>T.value=!1},{default:v(()=>[...t[64]||=[x(` x `,-1)]]),_:1})]),footer:v(()=>[u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{onClick:t[25]||=e=>Et(),ghost:``},{default:v(()=>[...t[67]||=[x(` Выдать `,-1)]]),_:1})]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[t[65]||=h(`p`,null,`Команда`,-1),h(`h3`,null,s(bt.value.name),1),t[66]||=h(`p`,null,`Улика`,-1),h(`h3`,null,s($.value.name),1),O(ke)($.value)==`image`&&$.value.image?(_(),f(`div`,ln,[h(`img`,{src:O(Ae)($.value.image),class:`give-application-image`},null,8,un)])):O(ke)($.value)==`audio`&&$.value.image?(_(),f(`audio`,{key:1,src:O(Ae)($.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,dn)):O(ke)($.value)==`pdf`&&$.value.image?(_(),f(`a`,{key:2,href:O(Ae)($.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,fn)):r(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]),u(O(I),{show:E.value,"onUpdate:show":t[32]||=e=>E.value=e},{default:v(()=>[u(O(F),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:t[27]||=e=>E.value=!1},{default:v(()=>[...t[68]||=[x(` x `,-1)]]),_:1})]),footer:v(()=>[u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{onClick:t[31]||=e=>Tt(),disabled:te.value.length==0},{default:v(()=>[...t[69]||=[x(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[u(O(V),{value:te.value,"onUpdate:value":t[28]||=e=>te.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`]),u(O(V),{value:N.value,"onUpdate:value":t[29]||=e=>N.value=e,"input-props":{type:`email`,autocomplete:`email`},placeholder:`Почта капитана (необязательно)`,"aria-label":`Почта капитана (необязательно)`},null,8,[`value`]),u(O(He),{value:ne.value,"onUpdate:value":t[30]||=e=>ne.value=e,min:1,max:8,precision:0,placeholder:`Количество игроков`,"aria-label":`Количество игроков`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),u(O(I),{show:j.value,"onUpdate:show":t[36]||=e=>j.value=e},{default:v(()=>[u(O(F),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:t[33]||=e=>j.value=!1},{default:v(()=>[...t[70]||=[x(` x `,-1)]]),_:1})]),footer:v(()=>[u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{onClick:t[35]||=e=>Ot(),disabled:xt.value!=St.value.name},{default:v(()=>[...t[73]||=[x(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[h(`p`,null,[t[71]||=x(` Введите название команды `,-1),u(O(pe),{class:`name-text`,strong:``},{default:v(()=>[x(s(St.value.name),1)]),_:1}),t[72]||=x(` чтобы удалить его `,-1)]),u(O(V),{value:xt.value,"onUpdate:value":t[34]||=e=>xt.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),u(O(I),{show:M.value,"onUpdate:show":t[40]||=e=>M.value=e},{default:v(()=>[u(O(F),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:t[37]||=e=>M.value=!1},{default:v(()=>[...t[74]||=[x(` x `,-1)]]),_:1})]),footer:v(()=>[u(O(W),{justify:`end`},{default:v(()=>[u(O(L),{onClick:t[39]||=e=>At(),disabled:re.value!=z.value.name},{default:v(()=>[...t[77]||=[x(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[h(`p`,null,[t[75]||=x(` Введите название игры `,-1),u(O(pe),{class:`name-text`,strong:``},{default:v(()=>[x(s(z.value.name),1)]),_:1}),t[76]||=x(` чтобы удалить её `,-1)]),u(O(V),{value:re.value,"onUpdate:value":t[38]||=e=>re.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),u(O(I),{show:P.value,"onUpdate:show":t[42]||=e=>P.value=e},{default:v(()=>[u(O(F),{style:{width:`600px`},title:ae.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":v(()=>[u(O(L),{onClick:t[41]||=e=>P.value=!1},{default:v(()=>[...t[78]||=[x(` x `,-1)]]),_:1})]),footer:v(()=>[...t[79]||=[]]),default:v(()=>[u(O(U),{vertical:``},{default:v(()=>[h(`div`,pn,[u(O(Se),{value:ie.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`]),u(O(I),{show:Bt.value,"onUpdate:show":t[44]||=e=>Bt.value=e},{default:v(()=>[u(O(F),{style:{width:`min(94vw, 800px)`},title:`Отзывы игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":v(()=>[u(O(L),{onClick:t[43]||=e=>Bt.value=!1},{default:v(()=>[...t[80]||=[x(` x `,-1)]]),_:1})]),default:v(()=>[u(O(W),{align:`center`,class:`reviews-summary`},{default:v(()=>[u(O(xe),{value:Ut.value,readonly:``,"allow-half":``},null,8,[`value`]),h(`span`,null,s(Wt.value?`${Ut.value.toFixed(1)} · ${Wt.value}`:`Пока нет отзывов`),1)]),_:1}),Ht.value.length==0?(_(),f(`div`,mn,`Отзывов пока нет.`)):r(``,!0),(_(!0),f(k,null,p(Ht.value,e=>(_(),f(`div`,{key:e.ID,class:`review-row`},[u(O(W),{justify:`space-between`,align:`center`},{default:v(()=>[h(`strong`,null,s(e.teamName),1),u(O(ve),null,{default:v(()=>[x(s(e.status),1)]),_:2},1024)]),_:2},1024),u(O(xe),{value:e.rating,readonly:``,size:`small`},null,8,[`value`]),h(`div`,null,`Сложность: `+s([``,`лёгкая`,`средняя`,`тяжёлая`][e.difficulty||0]),1),h(`p`,null,s(e.text),1),e.status==`pending`?(_(),i(O(W),{key:0,justify:`end`},{default:v(()=>[u(O(L),{type:`success`,onClick:t=>wn(e,`approved`)},{default:v(()=>[...t[81]||=[x(`Одобрить`,-1)]]),_:1},8,[`onClick`]),u(O(L),{type:`error`,ghost:``,onClick:t=>wn(e,`rejected`)},{default:v(()=>[...t[82]||=[x(`Отклонить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):e.status==`approved`?(_(),i(O(W),{key:1,justify:`end`},{default:v(()=>[u(O(L),{type:`error`,ghost:``,onClick:t=>wn(e,`hidden`)},{default:v(()=>[...t[83]||=[x(`Скрыть`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):r(``,!0)]))),128))]),_:1})]),_:1},8,[`show`]),u(De,{active:`games`})],64))}}),[[`__scopeId`,`data-v-55e6455c`]]),_n=d({__name:`GameView`,setup(e){return(e,t)=>(_(),i(gn))}});export{_n as default}; |