47 lines
89 KiB
JavaScript
47 lines
89 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 ee,Zt as S,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-DlKhiJRH.js";import{d as pe,t as L}from"./Card-Y_5tc5ym.js";import{n as me,r as R,t as he}from"./es-CyMNxZbU.js";import{i as ge,w as z}from"./Suffix-fFikgaGO.js";import{t as _e}from"./Modal-7HipgyT9.js";import{t as ve}from"./use-merged-state-z45UzW9G.js";import{n as ye,t as B}from"./Button-uC_k5WP7.js";import{n as be,t as xe}from"./Tabs-BYYy_L0p.js";import{t as Se}from"./Select-DW5eg2cy.js";import{a as V,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-DTy1Sw5r.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-DWB2D02r.js";import{n as ke,t as Ae}from"./Switch-D2XaOiE6.js";import{t as G}from"./Alert-DAUHT99Y.js";import{t as K}from"./Space-CWTGqpCV.js";import{t as q}from"./Flex-OQNAcPwy.js";import{t as je}from"./Rate-DXEfly6y.js";import{t as Me}from"./QrCode-MTPi5t58.js";import{t as Ne}from"./Spin-CHXcXozZ.js";import{t as Pe}from"./text-CeHwngNM.js";import{A as Fe,D as Ie,J as Le,T as Re,ct as ze,i as Be,k as Ve,lt as He,nt as Ue,o as We,r as Ge,tt as J,ut as Ke,z as qe}from"./index-hcoRWULb.js";import{n as Je,t as Ye}from"./HeaderMenu-B0m2D_kU.js";import{t as Xe}from"./binary_client-NoCzqPJJ.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-BOifUhaD.js";var nt=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`}))}}),rt=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`}))}}),it=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);
|
||
`)])])]),at=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}}),ot=x(`n-collapse`),st=N({name:`Collapse`,props:at,slots:Object,setup(e,{slots:t}){let{mergedClsPrefixRef:r,inlineThemeDisabled:i,mergedRtlRef:a}=g(e),o=k(e.defaultExpandedNames),s=ve(E(()=>e.expandedNames),o),c=se(`Collapse`,`-collapse`,it,Re,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(ot,{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)}}),ct=N({name:`CollapseItemContent`,props:{displayDirective:{type:String,required:!0},show:Boolean,clsPrefix:{type:String,required:!0}},setup(e){return{onceTrue:z(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,[[ze,e]]):e?a:null}})}}),lt=N({name:`CollapseItem`,props:{title:String,name:[String,Number],disabled:Boolean,displayDirective:String},setup(e){let{mergedRtlRef:t}=g(e),n=Ue(),r=J(()=>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=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=V(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},V(d,{collapsed:r},()=>[l(Le,{clsPrefix:a},{default:()=>this.rtlEnabled?l(nt,null):l(rt,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(ct,{clsPrefix:a,displayDirective:i,show:!r},t))}});function ut(e){let{textColorDisabled:t}=e;return{iconColorDisabled:t}}var Y=te({name:`InputNumber`,common:D,peers:{Button:Ie,Input:Ve},self:ut}),X=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 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=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`,X,Y,e,n),{localeRef:o}=ge(`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=ve(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)},ee=J(()=>{let{placeholder:t}=e;return t===void 0?o.value.placeholder:t}),S=J(()=>{let t=ht(e.step);return t===null||t===0?1:Math.abs(t)}),C=J(()=>{let t=ht(e.min);return t===null?null:t}),w=J(()=>{let t=ht(e.max);return t===null?null:t}),T=()=>{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)};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&&ft(a))return!1;let o=(e.parse||dt)(a);if(o===null)return n&&D(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}=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=J(()=>O({offset:0,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})===!1),ne=J(()=>{let{value:t}=v;if(e.validator&&t===null)return!1;let{value:n}=S;return O({offset:-n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1}),A=J(()=>{let{value:t}=v;if(e.validator&&t===null)return!1;let{value:n}=S;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){he();return}let{value:n}=v;if(n===null)e.validator||D(le());else{let{value:e}=S;O({offset:e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}function P(){let{value:t}=ne;if(!t){me();return}let{value:n}=v;if(n===null)e.validator||D(le());else{let{value:e}=S;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,L=null;function me(){L&&=(window.clearTimeout(L),null),I&&=(window.clearInterval(I),null)}let R=null;function he(){R&&=(window.clearTimeout(R),null),fe&&=(window.clearInterval(fe),null)}function z(){me(),L=window.setTimeout(()=>{I=window.setInterval(()=>{P()},_t)},gt),pe(`mouseup`,document,me,{once:!0})}function _e(){he(),R=window.setTimeout(()=>{fe=window.setInterval(()=>{ie()},_t)},gt),pe(`mouseup`,document,he,{once:!0})}let ye=()=>{fe||ie()},B=()=>{I||P()};function be(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 xe(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 Se={focus:()=>d.value?.focus(),blur:()=>d.value?.blur(),select:()=>d.value?.select()},V=re(`InputNumber`,r,n);return Object.assign(Object.assign({},Se),{rtlEnabled:V,inputInstRef:d,minusButtonInstRef:p,addButtonInstRef:h,mergedClsPrefix:n,mergedBordered:t,uncontrolledValue:_,mergedValue:v,mergedPlaceholder:ee,displayedValueInvalid:te,mergedSize:c,mergedDisabled:l,displayedValue:y,addable:A,minusable:ne,mergedStatus:u,handleFocus:oe,handleBlur:ce,handleClear:ue,handleMouseDown:F,handleAddClick:ye,handleMinusClick:B,handleAddMousedown:_e,handleMinusMousedown:z,handleKeyDown:be,handleUpdateDisplayedValue:xe,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(ye,{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(Le,{clsPrefix:e},{default:()=>l(ke,null)})])}),r=()=>l(ye,{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(Le,{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)}))}}),yt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},bt=N({name:`Flag`,render:function(e,t){return s(),F(`svg`,yt,t[0]||=[I(`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=N({name:`Pause`,render:function(e,t){return s(),F(`svg`,xt,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)])}}),Ct={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},wt=N({name:`Play`,render:function(e,t){return s(),F(`svg`,Ct,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)])}}),Tt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Et=N({name:`Reset`,render:function(e,t){return s(),F(`svg`,Tt,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)])}}),Dt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Ot=N({name:`Trophy`,render:function(e,t){return s(),F(`svg`,Dt,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)])}}),kt=`/assets/icq-uh-oh-DjThHNEb.wav`,At={key:0,class:`timer-preview`},jt=[`src`],Z=[`src`],Mt={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=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`,At,[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,jt)):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,Z)):t.state.mode===`SCREEN_MODE_CONCLUSION`?(s(),F(`div`,Mt,` Видео закрывашки не задано `)):t.state.mode===`SCREEN_MODE_INTRO_DONE`?(s(),F(`div`,Nt,`Успехов`)):t.state.mode===`SCREEN_MODE_CONCLUSION_DONE`?(s(),F(`div`,Pt,` Спасибо за игру! `)):t.state.mode===`SCREEN_MODE_TEXT`?(s(),F(`div`,Ft,p(t.state.text),1)):t.state.mode===`SCREEN_MODE_RESULTS`?(s(),F(`div`,It,[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,Lt)):e(``,!0)],4))}}),[[`__scopeId`,`data-v-d5134fb8`]]),Q=U(N({__name:`UiBlock`,props:{tag:{default:`div`}},setup(e){return(t,n)=>(s(),h(S(e.tag),{class:`ui-block`},{default:j(()=>[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=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 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 S(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`,w),window.addEventListener(`pointerup`,D,{once:!0}),window.addEventListener(`pointercancel`,D,{once:!0}))}function w(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 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`,zt,[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(B),{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(B),{size:`small`,onClick:o[1]||=e=>te(.1)},{default:j(()=>[...o[16]||=[t(`+`,-1)]]),_:1}),u(T(B),{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`&&S(n,e),[`stop`])},[n.kind===`team`?(s(),F(`div`,{key:0,class:`map-team-handle`,onPointerdown:Ke(e=>S(n,e),[`stop`])},null,40,Vt)):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(B),{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`,Ht,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,Ut)],46,Bt)),[[ze,!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(B),{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(Rt,{key:0,state:g.value,questions:n.previewQuestions,teams:n.previewTeams},null,8,[`state`,`questions`,`teams`])):(s(),F(`div`,Wt,`Экран не подключён`)),I(`div`,Gt,[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(B),{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(B),{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(B),{size:`small`,disabled:n.screenPlanSaving,onClick:o[5]||=e=>l(`cancel`)},{default:j(()=>[...o[21]||=[t(` Отменить `,-1)]]),_:1},8,[`disabled`]),u(T(B),{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`,Kt,` План экранов ещё не создан. `)):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(Se),{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(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(T(K),{class:`screen-plan-actions`},{default:j(()=>[u(T(B),{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(B),{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(B),{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(B),{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(B),{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(B),{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(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_START`)},{default:j(()=>[...o[30]||=[t(` Старт `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_PAUSE`)},{default:j(()=>[...o[31]||=[t(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_TIMER_RESUME`)},{default:j(()=>[...o[32]||=[t(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(T(B),{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(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_PLAY`)},{default:j(()=>[...o[34]||=[t(` Запуск `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_PAUSE`)},{default:j(()=>[...o[35]||=[t(` Пауза `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_RESUME`)},{default:j(()=>[...o[36]||=[t(` Продолжить `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_STOP`)},{default:j(()=>[...o[37]||=[t(` Стоп `,-1)]]),_:1},8,[`onClick`]),u(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_REPLAY`)},{default:j(()=>[...o[38]||=[t(` Повтор `,-1)]]),_:1},8,[`onClick`]),u(T(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(T(B),{size:`small`,onClick:e=>l(`command`,r.mode,`SCREEN_COMMAND_VOLUME`)},{default:j(()=>[...o[39]||=[t(` Громкость `,-1)]]),_:1},8,[`onClick`]),u(T(vt),{value:n.screenPosition,min:0,step:5,size:`small`,"onUpdate:value":o[14]||=e=>l(`update:screenPosition`,e)},null,8,[`value`]),u(T(B),{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`]]),Yt=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(L),{style:{width:`min(600px, 94vw)`},title:`Привязать экран`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{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(B),{key:1,type:`primary`,onClick:y},{default:j(()=>[...a[2]||=[t(` Сканировать QR-код `,-1)]]),_:1})):e(``,!0),l.value?(s(),h(T(B),{key:2,onClick:g},{default:j(()=>[...a[3]||=[t(`Остановить камеру`,-1)]]),_:1})):e(``,!0),n.binding?(s(),h(T(B),{key:3,type:`primary`,loading:``},{default:j(()=>[...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=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(B),{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`,Xt,`К игре пока не привязаны экраны.`)):(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`,Zt,p(n.status===`connected`?`Онлайн`:`Оффлайн`),1),n.error?(s(),F(`div`,Qt,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(B),{key:1,size:`small`,onClick:e=>c(`setSound`,n)},{default:j(()=>[...g[16]||=[t(`Назначить звук`,-1)]]),_:1},8,[`onClick`])),u(T(B),{size:`small`,type:`error`,ghost:``,onClick:e=>c(`unbind`,n)},{default:j(()=>[...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: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(B),{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(B),{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(B),{size:`small`},{default:j(()=>[...g[20]||=[t(`Добавить MP3`,-1)]]),_:1})]),_:1})]),_:1}),u(T(q),{align:`center`,wrap:``},{default:j(()=>[u(T(Se),{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`,$t,[o.music.playlist.tracks?.length?e(``,!0):(s(),F(`p`,en,`В плейлисте пока нет треков.`)),(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`,tn,[I(`span`,nn,p(n+1),1),I(`span`,rn,[I(`span`,an,p(e.name||`Трек ${n+1}`),1)])]),u(T(q),{align:`center`,class:`track-actions`},{default:j(()=>[u(T(B),{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(B),{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(B),{size:`small`,onClick:g[7]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_PLAYING`})},{default:j(()=>[...g[22]||=[t(`Старт`,-1)]]),_:1}),u(T(B),{size:`small`,onClick:g[8]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_PAUSED`})},{default:j(()=>[...g[23]||=[t(`Пауза`,-1)]]),_:1}),u(T(B),{size:`small`,onClick:g[9]||=e=>c(`setMusic`,{playback:`MUSIC_PLAYBACK_STOPPED`,positionMs:0})},{default:j(()=>[...g[24]||=[t(`Стоп`,-1)]]),_:1}),I(`div`,on,[g[26]||=I(`span`,{class:`volume-label`},`Громкость`,-1),u(T(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: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`]]),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=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(R),{type:`success`},{default:j(()=>[t(`Доступны: `+p(n.summary.connected),1)]),_:1}),u(T(R),{type:`warning`},{default:j(()=>[t(`Нет связи: `+p(n.summary.disconnected),1)]),_:1}),u(T(R),null,{default:j(()=>[t(`Подключения: `+p(n.summary.connections),1)]),_:1})]),_:1}),n.serverTime?(s(),F(`p`,cn,`Последнее обновление: `+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(B),{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`,ln,`Загружаем состояние…`)):n.serverTime&&!n.devices.length?(s(),F(`p`,un,`Устройства этой игры пока не зарегистрированы`)):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(R),{key:1,type:`warning`},{default:j(()=>[...o[3]||=[t(`Данные устарели`,-1)]]),_:1})):e(``,!0),n.wifi.collectedAt?(s(),F(`p`,fn,` Последний снимок 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`,pn,`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`,dn,`Сбор данных Cudy не настроен`))]),_:1}),(s(!0),F(A,null,a(n.devices,n=>(s(),h(Q,{key:n.ID},{default:j(()=>[I(`div`,mn,[I(`strong`,null,p(n.ID),1),I(`p`,null,[u(T(R),{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(st),null,{default:j(()=>[u(T(lt),{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`,hn,`ID команды: `+p(t.teamID),1)):e(``,!0),t.screenID?(s(),F(`p`,gn,`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`]]),vn={class:`team-content-block`},yn={class:`title-block`},$={class:`team-name-block`},bn={key:0},xn={key:1},Sn={key:0},Cn={key:0},wn={key:1},Tn={key:2},En={key:3},Dn={key:4},On=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`,vn,[u(T(q),{justify:`space-between`},{default:j(()=>[I(`div`,yn,[I(`span`,$,[t(p(r.name)+` `,1),r.captainEmail?(s(),F(`small`,bn,` — `+p(r.captainEmail),1)):e(``,!0),r.participantsCount?(s(),F(`small`,xn,` · Участников: `+p(r.participantsCount),1)):e(``,!0)]),r.captainEmail||r.participationStatus!==`pending`?(s(),F(`div`,Sn,[t(p(n.participationOptions.find(e=>e.value===r.participationStatus)?.label),1),r.participationSource===`automatic`?(s(),F(`span`,Cn,` · автоматически`)):e(``,!0)])):e(``,!0),r.captainEmail?r.participationEmailError?(s(),F(`div`,Tn,` Ошибка отправки: `+p(r.participationEmailError),1)):r.participationEmailSent?(s(),F(`div`,En,`Письмо отправлено`)):e(``,!0):(s(),F(`div`,wn,`Почта капитана не указана`)),r.participationStatus===`cancelled`?e(``,!0):(s(),F(`div`,Dn,` Поездки: `+p(r.actionsCount),1))]),u(T(q),{justify:`end`},{default:j(()=>[r.participationStatus===`cancelled`?e(``,!0):(s(),h(T(B),{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(B),{key:1,onClick:e=>i(`preview`,r.ID,r.password)},{default:j(()=>[...o[3]||=[t(`Подсмотреть игру`,-1)]]),_:1},8,[`onClick`])),u(T(B),{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(B),{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`]]),kn={key:0},An={key:1},jn={key:2},Mn=U(N({__name:`TicketCheckModal`,props:{show:{type:Boolean,required:!0},showModifiers:{}},emits:[`update:show`],setup(n){let r=O(n,`show`),i=Be(),a=me(),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 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 S(){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?S():C()}),v(C),(n,i)=>(s(),h(T(_e),{show:r.value,"onUpdate:show":i[1]||=e=>r.value=e},{default:j(()=>[u(T(L),{style:{width:`min(600px, 94vw)`},title:`Проверка билета`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{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(B),{key:3,onClick:C},{default:j(()=>[...i[4]||=[t(`Остановить камеру`,-1)]]),_:1})):(s(),h(T(B),{key:2,onClick:S},{default:j(()=>[...i[3]||=[t(`Сканировать QR-код`,-1)]]),_:1})),u(T(W),{value:o.value,"onUpdate:value":i[0]||=e=>o.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:He(x,[`enter`])},null,8,[`value`]),u(T(B),{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`,kn,` · `+p(c.value.usedBy),1)):e(``,!0),c.value.usedAt?(s(),F(`br`,An)):e(``,!0),c.value.usedAt?(s(),F(`span`,jn,`Использован: `+p(T(et)(c.value.usedAt)),1)):e(``,!0)]),_:1},8,[`type`]),c.value.status===`active`&&c.value.gameStatus!==`finish`?(s(),h(T(B),{key:0,type:`primary`,loading:d.value,onClick:ee},{default:j(()=>[...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=Be(),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`}),Ge(()=>{f()},5e3),ne(()=>{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=U(N({__name:`GamePage`,emits:[`resultsApplied`],setup(n,{emit:r}){let i=r,o=Be(),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 v=typeof f.query.tab==`string`?f.query.tab:``,b=k(g(v)?v:`game`);async function x(e){!g(e)||(e===`state`?!ke.value:!V.value)||(b.value=e,await d.replace({query:{...f.query,tab:e}}))}function ee(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),x(`state`))}let S=me(),C=k({name:``,description:``,format:`online`,location:``}),w=k(!1),D=k(!1),O=k(!1),te=k(!1),ne=k(!1),re=k(``),M=k(``),N=k(1),P=k(``),oe=k(!1),se=k(``),ce=k(``),le=k(!1),de=k(1),fe=k([]),pe=k(!1),ge=k(!1),z=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}),ve=We(),ye=Je(),V=E(()=>ve.hasAnyRole([`admin`,`organizer`,`author`])),H=0,Ce=0,we=!1,Te=!1,U,De,Oe=!1,ke=E(()=>ye.environment===`venue`&&ve.hasAnyRole([`admin`,`organizer`,`developer`])),Ae=E(()=>ke.value&&!V.value);tt(()=>V.value?{organizerGameID:Number(m)}:{});let{devices:Ne,wifi:Fe,serverTime:Ie,isLoading:Le,hasError:Re,summary:ze,reload:Ve}=Nn(()=>Number(f.params.id),()=>ke.value&&b.value===`state`);ae([()=>f.query.tab,ke,V],()=>{let e=typeof f.query.tab==`string`?f.query.tab:``;b.value=Ae.value?`state`:g(e)&&(e!==`state`||ke.value)?e:`game`,Ae.value&&e!==`state`&&d.replace({query:{...f.query,tab:`state`}})},{immediate:!0}),ae(Ae,e=>{e&&(z.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 He=E(()=>Number(z.value.ID)>0&&ye.environment===`prod`&&ve.hasAnyRole([`admin`,`organizer`,`developer`])),Ue=k(!1),J=k(!1),Ke=E(()=>ye.environment===`venue`&&z.value.status===`finish`&&ve.hasAnyRole([`admin`,`organizer`,`developer`])),qe=k(!1),nt=k(!1),rt=k([]),it=k(``),at=[{label:`Ожидает ответа`,value:`pending`},{label:`Подтверждено`,value:`confirmed`},{label:`Отменено`,value:`cancelled`}],ot=E(()=>(z.value.teams||[]).filter(e=>e.participationStatus!==`cancelled`).length),st=k([]),ct=k([]),lt=k(),ut=k(),Y=k([]),X=k(!1),dt=k(!1),ft=k(`use`),pt=0,mt=k([]),ht=k([]),gt=k([]),_t=k(!1),yt=k(!1),xt=k(100),Ct=k(0);function Tt(e){Te||Oe||(Oe=!0,S.warning(`Не удалось включить звуковые уведомления о выдаче улик`),console.error(`Звуковое уведомление о выдаче улик`,e))}async function Dt(){if(!(!V.value||Te))try{U??=new AudioContext,U.state===`suspended`&&await U.resume();let e=U;De??=fetch(kt).then(async t=>{if(!t.ok)throw Error(`Не удалось загрузить звук уведомления`);return e.decodeAudioData(await t.arrayBuffer())}),await De}catch(e){De=void 0,Tt(e)}}async function At(){if(!(!U||U.state!==`running`||!De))try{let e=await De;if(Te||U.state!==`running`)return;let t=U.createBufferSource();t.buffer=e,t.connect(U.destination),t.onended=()=>t.disconnect(),t.start()}catch(e){Tt(e)}}async function jt(){await Dt(),await At()}_(()=>{window.addEventListener(`click`,Dt),window.addEventListener(`keydown`,Dt)}),y(()=>{Te=!0,window.removeEventListener(`click`,Dt),window.removeEventListener(`keydown`,Dt),U?.close().catch(e=>{console.error(`Закрытие звуковых уведомлений`,e)})});async function Z(e){let t=++H,n=V.value,r=await o.GetGame({ID:e});Te||n!==V.value||t<Ce||(Ce=t,V.value&&we&&Pn(z.value.teams||[],r.game?.teams||[])&&At(),we=!0,z.value=r.game,w.value||=(C.value={name:z.value.name||``,description:z.value.description||``,format:z.value.format||`online`,location:z.value.location||``},!0),z.value.teams=z.value.teams?.sort((e,t)=>{let n=0;(e.applications?.length||0)>0&&(n=1);let r=0;if((t.applications?.length||0)>0&&(r=1),n>r)return-1;if(n<r)return 1;let i=e.name||``,a=t.name||``;return i>a?1:i<a?-1:0}))}V.value&&Z(Number(m));async function Mt(){let e=await o.GetGameScreens({gameID:Number(m)});if(st.value=e.screens||[],(st.value.find(e=>e.status===`connected`)||st.value[0])?.mode===`SCREEN_MODE_RESULTS`){let e=await o.GetGameResults({gameID:Number(m)});mt.value=e.questions||[],ht.value=e.teams||[]}else mt.value=[],ht.value=[]}V.value&&Mt();async function Nt(){try{let e=await o.GetGameMusic({gameID:Number(m)});ct.value=e.playlists||[],lt.value=e.state}catch(e){S.error(e instanceof Error?e.message:`Не удалось получить музыку игры`)}}V.value&&Nt();function Pt(){return ft.value===`edit`}async function Ft(){if(console.log(`getScreenPlan`),Pt()||X.value)return;console.log(`no skip getScreenPlan`);let e=++pt,t=await o.GetScreenPlan({gameID:Number(m)});e!==pt||Pt()||X.value||(ut.value=t.plan,Y.value=t.plan?.steps?.map(e=>({...e}))||[])}V.value&&Ft();function It(){Y.value.push({mode:`SCREEN_MODE_TEXT`,text:`Новый экран`,timerLabel:`Перерыв`,timerDurationSeconds:600}),X.value=!0,ft.value=`edit`}function Lt(){ut.value&&(Y.value=ut.value.steps?.map(e=>({...e}))||[],ft.value=`edit`)}function Rt(){X.value&&!window.confirm(`Отменить несохранённые изменения плана?`)||(Y.value=ut.value?.steps?.map(e=>({...e}))||[],X.value=!1,ft.value=`use`)}function zt(e){Y.value.splice(e,1),X.value=!0}function Bt(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 Vt(){X.value=!0}function Ht(){Y.value=[],Vt()}async function Ut(){if(!dt.value){pt+=1,dt.value=!0;try{let e=Math.min(ut.value?.currentStep||0,Math.max(0,Y.value.length-1)),t=await o.SaveScreenPlan({gameID:Number(m),steps:Y.value,currentStep:e});ut.value=t.plan,Y.value=t.plan?.steps?.map(e=>({...e}))||[],X.value=!1,ft.value=`use`,S.success(t.plan?`План экранов сохранён`:`План экранов удалён`)}catch(e){S.error(e instanceof Error?e.message:`Не удалось сохранить план экранов`)}finally{dt.value=!1}}}async function Wt(e){if(!(X.value||!ut.value))try{let t=await o.SetScreenPlanStep({gameID:Number(m),currentStep:e});ut.value=t.plan,await Mt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось перейти на шаг плана`)}}async function Gt(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(Ct.value*1e3)),volume:Math.max(0,Math.min(100,Math.round(xt.value)))}),await Mt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось управлять экраном`)}}async function Kt(e,t){if(!ge.value){ge.value=!0;try{await o.BindScreen({screenID:e,accessToken:t,gameID:Number(m)}),S.success(`Экран привязан к игре`),await Mt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{ge.value=!1}}}async function qt(){if(_t.value||yt.value)return;let e=await o.GetGameMap({gameID:Number(m)});_t.value||yt.value||(gt.value=e.items||[])}V.value&&qt();async function Yt(e,t=e.hidden){_t.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{_t.value=!1}}async function Xt(e,t=e.hidden){await Yt(e,t),await qt()}async function Zt(e){await o.SetScreenSound({screenID:e.ID,soundEnabled:!0}),await Mt()}async function Qt(e){let t=lt.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`});lt.value=n.state}catch(e){S.error(e instanceof Error?e.message:`Не удалось изменить музыку`)}}async function $t(e){try{await o.CreatePlaylist({name:e}),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось создать плейлист`)}}async function en(e){try{await o.DeletePlaylist({ID:e}),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось удалить плейлист`)}}async function tn(e){let t=lt.value?.playlist?.ID;if(!t){S.warning(`Сначала выберите плейлист`);return}try{let n=rn(new Uint8Array(await e.arrayBuffer()));await o.UploadPlaylistTrack({playlistID:t,name:e.name,filename:e.name,data:n}),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось загрузить MP3`)}}async function nn(e){let t=lt.value?.playlist?.ID;if(t)try{await o.DeletePlaylistTrack({playlistID:t,trackID:e}),await Nt()}catch(e){S.error(e instanceof Error?e.message:`Не удалось удалить трек`)}}function rn(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 an(e){await o.UnbindScreen({screenID:e.ID}),await Mt()}async function on(e,t,n=!1){let r=`/team-story/`+e+`?password=`+t;if(n){window.open(r,`_blank`);return}d.push(r)}async function cn(){if(!(!He.value||Ue.value||z.value.export?.state===`preparing`||z.value.export?.state===`ready`||z.value.status!==`draft`)){Ue.value=!0;try{let e=await o.StartGameExport({ID:z.value.ID});z.value.export=e.export}catch(e){S.error(e instanceof Error?e.message:`Не удалось подготовить пакет`)}finally{Ue.value=!1}}}async function ln(){if(!(!He.value||J.value||z.value.export?.state!==`ready`)){J.value=!0;try{let{blob:e,filename:t}=await c.downloadGamePackage(z.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{J.value=!1}}}function un({fileList:e}){nt.value||(rt.value=e.slice(-1),it.value=``)}async function dn(){if(!(!Ke.value||qe.value)){qe.value=!0;try{let{blob:e,filename:t}=await c.downloadGameResultsPackage(z.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}}}async function fn(){if(!He.value||nt.value)return;let e=rt.value[0]?.file;if(!e||e.size===0){it.value=`Выберите непустой ZIP-файл`;return}if(!e.name.toLowerCase().endsWith(`.zip`)){it.value=`Выберите файл с расширением .zip`;return}if(e.size>1024**3){it.value=`Размер пакета не должен превышать 1 ГиБ`;return}nt.value=!0,it.value=``;try{await c.applyGameResultsPackage(z.value.ID,e),S.success(`Результаты приняты`),i(`resultsApplied`)}catch(e){it.value=e instanceof Error?e.message:`Не удалось применить результаты`}finally{nt.value=!1}}async function pn(){if(!(l.value||!z.value.teams?.length)){l.value=!0;try{let{blob:e,filename:t}=await c.downloadTeamQR(z.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 mn(){d.push(`/games/`+m+`/results`)}async function hn(){await o.UpdateGame({ID:z.value.ID,name:C.value.name,description:C.value.description,format:C.value.format,location:C.value.location.trim(),startAt:z.value.startAt,scenarioID:z.value.scenario?.ID}),await Z(z.value.ID)}let gn=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}),vn=k(``),yn=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:``}),bn=window.location.href;function xn(e,t){gn.value=e,$.value=t,D.value=!0}async function Sn(){if(N.value<1||N.value>8){S.error(`Укажите от 1 до 8 игроков`);return}await o.AddTeam({gameID:z.value.ID,name:re.value,captainEmail:M.value.trim(),participantsCount:N.value}),await Z(z.value.ID),O.value=!1,M.value=``,N.value=1}async function Cn(){await o.GiveTeamApplications({ID:gn.value.ID,name:$.value.name}),await Z(z.value.ID),D.value=!1}async function wn(e){yn.value=e,te.value=!0}async function Tn(){await o.DeleteTeam({ID:yn.value.ID}),await Z(z.value.ID),te.value=!1}async function En(){await o.DeleteGame({ID:z.value.ID}),S.success(`Игра удалена`),d.push(`/games`)}function Dn(e,t){let n=new URL(`/team-story/${e}`,window.location.origin);return n.searchParams.set(`password`,t),n.toString()}function kn(e){An(Dn(e.ID,e.password),`Подсмотреть игру`)}async function An(e,t){se.value=e,ce.value=t,oe.value=!0}async function jn(){if(!(pe.value||!z.value.ID)){pe.value=!0;try{let e=await o.IssueGameTickets({gameID:z.value.ID,count:de.value});fe.value=e.tickets||[],S.success(`Выпущено билетов: ${fe.value.length}`)}catch(e){S.error(e instanceof Error?e.message:`Не удалось выпустить билеты`)}finally{pe.value=!1}}}Ge(()=>{!V.value||nt.value||(Z(Number(m)),Mt(),Nt(),Ft(),qt())},2e3);async function ar(){await o.ResetGame({ID:z.value.ID}),await Z(z.value.ID)}async function or(){await o.StartGame({ID:z.value.ID}),await Z(z.value.ID)}async function sr(){await o.PauseGame({ID:z.value.ID}),await Z(z.value.ID)}async function cr(){await o.PlayGame({ID:z.value.ID}),await Z(z.value.ID)}async function lr(){await o.FinishGame({ID:z.value.ID}),await Z(z.value.ID)}let ur=k(!1),dr=k([]),fr=k(0),pr=k(0),mr=k([]),hr=k([]),gr=k({});function _r(e,t){return(e??``)+`:`+(t??``)}function vr(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function yr(e,t){gr.value[e]=t===null?void 0:t}async function br(){let e=await o.GetGameAnswers({gameID:Number(m)});mr.value=e.questions||[],hr.value=e.teams||[];let t={};for(let e of hr.value)for(let n of e.answers||[])t[_r(e.team?.ID,n.questionCode)]=n.score;gr.value=t}async function xr(){ur.value=!0;let e=await o.GetGameReviewsForModeration({gameID:Number(m)});dr.value=e.reviews||[],fr.value=e.averageRating||0,pr.value=e.reviewsCount||0}async function Sr(e,t){await o.ModerateGameReview({ID:e.ID,status:t}),await xr()}async function Cr(){for(let e of mr.value)for(let t of hr.value){let n=gr.value[_r(t.team?.ID,e.code)];await o.SetTeamAnswerScore({ID:t.team?.ID,questionCode:e.code,score:n??void 0})}S.success(`Баллы сохранены`),await br()}ae([V,b],([e,t])=>{e&&t===`answers`&&br()},{immediate:!0});function wr(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function Tr(e,t){if(e==``)return`Игра ещё не началась`;let n=$e(e),r=wr();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 Er=k(``);return Ge(()=>{Er.value=Tr(z.value.startedAt||``,z.value.endedAt||``)},1e3),(n,r)=>(s(),F(A,null,[I(`div`,Fn,[I(`div`,In,[V.value&&(z.value.export?.state===`preparing`||z.value.export?.state===`ready`)?(s(),h(Q,{key:0},{default:j(()=>[u(T(G),{type:`info`,title:z.value.export.state===`ready`?`Игра в офлайн-режиме`:`Подготовка офлайн-пакета`},{default:j(()=>[t(p(z.value.export.state===`ready`?`Изменения на онлайн-сервере не синхронизируются с офлайн-площадкой.`:`Создаётся пакет для офлайн-площадки.`),1)]),_:1},8,[`title`])]),_:1})):e(``,!0),Ae.value?(s(),h(Q,{key:1},{default:j(()=>[I(`h2`,null,p(z.value.name),1)]),_:1})):e(``,!0),u(T(xe),{value:b.value,type:`line`,animated:``,"onUpdate:value":x},{default:j(()=>[V.value?(s(),h(T(be),{key:0,name:`settings`,tab:`Настройки`},{default:j(()=>[I(`div`,Ln,[u(Q,null,{default:j(()=>[u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{quaternary:``,onClick:r[0]||=e=>An(T(bn),`Админка`)},{default:j(()=>[...r[45]||=[t(`QR`,-1)]]),_:1}),z.value.status==`finish`?(s(),h(T(B),{key:0,quaternary:``,onClick:r[1]||=e=>mn()},{default:j(()=>[u(T(he),{class:`settings-icon`},{default:j(()=>[u(T(Ot))]),_:1}),r[46]||=t(` Итоги `,-1)]),_:1})):e(``,!0),(z.value.teams?.length||0)==0?(s(),h(T(B),{key:1,type:`error`,quaternary:``,onClick:r[2]||=e=>ne.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:C.value.name,"onUpdate:value":r[3]||=e=>C.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),r[49]||=I(`p`,{class:`settings-header`},`Формат игры`,-1),u(T(Se),{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[50]||=I(`p`,{class:`settings-header`},`Описание`,-1),u(T(W),{value:C.value.description,"onUpdate:value":r[5]||=e=>C.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),r[51]||=I(`p`,{class:`settings-header`},`Место проведения`,-1),u(T(W),{value:C.value.location,"onUpdate:value":r[6]||=e=>C.value.location=e,type:`text`,placeholder:`Оставьте пустым для онлайн-игры`},null,8,[`value`])]),_:1}),u(T(q),{justify:`end`,class:`settings-actions`},{default:j(()=>[u(T(B),{onClick:r[7]||=e=>hn()},{default:j(()=>[...r[52]||=[t(`Сохранить изменения`,-1)]]),_:1})]),_:1})]),_:1}),Ke.value?(s(),h(Q,{key:0},{default:j(()=>[u(T(B),{loading:qe.value,disabled:qe.value,onClick:dn},{default:j(()=>[...r[54]||=[t(` Скачать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})):e(``,!0),He.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":rt.value,"default-upload":!1,max:1,accept:`.zip`,disabled:nt.value,onChange:un},{default:j(()=>[u(T(B),{disabled:nt.value},{default:j(()=>[...r[56]||=[t(`Выбрать ZIP результатов`,-1)]]),_:1},8,[`disabled`])]),_:1},8,[`file-list`,`disabled`]),it.value?(s(),h(T(G),{key:0,type:`error`,role:`alert`},{default:j(()=>[t(p(it.value),1)]),_:1})):e(``,!0),u(T(B),{loading:nt.value,disabled:nt.value||!rt.value.length,onClick:fn},{default:j(()=>[...r[57]||=[t(` Применить ZIP и перезаписать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})):e(``,!0),He.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),z.value.export?.state===`preparing`?(s(),h(T(G),{key:0,type:`info`,role:`status`},{default:j(()=>[...r[59]||=[t(`Подготовка пакета…`,-1)]]),_:1})):z.value.export?.state===`ready`?(s(),h(T(G),{key:1,type:`success`,role:`status`},{default:j(()=>[...r[60]||=[t(`Пакет готов`,-1)]]),_:1})):z.value.export?.state===`failed`?(s(),h(T(G),{key:2,type:`error`,role:`alert`},{default:j(()=>[t(p(z.value.export.failure||`Не удалось подготовить пакет`),1)]),_:1})):e(``,!0),z.value.export?.state===`ready`?(s(),h(T(B),{key:3,loading:J.value,disabled:J.value,onClick:ln},{default:j(()=>[...r[61]||=[t(`Скачать пакет`,-1)]]),_:1},8,[`loading`,`disabled`])):(s(),h(T(B),{key:4,loading:Ue.value||z.value.export?.state===`preparing`,disabled:Ue.value||z.value.export?.state===`preparing`||z.value.status!==`draft`,onClick:cn},{default:j(()=>[t(p(z.value.export?.state===`failed`?`Повторить подготовку`:`Подготовить пакет`),1)]),_:1},8,[`loading`,`disabled`])),z.value.status&&z.value.status!==`draft`?(s(),F(`p`,Rn,` Подготовка доступна до старта игры. `)):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(vt),{value:de.value,"onUpdate:value":r[8]||=e=>de.value=e,min:1,max:100},null,8,[`value`]),(s(!0),F(A,null,a(fe.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,zn),u(T(B),{size:`small`,onClick:t=>An(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(B),{loading:pe.value,disabled:pe.value,onClick:r[9]||=e=>jn()},{default:j(()=>[...r[65]||=[t(` Выпустить `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})])]),_:1})):e(``,!0),V.value?(s(),h(T(be),{key:1,name:`teams`,tab:`Команды`},{default:j(()=>[I(`div`,Bn,[u(T(q),{justify:`space-between`,align:`center`},{default:j(()=>[u(T(R),{bordered:!1,type:`info`},{default:j(()=>[t(` Участвуют команд: `+p(ot.value),1)]),_:1}),ot.value?(s(),h(T(B),{key:0,quaternary:``,loading:l.value,disabled:l.value,onClick:r[10]||=e=>pn()},{default:j(()=>[...r[67]||=[t(` QR команд `,-1)]]),_:1},8,[`loading`,`disabled`])):e(``,!0)]),_:1}),u(On,{teams:z.value.teams||[],"participation-options":at,onAdd:r[11]||=e=>O.value=!0,onOpenQr:kn,onPreview:r[12]||=(e,t)=>on(e,t,!0),onDelete:wn,onGiveApplication:xn},null,8,[`teams`])])]),_:1})):e(``,!0),V.value?(s(),h(T(be),{key:2,name:`screens`,tab:`Экраны`},{default:j(()=>[I(`div`,Vn,[u(sn,{screens:st.value,"screen-binding":ge.value,playlists:ct.value,music:lt.value,onBind:Kt,onSetSound:Zt,onUnbind:an,onSetMusic:Qt,onCreatePlaylist:$t,onDeletePlaylist:en,onUploadTrack:tn,onDeleteTrack:nn},null,8,[`screens`,`screen-binding`,`playlists`,`music`])])]),_:1})):e(``,!0),V.value?(s(),h(T(be),{key:3,name:`game`,tab:`Игра`},{default:j(()=>[I(`div`,Hn,[u(Q,null,{default:j(()=>[u(T(q),{justify:`space-between`},{default:j(()=>[u(T(K),null,{default:j(()=>[u(T(R),{type:`info`},{default:j(()=>[t(p(Er.value),1)]),_:1}),T(et)(z.value.startAt)?(s(),h(T(R),{key:0,type:`info`},{default:j(()=>[t(` Начало: `+p(T(et)(z.value.startAt)),1)]),_:1})):e(``,!0)]),_:1}),u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{onClick:jt},{default:j(()=>[...r[68]||=[t(`Проверить звук`,-1)]]),_:1}),z.value.status==`draft`?e(``,!0):(s(),h(T(B),{key:0,type:`info`,dashed:``,"aria-label":`Сбросить игру`,onClick:r[13]||=e=>ar()},{default:j(()=>[u(T(he),null,{default:j(()=>[u(T(Et))]),_:1})]),_:1})),z.value.status==`draft`?(s(),h(T(B),{key:1,type:`info`,dashed:``,"aria-label":`Начать игру`,onClick:r[14]||=e=>or()},{default:j(()=>[u(T(he),null,{default:j(()=>[u(T(wt))]),_:1})]),_:1})):e(``,!0),z.value.status==`pause`?(s(),h(T(B),{key:2,type:`info`,dashed:``,"aria-label":`Продолжить игру`,onClick:r[15]||=e=>cr()},{default:j(()=>[u(T(he),null,{default:j(()=>[u(T(wt))]),_:1})]),_:1})):e(``,!0),z.value.status==`run`?(s(),h(T(B),{key:3,type:`info`,dashed:``,"aria-label":`Поставить игру на паузу`,onClick:r[16]||=e=>sr()},{default:j(()=>[u(T(he),null,{default:j(()=>[u(T(St))]),_:1})]),_:1})):e(``,!0),z.value.status==`finish`?e(``,!0):(s(),h(T(B),{key:4,type:`info`,dashed:``,"aria-label":`Завершить игру`,onClick:r[17]||=e=>lr()},{default:j(()=>[u(T(he),null,{default:j(()=>[u(T(bt))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1}),u(Jt,{"map-items":gt.value,teams:z.value.teams||[],screens:st.value,"preview-questions":mt.value,"preview-teams":ht.value,"screen-plan":ut.value,"screen-plan-draft":Y.value,"screen-plan-dirty":X.value,"screen-plan-saving":dt.value,"screen-plan-mode":ft.value,"screen-volume":xt.value,"screen-position":Ct.value,onSaveItem:Xt,onDragging:r[18]||=e=>yt.value=e,onGiveApplication:xn,onAddStep:It,onEdit:Lt,onCancel:Rt,onRemoveStep:zt,onMoveStep:Bt,onDirty:Vt,onClearPlan:Ht,onSave:Ut,onSetStep:Wt,onCommand:Gt,"onUpdate:screenVolume":r[19]||=e=>xt.value=e??0,"onUpdate:screenPosition":r[20]||=e=>Ct.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),V.value?(s(),h(T(be),{key:4,name:`payment`,tab:`Оплата`},{default:j(()=>[I(`div`,Un,[u(Q,null,{default:j(()=>[u(T(q),{align:`center`,justify:`space-between`},{default:j(()=>[r[70]||=I(`p`,{class:`screens-title`},`Билеты`,-1),u(T(B),{size:`small`,onClick:r[21]||=e=>le.value=!0},{default:j(()=>[...r[69]||=[t(` Проверить билет `,-1)]]),_:1})]),_:1})]),_:1}),u(Q,null,{default:j(()=>[r[71]||=I(`p`,{class:`screens-title`},`Оплата игры`,-1),I(`div`,Wn,[u(T(Me),{value:ir,size:300,padding:0})]),I(`p`,null,[I(`a`,{href:ir,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть ссылку оплаты `)])]),_:1})])]),_:1})):e(``,!0),V.value?(s(),h(T(be),{key:5,name:`answers`,tab:`Проверка ответов`},{default:j(()=>[I(`div`,Gn,[mr.value.length==0?(s(),F(`div`,Kn,` Вопросы дела не заданы или команды ещё не отвечали. `)):e(``,!0),(s(!0),F(A,null,a(mr.value,e=>(s(),h(Q,{key:e.code},{default:j(()=>[I(`p`,qn,p(e.code)+`: `+p(e.text),1),I(`p`,Jn,[r[72]||=t(` Правильный ответ:`,-1),r[73]||=I(`br`,null,null,-1),I(`span`,Yn,p(e.answer||`—`),1)]),(s(!0),F(A,null,a(hr.value,t=>(s(),F(`div`,{key:t.team?.ID,class:`answers-team-row`},[I(`div`,Xn,p(t.team?.name),1),I(`div`,Zn,p(vr(t,e.code)||`—`),1),u(T(vt),{value:gr.value[_r(t.team?.ID,e.code)],"onUpdate:value":n=>yr(_r(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(B),{onClick:r[22]||=e=>Cr(),disabled:mr.value.length==0},{default:j(()=>[...r[74]||=[t(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})])]),_:1})):e(``,!0),ke.value?(s(),h(T(be),{key:6,name:`state`,tab:`Состояние`,"tab-props":{tabindex:0,role:`tab`,"aria-selected":b.value===`state`,onKeydown:ee}},{default:j(()=>[u(_n,{devices:T(Ne),wifi:T(Fe),"server-time":T(Ie),"is-loading":T(Le),"has-error":T(Re),summary:T(ze),onReload:T(Ve)},null,8,[`devices`,`wifi`,`server-time`,`is-loading`,`has-error`,`summary`,`onReload`])]),_:1},8,[`tab-props`])):e(``,!0)]),_:1},8,[`value`])])]),V.value?(s(),h(Mn,{key:0,show:le.value,"onUpdate:show":r[23]||=e=>le.value=e},null,8,[`show`])):e(``,!0),V.value?(s(),h(T(_e),{key:1,show:D.value,"onUpdate:show":r[26]||=e=>D.value=e},{default:j(()=>[u(T(L),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{onClick:r[24]||=e=>D.value=!1},{default:j(()=>[...r[75]||=[t(` x `,-1)]]),_:1})]),footer:j(()=>[u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{onClick:r[25]||=e=>Cn(),ghost:``},{default:j(()=>[...r[78]||=[t(` Выдать `,-1)]]),_:1})]),_:1})]),default:j(()=>[u(T(K),{vertical:``},{default:j(()=>[r[76]||=I(`p`,null,`Команда`,-1),I(`h3`,null,p(gn.value.name),1),r[77]||=I(`p`,null,`Улика`,-1),I(`h3`,null,p($.value.name),1),T(Ze)($.value)==`image`&&$.value.image?(s(),F(`div`,Qn,[I(`img`,{src:T(Qe)($.value.image),class:`give-application-image`},null,8,$n)])):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,er)):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,tr)):e(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),V.value?(s(),h(T(_e),{key:2,show:O.value,"onUpdate:show":r[32]||=e=>O.value=e},{default:j(()=>[u(T(L),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{onClick:r[27]||=e=>O.value=!1},{default:j(()=>[...r[79]||=[t(` x `,-1)]]),_:1})]),footer:j(()=>[u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{onClick:r[31]||=e=>Sn(),disabled:re.value.length==0},{default:j(()=>[...r[80]||=[t(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:j(()=>[u(T(K),{vertical:``},{default:j(()=>[u(T(W),{value:re.value,"onUpdate:value":r[28]||=e=>re.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`]),u(T(W),{value:M.value,"onUpdate:value":r[29]||=e=>M.value=e,"input-props":{type:`email`,autocomplete:`email`},placeholder:`Почта капитана (необязательно)`,"aria-label":`Почта капитана (необязательно)`},null,8,[`value`]),u(T(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),V.value?(s(),h(T(_e),{key:3,show:te.value,"onUpdate:show":r[36]||=e=>te.value=e},{default:j(()=>[u(T(L),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{onClick:r[33]||=e=>te.value=!1},{default:j(()=>[...r[81]||=[t(` x `,-1)]]),_:1})]),footer:j(()=>[u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{onClick:r[35]||=e=>Tn(),disabled:vn.value!=yn.value.name},{default:j(()=>[...r[84]||=[t(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:j(()=>[u(T(K),{vertical:``},{default:j(()=>[I(`p`,null,[r[82]||=t(` Введите название команды `,-1),u(T(Pe),{class:`name-text`,strong:``},{default:j(()=>[t(p(yn.value.name),1)]),_:1}),r[83]||=t(` чтобы удалить его `,-1)]),u(T(W),{value:vn.value,"onUpdate:value":r[34]||=e=>vn.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),V.value?(s(),h(T(_e),{key:4,show:ne.value,"onUpdate:show":r[40]||=e=>ne.value=e},{default:j(()=>[u(T(L),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{onClick:r[37]||=e=>ne.value=!1},{default:j(()=>[...r[85]||=[t(` x `,-1)]]),_:1})]),footer:j(()=>[u(T(q),{justify:`end`},{default:j(()=>[u(T(B),{onClick:r[39]||=e=>En(),disabled:P.value!=z.value.name},{default:j(()=>[...r[88]||=[t(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:j(()=>[u(T(K),{vertical:``},{default:j(()=>[I(`p`,null,[r[86]||=t(` Введите название игры `,-1),u(T(Pe),{class:`name-text`,strong:``},{default:j(()=>[t(p(z.value.name),1)]),_:1}),r[87]||=t(` чтобы удалить её `,-1)]),u(T(W),{value:P.value,"onUpdate:value":r[38]||=e=>P.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):e(``,!0),V.value?(s(),h(T(_e),{key:5,show:oe.value,"onUpdate:show":r[42]||=e=>oe.value=e},{default:j(()=>[u(T(L),{style:{width:`600px`},title:ce.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":j(()=>[u(T(B),{onClick:r[41]||=e=>oe.value=!1},{default:j(()=>[...r[89]||=[t(` x `,-1)]]),_:1})]),footer:j(()=>[...r[90]||=[]]),default:j(()=>[u(T(K),{vertical:``},{default:j(()=>[I(`div`,nr,[u(T(Me),{value:se.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`])):e(``,!0),V.value?(s(),h(T(_e),{key:6,show:ur.value,"onUpdate:show":r[44]||=e=>ur.value=e},{default:j(()=>[u(T(L),{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(B),{onClick:r[43]||=e=>ur.value=!1},{default:j(()=>[...r[91]||=[t(` x `,-1)]]),_:1})]),default:j(()=>[u(T(q),{align:`center`,class:`reviews-summary`},{default:j(()=>[u(T(je),{value:fr.value,readonly:``,"allow-half":``},null,8,[`value`]),I(`span`,null,p(pr.value?`${fr.value.toFixed(1)} · ${pr.value}`:`Пока нет отзывов`),1)]),_:1}),dr.value.length==0?(s(),F(`div`,rr,`Отзывов пока нет.`)):e(``,!0),(s(!0),F(A,null,a(dr.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(R),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(B),{type:`success`,onClick:e=>Sr(n,`approved`)},{default:j(()=>[...r[92]||=[t(`Одобрить`,-1)]]),_:1},8,[`onClick`]),u(T(B),{type:`error`,ghost:``,onClick:e=>Sr(n,`rejected`)},{default:j(()=>[...r[93]||=[t(`Отклонить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):n.status==`approved`?(s(),h(T(q),{key:1,justify:`end`},{default:j(()=>[u(T(B),{type:`error`,ghost:``,onClick:e=>Sr(n,`hidden`)},{default:j(()=>[...r[94]||=[t(`Скрыть`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):e(``,!0)]))),128))]),_:1})]),_:1},8,[`show`])):e(``,!0),u(Ye,{active:`games`})],64))}}),[[`__scopeId`,`data-v-6e021b35`]]),or=N({__name:`GameView`,setup(e){let t=k(0),n=ie();return(e,r)=>(s(),h(ar,{key:`${T(n).params.id}-${t.value}`,onResultsApplied:r[0]||=e=>t.value++}))}});export{or as default}; |