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