Files
prod/frontend/dist/assets/GameView-DaStgTBj.js
T
2026-10-12 15:51:37 +07:00

47 lines
90 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{Ct as e,Dt as t,H as n,In as r,It as i,Jt as a,K as o,Kt as s,Ln as c,Mt as l,Ot as u,Pt as d,Q as f,Rn as p,Rt as m,St as h,U as g,Ut as _,Vt as v,Wt as y,Xt as b,Y as x,Yt as ee,Zt as te,an as S,at as C,bn as w,bt as T,d as E,en as D,f as ne,fn as re,g as ie,hn as O,ht as k,in as A,it as j,kt as M,l as ae,nn as oe,nt as N,ot as se,p as ce,qt as le,tt as ue,u as de,vn as fe,wt as P,xt as F}from"./client-CQRzkU4U.js";import{d as pe}from"./utils-BpVk5V-O.js";import{d as me,t as I}from"./Card-KZp_-X3j.js";import{n as he,r as L,t as ge}from"./es-CMa9sLdS.js";import{i as _e,w as ve}from"./Suffix-BuL23T81.js";import{t as ye}from"./Modal-CMzaV1BI.js";import{t as R}from"./use-merged-state-BMDnQFAD.js";import{n as be,t as z}from"./Button-Cn4hUzw1.js";import{n as xe,t as Se}from"./Tabs-BuSzsjf5.js";import{t as Ce}from"./Select-CnPJOsIF.js";import{a as we,c as B,i as Te,o as Ee,s as De,t as V}from"./_plugin-vue_export-helper-DIaADwPY.js";import{t as Oe}from"./Upload-QmR8SSkW.js";import{n as H}from"./use-form-item-CVjEGDjV.js";import{t as ke}from"./Add-BdC2Nfm9.js";import{t as U}from"./Input-Cb759afS.js";import{n as Ae,t as je}from"./Switch-BV49-Qjw.js";import{t as W}from"./Alert-CxDIiTsi.js";import{t as G}from"./Space-DsIReS5f.js";import{t as K}from"./Flex-D-Yfgf_y.js";import{t as Me}from"./Rate-DzJELPVQ.js";import{t as Ne}from"./QrCode-BCGTfKhF.js";import{t as Pe}from"./Spin-DhYn9SgY.js";import{t as Fe}from"./text-sgShtPs5.js";import{A as Ie,D as Le,J as Re,T as ze,ct as Be,i as Ve,k as He,lt as Ue,nt as We,o as Ge,r as Ke,tt as q,ut as qe,z as Je}from"./index-xu1Qf_c_.js";import{n as Ye,t as Xe}from"./HeaderMenu-CQdasCC8.js";import{t as Ze}from"./binary_client-BzvBaY6y.js";import{n as Qe,r as $e}from"./application-vQju0Mdc.js";import{n as et,t as tt}from"./datetime-BJNH0M1T.js";import{t as nt}from"./useDeviceContext-CSwyjpOc.js";var rt=M({name:`ChevronLeft`,render(){return l(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},l(`path`,{d:`M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z`,fill:`currentColor`}))}}),J=M({name:`ChevronRight`,render(){return l(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},l(`path`,{d:`M5.64645 3.14645C5.45118 3.34171 5.45118 3.65829 5.64645 3.85355L9.79289 8L5.64645 12.1464C5.45118 12.3417 5.45118 12.6583 5.64645 12.8536C5.84171 13.0488 6.15829 13.0488 6.35355 12.8536L10.8536 8.35355C11.0488 8.15829 11.0488 7.84171 10.8536 7.64645L6.35355 3.14645C6.15829 2.95118 5.84171 2.95118 5.64645 3.14645Z`,fill:`currentColor`}))}}),it=N(`collapse`,`width: 100%;`,[N(`collapse-item`,`
font-size: var(--n-font-size);
color: var(--n-text-color);
transition:
color .3s var(--n-bezier),
border-color .3s var(--n-bezier);
margin: var(--n-item-margin);
`,[C(`disabled`,[j(`header`,`cursor: not-allowed;`,[j(`header-main`,`
color: var(--n-title-text-color-disabled);
`),N(`collapse-item-arrow`,`
color: var(--n-arrow-color-disabled);
`)])]),N(`collapse-item`,`margin-left: 32px;`),ue(`&:first-child`,`margin-top: 0;`),ue(`&:first-child >`,[j(`header`,`padding-top: 0;`)]),C(`left-arrow-placement`,[j(`header`,[N(`collapse-item-arrow`,`margin-right: 4px;`)])]),C(`right-arrow-placement`,[j(`header`,[N(`collapse-item-arrow`,`margin-left: 4px;`)])]),j(`content-wrapper`,[j(`content-inner`,`padding-top: 16px;`),Ie({duration:`0.15s`})]),C(`active`,[j(`header`,[C(`active`,[N(`collapse-item-arrow`,`transform: rotate(90deg);`)])])]),ue(`&:not(:first-child)`,`border-top: 1px solid var(--n-divider-color);`),se(`disabled`,[C(`trigger-area-main`,[j(`header`,[j(`header-main`,`cursor: pointer;`),N(`collapse-item-arrow`,`cursor: default;`)])]),C(`trigger-area-arrow`,[j(`header`,[N(`collapse-item-arrow`,`cursor: pointer;`)])]),C(`trigger-area-extra`,[j(`header`,[j(`header-extra`,`cursor: pointer;`)])])]),j(`header`,`
font-size: var(--n-title-font-size);
display: flex;
flex-wrap: nowrap;
align-items: center;
transition: color .3s var(--n-bezier);
position: relative;
padding: var(--n-title-padding);
color: var(--n-title-text-color);
`,[j(`header-main`,`
display: flex;
flex-wrap: nowrap;
align-items: center;
font-weight: var(--n-title-font-weight);
transition: color .3s var(--n-bezier);
flex: 1;
color: var(--n-title-text-color);
`),j(`header-extra`,`
display: flex;
align-items: center;
transition: color .3s var(--n-bezier);
color: var(--n-text-color);
`),N(`collapse-item-arrow`,`
display: flex;
transition:
transform .15s var(--n-bezier),
color .3s var(--n-bezier);
font-size: 18px;
color: var(--n-arrow-color);
`)])])]),at=Object.assign(Object.assign({},ce.props),{defaultExpandedNames:{type:[Array,String],default:null},expandedNames:[Array,String],arrowPlacement:{type:String,default:`left`},accordion:{type:Boolean,default:!1},displayDirective:{type:String,default:`if`},triggerAreas:{type:Array,default:()=>[`main`,`extra`,`arrow`]},onItemHeaderClick:[Function,Array],"onUpdate:expandedNames":[Function,Array],onUpdateExpandedNames:[Function,Array],onExpandedNamesChange:{type:[Function,Array],validator:()=>!0,default:void 0}}),ot=x(`n-collapse`),st=M({name:`Collapse`,props:at,slots:Object,setup(e,{slots:t}){let{mergedClsPrefixRef:r,inlineThemeDisabled:i,mergedRtlRef:a}=g(e),o=O(e.defaultExpandedNames),s=R(T(()=>e.expandedNames),o),c=ce(`Collapse`,`-collapse`,it,ze,e,r);function l(t){let{"onUpdate:expandedNames":n,onUpdateExpandedNames:r,onExpandedNamesChange:i}=e;r&&B(r,t),n&&B(n,t),i&&B(i,t),o.value=t}function u(t){let{onItemHeaderClick:n}=e;n&&B(n,t)}function d(t,n,r){let{accordion:i}=e,{value:a}=s;if(i)t?(l([n]),u({name:n,expanded:!0,event:r})):(l([]),u({name:n,expanded:!1,event:r}));else if(!Array.isArray(a))l([n]),u({name:n,expanded:!0,event:r});else{let e=a.slice(),t=e.findIndex(e=>n===e);~t?(e.splice(t,1),l(e),u({name:n,expanded:!1,event:r})):(e.push(n),l(e),u({name:n,expanded:!0,event:r}))}}le(ot,{props:e,mergedClsPrefixRef:r,expandedNamesRef:s,slots:t,toggleItem:d});let f=ie(`Collapse`,a,r),p=T(()=>{let{common:{cubicBezierEaseInOut:e},self:{titleFontWeight:t,dividerColor:n,titlePadding:r,titleTextColor:i,titleTextColorDisabled:a,textColor:o,arrowColor:s,fontSize:l,titleFontSize:u,arrowColorDisabled:d,itemMargin:f}}=c.value;return{"--n-font-size":l,"--n-bezier":e,"--n-text-color":o,"--n-divider-color":n,"--n-title-padding":r,"--n-title-font-size":u,"--n-title-text-color":i,"--n-title-text-color-disabled":a,"--n-title-font-weight":t,"--n-arrow-color":s,"--n-arrow-color-disabled":d,"--n-item-margin":f}}),m=i?n(`collapse`,void 0,p,e):void 0;return{rtlEnabled:f,mergedTheme:c,mergedClsPrefix:r,cssVars:i?void 0:p,themeClass:m?.themeClass,onRender:m?.onRender}},render(){var e;return(e=this.onRender)==null||e.call(this),l(`div`,{class:[`${this.mergedClsPrefix}-collapse`,this.rtlEnabled&&`${this.mergedClsPrefix}-collapse--rtl`,this.themeClass],style:this.cssVars},this.$slots)}}),ct=M({name:`CollapseItemContent`,props:{displayDirective:{type:String,required:!0},show:Boolean,clsPrefix:{type:String,required:!0}},setup(e){return{onceTrue:ve(fe(e,`show`))}},render(){return l(Je,null,{default:()=>{let{show:e,displayDirective:t,onceTrue:n,clsPrefix:r}=this,i=t===`show`&&n,a=l(`div`,{class:`${r}-collapse-item__content-wrapper`},l(`div`,{class:`${r}-collapse-item__content-inner`},this.$slots));return i?S(a,[[Be,e]]):e?a:null}})}}),lt=M({name:`CollapseItem`,props:{title:String,name:[String,Number],disabled:Boolean,displayDirective:String},setup(e){let{mergedRtlRef:t}=g(e),n=We(),r=q(()=>e.name??n),i=d(ot);i||o(`collapse-item`,"`n-collapse-item` must be placed inside `n-collapse`.");let{expandedNamesRef:a,props:s,mergedClsPrefixRef:c,slots:l}=i,u=T(()=>{let{value:e}=a;if(Array.isArray(e)){let{value:t}=r;return!~e.findIndex(e=>e===t)}else if(e){let{value:t}=r;return t!==e}return!0});return{rtlEnabled:ie(`Collapse`,t,c),collapseSlots:l,randomName:n,mergedClsPrefix:c,collapsed:u,triggerAreas:fe(s,`triggerAreas`),mergedDisplayDirective:T(()=>{let{displayDirective:t}=e;return t||s.displayDirective}),arrowPlacement:T(()=>s.arrowPlacement),handleClick(t){let n=`main`;pe(t,`arrow`)&&(n=`arrow`),pe(t,`extra`)&&(n=`extra`),s.triggerAreas.includes(n)&&i&&!e.disabled&&i.toggleItem(u.value,r.value,t)}}},render(){let{collapseSlots:e,$slots:t,arrowPlacement:n,collapsed:r,mergedDisplayDirective:i,mergedClsPrefix:a,disabled:o,triggerAreas:s}=this,c=we(t.header,{collapsed:r},()=>[this.title]),u=t[`header-extra`]||e[`header-extra`],d=t.arrow||e.arrow;return l(`div`,{class:[`${a}-collapse-item`,`${a}-collapse-item--${n}-arrow-placement`,o&&`${a}-collapse-item--disabled`,!r&&`${a}-collapse-item--active`,s.map(e=>`${a}-collapse-item--trigger-area-${e}`)]},l(`div`,{class:[`${a}-collapse-item__header`,!r&&`${a}-collapse-item__header--active`]},l(`div`,{class:`${a}-collapse-item__header-main`,onClick:this.handleClick},n===`right`&&c,l(`div`,{class:`${a}-collapse-item-arrow`,key:+!this.rtlEnabled,"data-arrow":!0},we(d,{collapsed:r},()=>[l(Re,{clsPrefix:a},{default:()=>this.rtlEnabled?l(rt,null):l(J,null)})])),n===`left`&&c),De(u,{collapsed:r},e=>l(`div`,{class:`${a}-collapse-item__header-extra`,onClick:this.handleClick,"data-extra":!0},e))),l(ct,{clsPrefix:a,displayDirective:i,show:!r},t))}});function ut(e){let{textColorDisabled:t}=e;return{iconColorDisabled:t}}var dt=ne({name:`InputNumber`,common:E,peers:{Button:Le,Input:He},self:ut}),Y=ue([N(`input-number-suffix`,`
display: inline-block;
margin-right: 10px;
`),N(`input-number-prefix`,`
display: inline-block;
margin-left: 10px;
`)]);function X(e){return e==null||typeof e==`string`&&e.trim()===``?null:Number(e)}function ft(e){return e.includes(`.`)&&(/^(-)?\d+.*(\.|0)$/.test(e)||/^-?\d*$/.test(e))||e===`-`||e===`-0`}function pt(e){return e==null?!0:!Number.isNaN(e)}function mt(e,t){return typeof e==`number`?t===void 0?String(e):e.toFixed(t):``}function ht(e){if(e===null)return null;if(typeof e==`number`)return e;{let t=Number(e);return Number.isNaN(t)?null:t}}var gt=800,_t=100,vt=M({name:`InputNumber`,props:Object.assign(Object.assign({},ce.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}=g(e),a=ce(`InputNumber`,`-input-number`,Y,dt,e,n),{localeRef:o}=_e(`InputNumber`),s=H(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:u}=s,d=O(null),p=O(null),h=O(null),_=O(e.defaultValue),v=R(fe(e,`value`),_),y=O(``),b=e=>{let t=String(e).split(`.`)[1];return t?t.length:0},x=t=>{let n=[e.min,e.max,e.step,t].map(e=>e===void 0?0:b(e));return Math.max(...n)},ee=q(()=>{let{placeholder:t}=e;return t===void 0?o.value.placeholder:t}),te=q(()=>{let t=ht(e.step);return t===null||t===0?1:Math.abs(t)}),S=q(()=>{let t=ht(e.min);return t===null?null:t}),C=q(()=>{let t=ht(e.max);return t===null?null:t}),w=()=>{let{value:t}=v;if(pt(t)){let{format:n,precision:r}=e;n?y.value=n(t):t===null||r===void 0||b(t)>r?y.value=mt(t,void 0):y.value=mt(t,r)}else y.value=String(t)};w();let E=t=>{let{value:n}=v;if(t===n){w();return}let{"onUpdate:value":r,onUpdateValue:i,onChange:a}=e,{nTriggerFormInput:o,nTriggerFormChange:c}=s;a&&B(a,t),i&&B(i,t),r&&B(r,t),_.value=t,o(),c()},D=({offset:t,doUpdateIfValid:n,fixPrecision:r,isInputing:i})=>{let{value:a}=y;if(i&&ft(a))return!1;let o=(e.parse||X)(a);if(o===null)return n&&E(null),null;if(pt(o)){let a=b(o),{precision:s}=e;if(s!==void 0&&s<a&&!r)return!1;let c=Number.parseFloat((o+t).toFixed(s??x(o)));if(pt(c)){let{value:t}=C,{value:r}=S;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&&E(c),c)}}return!1},ne=q(()=>D({offset:0,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})===!1),re=q(()=>{let{value:t}=v;if(e.validator&&t===null)return!1;let{value:n}=te;return D({offset:-n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1}),k=q(()=>{let{value:t}=v;if(e.validator&&t===null)return!1;let{value:n}=te;return D({offset:+n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1});function A(t){let{onFocus:n}=e,{nTriggerFormFocus:r}=s;n&&B(n,t),r()}function j(t){if(t.target===d.value?.wrapperElRef)return;let n=D({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0});if(n!==!1){let e=d.value?.inputElRef;e&&(e.value=String(n||``)),v.value===n&&w()}else w();let{onBlur:r}=e,{nTriggerFormBlur:i}=s;r&&B(r,t),i(),m(()=>{w()})}function M(t){let{onClear:n}=e;n&&B(n,t)}function ae(){let{value:t}=k;if(!t){ge();return}let{value:n}=v;if(n===null)e.validator||E(ue());else{let{value:e}=te;D({offset:e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}function N(){let{value:t}=re;if(!t){he();return}let{value:n}=v;if(n===null)e.validator||E(ue());else{let{value:e}=te;D({offset:-e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}let se=A,le=j;function ue(){if(e.validator)return null;let{value:t}=S,{value:n}=C;return t===null?n===null?0:Math.min(0,n):Math.max(0,t)}function de(e){M(e),E(null)}function P(e){var t;h.value?.$el.contains(e.target)&&e.preventDefault(),p.value?.$el.contains(e.target)&&e.preventDefault(),(t=d.value)==null||t.activate()}let F=null,pe=null,I=null;function he(){I&&=(window.clearTimeout(I),null),F&&=(window.clearInterval(F),null)}let L=null;function ge(){L&&=(window.clearTimeout(L),null),pe&&=(window.clearInterval(pe),null)}function ve(){he(),I=window.setTimeout(()=>{F=window.setInterval(()=>{N()},_t)},gt),me(`mouseup`,document,he,{once:!0})}function ye(){ge(),L=window.setTimeout(()=>{pe=window.setInterval(()=>{ae()},_t)},gt),me(`mouseup`,document,ge,{once:!0})}let be=()=>{pe||ae()},z=()=>{F||N()};function xe(t){var n;if(t.key===`Enter`){if(t.target===d.value?.wrapperElRef)return;D({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&((n=d.value)==null||n.deactivate())}else if(t.key===`ArrowUp`){if(!k.value||e.keyboard.ArrowUp===!1)return;t.preventDefault(),D({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&ae()}else if(t.key===`ArrowDown`){if(!re.value||e.keyboard.ArrowDown===!1)return;t.preventDefault(),D({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&N()}}function Se(t){y.value=t,e.updateValueOnInput&&!e.format&&!e.parse&&e.precision===void 0&&D({offset:0,doUpdateIfValid:!0,isInputing:!0,fixPrecision:!1})}oe(v,()=>{w()});let Ce={focus:()=>d.value?.focus(),blur:()=>d.value?.blur(),select:()=>d.value?.select()},we=ie(`InputNumber`,r,n);return Object.assign(Object.assign({},Ce),{rtlEnabled:we,inputInstRef:d,minusButtonInstRef:p,addButtonInstRef:h,mergedClsPrefix:n,mergedBordered:t,uncontrolledValue:_,mergedValue:v,mergedPlaceholder:ee,displayedValueInvalid:ne,mergedSize:c,mergedDisabled:l,displayedValue:y,addable:k,minusable:re,mergedStatus:u,handleFocus:se,handleBlur:le,handleClear:de,handleMouseDown:P,handleAddClick:be,handleMinusClick:z,handleAddMousedown:ye,handleMinusMousedown:ve,handleKeyDown:xe,handleUpdateDisplayedValue:Se,mergedTheme:a,inputThemeOverrides:{paddingSmall:`0 8px 0 10px`,paddingMedium:`0 8px 0 12px`,paddingLarge:`0 8px 0 14px`},buttonThemeOverrides:T(()=>{let{self:{iconColorDisabled:e}}=a.value,[t,n,r,i]=f(e);return{textColorTextDisabled:`rgb(${t}, ${n}, ${r})`,opacityDisabled:`${i}`}})})},render(){let{mergedClsPrefix:e,$slots:t}=this,n=()=>l(be,{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:()=>Te(t[`minus-icon`],()=>[l(Re,{clsPrefix:e},{default:()=>l(Ae,null)})])}),r=()=>l(be,{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:()=>Te(t[`add-icon`],()=>[l(Re,{clsPrefix:e},{default:()=>l(ke,null)})])});return l(`div`,{class:[`${e}-input-number`,this.rtlEnabled&&`${e}-input-number--rtl`]},l(U,{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(),Ee(t.prefix,t=>t?l(`span`,{class:`${e}-input-number-prefix`},t):null)]:t.prefix?.call(t),suffix:()=>this.showButton?[Ee(t.suffix,t=>t?l(`span`,{class:`${e}-input-number-suffix`},t):null),this.buttonPlacement===`right`?n():null,r()]:t.suffix?.call(t)}))}}),yt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},bt=M({name:`Flag`,render:function(e,t){return s(),P(`svg`,yt,t[0]||=[F(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,fill:`currentColor`},null,-1)])}}),xt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},St=M({name:`Pause`,render:function(e,t){return s(),P(`svg`,xt,t[0]||=[F(`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),F(`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)])}}),Ct={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},wt=M({name:`Play`,render:function(e,t){return s(),P(`svg`,Ct,t[0]||=[F(`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)])}}),Tt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Et=M({name:`Reset`,render:function(e,t){return s(),P(`svg`,Tt,t[0]||=[F(`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)])}}),Dt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Ot=M({name:`Trophy`,render:function(e,t){return s(),P(`svg`,Dt,t[0]||=[F(`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)])}}),kt=`/assets/icq-uh-oh-DjThHNEb.wav`,At={key:0,class:`timer-preview`},jt=[`src`],Mt=[`src`],Z={key:3,class:`preview-message`},Nt={key:4,class:`preview-message`},Pt={key:5,class:`preview-message`},Ft={key:6,class:`preview-message`},It={key:7,class:`preview-results`},Lt=[`src`],Rt=V(M({__name:`ScreenPreview`,props:{state:{},questions:{},teams:{}},setup(t){let n=t,r=O(Date.now()),i=O(0),o=O(Date.now()),l=O(),u=null,d=T(()=>{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}")`}:{}}),f=T(()=>n.state.timerState===`SCREEN_TIMER_STATE_RUNNING`?Math.max(0,i.value-(r.value-o.value)/1e3):i.value),m=T(()=>{let e=Math.floor(f.value/60),t=Math.floor(f.value%60);return`${String(e).padStart(2,`0`)}:${String(t).padStart(2,`0`)}`}),h=T(()=>$e(n.state.introAudio)),g=T(()=>$e(n.state.conclusionVideo));return oe(()=>[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`&&l.value===n.state.timerState){let t=Math.max(0,i.value-(Date.now()-o.value)/1e3);if(Math.abs(e-t)<=.5)return}i.value=e,o.value=Date.now(),l.value=n.state.timerState},{immediate:!0}),_(()=>{u=window.setInterval(()=>{r.value=Date.now()},250)}),y(()=>{u!=null&&window.clearInterval(u)}),(n,r)=>(s(),P(`div`,{class:`screen-preview`,style:c(d.value)},[t.state.mode===`SCREEN_MODE_TIMER`?(s(),P(`div`,At,[F(`h2`,null,p(t.state.timerLabel||`Перерыв`),1),F(`strong`,null,p(m.value),1)])):t.state.mode===`SCREEN_MODE_INTRO`&&h.value?(s(),P(`audio`,{key:1,src:h.value,controls:``},null,8,jt)):t.state.mode===`SCREEN_MODE_CONCLUSION`&&g.value?(s(),P(`video`,{key:2,src:g.value,autoplay:``,class:`preview-video`,loop:``,muted:``,playsinline:``},null,8,Mt)):t.state.mode===`SCREEN_MODE_CONCLUSION`?(s(),P(`div`,Z,` Видео закрывашки не задано `)):t.state.mode===`SCREEN_MODE_INTRO_DONE`?(s(),P(`div`,Nt,`Успехов`)):t.state.mode===`SCREEN_MODE_CONCLUSION_DONE`?(s(),P(`div`,Pt,` Спасибо за игру! `)):t.state.mode===`SCREEN_MODE_TEXT`?(s(),P(`div`,Ft,p(t.state.text),1)):t.state.mode===`SCREEN_MODE_RESULTS`?(s(),P(`div`,It,[r[4]||=F(`h2`,null,`Результаты`,-1),F(`table`,null,[F(`thead`,null,[F(`tr`,null,[r[0]||=F(`th`,null,`Место`,-1),r[1]||=F(`th`,null,`Команда`,-1),(s(!0),P(k,null,a(t.questions,e=>(s(),P(`th`,{key:e.code},p(e.code),1))),128)),r[2]||=F(`th`,null,`Сумма`,-1),r[3]||=F(`th`,null,`Ходы`,-1)])]),F(`tbody`,null,[(s(!0),P(k,null,a(t.teams,e=>(s(),P(`tr`,{key:e.team?.ID},[F(`td`,null,p(e.place),1),F(`td`,null,p(e.team?.name),1),(s(!0),P(k,null,a(t.questions,t=>(s(),P(`td`,{key:t.code},p(e.answers?.find(e=>e.questionCode===t.code)?.score??0),1))),128)),F(`td`,null,p(e.totalScore),1),F(`td`,null,p(e.actionsCount),1)]))),128))])])])):t.state.coverImage?(s(),P(`img`,{key:8,src:t.state.coverImage,alt:`Обложка дела`,class:`preview-cover`},null,8,Lt)):e(``,!0)],4))}}),[[`__scopeId`,`data-v-d5134fb8`]]),Q=V(M({__name:`UiBlock`,props:{tag:{default:`div`}},setup(e){return(t,n)=>(s(),h(te(e.tag),{class:`ui-block`},{default:A(()=>[ee(t.$slots,`default`,{},void 0,!0)]),_:3}))}}),[[`__scopeId`,`data-v-80193f22`]]),zt={class:`map-preview-layout`},Bt=[`onPointerdown`],Vt=[`onPointerdown`],Ht={key:2},Ut=[`onClick`],Wt={key:1,class:`screen-preview-placeholder`},Gt={class:`screen-plan`},Kt={key:0,class:`screen-empty`},qt=20,Jt=V(M({__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(n,{emit:i}){let o=n,l=i,d=O(1),f=O({x:0,y:0}),m=O(),g=T(()=>o.screens.find(e=>e.status===`connected`)||o.screens[0]),_=T(()=>new Map(o.teams.filter(e=>e.applications?.length).map(e=>[e.ID,e]))),y=[{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`}],b,x;function ee(e){let t=m.value;if(!t)return;let n=t.getBoundingClientRect();return{x:(e.clientX-n.left-t.clientLeft-f.value.x)/d.value,y:(e.clientY-n.top-t.clientTop-f.value.y)/d.value}}function te(e,t){let n=ee(t);n&&(b={item:e,offsetX:n.x-(e.x||0),offsetY:n.y-(e.y||0)},l(`dragging`,!0),window.addEventListener(`pointermove`,C),window.addEventListener(`pointerup`,E,{once:!0}),window.addEventListener(`pointercancel`,E,{once:!0}))}function C(e){if(!b)return;let t=ee(e);t&&(b.item.x=Math.round((t.x-b.offsetX)/qt)*qt,b.item.y=Math.round((t.y-b.offsetY)/qt)*qt)}function E(){if(!b)return;let e=b.item;b=void 0,window.removeEventListener(`pointermove`,C),window.removeEventListener(`pointerup`,E),window.removeEventListener(`pointercancel`,E),l(`dragging`,!1),l(`saveItem`,e)}function D(e){e.hidden=!e.hidden,l(`saveItem`,e,e.hidden)}function ne(e){d.value=Math.min(2,Math.max(.5,Number((d.value+e).toFixed(2))))}function re(){d.value=1,f.value={x:0,y:0}}function ie(e){e.button===0&&(x={startX:e.clientX,startY:e.clientY,offsetX:f.value.x,offsetY:f.value.y},window.addEventListener(`pointermove`,j),window.addEventListener(`pointerup`,M,{once:!0}))}function j(e){x&&(f.value={x:x.offsetX+e.clientX-x.startX,y:x.offsetY+e.clientY-x.startY})}function M(){x=void 0,window.removeEventListener(`pointermove`,j)}function ae(e){e.preventDefault(),ne(e.deltaY<0?.1:-.1)}return v(()=>{b&&l(`dragging`,!1),window.removeEventListener(`pointermove`,C),window.removeEventListener(`pointerup`,E),window.removeEventListener(`pointercancel`,E),window.removeEventListener(`pointermove`,j),window.removeEventListener(`pointerup`,M)}),(i,o)=>(s(),P(`div`,zt,[u(Q,null,{default:A(()=>[u(w(K),{align:`center`,justify:`space-between`,class:`screen-header`},{default:A(()=>[o[18]||=F(`p`,{class:`screens-title`},`Карта помещения`,-1),u(w(G),null,{default:A(()=>[u(w(z),{size:`small`,onClick:o[0]||=e=>ne(-.1)},{default:A(()=>[...o[15]||=[t(`−`,-1)]]),_:1}),u(w(Fe),null,{default:A(()=>[t(p(Math.round(d.value*100))+`%`,1)]),_:1}),u(w(z),{size:`small`,onClick:o[1]||=e=>ne(.1)},{default:A(()=>[...o[16]||=[t(`+`,-1)]]),_:1}),u(w(z),{size:`small`,onClick:re},{default:A(()=>[...o[17]||=[t(`Сбросить`,-1)]]),_:1})]),_:1})]),_:1}),F(`div`,{ref_key:`mapField`,ref:m,class:`map-field`,onPointerdown:ie,onWheel:ae},[F(`div`,{class:`map-canvas`,style:c({transform:`translate(${f.value.x}px, ${f.value.y}px) scale(${d.value})`})},[(s(!0),P(k,null,a(n.mapItems,n=>S((s(),P(`div`,{key:`${n.kind}-${n.itemID}`,class:r([`map-item`,[n.kind===`screen`?`map-screen`:n.kind===`organizer_desk`?`map-organizer-desk`:`map-team`,{"map-team-needs-applications":n.kind===`team`&&_.value.has(n.itemID)}]]),style:c({left:`${n.x||0}px`,top:`${n.y||0}px`}),onPointerdown:qe(e=>n.kind!==`team`&&te(n,e),[`stop`])},[n.kind===`team`?(s(),P(`div`,{key:0,class:`map-team-handle`,onPointerdown:qe(e=>te(n,e),[`stop`])},null,40,Vt)):e(``,!0),F(`span`,null,p(n.label),1),n.kind===`team`&&_.value.has(n.itemID)?(s(),h(w(G),{key:1,class:`map-team-applications`,vertical:``},{default:A(()=>[(s(!0),P(k,null,a(_.value.get(n.itemID)?.applications,e=>(s(),h(w(z),{key:e.name,size:`small`,onClick:t=>l(`giveApplication`,_.value.get(n.itemID),e)},{default:A(()=>[t(` Выдать: `+p(e.name),1)]),_:2},1032,[`onClick`]))),128))]),_:2},1024)):e(``,!0),n.kind===`screen`?(s(),P(`small`,Ht,p(n.status)+p(n.soundEnabled?` · звук`:``),1)):e(``,!0),F(`button`,{class:`map-item-hide`,type:`button`,onPointerdown:o[2]||=qe(()=>{},[`stop`]),onClick:qe(e=>D(n),[`stop`])},` × `,40,Ut)],46,Bt)),[[Be,!n.hidden]])),128))],4)],544),n.mapItems.some(e=>e.hidden)?(s(),h(w(G),{key:0,class:`map-hidden-items`},{default:A(()=>[(s(!0),P(k,null,a(n.mapItems.filter(e=>e.hidden),e=>(s(),h(w(z),{key:`hidden-${e.kind}-${e.itemID}`,size:`small`,onClick:t=>D(e)},{default:A(()=>[t(` Добавить `+p(e.label),1)]),_:2},1032,[`onClick`]))),128))]),_:1})):e(``,!0)]),_:1}),u(Q,{tag:`aside`,class:`screen-preview-panel`},{default:A(()=>[o[41]||=F(`p`,{class:`screens-title`},`Превью экрана`,-1),g.value?.status===`connected`?(s(),h(Rt,{key:0,state:g.value,questions:n.previewQuestions,teams:n.previewTeams},null,8,[`state`,`questions`,`teams`])):(s(),P(`div`,Wt,`Экран не подключён`)),F(`div`,Gt,[u(w(K),{align:`center`,justify:`space-between`,class:`screen-header`},{default:A(()=>[o[23]||=F(`p`,{class:`screens-title`},`План экранов`,-1),u(w(G),null,{default:A(()=>[!n.screenPlan&&n.screenPlanMode===`use`?(s(),h(w(z),{key:0,size:`small`,onClick:o[3]||=e=>l(`addStep`)},{default:A(()=>[...o[19]||=[t(` Создать план `,-1)]]),_:1})):e(``,!0),n.screenPlan&&n.screenPlanMode===`use`?(s(),h(w(z),{key:1,size:`small`,onClick:o[4]||=e=>l(`edit`)},{default:A(()=>[...o[20]||=[t(` Редактировать `,-1)]]),_:1})):e(``,!0),n.screenPlanMode===`edit`?(s(),P(k,{key:2},[u(w(z),{size:`small`,disabled:n.screenPlanSaving,onClick:o[5]||=e=>l(`cancel`)},{default:A(()=>[...o[21]||=[t(` Отменить `,-1)]]),_:1},8,[`disabled`]),u(w(z),{size:`small`,type:`primary`,loading:n.screenPlanSaving,disabled:n.screenPlanSaving,onClick:o[6]||=e=>l(`save`)},{default:A(()=>[...o[22]||=[t(` Сохранить план `,-1)]]),_:1},8,[`loading`,`disabled`])],64)):e(``,!0)]),_:1})]),_:1}),!n.screenPlan&&n.screenPlanMode===`use`?(s(),P(`p`,Kt,` План экранов ещё не создан. `)):n.screenPlanMode===`edit`?(s(),P(k,{key:1},[(s(!0),P(k,null,a(n.screenPlanDraft,(r,i)=>(s(),h(w(G),{key:i,class:`screen-plan-step`,align:`center`,justify:`space-between`,wrap:``},{default:A(()=>[u(w(G),{align:`center`,wrap:``},{default:A(()=>[u(w(Fe),null,{default:A(()=>[t(p(i+1),1)]),_:2},1024),u(w(Ce),{value:r.mode,"onUpdate:value":[e=>r.mode=e,o[7]||=e=>l(`dirty`)],options:y,disabled:n.screenPlanSaving,size:`small`,style:{width:`180px`}},null,8,[`value`,`onUpdate:value`,`disabled`]),r.mode===`SCREEN_MODE_TEXT`?(s(),h(w(U),{key:0,value:r.text,"onUpdate:value":[e=>r.text=e,o[8]||=e=>l(`dirty`)],disabled:n.screenPlanSaving,size:`small`,placeholder:`Текст экрана`,style:{"min-width":`240px`}},null,8,[`value`,`onUpdate:value`,`disabled`])):e(``,!0),r.mode===`SCREEN_MODE_TIMER`?(s(),P(k,{key:1},[u(w(U),{value:r.timerLabel,"onUpdate:value":[e=>r.timerLabel=e,o[9]||=e=>l(`dirty`)],disabled:n.screenPlanSaving,size:`small`,placeholder:`Надпись таймера`},null,8,[`value`,`onUpdate:value`,`disabled`]),u(w(vt),{value:r.timerDurationSeconds,"onUpdate:value":[e=>r.timerDurationSeconds=e,o[10]||=e=>l(`dirty`)],min:1,max:86400,disabled:n.screenPlanSaving,size:`small`,placeholder:`Секунды`},null,8,[`value`,`onUpdate:value`,`disabled`])],64)):e(``,!0)]),_:2},1024),u(w(G),{class:`screen-plan-actions`},{default:A(()=>[u(w(z),{size:`small`,disabled:n.screenPlanSaving||i===0,onClick:e=>l(`moveStep`,i,-1)},{default:A(()=>[...o[24]||=[t(` ↑ `,-1)]]),_:1},8,[`disabled`,`onClick`]),u(w(z),{size:`small`,disabled:n.screenPlanSaving||i===n.screenPlanDraft.length-1,onClick:e=>l(`moveStep`,i,1)},{default:A(()=>[...o[25]||=[t(` ↓ `,-1)]]),_:1},8,[`disabled`,`onClick`]),u(w(z),{size:`small`,type:`error`,ghost:``,disabled:n.screenPlanSaving,onClick:e=>l(`removeStep`,i)},{default:A(()=>[...o[26]||=[t(` Удалить `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)]),_:2},1024))),128)),u(w(G),null,{default:A(()=>[u(w(z),{size:`small`,disabled:n.screenPlanSaving,onClick:o[11]||=e=>l(`addStep`)},{default:A(()=>[...o[27]||=[t(` Добавить шаг `,-1)]]),_:1},8,[`disabled`]),n.screenPlanDraft.length?(s(),h(w(z),{key:0,size:`small`,disabled:n.screenPlanSaving,onClick:o[12]||=e=>l(`clearPlan`)},{default:A(()=>[...o[28]||=[t(` Удалить план `,-1)]]),_:1},8,[`disabled`])):e(``,!0)]),_:1})],64)):n.screenPlan?(s(!0),P(k,{key:2},a(n.screenPlan.steps||[],(r,i)=>(s(),h(w(G),{key:i,class:`screen-plan-step`,align:`center`,justify:`space-between`,wrap:``},{default:A(()=>[u(w(G),{align:`center`},{default:A(()=>[u(w(Fe),null,{default:A(()=>[t(p(i+1),1)]),_:2},1024),u(w(Fe),null,{default:A(()=>[t(p(y.find(e=>e.value===r.mode)?.label)+` `,1),r.mode===`SCREEN_MODE_TEXT`?(s(),P(k,{key:0},[t(`: `+p(r.text),1)],64)):r.mode===`SCREEN_MODE_TIMER`?(s(),P(k,{key:1},[t(` : `+p(r.timerLabel)+` (`+p(r.timerDurationSeconds)+` с) `,1)],64)):e(``,!0)]),_:2},1024)]),_:2},1024),u(w(G),{class:`screen-plan-actions`},{default:A(()=>[u(w(z),{size:`small`,type:n.screenPlan.currentStep===i?`primary`:`default`,disabled:n.screenPlan.currentStep===i,onClick:e=>l(`setStep`,i)},{default:A(()=>[...o[29]||=[t(` Показать `,-1)]]),_:1},8,[`type`,`disabled`,`onClick`]),n.screenPlan.currentStep===i?(s(),P(k,{key:0},[r.mode===`SCREEN_MODE_TIMER`?(s(),P(k,{key:0},[u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_START`)},{default:A(()=>[...o[30]||=[t(` Старт `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_PAUSE`)},{default:A(()=>[...o[31]||=[t(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_RESUME`)},{default:A(()=>[...o[32]||=[t(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_RESET`)},{default:A(()=>[...o[33]||=[t(` Сбросить `,-1)]]),_:1},8,[`onClick`])],64)):r.mode===`SCREEN_MODE_INTRO`||r.mode===`SCREEN_MODE_CONCLUSION`?(s(),P(k,{key:1},[u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_PLAY`)},{default:A(()=>[...o[34]||=[t(` Запуск `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_PAUSE`)},{default:A(()=>[...o[35]||=[t(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_RESUME`)},{default:A(()=>[...o[36]||=[t(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_STOP`)},{default:A(()=>[...o[37]||=[t(` Стоп `,-1)]]),_:1},8,[`onClick`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_REPLAY`)},{default:A(()=>[...o[38]||=[t(` Повтор `,-1)]]),_:1},8,[`onClick`]),u(w(vt),{value:n.screenVolume,min:0,max:100,step:5,size:`small`,"onUpdate:value":o[13]||=e=>l(`update:screenVolume`,e)},null,8,[`value`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_VOLUME`)},{default:A(()=>[...o[39]||=[t(` Громкость `,-1)]]),_:1},8,[`onClick`]),u(w(vt),{value:n.screenPosition,min:0,step:5,size:`small`,"onUpdate:value":o[14]||=e=>l(`update:screenPosition`,e)},null,8,[`value`]),u(w(z),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_SEEK`)},{default:A(()=>[...o[40]||=[t(` Перемотать `,-1)]]),_:1},8,[`onClick`])],64)):e(``,!0)],64)):e(``,!0)]),_:2},1024)]),_:2},1024))),128)):e(``,!0)])]),_:1})]))}}),[[`__scopeId`,`data-v-1e1af018`]]),Yt=V(M({__name:`ScreenBindingModal`,props:i({binding:{type:Boolean}},{show:{type:Boolean,required:!0},showModifiers:{}}),emits:i([`scanned`],[`update:show`]),setup(n,{emit:r}){let i=D(n,`show`),a=r,o=O(``),c=O(),l=O(!1),d,f=0;function g(){cancelAnimationFrame(f),d?.getTracks().forEach(e=>e.stop()),d=void 0,l.value=!1}function _(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 y(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){o.value=`Сканирование камерой не поддерживается в этом браузере.`;return}o.value=``;try{if(d=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),l.value=!0,await m(),!c.value)return;c.value.srcObject=d,await c.value.play();let t=new e,n=async()=>{if(!(!c.value||!d))try{let e=(await t.detect(c.value))[0]?.rawValue;if(e){let t=_(e);if(t){g(),i.value=!1,a(`scanned`,t.screenID,t.accessToken);return}o.value=`Это не QR-код экрана.`}f=requestAnimationFrame(n)}catch{o.value=`Не удалось распознать QR-код.`,g()}};f=requestAnimationFrame(n)}catch{o.value=`Не удалось открыть камеру.`,g()}}function b(){g(),i.value=!1}return oe(i,e=>{e?y():g()}),v(g),(r,a)=>(s(),h(w(ye),{show:i.value,"onUpdate:show":a[0]||=e=>i.value=e},{default:A(()=>[u(w(I),{style:{width:`min(600px, 94vw)`},title:`Привязать экран`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:b},{default:A(()=>[...a[1]||=[t(` x `,-1)]]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[F(`video`,{ref_key:`scannerVideo`,ref:c,class:`screen-scanner-video`,muted:``,playsinline:``},null,512),o.value?(s(),h(w(W),{key:0,type:`error`},{default:A(()=>[t(p(o.value),1)]),_:1})):e(``,!0),!l.value&&!n.binding?(s(),h(w(z),{key:1,type:`primary`,onClick:y},{default:A(()=>[...a[2]||=[t(` Сканировать QR-код `,-1)]]),_:1})):e(``,!0),l.value?(s(),h(w(z),{key:2,onClick:g},{default:A(()=>[...a[3]||=[t(`Остановить камеру`,-1)]]),_:1})):e(``,!0),n.binding?(s(),h(w(z),{key:3,type:`primary`,loading:``},{default:A(()=>[...a[4]||=[t(`Привязка…`,-1)]]),_:1})):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-5f530845`]]),Xt={key:1,class:`screen-empty`},Zt={class:`screen-status`},Qt={key:0,class:`screen-error`},$t={key:0,class:`track-list`},en={key:0,class:`track-empty`},tn={class:`track-main`},nn={class:`track-number`},rn={class:`track-details`},an={class:`track-name`},on={class:`volume-control`},sn=V(M({__name:`GameScreensPanel`,props:{screens:{},screenBinding:{type:Boolean},playlists:{},music:{}},emits:[`bind`,`setSound`,`unbind`,`setMusic`,`createPlaylist`,`deletePlaylist`,`uploadTrack`,`deleteTrack`],setup(n,{emit:i}){let o=n,c=i,l=O(!1),d=O(``);function f(e){e.file.file&&c(`uploadTrack`,e.file.file)}function m(e){e!==o.music?.trackIndex&&c(`setMusic`,{trackIndex:e,positionMs:0})}return(i,g)=>{let _=b(`n-tag`);return s(),P(k,null,[u(Q,null,{default:A(()=>[u(w(K),{align:`center`,justify:`space-between`,class:`screen-header`},{default:A(()=>[g[13]||=F(`p`,{class:`screens-title`},`Экраны`,-1),u(w(z),{size:`small`,onClick:g[0]||=e=>l.value=!0},{default:A(()=>[...g[12]||=[t(` Привязать экран `,-1)]]),_:1})]),_:1}),n.screens.some(e=>e.status===`disconnected`)?(s(),h(w(W),{key:0,type:`warning`,title:`Проверьте подключение экрана`},{default:A(()=>[...g[14]||=[t(` Один или несколько экранов не выходят на связь более минуты. `,-1)]]),_:1})):e(``,!0),n.screens.length===0?(s(),P(`p`,Xt,`К игре пока не привязаны экраны.`)):(s(!0),P(k,{key:2},a(n.screens,n=>(s(),P(`div`,{key:n.ID,class:`screen-row`},[F(`div`,null,[F(`div`,null,`Экран `+p(n.ID),1),F(`div`,Zt,p(n.status===`connected`?`Онлайн`:`Оффлайн`),1),n.error?(s(),P(`div`,Qt,p(n.error),1)):e(``,!0)]),u(w(K),{justify:`end`},{default:A(()=>[n.soundEnabled?(s(),h(_,{key:0,type:`success`},{default:A(()=>[...g[15]||=[t(`Со звуком`,-1)]]),_:1})):(s(),h(w(z),{key:1,size:`small`,onClick:e=>c(`setSound`,n)},{default:A(()=>[...g[16]||=[t(`Назначить звук`,-1)]]),_:1},8,[`onClick`])),u(w(z),{size:`small`,type:`error`,ghost:``,onClick:e=>c(`unbind`,n)},{default:A(()=>[...g[17]||=[t(` Отвязать `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]))),128))]),_:1}),u(Yt,{show:l.value,"onUpdate:show":g[1]||=e=>l.value=e,binding:o.screenBinding,onScanned:g[2]||=(e,t)=>c(`bind`,e,t)},null,8,[`show`,`binding`]),u(Q,{class:`music-block`},{default:A(()=>[g[29]||=F(`p`,{class:`screens-title`},`Музыка`,-1),u(w(K),{align:`center`,wrap:``,class:`playlist-actions`},{default:A(()=>[u(w(U),{value:d.value,"onUpdate:value":g[3]||=e=>d.value=e,placeholder:`Новый плейлист`,style:{"max-width":`220px`}},null,8,[`value`]),u(w(z),{size:`small`,disabled:!d.value.trim(),onClick:g[4]||=e=>{c(`createPlaylist`,d.value.trim()),d.value=``}},{default:A(()=>[...g[18]||=[t(` Создать `,-1)]]),_:1},8,[`disabled`]),o.music?.playlist?.ID?(s(),h(w(z),{key:0,size:`small`,type:`error`,ghost:``,onClick:g[5]||=e=>c(`deletePlaylist`,o.music.playlist.ID)},{default:A(()=>[...g[19]||=[t(` Удалить плейлист `,-1)]]),_:1})):e(``,!0),u(w(Oe),{accept:`.mp3,audio/mpeg`,"default-upload":!1,"show-file-list":!1,onChange:f},{default:A(()=>[u(w(z),{size:`small`},{default:A(()=>[...g[20]||=[t(`Добавить MP3`,-1)]]),_:1})]),_:1})]),_:1}),u(w(K),{align:`center`,wrap:``},{default:A(()=>[u(w(Ce),{value:o.music?.playlist?.ID,options:o.playlists.map(e=>({label:e.name,value:e.ID})),placeholder:`Плейлист`,clearable:``,style:{"min-width":`220px`},"onUpdate:value":g[6]||=e=>c(`setMusic`,{playlistID:e||0,trackIndex:0,playback:`MUSIC_PLAYBACK_STOPPED`})},null,8,[`value`,`options`]),o.music?.playlist?(s(),P(`div`,$t,[o.music.playlist.tracks?.length?e(``,!0):(s(),P(`p`,en,`В плейлисте пока нет треков.`)),(s(!0),P(k,null,a(o.music.playlist.tracks,(e,n)=>(s(),P(`div`,{key:e.ID,class:r([`track-row`,{"track-row-active":n===(o.music.trackIndex??0)}])},[F(`div`,tn,[F(`span`,nn,p(n+1),1),F(`span`,rn,[F(`span`,an,p(e.name||`Трек ${n+1}`),1)])]),u(w(K),{align:`center`,class:`track-actions`},{default:A(()=>[u(w(z),{size:`small`,type:n===(o.music.trackIndex??0)?`success`:`primary`,ghost:``,class:r({"track-switch-active":n===(o.music.trackIndex??0)}),onClick:e=>m(n)},{default:A(()=>[t(p(n===(o.music.trackIndex??0)?o.music.playback===`MUSIC_PLAYBACK_PLAYING`?`Играет`:`Выбран`:`Включить`),1)]),_:2},1032,[`type`,`class`,`onClick`]),u(w(z),{size:`small`,type:`error`,ghost:``,onClick:t=>c(`deleteTrack`,e.ID)},{default:A(()=>[...g[21]||=[t(` Удалить `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)],2))),128))])):e(``,!0),u(w(z),{size:`small`,onClick:g[7]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_PLAYING`})},{default:A(()=>[...g[22]||=[t(`Старт`,-1)]]),_:1}),u(w(z),{size:`small`,onClick:g[8]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_PAUSED`})},{default:A(()=>[...g[23]||=[t(`Пауза`,-1)]]),_:1}),u(w(z),{size:`small`,onClick:g[9]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_STOPPED`,positionMs:0})},{default:A(()=>[...g[24]||=[t(`Стоп`,-1)]]),_:1}),F(`div`,on,[g[26]||=F(`span`,{class:`volume-label`},`Громкость`,-1),u(w(vt),{value:o.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&&c(`setMusic`,{volume:e})},{suffix:A(()=>[...g[25]||=[t(`%`,-1)]]),_:1},8,[`value`])]),u(w(je),{value:o.music?.loop,round:!1,"onUpdate:value":g[11]||=e=>c(`setMusic`,{loop:e})},{checked:A(()=>[...g[27]||=[t(`Loop`,-1)]]),unchecked:A(()=>[...g[28]||=[t(`Loop`,-1)]]),_:1},8,[`value`])]),_:1})]),_:1})],64)}}}),[[`__scopeId`,`data-v-c8e2dfff`]]),cn={key:0},ln={key:3},un={key:4},dn={key:0},fn={key:2},pn={key:0},mn={class:`device-details`},hn={key:0},gn={key:1},_n=V(M({__name:`GameStatePanel`,props:{devices:{},wifi:{},serverTime:{},isLoading:{type:Boolean},hasError:{type:Boolean},summary:{}},emits:[`reload`],setup(n){let r={browser:`Браузер`,organizer:`Организатор`,team:`Команда`,screen:`Экран`};return(i,o)=>(s(),P(k,null,[u(Q,null,{default:A(()=>[u(w(K),null,{default:A(()=>[u(w(L),{type:`success`},{default:A(()=>[t(`Доступны: `+p(n.summary.connected),1)]),_:1}),u(w(L),{type:`warning`},{default:A(()=>[t(`Нет связи: `+p(n.summary.disconnected),1)]),_:1}),u(w(L),null,{default:A(()=>[t(`Подключения: `+p(n.summary.connections),1)]),_:1})]),_:1}),n.serverTime?(s(),P(`p`,cn,`Последнее обновление: `+p(w(tt)(n.serverTime)),1)):e(``,!0),o[2]||=F(`p`,null,`«Нет связи» означает отсутствие heartbeat сайта. UUID обозначает браузерный профиль.`,-1),n.hasError?(s(),h(w(W),{key:1,type:`error`,title:`Не удалось обновить состояние`},{default:A(()=>[u(w(z),{loading:n.isLoading,onClick:o[0]||=e=>i.$emit(`reload`)},{default:A(()=>[...o[1]||=[t(`Повторить`,-1)]]),_:1},8,[`loading`])]),_:1})):e(``,!0),n.isLoading&&!n.serverTime?(s(),h(w(Pe),{key:2})):!n.hasError&&!n.serverTime&&!n.isLoading?(s(),P(`p`,ln,`Загружаем состояние…`)):n.serverTime&&!n.devices.length?(s(),P(`p`,un,`Устройства этой игры пока не зарегистрированы`)):e(``,!0)]),_:1}),u(Q,null,{default:A(()=>[o[4]||=F(`h3`,null,`Wi-Fi площадки`,-1),o[5]||=F(`p`,null,` Все Wi-Fi-клиенты Cudy, независимо от выбранной игры. MAC устройства и UUID браузера различаются. `,-1),n.wifi?.enabled?(s(),P(k,{key:1},[n.wifi.hasError?(s(),h(w(W),{key:0,type:`warning`,role:`alert`,title:`Не удалось обновить данные Cudy`})):e(``,!0),n.wifi.stale?(s(),h(w(L),{key:1,type:`warning`},{default:A(()=>[...o[3]||=[t(`Данные устарели`,-1)]]),_:1})):e(``,!0),n.wifi.collectedAt?(s(),P(`p`,fn,` Последний снимок Cudy: `+p(w(tt)(n.wifi.collectedAt)),1)):e(``,!0),n.wifi.collectedAt?(s(),P(k,{key:3},[F(`p`,null,`Wi-Fi-клиентов: `+p(n.wifi.clients?.length||0),1),n.wifi.clients?.length?e(``,!0):(s(),P(`p`,pn,`Wi-Fi-клиенты пока не подключены`)),(s(!0),P(k,null,a(n.wifi.clients,e=>(s(),P(`div`,{key:e.MAC,class:`connection device-details`},[F(`strong`,null,p(e.MAC),1),F(`p`,null,`IP: `+p(e.IP||`—`)+` · `+p(e.band),1),F(`p`,null,`Сигнал: `+p(e.signal===void 0?`Нет данных`:`${e.signal} dBm`),1)]))),128))],64)):e(``,!0)],64)):(s(),P(`p`,dn,`Сбор данных Cudy не настроен`))]),_:1}),(s(!0),P(k,null,a(n.devices,n=>(s(),h(Q,{key:n.ID},{default:A(()=>[F(`div`,mn,[F(`strong`,null,p(n.ID),1),F(`p`,null,[u(w(L),{type:n.connected?`success`:`warning`},{default:A(()=>[t(p(n.connected?`Доступно`:`Нет связи`),1)]),_:2},1032,[`type`])]),F(`p`,null,`Последнее обращение: `+p(w(tt)(n.lastSeenAt)||`—`),1),u(w(st),null,{default:A(()=>[u(w(lt),{title:`Подключения`,name:n.ID||``},{default:A(()=>[(s(!0),P(k,null,a(n.connections,t=>(s(),P(`div`,{key:t.ID,class:`connection`},[F(`strong`,null,p(r[t.kind||``]||t.kind),1),t.teamID?(s(),P(`p`,hn,`ID команды: `+p(t.teamID),1)):e(``,!0),t.screenID?(s(),P(`p`,gn,`ID экрана: `+p(t.screenID),1)):e(``,!0),F(`p`,null,p(t.connected?`Доступно`:`Нет связи`),1),F(`p`,null,`Последнее обращение: `+p(w(tt)(t.lastSeenAt)||`—`),1),F(`p`,null,`IP: `+p(t.IP||`—`),1),F(`p`,null,`User-Agent: `+p(t.userAgent||`—`),1)]))),128))]),_:2},1032,[`name`])]),_:2},1024)])]),_:2},1024))),128))],64))}}),[[`__scopeId`,`data-v-a670747a`]]),vn={class:`team-content-block`},yn={class:`title-block`},bn={class:`team-name-block`},xn={key:0},$={key:1},Sn={key:0},Cn={key:0},wn={key:1},Tn={key:2},En={key:3},Dn={key:4},On=V(M({__name:`GameTeamsPanel`,props:{teams:{},participationOptions:{}},emits:[`add`,`open-qr`,`preview`,`delete`,`give-application`],setup(n,{emit:r}){let i=r;return(r,o)=>(s(),P(k,null,[u(Q,{class:`team-block-hover`,onClick:o[0]||=e=>i(`add`)},{default:A(()=>[...o[1]||=[F(`p`,{class:`place-image-plus`},`+`,-1)]]),_:1}),(s(!0),P(k,null,a(n.teams,r=>(s(),h(Q,{key:r.ID},{default:A(()=>[F(`div`,vn,[u(w(K),{justify:`space-between`},{default:A(()=>[F(`div`,yn,[F(`span`,bn,[t(p(r.name)+` `,1),r.captainEmail?(s(),P(`small`,xn,` — `+p(r.captainEmail),1)):e(``,!0),r.participantsCount?(s(),P(`small`,$,` · Участников: `+p(r.participantsCount),1)):e(``,!0)]),r.captainEmail||r.participationStatus!==`pending`?(s(),P(`div`,Sn,[t(p(n.participationOptions.find(e=>e.value===r.participationStatus)?.label),1),r.participationSource===`automatic`?(s(),P(`span`,Cn,` · автоматически`)):e(``,!0)])):e(``,!0),r.captainEmail?r.participationEmailError?(s(),P(`div`,Tn,` Ошибка отправки: `+p(r.participationEmailError),1)):r.participationEmailSent?(s(),P(`div`,En,`Письмо отправлено`)):e(``,!0):(s(),P(`div`,wn,`Почта капитана не указана`)),r.participationStatus===`cancelled`?e(``,!0):(s(),P(`div`,Dn,` Поездки: `+p(r.actionsCount),1))]),u(w(K),{justify:`end`},{default:A(()=>[r.participationStatus===`cancelled`?e(``,!0):(s(),h(w(z),{key:0,onClick:e=>i(`open-qr`,r)},{default:A(()=>[...o[2]||=[t(`QR`,-1)]]),_:1},8,[`onClick`])),r.participationStatus===`cancelled`?e(``,!0):(s(),h(w(z),{key:1,onClick:e=>i(`preview`,r.ID,r.password)},{default:A(()=>[...o[3]||=[t(`Подсмотреть игру`,-1)]]),_:1},8,[`onClick`])),u(w(z),{type:`error`,ghost:``,onClick:e=>i(`delete`,r)},{default:A(()=>[...o[4]||=[t(`Удалить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(s(!0),P(k,null,a(r.applications,e=>(s(),h(w(z),{key:e.name,class:`link-button`,onClick:t=>i(`give-application`,r,e)},{default:A(()=>[t(` Выдать: `+p(e.name),1)]),_:2},1032,[`onClick`]))),128))])]),_:2},1024))),128))],64))}}),[[`__scopeId`,`data-v-3291beb9`]]),kn={key:0},An={key:1},jn={key:2},Mn=V(M({__name:`TicketCheckModal`,props:{show:{type:Boolean,required:!0},showModifiers:{}},emits:[`update:show`],setup(n){let r=D(n,`show`),i=Ve(),a=he(),o=O(``),c=O(),l=O(``),d=O(!1),f=O(),g=O(!1),_,y=0,b=T(()=>{try{return new URL(o.value.trim()).pathname.match(/\/tickets\/([^/]+)/)?.[1]||``}catch{return o.value.trim()}});async function x(){if(!(!b.value||d.value)){d.value=!0,l.value=``,c.value=void 0;try{let e=await i.GetTicket({token:b.value});e.ticket?c.value=e.ticket:l.value=`Билет не найден`}catch(e){l.value=e instanceof Error?e.message:`Не удалось проверить билет`}finally{d.value=!1}}}async function ee(){if(!(!b.value||d.value)){d.value=!0,l.value=``;try{let e=await i.AcceptTicket({token:b.value});e.ticket?(c.value=e.ticket,a.success(`Билет принят`)):l.value=`Не удалось принять билет`}catch(e){l.value=e instanceof Error?e.message:`Не удалось принять билет`}finally{d.value=!1}}}async function te(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){l.value=`Сканирование камерой не поддерживается. Введите ссылку вручную.`;return}l.value=``;try{if(_=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),g.value=!0,await m(),!f.value)return;f.value.srcObject=_,await f.value.play();let t=new e,n=async()=>{if(!(!g.value||!f.value))try{let e=(await t.detect(f.value))[0]?.rawValue;if(e){o.value=e,S(),await x();return}y=requestAnimationFrame(n)}catch{l.value=`Не удалось распознать QR-код.`,S()}};y=requestAnimationFrame(n)}catch{l.value=`Не удалось открыть камеру. Введите ссылку вручную.`,S()}}function S(){cancelAnimationFrame(y),_?.getTracks().forEach(e=>e.stop()),_=void 0,g.value=!1}function C(){S(),r.value=!1}return oe(r,e=>{e?te():S()}),v(S),(n,i)=>(s(),h(w(ye),{show:r.value,"onUpdate:show":i[1]||=e=>r.value=e},{default:A(()=>[u(w(I),{style:{width:`min(600px, 94vw)`},title:`Проверка билета`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:C},{default:A(()=>[...i[2]||=[t(` x `,-1)]]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[g.value?(s(),P(`video`,{key:0,ref_key:`video`,ref:f,class:`ticket-scanner-video`,muted:``,playsinline:``},null,512)):e(``,!0),l.value?(s(),h(w(W),{key:1,type:`error`},{default:A(()=>[t(p(l.value),1)]),_:1})):e(``,!0),g.value?(s(),h(w(z),{key:3,onClick:S},{default:A(()=>[...i[4]||=[t(`Остановить камеру`,-1)]]),_:1})):(s(),h(w(z),{key:2,onClick:te},{default:A(()=>[...i[3]||=[t(`Сканировать QR-код`,-1)]]),_:1})),u(w(U),{value:o.value,"onUpdate:value":i[0]||=e=>o.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:Ue(x,[`enter`])},null,8,[`value`]),u(w(z),{type:`primary`,loading:d.value,onClick:x},{default:A(()=>[...i[5]||=[t(` Проверить билет `,-1)]]),_:1},8,[`loading`]),c.value?(s(),P(k,{key:4},[u(w(W),{type:c.value.status===`active`?`success`:`warning`},{default:A(()=>[t(p(c.value.gameName),1),i[6]||=F(`br`,null,null,-1),t(` Статус: `+p(c.value.status===`active`?`действителен`:`уже использован`)+` `,1),c.value.usedBy?(s(),P(`span`,kn,` · `+p(c.value.usedBy),1)):e(``,!0),c.value.usedAt?(s(),P(`br`,An)):e(``,!0),c.value.usedAt?(s(),P(`span`,jn,`Использован: `+p(w(tt)(c.value.usedAt)),1)):e(``,!0)]),_:1},8,[`type`]),c.value.status===`active`&&c.value.gameStatus!==`finish`?(s(),h(w(z),{key:0,type:`primary`,loading:d.value,onClick:ee},{default:A(()=>[...i[7]||=[t(` Принять билет `,-1)]]),_:1},8,[`loading`])):e(``,!0)],64)):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-fe322487`]]);function Nn(e,t){let n=Ve(),r=O([]),i=O(),a=O(),o=O(!1),s=O(!1),c=0,l=!1,u=!1,d=T(()=>({connected:r.value.filter(e=>e.connected).length,disconnected:r.value.filter(e=>!e.connected).length,connections:r.value.reduce((e,t)=>e+(t.connections?.length||0),0)}));async function f(){if(!t()||l||u)return;let d=c,p=e();u=!0,o.value=!0;try{let e=await n.GetDevices({gameID:p});if(l||!t()||d!==c)return;r.value=[...e.devices||[]].sort((e,t)=>Number(!!e.connected)-Number(!!t.connected)||(e.ID||``).localeCompare(t.ID||``)),i.value=e.wifi,a.value=e.serverTime,s.value=!1}catch{!l&&t()&&d===c&&(s.value=!0)}finally{u=!1,!l&&d===c&&(o.value=!1),!l&&t()&&d!==c&&f()}}return oe([e,t],([e],[n])=>{c++,o.value=!1,e!==n&&(r.value=[],i.value=void 0,a.value=void 0,s.value=!1),t()&&f()},{flush:`sync`}),Ke(()=>{f()},5e3),re(()=>{l=!0,c++}),{devices:r,wifi:i,serverTime:a,isLoading:o,hasError:s,summary:d,reload:f}}function Pn(e,t){let n=new Set(e.flatMap(e=>(e.applications||[]).map(t=>JSON.stringify([e.ID,t.name]))));return t.some(e=>e.applications?.some(t=>!n.has(JSON.stringify([e.ID,t.name]))))}var Fn={class:`center-block-custom`},In={class:`width1200`},Ln={class:`game-tab-content`},Rn={key:5},zn=[`href`],Bn={class:`game-tab-content`},Vn={class:`game-tab-content`},Hn={class:`game-tab-content`},Un={class:`game-tab-content`},Wn={class:`qr-block`},Gn={class:`game-tab-content`},Kn={key:0,class:`answers-empty`},qn={class:`answers-question-title`},Jn={class:`answers-question-answer`},Yn={class:`correct-answer`},Xn={class:`answers-team-name`},Zn={class:`answers-team-answer`},Qn={key:0,class:`give-application-image-block`},$n=[`src`],er=[`src`],tr=[`href`],nr={class:`qr-block`},rr={key:0,class:`answers-empty`},ir=`https://www.sberbank.ru/ru/choise_bank?requisiteNumber=79609361994&bankCode=100000000111`,ar=V(M({__name:`GamePage`,emits:[`resultsApplied`],setup(n,{emit:r}){let i=r,o=Ve(),c=Ze(),l=O(!1),d=O(!1),f=de(),m=ae(),g=m.params.id;function v(e){return[`settings`,`teams`,`screens`,`game`,`payment`,`answers`,`state`].includes(e)}let b=typeof m.query.tab==`string`?m.query.tab:``,x=O(v(b)?b:`game`);async function ee(e){!v(e)||(e===`state`?!je.value:!B.value)||(x.value=e,await f.replace({query:{...m.query,tab:e}}))}function te(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),ee(`state`))}let S=he(),C=O({name:``,description:``,format:`online`,location:``}),E=O(!1),D=O(!1),ne=O(!1),re=O(!1),ie=O(!1),j=O(``),M=O(``),N=O(1),se=O(``),ce=O(!1),le=O(``),ue=O(``),fe=O(!1),pe=O(1),me=O([]),_e=O(!1),ve=O(!1),R=O({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,export:void 0}),be=Ge(),we=Ye(),B=T(()=>be.hasAnyRole([`admin`,`organizer`,`author`])),Te=0,Ee=0,De=!1,V=!1,H,ke,Ae=!1,je=T(()=>we.environment===`venue`&&be.hasAnyRole([`admin`,`organizer`,`developer`])),Pe=T(()=>je.value&&!B.value);nt(()=>B.value?{organizerGameID:Number(g)}:{});let{devices:Ie,wifi:Le,serverTime:Re,isLoading:ze,hasError:Be,summary:He,reload:Ue}=Nn(()=>Number(m.params.id),()=>je.value&&x.value===`state`);oe([()=>m.query.tab,je,B],()=>{let e=typeof m.query.tab==`string`?m.query.tab:``;x.value=Pe.value?`state`:v(e)&&(e!==`state`||je.value)?e:`game`,Pe.value&&e!==`state`&&f.replace({query:{...m.query,tab:`state`}})},{immediate:!0}),oe(Pe,e=>{e&&(R.value={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,export:void 0},Z(Number(g)))},{immediate:!0});let We=T(()=>Number(R.value.ID)>0&&we.environment===`prod`&&be.hasAnyRole([`admin`,`organizer`,`developer`])),q=O(!1),qe=O(!1),Je=T(()=>we.environment===`venue`&&R.value.status===`finish`&&be.hasAnyRole([`admin`,`organizer`,`developer`])),rt=O(!1),J=O(!1),it=O([]),at=O(``),ot=[{label:`Ожидает ответа`,value:`pending`},{label:`Подтверждено`,value:`confirmed`},{label:`Отменено`,value:`cancelled`}],st=T(()=>(R.value.teams||[]).filter(e=>e.participationStatus!==`cancelled`).length),ct=O([]),lt=O([]),ut=O(),dt=O(),Y=O([]),X=O(!1),ft=O(!1),pt=O(`use`),mt=0,ht=O([]),gt=O([]),_t=O([]),yt=O(!1),xt=O(!1),Ct=O(100),Tt=O(0);function Dt(e){V||Ae||(Ae=!0,S.warning(`Не удалось включить звуковые уведомления о выдаче улик`),console.error(`Звуковое уведомление о выдаче улик`,e))}async function At(){if(!(!B.value||V))try{H??=new AudioContext,H.state===`suspended`&&await H.resume();let e=H;ke??=fetch(kt).then(async t=>{if(!t.ok)throw Error(`Не удалось загрузить звук уведомления`);return e.decodeAudioData(await t.arrayBuffer())}),await ke}catch(e){ke=void 0,Dt(e)}}async function jt(){if(!(!H||H.state!==`running`||!ke))try{let e=await ke;if(V||H.state!==`running`)return;let t=H.createBufferSource();t.buffer=e,t.connect(H.destination),t.onended=()=>t.disconnect(),t.start()}catch(e){Dt(e)}}async function Mt(){await At(),await jt()}_(()=>{window.addEventListener(`click`,At),window.addEventListener(`keydown`,At)}),y(()=>{V=!0,window.removeEventListener(`click`,At),window.removeEventListener(`keydown`,At),H?.close().catch(e=>{console.error(`Закрытие звуковых уведомлений`,e)})});async function Z(e){let t=++Te,n=B.value,r=await o.GetGame({ID:e});V||n!==B.value||t<Ee||(Ee=t,B.value&&De&&Pn(R.value.teams||[],r.game?.teams||[])&&jt(),De=!0,R.value=r.game,E.value||=(C.value={name:R.value.name||``,description:R.value.description||``,format:R.value.format||`online`,location:R.value.location||``},!0),R.value.teams=R.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}))}B.value&&Z(Number(g));async function Nt(){let e=await o.GetGameScreens({gameID:Number(g)});if(ct.value=e.screens||[],(ct.value.find(e=>e.status===`connected`)||ct.value[0])?.mode===`SCREEN_MODE_RESULTS`){let e=await o.GetGameResults({gameID:Number(g)});ht.value=e.questions||[],gt.value=e.teams||[]}else ht.value=[],gt.value=[]}B.value&&Nt();async function Pt(){try{let e=await o.GetGameMusic({gameID:Number(g)});lt.value=e.playlists||[],ut.value=e.state}catch(e){S.error(e instanceof Error?e.message:`Не удалось получить музыку игры`)}}B.value&&Pt();function Ft(){return pt.value===`edit`}async function It(){if(console.log(`getScreenPlan`),Ft()||X.value)return;console.log(`no skip getScreenPlan`);let e=++mt,t=await o.GetScreenPlan({gameID:Number(g)});e!==mt||Ft()||X.value||(dt.value=t.plan,Y.value=t.plan?.steps?.map(e=>({...e}))||[])}B.value&&It();function Lt(){Y.value.push({mode:`SCREEN_MODE_TEXT`,text:`Новый экран`,timerLabel:`Перерыв`,timerDurationSeconds:600}),X.value=!0,pt.value=`edit`}function Rt(){dt.value&&(Y.value=dt.value.steps?.map(e=>({...e}))||[],pt.value=`edit`)}function zt(){X.value&&!window.confirm(`Отменить несохранённые изменения плана?`)||(Y.value=dt.value?.steps?.map(e=>({...e}))||[],X.value=!1,pt.value=`use`)}function Bt(e){Y.value.splice(e,1),X.value=!0}function Vt(e,t){let n=e+t;if(n<0||n>=Y.value.length)return;let[r]=Y.value.splice(e,1);Y.value.splice(n,0,r),X.value=!0}function Ht(){X.value=!0}function Ut(){Y.value=[],Ht()}async function Wt(){if(!ft.value){mt+=1,ft.value=!0;try{let e=Math.min(dt.value?.currentStep||0,Math.max(0,Y.value.length-1)),t=await o.SaveScreenPlan({gameID:Number(g),steps:Y.value,currentStep:e});dt.value=t.plan,Y.value=t.plan?.steps?.map(e=>({...e}))||[],X.value=!1,pt.value=`use`,S.success(t.plan?`План экранов сохранён`:`План экранов удалён`)}catch(e){S.error(e instanceof Error?e.message:`Не удалось сохранить план экранов`)}finally{ft.value=!1}}}async function Gt(e){if(!(X.value||!dt.value))try{let t=await o.SetScreenPlanStep({gameID:Number(g),currentStep:e});dt.value=t.plan,await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось перейти на шаг плана`)}}async function Kt(e,t){if(!(X.value||e!==`SCREEN_MODE_TIMER`&&e!==`SCREEN_MODE_INTRO`&&e!==`SCREEN_MODE_CONCLUSION`))try{await o.SendScreenCommand({gameID:Number(g),command:t,positionMs:Math.max(0,Math.round(Tt.value*1e3)),volume:Math.max(0,Math.min(100,Math.round(Ct.value)))}),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось управлять экраном`)}}async function qt(e,t){if(!ve.value){ve.value=!0;try{await o.BindScreen({screenID:e,accessToken:t,gameID:Number(g)}),S.success(`Экран привязан к игре`),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{ve.value=!1}}}async function Yt(){if(yt.value||xt.value)return;let e=await o.GetGameMap({gameID:Number(g)});yt.value||xt.value||(_t.value=e.items||[])}B.value&&Yt();async function Xt(e,t=e.hidden){yt.value=!0;try{await o.UpdateGameMapItem({gameID:Number(g),kind:e.kind,itemID:e.itemID,x:Math.round(e.x||0),y:Math.round(e.y||0),hidden:t})}finally{yt.value=!1}}async function Zt(e,t=e.hidden){await Xt(e,t),await Yt()}async function Qt(e){await o.SetScreenSound({screenID:e.ID,soundEnabled:!0}),await Nt()}async function $t(e){let t=ut.value;try{let n=await o.SetGameMusic({gameID:Number(g),playlistID:e.playlistID??t?.playlist?.ID??0,trackIndex:e.trackIndex??t?.trackIndex??0,positionMs:e.positionMs??t?.positionMs??0,volume:e.volume??t?.volume??100,loop:e.loop??t?.loop??!1,playback:e.playback??t?.playback??`MUSIC_PLAYBACK_STOPPED`});ut.value=n.state}catch(e){S.error(e instanceof Error?e.message:`Не удалось изменить музыку`)}}async function en(e){try{await o.CreatePlaylist({name:e}),await Pt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось создать плейлист`)}}async function tn(e){try{await o.DeletePlaylist({ID:e}),await Pt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось удалить плейлист`)}}async function nn(e){let t=ut.value?.playlist?.ID;if(!t){S.warning(`Сначала выберите плейлист`);return}try{let n=an(new Uint8Array(await e.arrayBuffer()));await o.UploadPlaylistTrack({playlistID:t,name:e.name,filename:e.name,data:n}),await Pt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось загрузить MP3`)}}async function rn(e){let t=ut.value?.playlist?.ID;if(t)try{await o.DeletePlaylistTrack({playlistID:t,trackID:e}),await Pt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось удалить трек`)}}function an(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 on(e){await o.UnbindScreen({screenID:e.ID}),await Nt()}async function cn(e,t,n=!1){let r=`/team-story/`+e+`?password=`+t;if(n){window.open(r,`_blank`);return}f.push(r)}async function ln(){if(!(!We.value||q.value||R.value.export?.state===`preparing`||R.value.export?.state===`ready`||R.value.status!==`draft`)){q.value=!0;try{let e=await o.StartGameExport({ID:R.value.ID});R.value.export=e.export}catch(e){S.error(e instanceof Error?e.message:`Не удалось подготовить пакет`)}finally{q.value=!1}}}async function un(){if(!(!We.value||qe.value||R.value.export?.state!==`ready`)){qe.value=!0;try{let{blob:e,filename:t}=await c.downloadGamePackage(R.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){S.error(e instanceof Error?e.message:`Не удалось скачать пакет`)}finally{qe.value=!1}}}function dn({fileList:e}){J.value||(it.value=e.slice(-1),at.value=``)}async function fn(){if(!(!Je.value||rt.value)){rt.value=!0;try{let{blob:e,filename:t}=await c.downloadGameResultsPackage(R.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){S.error(e instanceof Error?e.message:`Не удалось скачать результаты`)}finally{rt.value=!1}}}async function pn(){if(!We.value||J.value)return;let e=it.value[0]?.file;if(!e||e.size===0){at.value=`Выберите непустой ZIP-файл`;return}if(!e.name.toLowerCase().endsWith(`.zip`)){at.value=`Выберите файл с расширением .zip`;return}if(e.size>1024**3){at.value=`Размер пакета не должен превышать 1 ГиБ`;return}J.value=!0,at.value=``;try{await c.applyGameResultsPackage(R.value.ID,e),S.success(`Результаты приняты`),i(`resultsApplied`)}catch(e){at.value=e instanceof Error?e.message:`Не удалось применить результаты`}finally{J.value=!1}}async function mn(){let e=R.value.ID;if(!(!B.value||!e||d.value)){d.value=!0;try{let{blob:t,filename:n}=await c.downloadGamePrintMaterials(e),r=URL.createObjectURL(t),i=document.createElement(`a`);i.href=r,i.download=n,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){S.error(e instanceof Error?e.message:`Не удалось скачать материалы для печати`)}finally{d.value=!1}}}async function hn(){if(!(l.value||!R.value.teams?.length)){l.value=!0;try{let{blob:e,filename:t}=await c.downloadTeamQR(R.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){S.error(e instanceof Error?e.message:`Не удалось скачать QR команд`)}finally{l.value=!1}}}function gn(){f.push(`/games/`+g+`/results`)}async function vn(){await o.UpdateGame({ID:R.value.ID,name:C.value.name,description:C.value.description,format:C.value.format,location:C.value.location.trim(),startAt:R.value.startAt,scenarioID:R.value.scenario?.ID}),await Z(R.value.ID)}let yn=O({ID:``,name:``,status:``,password:``,actionsCount:0,applications:[],captainEmail:void 0,participantsCount:void 0,participationStatus:void 0,participationSource:void 0,participationEmailError:void 0,participationEmailSent:void 0}),bn=O(``),xn=O({ID:``,name:``,status:``,password:``,actionsCount:0,applications:[],captainEmail:void 0,participantsCount:void 0,participationStatus:void 0,participationSource:void 0,participationEmailError:void 0,participationEmailSent:void 0}),$=O({name:``,image:``,file_type:``}),Sn=window.location.href;function Cn(e,t){yn.value=e,$.value=t,D.value=!0}async function wn(){if(N.value<1||N.value>8){S.error(`Укажите от 1 до 8 игроков`);return}await o.AddTeam({gameID:R.value.ID,name:j.value,captainEmail:M.value.trim(),participantsCount:N.value}),await Z(R.value.ID),ne.value=!1,M.value=``,N.value=1}async function Tn(){await o.GiveTeamApplications({ID:yn.value.ID,name:$.value.name}),await Z(R.value.ID),D.value=!1}async function En(e){xn.value=e,re.value=!0}async function Dn(){await o.DeleteTeam({ID:xn.value.ID}),await Z(R.value.ID),re.value=!1}async function kn(){await o.DeleteGame({ID:R.value.ID}),S.success(`Игра удалена`),f.push(`/games`)}function An(e,t){let n=new URL(`/team-story/${e}`,window.location.origin);return n.searchParams.set(`password`,t),n.toString()}function jn(e){ar(An(e.ID,e.password),`Подсмотреть игру`)}async function ar(e,t){le.value=e,ue.value=t,ce.value=!0}async function or(){if(!(_e.value||!R.value.ID)){_e.value=!0;try{let e=await o.IssueGameTickets({gameID:R.value.ID,count:pe.value});me.value=e.tickets||[],S.success(`Выпущено билетов: ${me.value.length}`)}catch(e){S.error(e instanceof Error?e.message:`Не удалось выпустить билеты`)}finally{_e.value=!1}}}Ke(()=>{!B.value||J.value||(Z(Number(g)),Nt(),Pt(),It(),Yt())},2e3);async function sr(){await o.ResetGame({ID:R.value.ID}),await Z(R.value.ID)}async function cr(){await o.StartGame({ID:R.value.ID}),await Z(R.value.ID)}async function lr(){await o.PauseGame({ID:R.value.ID}),await Z(R.value.ID)}async function ur(){await o.PlayGame({ID:R.value.ID}),await Z(R.value.ID)}async function dr(){await o.FinishGame({ID:R.value.ID}),await Z(R.value.ID)}let fr=O(!1),pr=O([]),mr=O(0),hr=O(0),gr=O([]),_r=O([]),vr=O({});function yr(e,t){return(e??``)+`:`+(t??``)}function br(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function xr(e,t){vr.value[e]=t===null?void 0:t}async function Sr(){let e=await o.GetGameAnswers({gameID:Number(g)});gr.value=e.questions||[],_r.value=e.teams||[];let t={};for(let e of _r.value)for(let n of e.answers||[])t[yr(e.team?.ID,n.questionCode)]=n.score;vr.value=t}async function Cr(){fr.value=!0;let e=await o.GetGameReviewsForModeration({gameID:Number(g)});pr.value=e.reviews||[],mr.value=e.averageRating||0,hr.value=e.reviewsCount||0}async function wr(e,t){await o.ModerateGameReview({ID:e.ID,status:t}),await Cr()}async function Tr(){for(let e of gr.value)for(let t of _r.value){let n=vr.value[yr(t.team?.ID,e.code)];await o.SetTeamAnswerScore({ID:t.team?.ID,questionCode:e.code,score:n??void 0})}S.success(`Баллы сохранены`),await Sr()}oe([B,x],([e,t])=>{e&&t===`answers`&&Sr()},{immediate:!0});function Er(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function Dr(e,t){if(e==``)return`Игра ещё не началась`;let n=et(e),r=Er();t!=``&&(r=et(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 Or=O(``);return Ke(()=>{Or.value=Dr(R.value.startedAt||``,R.value.endedAt||``)},1e3),(n,r)=>(s(),P(k,null,[F(`div`,Fn,[F(`div`,In,[B.value&&(R.value.export?.state===`preparing`||R.value.export?.state===`ready`)?(s(),h(Q,{key:0},{default:A(()=>[u(w(W),{type:`info`,title:R.value.export.state===`ready`?`Игра в офлайн-режиме`:`Подготовка офлайн-пакета`},{default:A(()=>[t(p(R.value.export.state===`ready`?`Изменения на онлайн-сервере не синхронизируются с офлайн-площадкой.`:`Создаётся пакет для офлайн-площадки.`),1)]),_:1},8,[`title`])]),_:1})):e(``,!0),Pe.value?(s(),h(Q,{key:1},{default:A(()=>[F(`h2`,null,p(R.value.name),1)]),_:1})):e(``,!0),u(w(Se),{value:x.value,type:`line`,animated:``,"onUpdate:value":ee},{default:A(()=>[B.value?(s(),h(w(xe),{key:0,name:`settings`,tab:`Настройки`},{default:A(()=>[F(`div`,Ln,[u(Q,null,{default:A(()=>[u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{loading:d.value,disabled:!R.value.ID||d.value,onClick:mn},{default:A(()=>[...r[45]||=[t(` Скачать материалы для печати `,-1)]]),_:1},8,[`loading`,`disabled`]),u(w(z),{quaternary:``,onClick:r[0]||=e=>ar(w(Sn),`Админка`)},{default:A(()=>[...r[46]||=[t(`QR`,-1)]]),_:1}),R.value.status==`finish`?(s(),h(w(z),{key:0,quaternary:``,onClick:r[1]||=e=>gn()},{default:A(()=>[u(w(ge),{class:`settings-icon`},{default:A(()=>[u(w(Ot))]),_:1}),r[47]||=t(` Итоги `,-1)]),_:1})):e(``,!0),(R.value.teams?.length||0)==0?(s(),h(w(z),{key:1,type:`error`,quaternary:``,onClick:r[2]||=e=>ie.value=!0},{default:A(()=>[...r[48]||=[t(` Удалить игру `,-1)]]),_:1})):e(``,!0)]),_:1})]),_:1}),u(Q,null,{default:A(()=>[r[54]||=F(`p`,{class:`screens-title`},`Настройки игры`,-1),u(w(G),{vertical:``},{default:A(()=>[r[49]||=F(`p`,null,`Название`,-1),u(w(U),{value:C.value.name,"onUpdate:value":r[3]||=e=>C.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),r[50]||=F(`p`,{class:`settings-header`},`Формат игры`,-1),u(w(Ce),{value:C.value.format,"onUpdate:value":r[4]||=e=>C.value.format=e,options:[{label:`Online`,value:`online`},{label:`Offline`,value:`offline`}],"aria-label":`Формат игры`},null,8,[`value`]),r[51]||=F(`p`,{class:`settings-header`},`Описание`,-1),u(w(U),{value:C.value.description,"onUpdate:value":r[5]||=e=>C.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),r[52]||=F(`p`,{class:`settings-header`},`Место проведения`,-1),u(w(U),{value:C.value.location,"onUpdate:value":r[6]||=e=>C.value.location=e,type:`text`,placeholder:`Оставьте пустым для онлайн-игры`},null,8,[`value`])]),_:1}),u(w(K),{justify:`end`,class:`settings-actions`},{default:A(()=>[u(w(z),{onClick:r[7]||=e=>vn()},{default:A(()=>[...r[53]||=[t(`Сохранить изменения`,-1)]]),_:1})]),_:1})]),_:1}),Je.value?(s(),h(Q,{key:0},{default:A(()=>[u(w(z),{loading:rt.value,disabled:rt.value,onClick:fn},{default:A(()=>[...r[55]||=[t(` Скачать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})):e(``,!0),We.value?(s(),h(Q,{key:1},{default:A(()=>[r[59]||=F(`p`,{class:`screens-title`},`Возврат результатов с площадки`,-1),u(w(G),{vertical:``},{default:A(()=>[u(w(W),{type:`warning`},{default:A(()=>[...r[56]||=[t(` Команды, билеты, результаты и игровой сценарий будут заменены данными пакета. Онлайн-правки этих данных потеряются. Оформление и музыка сохраняются. `,-1)]]),_:1}),u(w(Oe),{"file-list":it.value,"default-upload":!1,max:1,accept:`.zip`,disabled:J.value,onChange:dn},{default:A(()=>[u(w(z),{disabled:J.value},{default:A(()=>[...r[57]||=[t(`Выбрать ZIP результатов`,-1)]]),_:1},8,[`disabled`])]),_:1},8,[`file-list`,`disabled`]),at.value?(s(),h(w(W),{key:0,type:`error`,role:`alert`},{default:A(()=>[t(p(at.value),1)]),_:1})):e(``,!0),u(w(z),{loading:J.value,disabled:J.value||!it.value.length,onClick:pn},{default:A(()=>[...r[58]||=[t(` Применить ZIP и перезаписать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})):e(``,!0),We.value?(s(),h(Q,{key:2},{default:A(()=>[r[64]||=F(`p`,{class:`screens-title`},`Передача игры на площадку`,-1),u(w(G),{vertical:``},{default:A(()=>[r[63]||=F(`p`,null,` Пакет содержит снимок на момент подготовки. Последующие онлайн-изменения в него не попадут. Готовность пакета не подтверждает импорт на площадку. `,-1),R.value.export?.state===`preparing`?(s(),h(w(W),{key:0,type:`info`,role:`status`},{default:A(()=>[...r[60]||=[t(`Подготовка пакета…`,-1)]]),_:1})):R.value.export?.state===`ready`?(s(),h(w(W),{key:1,type:`success`,role:`status`},{default:A(()=>[...r[61]||=[t(`Пакет готов`,-1)]]),_:1})):R.value.export?.state===`failed`?(s(),h(w(W),{key:2,type:`error`,role:`alert`},{default:A(()=>[t(p(R.value.export.failure||`Не удалось подготовить пакет`),1)]),_:1})):e(``,!0),R.value.export?.state===`ready`?(s(),h(w(z),{key:3,loading:qe.value,disabled:qe.value,onClick:un},{default:A(()=>[...r[62]||=[t(`Скачать пакет`,-1)]]),_:1},8,[`loading`,`disabled`])):(s(),h(w(z),{key:4,loading:q.value||R.value.export?.state===`preparing`,disabled:q.value||R.value.export?.state===`preparing`||R.value.status!==`draft`,onClick:ln},{default:A(()=>[t(p(R.value.export?.state===`failed`?`Повторить подготовку`:`Подготовить пакет`),1)]),_:1},8,[`loading`,`disabled`])),R.value.status&&R.value.status!==`draft`?(s(),P(`p`,Rn,` Подготовка доступна до старта игры. `)):e(``,!0)]),_:1})]),_:1})):e(``,!0),u(Q,null,{default:A(()=>[r[67]||=F(`p`,{class:`screens-title`},`Выпуск билетов`,-1),u(w(G),{vertical:``},{default:A(()=>[u(w(vt),{value:pe.value,"onUpdate:value":r[8]||=e=>pe.value=e,min:1,max:100},null,8,[`value`]),(s(!0),P(k,null,a(me.value,e=>(s(),P(`div`,{key:e.ID,class:`issued-ticket`},[F(`div`,null,`Билет №`+p(e.ID),1),F(`a`,{href:e.URL,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть страницу билета `,8,zn),u(w(z),{size:`small`,onClick:t=>ar(e.URL,`Билет №${e.ID}`)},{default:A(()=>[...r[65]||=[t(` Показать QR `,-1)]]),_:1},8,[`onClick`])]))),128))]),_:1}),u(w(K),{justify:`end`,class:`settings-actions`},{default:A(()=>[u(w(z),{loading:_e.value,disabled:_e.value,onClick:r[9]||=e=>or()},{default:A(()=>[...r[66]||=[t(` Выпустить `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})])]),_:1})):e(``,!0),B.value?(s(),h(w(xe),{key:1,name:`teams`,tab:`Команды`},{default:A(()=>[F(`div`,Bn,[u(w(K),{justify:`space-between`,align:`center`},{default:A(()=>[u(w(L),{bordered:!1,type:`info`},{default:A(()=>[t(` Участвуют команд: `+p(st.value),1)]),_:1}),st.value?(s(),h(w(z),{key:0,quaternary:``,loading:l.value,disabled:l.value,onClick:r[10]||=e=>hn()},{default:A(()=>[...r[68]||=[t(` QR команд `,-1)]]),_:1},8,[`loading`,`disabled`])):e(``,!0)]),_:1}),u(On,{teams:R.value.teams||[],"participation-options":ot,onAdd:r[11]||=e=>ne.value=!0,onOpenQr:jn,onPreview:r[12]||=(e,t)=>cn(e,t,!0),onDelete:En,onGiveApplication:Cn},null,8,[`teams`])])]),_:1})):e(``,!0),B.value?(s(),h(w(xe),{key:2,name:`screens`,tab:`Экраны`},{default:A(()=>[F(`div`,Vn,[u(sn,{screens:ct.value,"screen-binding":ve.value,playlists:lt.value,music:ut.value,onBind:qt,onSetSound:Qt,onUnbind:on,onSetMusic:$t,onCreatePlaylist:en,onDeletePlaylist:tn,onUploadTrack:nn,onDeleteTrack:rn},null,8,[`screens`,`screen-binding`,`playlists`,`music`])])]),_:1})):e(``,!0),B.value?(s(),h(w(xe),{key:3,name:`game`,tab:`Игра`},{default:A(()=>[F(`div`,Hn,[u(Q,null,{default:A(()=>[u(w(K),{justify:`space-between`},{default:A(()=>[u(w(G),null,{default:A(()=>[u(w(L),{type:`info`},{default:A(()=>[t(p(Or.value),1)]),_:1}),w(tt)(R.value.startAt)?(s(),h(w(L),{key:0,type:`info`},{default:A(()=>[t(` Начало: `+p(w(tt)(R.value.startAt)),1)]),_:1})):e(``,!0)]),_:1}),u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:Mt},{default:A(()=>[...r[69]||=[t(`Проверить звук`,-1)]]),_:1}),R.value.status==`draft`?e(``,!0):(s(),h(w(z),{key:0,type:`info`,dashed:``,"aria-label":`Сбросить игру`,onClick:r[13]||=e=>sr()},{default:A(()=>[u(w(ge),null,{default:A(()=>[u(w(Et))]),_:1})]),_:1})),R.value.status==`draft`?(s(),h(w(z),{key:1,type:`info`,dashed:``,"aria-label":`Начать игру`,onClick:r[14]||=e=>cr()},{default:A(()=>[u(w(ge),null,{default:A(()=>[u(w(wt))]),_:1})]),_:1})):e(``,!0),R.value.status==`pause`?(s(),h(w(z),{key:2,type:`info`,dashed:``,"aria-label":`Продолжить игру`,onClick:r[15]||=e=>ur()},{default:A(()=>[u(w(ge),null,{default:A(()=>[u(w(wt))]),_:1})]),_:1})):e(``,!0),R.value.status==`run`?(s(),h(w(z),{key:3,type:`info`,dashed:``,"aria-label":`Поставить игру на паузу`,onClick:r[16]||=e=>lr()},{default:A(()=>[u(w(ge),null,{default:A(()=>[u(w(St))]),_:1})]),_:1})):e(``,!0),R.value.status==`finish`?e(``,!0):(s(),h(w(z),{key:4,type:`info`,dashed:``,"aria-label":`Завершить игру`,onClick:r[17]||=e=>dr()},{default:A(()=>[u(w(ge),null,{default:A(()=>[u(w(bt))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1}),u(Jt,{"map-items":_t.value,teams:R.value.teams||[],screens:ct.value,"preview-questions":ht.value,"preview-teams":gt.value,"screen-plan":dt.value,"screen-plan-draft":Y.value,"screen-plan-dirty":X.value,"screen-plan-saving":ft.value,"screen-plan-mode":pt.value,"screen-volume":Ct.value,"screen-position":Tt.value,onSaveItem:Zt,onDragging:r[18]||=e=>xt.value=e,onGiveApplication:Cn,onAddStep:Lt,onEdit:Rt,onCancel:zt,onRemoveStep:Bt,onMoveStep:Vt,onDirty:Ht,onClearPlan:Ut,onSave:Wt,onSetStep:Gt,onCommand:Kt,"onUpdate:screenVolume":r[19]||=e=>Ct.value=e??0,"onUpdate:screenPosition":r[20]||=e=>Tt.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})):e(``,!0),B.value?(s(),h(w(xe),{key:4,name:`payment`,tab:`Оплата`},{default:A(()=>[F(`div`,Un,[u(Q,null,{default:A(()=>[u(w(K),{align:`center`,justify:`space-between`},{default:A(()=>[r[71]||=F(`p`,{class:`screens-title`},`Билеты`,-1),u(w(z),{size:`small`,onClick:r[21]||=e=>fe.value=!0},{default:A(()=>[...r[70]||=[t(` Проверить билет `,-1)]]),_:1})]),_:1})]),_:1}),u(Q,null,{default:A(()=>[r[72]||=F(`p`,{class:`screens-title`},`Оплата игры`,-1),F(`div`,Wn,[u(w(Ne),{value:ir,size:300,padding:0})]),F(`p`,null,[F(`a`,{href:ir,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть ссылку оплаты `)])]),_:1})])]),_:1})):e(``,!0),B.value?(s(),h(w(xe),{key:5,name:`answers`,tab:`Проверка ответов`},{default:A(()=>[F(`div`,Gn,[gr.value.length==0?(s(),P(`div`,Kn,` Вопросы дела не заданы или команды ещё не отвечали. `)):e(``,!0),(s(!0),P(k,null,a(gr.value,e=>(s(),h(Q,{key:e.code},{default:A(()=>[F(`p`,qn,p(e.code)+`: `+p(e.text),1),F(`p`,Jn,[r[73]||=t(` Правильный ответ:`,-1),r[74]||=F(`br`,null,null,-1),F(`span`,Yn,p(e.answer||`—`),1)]),(s(!0),P(k,null,a(_r.value,t=>(s(),P(`div`,{key:t.team?.ID,class:`answers-team-row`},[F(`div`,Xn,p(t.team?.name),1),F(`div`,Zn,p(br(t,e.code)||`—`),1),u(w(vt),{value:vr.value[yr(t.team?.ID,e.code)],"onUpdate:value":n=>xr(yr(t.team?.ID,e.code),n),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])]))),128))]),_:2},1024))),128)),u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:r[22]||=e=>Tr(),disabled:gr.value.length==0},{default:A(()=>[...r[75]||=[t(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})])]),_:1})):e(``,!0),je.value?(s(),h(w(xe),{key:6,name:`state`,tab:`Состояние`,"tab-props":{tabindex:0,role:`tab`,"aria-selected":x.value===`state`,onKeydown:te}},{default:A(()=>[u(_n,{devices:w(Ie),wifi:w(Le),"server-time":w(Re),"is-loading":w(ze),"has-error":w(Be),summary:w(He),onReload:w(Ue)},null,8,[`devices`,`wifi`,`server-time`,`is-loading`,`has-error`,`summary`,`onReload`])]),_:1},8,[`tab-props`])):e(``,!0)]),_:1},8,[`value`])])]),B.value?(s(),h(Mn,{key:0,show:fe.value,"onUpdate:show":r[23]||=e=>fe.value=e},null,8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:1,show:D.value,"onUpdate:show":r[26]||=e=>D.value=e},{default:A(()=>[u(w(I),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:r[24]||=e=>D.value=!1},{default:A(()=>[...r[76]||=[t(` x `,-1)]]),_:1})]),footer:A(()=>[u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:r[25]||=e=>Tn(),ghost:``},{default:A(()=>[...r[79]||=[t(` Выдать `,-1)]]),_:1})]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[r[77]||=F(`p`,null,`Команда`,-1),F(`h3`,null,p(yn.value.name),1),r[78]||=F(`p`,null,`Улика`,-1),F(`h3`,null,p($.value.name),1),w(Qe)($.value)==`image`&&$.value.image?(s(),P(`div`,Qn,[F(`img`,{src:w($e)($.value.image),class:`give-application-image`},null,8,$n)])):w(Qe)($.value)==`audio`&&$.value.image?(s(),P(`audio`,{key:1,src:w($e)($.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,er)):w(Qe)($.value)==`pdf`&&$.value.image?(s(),P(`a`,{key:2,href:w($e)($.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,tr)):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:2,show:ne.value,"onUpdate:show":r[32]||=e=>ne.value=e},{default:A(()=>[u(w(I),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:r[27]||=e=>ne.value=!1},{default:A(()=>[...r[80]||=[t(` x `,-1)]]),_:1})]),footer:A(()=>[u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:r[31]||=e=>wn(),disabled:j.value.length==0},{default:A(()=>[...r[81]||=[t(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[u(w(U),{value:j.value,"onUpdate:value":r[28]||=e=>j.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`]),u(w(U),{value:M.value,"onUpdate:value":r[29]||=e=>M.value=e,"input-props":{type:`email`,autocomplete:`email`},placeholder:`Почта капитана (необязательно)`,"aria-label":`Почта капитана (необязательно)`},null,8,[`value`]),u(w(vt),{value:N.value,"onUpdate:value":r[30]||=e=>N.value=e,min:1,max:8,precision:0,placeholder:`Количество игроков`,"aria-label":`Количество игроков`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:3,show:re.value,"onUpdate:show":r[36]||=e=>re.value=e},{default:A(()=>[u(w(I),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:r[33]||=e=>re.value=!1},{default:A(()=>[...r[82]||=[t(` x `,-1)]]),_:1})]),footer:A(()=>[u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:r[35]||=e=>Dn(),disabled:bn.value!=xn.value.name},{default:A(()=>[...r[85]||=[t(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[F(`p`,null,[r[83]||=t(` Введите название команды `,-1),u(w(Fe),{class:`name-text`,strong:``},{default:A(()=>[t(p(xn.value.name),1)]),_:1}),r[84]||=t(` чтобы удалить его `,-1)]),u(w(U),{value:bn.value,"onUpdate:value":r[34]||=e=>bn.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:4,show:ie.value,"onUpdate:show":r[40]||=e=>ie.value=e},{default:A(()=>[u(w(I),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:r[37]||=e=>ie.value=!1},{default:A(()=>[...r[86]||=[t(` x `,-1)]]),_:1})]),footer:A(()=>[u(w(K),{justify:`end`},{default:A(()=>[u(w(z),{onClick:r[39]||=e=>kn(),disabled:se.value!=R.value.name},{default:A(()=>[...r[89]||=[t(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[F(`p`,null,[r[87]||=t(` Введите название игры `,-1),u(w(Fe),{class:`name-text`,strong:``},{default:A(()=>[t(p(R.value.name),1)]),_:1}),r[88]||=t(` чтобы удалить её `,-1)]),u(w(U),{value:se.value,"onUpdate:value":r[38]||=e=>se.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:5,show:ce.value,"onUpdate:show":r[42]||=e=>ce.value=e},{default:A(()=>[u(w(I),{style:{width:`600px`},title:ue.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":A(()=>[u(w(z),{onClick:r[41]||=e=>ce.value=!1},{default:A(()=>[...r[90]||=[t(` x `,-1)]]),_:1})]),footer:A(()=>[...r[91]||=[]]),default:A(()=>[u(w(G),{vertical:``},{default:A(()=>[F(`div`,nr,[u(w(Ne),{value:le.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`])):e(``,!0),B.value?(s(),h(w(ye),{key:6,show:fr.value,"onUpdate:show":r[44]||=e=>fr.value=e},{default:A(()=>[u(w(I),{style:{width:`min(94vw, 800px)`},title:`Отзывы игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":A(()=>[u(w(z),{onClick:r[43]||=e=>fr.value=!1},{default:A(()=>[...r[92]||=[t(` x `,-1)]]),_:1})]),default:A(()=>[u(w(K),{align:`center`,class:`reviews-summary`},{default:A(()=>[u(w(Me),{value:mr.value,readonly:``,"allow-half":``},null,8,[`value`]),F(`span`,null,p(hr.value?`${mr.value.toFixed(1)} · ${hr.value}`:`Пока нет отзывов`),1)]),_:1}),pr.value.length==0?(s(),P(`div`,rr,`Отзывов пока нет.`)):e(``,!0),(s(!0),P(k,null,a(pr.value,n=>(s(),P(`div`,{key:n.ID,class:`review-row`},[u(w(K),{justify:`space-between`,align:`center`},{default:A(()=>[F(`strong`,null,p(n.teamName),1),u(w(L),null,{default:A(()=>[t(p(n.status),1)]),_:2},1024)]),_:2},1024),u(w(Me),{value:n.rating,readonly:``,size:`small`},null,8,[`value`]),F(`div`,null,`Сложность: `+p([``,`лёгкая`,`средняя`,`тяжёлая`][n.difficulty||0]),1),F(`p`,null,p(n.text),1),n.status==`pending`?(s(),h(w(K),{key:0,justify:`end`},{default:A(()=>[u(w(z),{type:`success`,onClick:e=>wr(n,`approved`)},{default:A(()=>[...r[93]||=[t(`Одобрить`,-1)]]),_:1},8,[`onClick`]),u(w(z),{type:`error`,ghost:``,onClick:e=>wr(n,`rejected`)},{default:A(()=>[...r[94]||=[t(`Отклонить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):n.status==`approved`?(s(),h(w(K),{key:1,justify:`end`},{default:A(()=>[u(w(z),{type:`error`,ghost:``,onClick:e=>wr(n,`hidden`)},{default:A(()=>[...r[95]||=[t(`Скрыть`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):e(``,!0)]))),128))]),_:1})]),_:1},8,[`show`])):e(``,!0),u(Xe,{active:`games`})],64))}}),[[`__scopeId`,`data-v-41bc125e`]]),or=M({__name:`GameView`,setup(e){let t=O(0),n=ae();return(e,r)=>(s(),h(ar,{key:`${w(n).params.id}-${t.value}`,onResultsApplied:r[0]||=e=>t.value++}))}});export{or as default};