280 lines
123 KiB
JavaScript
280 lines
123 KiB
JavaScript
import{$ as e,At as t,Bt as n,Cn as r,Ct as i,Hn as a,It as o,Kt as s,Pt as c,Qt as l,Rt as u,St as d,Tn as f,Tt as p,U as m,Un as h,Ut as g,Vn as _,W as v,Wt as y,X as b,Xt as x,Yt as S,Zt as C,_ as w,an as T,at as E,cn as D,ct as O,d as k,en as A,f as j,gn as ee,gt as M,jt as N,kt as P,ln as te,lt as ne,m as re,nt as F,ot as I,p as ie,q as ae,qt as oe,rn as se,rt as L,st as ce,u as le,ut as ue,wt as R,xt as z,yn as B}from"./client-Be0b5AZU.js";import{a as de,i as fe,o as pe,t as me}from"./Follower-BDY1V0Th.js";import{d as he}from"./utils-Xalr2HTe.js";import{c as ge,s as _e}from"./Scrollbar-LRArvNxj.js";import{i as V,n as H,r as ve,t as ye}from"./ui-DePKLhY8.js";import{i as be,n as xe,w as U}from"./Suffix-LrhQ5FSC.js";import{t as Se}from"./Modal-NIBfo4YE.js";import{t as Ce}from"./use-merged-state-DltLwRXB.js";import{n as we,t as W}from"./Button-B0cBJTB7.js";import{n as Te,t as Ee}from"./Tabs-B6SOzSQr.js";import{t as De}from"./Select-Ih6Ofb-h.js";import{a as G,c as K,i as Oe,o as ke,s as Ae,t as q}from"./_plugin-vue_export-helper-C_Iw6R3j.js";import{t as je}from"./Upload-DzBLiGw0.js";import{n as Me}from"./use-form-item-DRm_M51j.js";import{t as Ne}from"./Add-Ze6Y1L3B.js";import{t as Pe}from"./Input-CVjrphZx.js";import{t as Fe}from"./Remove-Bax1fA0y.js";import{t as Ie}from"./Alert-CNQloVdC.js";import{t as Le}from"./Card-2FpXQWHo.js";import{t as J}from"./Space-DM1L-JDA.js";import{t as Y}from"./Flex-C-iTpmES.js";import{t as Re}from"./Rate-BhaAZrt2.js";import{n as ze,t as Be}from"./usePlaylistActions-Cw7mnGf8.js";import{t as Ve}from"./QrCode-BWG8g5fm.js";import{t as He}from"./Spin-D4c-N3AC.js";import{t as Ue}from"./text-C5pf6EwB.js";import{N as We,O as Ge,P as Ke,Q as qe,U as Je,at as Ye,ft as Xe,i as Ze,it as Qe,j as $e,lt as et,mt as X,o as tt,ot as nt,p as rt,pt as it,r as at,u as ot}from"./index-DpxjEbFc.js";import{t as st}from"./HeaderMenu-BhUQ_vLn.js";import{t as ct}from"./binary_client--voAMpaq.js";import{n as lt,r as ut}from"./application-T8uHIr7B.js";import{i as dt,n as ft,r as pt,t as mt}from"./ScreenPreview-yEhMwxB6.js";import{n as ht,t as gt}from"./datetime-BJNH0M1T.js";import{t as _t}from"./useDeviceContext-DAzmVmw5.js";var vt=N({name:`ChevronLeft`,render(){return c(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},c(`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`}))}}),yt=N({name:`ChevronRight`,render(){return c(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},c(`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`}))}}),bt=L(`collapse`,`width: 100%;`,[L(`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);
|
||
`,[I(`disabled`,[E(`header`,`cursor: not-allowed;`,[E(`header-main`,`
|
||
color: var(--n-title-text-color-disabled);
|
||
`),L(`collapse-item-arrow`,`
|
||
color: var(--n-arrow-color-disabled);
|
||
`)])]),L(`collapse-item`,`margin-left: 32px;`),F(`&:first-child`,`margin-top: 0;`),F(`&:first-child >`,[E(`header`,`padding-top: 0;`)]),I(`left-arrow-placement`,[E(`header`,[L(`collapse-item-arrow`,`margin-right: 4px;`)])]),I(`right-arrow-placement`,[E(`header`,[L(`collapse-item-arrow`,`margin-left: 4px;`)])]),E(`content-wrapper`,[E(`content-inner`,`padding-top: 16px;`),Ke({duration:`0.15s`})]),I(`active`,[E(`header`,[I(`active`,[L(`collapse-item-arrow`,`transform: rotate(90deg);`)])])]),F(`&:not(:first-child)`,`border-top: 1px solid var(--n-divider-color);`),ce(`disabled`,[I(`trigger-area-main`,[E(`header`,[E(`header-main`,`cursor: pointer;`),L(`collapse-item-arrow`,`cursor: default;`)])]),I(`trigger-area-arrow`,[E(`header`,[L(`collapse-item-arrow`,`cursor: pointer;`)])]),I(`trigger-area-extra`,[E(`header`,[E(`header-extra`,`cursor: pointer;`)])])]),E(`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);
|
||
`,[E(`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);
|
||
`),E(`header-extra`,`
|
||
display: flex;
|
||
align-items: center;
|
||
transition: color .3s var(--n-bezier);
|
||
color: var(--n-text-color);
|
||
`),L(`collapse-item-arrow`,`
|
||
display: flex;
|
||
transition:
|
||
transform .15s var(--n-bezier),
|
||
color .3s var(--n-bezier);
|
||
font-size: 18px;
|
||
color: var(--n-arrow-color);
|
||
`)])])]),xt=Object.assign(Object.assign({},re.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}}),St=b(`n-collapse`),Ct=N({name:`Collapse`,props:xt,slots:Object,setup(e,{slots:t}){let{mergedClsPrefixRef:n,inlineThemeDisabled:r,mergedRtlRef:i}=v(e),a=B(e.defaultExpandedNames),o=Ce(z(()=>e.expandedNames),a),s=re(`Collapse`,`-collapse`,bt,Ge,e,n);function c(t){let{"onUpdate:expandedNames":n,onUpdateExpandedNames:r,onExpandedNamesChange:i}=e;r&&K(r,t),n&&K(n,t),i&&K(i,t),a.value=t}function l(t){let{onItemHeaderClick:n}=e;n&&K(n,t)}function u(t,n,r){let{accordion:i}=e,{value:a}=o;if(i)t?(c([n]),l({name:n,expanded:!0,event:r})):(c([]),l({name:n,expanded:!1,event:r}));else if(!Array.isArray(a))c([n]),l({name:n,expanded:!0,event:r});else{let e=a.slice(),t=e.findIndex(e=>n===e);~t?(e.splice(t,1),c(e),l({name:n,expanded:!1,event:r})):(e.push(n),c(e),l({name:n,expanded:!0,event:r}))}}x(St,{props:e,mergedClsPrefixRef:n,expandedNamesRef:o,slots:t,toggleItem:u});let d=w(`Collapse`,i,n),f=z(()=>{let{common:{cubicBezierEaseInOut:e},self:{titleFontWeight:t,dividerColor:n,titlePadding:r,titleTextColor:i,titleTextColorDisabled:a,textColor:o,arrowColor:c,fontSize:l,titleFontSize:u,arrowColorDisabled:d,itemMargin:f}}=s.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":c,"--n-arrow-color-disabled":d,"--n-item-margin":f}}),p=r?m(`collapse`,void 0,f,e):void 0;return{rtlEnabled:d,mergedTheme:s,mergedClsPrefix:n,cssVars:r?void 0:f,themeClass:p?.themeClass,onRender:p?.onRender}},render(){var e;return(e=this.onRender)==null||e.call(this),c(`div`,{class:[`${this.mergedClsPrefix}-collapse`,this.rtlEnabled&&`${this.mergedClsPrefix}-collapse--rtl`,this.themeClass],style:this.cssVars},this.$slots)}}),wt=N({name:`CollapseItemContent`,props:{displayDirective:{type:String,required:!0},show:Boolean,clsPrefix:{type:String,required:!0}},setup(e){return{onceTrue:U(r(e,`show`))}},render(){return c(Je,null,{default:()=>{let{show:e,displayDirective:t,onceTrue:n,clsPrefix:r}=this,i=t===`show`&&n,a=c(`div`,{class:`${r}-collapse-item__content-wrapper`},c(`div`,{class:`${r}-collapse-item__content-inner`},this.$slots));return i?te(a,[[Xe,e]]):e?a:null}})}}),Tt=N({name:`CollapseItem`,props:{title:String,name:[String,Number],disabled:Boolean,displayDirective:String},setup(e){let{mergedRtlRef:t}=v(e),n=nt(),i=Ye(()=>e.name??n),a=o(St);a||ae(`collapse-item`,"`n-collapse-item` must be placed inside `n-collapse`.");let{expandedNamesRef:s,props:c,mergedClsPrefixRef:l,slots:u}=a,d=z(()=>{let{value:e}=s;if(Array.isArray(e)){let{value:t}=i;return!~e.findIndex(e=>e===t)}else if(e){let{value:t}=i;return t!==e}return!0});return{rtlEnabled:w(`Collapse`,t,l),collapseSlots:u,randomName:n,mergedClsPrefix:l,collapsed:d,triggerAreas:r(c,`triggerAreas`),mergedDisplayDirective:z(()=>{let{displayDirective:t}=e;return t||c.displayDirective}),arrowPlacement:z(()=>c.arrowPlacement),handleClick(t){let n=`main`;he(t,`arrow`)&&(n=`arrow`),he(t,`extra`)&&(n=`extra`),c.triggerAreas.includes(n)&&a&&!e.disabled&&a.toggleItem(d.value,i.value,t)}}},render(){let{collapseSlots:e,$slots:t,arrowPlacement:n,collapsed:r,mergedDisplayDirective:i,mergedClsPrefix:a,disabled:o,triggerAreas:s}=this,l=G(t.header,{collapsed:r},()=>[this.title]),u=t[`header-extra`]||e[`header-extra`],d=t.arrow||e.arrow;return c(`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}`)]},c(`div`,{class:[`${a}-collapse-item__header`,!r&&`${a}-collapse-item__header--active`]},c(`div`,{class:`${a}-collapse-item__header-main`,onClick:this.handleClick},n===`right`&&l,c(`div`,{class:`${a}-collapse-item-arrow`,key:+!this.rtlEnabled,"data-arrow":!0},G(d,{collapsed:r},()=>[c(qe,{clsPrefix:a},{default:()=>this.rtlEnabled?c(vt,null):c(yt,null)})])),n===`left`&&l),Ae(u,{collapsed:r},e=>c(`div`,{class:`${a}-collapse-item__header-extra`,onClick:this.handleClick,"data-extra":!0},e))),c(wt,{clsPrefix:a,displayDirective:i,show:!r},t))}});function Et(e){let{textColorDisabled:t}=e;return{iconColorDisabled:t}}var Dt=ie({name:`InputNumber`,common:j,peers:{Button:$e,Input:We},self:Et});function Ot(e){let{railColor:t,primaryColor:n,baseColor:r,cardColor:i,modalColor:a,popoverColor:o,borderRadius:s,fontSize:c,opacityDisabled:l}=e;return Object.assign(Object.assign({},rt),{fontSize:c,markFontSize:c,railColor:t,railColorHover:t,fillColor:n,fillColorHover:n,opacityDisabled:l,handleColor:`#FFF`,dotColor:i,dotColorModal:a,dotColorPopover:o,handleBoxShadow:`0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)`,handleBoxShadowHover:`0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)`,handleBoxShadowActive:`0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)`,handleBoxShadowFocus:`0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)`,indicatorColor:`rgba(0, 0, 0, .85)`,indicatorBoxShadow:`0 2px 8px 0 rgba(0, 0, 0, 0.12)`,indicatorTextColor:r,indicatorBorderRadius:s,dotBorder:`2px solid ${t}`,dotBorderActive:`2px solid ${n}`,dotBoxShadow:``})}var kt={name:`Slider`,common:j,self:Ot},At=F([L(`input-number-suffix`,`
|
||
display: inline-block;
|
||
margin-right: 10px;
|
||
`),L(`input-number-prefix`,`
|
||
display: inline-block;
|
||
margin-left: 10px;
|
||
`)]);function jt(e){return e==null||typeof e==`string`&&e.trim()===``?null:Number(e)}function Mt(e){return e.includes(`.`)&&(/^(-)?\d+.*(\.|0)$/.test(e)||/^-?\d*$/.test(e))||e===`-`||e===`-0`}function Nt(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 Ft(e){if(e===null)return null;if(typeof e==`number`)return e;{let t=Number(e);return Number.isNaN(t)?null:t}}var It=800,Z=100,Lt=N({name:`InputNumber`,props:Object.assign(Object.assign({},re.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(t){let{mergedBorderedRef:i,mergedClsPrefixRef:a,mergedRtlRef:o,mergedComponentPropsRef:s}=v(t),c=re(`InputNumber`,`-input-number`,At,Dt,t,a),{localeRef:l}=be(`InputNumber`),u=Me(t,{mergedSize:e=>{let{size:n}=t;if(n)return n;let{mergedSize:r}=e||{};return r?.value?r.value:s?.value?.InputNumber?.size||`medium`}}),{mergedSizeRef:d,mergedDisabledRef:f,mergedStatusRef:p}=u,m=B(null),h=B(null),g=B(null),_=B(t.defaultValue),y=Ce(r(t,`value`),_),b=B(``),x=e=>{let t=String(e).split(`.`)[1];return t?t.length:0},S=e=>{let n=[t.min,t.max,t.step,e].map(e=>e===void 0?0:x(e));return Math.max(...n)},C=Ye(()=>{let{placeholder:e}=t;return e===void 0?l.value.placeholder:e}),E=Ye(()=>{let e=Ft(t.step);return e===null||e===0?1:Math.abs(e)}),D=Ye(()=>{let e=Ft(t.min);return e===null?null:e}),O=Ye(()=>{let e=Ft(t.max);return e===null?null:e}),k=()=>{let{value:e}=y;if(Nt(e)){let{format:n,precision:r}=t;n?b.value=n(e):e===null||r===void 0||x(e)>r?b.value=Pt(e,void 0):b.value=Pt(e,r)}else b.value=String(e)};k();let A=e=>{let{value:n}=y;if(e===n){k();return}let{"onUpdate:value":r,onUpdateValue:i,onChange:a}=t,{nTriggerFormInput:o,nTriggerFormChange:s}=u;a&&K(a,e),i&&K(i,e),r&&K(r,e),_.value=e,o(),s()},j=({offset:e,doUpdateIfValid:n,fixPrecision:r,isInputing:i})=>{let{value:a}=b;if(i&&Mt(a))return!1;let o=(t.parse||jt)(a);if(o===null)return n&&A(null),null;if(Nt(o)){let a=x(o),{precision:s}=t;if(s!==void 0&&s<a&&!r)return!1;let c=Number.parseFloat((o+e).toFixed(s??S(o)));if(Nt(c)){let{value:e}=O,{value:r}=D;if(e!==null&&c>e){if(!n||i)return!1;c=e}if(r!==null&&c<r){if(!n||i)return!1;c=r}return t.validator&&!t.validator(c)?!1:(n&&A(c),c)}}return!1},ee=Ye(()=>j({offset:0,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})===!1),M=Ye(()=>{let{value:e}=y;if(t.validator&&e===null)return!1;let{value:n}=E;return j({offset:-n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1}),N=Ye(()=>{let{value:e}=y;if(t.validator&&e===null)return!1;let{value:n}=E;return j({offset:+n,doUpdateIfValid:!1,isInputing:!1,fixPrecision:!1})!==!1});function P(e){let{onFocus:n}=t,{nTriggerFormFocus:r}=u;n&&K(n,e),r()}function te(e){if(e.target===m.value?.wrapperElRef)return;let r=j({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0});if(r!==!1){let e=m.value?.inputElRef;e&&(e.value=String(r||``)),y.value===r&&k()}else k();let{onBlur:i}=t,{nTriggerFormBlur:a}=u;i&&K(i,e),a(),n(()=>{k()})}function ne(e){let{onClear:n}=t;n&&K(n,e)}function F(){let{value:e}=N;if(!e){fe();return}let{value:n}=y;if(n===null)t.validator||A(oe());else{let{value:e}=E;j({offset:e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}function I(){let{value:e}=M;if(!e){R();return}let{value:n}=y;if(n===null)t.validator||A(oe());else{let{value:e}=E;j({offset:-e,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})}}let ie=P,ae=te;function oe(){if(t.validator)return null;let{value:e}=D,{value:n}=O;return e===null?n===null?0:Math.min(0,n):Math.max(0,e)}function se(e){ne(e),A(null)}function L(e){var t;g.value?.$el.contains(e.target)&&e.preventDefault(),h.value?.$el.contains(e.target)&&e.preventDefault(),(t=m.value)==null||t.activate()}let ce=null,le=null,ue=null;function R(){ue&&=(window.clearTimeout(ue),null),ce&&=(window.clearInterval(ce),null)}let de=null;function fe(){de&&=(window.clearTimeout(de),null),le&&=(window.clearInterval(le),null)}function pe(){R(),ue=window.setTimeout(()=>{ce=window.setInterval(()=>{I()},Z)},It),ge(`mouseup`,document,R,{once:!0})}function me(){fe(),de=window.setTimeout(()=>{le=window.setInterval(()=>{F()},Z)},It),ge(`mouseup`,document,fe,{once:!0})}let he=()=>{le||F()},_e=()=>{ce||I()};function V(e){var n;if(e.key===`Enter`){if(e.target===m.value?.wrapperElRef)return;j({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&((n=m.value)==null||n.deactivate())}else if(e.key===`ArrowUp`){if(!N.value||t.keyboard.ArrowUp===!1)return;e.preventDefault(),j({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&F()}else if(e.key===`ArrowDown`){if(!M.value||t.keyboard.ArrowDown===!1)return;e.preventDefault(),j({offset:0,doUpdateIfValid:!0,isInputing:!1,fixPrecision:!0})!==!1&&I()}}function H(e){b.value=e,t.updateValueOnInput&&!t.format&&!t.parse&&t.precision===void 0&&j({offset:0,doUpdateIfValid:!0,isInputing:!0,fixPrecision:!1})}T(y,()=>{k()});let ve={focus:()=>m.value?.focus(),blur:()=>m.value?.blur(),select:()=>m.value?.select()},ye=w(`InputNumber`,o,a);return Object.assign(Object.assign({},ve),{rtlEnabled:ye,inputInstRef:m,minusButtonInstRef:h,addButtonInstRef:g,mergedClsPrefix:a,mergedBordered:i,uncontrolledValue:_,mergedValue:y,mergedPlaceholder:C,displayedValueInvalid:ee,mergedSize:d,mergedDisabled:f,displayedValue:b,addable:N,minusable:M,mergedStatus:p,handleFocus:ie,handleBlur:ae,handleClear:se,handleMouseDown:L,handleAddClick:he,handleMinusClick:_e,handleAddMousedown:me,handleMinusMousedown:pe,handleKeyDown:V,handleUpdateDisplayedValue:H,mergedTheme:c,inputThemeOverrides:{paddingSmall:`0 8px 0 10px`,paddingMedium:`0 8px 0 12px`,paddingLarge:`0 8px 0 14px`},buttonThemeOverrides:z(()=>{let{self:{iconColorDisabled:t}}=c.value,[n,r,i,a]=e(t);return{textColorTextDisabled:`rgb(${n}, ${r}, ${i})`,opacityDisabled:`${a}`}})})},render(){let{mergedClsPrefix:e,$slots:t}=this,n=()=>c(we,{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:()=>Oe(t[`minus-icon`],()=>[c(qe,{clsPrefix:e},{default:()=>c(Fe,null)})])}),r=()=>c(we,{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:()=>Oe(t[`add-icon`],()=>[c(qe,{clsPrefix:e},{default:()=>c(Ne,null)})])});return c(`div`,{class:[`${e}-input-number`,this.rtlEnabled&&`${e}-input-number--rtl`]},c(Pe,{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(),ke(t.prefix,t=>t?c(`span`,{class:`${e}-input-number-prefix`},t):null)]:t.prefix?.call(t),suffix:()=>this.showButton?[ke(t.suffix,t=>t?c(`span`,{class:`${e}-input-number-suffix`},t):null),this.buttonPlacement===`right`?n():null,r()]:t.suffix?.call(t)}))}}),Rt=F([L(`slider`,`
|
||
display: block;
|
||
padding: calc((var(--n-handle-size) - var(--n-rail-height)) / 2) 0;
|
||
position: relative;
|
||
z-index: 0;
|
||
width: 100%;
|
||
cursor: pointer;
|
||
user-select: none;
|
||
-webkit-user-select: none;
|
||
`,[I(`reverse`,[L(`slider-handles`,[L(`slider-handle-wrapper`,`
|
||
transform: translate(50%, -50%);
|
||
`)]),L(`slider-dots`,[L(`slider-dot`,`
|
||
transform: translateX(50%, -50%);
|
||
`)]),I(`vertical`,[L(`slider-handles`,[L(`slider-handle-wrapper`,`
|
||
transform: translate(-50%, -50%);
|
||
`)]),L(`slider-marks`,[L(`slider-mark`,`
|
||
transform: translateY(calc(-50% + var(--n-dot-height) / 2));
|
||
`)]),L(`slider-dots`,[L(`slider-dot`,`
|
||
transform: translateX(-50%) translateY(0);
|
||
`)])])]),I(`vertical`,`
|
||
box-sizing: content-box;
|
||
padding: 0 calc((var(--n-handle-size) - var(--n-rail-height)) / 2);
|
||
width: var(--n-rail-width-vertical);
|
||
height: 100%;
|
||
`,[L(`slider-handles`,`
|
||
top: calc(var(--n-handle-size) / 2);
|
||
right: 0;
|
||
bottom: calc(var(--n-handle-size) / 2);
|
||
left: 0;
|
||
`,[L(`slider-handle-wrapper`,`
|
||
top: unset;
|
||
left: 50%;
|
||
transform: translate(-50%, 50%);
|
||
`)]),L(`slider-rail`,`
|
||
height: 100%;
|
||
`,[E(`fill`,`
|
||
top: unset;
|
||
right: 0;
|
||
bottom: unset;
|
||
left: 0;
|
||
`)]),I(`with-mark`,`
|
||
width: var(--n-rail-width-vertical);
|
||
margin: 0 32px 0 8px;
|
||
`),L(`slider-marks`,`
|
||
top: calc(var(--n-handle-size) / 2);
|
||
right: unset;
|
||
bottom: calc(var(--n-handle-size) / 2);
|
||
left: 22px;
|
||
font-size: var(--n-mark-font-size);
|
||
`,[L(`slider-mark`,`
|
||
transform: translateY(50%);
|
||
white-space: nowrap;
|
||
`)]),L(`slider-dots`,`
|
||
top: calc(var(--n-handle-size) / 2);
|
||
right: unset;
|
||
bottom: calc(var(--n-handle-size) / 2);
|
||
left: 50%;
|
||
`,[L(`slider-dot`,`
|
||
transform: translateX(-50%) translateY(50%);
|
||
`)])]),I(`disabled`,`
|
||
cursor: not-allowed;
|
||
opacity: var(--n-opacity-disabled);
|
||
`,[L(`slider-handle`,`
|
||
cursor: not-allowed;
|
||
`)]),I(`with-mark`,`
|
||
width: 100%;
|
||
margin: 8px 0 32px 0;
|
||
`),F(`&:hover`,[L(`slider-rail`,{backgroundColor:`var(--n-rail-color-hover)`},[E(`fill`,{backgroundColor:`var(--n-fill-color-hover)`})]),L(`slider-handle`,{boxShadow:`var(--n-handle-box-shadow-hover)`})]),I(`active`,[L(`slider-rail`,{backgroundColor:`var(--n-rail-color-hover)`},[E(`fill`,{backgroundColor:`var(--n-fill-color-hover)`})]),L(`slider-handle`,{boxShadow:`var(--n-handle-box-shadow-hover)`})]),L(`slider-marks`,`
|
||
position: absolute;
|
||
top: 18px;
|
||
left: calc(var(--n-handle-size) / 2);
|
||
right: calc(var(--n-handle-size) / 2);
|
||
`,[L(`slider-mark`,`
|
||
position: absolute;
|
||
transform: translateX(-50%);
|
||
white-space: nowrap;
|
||
`)]),L(`slider-rail`,`
|
||
width: 100%;
|
||
position: relative;
|
||
height: var(--n-rail-height);
|
||
background-color: var(--n-rail-color);
|
||
transition: background-color .3s var(--n-bezier);
|
||
border-radius: calc(var(--n-rail-height) / 2);
|
||
`,[E(`fill`,`
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
border-radius: calc(var(--n-rail-height) / 2);
|
||
transition: background-color .3s var(--n-bezier);
|
||
background-color: var(--n-fill-color);
|
||
`)]),L(`slider-handles`,`
|
||
position: absolute;
|
||
top: 0;
|
||
right: calc(var(--n-handle-size) / 2);
|
||
bottom: 0;
|
||
left: calc(var(--n-handle-size) / 2);
|
||
`,[L(`slider-handle-wrapper`,`
|
||
outline: none;
|
||
position: absolute;
|
||
top: 50%;
|
||
transform: translate(-50%, -50%);
|
||
cursor: pointer;
|
||
display: flex;
|
||
`,[L(`slider-handle`,`
|
||
height: var(--n-handle-size);
|
||
width: var(--n-handle-size);
|
||
border-radius: 50%;
|
||
overflow: hidden;
|
||
transition: box-shadow .2s var(--n-bezier), background-color .3s var(--n-bezier);
|
||
background-color: var(--n-handle-color);
|
||
box-shadow: var(--n-handle-box-shadow);
|
||
`,[F(`&:hover`,`
|
||
box-shadow: var(--n-handle-box-shadow-hover);
|
||
`)]),F(`&:focus`,[L(`slider-handle`,`
|
||
box-shadow: var(--n-handle-box-shadow-focus);
|
||
`,[F(`&:hover`,`
|
||
box-shadow: var(--n-handle-box-shadow-active);
|
||
`)])])])]),L(`slider-dots`,`
|
||
position: absolute;
|
||
top: 50%;
|
||
left: calc(var(--n-handle-size) / 2);
|
||
right: calc(var(--n-handle-size) / 2);
|
||
`,[I(`transition-disabled`,[L(`slider-dot`,`transition: none;`)]),L(`slider-dot`,`
|
||
transition:
|
||
border-color .3s var(--n-bezier),
|
||
box-shadow .3s var(--n-bezier),
|
||
background-color .3s var(--n-bezier);
|
||
position: absolute;
|
||
transform: translate(-50%, -50%);
|
||
height: var(--n-dot-height);
|
||
width: var(--n-dot-width);
|
||
border-radius: var(--n-dot-border-radius);
|
||
overflow: hidden;
|
||
box-sizing: border-box;
|
||
border: var(--n-dot-border);
|
||
background-color: var(--n-dot-color);
|
||
`,[I(`active`,`border: var(--n-dot-border-active);`)])])]),L(`slider-handle-indicator`,`
|
||
font-size: var(--n-font-size);
|
||
padding: 6px 10px;
|
||
border-radius: var(--n-indicator-border-radius);
|
||
color: var(--n-indicator-text-color);
|
||
background-color: var(--n-indicator-color);
|
||
box-shadow: var(--n-indicator-box-shadow);
|
||
`,[xe()]),L(`slider-handle-indicator`,`
|
||
font-size: var(--n-font-size);
|
||
padding: 6px 10px;
|
||
border-radius: var(--n-indicator-border-radius);
|
||
color: var(--n-indicator-text-color);
|
||
background-color: var(--n-indicator-color);
|
||
box-shadow: var(--n-indicator-box-shadow);
|
||
`,[I(`top`,`
|
||
margin-bottom: 12px;
|
||
`),I(`right`,`
|
||
margin-left: 12px;
|
||
`),I(`bottom`,`
|
||
margin-top: 12px;
|
||
`),I(`left`,`
|
||
margin-right: 12px;
|
||
`),xe()]),ne(L(`slider`,[L(`slider-dot`,`background-color: var(--n-dot-color-modal);`)])),ue(L(`slider`,[L(`slider-dot`,`background-color: var(--n-dot-color-popover);`)]))]);function zt(e){return window.TouchEvent&&e instanceof window.TouchEvent}function Bt(){let e=new Map;return y(()=>{e.clear()}),[e,t=>n=>{e.set(t,n)}]}var Q=0,Vt=N({name:`Slider`,props:Object.assign(Object.assign({},re.props),{to:pe.propTo,defaultValue:{type:[Number,Array],default:0},marks:Object,disabled:{type:Boolean,default:void 0},formatTooltip:Function,keyboard:{type:Boolean,default:!0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,String],default:1},range:Boolean,value:[Number,Array],placement:String,showTooltip:{type:Boolean,default:void 0},tooltip:{type:Boolean,default:!0},vertical:Boolean,reverse:Boolean,"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onDragstart:[Function],onDragend:[Function]}),slots:Object,setup(e){let{mergedClsPrefixRef:t,namespaceRef:i,inlineThemeDisabled:a}=v(e),o=re(`Slider`,`-slider`,Rt,kt,e,t),s=B(null),[c,l]=Bt(),[u,d]=Bt(),f=B(new Set),p=Me(e),{mergedDisabledRef:h}=p,_=z(()=>{let{step:t}=e;if(Number(t)<=0||t===`mark`)return 0;let n=t.toString(),r=0;return n.includes(`.`)&&(r=n.length-n.indexOf(`.`)-1),r}),y=B(e.defaultValue),b=Ce(r(e,`value`),y),x=z(()=>{let{value:t}=b;return(e.range?t:[t]).map(se)}),S=z(()=>x.value.length>2),C=z(()=>e.placement===void 0?e.vertical?`right`:`top`:e.placement),w=z(()=>{let{marks:t}=e;return t?Object.keys(t).map(Number.parseFloat):null}),E=B(-1),D=B(-1),O=B(-1),k=B(!1),A=B(!1),j=z(()=>{let{vertical:t,reverse:n}=e;return t?n?`top`:`bottom`:n?`right`:`left`}),ee=z(()=>{if(S.value)return;let t=x.value,n=L(e.range?Math.min(...t):e.min),r=L(e.range?Math.max(...t):t[0]),{value:i}=j;return e.vertical?{[i]:`${n}%`,height:`${r-n}%`}:{[i]:`${n}%`,width:`${r-n}%`}}),M=z(()=>{let t=[],{marks:n}=e;if(n){let r=x.value.slice();r.sort((e,t)=>e-t);let{value:i}=j,{value:a}=S,{range:o}=e,s=a?()=>!1:e=>o?e>=r[0]&&e<=r[r.length-1]:e<=r[0];for(let e of Object.keys(n)){let r=Number(e);t.push({active:s(r),key:r,label:n[e],style:{[i]:`${L(r)}%`}})}}return t});function N(e,t){let n=L(e),{value:r}=j;return{[r]:`${n}%`,zIndex:+(t===E.value)}}function P(t){return e.showTooltip||O.value===t||E.value===t&&k.value}function te(e){return k.value?!(E.value===e&&D.value===e):!0}function ne(e){var t;~e&&(E.value=e,(t=c.get(e))==null||t.focus())}function F(){u.forEach((e,t)=>{P(t)&&e.syncPosition()})}function I(t){let{"onUpdate:value":n,onUpdateValue:r}=e,{nTriggerFormInput:i,nTriggerFormChange:a}=p;r&&K(r,t),n&&K(n,t),y.value=t,i(),a()}function ie(t){let{range:n}=e;if(n){if(Array.isArray(t)){let{value:e}=x;t.join()!==e.join()&&I(t)}}else Array.isArray(t)||x.value[0]!==t&&I(t)}function ae(t,n){if(e.range){let e=x.value.slice();e.splice(n,1,t),ie(e)}else ie(t)}function oe(t,n,r){let i=r!==void 0;r||=t-n>0?1:-1;let a=w.value||[],{step:o}=e;if(o===`mark`){let e=ue(t,a.concat(n),i?r:void 0);return e?e.value:n}if(o<=0)return n;let{value:s}=_,c;if(i){let e=Number((n/o).toFixed(s)),t=Math.floor(e),i=e>t?t:t-1,l=e<t?t:t+1;c=ue(n,[Number((i*o).toFixed(s)),Number((l*o).toFixed(s)),...a],r)}else{let e=le(t);c=ue(t,[...a,e])}return c?se(c.value):n}function se(t){return Math.min(e.max,Math.max(e.min,t))}function L(t){let{max:n,min:r}=e;return(t-r)/(n-r)*100}function ce(t){let{max:n,min:r}=e;return r+(n-r)*t}function le(t){let{step:n,min:r}=e;if(Number(n)<=0||n===`mark`)return t;let i=Math.round((t-r)/n)*n+r;return Number(i.toFixed(_.value))}function ue(e,t=w.value,n){if(!t?.length)return null;let r=null,i=-1;for(;++i<t.length;){let a=t[i]-e,o=Math.abs(a);(n===void 0||a*n>0)&&(r===null||o<r.distance)&&(r={index:i,distance:o,value:t[i]})}return r}function R(t){let n=s.value;if(!n)return;let r=zt(t)?t.touches[0]:t,i=n.getBoundingClientRect(),a;return a=e.vertical?(i.bottom-r.clientY)/i.height:(r.clientX-i.left)/i.width,e.reverse&&(a=1-a),ce(a)}function de(t){if(h.value||!e.keyboard)return;let{vertical:n,reverse:r}=e;switch(t.key){case`ArrowUp`:t.preventDefault(),fe(n&&r?-1:1);break;case`ArrowRight`:t.preventDefault(),fe(!n&&r?-1:1);break;case`ArrowDown`:t.preventDefault(),fe(n&&r?1:-1);break;case`ArrowLeft`:t.preventDefault(),fe(!n&&r?1:-1);break}}function fe(t){let n=E.value;if(n===-1)return;let{step:r}=e,i=x.value[n];ae(oe(Number(r)<=0||r===`mark`?i:i+r*t,i,t>0?1:-1),n)}function me(t){if(h.value||!zt(t)&&t.button!==Q)return;let n=R(t);if(n===void 0)return;let r=x.value.slice(),i=e.range?ue(n,r)?.index??-1:0;i!==-1&&(t.preventDefault(),ne(i),he(),ae(oe(n,x.value[i]),i))}function he(){k.value||(k.value=!0,e.onDragstart&&K(e.onDragstart),ge(`touchend`,document,ve),ge(`mouseup`,document,ve),ge(`touchmove`,document,H),ge(`mousemove`,document,H))}function V(){k.value&&(k.value=!1,e.onDragend&&K(e.onDragend),_e(`touchend`,document,ve),_e(`mouseup`,document,ve),_e(`touchmove`,document,H),_e(`mousemove`,document,H))}function H(e){let{value:t}=E;if(!k.value||t===-1){V();return}let n=R(e);n!==void 0&&ae(oe(n,x.value[t]),t)}function ve(){V()}function ye(e){E.value=e,h.value||(O.value=e)}function be(e){E.value===e&&(E.value=-1,V()),O.value===e&&(O.value=-1)}function xe(e){O.value=e}function U(e){O.value===e&&(O.value=-1)}T(E,(e,t)=>void n(()=>D.value=t)),T(b,()=>{if(e.marks){if(A.value)return;A.value=!0,n(()=>{A.value=!1})}n(F)}),g(()=>{V()});let Se=z(()=>{let{self:{markFontSize:e,railColor:t,railColorHover:n,fillColor:r,fillColorHover:i,handleColor:a,opacityDisabled:s,dotColor:c,dotColorModal:l,handleBoxShadow:u,handleBoxShadowHover:d,handleBoxShadowActive:f,handleBoxShadowFocus:p,dotBorder:m,dotBoxShadow:h,railHeight:g,railWidthVertical:_,handleSize:v,dotHeight:y,dotWidth:b,dotBorderRadius:x,fontSize:S,dotBorderActive:C,dotColorPopover:w},common:{cubicBezierEaseInOut:T}}=o.value;return{"--n-bezier":T,"--n-dot-border":m,"--n-dot-border-active":C,"--n-dot-border-radius":x,"--n-dot-box-shadow":h,"--n-dot-color":c,"--n-dot-color-modal":l,"--n-dot-color-popover":w,"--n-dot-height":y,"--n-dot-width":b,"--n-fill-color":r,"--n-fill-color-hover":i,"--n-font-size":S,"--n-handle-box-shadow":u,"--n-handle-box-shadow-active":f,"--n-handle-box-shadow-focus":p,"--n-handle-box-shadow-hover":d,"--n-handle-color":a,"--n-handle-size":v,"--n-opacity-disabled":s,"--n-rail-color":t,"--n-rail-color-hover":n,"--n-rail-height":g,"--n-rail-width-vertical":_,"--n-mark-font-size":e}}),we=a?m(`slider`,void 0,Se,e):void 0,W=z(()=>{let{self:{fontSize:e,indicatorColor:t,indicatorBoxShadow:n,indicatorTextColor:r,indicatorBorderRadius:i}}=o.value;return{"--n-font-size":e,"--n-indicator-border-radius":i,"--n-indicator-box-shadow":n,"--n-indicator-color":t,"--n-indicator-text-color":r}}),Te=a?m(`slider-indicator`,void 0,W,e):void 0;return{mergedClsPrefix:t,namespace:i,uncontrolledValue:y,mergedValue:b,mergedDisabled:h,mergedPlacement:C,isMounted:Qe(),adjustedTo:pe(e),dotTransitionDisabled:A,markInfos:M,isShowTooltip:P,shouldKeepTooltipTransition:te,handleRailRef:s,setHandleRefs:l,setFollowerRefs:d,fillStyle:ee,getHandleStyle:N,activeIndex:E,arrifiedValues:x,followerEnabledIndexSet:f,handleRailMouseDown:me,handleHandleFocus:ye,handleHandleBlur:be,handleHandleMouseEnter:xe,handleHandleMouseLeave:U,handleRailKeyDown:de,indicatorCssVars:a?void 0:W,indicatorThemeClass:Te?.themeClass,indicatorOnRender:Te?.onRender,cssVars:a?void 0:Se,themeClass:we?.themeClass,onRender:we?.onRender}},render(){var e;let{mergedClsPrefix:t,themeClass:n,formatTooltip:r}=this;return(e=this.onRender)==null||e.call(this),c(`div`,{class:[`${t}-slider`,n,{[`${t}-slider--disabled`]:this.mergedDisabled,[`${t}-slider--active`]:this.activeIndex!==-1,[`${t}-slider--with-mark`]:this.marks,[`${t}-slider--vertical`]:this.vertical,[`${t}-slider--reverse`]:this.reverse}],style:this.cssVars,onKeydown:this.handleRailKeyDown,onMousedown:this.handleRailMouseDown,onTouchstart:this.handleRailMouseDown},c(`div`,{class:`${t}-slider-rail`},c(`div`,{class:`${t}-slider-rail__fill`,style:this.fillStyle}),this.marks?c(`div`,{class:[`${t}-slider-dots`,this.dotTransitionDisabled&&`${t}-slider-dots--transition-disabled`]},this.markInfos.map(e=>c(`div`,{key:e.key,class:[`${t}-slider-dot`,{[`${t}-slider-dot--active`]:e.active}],style:e.style}))):null,c(`div`,{ref:`handleRailRef`,class:`${t}-slider-handles`},this.arrifiedValues.map((e,n)=>{let i=this.isShowTooltip(n);return c(de,null,{default:()=>[c(fe,null,{default:()=>c(`div`,{ref:this.setHandleRefs(n),class:`${t}-slider-handle-wrapper`,tabindex:this.mergedDisabled?-1:0,role:`slider`,"aria-valuenow":e,"aria-valuemin":this.min,"aria-valuemax":this.max,"aria-orientation":this.vertical?`vertical`:`horizontal`,"aria-disabled":this.disabled,style:this.getHandleStyle(e,n),onFocus:()=>{this.handleHandleFocus(n)},onBlur:()=>{this.handleHandleBlur(n)},onMouseenter:()=>{this.handleHandleMouseEnter(n)},onMouseleave:()=>{this.handleHandleMouseLeave(n)}},Oe(this.$slots.thumb,()=>[c(`div`,{class:`${t}-slider-handle`})]))}),this.tooltip&&c(me,{ref:this.setFollowerRefs(n),show:i,to:this.adjustedTo,enabled:this.showTooltip&&!this.range||this.followerEnabledIndexSet.has(n),teleportDisabled:this.adjustedTo===pe.tdkey,placement:this.mergedPlacement,containerClass:this.namespace},{default:()=>c(et,{name:`fade-in-scale-up-transition`,appear:this.isMounted,css:this.shouldKeepTooltipTransition(n),onEnter:()=>{this.followerEnabledIndexSet.add(n)},onAfterLeave:()=>{this.followerEnabledIndexSet.delete(n)}},{default:()=>{var n;return i?((n=this.indicatorOnRender)==null||n.call(this),c(`div`,{class:[`${t}-slider-handle-indicator`,this.indicatorThemeClass,`${t}-slider-handle-indicator--${this.mergedPlacement}`],style:this.indicatorCssVars},typeof r==`function`?r(e):e)):null}})})]})})),this.marks?c(`div`,{class:`${t}-slider-marks`},this.markInfos.map(e=>c(`div`,{key:e.key,class:`${t}-slider-mark`,style:e.style},typeof e.label==`function`?e.label():e.label))):null))}}),Ht=F([L(`table`,`
|
||
font-size: var(--n-font-size);
|
||
font-variant-numeric: tabular-nums;
|
||
line-height: var(--n-line-height);
|
||
width: 100%;
|
||
border-radius: var(--n-border-radius) var(--n-border-radius) 0 0;
|
||
text-align: left;
|
||
border-collapse: separate;
|
||
border-spacing: 0;
|
||
overflow: hidden;
|
||
background-color: var(--n-td-color);
|
||
border-color: var(--n-merged-border-color);
|
||
transition:
|
||
background-color .3s var(--n-bezier),
|
||
border-color .3s var(--n-bezier),
|
||
color .3s var(--n-bezier);
|
||
--n-merged-border-color: var(--n-border-color);
|
||
`,[F(`th`,`
|
||
white-space: nowrap;
|
||
transition:
|
||
background-color .3s var(--n-bezier),
|
||
border-color .3s var(--n-bezier),
|
||
color .3s var(--n-bezier);
|
||
text-align: inherit;
|
||
padding: var(--n-th-padding);
|
||
vertical-align: inherit;
|
||
text-transform: none;
|
||
border: 0px solid var(--n-merged-border-color);
|
||
font-weight: var(--n-th-font-weight);
|
||
color: var(--n-th-text-color);
|
||
background-color: var(--n-th-color);
|
||
border-bottom: 1px solid var(--n-merged-border-color);
|
||
border-right: 1px solid var(--n-merged-border-color);
|
||
`,[F(`&:last-child`,`
|
||
border-right: 0px solid var(--n-merged-border-color);
|
||
`)]),F(`td`,`
|
||
transition:
|
||
background-color .3s var(--n-bezier),
|
||
border-color .3s var(--n-bezier),
|
||
color .3s var(--n-bezier);
|
||
padding: var(--n-td-padding);
|
||
color: var(--n-td-text-color);
|
||
background-color: var(--n-td-color);
|
||
border: 0px solid var(--n-merged-border-color);
|
||
border-right: 1px solid var(--n-merged-border-color);
|
||
border-bottom: 1px solid var(--n-merged-border-color);
|
||
`,[F(`&:last-child`,`
|
||
border-right: 0px solid var(--n-merged-border-color);
|
||
`)]),I(`bordered`,`
|
||
border: 1px solid var(--n-merged-border-color);
|
||
border-radius: var(--n-border-radius);
|
||
`,[F(`tr`,[F(`&:last-child`,[F(`td`,`
|
||
border-bottom: 0 solid var(--n-merged-border-color);
|
||
`)])])]),I(`single-line`,[F(`th`,`
|
||
border-right: 0px solid var(--n-merged-border-color);
|
||
`),F(`td`,`
|
||
border-right: 0px solid var(--n-merged-border-color);
|
||
`)]),I(`single-column`,[F(`tr`,[F(`&:not(:last-child)`,[F(`td`,`
|
||
border-bottom: 0px solid var(--n-merged-border-color);
|
||
`)])])]),I(`striped`,[F(`tr:nth-of-type(even)`,[F(`td`,`background-color: var(--n-td-color-striped)`)])]),ce(`bottom-bordered`,[F(`tr`,[F(`&:last-child`,[F(`td`,`
|
||
border-bottom: 0px solid var(--n-merged-border-color);
|
||
`)])])])]),ne(L(`table`,`
|
||
background-color: var(--n-td-color-modal);
|
||
--n-merged-border-color: var(--n-border-color-modal);
|
||
`,[F(`th`,`
|
||
background-color: var(--n-th-color-modal);
|
||
`),F(`td`,`
|
||
background-color: var(--n-td-color-modal);
|
||
`)])),ue(L(`table`,`
|
||
background-color: var(--n-td-color-popover);
|
||
--n-merged-border-color: var(--n-border-color-popover);
|
||
`,[F(`th`,`
|
||
background-color: var(--n-th-color-popover);
|
||
`),F(`td`,`
|
||
background-color: var(--n-td-color-popover);
|
||
`)]))]),Ut=N({name:`Table`,props:Object.assign(Object.assign({},re.props),{bordered:{type:Boolean,default:!0},bottomBordered:{type:Boolean,default:!0},singleLine:{type:Boolean,default:!0},striped:Boolean,singleColumn:Boolean,size:String}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n,mergedRtlRef:r,mergedComponentPropsRef:i}=v(e),a=z(()=>e.size||i?.value?.Table?.size||`medium`),o=re(`Table`,`-table`,Ht,ot,e,t),s=w(`Table`,r,t),c=z(()=>{let e=a.value,{self:{borderColor:t,tdColor:n,tdColorModal:r,tdColorPopover:i,thColor:s,thColorModal:c,thColorPopover:l,thTextColor:u,tdTextColor:d,borderRadius:f,thFontWeight:p,lineHeight:m,borderColorModal:h,borderColorPopover:g,tdColorStriped:_,tdColorStripedModal:v,tdColorStripedPopover:y,[O(`fontSize`,e)]:b,[O(`tdPadding`,e)]:x,[O(`thPadding`,e)]:S},common:{cubicBezierEaseInOut:C}}=o.value;return{"--n-bezier":C,"--n-td-color":n,"--n-td-color-modal":r,"--n-td-color-popover":i,"--n-td-text-color":d,"--n-border-color":t,"--n-border-color-modal":h,"--n-border-color-popover":g,"--n-border-radius":f,"--n-font-size":b,"--n-th-color":s,"--n-th-color-modal":c,"--n-th-color-popover":l,"--n-th-font-weight":p,"--n-th-text-color":u,"--n-line-height":m,"--n-td-padding":x,"--n-th-padding":S,"--n-td-color-striped":_,"--n-td-color-striped-modal":v,"--n-td-color-striped-popover":y}}),l=n?m(`table`,z(()=>a.value[0]),c,e):void 0;return{rtlEnabled:s,mergedClsPrefix:t,cssVars:n?void 0:c,themeClass:l?.themeClass,onRender:l?.onRender}},render(){var e;let{mergedClsPrefix:t}=this;return(e=this.onRender)==null||e.call(this),c(`table`,{class:[`${t}-table`,this.themeClass,{[`${t}-table--rtl`]:this.rtlEnabled,[`${t}-table--bottom-bordered`]:this.bottomBordered,[`${t}-table--bordered`]:this.bordered,[`${t}-table--single-line`]:this.singleLine,[`${t}-table--single-column`]:this.singleColumn,[`${t}-table--striped`]:this.striped}],style:this.cssVars},this.$slots)}}),Wt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Gt=N({name:`Edit`,render:function(e,t){return S(),p(`svg`,Wt,t[0]||=[d(`path`,{d:`M2 26h28v2H2z`,fill:`currentColor`},null,-1),d(`path`,{d:`M25.4 9c.8-.8.8-2 0-2.8l-3.6-3.6c-.8-.8-2-.8-2.8 0l-15 15V24h6.4l15-15zm-5-5L24 7.6l-3 3L17.4 7l3-3zM6 22v-3.6l10-10l3.6 3.6l-10 10H6z`,fill:`currentColor`},null,-1)])}}),Kt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},qt=N({name:`Flag`,render:function(e,t){return S(),p(`svg`,Kt,t[0]||=[d(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,fill:`currentColor`},null,-1)])}}),Jt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Yt=N({name:`Pause`,render:function(e,t){return S(),p(`svg`,Jt,t[0]||=[d(`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),d(`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)])}}),Xt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},Zt=N({name:`Play`,render:function(e,t){return S(),p(`svg`,Xt,t[0]||=[d(`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)])}}),Qt={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},$t=N({name:`Repeat`,render:function(e,t){return S(),p(`svg`,Qt,t[0]||=[d(`path`,{d:`M6 6h20.172l-3.586-3.586L24 1l6 6l-6 6l-1.414-1.414L26.172 8H6v7H4V8a2.002 2.002 0 0 1 2-2z`,fill:`currentColor`},null,-1),d(`path`,{d:`M9.414 20.414L5.828 24H26v-7h2v7a2.002 2.002 0 0 1-2 2H5.828l3.586 3.586L8 31l-6-6l6-6z`,fill:`currentColor`},null,-1)])}}),en={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},tn=N({name:`Reset`,render:function(e,t){return S(),p(`svg`,en,t[0]||=[d(`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)])}}),nn={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},rn=N({name:`Stop`,render:function(e,t){return S(),p(`svg`,nn,t[0]||=[d(`path`,{d:`M24 8v16H8V8h16m0-2H8a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2z`,fill:`currentColor`},null,-1)])}}),an={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},on=N({name:`Trophy`,render:function(e,t){return S(),p(`svg`,an,t[0]||=[d(`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)])}}),sn=`/assets/icq-uh-oh-DjThHNEb.wav`,$=q(N({__name:`UiBlock`,props:{tag:{default:`div`}},setup(e){return(t,n)=>(S(),i(A(e.tag),{class:`ui-block`},{default:D(()=>[l(t.$slots,`default`,{},void 0,!0)]),_:3}))}}),[[`__scopeId`,`data-v-80193f22`]]),cn=[`onPointerdown`],ln=[`onPointerdown`],un={key:2},dn=[`onClick`],fn=20,pn=q(N({__name:`GameMapPanel`,props:{mapItems:{},teams:{}},emits:[`saveItem`,`dragging`,`giveApplication`],setup(e,{emit:n}){let r=e,o=n,s=B(1),c=B({x:0,y:0}),l=B(),u=z(()=>new Map(r.teams.filter(e=>e.applications?.length).map(e=>[e.ID,e]))),m,v;function y(e){let t=l.value;if(!t)return;let n=t.getBoundingClientRect();return{x:(e.clientX-n.left-t.clientLeft-c.value.x)/s.value,y:(e.clientY-n.top-t.clientTop-c.value.y)/s.value}}function b(e,t){let n=y(t);n&&(m={item:e,offsetX:n.x-(e.x||0),offsetY:n.y-(e.y||0)},o(`dragging`,!0),window.addEventListener(`pointermove`,x),window.addEventListener(`pointerup`,w,{once:!0}),window.addEventListener(`pointercancel`,w,{once:!0}))}function x(e){if(!m)return;let t=y(e);t&&(m.item.x=Math.round((t.x-m.offsetX)/fn)*fn,m.item.y=Math.round((t.y-m.offsetY)/fn)*fn)}function w(){if(!m)return;let e=m.item;m=void 0,window.removeEventListener(`pointermove`,x),window.removeEventListener(`pointerup`,w),window.removeEventListener(`pointercancel`,w),o(`dragging`,!1),o(`saveItem`,e)}function T(e){e.hidden=!e.hidden,o(`saveItem`,e,e.hidden)}function E(e){s.value=Math.min(2,Math.max(.5,Number((s.value+e).toFixed(2))))}function O(){s.value=1,c.value={x:0,y:0}}function k(e){e.button===0&&(v={startX:e.clientX,startY:e.clientY,offsetX:c.value.x,offsetY:c.value.y},window.addEventListener(`pointermove`,A),window.addEventListener(`pointerup`,j,{once:!0}))}function A(e){v&&(c.value={x:v.offsetX+e.clientX-v.startX,y:v.offsetY+e.clientY-v.startY})}function j(){v=void 0,window.removeEventListener(`pointermove`,A)}function ee(e){e.preventDefault(),E(e.deltaY<0?.1:-.1)}return g(()=>{m&&o(`dragging`,!1),window.removeEventListener(`pointermove`,x),window.removeEventListener(`pointerup`,w),window.removeEventListener(`pointercancel`,w),window.removeEventListener(`pointermove`,A),window.removeEventListener(`pointerup`,j)}),(n,r)=>(S(),i($,null,{default:D(()=>[t(f(Y),{align:`center`,justify:`space-between`,class:`screen-header`},{default:D(()=>[r[6]||=d(`p`,{class:`screens-title`},`Карта помещения`,-1),t(f(J),null,{default:D(()=>[t(f(W),{size:`small`,onClick:r[0]||=e=>E(-.1)},{default:D(()=>[...r[3]||=[P(`−`,-1)]]),_:1}),t(f(Ue),null,{default:D(()=>[P(h(Math.round(s.value*100))+`%`,1)]),_:1}),t(f(W),{size:`small`,onClick:r[1]||=e=>E(.1)},{default:D(()=>[...r[4]||=[P(`+`,-1)]]),_:1}),t(f(W),{size:`small`,onClick:O},{default:D(()=>[...r[5]||=[P(`Сбросить`,-1)]]),_:1})]),_:1})]),_:1}),d(`div`,{ref_key:`mapField`,ref:l,class:`map-field`,onPointerdown:k,onWheel:ee},[d(`div`,{class:`map-canvas`,style:a({transform:`translate(${c.value.x}px, ${c.value.y}px) scale(${s.value})`})},[(S(!0),p(M,null,C(e.mapItems,e=>te((S(),p(`div`,{key:`${e.kind}-${e.itemID}`,class:_([`map-item`,[e.kind===`screen`?`map-screen`:e.kind===`organizer_desk`?`map-organizer-desk`:`map-team`,{"map-team-needs-applications":e.kind===`team`&&u.value.has(e.itemID)}]]),style:a({left:`${e.x||0}px`,top:`${e.y||0}px`}),onPointerdown:X(t=>e.kind!==`team`&&b(e,t),[`stop`])},[e.kind===`team`?(S(),p(`div`,{key:0,class:`map-team-handle`,onPointerdown:X(t=>b(e,t),[`stop`])},null,40,ln)):R(``,!0),d(`span`,null,h(e.label),1),e.kind===`team`&&u.value.has(e.itemID)?(S(),i(f(J),{key:1,class:`map-team-applications`,vertical:``},{default:D(()=>[(S(!0),p(M,null,C(u.value.get(e.itemID)?.applications,t=>(S(),i(f(W),{key:t.name,size:`small`,onClick:n=>o(`giveApplication`,u.value.get(e.itemID),t)},{default:D(()=>[P(` Выдать: `+h(t.name),1)]),_:2},1032,[`onClick`]))),128))]),_:2},1024)):R(``,!0),e.kind===`screen`?(S(),p(`small`,un,h(e.status)+h(e.soundEnabled?` · звук`:``),1)):R(``,!0),d(`button`,{class:`map-item-hide`,type:`button`,onPointerdown:r[2]||=X(()=>{},[`stop`]),onClick:X(t=>T(e),[`stop`])},` × `,40,dn)],46,cn)),[[Xe,!e.hidden]])),128))],4)],544),e.mapItems.some(e=>e.hidden)?(S(),i(f(J),{key:0,class:`map-hidden-items`},{default:D(()=>[(S(!0),p(M,null,C(e.mapItems.filter(e=>e.hidden),e=>(S(),i(f(W),{key:`hidden-${e.kind}-${e.itemID}`,size:`small`,onClick:t=>T(e)},{default:D(()=>[P(` Добавить `+h(e.label),1)]),_:2},1032,[`onClick`]))),128))]),_:1})):R(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-5e2f9943`]]),mn={class:`playlist-picker`},hn={key:0,role:`status`},gn={class:`music-volume`},_n={key:1},vn={key:2},yn=[`aria-label`],bn={key:0},xn={key:1},Sn=[`aria-current`],Cn=q(N({__name:`GameMusicPlanPanel`,props:{playlists:{},music:{},isBusy:{type:Boolean}},emits:[`setMusic`,`saveGroup`,`deleteGroup`,`reorderGroups`,`setTrackGroup`,`createPlaylist`,`renamePlaylist`,`reorderTracks`,`deletePlaylist`,`uploadTrack`,`deleteTrack`],setup(e,{emit:n}){let r=e,a=n,o=B(!1),s=B(),c=B(r.music?.volume??100),l=z(()=>r.playlists.map(e=>({label:e.name,value:e.ID})));function u(){s.value?.confirmDiscard()&&(o.value=!1)}let m=z(()=>[...(r.music?.playlist?.groups??[]).map(e=>({...e,ID:e.ID??0,endMode:e.endMode??`PLAYLIST_GROUP_END_MODE_REPEAT`})),{ID:0,name:`Без группы`,endMode:void 0,position:void 0}]);function g(e){return(r.music?.playlist?.tracks??[]).map((e,t)=>({track:e,index:t})).filter(({track:t})=>(t.groupId??0)===e)}function v(e){let t=r.music?.playlist?.tracks?.findIndex(t=>t.groupId===e)??-1;t<0||a(`setMusic`,{groupId:e,trackIndex:t,positionMs:0,playback:`MUSIC_PLAYBACK_PLAYING`})}function y(e){return e===`PLAYLIST_GROUP_END_MODE_STOP`?`После группы — тишина`:e===`PLAYLIST_GROUP_END_MODE_NEXT`?`После группы — следующая`:`Повтор группы`}let b=z(()=>!!r.music?.playlist?.tracks?.length&&!r.isBusy),x=z(()=>r.music?.playback===`MUSIC_PLAYBACK_PLAYING`),w=z(()=>x.value?`Пауза`:r.music?.playback===`MUSIC_PLAYBACK_PAUSED`?`Продолжить`:`Старт`),E=z(()=>r.music?.playlist?.tracks?.[r.music.trackIndex??0]);function O(e,t){e===(r.music?.trackIndex??0)&&t===(r.music?.groupId??0)||a(`setMusic`,{trackIndex:e,groupId:t,positionMs:0})}return T(()=>r.music?.volume,e=>{c.value=e??100}),(n,r)=>(S(),i($,{class:`music-panel`,"data-testid":`music-plan`},{default:D(()=>[t(f(J),{justify:`space-between`,align:`center`},{default:D(()=>[r[22]||=d(`h3`,null,`План музыки`,-1),o.value?(S(),i(f(W),{key:1,size:`small`,disabled:e.isBusy,onClick:u},{default:D(()=>[...r[21]||=[P(`Готово`,-1)]]),_:1},8,[`disabled`])):(S(),i(f(W),{key:0,size:`small`,square:``,"aria-label":`Редактировать музыку`,title:`Редактировать музыку`,disabled:e.isBusy,onClick:r[0]||=e=>o.value=!0},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f(Gt))]),_:1})]),_:1},8,[`disabled`]))]),_:1}),o.value?(S(),i(ze,{key:0,ref_key:`editor`,ref:s,playlists:e.playlists,music:e.music,"is-busy":e.isBusy,onSetMusic:r[1]||=e=>a(`setMusic`,e),onSaveGroup:r[2]||=(e,t,n,r)=>a(`saveGroup`,e,t,n,r),onDeleteGroup:r[3]||=(e,t)=>a(`deleteGroup`,e,t),onReorderGroups:r[4]||=(e,t)=>a(`reorderGroups`,e,t),onSetTrackGroup:r[5]||=(e,t,n)=>a(`setTrackGroup`,e,t,n),onCreatePlaylist:r[6]||=e=>a(`createPlaylist`,e),onRenamePlaylist:r[7]||=(e,t)=>a(`renamePlaylist`,e,t),onReorderTracks:r[8]||=(e,t)=>a(`reorderTracks`,e,t),onDeletePlaylist:r[9]||=e=>a(`deletePlaylist`,e),onUploadTrack:r[10]||=(e,t,n)=>a(`uploadTrack`,e,t,n),onDeleteTrack:r[11]||=(e,t)=>a(`deleteTrack`,e,t)},null,8,[`playlists`,`music`,`is-busy`])):(S(),i(f(J),{key:1,vertical:``,class:`music-content`},{default:D(()=>[d(`div`,mn,[t(f(De),{value:e.music?.playlist?.ID,options:l.value,clearable:``,placeholder:`Выберите плейлист`,disabled:e.isBusy,"input-props":{"aria-label":`Музыка игры`},"onUpdate:value":r[12]||=e=>a(`setMusic`,{playlistID:e??0,trackIndex:0,positionMs:0,playback:`MUSIC_PLAYBACK_STOPPED`})},null,8,[`value`,`options`,`disabled`]),e.music?.groupId?R(``,!0):(S(),i(f(W),{key:0,square:``,type:e.music?.loop?`primary`:`default`,"aria-pressed":e.music?.loop??!1,"aria-label":`Повторять плейлист`,title:`Повторять плейлист`,disabled:e.isBusy,onClick:r[13]||=t=>a(`setMusic`,{loop:!e.music?.loop})},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f($t))]),_:1})]),_:1},8,[`type`,`aria-pressed`,`disabled`]))]),E.value?(S(),p(`p`,hn,h(E.value.name)+` · `+h(x.value?`Играет`:e.music?.playback===`MUSIC_PLAYBACK_PAUSED`?`Пауза`:`Остановлено`),1)):R(``,!0),t(f(J),{align:`center`},{default:D(()=>[t(f(W),{square:``,"aria-label":w.value,title:w.value,disabled:!b.value,onClick:r[14]||=e=>a(`setMusic`,{playback:x.value?`MUSIC_PLAYBACK_PAUSED`:`MUSIC_PLAYBACK_PLAYING`})},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[x.value?(S(),i(f(Yt),{key:0})):(S(),i(f(Zt),{key:1}))]),_:1})]),_:1},8,[`aria-label`,`title`,`disabled`]),t(f(W),{square:``,"aria-label":`Стоп`,title:`Стоп`,disabled:!b.value,onClick:r[15]||=e=>a(`setMusic`,{playback:`MUSIC_PLAYBACK_STOPPED`,positionMs:0})},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f(rn))]),_:1})]),_:1},8,[`disabled`]),t(f(W),{square:``,"aria-label":`Сначала`,title:`Сначала`,disabled:!b.value,onClick:r[16]||=e=>a(`setMusic`,{playback:`MUSIC_PLAYBACK_PLAYING`,positionMs:0})},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f(tn))]),_:1})]),_:1},8,[`disabled`]),d(`div`,gn,[r[23]||=d(`span`,{id:`music-volume-label`},`Громкость`,-1),t(f(Vt),{value:c.value,min:0,max:100,disabled:e.isBusy||!e.music?.playlist,"aria-labelledby":`music-volume-label`,"format-tooltip":e=>`${e}%`,"onUpdate:value":r[17]||=e=>c.value=e,onDragend:r[18]||=e=>a(`setMusic`,{volume:c.value}),onKeyup:r[19]||=e=>a(`setMusic`,{volume:c.value})},null,8,[`value`,`disabled`,`format-tooltip`])])]),_:1}),e.music?.playlist?e.music.playlist.tracks?.length?R(``,!0):(S(),p(`p`,vn,`В плейлисте пока нет треков.`)):(S(),p(`p`,_n,`Выберите плейлист для игры.`)),e.music?.groupId?(S(),i(f(W),{key:3,size:`small`,disabled:!b.value,onClick:r[20]||=e=>a(`setMusic`,{groupId:0,trackIndex:0,positionMs:0,playback:`MUSIC_PLAYBACK_PLAYING`})},{default:D(()=>[...r[24]||=[P(`Играть весь плейлист`,-1)]]),_:1},8,[`disabled`])):R(``,!0),(S(!0),p(M,null,C(m.value,n=>(S(),p(`section`,{key:n.ID,class:`music-group`,"aria-label":n.name},[t(f(J),{align:`center`,justify:`space-between`},{default:D(()=>[d(`h4`,null,h(n.name)+h(n.ID&&n.ID===e.music?.groupId?` · Выбрана`:``),1),n.ID?(S(),i(f(W),{key:0,size:`small`,disabled:e.isBusy||!g(n.ID).length,onClick:e=>v(n.ID)},{default:D(()=>[...r[25]||=[P(`Играть группу`,-1)]]),_:1},8,[`disabled`,`onClick`])):R(``,!0)]),_:2},1024),n.ID?(S(),p(`p`,bn,h(y(n.endMode)),1)):R(``,!0),g(n.ID).length?R(``,!0):(S(),p(`p`,xn,`Треков пока нет.`)),(S(!0),p(M,null,C(g(n.ID),({track:r,index:i},a)=>(S(),p(`div`,{key:r.ID,class:_([`track-row`,{"track-current":i===(e.music?.trackIndex??0)}]),"aria-current":i===(e.music?.trackIndex??0)?`true`:void 0},[d(`span`,null,h(a+1)+`. `+h(r.name),1),t(f(W),{size:`small`,disabled:e.isBusy||i===(e.music?.trackIndex??0)&&n.ID===(e.music?.groupId??0),onClick:e=>O(i,n.ID)},{default:D(()=>[P(h(i===(e.music?.trackIndex??0)&&n.ID===(e.music?.groupId??0)?`Выбран`:`Выбрать`),1)]),_:2},1032,[`disabled`,`onClick`])],10,Sn))),128))],8,yn))),128))]),_:1}))]),_:1}))}}),[[`__scopeId`,`data-v-f15e707a`]]),wn={key:0},Tn={class:`plan-steps`},En=[`aria-current`],Dn={class:`step-preview`,"aria-hidden":`true`},On={class:`step-content`},kn=[`for`],An=[`for`],jn=[`for`],Mn=[`for`],Nn={class:`step-heading`},Pn=[`id`],Fn=q(N({__name:`GameScreenPlanPanel`,props:{screens:{},previewQuestions:{},previewTeams:{},teamNames:{},screenPlan:{},screenPlanDraft:{},screenPlanSaving:{type:Boolean},screenPlanMode:{},screenVolume:{},isBusy:{type:Boolean}},emits:[`addStep`,`edit`,`cancel`,`removeStep`,`moveStep`,`dirty`,`clearPlan`,`save`,`setStep`,`command`,`update:screenVolume`],setup(e,{emit:n}){let r=e,a=n,o=z(()=>r.screens.find(e=>e.status===`connected`)||r.screens[0]),s=z(()=>o.value?.mode===`SCREEN_MODE_INTRO`?!!o.value.introAudio:!!o.value?.conclusionVideo),c=z(()=>r.screens.some(e=>e.status===`connected`)),l=z(()=>r.screenPlanSaving||r.isBusy),u=z(()=>r.screenPlanMode===`edit`?r.screenPlanDraft:r.screenPlan?.steps??[]),m=z(()=>o.value?.timerState===`SCREEN_TIMER_STATE_RUNNING`?{label:`Пауза`,command:`SCREEN_COMMAND_TIMER_PAUSE`,icon:Yt}:o.value?.timerState===`SCREEN_TIMER_STATE_PAUSED`?{label:`Продолжить`,command:`SCREEN_COMMAND_TIMER_RESUME`,icon:Zt}:{label:`Старт`,command:`SCREEN_COMMAND_TIMER_START`,icon:Zt}),g=[{label:`Запуск`,command:`SCREEN_COMMAND_PLAY`,icon:Zt},{label:`Пауза`,command:`SCREEN_COMMAND_PAUSE`,icon:Yt},{label:`Продолжить`,command:`SCREEN_COMMAND_RESUME`,icon:Zt},{label:`Стоп`,command:`SCREEN_COMMAND_STOP`,icon:rn},{label:`Сначала`,command:`SCREEN_COMMAND_REPLAY`,icon:tn}],v=[{label:`Обложка`,value:`SCREEN_MODE_COVER`},{label:`Введение`,value:`SCREEN_MODE_INTRO`},{label:`Закрывашка`,value:`SCREEN_MODE_CONCLUSION`},{label:`Результаты`,value:`SCREEN_MODE_RESULTS`},{label:`Таймер`,value:`SCREEN_MODE_TIMER`},{label:`Текст`,value:`SCREEN_MODE_TEXT`},{label:`QR-код`,value:`SCREEN_MODE_QR`},{label:`Список команд`,value:`SCREEN_MODE_TEAMS`}];function y(e,t){e.timerLabel=ft(e.timerLabel,e.timerType,t),e.timerType=t,a(`dirty`)}function b(e){return{...o.value,...e,timerState:`SCREEN_TIMER_STATE_STOPPED`,timerRemainingSeconds:e.timerDurationSeconds}}return(n,r)=>(S(),i($,{class:`screen-plan-panel`,"data-testid":`screen-plan`},{default:D(()=>[t(f(J),{align:`center`,justify:`space-between`},{default:D(()=>[r[15]||=d(`h3`,null,`План экранов`,-1),t(f(J),null,{default:D(()=>[e.screenPlanMode===`use`&&!e.screenPlan?(S(),i(f(W),{key:0,size:`small`,disabled:l.value,onClick:r[0]||=e=>a(`addStep`)},{default:D(()=>[...r[12]||=[P(`Создать план`,-1)]]),_:1},8,[`disabled`])):e.screenPlanMode===`use`?(S(),i(f(W),{key:1,size:`small`,square:``,"aria-label":`Редактировать план экранов`,title:`Редактировать план экранов`,disabled:l.value,onClick:r[1]||=e=>a(`edit`)},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f(Gt))]),_:1})]),_:1},8,[`disabled`])):(S(),p(M,{key:2},[t(f(W),{size:`small`,disabled:l.value,onClick:r[2]||=e=>a(`cancel`)},{default:D(()=>[...r[13]||=[P(`Отменить`,-1)]]),_:1},8,[`disabled`]),t(f(W),{size:`small`,type:`primary`,loading:e.screenPlanSaving,disabled:l.value,onClick:r[3]||=e=>a(`save`)},{default:D(()=>[...r[14]||=[P(`Сохранить план`,-1)]]),_:1},8,[`loading`,`disabled`])],64))]),_:1})]),_:1}),u.value.length?R(``,!0):(S(),p(`p`,wn,h(e.screenPlanMode===`edit`?`Добавьте шаги или сохраните пустой план для удаления.`:`План экранов ещё не создан.`),1)),d(`div`,Tn,[(S(!0),p(M,null,C(u.value,(n,o)=>(S(),p(`div`,{key:o,class:_([`plan-step`,{"plan-step-current":e.screenPlanMode===`use`&&e.screenPlan?.currentStep===o}]),"aria-current":e.screenPlanMode===`use`&&e.screenPlan?.currentStep===o?`step`:void 0},[d(`div`,Dn,[t(mt,{state:b(n),questions:e.previewQuestions,teams:e.previewTeams,"team-names":e.teamNames,"is-thumbnail":``},null,8,[`state`,`questions`,`teams`,`team-names`])]),d(`div`,On,[e.screenPlanMode===`edit`?(S(),p(M,{key:0},[t(f(J),{align:`center`},{default:D(()=>[d(`span`,null,h(o+1),1),t(f(W),{size:`small`,disabled:l.value||o===0,"aria-label":`Поднять шаг ${o+1}`,onClick:e=>a(`moveStep`,o,-1)},{default:D(()=>[...r[16]||=[P(`↑`,-1)]]),_:1},8,[`disabled`,`aria-label`,`onClick`]),t(f(W),{size:`small`,disabled:l.value||o===u.value.length-1,"aria-label":`Опустить шаг ${o+1}`,onClick:e=>a(`moveStep`,o,1)},{default:D(()=>[...r[17]||=[P(`↓`,-1)]]),_:1},8,[`disabled`,`aria-label`,`onClick`]),t(f(W),{size:`small`,type:`error`,ghost:``,disabled:l.value,onClick:e=>a(`removeStep`,o)},{default:D(()=>[...r[18]||=[P(`Удалить`,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024),t(f(De),{value:n.mode,"onUpdate:value":[e=>n.mode=e,r[4]||=e=>a(`dirty`)],options:v,disabled:l.value,"input-props":{"aria-label":`Режим шага ${o+1}`}},null,8,[`value`,`onUpdate:value`,`disabled`,`input-props`]),n.mode===`SCREEN_MODE_TEXT`||n.mode===`SCREEN_MODE_QR`?(S(),i(f(Pe),{key:0,value:n.text,"onUpdate:value":[e=>n.text=e,r[5]||=e=>a(`dirty`)],type:`textarea`,placeholder:`Текст экрана`,disabled:l.value,"input-props":{"aria-label":`Текст шага ${o+1}`}},null,8,[`value`,`onUpdate:value`,`disabled`,`input-props`])):R(``,!0),n.mode===`SCREEN_MODE_QR`?(S(),p(M,{key:1},[d(`label`,{for:`qr-link-${o}`},`Ссылка для QR-кода (обязательно)`,8,kn),t(f(Pe),{value:n.qrUrl,"onUpdate:value":[e=>n.qrUrl=e,r[6]||=e=>a(`dirty`)],disabled:l.value,"input-props":{id:`qr-link-${o}`},placeholder:`https://example.com`},null,8,[`value`,`onUpdate:value`,`disabled`,`input-props`])],64)):R(``,!0),n.mode===`SCREEN_MODE_TIMER`?(S(),p(M,{key:2},[d(`label`,{for:`timer-type-${o}`},`Тип таймера`,8,An),t(f(De),{value:n.timerType??`SCREEN_TIMER_TYPE_BREAK`,options:f(pt),disabled:l.value,"input-props":{id:`timer-type-${o}`},"onUpdate:value":e=>y(n,e)},null,8,[`value`,`options`,`disabled`,`input-props`,`onUpdate:value`]),d(`label`,{for:`timer-label-${o}`},`Надпись таймера`,8,jn),t(f(Pe),{value:n.timerLabel,"onUpdate:value":[e=>n.timerLabel=e,r[7]||=e=>a(`dirty`)],disabled:l.value,"input-props":{id:`timer-label-${o}`}},null,8,[`value`,`onUpdate:value`,`disabled`,`input-props`]),d(`label`,{for:`timer-duration-${o}`},`Длительность в секундах`,8,Mn),t(f(Lt),{value:n.timerDurationSeconds,"onUpdate:value":[e=>n.timerDurationSeconds=e,r[8]||=e=>a(`dirty`)],min:1,max:86400,disabled:l.value,"input-props":{id:`timer-duration-${o}`}},null,8,[`value`,`onUpdate:value`,`disabled`,`input-props`])],64)):R(``,!0)],64)):(S(),p(M,{key:1},[d(`div`,Nn,[d(`span`,null,[P(h(o+1)+`. `+h(v.find(e=>e.value===n.mode)?.label),1),n.mode===`SCREEN_MODE_TEXT`||n.mode===`SCREEN_MODE_QR`?(S(),p(M,{key:0},[P(`: `+h(n.text),1)],64)):R(``,!0),n.mode===`SCREEN_MODE_TIMER`?(S(),p(M,{key:1},[P(`: `+h(n.timerLabel)+` (`+h(n.timerDurationSeconds)+` с)`,1)],64)):R(``,!0)]),t(f(W),{size:`small`,disabled:l.value||e.screenPlan?.currentStep===o||!c.value,onClick:e=>a(`setStep`,o)},{default:D(()=>[P(h(e.screenPlan?.currentStep===o?`Показан`:`Показать`),1)]),_:2},1032,[`disabled`,`onClick`])]),e.screenPlan?.currentStep===o?(S(),p(M,{key:0},[n.mode===`SCREEN_MODE_TIMER`?(S(),i(f(J),{key:0},{default:D(()=>[t(f(W),{square:``,"aria-label":m.value.label,title:m.value.label,disabled:l.value||!c.value,onClick:e=>a(`command`,n.mode,m.value.command)},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[(S(),i(A(m.value.icon)))]),_:1})]),_:1},8,[`aria-label`,`title`,`disabled`,`onClick`]),t(f(W),{square:``,"aria-label":`Сбросить таймер`,title:`Сбросить таймер`,disabled:l.value||!c.value,onClick:e=>a(`command`,n.mode,`SCREEN_COMMAND_TIMER_RESET`)},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[t(f(tn))]),_:1})]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)):n.mode===`SCREEN_MODE_INTRO`||n.mode===`SCREEN_MODE_CONCLUSION`?(S(),p(M,{key:1},[t(f(J),null,{default:D(()=>[(S(),p(M,null,C(g,e=>t(f(W),{key:e.command,square:``,"aria-label":e.label,title:e.label,disabled:l.value||!c.value||!s.value,onClick:t=>a(`command`,n.mode,e.command)},{default:D(()=>[t(f(H),{size:18},{default:D(()=>[(S(),i(A(e.icon)))]),_:2},1024)]),_:2},1032,[`aria-label`,`title`,`disabled`,`onClick`])),64))]),_:2},1024),d(`label`,{id:`main-volume-${o}`},`Громкость`,8,Pn),t(f(Vt),{value:e.screenVolume,min:0,max:100,disabled:l.value||!c.value,"aria-labelledby":`main-volume-${o}`,"format-tooltip":e=>`${e}%`,"onUpdate:value":r[9]||=e=>a(`update:screenVolume`,e),onDragend:e=>a(`command`,n.mode,`SCREEN_COMMAND_VOLUME`),onKeyup:e=>a(`command`,n.mode,`SCREEN_COMMAND_VOLUME`)},null,8,[`value`,`disabled`,`aria-labelledby`,`format-tooltip`,`onDragend`,`onKeyup`])],64)):R(``,!0)],64)):R(``,!0)],64))])],10,En))),128))]),e.screenPlanMode===`edit`?(S(),i(f(J),{key:1},{default:D(()=>[t(f(W),{size:`small`,disabled:l.value,onClick:r[10]||=e=>a(`addStep`)},{default:D(()=>[...r[19]||=[P(`Добавить шаг`,-1)]]),_:1},8,[`disabled`]),t(f(W),{size:`small`,disabled:l.value||!u.value.length,onClick:r[11]||=e=>a(`clearPlan`)},{default:D(()=>[...r[20]||=[P(`Удалить план`,-1)]]),_:1},8,[`disabled`])]),_:1})):R(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-6e25da79`]]),In=q(N({__name:`ScreenBindingModal`,props:u({binding:{type:Boolean}},{show:{type:Boolean,required:!0},showModifiers:{}}),emits:u([`scanned`],[`update:show`]),setup(e,{emit:r}){let a=se(e,`show`),o=r,s=B(``),c=B(),l=B(!1),u,p=0;function m(){cancelAnimationFrame(p),u?.getTracks().forEach(e=>e.stop()),u=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 v(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){s.value=`Сканирование камерой не поддерживается в этом браузере.`;return}s.value=``;try{if(u=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),l.value=!0,await n(),!c.value)return;c.value.srcObject=u,await c.value.play();let t=new e,r=async()=>{if(!(!c.value||!u))try{let e=(await t.detect(c.value))[0]?.rawValue;if(e){let t=_(e);if(t){m(),a.value=!1,o(`scanned`,t.screenID,t.accessToken);return}s.value=`Это не QR-код экрана.`}p=requestAnimationFrame(r)}catch{s.value=`Не удалось распознать QR-код.`,m()}};p=requestAnimationFrame(r)}catch{s.value=`Не удалось открыть камеру.`,m()}}function y(){m(),a.value=!1}return T(a,e=>{e?v():m()}),g(m),(n,r)=>(S(),i(f(Se),{show:a.value,"onUpdate:show":r[0]||=e=>a.value=e},{default:D(()=>[t(f(Le),{style:{width:`min(600px, 94vw)`},title:`Привязать экран`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:y},{default:D(()=>[...r[1]||=[P(` x `,-1)]]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[d(`video`,{ref_key:`scannerVideo`,ref:c,class:`screen-scanner-video`,muted:``,playsinline:``},null,512),s.value?(S(),i(f(Ie),{key:0,type:`error`},{default:D(()=>[P(h(s.value),1)]),_:1})):R(``,!0),!l.value&&!e.binding?(S(),i(f(W),{key:1,type:`primary`,onClick:v},{default:D(()=>[...r[2]||=[P(` Сканировать QR-код `,-1)]]),_:1})):R(``,!0),l.value?(S(),i(f(W),{key:2,onClick:m},{default:D(()=>[...r[3]||=[P(`Остановить камеру`,-1)]]),_:1})):R(``,!0),e.binding?(S(),i(f(W),{key:3,type:`primary`,loading:``},{default:D(()=>[...r[4]||=[P(`Привязка…`,-1)]]),_:1})):R(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-5f530845`]]),Ln={key:1,class:`screen-empty`},Rn={class:`screen-status`},zn={key:0,class:`screen-error`},Bn=q(N({__name:`GameScreensPanel`,props:{screens:{},screenBinding:{type:Boolean},isBusy:{type:Boolean}},emits:[`bind`,`setSound`,`unbind`],setup(e,{emit:n}){let r=e,a=n,o=B(!1);return(n,s)=>(S(),p(M,null,[t($,null,{default:D(()=>[t(f(Y),{align:`center`,justify:`space-between`,class:`screen-header`},{default:D(()=>[s[4]||=d(`p`,{class:`screens-title`},`Экраны`,-1),t(f(W),{size:`small`,disabled:e.isBusy||e.screenBinding,onClick:s[0]||=e=>o.value=!0},{default:D(()=>[...s[3]||=[P(` Привязать экран `,-1)]]),_:1},8,[`disabled`])]),_:1}),e.screens.some(e=>e.status===`disconnected`)?(S(),i(f(Ie),{key:0,type:`warning`,title:`Проверьте подключение экрана`},{default:D(()=>[...s[5]||=[P(` Один или несколько экранов не выходят на связь более минуты. `,-1)]]),_:1})):R(``,!0),e.screens.length===0?(S(),p(`p`,Ln,`К игре пока не привязаны экраны.`)):(S(!0),p(M,{key:2},C(e.screens,n=>(S(),p(`div`,{key:n.ID,class:`screen-row`},[d(`div`,null,[d(`div`,null,`Экран `+h(n.ID),1),d(`div`,Rn,h(n.status===`connected`?`Онлайн`:`Оффлайн`),1),n.error?(S(),p(`div`,zn,h(n.error),1)):R(``,!0)]),t(f(Y),{justify:`end`},{default:D(()=>[n.soundEnabled?(S(),i(f(V),{key:0,type:`success`},{default:D(()=>[...s[6]||=[P(`Со звуком`,-1)]]),_:1})):(S(),i(f(W),{key:1,size:`small`,disabled:e.isBusy,onClick:e=>a(`setSound`,n)},{default:D(()=>[...s[7]||=[P(`Назначить звук`,-1)]]),_:1},8,[`disabled`,`onClick`])),t(f(W),{size:`small`,type:`error`,ghost:``,disabled:e.isBusy,onClick:e=>a(`unbind`,n)},{default:D(()=>[...s[8]||=[P(` Отвязать `,-1)]]),_:1},8,[`disabled`,`onClick`])]),_:2},1024)]))),128))]),_:1}),t(In,{show:o.value,"onUpdate:show":s[1]||=e=>o.value=e,binding:r.screenBinding,onScanned:s[2]||=(e,t)=>a(`bind`,e,t)},null,8,[`show`,`binding`])],64))}}),[[`__scopeId`,`data-v-361cce15`]]),Vn={key:0},Hn={key:3},Un={key:4},Wn={key:0},Gn={key:2},Kn={key:0},qn={class:`device-details`},Jn={key:0},Yn={key:1},Xn=q(N({__name:`GameStatePanel`,props:{devices:{},wifi:{},serverTime:{},isLoading:{type:Boolean},hasError:{type:Boolean},summary:{}},emits:[`reload`],setup(e){let n={browser:`Браузер`,organizer:`Организатор`,team:`Команда`,screen:`Экран`};return(r,a)=>(S(),p(M,null,[t($,null,{default:D(()=>[t(f(Y),null,{default:D(()=>[t(f(V),{type:`success`},{default:D(()=>[P(`Доступны: `+h(e.summary.connected),1)]),_:1}),t(f(V),{type:`warning`},{default:D(()=>[P(`Нет связи: `+h(e.summary.disconnected),1)]),_:1}),t(f(V),null,{default:D(()=>[P(`Подключения: `+h(e.summary.connections),1)]),_:1})]),_:1}),e.serverTime?(S(),p(`p`,Vn,`Последнее обновление: `+h(f(gt)(e.serverTime)),1)):R(``,!0),a[2]||=d(`p`,null,`«Нет связи» означает отсутствие heartbeat сайта. UUID обозначает браузерный профиль.`,-1),e.hasError?(S(),i(f(Ie),{key:1,type:`error`,title:`Не удалось обновить состояние`},{default:D(()=>[t(f(W),{loading:e.isLoading,onClick:a[0]||=e=>r.$emit(`reload`)},{default:D(()=>[...a[1]||=[P(`Повторить`,-1)]]),_:1},8,[`loading`])]),_:1})):R(``,!0),e.isLoading&&!e.serverTime?(S(),i(f(He),{key:2})):!e.hasError&&!e.serverTime&&!e.isLoading?(S(),p(`p`,Hn,`Загружаем состояние…`)):e.serverTime&&!e.devices.length?(S(),p(`p`,Un,`Устройства этой игры пока не зарегистрированы`)):R(``,!0)]),_:1}),t($,null,{default:D(()=>[a[4]||=d(`h3`,null,`Wi-Fi площадки`,-1),a[5]||=d(`p`,null,` Все Wi-Fi-клиенты Cudy, независимо от выбранной игры. MAC устройства и UUID браузера различаются. `,-1),e.wifi?.enabled?(S(),p(M,{key:1},[e.wifi.hasError?(S(),i(f(Ie),{key:0,type:`warning`,role:`alert`,title:`Не удалось обновить данные Cudy`})):R(``,!0),e.wifi.stale?(S(),i(f(V),{key:1,type:`warning`},{default:D(()=>[...a[3]||=[P(`Данные устарели`,-1)]]),_:1})):R(``,!0),e.wifi.collectedAt?(S(),p(`p`,Gn,` Последний снимок Cudy: `+h(f(gt)(e.wifi.collectedAt)),1)):R(``,!0),e.wifi.collectedAt?(S(),p(M,{key:3},[d(`p`,null,`Wi-Fi-клиентов: `+h(e.wifi.clients?.length||0),1),e.wifi.clients?.length?R(``,!0):(S(),p(`p`,Kn,`Wi-Fi-клиенты пока не подключены`)),(S(!0),p(M,null,C(e.wifi.clients,e=>(S(),p(`div`,{key:e.MAC,class:`connection device-details`},[d(`strong`,null,h(e.MAC),1),d(`p`,null,`IP: `+h(e.IP||`—`)+` · `+h(e.band),1),d(`p`,null,`Сигнал: `+h(e.signal===void 0?`Нет данных`:`${e.signal} dBm`),1)]))),128))],64)):R(``,!0)],64)):(S(),p(`p`,Wn,`Сбор данных Cudy не настроен`))]),_:1}),(S(!0),p(M,null,C(e.devices,e=>(S(),i($,{key:e.ID},{default:D(()=>[d(`div`,qn,[d(`strong`,null,h(e.ID),1),d(`p`,null,[t(f(V),{type:e.connected?`success`:`warning`},{default:D(()=>[P(h(e.connected?`Доступно`:`Нет связи`),1)]),_:2},1032,[`type`])]),d(`p`,null,`Последнее обращение: `+h(f(gt)(e.lastSeenAt)||`—`),1),t(f(Ct),null,{default:D(()=>[t(f(Tt),{title:`Подключения`,name:e.ID||``},{default:D(()=>[(S(!0),p(M,null,C(e.connections,e=>(S(),p(`div`,{key:e.ID,class:`connection`},[d(`strong`,null,h(n[e.kind||``]||e.kind),1),e.teamID?(S(),p(`p`,Jn,`ID команды: `+h(e.teamID),1)):R(``,!0),e.screenID?(S(),p(`p`,Yn,`ID экрана: `+h(e.screenID),1)):R(``,!0),d(`p`,null,h(e.connected?`Доступно`:`Нет связи`),1),d(`p`,null,`Последнее обращение: `+h(f(gt)(e.lastSeenAt)||`—`),1),d(`p`,null,`IP: `+h(e.IP||`—`),1),d(`p`,null,`User-Agent: `+h(e.userAgent||`—`),1)]))),128))]),_:2},1032,[`name`])]),_:2},1024)])]),_:2},1024))),128))],64))}}),[[`__scopeId`,`data-v-a670747a`]]),Zn={class:`team-content-block`},Qn={class:`title-block`},$n={class:`team-name-block`},er={key:0},tr={key:1},nr={key:0},rr={key:0},ir={key:1},ar={key:2},or={key:3},sr={key:4},cr=q(N({__name:`GameTeamsPanel`,props:{teams:{},canPrintReceipts:{type:Boolean},participationOptions:{}},emits:[`add`,`open-qr`,`print`,`preview`,`delete`,`give-application`],setup(e,{emit:n}){let r=n;return(n,a)=>(S(),p(M,null,[t($,{class:`team-block-hover`,onClick:a[0]||=e=>r(`add`)},{default:D(()=>[...a[1]||=[d(`p`,{class:`place-image-plus`},`+`,-1)]]),_:1}),(S(!0),p(M,null,C(e.teams,n=>(S(),i($,{key:n.ID},{default:D(()=>[d(`div`,Zn,[t(f(Y),{justify:`space-between`},{default:D(()=>[d(`div`,Qn,[d(`span`,$n,[P(h(n.name)+` `,1),n.captainEmail?(S(),p(`small`,er,` — `+h(n.captainEmail),1)):R(``,!0),n.participantsCount?(S(),p(`small`,tr,` · Участников: `+h(n.participantsCount),1)):R(``,!0)]),n.captainEmail||n.participationStatus!==`pending`?(S(),p(`div`,nr,[P(h(e.participationOptions.find(e=>e.value===n.participationStatus)?.label),1),n.participationSource===`automatic`?(S(),p(`span`,rr,` · автоматически`)):R(``,!0)])):R(``,!0),n.captainEmail?n.participationEmailError?(S(),p(`div`,ar,` Ошибка отправки: `+h(n.participationEmailError),1)):n.participationEmailSent?(S(),p(`div`,or,`Письмо отправлено`)):R(``,!0):(S(),p(`div`,ir,`Почта капитана не указана`)),n.participationStatus===`cancelled`?R(``,!0):(S(),p(`div`,sr,` Поездки: `+h(n.actionsCount),1))]),t(f(Y),{justify:`end`},{default:D(()=>[e.canPrintReceipts&&n.participationStatus!==`cancelled`?(S(),i(f(W),{key:0,onClick:e=>r(`print`,n)},{default:D(()=>[...a[2]||=[P(` Печать чека `,-1)]]),_:1},8,[`onClick`])):R(``,!0),n.participationStatus===`cancelled`?R(``,!0):(S(),i(f(W),{key:1,onClick:e=>r(`open-qr`,n)},{default:D(()=>[...a[3]||=[P(`QR`,-1)]]),_:1},8,[`onClick`])),n.participationStatus===`cancelled`?R(``,!0):(S(),i(f(W),{key:2,onClick:e=>r(`preview`,n.ID,n.password)},{default:D(()=>[...a[4]||=[P(`Подсмотреть игру`,-1)]]),_:1},8,[`onClick`])),t(f(W),{type:`error`,ghost:``,onClick:e=>r(`delete`,n)},{default:D(()=>[...a[5]||=[P(`Удалить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(S(!0),p(M,null,C(n.applications,e=>(S(),i(f(W),{key:e.name,class:`link-button`,onClick:t=>r(`give-application`,n,e)},{default:D(()=>[P(` Выдать: `+h(e.name),1)]),_:2},1032,[`onClick`]))),128))])]),_:2},1024))),128))],64))}}),[[`__scopeId`,`data-v-70e02c3e`]]),lr=[`src`,`alt`],ur={key:2},dr=q(N({__name:`TeamReceiptModal`,props:{show:{type:Boolean},name:{},preview:{},preparationError:{},isPreparing:{type:Boolean},isPrinting:{type:Boolean}},emits:[`update:show`,`print`],setup(e,{emit:n}){let r=n;return(n,a)=>(S(),i(f(Se),{show:e.show,"mask-closable":!e.isPrinting,"close-on-esc":!e.isPrinting,"onUpdate:show":a[2]||=e=>r(`update:show`,e)},{default:D(()=>[t(f(Le),{class:`receipt-modal`,title:`Чек команды`,role:`dialog`,"aria-modal":`true`},{default:D(()=>[e.preparationError?(S(),i(f(Ie),{key:0,type:`error`},{default:D(()=>[P(h(e.preparationError),1)]),_:1})):e.preview?(S(),p(`img`,{key:1,class:`receipt-preview`,src:e.preview,alt:`Чек команды ${e.name}`},null,8,lr)):e.isPreparing?(S(),p(`p`,ur,`Подготовка чека…`)):R(``,!0),a[5]||=d(`p`,null,`Включите MXW01 рядом с сервером площадки. Сервер напечатает один чек.`,-1),t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{disabled:e.isPrinting,onClick:a[0]||=e=>r(`update:show`,!1)},{default:D(()=>[...a[3]||=[P(`Закрыть`,-1)]]),_:1},8,[`disabled`]),t(f(W),{type:`primary`,loading:e.isPrinting,disabled:!e.preview||e.isPreparing||e.isPrinting,onClick:a[1]||=e=>r(`print`)},{default:D(()=>[...a[4]||=[P(`Печатать`,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1},8,[`show`,`mask-closable`,`close-on-esc`]))}}),[[`__scopeId`,`data-v-f0b8d644`]]),fr={key:0},pr={key:1},mr={key:2},hr=q(N({__name:`TicketCheckModal`,props:{show:{type:Boolean,required:!0},showModifiers:{}},emits:[`update:show`],setup(e){let r=se(e,`show`),a=Ze(),o=ve(),s=B(``),c=B(),l=B(``),u=B(!1),m=B(),_=B(!1),v,y=0,b=z(()=>{try{return new URL(s.value.trim()).pathname.match(/\/tickets\/([^/]+)/)?.[1]||``}catch{return s.value.trim()}});async function x(){if(!(!b.value||u.value)){u.value=!0,l.value=``,c.value=void 0;try{let e=await a.GetTicket({token:b.value});e.ticket?c.value=e.ticket:l.value=`Билет не найден`}catch(e){l.value=e instanceof Error?e.message:`Не удалось проверить билет`}finally{u.value=!1}}}async function C(){if(!(!b.value||u.value)){u.value=!0,l.value=``;try{let e=await a.AcceptTicket({token:b.value});e.ticket?(c.value=e.ticket,o.success(`Билет принят`)):l.value=`Не удалось принять билет`}catch(e){l.value=e instanceof Error?e.message:`Не удалось принять билет`}finally{u.value=!1}}}async function w(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){l.value=`Сканирование камерой не поддерживается. Введите ссылку вручную.`;return}l.value=``;try{if(v=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),_.value=!0,await n(),!m.value)return;m.value.srcObject=v,await m.value.play();let t=new e,r=async()=>{if(!(!_.value||!m.value))try{let e=(await t.detect(m.value))[0]?.rawValue;if(e){s.value=e,E(),await x();return}y=requestAnimationFrame(r)}catch{l.value=`Не удалось распознать QR-код.`,E()}};y=requestAnimationFrame(r)}catch{l.value=`Не удалось открыть камеру. Введите ссылку вручную.`,E()}}function E(){cancelAnimationFrame(y),v?.getTracks().forEach(e=>e.stop()),v=void 0,_.value=!1}function O(){E(),r.value=!1}return T(r,e=>{e?w():E()}),g(E),(e,n)=>(S(),i(f(Se),{show:r.value,"onUpdate:show":n[1]||=e=>r.value=e},{default:D(()=>[t(f(Le),{style:{width:`min(600px, 94vw)`},title:`Проверка билета`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:O},{default:D(()=>[...n[2]||=[P(` x `,-1)]]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[_.value?(S(),p(`video`,{key:0,ref_key:`video`,ref:m,class:`ticket-scanner-video`,muted:``,playsinline:``},null,512)):R(``,!0),l.value?(S(),i(f(Ie),{key:1,type:`error`},{default:D(()=>[P(h(l.value),1)]),_:1})):R(``,!0),_.value?(S(),i(f(W),{key:3,onClick:E},{default:D(()=>[...n[4]||=[P(`Остановить камеру`,-1)]]),_:1})):(S(),i(f(W),{key:2,onClick:w},{default:D(()=>[...n[3]||=[P(`Сканировать QR-код`,-1)]]),_:1})),t(f(Pe),{value:s.value,"onUpdate:value":n[0]||=e=>s.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:it(x,[`enter`])},null,8,[`value`]),t(f(W),{type:`primary`,loading:u.value,onClick:x},{default:D(()=>[...n[5]||=[P(` Проверить билет `,-1)]]),_:1},8,[`loading`]),c.value?(S(),p(M,{key:4},[t(f(Ie),{type:c.value.status===`active`?`success`:`warning`},{default:D(()=>[P(h(c.value.gameName),1),n[6]||=d(`br`,null,null,-1),P(` Статус: `+h(c.value.status===`active`?`действителен`:`уже использован`)+` `,1),c.value.usedBy?(S(),p(`span`,fr,` · `+h(c.value.usedBy),1)):R(``,!0),c.value.usedAt?(S(),p(`br`,pr)):R(``,!0),c.value.usedAt?(S(),p(`span`,mr,`Использован: `+h(f(gt)(c.value.usedAt)),1)):R(``,!0)]),_:1},8,[`type`]),c.value.status===`active`&&c.value.gameStatus!==`finish`?(S(),i(f(W),{key:0,type:`primary`,loading:u.value,onClick:C},{default:D(()=>[...n[7]||=[P(` Принять билет `,-1)]]),_:1},8,[`loading`])):R(``,!0)],64)):R(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-fe322487`]]);function gr(e,t){let n=Ze(),r=B([]),i=B(),a=B(),o=B(!1),s=B(!1),c=0,l=!1,u=!1,d=z(()=>({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 T([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`}),at(()=>{f()},5e3),ee(()=>{l=!0,c++}),{devices:r,wifi:i,serverTime:a,isLoading:o,hasError:s,summary:d,reload:f}}function _r(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 vr={class:`center-block-custom`},yr={class:`width1200`},br={class:`game-tab-content`},xr=[`href`],Sr={class:`game-tab-content`},Cr={key:1,role:`status`},wr={class:`screen-overview`},Tr={key:1,class:`screen-preview-placeholder`},Er={class:`presentation-grid`},Dr={class:`game-tab-content`},Or={class:`game-tab-content`},kr={class:`qr-block`},Ar={class:`game-tab-content`},jr={key:2},Mr={key:3,class:`answer-results-scroll`},Nr={key:0,class:`answers-empty`},Pr={class:`answers-team-name`},Fr={class:`answers-question-title`},Ir={class:`answers-question-answer`},Lr={class:`correct-answer`},Rr={class:`answers-team-row`},zr={class:`answers-team-answer`},Br={key:0,class:`give-application-image-block`},Vr=[`src`],Hr=[`src`],Ur=[`href`],Wr={class:`qr-block`},Gr={key:0,class:`answers-empty`},Kr=`https://www.sberbank.ru/ru/choise_bank?requisiteNumber=79609361994&bankCode=100000000111`,qr=q(N({__name:`GamePage`,emits:[`resultsApplied`],setup(e,{emit:n}){let r=n,a=Ze(),o=ct(),c=B(!1),l=B(!1),u=k(),m=le(),g=m.params.id;function _(e){return[`settings`,`screens`,`game`,`payment`,`answers`,`state`].includes(e)}let v=typeof m.query.tab==`string`?m.query.tab:``,y=B(_(v)?v:`game`);async function b(e){!_(e)||(e===`state`?!Fe.value:!G.value)||(y.value=e,await u.replace({query:{...m.query,tab:e}}))}function x(e){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),b(`state`))}let w=ve(),E=B({name:``,description:``,format:`online`,location:``,wifiName:``,wifiPassword:``}),O=B(!1),A=B(!1),j=B(!1),ee=B(!1),N=B(!1),te=B(!1),ne=B(``),re=B(``),F=B(1),I=B(``),ie=B(!1),ae=B(``),se=B(``),L=B(!1),ce=B({name:``,teamID:``}),ue=B(!1),de=B(!1),fe=B(``),pe=B(``),me=0,he=B(!1),ge=B(1),_e=B([]),be=B(!1),xe=B(!1),U=B({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,wifiName:void 0,wifiPassword:void 0}),Ce=tt(),we=ye(),G=z(()=>Ce.hasAnyRole([`admin`,`organizer`,`author`])),K=0,Oe=0,ke=!1,Ae=!1,q,Me,Ne=!1,Fe=z(()=>we.environment===`venue`&&Ce.hasAnyRole([`admin`,`organizer`,`developer`])),ze=z(()=>Fe.value&&!G.value);_t(()=>G.value?{organizerGameID:Number(g)}:{});let{devices:He,wifi:We,serverTime:Ge,isLoading:Ke,hasError:qe,summary:Je,reload:Ye}=gr(()=>Number(m.params.id),()=>Fe.value&&y.value===`state`);T([()=>m.query.tab,Fe,G],()=>{let e=typeof m.query.tab==`string`?m.query.tab:``;y.value=ze.value?`state`:_(e)&&(e!==`state`||Fe.value)?e:`game`,ze.value&&e!==`state`&&u.replace({query:{...m.query,tab:`state`}})},{immediate:!0}),T(ze,e=>{e&&(U.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,wifiName:void 0,wifiPassword:void 0},dn(Number(g)))},{immediate:!0});let Xe=z(()=>Number(U.value.ID)>0&&we.environment===`prod`&&Ce.hasAnyRole([`admin`,`organizer`,`developer`])),Qe=B(!1),$e=B(!1),et=z(()=>Xe.value&&(U.value.export?.state===`preparing`||U.value.export?.state===`ready`)),X=B(!1),nt=B(!1),rt=B(``),it=z(()=>we.environment===`venue`&&U.value.status===`finish`&&Ce.hasAnyRole([`admin`,`organizer`,`developer`])),ot=B(!1),ft=B(!1),pt=B([]),vt=B(``),yt=[{label:`Ожидает ответа`,value:`pending`},{label:`Подтверждено`,value:`confirmed`},{label:`Отменено`,value:`cancelled`}],bt=z(()=>(U.value.teams||[]).filter(e=>e.participationStatus!==`cancelled`).length),xt=B([]),St=B([]),Ct=B(),wt=B(!1),Tt=0,Et=Date.now(),{saveGroup:Dt,deleteGroup:Ot,reorderGroups:kt,setTrackGroup:At,createPlaylist:jt,renamePlaylist:Mt,reorderTracks:Nt,deletePlaylist:Pt,uploadTrack:Ft,deleteTrack:It}=Be(wt,()=>mn(!0),()=>{Tt+=1}),Z=B(!1),Rt=B(!0),zt=B(``),Bt=B(),Q=B([]),Vt=B(!1),Ht=B(!1),Wt=B(`use`),Gt=0,Kt=B([]),Jt=B([]),Xt=B(),Qt=B([]),$t=B(!1),en=B(!1),nn=B(100),rn=z(()=>xt.value.find(e=>e.status===`connected`)||xt.value[0]);T(()=>rn.value?.volume,e=>{nn.value=e??100});function an(e){Ae||Ne||(Ne=!0,w.warning(`Не удалось включить звуковые уведомления о выдаче улик`),console.error(`Звуковое уведомление о выдаче улик`,e))}async function cn(){if(!(!G.value||Ae))try{q??=new AudioContext,q.state===`suspended`&&await q.resume();let e=q;Me??=fetch(sn).then(async t=>{if(!t.ok)throw Error(`Не удалось загрузить звук уведомления`);return e.decodeAudioData(await t.arrayBuffer())}),await Me}catch(e){Me=void 0,an(e)}}async function ln(){if(!(!q||q.state!==`running`||!Me))try{let e=await Me;if(Ae||q.state!==`running`)return;let t=q.createBufferSource();t.buffer=e,t.connect(q.destination),t.onended=()=>t.disconnect(),t.start()}catch(e){an(e)}}async function un(){await cn(),await ln()}s(()=>{window.addEventListener(`click`,cn),window.addEventListener(`keydown`,cn)}),oe(()=>{Ae=!0,me++,fr(),window.removeEventListener(`click`,cn),window.removeEventListener(`keydown`,cn),q?.close().catch(e=>{console.error(`Закрытие звуковых уведомлений`,e)})});async function dn(e){let t=++K,n=G.value,r=await a.GetGame({ID:e});Ae||n!==G.value||t<Oe||(Oe=t,G.value&&ke&&_r(U.value.teams||[],r.game?.teams||[])&&ln(),ke=!0,U.value=r.game,A.value||=(E.value={name:U.value.name||``,description:U.value.description||``,format:U.value.format||`online`,location:U.value.location||``,wifiName:U.value.wifiName||``,wifiPassword:U.value.wifiPassword||``},!0),U.value.teams=U.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}))}G.value&&dn(Number(g));async function fn(){try{let e=await a.GetGameScreens({gameID:Number(g)});if(xt.value=e.screens||[],zt.value=``,rn.value?.mode===`SCREEN_MODE_TEAMS`||(Wt.value===`edit`?Q.value:Bt.value?.steps)?.some(e=>e.mode===`SCREEN_MODE_TEAMS`)){let e=await a.GetGame({ID:Number(g)});Xt.value=(e.game?.teams??[]).filter(e=>e.participationStatus!==`cancelled`).map(e=>e.name??``).sort((e,t)=>e.localeCompare(t,`ru`))}if((Wt.value===`edit`?Q.value:Bt.value?.steps)?.some(e=>e.mode===`SCREEN_MODE_RESULTS`)||rn.value?.mode===`SCREEN_MODE_RESULTS`){let e=await a.GetGameResults({gameID:Number(g)});Kt.value=e.questions||[],Jt.value=e.teams||[]}}catch(e){zt.value=e instanceof Error?e.message:`Не удалось получить состояние экранов`}finally{Rt.value=!1}}G.value&&fn();async function mn(e=!1){if(wt.value&&!e)return;let t=++Tt;try{let e=await a.GetGameMusic({gameID:Number(g)});if(t!==Tt)return;St.value=e.playlists||[],Ct.value=e.state,Et=Date.now()}catch(e){w.error(e instanceof Error?e.message:`Не удалось получить музыку игры`)}}G.value&&mn();function hn(){return Wt.value===`edit`}async function gn(){if(hn()||Vt.value||Z.value)return;let e=++Gt;try{let t=await a.GetScreenPlan({gameID:Number(g)});if(e!==Gt||hn()||Z.value||Vt.value)return;Bt.value=t.plan,Q.value=t.plan?.steps?.map(e=>({...e}))||[]}catch(e){w.error(e instanceof Error?e.message:`Не удалось получить план экранов`)}}G.value&&gn();function _n(){Q.value.push({mode:`SCREEN_MODE_TEXT`,text:`Новый экран`,timerLabel:`Перерыв`,timerDurationSeconds:600,qrUrl:``,timerType:`SCREEN_TIMER_TYPE_BREAK`}),Vt.value=!0,Wt.value=`edit`}function vn(){Bt.value&&(Q.value=Bt.value.steps?.map(e=>({...e}))||[],Wt.value=`edit`)}function yn(){Vt.value&&!window.confirm(`Отменить несохранённые изменения плана?`)||(Q.value=Bt.value?.steps?.map(e=>({...e}))||[],Vt.value=!1,Wt.value=`use`)}function bn(e){Q.value.splice(e,1),Vt.value=!0}function xn(e,t){let n=e+t;if(n<0||n>=Q.value.length)return;let[r]=Q.value.splice(e,1);Q.value.splice(n,0,r),Vt.value=!0}function Sn(){Vt.value=!0}function wn(){Q.value=[],Sn()}async function Tn(){if(Ht.value)return;let e=Q.value.findIndex(e=>e.mode===`SCREEN_MODE_TEXT`&&!e.text?.trim()||e.mode===`SCREEN_MODE_QR`&&!dt(e.qrUrl,e.text)||e.mode===`SCREEN_MODE_TIMER`&&(!Number.isInteger(e.timerDurationSeconds)||(e.timerDurationSeconds??0)<1||(e.timerDurationSeconds??0)>86400));if(e!==-1){w.error(`Проверьте ссылку QR, текст или длительность таймера в шаге ${e+1}`);return}Gt+=1,Ht.value=!0;try{let e=Math.min(Bt.value?.currentStep||0,Math.max(0,Q.value.length-1)),t=await a.SaveScreenPlan({gameID:Number(g),steps:Q.value,currentStep:e});Bt.value=t.plan,Q.value=t.plan?.steps?.map(e=>({...e}))||[],Vt.value=!1,Wt.value=`use`,w.success(t.plan?`План экранов сохранён`:`План экранов удалён`)}catch(e){w.error(e instanceof Error?e.message:`Не удалось сохранить план экранов`)}finally{Ht.value=!1}}async function En(e){if(!(Vt.value||!Bt.value||Z.value||Ht.value)){Z.value=!0,Gt+=1;try{let t=await a.SetScreenPlanStep({gameID:Number(g),currentStep:e});Bt.value=t.plan,await fn()}catch(e){w.error(e instanceof Error?e.message:`Не удалось перейти на шаг плана`)}finally{Z.value=!1}}}async function Dn(e,t){if(!(Z.value||Ht.value||Vt.value||e!==`SCREEN_MODE_TIMER`&&e!==`SCREEN_MODE_INTRO`&&e!==`SCREEN_MODE_CONCLUSION`)){Z.value=!0;try{await a.SendScreenCommand({gameID:Number(g),command:t,positionMs:0,volume:Math.max(0,Math.min(100,Math.round(nn.value)))}),await fn()}catch(e){w.error(e instanceof Error?e.message:`Не удалось управлять экраном`)}finally{Z.value=!1}}}async function On(e,t){if(!xe.value){xe.value=!0;try{await a.BindScreen({screenID:e,accessToken:t,gameID:Number(g),initializeAudio:!1}),w.success(`Экран привязан к игре`),await fn()}catch(e){w.error(e instanceof Error?e.message:`Не удалось привязать экран`)}finally{xe.value=!1}}}async function kn(){if($t.value||en.value)return;let e=await a.GetGameMap({gameID:Number(g)});$t.value||en.value||(Qt.value=e.items||[])}G.value&&kn();async function An(e,t=e.hidden){$t.value=!0;try{await a.UpdateGameMapItem({gameID:Number(g),kind:e.kind,itemID:e.itemID,x:Math.round(e.x||0),y:Math.round(e.y||0),hidden:t})}finally{$t.value=!1}}async function jn(e,t=e.hidden){await An(e,t),await kn()}async function Mn(e){if(!Z.value){Z.value=!0;try{await a.SetScreenSound({screenID:e.ID,soundEnabled:!0}),await fn()}catch(e){w.error(e instanceof Error?e.message:`Не удалось назначить звук`)}finally{Z.value=!1}}}async function Nn(e){if(wt.value)return;wt.value=!0,Tt+=1;let t=Ct.value;try{let n=await a.SetGameMusic({gameID:Number(g),playlistID:e.playlistID??t?.playlist?.ID??0,groupId:e.groupId??(e.playlistID===void 0?t?.groupId??0:0),trackIndex:e.trackIndex??t?.trackIndex??0,positionMs:e.positionMs??Number(t?.positionMs??0)+(t?.playback===`MUSIC_PLAYBACK_PLAYING`?Math.max(0,Date.now()-Et):0),volume:e.volume??t?.volume??100,loop:e.loop??t?.loop??!1,playback:e.playback??t?.playback??`MUSIC_PLAYBACK_STOPPED`});Ct.value=n.state,Et=Date.now()}catch(e){w.error(e instanceof Error?e.message:`Не удалось изменить музыку`)}finally{wt.value=!1}}async function Pn(e){if(!Z.value){Z.value=!0;try{await a.UnbindScreen({screenID:e.ID}),await fn()}catch(e){w.error(e instanceof Error?e.message:`Не удалось отвязать экран`)}finally{Z.value=!1}}}async function In(e,t,n=!1){let r=`/team-story/`+e+`?password=`+t;if(n){window.open(r,`_blank`);return}u.push(r)}async function Ln(){if(!(!Xe.value||Qe.value||X.value)){Qe.value=!0;try{let e=await a.StartGameExport({ID:U.value.ID});U.value.export=e.export}catch(e){w.error(e instanceof Error?e.message:`Не удалось подготовить пакет`)}finally{Qe.value=!1}}}function Rn(){!et.value||Qe.value||X.value||(rt.value=U.value.export?.ID||``,nt.value=!0)}async function zn(){if(!(!Xe.value||!rt.value||X.value)){X.value=!0;try{await a.ResetGameLocalMode({ID:U.value.ID,exportID:rt.value}),nt.value=!1,await dn(Number(U.value.ID)),w.success(`Локальный режим сброшен`)}catch(e){w.error(e instanceof Error?e.message:`Не удалось сбросить локальный режим`)}finally{X.value=!1}}}async function Vn(){if(!(!Xe.value||$e.value||U.value.export?.state!==`ready`)){$e.value=!0;try{let{blob:e,filename:t}=await o.downloadGamePackage(U.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){w.error(e instanceof Error?e.message:`Не удалось скачать пакет`)}finally{$e.value=!1}}}function Hn({fileList:e}){ft.value||(pt.value=e.slice(-1),vt.value=``)}async function Un(){if(!(!it.value||ot.value)){ot.value=!0;try{let{blob:e,filename:t}=await o.downloadGameResultsPackage(U.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){w.error(e instanceof Error?e.message:`Не удалось скачать результаты`)}finally{ot.value=!1}}}async function Wn(){if(!Xe.value||ft.value)return;let e=pt.value[0]?.file;if(!e||e.size===0){vt.value=`Выберите непустой ZIP-файл`;return}if(!e.name.toLowerCase().endsWith(`.zip`)){vt.value=`Выберите файл с расширением .zip`;return}if(e.size>1024**3){vt.value=`Размер пакета не должен превышать 1 ГиБ`;return}ft.value=!0,vt.value=``;try{await o.applyGameResultsPackage(U.value.ID,e),w.success(`Результаты приняты`),r(`resultsApplied`)}catch(e){vt.value=e instanceof Error?e.message:`Не удалось применить результаты`}finally{ft.value=!1}}async function Gn(){let e=U.value.ID;if(!(!G.value||!e||l.value)){l.value=!0;try{let{blob:t,filename:n}=await o.downloadGamePrintMaterials(e),r=URL.createObjectURL(t),i=document.createElement(`a`);i.href=r,i.download=n,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}catch(e){w.error(e instanceof Error?e.message:`Не удалось скачать материалы для печати`)}finally{l.value=!1}}}async function Kn(){if(!(c.value||!U.value.teams?.length)){c.value=!0;try{let{blob:e,filename:t}=await o.downloadTeamQR(U.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){w.error(e instanceof Error?e.message:`Не удалось скачать QR команд`)}finally{c.value=!1}}}function qn(){u.push(`/games/`+g+`/results`)}async function Jn(){if(!O.value){if(new TextEncoder().encode(E.value.wifiName).length>32||/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(E.value.wifiName)){w.error(`Название Wi-Fi — до 32 байт UTF-8, без управляющих символов`);return}if(!/^[\x20-\x7e]{0,64}$/.test(E.value.wifiPassword)){w.error(`Пароль Wi-Fi — до 64 печатных ASCII-символов`);return}O.value=!0;try{await a.UpdateGame({ID:U.value.ID,name:E.value.name,description:E.value.description,format:E.value.format,location:E.value.location.trim(),wifiName:E.value.wifiName,wifiPassword:E.value.wifiPassword,startAt:U.value.startAt,scenarioID:U.value.scenario?.ID}),await dn(U.value.ID),w.success(`Настройки игры сохранены`)}catch(e){w.error(e instanceof Error?e.message:`Не удалось сохранить настройки игры`)}finally{O.value=!1}}}let Yn=B({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}),Zn=B(``),Qn=B({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}),$n=B({name:``,image:``,file_type:``}),er=window.location.href;function tr(e,t){Yn.value=e,$n.value=t,j.value=!0}async function nr(){if(F.value<1||F.value>8){w.error(`Укажите от 1 до 8 игроков`);return}await a.AddTeam({gameID:U.value.ID,name:ne.value,captainEmail:re.value.trim(),participantsCount:F.value}),await dn(U.value.ID),ee.value=!1,re.value=``,F.value=1}async function rr(){await a.GiveTeamApplications({ID:Yn.value.ID,name:$n.value.name}),await dn(U.value.ID),j.value=!1}async function ir(e){Qn.value=e,N.value=!0}async function ar(){await a.DeleteTeam({ID:Qn.value.ID}),await dn(U.value.ID),N.value=!1}async function or(){await a.DeleteGame({ID:U.value.ID}),w.success(`Игра удалена`),u.push(`/games`)}function sr(e,t){let n=new URL(`/team-story/${e}`,window.location.origin);return n.searchParams.set(`password`,t),n.toString()}function lr(e){qr(sr(e.ID,e.password),`Подсмотреть игру`)}function ur(e){if(we.environment!==`venue`||!e.ID||!e.name||e.participationStatus===`cancelled`){w.error(`У команды нет данных для печати чека`);return}ce.value={name:e.name,teamID:e.ID},L.value=!0}T([L,()=>ce.value.teamID,G,()=>we.environment],pr);function fr(){fe.value&&URL.revokeObjectURL(fe.value),fe.value=``}async function pr(){let e=++me;if(fr(),pe.value=``,de.value=!1,!(!L.value||!G.value||we.environment!==`venue`)){de.value=!0;try{let{blob:t}=await o.downloadTeamReceipt(Number(g),ce.value.teamID);e===me&&(fe.value=URL.createObjectURL(t))}catch(t){e===me&&(pe.value=t instanceof Error?t.message:`Не удалось подготовить чек`)}finally{e===me&&(de.value=!1)}}}async function mr(){if(!(!fe.value||ue.value||de.value)){ue.value=!0;try{await a.PrintTeamReceipt({gameID:Number(g),teamID:ce.value.teamID}),w.success(`Чек напечатан`)}catch(e){w.error(e instanceof Error?e.message:`Не удалось напечатать чек`)}finally{ue.value=!1}}}async function qr(e,t){ae.value=e,se.value=t,ie.value=!0}async function Jr(){if(!(be.value||!U.value.ID)){be.value=!0;try{let e=await a.IssueGameTickets({gameID:U.value.ID,count:ge.value});_e.value=e.tickets||[],w.success(`Выпущено билетов: ${_e.value.length}`)}catch(e){w.error(e instanceof Error?e.message:`Не удалось выпустить билеты`)}finally{be.value=!1}}}at(()=>{!G.value||ft.value||(dn(Number(g)),fn(),mn(),gn(),kn())},2e3);async function Yr(){await a.ResetGame({ID:U.value.ID}),await dn(U.value.ID)}async function Xr(){await a.StartGame({ID:U.value.ID}),await dn(U.value.ID)}async function Zr(){await a.PauseGame({ID:U.value.ID}),await dn(U.value.ID)}async function Qr(){await a.PlayGame({ID:U.value.ID}),await dn(U.value.ID)}async function $r(){await a.FinishGame({ID:U.value.ID}),await dn(U.value.ID)}let ei=B(!1),ti=B([]),ni=B(0),ri=B(0),ii=B([]),ai=B([]),oi=B([]),si=B([]),ci=B(!1),li=B(!1);async function ui(){ci.value=!0,li.value=!1;try{let e=await a.GetGameResults({gameID:Number(g)});oi.value=e.questions||[],si.value=e.teams||[]}catch(e){li.value=!0,console.error(`Не удалось загрузить таблицу результатов`,e)}finally{ci.value=!1}}let di=B({});function fi(e,t){return(e??``)+`:`+(t??``)}function pi(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function mi(e,t){di.value[e]=t===null?void 0:t}async function hi(){let e=await a.GetGameAnswers({gameID:Number(g)});ii.value=e.questions||[],ai.value=e.teams||[];let t={};for(let e of ai.value)for(let n of e.answers||[])t[fi(e.team?.ID,n.questionCode)]=n.score;di.value=t,await ui()}async function gi(){ei.value=!0;let e=await a.GetGameReviewsForModeration({gameID:Number(g)});ti.value=e.reviews||[],ni.value=e.averageRating||0,ri.value=e.reviewsCount||0}async function _i(e,t){await a.ModerateGameReview({ID:e.ID,status:t}),await gi()}async function vi(){for(let e of ii.value)for(let t of ai.value){let n=di.value[fi(t.team?.ID,e.code)];await a.SetTeamAnswerScore({ID:t.team?.ID,questionCode:e.code,score:n??void 0})}w.success(`Баллы сохранены`),await hi()}T([G,y],([e,t])=>{e&&t===`answers`&&hi()},{immediate:!0});function yi(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function bi(e,t){if(e==``)return`Игра ещё не началась`;let n=ht(e),r=yi();t!=``&&(r=ht(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 xi=B(``);return at(()=>{xi.value=bi(U.value.startedAt||``,U.value.endedAt||``)},1e3),(e,n)=>(S(),p(M,null,[d(`div`,vr,[d(`div`,yr,[G.value&&(U.value.export?.state===`preparing`||U.value.export?.state===`ready`)?(S(),i($,{key:0},{default:D(()=>[t(f(Ie),{type:`info`,title:U.value.export.state===`ready`?`Игра в офлайн-режиме`:`Подготовка офлайн-пакета`},{default:D(()=>[P(h(U.value.export.state===`ready`?`Изменения на онлайн-сервере не синхронизируются с офлайн-площадкой.`:`Создаётся пакет для офлайн-площадки.`),1)]),_:1},8,[`title`])]),_:1})):R(``,!0),ze.value?(S(),i($,{key:1},{default:D(()=>[d(`h2`,null,h(U.value.name),1)]),_:1})):R(``,!0),t(f(Ee),{value:y.value,type:`line`,animated:``,"onUpdate:value":b},{default:D(()=>[G.value?(S(),i(f(Te),{key:0,name:`settings`,tab:`Настройки`},{default:D(()=>[d(`div`,br,[t($,null,{default:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{loading:l.value,disabled:!U.value.ID||l.value,onClick:Gn},{default:D(()=>[...n[49]||=[P(` Скачать материалы для печати `,-1)]]),_:1},8,[`loading`,`disabled`]),t(f(W),{quaternary:``,onClick:n[0]||=e=>qr(f(er),`Админка`)},{default:D(()=>[...n[50]||=[P(`QR`,-1)]]),_:1}),U.value.status==`finish`?(S(),i(f(W),{key:0,quaternary:``,onClick:n[1]||=e=>qn()},{default:D(()=>[t(f(H),{class:`settings-icon`},{default:D(()=>[t(f(on))]),_:1}),n[51]||=P(` Итоги `,-1)]),_:1})):R(``,!0),(U.value.teams?.length||0)==0?(S(),i(f(W),{key:1,type:`error`,quaternary:``,onClick:n[2]||=e=>te.value=!0},{default:D(()=>[...n[52]||=[P(` Удалить игру `,-1)]]),_:1})):R(``,!0)]),_:1})]),_:1}),t($,null,{default:D(()=>[n[60]||=d(`p`,{class:`screens-title`},`Настройки игры`,-1),t(f(J),{vertical:``},{default:D(()=>[n[53]||=d(`p`,null,`Название`,-1),t(f(Pe),{value:E.value.name,"onUpdate:value":n[3]||=e=>E.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),n[54]||=d(`p`,{class:`settings-header`},`Формат игры`,-1),t(f(De),{value:E.value.format,"onUpdate:value":n[4]||=e=>E.value.format=e,options:[{label:`Online`,value:`online`},{label:`Offline`,value:`offline`}],"aria-label":`Формат игры`},null,8,[`value`]),n[55]||=d(`p`,{class:`settings-header`},`Описание`,-1),t(f(Pe),{value:E.value.description,"onUpdate:value":n[5]||=e=>E.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),n[56]||=d(`p`,{class:`settings-header`},`Место проведения`,-1),t(f(Pe),{value:E.value.location,"onUpdate:value":n[6]||=e=>E.value.location=e,type:`text`,placeholder:`Оставьте пустым для онлайн-игры`},null,8,[`value`]),n[57]||=d(`p`,{class:`settings-header`},`Wi-Fi для игроков`,-1),t(f(Pe),{value:E.value.wifiName,"onUpdate:value":n[7]||=e=>E.value.wifiName=e,"aria-label":`Название сети Wi-Fi`,placeholder:`Название сети Wi-Fi`},null,8,[`value`]),t(f(Pe),{value:E.value.wifiPassword,"onUpdate:value":n[8]||=e=>E.value.wifiPassword=e,"aria-label":`Пароль Wi-Fi`,type:`password`,"show-password-on":`click`,placeholder:`Без пароля — оставьте пустым`,maxlength:64},null,8,[`value`]),n[58]||=d(`p`,null,` Название сети и пароль будут напечатаны рядом с QR-кодом команды в PDF и чеках. Оставьте название сети пустым, чтобы убрать инструкцию. `,-1)]),_:1}),t(f(Y),{justify:`end`,class:`settings-actions`},{default:D(()=>[t(f(W),{loading:O.value,disabled:O.value,onClick:n[9]||=e=>Jn()},{default:D(()=>[...n[59]||=[P(`Сохранить изменения`,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1}),it.value?(S(),i($,{key:0},{default:D(()=>[t(f(W),{loading:ot.value,disabled:ot.value,onClick:Un},{default:D(()=>[...n[61]||=[P(` Скачать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})):R(``,!0),Xe.value?(S(),i($,{key:1},{default:D(()=>[n[65]||=d(`p`,{class:`screens-title`},`Возврат результатов с площадки`,-1),t(f(J),{vertical:``},{default:D(()=>[t(f(Ie),{type:`warning`},{default:D(()=>[...n[62]||=[P(` Команды, билеты, результаты и игровой сценарий будут заменены данными пакета. Онлайн-правки этих данных потеряются. Оформление и музыка сохраняются. `,-1)]]),_:1}),t(f(je),{"file-list":pt.value,"default-upload":!1,max:1,accept:`.zip`,disabled:ft.value,onChange:Hn},{default:D(()=>[t(f(W),{disabled:ft.value},{default:D(()=>[...n[63]||=[P(`Выбрать ZIP результатов`,-1)]]),_:1},8,[`disabled`])]),_:1},8,[`file-list`,`disabled`]),vt.value?(S(),i(f(Ie),{key:0,type:`error`,role:`alert`},{default:D(()=>[P(h(vt.value),1)]),_:1})):R(``,!0),t(f(W),{loading:ft.value,disabled:ft.value||!pt.value.length,onClick:Wn},{default:D(()=>[...n[64]||=[P(` Применить ZIP и перезаписать результаты `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})):R(``,!0),Xe.value?(S(),i($,{key:2},{default:D(()=>[n[73]||=d(`p`,{class:`screens-title`},`Передача игры на площадку`,-1),t(f(J),{vertical:``},{default:D(()=>[n[71]||=d(`p`,null,` Пакет содержит снимок на момент подготовки. Последующие онлайн-изменения в него не попадут. На площадке игра начнётся с нуля: ходы, ответы и баллы в пакет не входят. Статус и прогресс игры на сервере сохраняются. Готовность пакета не подтверждает импорт на площадку. `,-1),U.value.export?.state===`preparing`?(S(),i(f(Ie),{key:0,type:`info`,role:`status`},{default:D(()=>[...n[66]||=[P(`Подготовка пакета…`,-1)]]),_:1})):U.value.export?.state===`ready`?(S(),i(f(Ie),{key:1,type:`success`,role:`status`},{default:D(()=>[...n[67]||=[P(`Пакет готов`,-1)]]),_:1})):U.value.export?.state===`failed`?(S(),i(f(Ie),{key:2,type:`error`,role:`alert`},{default:D(()=>[P(h(U.value.export.failure||`Не удалось подготовить пакет`),1)]),_:1})):R(``,!0),U.value.export?.state===`ready`?(S(),i(f(W),{key:3,loading:$e.value,disabled:$e.value,onClick:Vn},{default:D(()=>[...n[68]||=[P(`Скачать пакет`,-1)]]),_:1},8,[`loading`,`disabled`])):R(``,!0),t(f(W),{loading:Qe.value,disabled:Qe.value||X.value,onClick:Ln},{default:D(()=>[...n[69]||=[P(` Подготовить новый пакет `,-1)]]),_:1},8,[`loading`,`disabled`]),n[72]||=d(`p`,null,` Новый пакет заменяет текущую подготовку. Результаты ранее скачанных пакетов можно загрузить позже. `,-1),et.value?(S(),i(f(W),{key:4,type:`warning`,loading:X.value,disabled:Qe.value||X.value,onClick:Rn},{default:D(()=>[...n[70]||=[P(` Сбросить локальный режим `,-1)]]),_:1},8,[`loading`,`disabled`])):R(``,!0)]),_:1})]),_:1})):R(``,!0),t($,null,{default:D(()=>[n[76]||=d(`p`,{class:`screens-title`},`Выпуск билетов`,-1),t(f(J),{vertical:``},{default:D(()=>[t(f(Lt),{value:ge.value,"onUpdate:value":n[10]||=e=>ge.value=e,min:1,max:100},null,8,[`value`]),(S(!0),p(M,null,C(_e.value,e=>(S(),p(`div`,{key:e.ID,class:`issued-ticket`},[d(`div`,null,`Билет №`+h(e.ID),1),d(`a`,{href:e.URL,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть страницу билета `,8,xr),t(f(W),{size:`small`,onClick:t=>qr(e.URL,`Билет №${e.ID}`)},{default:D(()=>[...n[74]||=[P(` Показать QR `,-1)]]),_:1},8,[`onClick`])]))),128))]),_:1}),t(f(Y),{justify:`end`,class:`settings-actions`},{default:D(()=>[t(f(W),{loading:be.value,disabled:be.value,onClick:n[11]||=e=>Jr()},{default:D(()=>[...n[75]||=[P(` Выпустить `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})])]),_:1})):R(``,!0),G.value?(S(),i(f(Te),{key:1,name:`screens`,tab:`Экраны`},{default:D(()=>[d(`div`,Sr,[zt.value?(S(),i(f(Ie),{key:0,type:`error`},{default:D(()=>[P(h(zt.value),1)]),_:1})):R(``,!0),Rt.value?(S(),p(`p`,Cr,`Загрузка экранов…`)):R(``,!0),d(`div`,wr,[t($,null,{default:D(()=>[n[77]||=d(`h3`,{class:`screens-title`},`Превью экрана`,-1),rn.value?.status===`connected`?(S(),i(mt,{key:0,state:rn.value,questions:Kt.value,teams:Jt.value,"team-names":Xt.value},null,8,[`state`,`questions`,`teams`,`team-names`])):(S(),p(`div`,Tr,`Экран не подключён`))]),_:1}),t(Bn,{screens:xt.value,"screen-binding":xe.value,"is-busy":Z.value,onBind:On,onSetSound:Mn,onUnbind:Pn},null,8,[`screens`,`screen-binding`,`is-busy`])]),d(`div`,Er,[t(Fn,{screens:xt.value,"preview-questions":Kt.value,"preview-teams":Jt.value,"team-names":Xt.value,"screen-plan":Bt.value,"screen-plan-draft":Q.value,"screen-plan-saving":Ht.value,"screen-plan-mode":Wt.value,"screen-volume":nn.value,"is-busy":Z.value,onAddStep:_n,onEdit:vn,onCancel:yn,onRemoveStep:bn,onMoveStep:xn,onDirty:Sn,onClearPlan:wn,onSave:Tn,onSetStep:En,onCommand:Dn,"onUpdate:screenVolume":n[12]||=e=>nn.value=e},null,8,[`screens`,`preview-questions`,`preview-teams`,`team-names`,`screen-plan`,`screen-plan-draft`,`screen-plan-saving`,`screen-plan-mode`,`screen-volume`,`is-busy`]),t(Cn,{playlists:St.value,music:Ct.value,"is-busy":wt.value,onSetMusic:Nn,onSaveGroup:f(Dt),onDeleteGroup:f(Ot),onReorderGroups:f(kt),onSetTrackGroup:f(At),onCreatePlaylist:f(jt),onRenamePlaylist:f(Mt),onReorderTracks:f(Nt),onDeletePlaylist:f(Pt),onUploadTrack:f(Ft),onDeleteTrack:f(It)},null,8,[`playlists`,`music`,`is-busy`,`onSaveGroup`,`onDeleteGroup`,`onReorderGroups`,`onSetTrackGroup`,`onCreatePlaylist`,`onRenamePlaylist`,`onReorderTracks`,`onDeletePlaylist`,`onUploadTrack`,`onDeleteTrack`])])])]),_:1})):R(``,!0),G.value?(S(),i(f(Te),{key:2,name:`game`,tab:`Игра`},{default:D(()=>[d(`div`,Dr,[t($,null,{default:D(()=>[t(f(Y),{justify:`space-between`},{default:D(()=>[t(f(J),null,{default:D(()=>[t(f(V),{type:`info`},{default:D(()=>[P(h(xi.value),1)]),_:1}),f(gt)(U.value.startAt)?(S(),i(f(V),{key:0,type:`info`},{default:D(()=>[P(` Начало: `+h(f(gt)(U.value.startAt)),1)]),_:1})):R(``,!0)]),_:1}),t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:un},{default:D(()=>[...n[78]||=[P(`Проверить звук`,-1)]]),_:1}),U.value.status==`draft`?R(``,!0):(S(),i(f(W),{key:0,type:`info`,dashed:``,"aria-label":`Сбросить игру`,onClick:n[13]||=e=>Yr()},{default:D(()=>[t(f(H),null,{default:D(()=>[t(f(tn))]),_:1})]),_:1})),U.value.status==`draft`?(S(),i(f(W),{key:1,type:`info`,dashed:``,"aria-label":`Начать игру`,onClick:n[14]||=e=>Xr()},{default:D(()=>[t(f(H),null,{default:D(()=>[t(f(Zt))]),_:1})]),_:1})):R(``,!0),U.value.status==`pause`?(S(),i(f(W),{key:2,type:`info`,dashed:``,"aria-label":`Продолжить игру`,onClick:n[15]||=e=>Qr()},{default:D(()=>[t(f(H),null,{default:D(()=>[t(f(Zt))]),_:1})]),_:1})):R(``,!0),U.value.status==`run`?(S(),i(f(W),{key:3,type:`info`,dashed:``,"aria-label":`Поставить игру на паузу`,onClick:n[16]||=e=>Zr()},{default:D(()=>[t(f(H),null,{default:D(()=>[t(f(Yt))]),_:1})]),_:1})):R(``,!0),U.value.status==`finish`?R(``,!0):(S(),i(f(W),{key:4,type:`info`,dashed:``,"aria-label":`Завершить игру`,onClick:n[17]||=e=>$r()},{default:D(()=>[t(f(H),null,{default:D(()=>[t(f(qt))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1}),t(pn,{"map-items":Qt.value,teams:U.value.teams||[],onSaveItem:jn,onDragging:n[18]||=e=>en.value=e,onGiveApplication:tr},null,8,[`map-items`,`teams`]),t(f(Y),{justify:`space-between`,align:`center`},{default:D(()=>[t(f(V),{bordered:!1,type:`info`},{default:D(()=>[P(` Участвуют команд: `+h(bt.value),1)]),_:1}),bt.value?(S(),i(f(W),{key:0,quaternary:``,loading:c.value,disabled:c.value,onClick:n[19]||=e=>Kn()},{default:D(()=>[...n[79]||=[P(` QR команд `,-1)]]),_:1},8,[`loading`,`disabled`])):R(``,!0)]),_:1}),t(cr,{teams:U.value.teams||[],"can-print-receipts":f(we).environment===`venue`,"participation-options":yt,onAdd:n[20]||=e=>ee.value=!0,onOpenQr:lr,onPrint:ur,onPreview:n[21]||=(e,t)=>In(e,t,!0),onDelete:ir,onGiveApplication:tr},null,8,[`teams`,`can-print-receipts`])])]),_:1})):R(``,!0),G.value?(S(),i(f(Te),{key:3,name:`payment`,tab:`Оплата`},{default:D(()=>[d(`div`,Or,[t($,null,{default:D(()=>[t(f(Y),{align:`center`,justify:`space-between`},{default:D(()=>[n[81]||=d(`p`,{class:`screens-title`},`Билеты`,-1),t(f(W),{size:`small`,onClick:n[22]||=e=>he.value=!0},{default:D(()=>[...n[80]||=[P(` Проверить билет `,-1)]]),_:1})]),_:1})]),_:1}),t($,null,{default:D(()=>[n[82]||=d(`p`,{class:`screens-title`},`Оплата игры`,-1),d(`div`,kr,[t(f(Ve),{value:Kr,size:300,padding:0})]),d(`p`,null,[d(`a`,{href:Kr,class:`payment-link`,target:`_blank`,rel:`noreferrer`},` Открыть ссылку оплаты `)])]),_:1})])]),_:1})):R(``,!0),G.value?(S(),i(f(Te),{key:4,name:`answers`,tab:`Проверка ответов`},{default:D(()=>[d(`div`,Ar,[t($,null,{default:D(()=>[n[89]||=d(`p`,{class:`screens-title`},`Таблица результатов`,-1),n[90]||=d(`p`,null,`Сохранённые оценки. Таблица обновляется после сохранения баллов.`,-1),ci.value?(S(),i(f(Ue),{key:0},{default:D(()=>[...n[83]||=[P(`Загрузка результатов…`,-1)]]),_:1})):li.value?(S(),i(f(Ie),{key:1,type:`error`},{default:D(()=>[...n[84]||=[P(` Не удалось загрузить таблицу результатов. `,-1)]]),_:1})):si.value.length===0?(S(),p(`p`,jr,`Результатов пока нет.`)):(S(),p(`div`,Mr,[t(f(Ut),{"single-line":!1},{default:D(()=>[d(`thead`,null,[d(`tr`,null,[n[85]||=d(`th`,{scope:`col`},`Место`,-1),n[86]||=d(`th`,{scope:`col`},`Команда`,-1),(S(!0),p(M,null,C(oi.value,e=>(S(),p(`th`,{key:e.code,scope:`col`},h(e.code),1))),128)),n[87]||=d(`th`,{scope:`col`},`Сумма`,-1),n[88]||=d(`th`,{scope:`col`},`Поездки`,-1)])]),d(`tbody`,null,[(S(!0),p(M,null,C(si.value,e=>(S(),p(`tr`,{key:e.team?.ID},[d(`td`,null,h(e.place),1),d(`td`,null,h(e.team?.name),1),(S(!0),p(M,null,C(oi.value,t=>(S(),p(`td`,{key:t.code},h(e.answers?.find(e=>e.questionCode===t.code)?.score??`—`),1))),128)),d(`td`,null,h(e.totalScore),1),d(`td`,null,h(e.actionsCount),1)]))),128))])]),_:1})]))]),_:1}),ii.value.length===0||ai.value.length===0?(S(),p(`div`,Nr,` Вопросы дела не заданы или команды ещё не отвечали. `)):(S(!0),p(M,{key:1},C(ai.value,e=>(S(),i($,{key:e.team?.ID},{default:D(()=>[d(`h3`,Pr,h(e.team?.name),1),(S(!0),p(M,null,C(ii.value,n=>(S(),p(`div`,{key:n.code,class:`answers-question`},[d(`p`,Fr,h(n.code)+`: `+h(n.text),1),d(`p`,Ir,[d(`span`,Lr,h(n.answer||`—`),1)]),d(`div`,Rr,[d(`div`,zr,h(pi(e,n.code)||`—`),1),t(f(Lt),{value:di.value[fi(e.team?.ID,n.code)],"onUpdate:value":t=>mi(fi(e.team?.ID,n.code),t),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])])]))),128))]),_:2},1024))),128)),t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:n[23]||=e=>vi(),disabled:ii.value.length===0||ai.value.length===0},{default:D(()=>[...n[91]||=[P(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})])]),_:1})):R(``,!0),Fe.value?(S(),i(f(Te),{key:5,name:`state`,tab:`Состояние`,"tab-props":{tabindex:0,role:`tab`,"aria-selected":y.value===`state`,onKeydown:x}},{default:D(()=>[t(Xn,{devices:f(He),wifi:f(We),"server-time":f(Ge),"is-loading":f(Ke),"has-error":f(qe),summary:f(Je),onReload:f(Ye)},null,8,[`devices`,`wifi`,`server-time`,`is-loading`,`has-error`,`summary`,`onReload`])]),_:1},8,[`tab-props`])):R(``,!0)]),_:1},8,[`value`])])]),Xe.value?(S(),i(f(Se),{key:0,show:nt.value,"onUpdate:show":n[25]||=e=>nt.value=e,"mask-closable":!X.value,"close-on-esc":!X.value},{default:D(()=>[t(f(Le),{class:`reset-local-mode-modal`,bordered:!1,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`reset-local-mode-title`,"aria-describedby":`reset-local-mode-description`},{header:D(()=>[...n[92]||=[d(`span`,{id:`reset-local-mode-title`},`Сбросить локальный режим?`,-1)]]),footer:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{disabled:X.value,onClick:n[24]||=e=>nt.value=!1},{default:D(()=>[...n[93]||=[P(` Отмена `,-1)]]),_:1},8,[`disabled`]),t(f(W),{type:`warning`,loading:X.value,disabled:X.value,onClick:zn},{default:D(()=>[...n[94]||=[P(` Вернуть в обычный режим `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),default:D(()=>[n[95]||=d(`p`,{id:`reset-local-mode-description`},` Игра вернётся в обычный режим на сервере. Данные игры сохранятся. Локальная площадка продолжит работать отдельно; её результаты можно будет загрузить позже. `,-1)]),_:1})]),_:1},8,[`show`,`mask-closable`,`close-on-esc`])):R(``,!0),G.value?(S(),i(hr,{key:1,show:he.value,"onUpdate:show":n[26]||=e=>he.value=e},null,8,[`show`])):R(``,!0),G.value&&f(we).environment===`venue`?(S(),i(dr,{key:2,show:L.value,"onUpdate:show":n[27]||=e=>L.value=e,name:ce.value.name,preview:fe.value,"preparation-error":pe.value,"is-preparing":de.value,"is-printing":ue.value,onPrint:mr},null,8,[`show`,`name`,`preview`,`preparation-error`,`is-preparing`,`is-printing`])):R(``,!0),G.value?(S(),i(f(Se),{key:3,show:j.value,"onUpdate:show":n[30]||=e=>j.value=e},{default:D(()=>[t(f(Le),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:n[28]||=e=>j.value=!1},{default:D(()=>[...n[96]||=[P(` x `,-1)]]),_:1})]),footer:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:n[29]||=e=>rr(),ghost:``},{default:D(()=>[...n[99]||=[P(` Выдать `,-1)]]),_:1})]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[n[97]||=d(`p`,null,`Команда`,-1),d(`h3`,null,h(Yn.value.name),1),n[98]||=d(`p`,null,`Улика`,-1),d(`h3`,null,h($n.value.name),1),f(lt)($n.value)==`image`&&$n.value.image?(S(),p(`div`,Br,[d(`img`,{src:f(ut)($n.value.image),class:`give-application-image`},null,8,Vr)])):f(lt)($n.value)==`audio`&&$n.value.image?(S(),p(`audio`,{key:1,src:f(ut)($n.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,Hr)):f(lt)($n.value)==`pdf`&&$n.value.image?(S(),p(`a`,{key:2,href:f(ut)($n.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,Ur)):R(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`])):R(``,!0),G.value?(S(),i(f(Se),{key:4,show:ee.value,"onUpdate:show":n[36]||=e=>ee.value=e},{default:D(()=>[t(f(Le),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:n[31]||=e=>ee.value=!1},{default:D(()=>[...n[100]||=[P(` x `,-1)]]),_:1})]),footer:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:n[35]||=e=>nr(),disabled:ne.value.length==0},{default:D(()=>[...n[101]||=[P(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[t(f(Pe),{value:ne.value,"onUpdate:value":n[32]||=e=>ne.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`]),t(f(Pe),{value:re.value,"onUpdate:value":n[33]||=e=>re.value=e,"input-props":{type:`email`,autocomplete:`email`},placeholder:`Почта капитана (необязательно)`,"aria-label":`Почта капитана (необязательно)`},null,8,[`value`]),t(f(Lt),{value:F.value,"onUpdate:value":n[34]||=e=>F.value=e,min:1,max:8,precision:0,placeholder:`Количество игроков`,"aria-label":`Количество игроков`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):R(``,!0),G.value?(S(),i(f(Se),{key:5,show:N.value,"onUpdate:show":n[40]||=e=>N.value=e},{default:D(()=>[t(f(Le),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:n[37]||=e=>N.value=!1},{default:D(()=>[...n[102]||=[P(` x `,-1)]]),_:1})]),footer:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:n[39]||=e=>ar(),disabled:Zn.value!=Qn.value.name},{default:D(()=>[...n[105]||=[P(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[d(`p`,null,[n[103]||=P(` Введите название команды `,-1),t(f(Ue),{class:`name-text`,strong:``},{default:D(()=>[P(h(Qn.value.name),1)]),_:1}),n[104]||=P(` чтобы удалить его `,-1)]),t(f(Pe),{value:Zn.value,"onUpdate:value":n[38]||=e=>Zn.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):R(``,!0),G.value?(S(),i(f(Se),{key:6,show:te.value,"onUpdate:show":n[44]||=e=>te.value=e},{default:D(()=>[t(f(Le),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:n[41]||=e=>te.value=!1},{default:D(()=>[...n[106]||=[P(` x `,-1)]]),_:1})]),footer:D(()=>[t(f(Y),{justify:`end`},{default:D(()=>[t(f(W),{onClick:n[43]||=e=>or(),disabled:I.value!=U.value.name},{default:D(()=>[...n[109]||=[P(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[d(`p`,null,[n[107]||=P(` Введите название игры `,-1),t(f(Ue),{class:`name-text`,strong:``},{default:D(()=>[P(h(U.value.name),1)]),_:1}),n[108]||=P(` чтобы удалить её `,-1)]),t(f(Pe),{value:I.value,"onUpdate:value":n[42]||=e=>I.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`])):R(``,!0),G.value?(S(),i(f(Se),{key:7,show:ie.value,"onUpdate:show":n[46]||=e=>ie.value=e},{default:D(()=>[t(f(Le),{style:{width:`600px`},title:se.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":D(()=>[t(f(W),{onClick:n[45]||=e=>ie.value=!1},{default:D(()=>[...n[110]||=[P(` x `,-1)]]),_:1})]),footer:D(()=>[...n[111]||=[]]),default:D(()=>[t(f(J),{vertical:``},{default:D(()=>[d(`div`,Wr,[t(f(Ve),{value:ae.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`])):R(``,!0),G.value?(S(),i(f(Se),{key:8,show:ei.value,"onUpdate:show":n[48]||=e=>ei.value=e},{default:D(()=>[t(f(Le),{style:{width:`min(94vw, 800px)`},title:`Отзывы игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":D(()=>[t(f(W),{onClick:n[47]||=e=>ei.value=!1},{default:D(()=>[...n[112]||=[P(` x `,-1)]]),_:1})]),default:D(()=>[t(f(Y),{align:`center`,class:`reviews-summary`},{default:D(()=>[t(f(Re),{value:ni.value,readonly:``,"allow-half":``},null,8,[`value`]),d(`span`,null,h(ri.value?`${ni.value.toFixed(1)} · ${ri.value}`:`Пока нет отзывов`),1)]),_:1}),ti.value.length==0?(S(),p(`div`,Gr,`Отзывов пока нет.`)):R(``,!0),(S(!0),p(M,null,C(ti.value,e=>(S(),p(`div`,{key:e.ID,class:`review-row`},[t(f(Y),{justify:`space-between`,align:`center`},{default:D(()=>[d(`strong`,null,h(e.teamName),1),t(f(V),null,{default:D(()=>[P(h(e.status),1)]),_:2},1024)]),_:2},1024),t(f(Re),{value:e.rating,readonly:``,size:`small`},null,8,[`value`]),d(`div`,null,`Сложность: `+h([``,`лёгкая`,`средняя`,`тяжёлая`][e.difficulty||0]),1),d(`p`,null,h(e.text),1),e.status==`pending`?(S(),i(f(Y),{key:0,justify:`end`},{default:D(()=>[t(f(W),{type:`success`,onClick:t=>_i(e,`approved`)},{default:D(()=>[...n[113]||=[P(`Одобрить`,-1)]]),_:1},8,[`onClick`]),t(f(W),{type:`error`,ghost:``,onClick:t=>_i(e,`rejected`)},{default:D(()=>[...n[114]||=[P(`Отклонить`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):e.status==`approved`?(S(),i(f(Y),{key:1,justify:`end`},{default:D(()=>[t(f(W),{type:`error`,ghost:``,onClick:t=>_i(e,`hidden`)},{default:D(()=>[...n[115]||=[P(`Скрыть`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)):R(``,!0)]))),128))]),_:1})]),_:1},8,[`show`])):R(``,!0),t(st,{active:`games`})],64))}}),[[`__scopeId`,`data-v-72b7e6f0`]]),Jr=N({__name:`GameView`,setup(e){let t=B(0),n=le();return(e,r)=>(S(),i(qr,{key:`${f(n).params.id}-${t.value}`,onResultsApplied:r[0]||=e=>t.value++}))}});export{Jr as default}; |