diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b7c3a88 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,14 @@ +# Сборка и зависимости +dist +dist-ssr +node_modules + +# Генерируемые и lock-файлы +package-lock.json +src/api/generated +proto + +# Документы, которые форматируются в отдельных задачах / вручную +AGENTS.md +README.md +docker-compose.yml diff --git a/dist/assets/index-DGX5lmmj.js b/dist/assets/index-DIvjQ2Ad.js similarity index 92% rename from dist/assets/index-DGX5lmmj.js rename to dist/assets/index-DIvjQ2Ad.js index b06056c..9a93af6 100644 --- a/dist/assets/index-DGX5lmmj.js +++ b/dist/assets/index-DIvjQ2Ad.js @@ -2433,5 +2433,5 @@ `);return}e=EN(e),t!=null&&o.push(` ${e}${DN(t)}`)}),e&&o.push(`}`),o.join(` `)}function AN(e,t,n){e&&e.forEach(e=>{if(Array.isArray(e))AN(e,t,n);else if(typeof e==`function`){let r=e(t);Array.isArray(r)?AN(r,t,n):r&&n(r)}else e&&n(e)})}function jN(e,t,n,r,i,a){let o=e.$;!o||typeof o==`string`?t.push(o):typeof o==`function`?t.push(o({context:r.context,props:i})):(o.before&&o.before(r.context),!o.$||typeof o.$==`string`?t.push(o.$):o.$&&t.push(o.$({context:r.context,props:i})));let s=wN(t),c=kN(s,e.props,r,i);a&&c&&a.insertRule(c),!a&&c.length&&n.push(c),e.children&&AN(e.children,{context:r.context,props:i},e=>{if(typeof e==`string`){let t=kN(s,{raw:e},r,i);a?a.insertRule(t):n.push(t)}else jN(e,t,n,r,i,a)}),t.pop(),o&&o.after&&o.after(r.context)}function MN(e,t,n,r=!1){let i=[];return jN(e,[],i,t,n,r?e.instance.__styleSheet:void 0),r?``:i.join(` -`)}function NN(e){if(!e)return;let t=e.parentElement;t&&t.removeChild(e)}function PN(e){return document.querySelector(`style[cssr-id="${e}"]`)}function FN(e){let t=document.createElement(`style`);return t.setAttribute(`cssr-id`,e),t}window&&(window.__cssrContext={});function IN(e){let t=e.getAttribute(`mount-count`);return t===null?null:Number(t)}function LN(e,t){e.setAttribute(`mount-count`,String(t))}function RN(e,t,n,r){let{els:i}=t;if(n===void 0)i.forEach(NN),t.els=[];else{let e=PN(n);if(e&&i.includes(e)){let a=IN(e);r?a===null?console.error(`[css-render/unmount]: The style with target='${n}' is mounted in count mode.`):a<=1?(NN(e),t.els=i.filter(t=>t!==e)):LN(e,a-1):a===null?(NN(e),t.els=i.filter(t=>t!==e)):console.error(`[css-render/unmount]: The style with target='${n}' is mounted in no-count mode.`)}}}function zN(e,t){e.push(t)}function BN(e,t,n,r,i,a,o,s,c){if(o&&!c){if(n===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let i=window.__cssrContext;i[n]||(i[n]=!0,MN(t,e,r,o));return}let l,{els:u}=t,d;if(n===void 0&&(d=t.render(r),n=Vc(d)),c){c(n,d??t.render(r));return}let f=PN(n);if(s||f===null){if(l=f===null?FN(n):f,d===void 0&&(d=t.render(r)),l.textContent=d,f!==null)return;if(i){let e=document.head.getElementsByTagName(`style`)[0]||null;document.head.insertBefore(l,e)}else document.head.appendChild(l);a&&LN(l,1),zN(u,l)}else{let e=IN(f);a?e===null?console.error(`[css-render/mount]: The style with id='${n}' has been mounted in no-count mode.`):LN(f,e+1):e!==null&&console.error(`[css-render/mount]: The style with id='${n}' has been mounted in count mode.`)}return f??l}function VN(e){return MN(this,this.instance,e)}function HN(e={}){let{target:t,id:n,ssr:r,props:i,count:a=!1,head:o=!1,boost:s=!1,force:c=!1}=e;return BN(this.instance,this,n??t,i,o,a,s,c,r)}function UN(e={}){let{id:t,target:n,delay:r=0,count:i=!1}=e;r===0?RN(this.instance,this,t??n,i):setTimeout(()=>RN(this.instance,this,t??n,i),r)}var WN=function(e,t,n,r){return{instance:e,$:t,props:n,children:r,els:[],render:VN,mount:HN,unmount:UN}},GN=function(e,t,n,r){return Array.isArray(t)?WN(e,{$:null},null,t):Array.isArray(n)?WN(e,t,null,n):Array.isArray(r)?WN(e,t,n,r):WN(e,t,n,null)};function KN(e={}){let t=null,n={c:((...e)=>GN(n,...e)),use:(e,...t)=>e.install(n,...t),find:PN,context:{},config:e,get __styleSheet(){if(!t){let e=document.createElement(`style`);return document.head.appendChild(e),t=document.styleSheets[document.styleSheets.length-1],t}return t}};return n}var{c:qN}=KN(),JN=qN(`.xicon`,{width:`1em`,height:`1em`,display:`inline-flex`},[qN(`svg`,{width:`1em`,height:`1em`}),qN(`svg:not([fill])`,{fill:`currentColor`})]),YN=()=>{JN.mount({id:`xicons-icon`})},XN={size:[String,Number],color:String,tag:String},ZN=Symbol(`IconConfigInjection`),QN=`span`,$N=N({name:`Icon`,props:XN,setup(e,{slots:t}){let n=Wn(ZN,null),r=V(()=>{let t=e.size??n?.size;if(t!==void 0)return typeof t==`number`||/^\d+$/.test(t)?`${t}px`:t}),i=V(()=>{let{color:t}=e;return t===void 0?n?n.color:void 0:t}),a=V(()=>{let{tag:t}=e;return t===void 0?n?.tag??QN:t});return Vr(()=>{YN()}),()=>H(a.value,{class:`xicon`,style:{color:i.value,fontSize:r.value}},[ri(t,`default`)])}}),eP={class:`menu-block`},tP={class:`right-group`},nP=N({__name:`HeaderMenu`,props:{active:{type:String,required:!1}},setup(e){let t=e,n=lN();n.initFromStorage();let r=bj(),i=uN(),a=k([]);async function o(){a.value=[];let e=await i.GetPermissions({});a.value=e.permissions}o();function s(e){return a.value.includes(e)}let c=()=>{r.push(`/login`)},l=()=>{n.logout(),r.push(`/login`)},u=k(!1);return(e,i)=>(F(),I(`div`,eP,[L(`div`,{onClick:i[0]||=e=>u.value=!u.value,class:`burger-button`},[R(A($N),{class:`burger-icon`,size:`28`},{default:M(()=>[R(A(vN))]),_:1})]),L(`div`,{class:_e([`left-group menu-buttons-block`,u.value?``:`menu-buttons-block-active`])},[L(`div`,{class:_e([`menu-item-block`,{active:t.active==`main`}]),onClick:i[1]||=e=>A(r).push(`/`)},` Главная `,2),A(n).hasRole(`user`)?(F(),I(`div`,{key:0,class:_e([`menu-item-block`,{active:t.active==`office`}]),onClick:i[2]||=e=>A(r).push(`/office`)},` Кабинет `,2)):B(``,!0),s(`games_page`)?(F(),I(`div`,{key:1,class:_e([`menu-item-block`,{active:t.active==`games`}]),onClick:i[3]||=e=>A(r).push(`/games`)},` Игры `,2)):B(``,!0),L(`div`,{class:_e([`menu-item-block`,{active:t.active==`catalog`}]),onClick:i[4]||=e=>A(r).push(`/catalog`)},` Каталог `,2),s(`scenarios_page`)?(F(),I(`div`,{key:2,class:_e([`menu-item-block`,{active:t.active==`scenarios`}]),onClick:i[5]||=e=>A(r).push(`/scenarios`)},` Мои сценарии `,2)):B(``,!0),s(`users_page`)?(F(),I(`div`,{key:3,class:_e([`menu-item-block`,{active:t.active==`users`}]),onClick:i[6]||=e=>A(r).push(`/users`)},` Пользователи `,2)):B(``,!0)],2),L(`div`,tP,[A(n).isAuthenticated?B(``,!0):(F(),I(`div`,{key:0,class:`menu-item-block right`,onClick:c},` Войти `)),A(n).isAuthenticated?(F(),I(`div`,{key:1,class:`menu-item-block right`,onClick:l},`Выйти`)):B(``,!0)])]))}}),rP=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},iP=rP(nP,[[`__scopeId`,`data-v-5e423637`]]),aP={class:`center-block-custom`},oP={class:`width1200 display-table`},sP=[`onClick`],cP={class:`scenario-content-block`},lP={class:`scenario-title`},uP={class:`scenario-description`},dP={class:`scenario-label`},fP=rP(N({__name:`CatalogPage`,setup(e){let t=uN(),n=k([]),r=bj();async function i(){n.value=[];let e=await t.GetScenariosCatalog({});n.value=e.scenarios}async function a(e){r.push(`/scenarios/`+e)}return i(),(e,t)=>(F(),I(P,null,[L(`div`,aP,[L(`div`,oP,[(F(!0),I(P,null,ni(n.value,e=>(F(),I(`div`,{class:`scenario-block`,onClick:t=>a(e.id),key:e.id},[L(`div`,{class:`scenario-image-block scenario-image`,style:fe({backgroundImage:`url(${e.image})`})},null,4),L(`div`,cP,[L(`p`,lP,O(e.name),1),L(`p`,uP,O(e.description),1),L(`p`,dP,[R(A(XC),{bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[z(`Автор: `+O(e.author?.username),1)]),_:2},1024)])])],8,sP))),128))])]),R(iP,{active:`catalog`})],64))}}),[[`__scopeId`,`data-v-d72c95c2`]]),pP=N({__name:`CatalogView`,setup(e){return(e,t)=>(F(),Da(fP))}}),mP={class:`text-with-font`},hP=rP(N({__name:`HeaderText`,setup(e){return(e,t)=>(F(),I(`span`,mP,[ri(e.$slots,`default`,{},void 0,!0)]))}}),[[`__scopeId`,`data-v-e13ee3bd`]]),gP={class:`center-block-custom`},_P={class:`width700 doc-page`},vP={class:`doc-title`},yP={key:0,class:`doc-loading`},bP={key:2,class:`paper-block`},xP={class:`paper`},SP={class:`doc-text`},CP={class:`docs-links`},wP=rP(N({__name:`DocsPage`,props:{kind:{}},setup(e){let t=e,n={terms:`Пользовательское соглашение`,privacy:`Политика конфиденциальности`,consent:`Согласие на обработку персональных данных`},r=k(``),i=k(!0),a=k(``);return Hr(async()=>{let e=uN(),n={terms:()=>e.GetTerms({}),privacy:()=>e.GetPrivacy({}),consent:()=>e.GetConsent({})};try{let e=await n[t.kind]();e.error?a.value=e.error:r.value=e.text||``}catch(e){a.value=e instanceof Error?e.message:`Не удалось загрузить документ`}finally{i.value=!1}}),(e,o)=>(F(),I(`div`,gP,[L(`div`,_P,[L(`h1`,vP,[R(hP,null,{default:M(()=>[z(O(n[t.kind]),1)]),_:1})]),i.value?(F(),I(`div`,yP,[R(A(oA),{size:`large`})])):a.value?(F(),Da(A(pw),{key:1,type:`error`,"show-icon":!1,class:`doc-error`},{default:M(()=>[z(O(a.value),1)]),_:1})):(F(),I(`div`,bP,[L(`div`,xP,[L(`p`,SP,O(r.value),1)]),o[0]||=L(`div`,{class:`paper-shadow paper-shadow-left`},null,-1),o[1]||=L(`div`,{class:`paper-shadow paper-shadow-right`},null,-1)])),L(`div`,CP,[o[5]||=z(` Смотрите также: `,-1),R(A(YM),{to:`/user-agreement`,class:`docs-link`},{default:M(()=>[...o[2]||=[z(`Пользовательское соглашение`,-1)]]),_:1}),o[6]||=z(` · `,-1),R(A(YM),{to:`/privacy-policy`,class:`docs-link`},{default:M(()=>[...o[3]||=[z(`Политика конфиденциальности`,-1)]]),_:1}),o[7]||=z(` · `,-1),R(A(YM),{to:`/consent`,class:`docs-link`},{default:M(()=>[...o[4]||=[z(`Согласие на обработку персональных данных`,-1)]]),_:1})])])]))}}),[[`__scopeId`,`data-v-6160a426`]]),TP=N({__name:`ConsentView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`consent`}),R(iP)],64))}}),EP={class:`center-block-custom`},DP={class:`width1200`},OP=[`onClick`],kP={class:`game-title`},AP={class:`game-description`},jP=rP(N({__name:`GamesPage`,setup(e){let t=uN(),n=dD(),r=bj(),i=k([]);async function a(){i.value=[];let e=await t.GetGames({});if(e.error!=``){n.error(e.error);return}i.value=e.games||[]}a();async function o(e){r.push(`/games/`+e)}return(e,t)=>(F(),I(P,null,[L(`div`,EP,[L(`div`,DP,[(F(!0),I(P,null,ni(i.value,e=>(F(),I(`div`,{key:e.id,class:`game-block`,onClick:t=>o(e.id)},[L(`div`,kP,O(e.name),1),L(`div`,AP,O(e.description),1)],8,OP))),128))])]),R(iP,{active:`games`})],64))}}),[[`__scopeId`,`data-v-45eae4d9`]]),MP=N({__name:`GamesView`,setup(e){return(e,t)=>(F(),Da(jP))}}),NP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},PP=N({name:`Archive`,render:function(e,t){return F(),I(`svg`,NP,t[0]||=[L(`path`,{d:`M14 19h4v2h-4z`,fill:`currentColor`},null,-1),L(`path`,{d:`M6 2v26a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2zm18 26H8V16h16zm0-14H8v-4h16zM8 8V4h16v4z`,fill:`currentColor`},null,-1)])}}),FP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},IP=N({name:`Flag`,render:function(e,t){return F(),I(`svg`,FP,t[0]||=[L(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,fill:`currentColor`},null,-1)])}}),LP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},RP=N({name:`Pause`,render:function(e,t){return F(),I(`svg`,LP,t[0]||=[L(`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),L(`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)])}}),zP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},BP=N({name:`Play`,render:function(e,t){return F(),I(`svg`,zP,t[0]||=[L(`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)])}}),VP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},HP=N({name:`Reset`,render:function(e,t){return F(),I(`svg`,VP,t[0]||=[L(`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)])}}),UP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},WP=N({name:`Settings`,render:function(e,t){return F(),I(`svg`,UP,t[0]||=[L(`path`,{d:`M27 16.76V16v-.77l1.92-1.68A2 2 0 0 0 29.3 11l-2.36-4a2 2 0 0 0-1.73-1a2 2 0 0 0-.64.1l-2.43.82a11.35 11.35 0 0 0-1.31-.75l-.51-2.52a2 2 0 0 0-2-1.61h-4.68a2 2 0 0 0-2 1.61l-.51 2.52a11.48 11.48 0 0 0-1.32.75l-2.38-.86A2 2 0 0 0 6.79 6a2 2 0 0 0-1.73 1L2.7 11a2 2 0 0 0 .41 2.51L5 15.24v1.53l-1.89 1.68A2 2 0 0 0 2.7 21l2.36 4a2 2 0 0 0 1.73 1a2 2 0 0 0 .64-.1l2.43-.82a11.35 11.35 0 0 0 1.31.75l.51 2.52a2 2 0 0 0 2 1.61h4.72a2 2 0 0 0 2-1.61l.51-2.52a11.48 11.48 0 0 0 1.32-.75l2.42.82a2 2 0 0 0 .64.1a2 2 0 0 0 1.73-1l2.28-4a2 2 0 0 0-.41-2.51zM25.21 24l-3.43-1.16a8.86 8.86 0 0 1-2.71 1.57L18.36 28h-4.72l-.71-3.55a9.36 9.36 0 0 1-2.7-1.57L6.79 24l-2.36-4l2.72-2.4a8.9 8.9 0 0 1 0-3.13L4.43 12l2.36-4l3.43 1.16a8.86 8.86 0 0 1 2.71-1.57L13.64 4h4.72l.71 3.55a9.36 9.36 0 0 1 2.7 1.57L25.21 8l2.36 4l-2.72 2.4a8.9 8.9 0 0 1 0 3.13L27.57 20z`,fill:`currentColor`},null,-1),L(`path`,{d:`M16 22a6 6 0 1 1 6-6a5.94 5.94 0 0 1-6 6zm0-10a3.91 3.91 0 0 0-4 4a3.91 3.91 0 0 0 4 4a3.91 3.91 0 0 0 4-4a3.91 3.91 0 0 0-4-4z`,fill:`currentColor`},null,-1)])}});function GP(e,t=5e3){let n=k(!0),r=null,i=()=>{n.value=!0,e(),r=window.setInterval(e,t)},a=()=>{n.value=!1,r&&=(clearInterval(r),null)};return Hr(i),Kr(a),{isActive:n,start:i,stop:a}}function KP(e){let t=e?.file_type;if(t===`pdf`||t===`image`||t===`audio`)return t;let n=(e?.image||``).toLowerCase();return/\.pdf($|\?)/.test(n)?`pdf`:/\.(mp3|wav|ogg|m4a|aac|flac|opus)($|\?)/.test(n)?`audio`:/\.(png|jpe?g|gif|webp|bmp|svg)($|\?)/.test(n)?`image`:``}function qP(e){if(!e)return``;let t=e.toLowerCase();return t.startsWith(`http://`)||t.startsWith(`https://`)?e:e.startsWith(`/`)?cN()+e:`${cN()}/api/files/${e}`}function JP(e){return e?e.split(`/`).pop()||e:``}var YP={class:`center-block-custom`},XP={class:`width1200`},ZP={class:`settings-block`},QP={class:`team-content-block`},$P={class:`title-block`},eF={class:`team-name-block`},tF={key:0,class:`give-application-image-block`},nF=[`src`],rF=[`src`],iF=[`href`],aF={class:`qr-block`},oF={key:0,class:`answers-empty`},sF={class:`answers-question-title`},cF={class:`answers-question-answer`},lF={class:`answers-team-name`},uF={class:`answers-team-answer`},dF=rP(N({__name:`GamePage`,setup(e){let t=uN(),n=bj(),r=xj().params.id,i=dD(),a=k(!1),o=k(!1),s=k(!1),c=k(!1),l=k(!1),u=k(``),d=k(``),f=k(!1),p=k(``),m=k(``),h=k({id:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,scenario:void 0,teams:void 0});async function g(e){let n=await t.GetGame({id:e});if(n.error!=``){i.error(n.error);return}h.value=n.game,h.value.teams=h.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(na?1:i{g(Number(r))},2e3);async function ie(){let e=await t.ResetGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function ae(){let e=await t.StartGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function oe(){let e=await t.PauseGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function se(){let e=await t.PlayGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function ce(){let e=await t.FinishGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}let le=k(!1),ue=k([]),de=k([]),fe=k({});function pe(e,t){return(e??``)+`:`+(t??``)}function me(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function he(e,t){fe.value[e]=t===null?void 0:t}async function ge(){let e=await t.GetGameAnswers({gameId:Number(r)});if(e.error!=``){i.error(e.error);return}ue.value=e.questions||[],de.value=e.teams||[];let n={};for(let e of de.value)for(let t of e.answers||[])n[pe(e.team?.id,t.questionCode)]=t.score;fe.value=n}async function _e(){le.value=!0,await ge()}async function ve(){for(let e of ue.value)for(let n of de.value){let r=fe.value[pe(n.team?.id,e.code)],a=await t.SetTeamAnswerScore({id:n.team?.id,questionCode:e.code,score:r??void 0});if(a.error!=``){i.error(a.error);return}}i.success(`Баллы сохранены`),await ge()}function ye(e){let[t,n]=e.split(`T`),[r,i,a]=t.split(`-`).map(Number),[o,s,c]=(n.split(`.`)[0]||`00:00:00`).split(`:`).map(Number);return new Date(Date.UTC(r,i-1,a,o,s,c||0))}function be(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function xe(e,t){if(e==``)return`Игра ещё не началась`;let n=ye(e),r=be();t!=``&&(r=ye(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 Se=k(``);return GP(()=>{Se.value=xe(h.value.startedAt||``,h.value.endedAt||``)},1e3),(e,t)=>(F(),I(P,null,[L(`div`,YP,[L(`div`,XP,[L(`div`,ZP,[R(A(HD),{justify:`space-between`},{default:M(()=>[R(A(FD),null,{default:M(()=>[R(A(XC),{bordered:!1,type:`info`},{default:M(()=>[z(` Команд: `+O(h.value.teams?.length),1)]),_:1}),R(A(XC),{type:`info`},{default:M(()=>[z(O(Se.value),1)]),_:1})]),_:1}),R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{quaternary:``,onClick:t[0]||=e=>re(A(C),`Админка`)},{default:M(()=>[...t[35]||=[z(` QR `,-1)]]),_:1}),R(A($),{quaternary:``,onClick:t[1]||=e=>_e()},{default:M(()=>[...t[36]||=[z(` Ответы команд `,-1)]]),_:1}),R(A($),{quaternary:``,onClick:t[2]||=e=>a.value=!0},{default:M(()=>[R(A($N),{class:`settings-icon`},{default:M(()=>[R(A(WP))]),_:1}),t[37]||=z(` Настройки `,-1)]),_:1}),(h.value.teams?.length||0)==0?(F(),Da(A($),{key:0,type:`error`,quaternary:``,onClick:t[3]||=e=>l.value=!0},{default:M(()=>[...t[38]||=[z(` Удалить игру `,-1)]]),_:1})):B(``,!0),R(A(FD),null,{default:M(()=>[h.value.status==`draft`?B(``,!0):(F(),Da(A($),{key:0,type:`info`,dashed:``,onClick:t[4]||=e=>ie()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(HP))]),_:1})]),_:1})),h.value.status==`draft`?(F(),Da(A($),{key:1,type:`info`,dashed:``,onClick:t[5]||=e=>ae()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(BP))]),_:1})]),_:1})):B(``,!0),h.value.status==`pause`?(F(),Da(A($),{key:2,type:`info`,dashed:``,onClick:t[6]||=e=>se()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(BP))]),_:1})]),_:1})):B(``,!0),h.value.status==`run`?(F(),Da(A($),{key:3,type:`info`,dashed:``,onClick:t[7]||=e=>oe()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(RP))]),_:1})]),_:1})):B(``,!0),h.value.status==`finish`?B(``,!0):(F(),Da(A($),{key:4,type:`info`,dashed:``,onClick:t[8]||=e=>ce()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(IP))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),L(`div`,{class:`team-block team-block-hover`,onClick:t[9]||=e=>s.value=!0},[...t[39]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]]),(F(!0),I(P,null,ni(h.value.teams,e=>(F(),I(`div`,{key:e.id,class:`team-block`},[L(`div`,QP,[R(A(HD),{justify:`space-between`},{default:M(()=>[L(`div`,$P,[L(`span`,eF,O(e.name),1),L(`div`,null,` Поездки: `+O(e.actionsCount),1)]),R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>re(ne(e.id,e.password),`Подсмотреть игру`)},{default:M(()=>[...t[40]||=[z(` QR `,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>_(e.id,e.password,!0)},{default:M(()=>[...t[41]||=[z(` Подсмотреть игру `,-1)]]),_:1},8,[`onClick`]),R(A($),{type:`error`,ghost:``,onClick:t=>E(e)},{default:M(()=>[...t[42]||=[z(` Удалить `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(F(!0),I(P,null,ni(e.applications,t=>(F(),Da(A($),{key:t.name,class:`link-button`,onClick:n=>w(e,t)},{default:M(()=>[z(` Выдать: `+O(t.name),1)]),_:2},1032,[`onClick`]))),128))])]))),128))])]),R(A(XE),{show:a.value,"onUpdate:show":t[14]||=e=>a.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[10]||=e=>a.value=!1},{default:M(()=>[...t[43]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[13]||=e=>v(),ghost:``},{default:M(()=>[...t[46]||=[z(` Сохранить изменения `,-1)]]),_:1})]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[t[44]||=L(`p`,null,`Название`,-1),R(A(jw),{value:h.value.name,"onUpdate:value":t[11]||=e=>h.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),t[45]||=L(`p`,{class:`settings-header`},`Описание`,-1),R(A(jw),{value:h.value.description,"onUpdate:value":t[12]||=e=>h.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:o.value,"onUpdate:show":t[17]||=e=>o.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[15]||=e=>o.value=!1},{default:M(()=>[...t[47]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[16]||=e=>ee(),ghost:``},{default:M(()=>[...t[50]||=[z(` Выдать `,-1)]]),_:1})]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[t[48]||=L(`p`,null,`Команда`,-1),L(`h3`,null,O(y.value.name),1),t[49]||=L(`p`,null,`Улика`,-1),L(`h3`,null,O(S.value.name),1),A(KP)(S.value)==`image`&&S.value.image?(F(),I(`div`,tF,[L(`img`,{src:A(qP)(S.value.image),class:`give-application-image`},null,8,nF)])):A(KP)(S.value)==`audio`&&S.value.image?(F(),I(`audio`,{key:1,src:A(qP)(S.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,rF)):A(KP)(S.value)==`pdf`&&S.value.image?(F(),I(`a`,{key:2,href:A(qP)(S.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,iF)):B(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:s.value,"onUpdate:show":t[21]||=e=>s.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[18]||=e=>s.value=!1},{default:M(()=>[...t[51]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[20]||=e=>T(),disabled:u.value.length==0},{default:M(()=>[...t[52]||=[z(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(jw),{value:u.value,"onUpdate:value":t[19]||=e=>u.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:c.value,"onUpdate:show":t[25]||=e=>c.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[22]||=e=>c.value=!1},{default:M(()=>[...t[53]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[24]||=e=>D(),disabled:b.value!=x.value.name},{default:M(()=>[...t[56]||=[z(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`p`,null,[t[54]||=z(` Введите название команды `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(x.value.name),1)]),_:1}),t[55]||=z(` чтобы удалить его `,-1)]),R(A(jw),{value:b.value,"onUpdate:value":t[23]||=e=>b.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:l.value,"onUpdate:show":t[29]||=e=>l.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[26]||=e=>l.value=!1},{default:M(()=>[...t[57]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[28]||=e=>te(),disabled:d.value!=h.value.name},{default:M(()=>[...t[60]||=[z(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`p`,null,[t[58]||=z(` Введите название игры `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(h.value.name),1)]),_:1}),t[59]||=z(` чтобы удалить её `,-1)]),R(A(jw),{value:d.value,"onUpdate:value":t[27]||=e=>d.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:f.value,"onUpdate:show":t[31]||=e=>f.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:m.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[30]||=e=>f.value=!1},{default:M(()=>[...t[61]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[...t[62]||=[]]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`div`,aF,[R(A(nA),{value:p.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`]),R(A(XE),{show:le.value,"onUpdate:show":t[34]||=e=>le.value=e},{default:M(()=>[R(A(MT),{style:{width:`min(94vw, 900px)`},title:`Ответы команд`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":M(()=>[R(A($),{onClick:t[32]||=e=>le.value=!1},{default:M(()=>[...t[63]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[33]||=e=>ve(),disabled:ue.value.length==0},{default:M(()=>[...t[64]||=[z(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[ue.value.length==0?(F(),I(`div`,oF,` Вопросы дела не заданы или команды ещё не отвечали. `)):B(``,!0),(F(!0),I(P,null,ni(ue.value,e=>(F(),I(`div`,{key:e.code,class:`answers-question-block`},[L(`p`,sF,O(e.code)+`: `+O(e.text),1),L(`p`,cF,` Правильный ответ: `+O(e.answer||`—`),1),(F(!0),I(P,null,ni(de.value,t=>(F(),I(`div`,{key:t.team?.id,class:`answers-team-row`},[L(`div`,lF,O(t.team?.name),1),L(`div`,uF,O(me(t,e.code)||`—`),1),R(A(Pk),{value:fe.value[pe(t.team?.id,e.code)],"onUpdate:value":n=>he(pe(t.team?.id,e.code),n),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])]))),128))]))),128))]),_:1})]),_:1},8,[`show`]),R(iP,{active:`games`})],64))}}),[[`__scopeId`,`data-v-0379e6c1`]]),fF=N({__name:`GameView`,setup(e){return(e,t)=>(F(),Da(dF))}}),pF=N({__name:`HomeView`,setup(e){return(e,t)=>(F(),I(P,null,[t[0]||=L(`div`,{class:`center-block-custom content-block center-middle-block-custom height80`},[L(`div`,null,[L(`h1`,{class:`font-text`},`Вечерний детектив`),L(`h3`,{class:`font-text`},`Дело №0`),L(`p`,{class:`content-text`},` Поиграем? `)])],-1),R(iP,{active:`main`})],64))}}),mF={class:`center-block-custom content-block center-middle-block-custom height80`},hF={class:`form-button-wrapper`},gF={class:`form-label`},_F={key:0},vF={key:1},yF={class:`form-label`},bF={class:`form-label`},xF={class:`form-button-wrapper`},SF={class:`form-label`},CF={key:0},wF={key:1},TF={class:`form-button-wrapper`},EF={class:`form-label`},DF={key:0},OF={key:1},kF=rP(N({__name:`LoginPage`,setup(e){let t=lN(),n=bj(),r=dD(),i=k(``),a=k(``),o=k(``),s=k(!1),c=k(!1),l=V(()=>[`@mail.ru`,`@yandex.ru`,`@gmail.com`].map(e=>{let t=a.value.split(`@`)[0];return{label:t+e,value:t+e}}));async function u(){if(!await t.login(a.value,o.value)&&t.error!=null){r.error(t.error);return}n.push(`/office`)}async function d(){if(!(!s.value||!c.value)){if(!await t.signup(i.value,a.value,s.value,c.value)&&t.error!=null){r.error(t.error);return}r.info(`Пароль отправлен на почту`),s.value=!1,c.value=!1}}async function f(){if(!await t.refreshPassword(a.value)&&t.error!=null){r.error(t.error);return}r.info(`Пароль отправлен на почту`)}return(e,n)=>(F(),I(`div`,mF,[R(A(MT),{style:{"margin-bottom":`16px`},class:`sign-card`},{default:M(()=>[R(A(vA),{type:`line`,animated:``},{default:M(()=>[R(A(mA),{name:`signin`,tab:`Вход`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[7]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[0]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),n[8]||=L(`div`,{class:`form-label`},`Пароль`,-1),R(A(jw),{value:o.value,"onUpdate:value":n[1]||=e=>o.value=e,type:`password`,placeholder:`********`},null,8,[`value`]),L(`div`,hF,[L(`div`,gF,[R(A($),{onClick:u,disabled:a.value.length==0||o.value.length==0},{default:M(()=>[A(t).isLoading?(F(),I(`span`,vF,` Подождите... `)):(F(),I(`span`,_F,` Вход `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1}),R(A(mA),{name:`signup`,tab:`Регистрация`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[11]||=L(`div`,{class:`form-label`},`Позывной`,-1),R(A(jw),{value:i.value,"onUpdate:value":n[2]||=e=>i.value=e,type:`text`,placeholder:`Шерлок`},null,8,[`value`]),n[12]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[3]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),L(`div`,yF,[R(A(GT),{checked:s.value,"onUpdate:checked":n[4]||=e=>s.value=e},{default:M(()=>[...n[9]||=[z(` Я принимаю условия `,-1),L(`a`,{href:`/user-agreement`,target:`_blank`,class:`docs-link`},`пользовательского соглашения`,-1)]]),_:1},8,[`checked`])]),L(`div`,bF,[R(A(GT),{checked:c.value,"onUpdate:checked":n[5]||=e=>c.value=e},{default:M(()=>[...n[10]||=[z(` Я даю согласие на обработку `,-1),L(`a`,{href:`/privacy-policy`,target:`_blank`,class:`docs-link`},`персональных данных`,-1)]]),_:1},8,[`checked`])]),L(`div`,xF,[L(`div`,SF,[R(A($),{onClick:d,disabled:i.value.length==0||a.value.length==0||!s.value||!c.value},{default:M(()=>[A(t).isLoading?(F(),I(`span`,wF,` Подождите... `)):(F(),I(`span`,CF,` Регистрация `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1}),R(A(mA),{name:`new-password`,tab:`Новый пароль`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[13]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[6]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),L(`div`,TF,[L(`div`,EF,[R(A($),{onClick:f,disabled:a.value.length==0},{default:M(()=>[A(t).isLoading?(F(),I(`span`,OF,` Подождите... `)):(F(),I(`span`,DF,` Прислать новый пароль `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-33c96af1`]]),AF=N({__name:`LoginView`,setup(e){return(e,t)=>(F(),I(P,null,[R(kF),R(iP)],64))}}),jF={class:`center-block-custom`},MF={class:`width700`},NF={class:`danger-zone`},PF={key:0,class:`delete-modal-error`},FF={class:`delete-modal-buttons`},IF=rP(N({__name:`OfficePage`,setup(e){let t=lN(),n=bj(),r=dD(),i=uN(),a=k([]);async function o(){a.value=[];let e=await i.GetPermissions({});a.value=e.permissions}o();function s(){let e=new Date,t=e.getDay(),n=e.getDate(),r=e.getMonth()+1,i=t===1,a=t===5&&n===13,o=r===1&&n===1||r===12&&n===31,s=r>=6&&r<=8,c=r===12||r<=2,l=n%5==0,u=[`Всегда носи с собой запасную ручку — признания любят записывать в самый неподходящий момент.`,`Если подозреваемый слишком вежлив, он либо дипломат, либо прячет труп в гараже.`,`Кофе в участке — это не напиток, это яд для улик. Пей только свой.`,`Следы на месте преступления всегда ведут к тому, кто забыл закрыть дверь.`,`Лучший способ разговорить молчуна — предложить ему чай с тремя ложками сахара.`,`Если всё указывает на дворецкого, ищи того, кто нанимал дворецкого.`,`Записывай каждую мелочь. Особенно цвет носков убитого.`,`Не верь алиби, которое начинается со слов 'Я бы никогда...'`,`Преступник всегда возвращается на место преступления. Или за забытым телефоном.`,`Ищи того, кому есть что терять, кроме своего времени.`,`Если женщина плачет в кабинете — дай ей платок. Если мужчина — дай ему стакан воды.`,`Самое опасное оружие — не пистолет, а бухгалтерская книга.`,`Собака всегда знает убийцу. Но она не говорит, потому что у неё контракт.`,`Проверяй чеки, билеты и смс. Ложь не терпит документации.`,`Если у тела нет врагов — ты плохо искал врагов.`,`Лупа нужна не для увеличения улик, а для того, чтобы выглядеть умнее.`,`Интуиция — это когда ты уже знаешь ответ, но хочешь убедиться, что не ошибся.`,`Подозревай всех, даже самого себя. Иногда преступник — это ты в прошлом.`,`Хороший детектив видит улики. Великий — видит их отсутствие.`,`Никогда не допрашивай свидетеля на голодный желудок. И себя тоже.`,`Если дело зашло в тупик, переверни бумаги вверх ногами.`,`Самый ценный свидетель — это камера наблюдения, у которой сломана защита.`,`Не ищи мотив. Ищи возможность.`,`Преступник не оставляет следов. Он оставляет выбор.`,`Если дверь была закрыта изнутри — ищи люк, который открывается снаружи.`,`Лучший детектив — тот, кого не замечают в толпе.`,`Учись читать по губам. Пригодится на допросах с адвокатом.`,`Запах духов на месте преступления важнее запаха пороха.`,`Если ты нашел отпечаток пальца — проверь, не твой ли он.`,`Раскрыть дело — это искусство. Не раскрыть — тоже искусство, но другое.`,`Никогда не спорь с баллистикой. Она всегда права, даже если ты не согласен.`,`В каждом деле есть одна странная деталь. Найди её — и пазл сложится.`,`Если преступник умный — он оставит ложный след. Если глупый — он оставит следы в соцсетях.`,`Лучший друг детектива — тишина. Второй друг — кофе.`,`Если свидетель говорит слишком много, он врет. Если молчит — он тоже врет.`,`Преступление редко бывает идеальным. Идеальным бывает только алиби жены.`,`Всегда смотри на часы на трупе. Возможно, они показывают время, когда он перестал верить в людей.`,`Воры любят темноту. Детективы — свет. А маньяки — полную луну.`,`Если ты поймал преступника, не радуйся раньше времени — может, он просто лжец.`,`В каждом городе есть одно место, где собираются все сплетники. Начни оттуда.`,`Не верь в совпадения. Но верь в удачу.`,`Если у тебя нет улик — придумай их. Но только мысленно, чтобы знать, где искать.`,`Жертва всегда знала убийцу. Даже если она не знала, что знает.`,`Проверяй алиби на разрыв. Если оно выдерживает — ты ошибся.`,`Самый страшный враг детектива — не маньяк, а его собственная лень.`,`Если преступник оставил записку — прочитай её. И сожги, чтобы никто не узнал твой почерк.`,`Всегда носи с собой фонарик. Даже днём. Для эффекта.`,`В деле важно всё: от укуса комара до размера обуви.`,`Если ты думаешь, что дело простое — значит, ты не додумал.`,`Убийца всегда ищет внимания. Или наоборот, избегает его.`,`Стук в дверь в полночь — это либо полиция, либо заказчик.`,`Никогда не давай обещаний родственникам жертвы. Только факты.`,`Если у тебя есть три версии — выбирай четвёртую.`,`Лучшее оружие — это бумага. На ней можно написать что угодно.`,`Когда ты смотришь на улику, смотри на неё глазами преступника.`,`Все любят детективы, пока не становятся подозреваемыми.`,`Следы крови важны. Но важнее — следы лжи.`,`Если ты не спишь третьи сутки, значит, ты либо гений, либо дурак.`,`Проверяй каждого, кто говорит 'Я ничего не видел'.`,`В каждом деле есть один человек, который знает всё. И он не говорит.`,`Не суди преступника по одежде. Суди по тому, как он её снимал.`,`Дыра в алиби — это как дыра в лодке. Рано или поздно она утонет.`,`Если преступник использует перчатки — он профессионал. Если нет — он любитель.`,`Запомни: первая версия — всегда неверная.`,`Если у тебя кончились идеи, иди в бар. Там всегда есть кто-то, кто расскажет тебе дело.`,`Свидетель с фотороботом — это как слепой с компасом.`,`Никогда не смейся над уликами. Они могут обидеться и исчезнуть.`,`Если ты нашёл оружие — не трогай его. Иначе твои отпечатки будут на нём.`,`Преступник умён, но ты умнее. Потому что ты пьёшь правильный кофе.`,`Всегда пересматривай видеозаписи. Особенно в два раза медленнее.`,`Если на месте преступления есть кот — он видел всё. Но он не скажет.`,`Лучший способ поймать преступника — пригласить его на обед.`,`Если подозреваемый улыбается, он либо невиновен, либо психопат.`,`Проверяй мусор. В нём всегда есть что-то полезное.`,`Никогда не доверяй красивым историям. Только уродливым фактам.`,`Если ты нашёл улику слишком легко — это ловушка.`,`Убийца всегда оставляет послание. Даже если это просто тишина.`,`Если ты запнулся на допросе — делай вид, что так и задумано.`,`Помни: все врут. Даже я тебе советую.`,`Если ты боишься темноты — стань детективом. Страх пройдёт.`,`Самые лучшие признания случаются под утро, когда все устали.`,`Если преступник использовал компьютер, значит, он либо хакер, либо дурак.`,`Следы шин — это как подпись на дороге.`,`Никогда не забывай про запах. Он помнит дольше, чем люди.`,`Если ты не знаешь, что делать — съешь шоколадку.`,`В каждом деле есть одна минута слабости. Найди её.`,`Преступник всегда нервничает. Даже если он не нервничает.`,`Если у тебя есть подозреваемый и нет улик — подожди. Улики появятся.`,`Не верь в чудеса. Верь в логику.`,`Если ты устал — возьми отпуск. Преступление никуда не денется.`,`Запомни: самый опасный преступник — тот, кто читал детективы.`,`Если ты думаешь, что всё кончено — значит, ты пропустил поворот.`,`Следы на полу важнее следов в душе.`,`Если преступник оставил окурок — он курил. Или хотел, чтобы ты так думал.`,`Хороший детектив всегда голоден. Это помогает мыслить.`,`Не суди по первому впечатлению. Суди по второму, когда увидишь его в наручниках.`,`Если у тебя есть тайный агент — не доверяй ему.`,`В деле всегда есть тот, кто знает больше, чем говорит.`,`Если ты не можешь найти убийцу — стань им (в мыслях).`,`И последнее: всегда проверяй, закрыл ли ты дверь участка.`],d=[];i&&d.push(`☕ Понедельник: Сегодня даже преступники не хотят работать. Проверь тех, кто был слишком бодр.`),a&&d.push(`🔮 Пятница 13-е: Если улики ведут к чёрной кошке, ищи чёрного кота с алиби.`),o&&d.push(`🎄 Новый год: Свидетель в костюме Деда Мороза врёт. Настоящий Дед Мороз всегда в отпуске.`),s&&d.push(`☀️ Лето: В жару преступники забывают улики в карманах, потому что снимают пиджаки.`),c&&d.push(`❄️ Зима: Следы на снегу ведут к тому, у кого самые холодные руки.`),l&&d.push(`🌕 Полнолуние: Если подозреваемый воет на луну, он либо оборотень, либо фанат рока.`);let f=u.concat(d),p=f[Math.floor(Math.random()*f.length)],m=[`🔍 Заметки сыщика:`,`📓 Из дневника инспектора:`,`🕵️ Мудрость Шерлока:`,`🧠 Гениально и просто:`,`📌 Правило большого пальца:`,`☕ Кофейная истина:`];return{header:m[Math.floor(Math.random()*m.length)],text:p}}let c=s(),l=k(!1),u=k(``),d=k(``);async function f(){if(d.value=``,!await t.deleteAccount(u.value)){d.value=t.error||`Не удалось удалить аккаунт`;return}r.success(`Аккаунт и персональные данные удалены`),l.value=!1,n.push(`/login`)}return(e,n)=>(F(),I(P,null,[L(`div`,jF,[L(`div`,MF,[R(A(pw),{title:A(c).header,"show-icon":!1,type:`info`,style:{"margin-bottom":`20px`}},{default:M(()=>[z(O(A(c).text),1)]),_:1},8,[`title`]),L(`p`,null,`Доброго времени суток, `+O(A(t).username)+`.`,1),L(`div`,NF,[n[5]||=L(`div`,{class:`danger-zone-text`},[L(`div`,{class:`danger-zone-title`},`Удаление аккаунта`),L(`div`,{class:`danger-zone-hint`},` Удаление необратимо: аккаунт и все персональные данные будут стёрты (ст. 21 152-ФЗ). `)],-1),R(A($),{type:`error`,ghost:``,onClick:n[0]||=e=>l.value=!0},{default:M(()=>[...n[4]||=[z(`Удалить аккаунт`,-1)]]),_:1})])])]),R(A(XE),{show:l.value,"onUpdate:show":n[3]||=e=>l.value=e,preset:`card`,title:`Удаление аккаунта`,class:`delete-modal`},{default:M(()=>[n[8]||=L(`p`,{class:`delete-modal-text`},` Это действие необратимо. Для подтверждения удаления введите пароль от учётной записи — он понадобится, чтобы убедиться, что аккаунт удаляет его владелец. `,-1),R(A(jw),{value:u.value,"onUpdate:value":n[1]||=e=>u.value=e,type:`password`,placeholder:`Пароль для подтверждения`,onKeyup:Is(f,[`enter`])},null,8,[`value`]),d.value?(F(),I(`p`,PF,O(d.value),1)):B(``,!0),L(`div`,FF,[R(A($),{onClick:n[2]||=e=>l.value=!1},{default:M(()=>[...n[6]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{type:`error`,disabled:u.value.length==0,loading:A(t).isLoading,onClick:f},{default:M(()=>[...n[7]||=[z(` Удалить навсегда `,-1)]]),_:1},8,[`disabled`,`loading`])])]),_:1},8,[`show`]),R(iP,{active:`office`})],64))}}),[[`__scopeId`,`data-v-e477f47a`]]),LF=N({__name:`OfficeView`,setup(e){return(e,t)=>(F(),Da(IF))}}),RF=N({__name:`PrivacyPolicyView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`privacy`}),R(iP)],64))}});function zF(){let e=lN();return BF(e.refreshTokenAction,e.getToken)}function BF(e,t){async function n(n,r){let i={},a=t();a&&(i.Authorization=`Bearer ${a}`);let o=await fetch(`${cN()}/${n}`,{...r,headers:{...i,...r.headers}});if(o.status==401){await e();let a=t();a&&(i.Authorization=`Bearer ${a}`),o=await fetch(`${cN()}/${n}`,{...r,headers:{...i,...r.headers}})}return o}async function r(e){let t=await n(`api/scenarios/${e}/archive`,{method:`GET`});if(!t.ok)throw Error(await HF(t));return{blob:await t.blob(),filename:VF(t.headers.get(`Content-Disposition`))||`scenario-${e}.zip`}}async function i(e){let t=await n(`api/scenarios/archive`,{method:`POST`,headers:{"Content-Type":e.type||`application/zip`},body:e}),r=await t.json().catch(()=>null);if(!t.ok)return{id:null,error:r?.message||`Ошибка сервера (${t.status})`};let i=typeof r?.error==`string`&&r.error!==``?r.error:null;return{id:typeof r?.id==`number`?r.id:null,error:i}}return{downloadScenarioArchive:r,uploadScenarioArchive:i}}function VF(e){if(!e)return``;let t=e.match(/filename="?([^";]+)"?/i);return(t?t[1]:``).replace(/[\\/:*?"<>|]/g,`_`)}async function HF(e){let t=await e.json().catch(()=>null);return t&&typeof t.message==`string`&&t.message!==``?t.message:`Ошибка сервера (${e.status})`}var UF={class:`main`},WF={class:`message-cloud`},GF=rP(N({__name:`MessagePaper`,setup(e){return(e,t)=>(F(),I(`div`,UF,[t[0]||=L(`div`,{class:`message-cloud-3`},null,-1),t[1]||=L(`div`,{class:`message-cloud-2`},null,-1),L(`div`,WF,[ri(e.$slots,`default`,{},void 0,!0)])]))}}),[[`__scopeId`,`data-v-d026d197`]]),KF={key:0},qF={class:`intro-text font`},JF={key:0,class:`intro-audio-block`},YF=[`src`],XF={class:`message-content`},ZF={key:0,class:`intro-audio-block`},QF=[`src`],$F={key:1},eI={key:2,class:`intro-empty`},tI={key:2,class:`place-block`},nI={class:`intro-edit-audio`},rI=[`src`],iI={class:`slot-block`},aI=rP(N({__name:`IntroBlock`,props:{introduction:{type:Object,required:!0},mode:{type:String,required:!0}},emits:[`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:mode`,e)},a=V(()=>!!n.introduction?.text),o=V(()=>!!n.introduction?.audio),s=V(()=>{let e=n.introduction?.audio;if(e)return/^https?:\/\//i.test(e)?e:`${cN()}/api/files/${encodeURIComponent(e)}`}),c=()=>{n.introduction&&(n.introduction.audio=``,n.introduction.fileList=void 0)};return(t,r)=>(F(),I(P,null,[e.mode==`show`?(F(),I(`div`,KF,[R(GF,null,{default:M(()=>[r[4]||=L(`div`,{class:`font`},`Вступление`,-1),r[5]||=L(`hr`,{class:`intro-hr`},null,-1),L(`div`,qF,O(e.introduction.text),1),o.value?(F(),I(`div`,JF,[L(`audio`,{src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,YF)])):B(``,!0)]),_:1})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:1,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>i(`edit`)},[r[6]||=L(`div`,{class:`message-header`},` Вступление `,-1),r[7]||=L(`hr`,{class:`hr`},null,-1),L(`div`,XF,[o.value?(F(),I(`div`,ZF,[L(`audio`,{src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,QF)])):B(``,!0),a.value?(F(),I(`span`,$F,O(e.introduction.text),1)):(F(),I(`span`,eI,`Введение не задано — нажмите, чтобы добавить`))])])):B(``,!0),e.mode==`edit`?(F(),I(`div`,tI,[R(A(FD),{vertical:``},{default:M(()=>[r[11]||=L(`p`,{class:`settings-header`},`Текст вступления`,-1),R(A(jw),{value:n.introduction.text,"onUpdate:value":r[1]||=e=>n.introduction.text=e,type:`textarea`,autosize:{minRows:4,maxRows:12},placeholder:`Дорогие сыщики! В этом деле вам предстоит...`},null,8,[`value`]),r[12]||=L(`p`,{class:`settings-header`},`Аудио вступления`,-1),L(`div`,nI,[R(A(FD),{vertical:``},{default:M(()=>[o.value?(F(),I(`audio`,{key:0,src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,rI)):(F(),Da(A(wA),{key:1,depth:`3`},{default:M(()=>[...r[8]||=[z(`Аудио не задано`,-1)]]),_:1})),R(A($),{onClick:r[2]||=e=>c(),disabled:!o.value},{default:M(()=>[...r[9]||=[z(`Убрать аудио`,-1)]]),_:1},8,[`disabled`])]),_:1}),R(A(nj),{"directory-dnd":``,max:1,"file-list":n.introduction.fileList,"onUpdate:fileList":r[3]||=e=>n.introduction.fileList=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...r[10]||=[z(` Щелкните или перетащите аудиофайл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),L(`div`,iI,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0)],64))}}),[[`__scopeId`,`data-v-90ebee9a`]]),oI={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 24 24`},sI=N({name:`Key24Regular`,render:function(e,t){return F(),I(`svg`,oI,t[0]||=[L(`g`,{fill:`none`},[L(`path`,{d:`M18.25 7a1.25 1.25 0 1 1-2.5 0a1.25 1.25 0 0 1 2.5 0zM15.5 2.05A6.554 6.554 0 0 0 8.95 8.6c0 .387.05.76.11 1.104a.275.275 0 0 1-.07.244l-6.235 6.236a2.75 2.75 0 0 0-.806 1.944V20.3c0 .966.784 1.75 1.75 1.75h2.5a1.75 1.75 0 0 0 1.75-1.75v-1.25H9.7c.69 0 1.25-.56 1.25-1.25v-1.75h1.75a1.25 1.25 0 0 0 1.25-1.204c.496.128 1.02.204 1.55.204a6.554 6.554 0 0 0 6.55-6.55c0-3.631-2.953-6.45-6.55-6.45zM10.45 8.6a5.054 5.054 0 0 1 5.05-5.05c2.802 0 5.05 2.181 5.05 4.95a5.054 5.054 0 0 1-5.05 5.05c-.68 0-1.38-.171-2.005-.44a.75.75 0 0 0-1.046.69v.75H10.7c-.69 0-1.25.56-1.25 1.25v1.75H7.7c-.69 0-1.25.56-1.25 1.25v1.5a.25.25 0 0 1-.25.25H3.7a.25.25 0 0 1-.25-.25v-2.172c0-.331.132-.65.366-.884l6.236-6.235a1.774 1.774 0 0 0 .486-1.564a4.917 4.917 0 0 1-.088-.845z`,fill:`currentColor`})],-1)])}}),cI={key:1,class:`place-block`},lI={class:`message-header`},uI={class:`message-content`},dI={key:0},fI=[`src`],pI={key:0,class:`hr`},mI={class:`application-name`},hI=[`onClick`],gI=[`src`],_I=[`src`],vI=[`href`],yI={class:`gray-block`},bI={key:0},xI={key:3},SI={class:`message-show-header font`},CI={class:`message-show-content font`},wI={key:0},TI=[`src`],EI=[`src`],DI={key:2,class:`show-applications-block`},OI=[`onClick`],kI=[`src`],AI={key:0,class:`show-hr`},jI=[`onClick`],MI={class:`button-dialog-text`},NI={key:1,class:`show-hr`},PI=[`href`],FI={class:`application-label`},II=[`src`],LI={key:4},RI={class:`message-header font`},zI={key:5,class:`place-block`},BI=[`src`],VI={style:{display:`flex`,"flex-direction":`column`,width:`100%`}},HI={key:0,class:`application-edit-file`},UI=[`src`],WI=[`src`],GI=[`href`],KI={style:{display:`flex`,"flex-direction":`column`}},qI={style:{display:`flex`,"flex-direction":`column`,width:`100%`}},JI={class:`door-add-block`},YI={class:`door-field`},XI={style:{display:`flex`,"align-items":`center`,width:`100%`}},ZI={style:{display:`flex`,"align-items":`center`,width:`100%`}},QI={class:`slot-block`},$I={key:0,class:`view-application-image-block`},eL=[`src`],tL=[`src`],nL=[`src`],rL={key:3,class:`view-application-image-block`},iL=[`src`],aL=rP(N({__name:`PlaceBlock`,props:{newPlaceCode:{type:String},newPlaceName:{type:String},newPlaceText:{type:String},place:{type:Object},mode:{type:String,required:!0},addAction:{type:Function}},emits:[`update:newPlaceCode`,`update:newPlaceName`,`update:newPlaceText`,`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:newPlaceCode`,e)},a=e=>{r(`update:newPlaceName`,e)},o=e=>{r(`update:newPlaceText`,e)},s=e=>{r(`update:mode`,e)};function c(){return{name:void 0,image:void 0,file_type:void 0}}function l(){return{code:void 0,name:void 0,keys:void 0}}function u(){return{name:void 0}}function d(e){return e}function f(e){e.image=void 0,e.file_type=void 0,e.fileList=void 0}let p=k(null),m=k(null),h=k(!1);function g(e){p.value=e,m.value=null,h.value=!0}function _(e,t){m.value={title:e,url:t},p.value=null,h.value=!0}function v(){h.value=!1,p.value=null,m.value=null}function y(e){let t=e||``;if(t.length==0)return{before:``,after:``};let n=Math.min(t.length,Math.max(120,Math.floor(t.length*.45))),r=-1,i=1/0;for(let e=0;ey(n.place?.text).before),x=V(()=>y(n.place?.text).after),S=V(()=>n.place?.image?null:(n.place?.applications||[]).find(e=>KP(e)==`image`&&e.image)||null),C=V(()=>(n.place?.applications||[]).filter(e=>e===S.value?!1:KP(e)==`image`&&e.image)),w=V(()=>(n.place?.applications||[]).filter(e=>e===S.value?!1:!(KP(e)==`image`&&e.image)));return(t,r)=>(F(),I(P,null,[e.mode==`mini-add`?(F(),I(`div`,{key:0,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>s(`add`)},[...r[21]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]])):B(``,!0),e.mode==`add`?(F(),I(`div`,cI,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`20%`},value:e.newPlaceCode,"onUpdate:value":i,type:`text`,placeholder:`Ы-1`},null,8,[`value`]),R(A(jw),{style:{width:`80%`},value:e.newPlaceName,"onUpdate:value":a,type:`text`,placeholder:`Дом №Ы`},null,8,[`value`])]),_:1}),R(A(jw),{value:e.newPlaceText,"onUpdate:value":o,type:`textarea`,autosize:{minRows:3},placeholder:`В начале было слово...`},null,8,[`value`]),ri(t.$slots,`default`,{},void 0,!0)]),_:3})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:2,class:`place-block-hover show-editor-block`,onClick:r[4]||=e=>s(`edit`)},[L(`div`,lI,O(n.place?.code)+`: `+O(n.place?.name),1),r[22]||=L(`hr`,{class:`hr`},null,-1),L(`div`,uI,[n.place?.image?(F(),I(`div`,dI,[L(`div`,{class:`message-image-border`,onClick:r[1]||=Ps(e=>_(n.place?.name||``,n.place?.image||``),[`stop`])},[L(`img`,{src:n.place?.image,class:`message-image`},null,8,fI)])])):B(``,!0),z(` `+O(n.place?.text),1)]),(F(!0),I(P,null,ni(n.place?.doors,e=>(F(),I(`div`,{key:e.code,class:`door-block`},[z(O(e.name)+` `,1),(F(!0),I(P,null,ni(e.keys,e=>(F(),I(`span`,{key:e.name,class:`key-block`},[R(A($N),{class:`lock-icon`},{default:M(()=>[R(A(gN))]),_:1}),z(` `+O(e.name),1)]))),128))]))),128)),n.place?.applications?.length?(F(),I(`hr`,pI)):B(``,!0),(F(!0),I(P,null,ni(n.place?.applications,e=>(F(),I(`div`,{class:`message-footer application-block`,key:e.name},[L(`div`,mI,`Приложение: `+O(e.name),1),A(KP)(e)==`image`&&e.image?(F(),I(`div`,{key:0,class:`application-image-border`,onClick:Ps(t=>g(e),[`stop`])},[L(`img`,{src:A(qP)(e.image),class:`application-image`},null,8,gI)],8,hI)):A(KP)(e)==`audio`&&e.image?(F(),I(`audio`,{key:1,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-audio`,onClick:r[2]||=Ps(()=>{},[`stop`])},null,8,_I)):A(KP)(e)==`pdf`&&e.image?(F(),I(`a`,{key:2,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`application-pdf-link`,onClick:r[3]||=Ps(()=>{},[`stop`])},` PDF `,8,vI)):B(``,!0)]))),128)),L(`p`,yI,[n.place?.hidden?(F(),I(`span`,bI,` Скрытая точка `)):B(``,!0),(F(!0),I(P,null,ni(n.place?.keys,e=>(F(),I(`span`,{key:e.name,class:`key-block`},[R(A($N),{class:`lock-icon`},{default:M(()=>[R(A(sI))]),_:1}),z(` `+O(e.name),1)]))),128))])])):B(``,!0),e.mode==`show`?(F(),I(`div`,xI,[R(GF,null,{default:M(()=>[L(`div`,SI,[z(O(e.place?.code)+`: `+O(e.place?.name)+` `,1),L(`span`,{class:`collapse-icon collapse-icon-up`,onClick:r[5]||=e=>s(`show-collapse`)})]),r[23]||=L(`hr`,{class:`show-hr`},null,-1),L(`div`,CI,[e.place?.image?.length?(F(),I(`div`,wI,[L(`div`,{class:`message-image-border`,onClick:r[6]||=t=>_(e.place?.name||``,e.place?.image||``)},[L(`img`,{src:e.place?.image,class:`message-image`},null,8,TI)])])):S.value?(F(),I(`div`,{key:1,class:`message-image-border`,onClick:r[7]||=e=>g(S.value)},[L(`img`,{src:A(qP)(S.value.image),class:`message-image`},null,8,EI)])):B(``,!0),z(` `+O(b.value)+` `,1),C.value.length?(F(),I(`div`,DI,[(F(!0),I(P,null,ni(C.value,e=>(F(),I(`div`,{class:`show-application`,key:e.name},[L(`div`,{class:`application-image-block`,onClick:t=>g(e)},[L(`img`,{src:A(qP)(e.image),class:`application-image`},null,8,kI)],8,OI)]))),128))])):B(``,!0),z(` `+O(x.value),1)]),n.place?.doors?.length?(F(),I(`hr`,AI)):B(``,!0),(F(!0),I(P,null,ni(n.place?.doors,t=>(F(),I(`div`,{key:t.code,class:`button-dialog font`,onClick:n=>e.addAction(t.code)},[L(`div`,MI,O(t.code)+` `+O(t.name),1)],8,jI))),128)),w.value.length?(F(),I(`hr`,NI)):B(``,!0),(F(!0),I(P,null,ni(w.value,e=>(F(),I(`div`,{class:`message-show-footer font`,key:e.name},[A(KP)(e)==`pdf`&&e.image?(F(),I(`a`,{key:0,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`pdf-application-name`},` Приложение: `+O(e.name),9,PI)):(F(),I(P,{key:1},[L(`div`,FI,`Приложение: `+O(e.name),1),A(KP)(e)==`audio`&&e.image?(F(),I(`audio`,{key:0,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-audio`},null,8,II)):B(``,!0)],64))]))),128))]),_:1})])):B(``,!0),e.mode==`show-collapse`?(F(),I(`div`,LI,[R(GF,null,{default:M(()=>[L(`div`,RI,[z(O(e.place?.code)+`: `+O(e.place?.name)+` `,1),L(`span`,{class:`collapse-icon`,onClick:r[8]||=e=>s(`show`)})])]),_:1})])):B(``,!0),e.mode==`edit`?(F(),I(`div`,zI,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`20%`},value:n.place.code,"onUpdate:value":r[9]||=e=>n.place.code=e,type:`text`,placeholder:`Ы-1`},null,8,[`value`]),R(A(jw),{style:{width:`80%`},value:n.place.name,"onUpdate:value":r[10]||=e=>n.place.name=e,type:`text`,placeholder:`Дом №Ы`},null,8,[`value`])]),_:1}),R(A(jw),{value:n.place.text,"onUpdate:value":r[11]||=e=>n.place.text=e,type:`textarea`,autosize:{minRows:3},placeholder:`В начале было слово...`},null,8,[`value`]),r[37]||=L(`p`,{class:`settings-header`},`Картинка`,-1),L(`div`,null,[R(A(FD),null,{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`img`,{src:n.place.image,class:`message-edit-image`},null,8,BI),R(A($),{onClick:r[12]||=e=>(n.place.image=``,n.place.fileList=void 0)},{default:M(()=>[...r[24]||=[z(`Убрать картинку`,-1)]]),_:1})]),_:1}),R(A(FD),{vertical:``},{default:M(()=>[R(A(jw),{value:n.place.image,"onUpdate:value":r[13]||=e=>n.place.image=e,type:`text`,placeholder:`Не задано`,disabled:``},null,8,[`value`]),R(A(nj),{"directory-dnd":``,max:1,"file-list":n.place.fileList,"onUpdate:fileList":r[14]||=e=>n.place.fileList=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...r[25]||=[z(` Щелкните или перетащите файл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),_:1})]),_:1})]),r[38]||=L(`p`,{class:`settings-header`},`Видимость точки`,-1),R(A(dA),{value:n.place.hidden,"onUpdate:value":r[15]||=e=>n.place.hidden=e},{checked:M(()=>[...r[26]||=[z(` Скрытая точка `,-1)]]),unchecked:M(()=>[...r[27]||=[z(` Обычная точка `,-1)]]),_:1},8,[`value`]),r[39]||=z(` Улики `,-1),R(A(OD),{value:n.place.applications,"onUpdate:value":r[16]||=e=>n.place.applications=e,"on-create":c},{"create-button-default":M(()=>[...r[28]||=[z(` Добавить улику `,-1)]]),default:M(({value:e})=>[L(`div`,VI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`]),e.image?(F(),I(`div`,HI,[R(A(FD),{align:`center`,justify:`space-between`},{default:M(()=>[R(A(wA),{depth:`3`},{default:M(()=>[z(O(A(JP)(e.image))+` `,1),R(A(XC),{size:`small`,bordered:!1},{default:M(()=>[z(O(A(KP)(e)||`файл`),1)]),_:2},1024)]),_:2},1024),R(A($),{size:`small`,quaternary:``,onClick:t=>f(d(e))},{default:M(()=>[...r[29]||=[z(` Убрать файл `,-1)]]),_:1},8,[`onClick`])]),_:2},1024),A(KP)(e)==`image`?(F(),I(`img`,{key:0,src:A(qP)(e.image),class:`application-edit-image`},null,8,UI)):A(KP)(e)==`audio`?(F(),I(`audio`,{key:1,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-edit-audio`},null,8,WI)):A(KP)(e)==`pdf`?(F(),I(`a`,{key:2,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`application-pdf-link`},` PDF `,8,GI)):B(``,!0)])):B(``,!0),R(A(nj),{max:1,"file-list":d(e).fileList,"onUpdate:fileList":t=>d(e).fileList=t,accept:`image/*,application/pdf,audio/*`},{default:M(()=>[R(A($),{size:`small`},{default:M(()=>[...r[30]||=[z(`Загрузить файл улики`,-1)]]),_:1})]),_:1},8,[`file-list`,`onUpdate:fileList`])])]),_:1},8,[`value`]),r[40]||=z(` Действия `,-1),R(A(OD),{value:n.place.doors,"onUpdate:value":r[17]||=e=>n.place.doors=e,"on-create":l},{"create-button-default":M(()=>[...r[31]||=[z(` Добавить действие `,-1)]]),action:M(({index:e,create:t,remove:n})=>[L(`div`,KI,[R(A($),{onClick:()=>t(e),class:`plus-minus-buttons`},{default:M(()=>[...r[32]||=[z(`+`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:()=>n(e),class:`plus-minus-buttons`},{default:M(()=>[...r[33]||=[z(`-`,-1)]]),_:1},8,[`onClick`])])]),default:M(({value:e})=>[L(`div`,qI,[L(`div`,JI,[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`30%`},value:e.code,"onUpdate:value":t=>e.code=t,type:`text`,placeholder:`Код`},null,8,[`value`,`onUpdate:value`]),R(A(jw),{style:{width:`70%`},value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),r[35]||=L(`p`,{class:`need-keys-text`},`Требуемые ключи`,-1),L(`div`,YI,[R(A(OD),{value:e.keys,"onUpdate:value":t=>e.keys=t,"on-create":u},{"create-button-default":M(()=>[...r[34]||=[z(` Добавить ключ `,-1)]]),default:M(({value:e})=>[L(`div`,XI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])])]),_:1},8,[`value`,`onUpdate:value`])])])])]),_:1},8,[`value`]),r[41]||=z(` Получаемые ключи `,-1),R(A(OD),{value:n.place.keys,"onUpdate:value":r[18]||=e=>n.place.keys=e,"on-create":u},{"create-button-default":M(()=>[...r[36]||=[z(` Добавить ключ `,-1)]]),default:M(({value:e})=>[L(`div`,ZI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])])]),_:1},8,[`value`]),L(`div`,QI,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0),R(A(XE),{show:h.value,"onUpdate:show":r[20]||=e=>h.value=e,"mask-closable":!0},{default:M(()=>[R(A(MT),{style:{width:`min(94vw, 1200px)`},bordered:!1,role:`dialog`,"aria-modal":`true`,"content-style":{padding:`14px`}},{header:M(()=>[z(O(p.value?.name||m.value?.title),1)]),"header-extra":M(()=>[R(A($),{quaternary:``,circle:``,onClick:r[19]||=e=>v()},{default:M(()=>[...r[42]||=[z(` x `,-1)]]),_:1})]),default:M(()=>[p.value&&A(KP)(p.value)==`image`?(F(),I(`div`,$I,[L(`img`,{src:A(qP)(p.value.image),class:`view-application-image`},null,8,eL)])):p.value&&A(KP)(p.value)==`pdf`?(F(),I(`iframe`,{key:1,src:A(qP)(p.value.image),class:`view-application-pdf`},null,8,tL)):p.value&&A(KP)(p.value)==`audio`?(F(),I(`audio`,{key:2,src:A(qP)(p.value.image),controls:``,autoplay:``,class:`view-application-audio`},null,8,nL)):m.value?(F(),I(`div`,rL,[L(`img`,{src:m.value.url,class:`view-application-image`},null,8,iL)])):B(``,!0)]),_:1})]),_:1},8,[`show`])],64))}}),[[`__scopeId`,`data-v-756a525d`]]),oL={key:1,class:`place-block`},sL={class:`message-header`},cL={class:`message-content`},lL={key:0},uL={key:1,class:`intro-empty`},dL={key:3,class:`place-block`},fL={class:`slot-block`},pL=rP(N({__name:`QuestionBlock`,props:{newQuestionCode:{type:String},newQuestionText:{type:String},newQuestionAnswer:{type:String},question:{type:Object},mode:{type:String,required:!0}},emits:[`update:newQuestionCode`,`update:newQuestionText`,`update:newQuestionAnswer`,`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:newQuestionCode`,e)},a=e=>{r(`update:newQuestionText`,e)},o=e=>{r(`update:newQuestionAnswer`,e)},s=e=>{r(`update:mode`,e)};return(t,r)=>(F(),I(P,null,[e.mode==`mini-add`?(F(),I(`div`,{key:0,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>s(`add`)},[...r[5]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]])):B(``,!0),e.mode==`add`?(F(),I(`div`,oL,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`25%`},value:e.newQuestionCode,"onUpdate:value":i,type:`text`,placeholder:`В-1`},null,8,[`value`]),R(A(jw),{style:{width:`75%`},value:e.newQuestionText,"onUpdate:value":a,type:`text`,placeholder:`Кто украл пастуха?`},null,8,[`value`])]),_:1}),R(A(jw),{value:e.newQuestionAnswer,"onUpdate:value":o,type:`textarea`,autosize:{minRows:2},placeholder:`Правильный ответ (виден только автору и организаторам)`},null,8,[`value`]),ri(t.$slots,`default`,{},void 0,!0)]),_:3})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:2,class:`place-block-hover show-editor-block`,onClick:r[1]||=e=>s(`edit`)},[L(`div`,sL,O(n.question?.code)+`: `+O(n.question?.text),1),r[6]||=L(`hr`,{class:`hr`},null,-1),L(`div`,cL,[n.question?.answer?(F(),I(`span`,lL,`Ответ: `+O(n.question.answer),1)):(F(),I(`span`,uL,`Ответ не задан`))])])):B(``,!0),e.mode==`edit`?(F(),I(`div`,dL,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`25%`},value:n.question.code,"onUpdate:value":r[2]||=e=>n.question.code=e,type:`text`,placeholder:`В-1`},null,8,[`value`]),R(A(jw),{style:{width:`75%`},value:n.question.text,"onUpdate:value":r[3]||=e=>n.question.text=e,type:`text`,placeholder:`Кто украл пастуха?`},null,8,[`value`])]),_:1}),r[8]||=L(`p`,{class:`settings-header`},`Правильный ответ`,-1),R(A(jw),{value:n.question.answer,"onUpdate:value":r[4]||=e=>n.question.answer=e,type:`textarea`,autosize:{minRows:2},placeholder:`Правильный ответ (виден только автору и организаторам)`},null,8,[`value`]),R(A(wA),{class:`hint`,depth:`3`},{default:M(()=>[...r[7]||=[z(` Смена кода вопроса не переносит ответы команд, отправленные под старым кодом. `,-1)]]),_:1}),L(`div`,fL,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0)],64))}}),[[`__scopeId`,`data-v-a3e74ca6`]]),mL={class:`center-block-custom`},hL={class:`width700`},gL={class:`places-container`},_L={class:`settings-block`},vL=rP(N({__name:`ScenariosEditorPage`,setup(e){let t=lN(),n=uN(),r=zF(),i=xj().params.id,a=k(!1),o=k(``),s=k(``),c=k(!1),l=dD(),u=k([]),d=k({id:void 0,name:void 0,story:void 0,author:void 0,status:void 0,updatedAt:void 0,createdAt:void 0,publishedAt:void 0}),f=k({text:``,audio:``}),p=k(`show-editor`),m=V(()=>d.value.story?.places||[]),h=V(()=>d.value.story?.questions||[]);async function g(e){let t=await n.GetFullScenario({id:e});if(t.error!=``){l.error(t.error);return}d.value=t.scenario,d.value.story?.places?.forEach(e=>{let t=e;t.oldCode=t.code,t.mode=`show-editor`}),d.value.story?.questions?.forEach(e=>{let t=e;t.oldCode=t.code,t.mode=`show-editor`}),f.value=d.value.story?.introduction||{text:``,audio:``},p.value=`show-editor`}g(Number(i));async function _(e){let t=await n.DeleteScenario({id:e});if(t.error!=``){l.error(t.error);return}bR.push(`/scenarios`)}async function v(e){let t=await n.PublicScenario({id:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),o.value=``,a.value=!1}async function y(e,t){let r=new Date().toISOString(),i=await n.AddGame({name:(`Тестовая игра: `+e).trim(),description:`Тестовая игра`,startAt:r,scenarioId:t});if(i.error!=``){l.error(i.error);return}let a=await n.AddTeam({name:`Тестовая команда`,gameId:i.id});if(a.error!=``){l.error(a.error);return}bR.push(`/team-story/`+a.id+`?password=`+a.password)}async function b(e){let t=await n.DraftScenario({id:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),o.value=``,a.value=!1}async function x(){c.value=!0;try{let{blob:e,filename:t}=await r.downloadScenarioArchive(d.value.id),n=URL.createObjectURL(e),i=document.createElement(`a`);i.href=n,i.download=t,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3),l.success(`Архив сценария скачан`)}catch(e){l.error(e instanceof Error?e.message:`Не удалось скачать архив`)}finally{c.value=!1}}async function S(e,t){if(!e)return{filename:``,fileType:``};let r=await e.arrayBuffer(),i=new Uint8Array(r),a=await n.UploadFile({filename:t,data:w(i)});return a.error==``?{filename:a.filename||``,fileType:a.file_type||``}:(l.error(a.error),{filename:``,fileType:``})}async function C(){let e=``;if(u.value&&u.value.length>0){let t=u.value[0].file||null;if(t==null)return;let n=await S(t,`scenarios_`+d.value.id+`_`+t.name);if(n.filename===``)return;e=n.filename}let t=await n.UpdateScenario({id:d.value.id,name:d.value.name,description:d.value.description,image:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),a.value=!1}function w(e){let t=T(e);return btoa(t)}function T(e){let t=``;for(let n=0;ne.code==r.code)==null){let t=await n.AddScenarioPlace({id:e.id,place:{code:r.code,name:r.name,text:void 0,image:void 0,hidden:!0,applications:void 0,doors:void 0,keys:void 0}});if(t.error!=``){l.error(t.error);return}}}async function ae(e){await g(Number(i)),e.mode=`show-editor`}async function oe(e){if(e.fileList&&e.fileList.length>0){let t=e.fileList[0].file||null;if(t==null)return;let n=await S(t,`scenarios_`+d.value.id+`_place_`+e.code+`_`+t.name);if(n.filename===``)return;e.image=n.filename}let t=e.applications||[];for(let n of t){if(!n.fileList||n.fileList.length==0)continue;let t=n.fileList[0].file||null;if(t==null)continue;let r=await S(t,`scenarios_`+d.value.id+`_place_`+e.code+`_app_`+t.name);if(r.filename===``)return;n.image=r.filename,n.file_type=r.fileType}await ie(d.value,e);let r=await n.UpdateScenarioPlace({id:d.value.id,code:e.oldCode,place:e});if(r.error!=``){l.error(r.error);return}await g(Number(i)),e.mode=`show-editor`}async function se(e){let t=await n.DeleteScenarioPlace({id:d.value.id,code:e.oldCode});if(t.error!=``){l.error(t.error);return}await g(Number(i))}let ce=k(``),le=k(``),ue=k(``),de=k(`mini-add`);async function fe(){let e=await n.AddScenarioQuestion({id:d.value.id,question:{code:ce.value,text:le.value,answer:ue.value}});if(e.error!=``){l.error(e.error);return}await g(Number(i)),ce.value=``,le.value=``,ue.value=``,de.value=`add`}async function pe(){ce.value=``,le.value=``,ue.value=``,de.value=`mini-add`}async function me(e){let t=await n.UpdateScenarioQuestion({id:d.value.id,code:e.oldCode,question:{code:e.code,text:e.text,answer:e.answer}});if(t.error!=``){l.error(t.error);return}await g(Number(i)),e.mode=`show-editor`}async function he(e){await g(Number(i)),e.mode=`show-editor`}async function ge(e){let t=await n.DeleteScenarioQuestion({id:d.value.id,code:e.oldCode});if(t.error!=``){l.error(t.error);return}await g(Number(i))}function _e(e){return e&&e.split(`/`).pop()||``}async function ve(){let e=``;if(f.value.fileList&&f.value.fileList.length>0){let t=f.value.fileList[0].file||null;if(t==null||(e=(await S(t,`scenarios_`+d.value.id+`_intro_`+t.name)).filename,e===``))return}else e=_e(f.value.audio);let t=await n.UpdateScenarioIntro({id:d.value.id,introduction:{text:f.value.text,audio:e}});if(t.error!=``){l.error(t.error);return}await g(Number(i))}async function ye(){await g(Number(i))}function be(){let e=[{text:`Настя, ты просто ослепительна сегодня!`,nameForm:`Настя`},{text:`У Насти невероятный вкус!`,nameForm:`Насти`},{text:`Настенька, твоя улыбка делает мир ярче.`,nameForm:`Настенька`},{text:`С Настей всегда интересно общаться.`,nameForm:`Настей`},{text:`Настя, ты — источник вдохновения для всех вокруг.`,nameForm:`Настя`},{text:`Мне нравится, как Настя смотрит на мир.`,nameForm:`Настя`},{text:`Настюха, ты супер!`,nameForm:`Настюха`},{text:`Талант Насти поражает!`,nameForm:`Насти`},{text:`Настя, твоя энергия заряжает батарейки!`,nameForm:`Настя`},{text:`С Настей хочется проводить каждую минуту.`,nameForm:`Настей`},{text:`Настенька, ты — самое красивое, что случилось в этом мире.`,nameForm:`Настенька`},{text:`У Насти золотое сердце.`,nameForm:`Насти`}];return e[Math.floor(Math.random()*e.length)].text}return(e,n)=>(F(),I(P,null,[L(`div`,mL,[L(`div`,hL,[L(`div`,gL,[d.value.status==`public`?(F(),Da(A(pw),{key:0,title:`Сценарий опубликован`,type:`warning`,style:{"margin-bottom":`20px`}},{default:M(()=>[...n[30]||=[z(` Не рекомендуется редактировать сценарий когда он опубликован. `,-1)]]),_:1})):B(``,!0),A(t).user?.id==2?(F(),Da(A(pw),{key:1,title:be(),type:`info`,style:{"margin-bottom":`20px`}},null,8,[`title`])):B(``,!0),L(`div`,_L,[z(` Точек: `+O(d.value.story?.places?.length)+`, Вопросов: `+O(d.value.story?.questions?.length)+` `,1),R(A($),{quaternary:``,onClick:n[0]||=e=>a.value=!0,class:`settings-button`},{default:M(()=>[R(A($N),{class:`settings-icon`},{default:M(()=>[R(A(WP))]),_:1}),n[31]||=z(` Настройки `,-1)]),_:1})]),R(aI,{introduction:f.value,mode:p.value,"onUpdate:mode":n[3]||=e=>p.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[1]||=e=>ye()},{default:M(()=>[...n[32]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[2]||=e=>ve()},{default:M(()=>[...n[33]||=[z(`Сохранить вступление`,-1)]]),_:1})]),_:1})]),_:1},8,[`introduction`,`mode`]),n[44]||=L(`div`,{class:`questions-header`},`Вопросы дела`,-1),R(pL,{mode:de.value,"onUpdate:mode":n[6]||=e=>de.value=e,newQuestionCode:ce.value,"onUpdate:newQuestionCode":n[7]||=e=>ce.value=e,newQuestionText:le.value,"onUpdate:newQuestionText":n[8]||=e=>le.value=e,newQuestionAnswer:ue.value,"onUpdate:newQuestionAnswer":n[9]||=e=>ue.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[4]||=e=>pe()},{default:M(()=>[...n[34]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[5]||=e=>fe(),disabled:!ce.value},{default:M(()=>[...n[35]||=[z(`Добавить вопрос`,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1},8,[`mode`,`newQuestionCode`,`newQuestionText`,`newQuestionAnswer`]),(F(!0),I(P,null,ni(h.value,e=>(F(),Da(pL,{question:e,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.oldCode??e.code??``},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>ge(e),type:`error`,ghost:``},{default:M(()=>[...n[36]||=[z(`Удалить`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>he(e)},{default:M(()=>[...n[37]||=[z(`Отмена`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>me(e),disabled:e.code==``},{default:M(()=>[...n[38]||=[z(`Сохранить`,-1)]]),_:1},8,[`onClick`,`disabled`])]),_:2},1024)]),_:2},1032,[`question`,`mode`,`onUpdate:mode`]))),128)),R(aL,{mode:te.value,"onUpdate:mode":n[12]||=e=>te.value=e,newPlaceCode:ee.value,"onUpdate:newPlaceCode":n[13]||=e=>ee.value=e,newPlaceName:E.value,"onUpdate:newPlaceName":n[14]||=e=>E.value=e,newPlaceText:D.value,"onUpdate:newPlaceText":n[15]||=e=>D.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[10]||=e=>re()},{default:M(()=>[...n[39]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[11]||=e=>ne(),disabled:!ee.value},{default:M(()=>[...n[40]||=[z(`Добавить точку`,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1},8,[`mode`,`newPlaceCode`,`newPlaceName`,`newPlaceText`]),(F(!0),I(P,null,ni(m.value,e=>(F(),Da(aL,{place:e,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.oldCode??e.code??``},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>se(e),type:`error`,ghost:``},{default:M(()=>[...n[41]||=[z(`Удалить`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>ae(e)},{default:M(()=>[...n[42]||=[z(`Отмена`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>oe(e),disabled:e.code==``},{default:M(()=>[...n[43]||=[z(`Сохранить`,-1)]]),_:1},8,[`onClick`,`disabled`])]),_:2},1024)]),_:2},1032,[`place`,`mode`,`onUpdate:mode`]))),128))])])]),R(A(XE),{show:a.value,"onUpdate:show":n[29]||=e=>a.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки сценария`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:n[16]||=e=>a.value=!1},{default:M(()=>[...n[45]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[...n[69]||=[]]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[58]||=L(`p`,null,`Название`,-1),R(A(jw),{value:d.value.name,"onUpdate:value":n[17]||=e=>d.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),n[59]||=L(`p`,{class:`settings-header`},`Описание`,-1),R(A(jw),{value:d.value.description,"onUpdate:value":n[18]||=e=>d.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),n[60]||=L(`p`,{class:`settings-header`},`Картинка`,-1),R(A(jw),{value:d.value.image,"onUpdate:value":n[19]||=e=>d.value.image=e,type:`text`,placeholder:`default_scenario.png`,disabled:``},null,8,[`value`]),R(A(nj),{"directory-dnd":``,max:1,"file-list":u.value,"onUpdate:fileList":n[20]||=e=>u.value=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...n[46]||=[z(` Щелкните или перетащите файл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`]),R(A($),{onClick:n[21]||=e=>C(),ghost:``},{default:M(()=>[...n[47]||=[z(` Сохранить изменения `,-1)]]),_:1}),n[61]||=L(`hr`,{class:`settings-hr`},null,-1),n[62]||=L(`p`,{class:`settings-header`},`Архив сценария`,-1),n[63]||=L(`p`,{class:`settings-hint`},` Скачайте сценарий ZIP-архивом (scenario.json + изображения) и импортируйте его в другом аккаунте. `,-1),R(A($),{loading:c.value,disabled:!d.value.id,ghost:``,onClick:n[22]||=e=>x()},{default:M(()=>[...n[48]||=[z(` Скачать архив (.zip) `,-1)]]),_:1},8,[`loading`,`disabled`]),n[64]||=L(`hr`,{class:`settings-hr`},null,-1),n[65]||=L(`p`,null,`Создать тестовую игру`,-1),R(A($),{onClick:n[23]||=e=>y(d.value.name||``,d.value.id),ghost:``},{default:M(()=>[...n[49]||=[z(` Создать игру `,-1)]]),_:1}),n[66]||=L(`hr`,{class:`settings-hr`},null,-1),n[67]||=L(`p`,null,`Публикация`,-1),L(`p`,null,[d.value.status==`public`?(F(),Da(A(XC),{key:0,bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[...n[50]||=[z(` Опубликовано `,-1)]]),_:1})):B(``,!0),d.value.status==`draft`?(F(),Da(A(XC),{key:1,bordered:!1,type:`warning`,class:`status-block`},{default:M(()=>[...n[51]||=[z(` В разработке `,-1)]]),_:1})):B(``,!0)]),L(`p`,null,[n[52]||=z(` Введите название сценария `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(d.value.name),1)]),_:1})]),R(A(jw),{value:o.value,"onUpdate:value":n[24]||=e=>o.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),d.value.status==`public`?B(``,!0):(F(),Da(A($),{key:0,onClick:n[25]||=e=>v(d.value.id),ghost:``,disabled:o.value!=d.value.name},{default:M(()=>[...n[53]||=[z(` Опубликовать сценарий `,-1)]]),_:1},8,[`disabled`])),d.value.status==`draft`?B(``,!0):(F(),Da(A($),{key:1,onClick:n[26]||=e=>b(d.value.id),ghost:``,disabled:o.value!=d.value.name},{default:M(()=>[...n[54]||=[z(` Снять сценарий с публикации `,-1)]]),_:1},8,[`disabled`])),n[68]||=L(`hr`,{class:`settings-hr`},null,-1),L(`p`,null,[n[55]||=z(` Введите название сценария `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(d.value.name),1)]),_:1}),n[56]||=z(` чтобы удалить его `,-1)]),R(A(jw),{value:s.value,"onUpdate:value":n[27]||=e=>s.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),R(A($),{onClick:n[28]||=e=>_(d.value.id),type:`error`,ghost:``,disabled:s.value!=d.value.name},{default:M(()=>[...n[57]||=[z(` Удалить сценарий `,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(iP,{active:`scenarios`})],64))}}),[[`__scopeId`,`data-v-56264553`]]),yL=N({__name:`ScenariosEditorView`,setup(e){return(e,t)=>(F(),Da(vL))}}),bL={class:`center-block-custom`},xL={class:`width1200 display-table`},SL={class:`scenario-image-block scenario-image-plus import-icon`},CL=[`onClick`],wL={class:`scenario-content-block`},TL={class:`scenario-title`},EL={class:`scenario-label`},DL=rP(N({__name:`ScenariosPage`,setup(e){let t=uN(),n=zF(),r=k([]),i=bj(),a=dD(),o=k(!1),s=k(``),c=k(!1),l=k([]),u=k(!1);async function d(){r.value=[];let e=await t.GetMyScenarios({});r.value=e.scenarios}async function f(e){let n=await t.AddScenario({name:e});if(n.error!=``){a.error(n.error);return}await p(n.id)}async function p(e){i.push(`/scenarios/`+e+`/editor`)}function m(){l.value=[],c.value=!1}async function h(){let e=l.value[0]?.file;if(e){u.value=!0;try{let t=await n.uploadScenarioArchive(e);if(t.error){a.error(t.error);return}a.success(`Сценарий импортирован из архива`),m(),await p(t.id)}catch(e){a.error(e instanceof Error?e.message:`Не удалось импортировать архив`)}finally{u.value=!1}}}return d(),(e,t)=>(F(),I(P,null,[L(`div`,bL,[L(`div`,xL,[L(`div`,{class:`scenario-block`,onClick:t[0]||=e=>o.value=!0},[...t[11]||=[L(`div`,{class:`scenario-image-block scenario-image-plus`},`+`,-1),L(`div`,{class:`scenario-content-block`},[L(`p`,{class:`scenario-title`},`Создать новый сценарий`)],-1)]]),L(`div`,{class:`scenario-block`,onClick:t[1]||=e=>c.value=!0},[L(`div`,SL,[R(A($N),null,{default:M(()=>[R(A(PP))]),_:1})]),t[12]||=L(`div`,{class:`scenario-content-block`},[L(`p`,{class:`scenario-title`},`Импортировать из архива`)],-1)]),(F(!0),I(P,null,ni(r.value,e=>(F(),I(`div`,{class:`scenario-block`,onClick:t=>p(e.id),key:e.id},[L(`div`,{class:`scenario-image-block scenario-image`,style:fe({backgroundImage:`url(${e.image})`})},null,4),L(`div`,wL,[L(`p`,TL,O(e.name),1),L(`p`,EL,[e.status==`public`?(F(),Da(A(XC),{key:0,bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[...t[13]||=[z(`Опубликовано`,-1)]]),_:1})):B(``,!0),e.status==`draft`?(F(),Da(A(XC),{key:1,bordered:!1,type:`warning`,class:`status-block`},{default:M(()=>[...t[14]||=[z(`В разработке`,-1)]]),_:1})):B(``,!0)])])],8,CL))),128))])]),R(A(XE),{show:o.value,"onUpdate:show":t[5]||=e=>o.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Создание сценария`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[2]||=e=>o.value=!1},{default:M(()=>[...t[15]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[4]||=e=>f(s.value),disabled:s.value.length==0},{default:M(()=>[...t[16]||=[z(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(jw),{value:s.value,"onUpdate:value":t[3]||=e=>s.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:c.value,"onUpdate:show":t[10]||=e=>c.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Импорт сценария из архива`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[6]||=e=>m()},{default:M(()=>[...t[17]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[8]||=e=>m()},{default:M(()=>[...t[19]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{type:`primary`,loading:u.value,disabled:l.value.length==0,onClick:t[9]||=e=>h()},{default:M(()=>[...t[20]||=[z(` Импортировать `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),default:M(()=>[t[21]||=L(`p`,{class:`import-hint`},` Выберите ZIP-архив сценария (файл scenario.json + папка images). Архив можно получить через «Скачать архив» в настройках сценария. `,-1),R(A(nj),{max:1,"file-list":l.value,"onUpdate:fileList":t[7]||=e=>l.value=e,accept:`.zip,application/zip,application/x-zip-compressed,application/octet-stream`},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...t[18]||=[z(` Щелкните или перетащите ZIP-архив в эту область `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),_:1})]),_:1},8,[`show`]),R(iP,{active:`scenarios`})],64))}}),[[`__scopeId`,`data-v-57b81e7c`]]),OL=N({__name:`ScenariosView`,setup(e){return(e,t)=>(F(),Da(DL))}}),kL={class:`center-block-custom`},AL={class:`width700`},jL={class:`scenario-title`},ML=[`src`],NL={class:`scenario-description`},PL={class:`scenario-author`},FL=rP(N({__name:`ScenarioPage`,setup(e){let t=dD(),n=uN(),r=xj().params.id,i=k({id:void 0,name:void 0,story:void 0,author:void 0,status:void 0,updatedAt:void 0,createdAt:void 0,publishedAt:void 0});async function a(e){let r=await n.GetScenario({id:e});if(r.error!=``){t.error(r.error);return}i.value=r.scenario}return a(Number(r)),(e,t)=>(F(),I(P,null,[L(`div`,kL,[L(`div`,AL,[L(`div`,jL,O(i.value.name),1),L(`img`,{class:`scenario-image`,src:i.value.image},null,8,ML),L(`div`,NL,O(i.value.description),1),L(`div`,PL,[R(A(XC),{bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[z(`Автор: `+O(i.value.author?.username),1)]),_:1})]),i.value.story?.introduction&&(i.value.story.introduction.text||i.value.story.introduction.audio)?(F(),Da(aI,{key:0,introduction:i.value.story.introduction,mode:`show`},null,8,[`introduction`])):B(``,!0)])]),R(iP,{active:`catalog`})],64))}}),[[`__scopeId`,`data-v-bde91d68`]]),IL=N({__name:`ScenarioView`,setup(e){return(e,t)=>(F(),Da(FL))}}),LL={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 512 512`},RL=N({name:`Footsteps`,render:function(e,t){return F(),I(`svg`,LL,t[0]||=[L(`path`,{d:`M133.83 361.27c-22.61 0-41-8.17-54.79-24.39s-22.84-40.29-28.11-75.31c-7.76-51.61-.06-95.11 21.68-122.48c12.8-16.12 29.6-25.44 48.58-26.94c16.25-1.3 40.54 5.29 64 44c14.69 24.24 25.86 56.44 30.65 88.34c5.79 38.51 1.48 66.86-13.18 86.65c-11.64 15.72-29.54 25.46-53.21 29a106.46 106.46 0 0 1-15.62 1.13z`,fill:`currentColor`},null,-1),L(`path`,{d:`M173 496c-13.21 0-26.6-4.23-38.66-12.36a79.79 79.79 0 0 1-33.52-50.6c-2.85-14.66-1.14-26.31 5.22-35.64c10.33-15.15 28.87-18.56 48.49-22.18c2.07-.38 4.17-.76 6.3-1.17c4.52-.86 9.14-2 13.62-3.11c16.78-4.14 34.14-8.43 48.47 1.75c9.59 6.8 15 18.36 16.62 35.32c1.84 19.57-2.36 39.1-11.83 55c-10.19 17.11-25.47 28.42-43 31.86A61 61 0 0 1 173 496z`,fill:`currentColor`},null,-1),L(`path`,{d:`M378.17 265.27a106.69 106.69 0 0 1-15.6-1.2c-23.66-3.5-41.56-13.25-53.2-29c-14.66-19.79-19-48.13-13.18-86.65c4.79-31.93 15.93-64.1 30.55-88.25c23.34-38.57 47.66-45.26 64-44.08c18.92 1.38 35.69 10.57 48.51 26.6c21.89 27.37 29.65 71 21.86 122.84c-5.27 35-14.2 58.95-28.11 75.31s-32.22 24.43-54.83 24.43z`,fill:`currentColor`},null,-1),L(`path`,{d:`M339 400a61 61 0 0 1-11.68-1.13c-17.56-3.44-32.84-14.75-43-31.86c-9.47-15.9-13.67-35.43-11.83-55c1.6-17 7-28.52 16.62-35.33c14.33-10.17 31.69-5.89 48.47-1.74c4.48 1.1 9.1 2.24 13.62 3.11l6.29 1.17c19.63 3.61 38.17 7 48.5 22.17c6.36 9.33 8.07 21 5.22 35.64a79.78 79.78 0 0 1-33.52 50.61C365.56 395.78 352.17 400 339 400z`,fill:`currentColor`},null,-1)])}}),zL={},BL={class:`belt-block`};function VL(e,t){return F(),I(`div`,null,[t[0]||=L(`div`,{class:`shadow shadow-top`},null,-1),t[1]||=L(`div`,{class:`shadow shadow-bottom`},null,-1),L(`div`,BL,[ri(e.$slots,`default`,{},void 0,!0)])])}var HL=rP(zL,[[`render`,VL],[`__scopeId`,`data-v-82aef99e`]]),UL={},WL={class:`plate-block`},GL={class:`metal-plate-block`};function KL(e,t){return F(),I(`div`,WL,[L(`div`,GL,[ri(e.$slots,`default`,{},void 0,!0)]),t[0]||=L(`div`,{class:`pin pin-top-left`},null,-1),t[1]||=L(`div`,{class:`pin pin-top-right`},null,-1),t[2]||=L(`div`,{class:`pin pin-bottom-right`},null,-1),t[3]||=L(`div`,{class:`pin pin-bottom-left`},null,-1)])}var qL=rP(UL,[[`render`,KL],[`__scopeId`,`data-v-35e450f5`]]),JL={class:`form-custom`},YL={class:`center-block-700`},XL={class:`controller`},ZL={class:`counters-block`},QL={class:`counter-block`},$L={class:`places-text`},eR={class:`counter-block`},tR={class:`places-text`},nR={class:`game-input`},rR=[`placeholder`,`disabled`],iR=[`disabled`],aR=rP(N({__name:`GameInputForm`,props:{addAction:{type:Function,required:!0},allPlacesCount:{type:Number,required:!0},newPlacesCount:{type:Number,required:!0},gameStatus:{type:String,required:!0}},setup(e){let t=k(``),n=e;async function r(){await n.addAction(t.value),t.value=``}function i(e){e%=100;let t=Math.floor(e/10)%10,n=e%10,r=`–`,i=`–`;return t>0&&(r=String(t)),(n>0||t>0)&&(i=String(n)),[r,i]}return(a,o)=>(F(),I(`div`,JL,[R(HL,{class:`input-form`},{default:M(()=>[R(qL,{class:`controller-metal controller-metal-left`}),R(qL,{class:`controller-metal controller-metal-right`}),L(`div`,YL,[L(`div`,XL,[L(`div`,ZL,[L(`div`,QL,[L(`div`,$L,[R(A($N),{class:`icon-for-counter`},{default:M(()=>[R(A(RL))]),_:1})]),(F(!0),I(P,null,ni(i(e.allPlacesCount),(e,t)=>(F(),I(`div`,{key:t,class:`places-text places-text-number`},O(e),1))),128))]),L(`div`,eR,[L(`div`,tR,[R(A($N),{class:`icon-for-counter`},{default:M(()=>[R(A(mN))]),_:1})]),(F(!0),I(P,null,ni(i(e.newPlacesCount),(e,t)=>(F(),I(`div`,{key:t,class:`places-text places-text-number`},O(e),1))),128))])]),L(`div`,nR,[Vn(L(`input`,{id:`run`,class:`game-input-run`,"onUpdate:modelValue":o[0]||=e=>t.value=e,type:`text`,placeholder:n.gameStatus==`run`?`Место назначения`:`Ходы запрещены`,disabled:n.gameStatus!=`run`},null,8,rR),[[js,t.value]])]),o[4]||=L(`div`,{class:`game-button-run-shadow`},null,-1),L(`button`,{class:`game-button-run`,type:`submit`,disabled:t.value.length==0,onClick:r},[n.gameStatus==`run`?(F(),Da(hP,{key:0},{default:M(()=>[...o[1]||=[z(`Поехали`,-1)]]),_:1})):B(``,!0),n.gameStatus==`pause`||n.gameStatus==`draft`?(F(),Da(hP,{key:1},{default:M(()=>[...o[2]||=[z(`Ждём`,-1)]]),_:1})):B(``,!0),n.gameStatus==`finish`?(F(),Da(hP,{key:2},{default:M(()=>[...o[3]||=[z(`Всё`,-1)]]),_:1})):B(``,!0)],8,iR)])])]),_:1})]))}}),[[`__scopeId`,`data-v-6f96fdf3`]]),oR={class:`width700`},sR={class:`question-text`},cR={class:`qr-block`},lR={key:3,class:`edit-panel`},uR=rP(N({__name:`TeamStoryPage`,setup(e){let t=lN(),n=uN(),r=dD(),i=xj(),a=i.params.id,o=i.query.password,s=k(0),c=k(),l=k({introduction:void 0,places:[],questions:[]}),u=k({id:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,scenario:void 0,teams:void 0}),d=k(``),f=window.location.href,p=()=>{let e=c.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1};async function m(){let e=l.value,t=await n.GetTeamStory({id:Number(a),password:o});if(t.error!=``){r.error(t.error);return}u.value=t.game;let i=p();i&&(s.value=0);let d=l.value.places.length;l.value={introduction:t.story.introduction,places:t.story.places?.map((t,n)=>(console.log(e?.places[n]?.mode),{place:t,mode:e?.places[n]?.mode||`show`}))||[],questions:t.story.questions||[]};let f=l.value.places.length;if(f>d&&d!=0&&(s.value+=f-d),await kn(),i&&d!=0){let e=c.value;if(!e)return!1;e.scrollTop=e.scrollHeight}}m(),_();async function h(e){let t=await n.AddTeamAction({id:Number(a),password:o,code:e});if(t.error!=``){r.error(t.error);return}await m(),d.value=``,await kn(),s.value=0}let g=k({});async function _(){let e=await n.GetTeamAnswers({id:Number(a),password:o});if(e.error!=``){r.error(e.error);return}let t={};for(let n of e.answers||[])t[n.questionCode||``]=n.answer||``;g.value=t}async function v(){let e=await n.SubmitTeamAnswers({id:Number(a),password:o,answers:(l.value.questions||[]).map(e=>({questionCode:e.code,answer:g.value[e.code||``]||``}))});if(e.error!=``){r.error(e.error);return}r.success(`Ответы сохранены`),await _()}let y=V(()=>u.value?.status==`run`||u.value?.status==`pause`),b=V(()=>(l.value.questions?.length||0)>0),x={Input:{border:`1px dashed black`,borderDisabled:`1px dashed black`,borderFocus:`1px solid black`,borderHover:`1px dashed black`,boxShadowFocus:`0 0 0 2px rgb(99 226 183 / 30%)`,caretColor:`#63e2b7`,color:`transparent`,colorDisabled:`transparent`,colorFocus:`transparent`,fontSizeMedium:`18px`,placeholderColor:`black`,placeholderColorDisabled:`black`,textColor:`black`,textColorDisabled:`black`}};async function S(){let e=await n.DeleteLastTeamAction({id:Number(a)});if(e.error!=``){r.error(e.error);return}await m(),d.value=``}return GP(()=>{m()},2e3),(e,n)=>{let r=Qr(`n-space`);return F(),I(P,null,[L(`div`,{class:`center-block-custom bottom-margin smooth-scroll`,ref_key:`scrollContainer`,ref:c},[L(`div`,oR,[R(aR,{addAction:h,allPlacesCount:l.value.places.length,newPlacesCount:s.value,gameStatus:u.value?.status||``},null,8,[`allPlacesCount`,`newPlacesCount`,`gameStatus`]),u.value?.status&&u.value.status!=`draft`&&l.value.introduction&&(l.value.introduction.text||l.value.introduction.audio)?(F(),Da(aI,{key:0,introduction:l.value.introduction,mode:`show`},null,8,[`introduction`])):B(``,!0),b.value&&u.value?.status&&u.value.status!=`draft`?(F(),Da(GF,{key:1,class:`questions-block`},{default:M(()=>[n[1]||=L(`div`,{class:`font`},`Вопросы дела`,-1),n[2]||=L(`hr`,{class:`questions-hr`},null,-1),n[3]||=L(`p`,{class:`questions-hint font`},` Ответьте на вопросы дела. Ответы можно менять, пока игра идёт. `,-1),R(A($T),{"theme-overrides":x},{default:M(()=>[(F(!0),I(P,null,ni(l.value.questions,e=>(F(),I(`div`,{key:e.code,class:`question-item font`},[L(`div`,sR,O(e.code)+`: `+O(e.text),1),R(A(jw),{value:g.value[e.code||``],"onUpdate:value":t=>g.value[e.code||``]=t,type:`textarea`,autosize:{minRows:2,maxRows:6},disabled:!y.value,placeholder:`Ваш ответ...`},null,8,[`value`,`onUpdate:value`,`disabled`])]))),128)),y.value?(F(),Da(A(HD),{key:0,justify:`end`,class:`questions-actions`},{default:M(()=>[L(`button`,{type:`button`,class:`paper-button`,onClick:n[0]||=e=>v()},`Сохранить ответы`)]),_:1})):B(``,!0)]),_:1})]),_:1})):B(``,!0),(F(!0),I(P,null,ni(l.value.places,e=>(F(),Da(aL,{place:e.place,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.place.code,addAction:h},null,8,[`place`,`mode`,`onUpdate:mode`]))),128)),l.value.places.length==0&&u.value?.status==`draft`?(F(),Da(GF,{key:2,class:`qr-main-block`},{default:M(()=>[R(r,{vertical:``},{default:M(()=>[n[4]||=L(`h2`,{class:`qr-main-block-text`},`Это код этого дела`,-1),n[5]||=L(`p`,{class:`qr-main-block-text`},`Поделись с командой`,-1),L(`div`,cR,[R(A(nA),{value:A(f),size:300,padding:0},null,8,[`value`])]),n[6]||=L(`p`,{class:`qr-main-block-text`},`Игра скоро начнется`,-1)]),_:1})]),_:1})):B(``,!0),A(t).hasRole(`author`)&&l.value.places.length>0?(F(),I(`div`,lR,[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:S},{default:M(()=>[...n[7]||=[z(`Удалить последний ход`,-1)]]),_:1})]),_:1})])):B(``,!0)])],512),R(iP,{active:`games`})],64)}}}),[[`__scopeId`,`data-v-8a29c56b`]]),dR=N({__name:`TeamStoryView`,setup(e){return(e,t)=>(F(),Da(uR))}}),fR=N({__name:`UserAgreementView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`terms`}),R(iP)],64))}}),pR={class:`center-block-custom`},mR={class:`width700`},hR={class:`user-field`},gR={class:`user-field`},_R={class:`user-field`},vR=rP(N({__name:`UsersPage`,setup(e){let t=uN(),n=dD(),r=k([]);async function i(){let e=await t.GetUsers({});if(e.error!=``){n.error(e.error);return}r.value=e.users}i();async function a(e,r){let a=await t.AddUserRole({id:e,role:r});if(a.error!=``){n.error(a.error);return}await i()}async function o(e,r){let a=await t.DeleteUserRole({id:e,role:r});if(a.error!=``){n.error(a.error);return}await i()}return(e,t)=>(F(),I(P,null,[L(`div`,pR,[L(`div`,mR,[(F(!0),I(P,null,ni(r.value,e=>(F(),I(`div`,{key:e.id,class:`user-block`},[L(`div`,hR,` Позывной: `+O(e.username),1),L(`div`,gR,` Почта: `+O(e.email),1),L(`div`,_R,[R(A(FD),null,{default:M(()=>[t[0]||=z(` Роли: `,-1),(F(!0),I(P,null,ni(e.roles,e=>(F(),Da(A(XC),{bordered:!1,key:e},{default:M(()=>[z(O(e),1)]),_:2},1024))),128))]),_:2},1024)]),R(A(HD),{justify:`end`,class:`roles-buttons-block`},{default:M(()=>[e.roles?.includes(`author`)?(F(),Da(A($),{key:1,onClick:t=>o(e.id,`author`)},{default:M(()=>[...t[2]||=[z(`Забрать роль автора`,-1)]]),_:1},8,[`onClick`])):(F(),Da(A($),{key:0,onClick:t=>a(e.id,`author`)},{default:M(()=>[...t[1]||=[z(`Сделать автором`,-1)]]),_:1},8,[`onClick`])),e.roles?.includes(`organizer`)?(F(),Da(A($),{key:3,onClick:t=>o(e.id,`organizer`)},{default:M(()=>[...t[4]||=[z(`Забрать роль организатора`,-1)]]),_:1},8,[`onClick`])):(F(),Da(A($),{key:2,onClick:t=>a(e.id,`organizer`)},{default:M(()=>[...t[3]||=[z(`Сделать организатором`,-1)]]),_:1},8,[`onClick`]))]),_:2},1024)]))),128))])]),R(iP,{active:`users`})],64))}}),[[`__scopeId`,`data-v-4af0a140`]]),yR=N({__name:`UsersView`,setup(e){return(e,t)=>(F(),Da(vR))}}),bR=rN({history:TM(`/`),routes:[{path:`/`,name:`home`,component:pF},{path:`/login`,name:`login`,component:AF},{path:`/office`,name:`office`,component:LF},{path:`/user-agreement`,name:`user-agreement`,component:fR},{path:`/privacy-policy`,name:`privacy-policy`,component:RF},{path:`/consent`,name:`consent`,component:TP},{path:`/games`,name:`games`,component:MP},{path:`/games/:id`,name:`game`,component:fF},{path:`/team-story/:id`,name:`team-story`,component:dR},{path:`/scenarios`,name:`scenarios`,component:OL},{path:`/catalog`,name:`catalog`,component:pP},{path:`/scenarios/:id/editor`,name:`scenario-editor`,component:yL},{path:`/scenarios/:id`,name:`scenario`,component:IL},{path:`/users`,name:`users`,component:yR}]}),xR=Bs(iN);xR.use(sc()),xR.use(bR),xR.mount(`#app`); \ No newline at end of file +`)}function NN(e){if(!e)return;let t=e.parentElement;t&&t.removeChild(e)}function PN(e){return document.querySelector(`style[cssr-id="${e}"]`)}function FN(e){let t=document.createElement(`style`);return t.setAttribute(`cssr-id`,e),t}window&&(window.__cssrContext={});function IN(e){let t=e.getAttribute(`mount-count`);return t===null?null:Number(t)}function LN(e,t){e.setAttribute(`mount-count`,String(t))}function RN(e,t,n,r){let{els:i}=t;if(n===void 0)i.forEach(NN),t.els=[];else{let e=PN(n);if(e&&i.includes(e)){let a=IN(e);r?a===null?console.error(`[css-render/unmount]: The style with target='${n}' is mounted in count mode.`):a<=1?(NN(e),t.els=i.filter(t=>t!==e)):LN(e,a-1):a===null?(NN(e),t.els=i.filter(t=>t!==e)):console.error(`[css-render/unmount]: The style with target='${n}' is mounted in no-count mode.`)}}}function zN(e,t){e.push(t)}function BN(e,t,n,r,i,a,o,s,c){if(o&&!c){if(n===void 0){console.error("[css-render/mount]: `id` is required in `boost` mode.");return}let i=window.__cssrContext;i[n]||(i[n]=!0,MN(t,e,r,o));return}let l,{els:u}=t,d;if(n===void 0&&(d=t.render(r),n=Vc(d)),c){c(n,d??t.render(r));return}let f=PN(n);if(s||f===null){if(l=f===null?FN(n):f,d===void 0&&(d=t.render(r)),l.textContent=d,f!==null)return;if(i){let e=document.head.getElementsByTagName(`style`)[0]||null;document.head.insertBefore(l,e)}else document.head.appendChild(l);a&&LN(l,1),zN(u,l)}else{let e=IN(f);a?e===null?console.error(`[css-render/mount]: The style with id='${n}' has been mounted in no-count mode.`):LN(f,e+1):e!==null&&console.error(`[css-render/mount]: The style with id='${n}' has been mounted in count mode.`)}return f??l}function VN(e){return MN(this,this.instance,e)}function HN(e={}){let{target:t,id:n,ssr:r,props:i,count:a=!1,head:o=!1,boost:s=!1,force:c=!1}=e;return BN(this.instance,this,n??t,i,o,a,s,c,r)}function UN(e={}){let{id:t,target:n,delay:r=0,count:i=!1}=e;r===0?RN(this.instance,this,t??n,i):setTimeout(()=>RN(this.instance,this,t??n,i),r)}var WN=function(e,t,n,r){return{instance:e,$:t,props:n,children:r,els:[],render:VN,mount:HN,unmount:UN}},GN=function(e,t,n,r){return Array.isArray(t)?WN(e,{$:null},null,t):Array.isArray(n)?WN(e,t,null,n):Array.isArray(r)?WN(e,t,n,r):WN(e,t,n,null)};function KN(e={}){let t=null,n={c:((...e)=>GN(n,...e)),use:(e,...t)=>e.install(n,...t),find:PN,context:{},config:e,get __styleSheet(){if(!t){let e=document.createElement(`style`);return document.head.appendChild(e),t=document.styleSheets[document.styleSheets.length-1],t}return t}};return n}var{c:qN}=KN(),JN=qN(`.xicon`,{width:`1em`,height:`1em`,display:`inline-flex`},[qN(`svg`,{width:`1em`,height:`1em`}),qN(`svg:not([fill])`,{fill:`currentColor`})]),YN=()=>{JN.mount({id:`xicons-icon`})},XN={size:[String,Number],color:String,tag:String},ZN=Symbol(`IconConfigInjection`),QN=`span`,$N=N({name:`Icon`,props:XN,setup(e,{slots:t}){let n=Wn(ZN,null),r=V(()=>{let t=e.size??n?.size;if(t!==void 0)return typeof t==`number`||/^\d+$/.test(t)?`${t}px`:t}),i=V(()=>{let{color:t}=e;return t===void 0?n?n.color:void 0:t}),a=V(()=>{let{tag:t}=e;return t===void 0?n?.tag??QN:t});return Vr(()=>{YN()}),()=>H(a.value,{class:`xicon`,style:{color:i.value,fontSize:r.value}},[ri(t,`default`)])}}),eP={class:`menu-block`},tP={class:`right-group`},nP=N({__name:`HeaderMenu`,props:{active:{type:String,required:!1}},setup(e){let t=e,n=lN();n.initFromStorage();let r=bj(),i=uN(),a=k([]);async function o(){a.value=[];let e=await i.GetPermissions({});a.value=e.permissions}o();function s(e){return a.value.includes(e)}let c=()=>{r.push(`/login`)},l=()=>{n.logout(),r.push(`/login`)},u=k(!1);return(e,i)=>(F(),I(`div`,eP,[L(`div`,{onClick:i[0]||=e=>u.value=!u.value,class:`burger-button`},[R(A($N),{class:`burger-icon`,size:`28`},{default:M(()=>[R(A(vN))]),_:1})]),L(`div`,{class:_e([`left-group menu-buttons-block`,u.value?``:`menu-buttons-block-active`])},[L(`div`,{class:_e([`menu-item-block`,{active:t.active==`main`}]),onClick:i[1]||=e=>A(r).push(`/`)},` Главная `,2),A(n).hasRole(`user`)?(F(),I(`div`,{key:0,class:_e([`menu-item-block`,{active:t.active==`office`}]),onClick:i[2]||=e=>A(r).push(`/office`)},` Кабинет `,2)):B(``,!0),s(`games_page`)?(F(),I(`div`,{key:1,class:_e([`menu-item-block`,{active:t.active==`games`}]),onClick:i[3]||=e=>A(r).push(`/games`)},` Игры `,2)):B(``,!0),L(`div`,{class:_e([`menu-item-block`,{active:t.active==`catalog`}]),onClick:i[4]||=e=>A(r).push(`/catalog`)},` Каталог `,2),s(`scenarios_page`)?(F(),I(`div`,{key:2,class:_e([`menu-item-block`,{active:t.active==`scenarios`}]),onClick:i[5]||=e=>A(r).push(`/scenarios`)},` Мои сценарии `,2)):B(``,!0),s(`users_page`)?(F(),I(`div`,{key:3,class:_e([`menu-item-block`,{active:t.active==`users`}]),onClick:i[6]||=e=>A(r).push(`/users`)},` Пользователи `,2)):B(``,!0)],2),L(`div`,tP,[A(n).isAuthenticated?B(``,!0):(F(),I(`div`,{key:0,class:`menu-item-block right`,onClick:c},` Войти `)),A(n).isAuthenticated?(F(),I(`div`,{key:1,class:`menu-item-block right`,onClick:l},` Выйти `)):B(``,!0)])]))}}),rP=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},iP=rP(nP,[[`__scopeId`,`data-v-97c2db91`]]),aP={class:`center-block-custom`},oP={class:`width1200 display-table`},sP=[`onClick`],cP={class:`scenario-content-block`},lP={class:`scenario-title`},uP={class:`scenario-description`},dP={class:`scenario-label`},fP=rP(N({__name:`CatalogPage`,setup(e){let t=uN(),n=k([]),r=bj();async function i(){n.value=[];let e=await t.GetScenariosCatalog({});n.value=e.scenarios}async function a(e){r.push(`/scenarios/`+e)}return i(),(e,t)=>(F(),I(P,null,[L(`div`,aP,[L(`div`,oP,[(F(!0),I(P,null,ni(n.value,e=>(F(),I(`div`,{class:`scenario-block`,onClick:t=>a(e.id),key:e.id},[L(`div`,{class:`scenario-image-block scenario-image`,style:fe({backgroundImage:`url(${e.image})`})},null,4),L(`div`,cP,[L(`p`,lP,O(e.name),1),L(`p`,uP,O(e.description),1),L(`p`,dP,[R(A(XC),{bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[z(`Автор: `+O(e.author?.username),1)]),_:2},1024)])])],8,sP))),128))])]),R(iP,{active:`catalog`})],64))}}),[[`__scopeId`,`data-v-eeb868d7`]]),pP=N({__name:`CatalogView`,setup(e){return(e,t)=>(F(),Da(fP))}}),mP={class:`text-with-font`},hP=rP(N({__name:`HeaderText`,setup(e){return(e,t)=>(F(),I(`span`,mP,[ri(e.$slots,`default`,{},void 0,!0)]))}}),[[`__scopeId`,`data-v-689794e0`]]),gP={class:`center-block-custom`},_P={class:`width700 doc-page`},vP={class:`doc-title`},yP={key:0,class:`doc-loading`},bP={key:2,class:`paper-block`},xP={class:`paper`},SP={class:`doc-text`},CP={class:`docs-links`},wP=rP(N({__name:`DocsPage`,props:{kind:{}},setup(e){let t=e,n={terms:`Пользовательское соглашение`,privacy:`Политика конфиденциальности`,consent:`Согласие на обработку персональных данных`},r=k(``),i=k(!0),a=k(``);return Hr(async()=>{let e=uN(),n={terms:()=>e.GetTerms({}),privacy:()=>e.GetPrivacy({}),consent:()=>e.GetConsent({})};try{let e=await n[t.kind]();e.error?a.value=e.error:r.value=e.text||``}catch(e){a.value=e instanceof Error?e.message:`Не удалось загрузить документ`}finally{i.value=!1}}),(e,o)=>(F(),I(`div`,gP,[L(`div`,_P,[L(`h1`,vP,[R(hP,null,{default:M(()=>[z(O(n[t.kind]),1)]),_:1})]),i.value?(F(),I(`div`,yP,[R(A(oA),{size:`large`})])):a.value?(F(),Da(A(pw),{key:1,type:`error`,"show-icon":!1,class:`doc-error`},{default:M(()=>[z(O(a.value),1)]),_:1})):(F(),I(`div`,bP,[L(`div`,xP,[L(`p`,SP,O(r.value),1)]),o[0]||=L(`div`,{class:`paper-shadow paper-shadow-left`},null,-1),o[1]||=L(`div`,{class:`paper-shadow paper-shadow-right`},null,-1)])),L(`div`,CP,[o[5]||=z(` Смотрите также: `,-1),R(A(YM),{to:`/user-agreement`,class:`docs-link`},{default:M(()=>[...o[2]||=[z(`Пользовательское соглашение`,-1)]]),_:1}),o[6]||=z(` · `,-1),R(A(YM),{to:`/privacy-policy`,class:`docs-link`},{default:M(()=>[...o[3]||=[z(`Политика конфиденциальности`,-1)]]),_:1}),o[7]||=z(` · `,-1),R(A(YM),{to:`/consent`,class:`docs-link`},{default:M(()=>[...o[4]||=[z(`Согласие на обработку персональных данных`,-1)]]),_:1})])])]))}}),[[`__scopeId`,`data-v-f5dde12c`]]),TP=N({__name:`ConsentView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`consent`}),R(iP)],64))}}),EP={class:`center-block-custom`},DP={class:`width1200`},OP=[`onClick`],kP={class:`game-title`},AP={class:`game-description`},jP=rP(N({__name:`GamesPage`,setup(e){let t=uN(),n=dD(),r=bj(),i=k([]);async function a(){i.value=[];let e=await t.GetGames({});if(e.error!=``){n.error(e.error);return}i.value=e.games||[]}a();async function o(e){r.push(`/games/`+e)}return(e,t)=>(F(),I(P,null,[L(`div`,EP,[L(`div`,DP,[(F(!0),I(P,null,ni(i.value,e=>(F(),I(`div`,{key:e.id,class:`game-block`,onClick:t=>o(e.id)},[L(`div`,kP,O(e.name),1),L(`div`,AP,O(e.description),1)],8,OP))),128))])]),R(iP,{active:`games`})],64))}}),[[`__scopeId`,`data-v-047ac80b`]]),MP=N({__name:`GamesView`,setup(e){return(e,t)=>(F(),Da(jP))}}),NP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},PP=N({name:`Archive`,render:function(e,t){return F(),I(`svg`,NP,t[0]||=[L(`path`,{d:`M14 19h4v2h-4z`,fill:`currentColor`},null,-1),L(`path`,{d:`M6 2v26a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V2zm18 26H8V16h16zm0-14H8v-4h16zM8 8V4h16v4z`,fill:`currentColor`},null,-1)])}}),FP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},IP=N({name:`Flag`,render:function(e,t){return F(),I(`svg`,FP,t[0]||=[L(`path`,{d:`M6 30H4V2h24l-5.8 9l5.8 9H6zm0-12h18.33l-4.53-7l4.53-7H6z`,fill:`currentColor`},null,-1)])}}),LP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},RP=N({name:`Pause`,render:function(e,t){return F(),I(`svg`,LP,t[0]||=[L(`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),L(`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)])}}),zP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},BP=N({name:`Play`,render:function(e,t){return F(),I(`svg`,zP,t[0]||=[L(`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)])}}),VP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},HP=N({name:`Reset`,render:function(e,t){return F(),I(`svg`,VP,t[0]||=[L(`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)])}}),UP={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 32 32`},WP=N({name:`Settings`,render:function(e,t){return F(),I(`svg`,UP,t[0]||=[L(`path`,{d:`M27 16.76V16v-.77l1.92-1.68A2 2 0 0 0 29.3 11l-2.36-4a2 2 0 0 0-1.73-1a2 2 0 0 0-.64.1l-2.43.82a11.35 11.35 0 0 0-1.31-.75l-.51-2.52a2 2 0 0 0-2-1.61h-4.68a2 2 0 0 0-2 1.61l-.51 2.52a11.48 11.48 0 0 0-1.32.75l-2.38-.86A2 2 0 0 0 6.79 6a2 2 0 0 0-1.73 1L2.7 11a2 2 0 0 0 .41 2.51L5 15.24v1.53l-1.89 1.68A2 2 0 0 0 2.7 21l2.36 4a2 2 0 0 0 1.73 1a2 2 0 0 0 .64-.1l2.43-.82a11.35 11.35 0 0 0 1.31.75l.51 2.52a2 2 0 0 0 2 1.61h4.72a2 2 0 0 0 2-1.61l.51-2.52a11.48 11.48 0 0 0 1.32-.75l2.42.82a2 2 0 0 0 .64.1a2 2 0 0 0 1.73-1l2.28-4a2 2 0 0 0-.41-2.51zM25.21 24l-3.43-1.16a8.86 8.86 0 0 1-2.71 1.57L18.36 28h-4.72l-.71-3.55a9.36 9.36 0 0 1-2.7-1.57L6.79 24l-2.36-4l2.72-2.4a8.9 8.9 0 0 1 0-3.13L4.43 12l2.36-4l3.43 1.16a8.86 8.86 0 0 1 2.71-1.57L13.64 4h4.72l.71 3.55a9.36 9.36 0 0 1 2.7 1.57L25.21 8l2.36 4l-2.72 2.4a8.9 8.9 0 0 1 0 3.13L27.57 20z`,fill:`currentColor`},null,-1),L(`path`,{d:`M16 22a6 6 0 1 1 6-6a5.94 5.94 0 0 1-6 6zm0-10a3.91 3.91 0 0 0-4 4a3.91 3.91 0 0 0 4 4a3.91 3.91 0 0 0 4-4a3.91 3.91 0 0 0-4-4z`,fill:`currentColor`},null,-1)])}});function GP(e,t=5e3){let n=k(!0),r=null,i=()=>{n.value=!0,e(),r=window.setInterval(e,t)},a=()=>{n.value=!1,r&&=(clearInterval(r),null)};return Hr(i),Kr(a),{isActive:n,start:i,stop:a}}function KP(e){let t=e?.file_type;if(t===`pdf`||t===`image`||t===`audio`)return t;let n=(e?.image||``).toLowerCase();return/\.pdf($|\?)/.test(n)?`pdf`:/\.(mp3|wav|ogg|m4a|aac|flac|opus)($|\?)/.test(n)?`audio`:/\.(png|jpe?g|gif|webp|bmp|svg)($|\?)/.test(n)?`image`:``}function qP(e){if(!e)return``;let t=e.toLowerCase();return t.startsWith(`http://`)||t.startsWith(`https://`)?e:e.startsWith(`/`)?cN()+e:`${cN()}/api/files/${e}`}function JP(e){return e?e.split(`/`).pop()||e:``}var YP={class:`center-block-custom`},XP={class:`width1200`},ZP={class:`settings-block`},QP={class:`team-content-block`},$P={class:`title-block`},eF={class:`team-name-block`},tF={key:0,class:`give-application-image-block`},nF=[`src`],rF=[`src`],iF=[`href`],aF={class:`qr-block`},oF={key:0,class:`answers-empty`},sF={class:`answers-question-title`},cF={class:`answers-question-answer`},lF={class:`answers-team-name`},uF={class:`answers-team-answer`},dF=rP(N({__name:`GamePage`,setup(e){let t=uN(),n=bj(),r=xj().params.id,i=dD(),a=k(!1),o=k(!1),s=k(!1),c=k(!1),l=k(!1),u=k(``),d=k(``),f=k(!1),p=k(``),m=k(``),h=k({id:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,scenario:void 0,teams:void 0});async function g(e){let n=await t.GetGame({id:e});if(n.error!=``){i.error(n.error);return}h.value=n.game,h.value.teams=h.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(na?1:i{g(Number(r))},2e3);async function ie(){let e=await t.ResetGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function ae(){let e=await t.StartGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function oe(){let e=await t.PauseGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function se(){let e=await t.PlayGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}async function ce(){let e=await t.FinishGame({id:h.value.id});if(e.error!=``){i.error(e.error);return}await g(h.value.id)}let le=k(!1),ue=k([]),de=k([]),fe=k({});function pe(e,t){return(e??``)+`:`+(t??``)}function me(e,t){return(e.answers||[]).find(e=>e.questionCode==t)?.answer||``}function he(e,t){fe.value[e]=t===null?void 0:t}async function ge(){let e=await t.GetGameAnswers({gameId:Number(r)});if(e.error!=``){i.error(e.error);return}ue.value=e.questions||[],de.value=e.teams||[];let n={};for(let e of de.value)for(let t of e.answers||[])n[pe(e.team?.id,t.questionCode)]=t.score;fe.value=n}async function _e(){le.value=!0,await ge()}async function ve(){for(let e of ue.value)for(let n of de.value){let r=fe.value[pe(n.team?.id,e.code)],a=await t.SetTeamAnswerScore({id:n.team?.id,questionCode:e.code,score:r??void 0});if(a.error!=``){i.error(a.error);return}}i.success(`Баллы сохранены`),await ge()}function ye(e){let[t,n]=e.split(`T`),[r,i,a]=t.split(`-`).map(Number),[o,s,c]=(n.split(`.`)[0]||`00:00:00`).split(`:`).map(Number);return new Date(Date.UTC(r,i-1,a,o,s,c||0))}function be(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4)}function xe(e,t){if(e==``)return`Игра ещё не началась`;let n=ye(e),r=be();t!=``&&(r=ye(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 Se=k(``);return GP(()=>{Se.value=xe(h.value.startedAt||``,h.value.endedAt||``)},1e3),(e,t)=>(F(),I(P,null,[L(`div`,YP,[L(`div`,XP,[L(`div`,ZP,[R(A(HD),{justify:`space-between`},{default:M(()=>[R(A(FD),null,{default:M(()=>[R(A(XC),{bordered:!1,type:`info`},{default:M(()=>[z(` Команд: `+O(h.value.teams?.length),1)]),_:1}),R(A(XC),{type:`info`},{default:M(()=>[z(O(Se.value),1)]),_:1})]),_:1}),R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{quaternary:``,onClick:t[0]||=e=>re(A(C),`Админка`)},{default:M(()=>[...t[35]||=[z(` QR `,-1)]]),_:1}),R(A($),{quaternary:``,onClick:t[1]||=e=>_e()},{default:M(()=>[...t[36]||=[z(` Ответы команд `,-1)]]),_:1}),R(A($),{quaternary:``,onClick:t[2]||=e=>a.value=!0},{default:M(()=>[R(A($N),{class:`settings-icon`},{default:M(()=>[R(A(WP))]),_:1}),t[37]||=z(` Настройки `,-1)]),_:1}),(h.value.teams?.length||0)==0?(F(),Da(A($),{key:0,type:`error`,quaternary:``,onClick:t[3]||=e=>l.value=!0},{default:M(()=>[...t[38]||=[z(` Удалить игру `,-1)]]),_:1})):B(``,!0),R(A(FD),null,{default:M(()=>[h.value.status==`draft`?B(``,!0):(F(),Da(A($),{key:0,type:`info`,dashed:``,onClick:t[4]||=e=>ie()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(HP))]),_:1})]),_:1})),h.value.status==`draft`?(F(),Da(A($),{key:1,type:`info`,dashed:``,onClick:t[5]||=e=>ae()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(BP))]),_:1})]),_:1})):B(``,!0),h.value.status==`pause`?(F(),Da(A($),{key:2,type:`info`,dashed:``,onClick:t[6]||=e=>se()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(BP))]),_:1})]),_:1})):B(``,!0),h.value.status==`run`?(F(),Da(A($),{key:3,type:`info`,dashed:``,onClick:t[7]||=e=>oe()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(RP))]),_:1})]),_:1})):B(``,!0),h.value.status==`finish`?B(``,!0):(F(),Da(A($),{key:4,type:`info`,dashed:``,onClick:t[8]||=e=>ce()},{default:M(()=>[R(A($N),null,{default:M(()=>[R(A(IP))]),_:1})]),_:1}))]),_:1})]),_:1})]),_:1})]),L(`div`,{class:`team-block team-block-hover`,onClick:t[9]||=e=>s.value=!0},[...t[39]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]]),(F(!0),I(P,null,ni(h.value.teams,e=>(F(),I(`div`,{key:e.id,class:`team-block`},[L(`div`,QP,[R(A(HD),{justify:`space-between`},{default:M(()=>[L(`div`,$P,[L(`span`,eF,O(e.name),1),L(`div`,null,`Поездки: `+O(e.actionsCount),1)]),R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>re(ne(e.id,e.password),`Подсмотреть игру`)},{default:M(()=>[...t[40]||=[z(` QR `,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>_(e.id,e.password,!0)},{default:M(()=>[...t[41]||=[z(` Подсмотреть игру `,-1)]]),_:1},8,[`onClick`]),R(A($),{type:`error`,ghost:``,onClick:t=>E(e)},{default:M(()=>[...t[42]||=[z(` Удалить `,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024),(F(!0),I(P,null,ni(e.applications,t=>(F(),Da(A($),{key:t.name,class:`link-button`,onClick:n=>w(e,t)},{default:M(()=>[z(` Выдать: `+O(t.name),1)]),_:2},1032,[`onClick`]))),128))])]))),128))])]),R(A(XE),{show:a.value,"onUpdate:show":t[14]||=e=>a.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[10]||=e=>a.value=!1},{default:M(()=>[...t[43]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[13]||=e=>v(),ghost:``},{default:M(()=>[...t[46]||=[z(` Сохранить изменения `,-1)]]),_:1})]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[t[44]||=L(`p`,null,`Название`,-1),R(A(jw),{value:h.value.name,"onUpdate:value":t[11]||=e=>h.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),t[45]||=L(`p`,{class:`settings-header`},`Описание`,-1),R(A(jw),{value:h.value.description,"onUpdate:value":t[12]||=e=>h.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:o.value,"onUpdate:show":t[17]||=e=>o.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[15]||=e=>o.value=!1},{default:M(()=>[...t[47]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[16]||=e=>ee(),ghost:``},{default:M(()=>[...t[50]||=[z(` Выдать `,-1)]]),_:1})]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[t[48]||=L(`p`,null,`Команда`,-1),L(`h3`,null,O(y.value.name),1),t[49]||=L(`p`,null,`Улика`,-1),L(`h3`,null,O(S.value.name),1),A(KP)(S.value)==`image`&&S.value.image?(F(),I(`div`,tF,[L(`img`,{src:A(qP)(S.value.image),class:`give-application-image`},null,8,nF)])):A(KP)(S.value)==`audio`&&S.value.image?(F(),I(`audio`,{key:1,src:A(qP)(S.value.image),controls:``,preload:`none`,class:`give-application-audio`},null,8,rF)):A(KP)(S.value)==`pdf`&&S.value.image?(F(),I(`a`,{key:2,href:A(qP)(S.value.image),target:`_blank`,rel:`noopener`,class:`give-application-pdf-link`},` PDF `,8,iF)):B(``,!0)]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:s.value,"onUpdate:show":t[21]||=e=>s.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Создание команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[18]||=e=>s.value=!1},{default:M(()=>[...t[51]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[20]||=e=>T(),disabled:u.value.length==0},{default:M(()=>[...t[52]||=[z(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(jw),{value:u.value,"onUpdate:value":t[19]||=e=>u.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:c.value,"onUpdate:show":t[25]||=e=>c.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Удаление команды`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[22]||=e=>c.value=!1},{default:M(()=>[...t[53]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[24]||=e=>D(),disabled:b.value!=x.value.name},{default:M(()=>[...t[56]||=[z(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`p`,null,[t[54]||=z(` Введите название команды `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(x.value.name),1)]),_:1}),t[55]||=z(` чтобы удалить его `,-1)]),R(A(jw),{value:b.value,"onUpdate:value":t[23]||=e=>b.value=e,type:`text`,placeholder:`Три дебила`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:l.value,"onUpdate:show":t[29]||=e=>l.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Удаление игры`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[26]||=e=>l.value=!1},{default:M(()=>[...t[57]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[28]||=e=>te(),disabled:d.value!=h.value.name},{default:M(()=>[...t[60]||=[z(` Удалить `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`p`,null,[t[58]||=z(` Введите название игры `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(h.value.name),1)]),_:1}),t[59]||=z(` чтобы удалить её `,-1)]),R(A(jw),{value:d.value,"onUpdate:value":t[27]||=e=>d.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:f.value,"onUpdate:show":t[31]||=e=>f.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:m.value,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[30]||=e=>f.value=!1},{default:M(()=>[...t[61]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[...t[62]||=[]]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`div`,aF,[R(A(nA),{value:p.value,size:300,padding:0},null,8,[`value`])])]),_:1})]),_:1},8,[`title`])]),_:1},8,[`show`]),R(A(XE),{show:le.value,"onUpdate:show":t[34]||=e=>le.value=e},{default:M(()=>[R(A(MT),{style:{width:`min(94vw, 900px)`},title:`Ответы команд`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`,"content-style":{maxHeight:`70vh`,overflow:`auto`}},{"header-extra":M(()=>[R(A($),{onClick:t[32]||=e=>le.value=!1},{default:M(()=>[...t[63]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[33]||=e=>ve(),disabled:ue.value.length==0},{default:M(()=>[...t[64]||=[z(` Сохранить баллы `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[ue.value.length==0?(F(),I(`div`,oF,` Вопросы дела не заданы или команды ещё не отвечали. `)):B(``,!0),(F(!0),I(P,null,ni(ue.value,e=>(F(),I(`div`,{key:e.code,class:`answers-question-block`},[L(`p`,sF,O(e.code)+`: `+O(e.text),1),L(`p`,cF,`Правильный ответ: `+O(e.answer||`—`),1),(F(!0),I(P,null,ni(de.value,t=>(F(),I(`div`,{key:t.team?.id,class:`answers-team-row`},[L(`div`,lF,O(t.team?.name),1),L(`div`,uF,O(me(t,e.code)||`—`),1),R(A(Pk),{value:fe.value[pe(t.team?.id,e.code)],"onUpdate:value":n=>he(pe(t.team?.id,e.code),n),placeholder:`Балл`,class:`answers-score-input`},null,8,[`value`,`onUpdate:value`])]))),128))]))),128))]),_:1})]),_:1},8,[`show`]),R(iP,{active:`games`})],64))}}),[[`__scopeId`,`data-v-8f1e6c6c`]]),fF=N({__name:`GameView`,setup(e){return(e,t)=>(F(),Da(dF))}}),pF=N({__name:`HomeView`,setup(e){return(e,t)=>(F(),I(P,null,[t[0]||=L(`div`,{class:`center-block-custom content-block center-middle-block-custom height80`},[L(`div`,null,[L(`h1`,{class:`font-text`},`Вечерний детектив`),L(`h3`,{class:`font-text`},`Дело №0`),L(`p`,{class:`content-text`},`Поиграем?`)])],-1),R(iP,{active:`main`})],64))}}),mF={class:`center-block-custom content-block center-middle-block-custom height80`},hF={class:`form-button-wrapper`},gF={class:`form-label`},_F={key:0},vF={key:1},yF={class:`form-label`},bF={class:`form-label`},xF={class:`form-button-wrapper`},SF={class:`form-label`},CF={key:0},wF={key:1},TF={class:`form-button-wrapper`},EF={class:`form-label`},DF={key:0},OF={key:1},kF=rP(N({__name:`LoginPage`,setup(e){let t=lN(),n=bj(),r=dD(),i=k(``),a=k(``),o=k(``),s=k(!1),c=k(!1),l=V(()=>[`@mail.ru`,`@yandex.ru`,`@gmail.com`].map(e=>{let t=a.value.split(`@`)[0];return{label:t+e,value:t+e}}));async function u(){if(!await t.login(a.value,o.value)&&t.error!=null){r.error(t.error);return}n.push(`/office`)}async function d(){if(!(!s.value||!c.value)){if(!await t.signup(i.value,a.value,s.value,c.value)&&t.error!=null){r.error(t.error);return}r.info(`Пароль отправлен на почту`),s.value=!1,c.value=!1}}async function f(){if(!await t.refreshPassword(a.value)&&t.error!=null){r.error(t.error);return}r.info(`Пароль отправлен на почту`)}return(e,n)=>(F(),I(`div`,mF,[R(A(MT),{style:{"margin-bottom":`16px`},class:`sign-card`},{default:M(()=>[R(A(vA),{type:`line`,animated:``},{default:M(()=>[R(A(mA),{name:`signin`,tab:`Вход`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[7]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[0]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),n[8]||=L(`div`,{class:`form-label`},`Пароль`,-1),R(A(jw),{value:o.value,"onUpdate:value":n[1]||=e=>o.value=e,type:`password`,placeholder:`********`},null,8,[`value`]),L(`div`,hF,[L(`div`,gF,[R(A($),{onClick:u,disabled:a.value.length==0||o.value.length==0},{default:M(()=>[A(t).isLoading?(F(),I(`span`,vF,` Подождите... `)):(F(),I(`span`,_F,` Вход `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1}),R(A(mA),{name:`signup`,tab:`Регистрация`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[11]||=L(`div`,{class:`form-label`},`Позывной`,-1),R(A(jw),{value:i.value,"onUpdate:value":n[2]||=e=>i.value=e,type:`text`,placeholder:`Шерлок`},null,8,[`value`]),n[12]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[3]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),L(`div`,yF,[R(A(GT),{checked:s.value,"onUpdate:checked":n[4]||=e=>s.value=e},{default:M(()=>[...n[9]||=[z(` Я принимаю условия `,-1),L(`a`,{href:`/user-agreement`,target:`_blank`,class:`docs-link`},`пользовательского соглашения`,-1)]]),_:1},8,[`checked`])]),L(`div`,bF,[R(A(GT),{checked:c.value,"onUpdate:checked":n[5]||=e=>c.value=e},{default:M(()=>[...n[10]||=[z(` Я даю согласие на обработку `,-1),L(`a`,{href:`/privacy-policy`,target:`_blank`,class:`docs-link`},`персональных данных`,-1)]]),_:1},8,[`checked`])]),L(`div`,xF,[L(`div`,SF,[R(A($),{onClick:d,disabled:i.value.length==0||a.value.length==0||!s.value||!c.value},{default:M(()=>[A(t).isLoading?(F(),I(`span`,wF,` Подождите... `)):(F(),I(`span`,CF,` Регистрация `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1}),R(A(mA),{name:`new-password`,tab:`Новый пароль`},{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[13]||=L(`div`,{class:`form-label`},`Почта`,-1),R(A(Uw),{value:a.value,"onUpdate:value":n[6]||=e=>a.value=e,"input-props":{autocomplete:`disabled`},options:l.value,placeholder:`detective@mail.ru`,clearable:``},null,8,[`value`,`options`]),L(`div`,TF,[L(`div`,EF,[R(A($),{onClick:f,disabled:a.value.length==0},{default:M(()=>[A(t).isLoading?(F(),I(`span`,OF,` Подождите... `)):(F(),I(`span`,DF,` Прислать новый пароль `))]),_:1},8,[`disabled`])])])]),_:1})]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-b7969e02`]]),AF=N({__name:`LoginView`,setup(e){return(e,t)=>(F(),I(P,null,[R(kF),R(iP)],64))}}),jF={class:`center-block-custom`},MF={class:`width700`},NF={class:`danger-zone`},PF={key:0,class:`delete-modal-error`},FF={class:`delete-modal-buttons`},IF=rP(N({__name:`OfficePage`,setup(e){let t=lN(),n=bj(),r=dD(),i=uN(),a=k([]);async function o(){a.value=[];let e=await i.GetPermissions({});a.value=e.permissions}o();function s(){let e=new Date,t=e.getDay(),n=e.getDate(),r=e.getMonth()+1,i=t===1,a=t===5&&n===13,o=r===1&&n===1||r===12&&n===31,s=r>=6&&r<=8,c=r===12||r<=2,l=n%5==0,u=[`Всегда носи с собой запасную ручку — признания любят записывать в самый неподходящий момент.`,`Если подозреваемый слишком вежлив, он либо дипломат, либо прячет труп в гараже.`,`Кофе в участке — это не напиток, это яд для улик. Пей только свой.`,`Следы на месте преступления всегда ведут к тому, кто забыл закрыть дверь.`,`Лучший способ разговорить молчуна — предложить ему чай с тремя ложками сахара.`,`Если всё указывает на дворецкого, ищи того, кто нанимал дворецкого.`,`Записывай каждую мелочь. Особенно цвет носков убитого.`,`Не верь алиби, которое начинается со слов 'Я бы никогда...'`,`Преступник всегда возвращается на место преступления. Или за забытым телефоном.`,`Ищи того, кому есть что терять, кроме своего времени.`,`Если женщина плачет в кабинете — дай ей платок. Если мужчина — дай ему стакан воды.`,`Самое опасное оружие — не пистолет, а бухгалтерская книга.`,`Собака всегда знает убийцу. Но она не говорит, потому что у неё контракт.`,`Проверяй чеки, билеты и смс. Ложь не терпит документации.`,`Если у тела нет врагов — ты плохо искал врагов.`,`Лупа нужна не для увеличения улик, а для того, чтобы выглядеть умнее.`,`Интуиция — это когда ты уже знаешь ответ, но хочешь убедиться, что не ошибся.`,`Подозревай всех, даже самого себя. Иногда преступник — это ты в прошлом.`,`Хороший детектив видит улики. Великий — видит их отсутствие.`,`Никогда не допрашивай свидетеля на голодный желудок. И себя тоже.`,`Если дело зашло в тупик, переверни бумаги вверх ногами.`,`Самый ценный свидетель — это камера наблюдения, у которой сломана защита.`,`Не ищи мотив. Ищи возможность.`,`Преступник не оставляет следов. Он оставляет выбор.`,`Если дверь была закрыта изнутри — ищи люк, который открывается снаружи.`,`Лучший детектив — тот, кого не замечают в толпе.`,`Учись читать по губам. Пригодится на допросах с адвокатом.`,`Запах духов на месте преступления важнее запаха пороха.`,`Если ты нашел отпечаток пальца — проверь, не твой ли он.`,`Раскрыть дело — это искусство. Не раскрыть — тоже искусство, но другое.`,`Никогда не спорь с баллистикой. Она всегда права, даже если ты не согласен.`,`В каждом деле есть одна странная деталь. Найди её — и пазл сложится.`,`Если преступник умный — он оставит ложный след. Если глупый — он оставит следы в соцсетях.`,`Лучший друг детектива — тишина. Второй друг — кофе.`,`Если свидетель говорит слишком много, он врет. Если молчит — он тоже врет.`,`Преступление редко бывает идеальным. Идеальным бывает только алиби жены.`,`Всегда смотри на часы на трупе. Возможно, они показывают время, когда он перестал верить в людей.`,`Воры любят темноту. Детективы — свет. А маньяки — полную луну.`,`Если ты поймал преступника, не радуйся раньше времени — может, он просто лжец.`,`В каждом городе есть одно место, где собираются все сплетники. Начни оттуда.`,`Не верь в совпадения. Но верь в удачу.`,`Если у тебя нет улик — придумай их. Но только мысленно, чтобы знать, где искать.`,`Жертва всегда знала убийцу. Даже если она не знала, что знает.`,`Проверяй алиби на разрыв. Если оно выдерживает — ты ошибся.`,`Самый страшный враг детектива — не маньяк, а его собственная лень.`,`Если преступник оставил записку — прочитай её. И сожги, чтобы никто не узнал твой почерк.`,`Всегда носи с собой фонарик. Даже днём. Для эффекта.`,`В деле важно всё: от укуса комара до размера обуви.`,`Если ты думаешь, что дело простое — значит, ты не додумал.`,`Убийца всегда ищет внимания. Или наоборот, избегает его.`,`Стук в дверь в полночь — это либо полиция, либо заказчик.`,`Никогда не давай обещаний родственникам жертвы. Только факты.`,`Если у тебя есть три версии — выбирай четвёртую.`,`Лучшее оружие — это бумага. На ней можно написать что угодно.`,`Когда ты смотришь на улику, смотри на неё глазами преступника.`,`Все любят детективы, пока не становятся подозреваемыми.`,`Следы крови важны. Но важнее — следы лжи.`,`Если ты не спишь третьи сутки, значит, ты либо гений, либо дурак.`,`Проверяй каждого, кто говорит 'Я ничего не видел'.`,`В каждом деле есть один человек, который знает всё. И он не говорит.`,`Не суди преступника по одежде. Суди по тому, как он её снимал.`,`Дыра в алиби — это как дыра в лодке. Рано или поздно она утонет.`,`Если преступник использует перчатки — он профессионал. Если нет — он любитель.`,`Запомни: первая версия — всегда неверная.`,`Если у тебя кончились идеи, иди в бар. Там всегда есть кто-то, кто расскажет тебе дело.`,`Свидетель с фотороботом — это как слепой с компасом.`,`Никогда не смейся над уликами. Они могут обидеться и исчезнуть.`,`Если ты нашёл оружие — не трогай его. Иначе твои отпечатки будут на нём.`,`Преступник умён, но ты умнее. Потому что ты пьёшь правильный кофе.`,`Всегда пересматривай видеозаписи. Особенно в два раза медленнее.`,`Если на месте преступления есть кот — он видел всё. Но он не скажет.`,`Лучший способ поймать преступника — пригласить его на обед.`,`Если подозреваемый улыбается, он либо невиновен, либо психопат.`,`Проверяй мусор. В нём всегда есть что-то полезное.`,`Никогда не доверяй красивым историям. Только уродливым фактам.`,`Если ты нашёл улику слишком легко — это ловушка.`,`Убийца всегда оставляет послание. Даже если это просто тишина.`,`Если ты запнулся на допросе — делай вид, что так и задумано.`,`Помни: все врут. Даже я тебе советую.`,`Если ты боишься темноты — стань детективом. Страх пройдёт.`,`Самые лучшие признания случаются под утро, когда все устали.`,`Если преступник использовал компьютер, значит, он либо хакер, либо дурак.`,`Следы шин — это как подпись на дороге.`,`Никогда не забывай про запах. Он помнит дольше, чем люди.`,`Если ты не знаешь, что делать — съешь шоколадку.`,`В каждом деле есть одна минута слабости. Найди её.`,`Преступник всегда нервничает. Даже если он не нервничает.`,`Если у тебя есть подозреваемый и нет улик — подожди. Улики появятся.`,`Не верь в чудеса. Верь в логику.`,`Если ты устал — возьми отпуск. Преступление никуда не денется.`,`Запомни: самый опасный преступник — тот, кто читал детективы.`,`Если ты думаешь, что всё кончено — значит, ты пропустил поворот.`,`Следы на полу важнее следов в душе.`,`Если преступник оставил окурок — он курил. Или хотел, чтобы ты так думал.`,`Хороший детектив всегда голоден. Это помогает мыслить.`,`Не суди по первому впечатлению. Суди по второму, когда увидишь его в наручниках.`,`Если у тебя есть тайный агент — не доверяй ему.`,`В деле всегда есть тот, кто знает больше, чем говорит.`,`Если ты не можешь найти убийцу — стань им (в мыслях).`,`И последнее: всегда проверяй, закрыл ли ты дверь участка.`],d=[];i&&d.push(`☕ Понедельник: Сегодня даже преступники не хотят работать. Проверь тех, кто был слишком бодр.`),a&&d.push(`🔮 Пятница 13-е: Если улики ведут к чёрной кошке, ищи чёрного кота с алиби.`),o&&d.push(`🎄 Новый год: Свидетель в костюме Деда Мороза врёт. Настоящий Дед Мороз всегда в отпуске.`),s&&d.push(`☀️ Лето: В жару преступники забывают улики в карманах, потому что снимают пиджаки.`),c&&d.push(`❄️ Зима: Следы на снегу ведут к тому, у кого самые холодные руки.`),l&&d.push(`🌕 Полнолуние: Если подозреваемый воет на луну, он либо оборотень, либо фанат рока.`);let f=u.concat(d),p=f[Math.floor(Math.random()*f.length)],m=[`🔍 Заметки сыщика:`,`📓 Из дневника инспектора:`,`🕵️ Мудрость Шерлока:`,`🧠 Гениально и просто:`,`📌 Правило большого пальца:`,`☕ Кофейная истина:`];return{header:m[Math.floor(Math.random()*m.length)],text:p}}let c=s(),l=k(!1),u=k(``),d=k(``);async function f(){if(d.value=``,!await t.deleteAccount(u.value)){d.value=t.error||`Не удалось удалить аккаунт`;return}r.success(`Аккаунт и персональные данные удалены`),l.value=!1,n.push(`/login`)}return(e,n)=>(F(),I(P,null,[L(`div`,jF,[L(`div`,MF,[R(A(pw),{title:A(c).header,"show-icon":!1,type:`info`,style:{"margin-bottom":`20px`}},{default:M(()=>[z(O(A(c).text),1)]),_:1},8,[`title`]),L(`p`,null,`Доброго времени суток, `+O(A(t).username)+`.`,1),L(`div`,NF,[n[5]||=L(`div`,{class:`danger-zone-text`},[L(`div`,{class:`danger-zone-title`},`Удаление аккаунта`),L(`div`,{class:`danger-zone-hint`},` Удаление необратимо: аккаунт и все персональные данные будут стёрты (ст. 21 152-ФЗ). `)],-1),R(A($),{type:`error`,ghost:``,onClick:n[0]||=e=>l.value=!0},{default:M(()=>[...n[4]||=[z(`Удалить аккаунт`,-1)]]),_:1})])])]),R(A(XE),{show:l.value,"onUpdate:show":n[3]||=e=>l.value=e,preset:`card`,title:`Удаление аккаунта`,class:`delete-modal`},{default:M(()=>[n[8]||=L(`p`,{class:`delete-modal-text`},` Это действие необратимо. Для подтверждения удаления введите пароль от учётной записи — он понадобится, чтобы убедиться, что аккаунт удаляет его владелец. `,-1),R(A(jw),{value:u.value,"onUpdate:value":n[1]||=e=>u.value=e,type:`password`,placeholder:`Пароль для подтверждения`,onKeyup:Is(f,[`enter`])},null,8,[`value`]),d.value?(F(),I(`p`,PF,O(d.value),1)):B(``,!0),L(`div`,FF,[R(A($),{onClick:n[2]||=e=>l.value=!1},{default:M(()=>[...n[6]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{type:`error`,disabled:u.value.length==0,loading:A(t).isLoading,onClick:f},{default:M(()=>[...n[7]||=[z(` Удалить навсегда `,-1)]]),_:1},8,[`disabled`,`loading`])])]),_:1},8,[`show`]),R(iP,{active:`office`})],64))}}),[[`__scopeId`,`data-v-34dfe8a1`]]),LF=N({__name:`OfficeView`,setup(e){return(e,t)=>(F(),Da(IF))}}),RF=N({__name:`PrivacyPolicyView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`privacy`}),R(iP)],64))}});function zF(){let e=lN();return BF(e.refreshTokenAction,e.getToken)}function BF(e,t){async function n(n,r){let i={},a=t();a&&(i.Authorization=`Bearer ${a}`);let o=await fetch(`${cN()}/${n}`,{...r,headers:{...i,...r.headers}});if(o.status==401){await e();let a=t();a&&(i.Authorization=`Bearer ${a}`),o=await fetch(`${cN()}/${n}`,{...r,headers:{...i,...r.headers}})}return o}async function r(e){let t=await n(`api/scenarios/${e}/archive`,{method:`GET`});if(!t.ok)throw Error(await HF(t));return{blob:await t.blob(),filename:VF(t.headers.get(`Content-Disposition`))||`scenario-${e}.zip`}}async function i(e){let t=await n(`api/scenarios/archive`,{method:`POST`,headers:{"Content-Type":e.type||`application/zip`},body:e}),r=await t.json().catch(()=>null);if(!t.ok)return{id:null,error:r?.message||`Ошибка сервера (${t.status})`};let i=typeof r?.error==`string`&&r.error!==``?r.error:null;return{id:typeof r?.id==`number`?r.id:null,error:i}}return{downloadScenarioArchive:r,uploadScenarioArchive:i}}function VF(e){if(!e)return``;let t=e.match(/filename="?([^";]+)"?/i);return(t?t[1]:``).replace(/[\\/:*?"<>|]/g,`_`)}async function HF(e){let t=await e.json().catch(()=>null);return t&&typeof t.message==`string`&&t.message!==``?t.message:`Ошибка сервера (${e.status})`}var UF={class:`main`},WF={class:`message-cloud`},GF=rP(N({__name:`MessagePaper`,setup(e){return(e,t)=>(F(),I(`div`,UF,[t[0]||=L(`div`,{class:`message-cloud-3`},null,-1),t[1]||=L(`div`,{class:`message-cloud-2`},null,-1),L(`div`,WF,[ri(e.$slots,`default`,{},void 0,!0)])]))}}),[[`__scopeId`,`data-v-0b1b8d3f`]]),KF={key:0},qF={class:`intro-text font`},JF={key:0,class:`intro-audio-block`},YF=[`src`],XF={class:`message-content`},ZF={key:0,class:`intro-audio-block`},QF=[`src`],$F={key:1},eI={key:2,class:`intro-empty`},tI={key:2,class:`place-block`},nI={class:`intro-edit-audio`},rI=[`src`],iI={class:`slot-block`},aI=rP(N({__name:`IntroBlock`,props:{introduction:{type:Object,required:!0},mode:{type:String,required:!0}},emits:[`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:mode`,e)},a=V(()=>!!n.introduction?.text),o=V(()=>!!n.introduction?.audio),s=V(()=>{let e=n.introduction?.audio;if(e)return/^https?:\/\//i.test(e)?e:`${cN()}/api/files/${encodeURIComponent(e)}`}),c=()=>{n.introduction&&(n.introduction.audio=``,n.introduction.fileList=void 0)};return(t,r)=>(F(),I(P,null,[e.mode==`show`?(F(),I(`div`,KF,[R(GF,null,{default:M(()=>[r[4]||=L(`div`,{class:`font`},`Вступление`,-1),r[5]||=L(`hr`,{class:`intro-hr`},null,-1),L(`div`,qF,O(e.introduction.text),1),o.value?(F(),I(`div`,JF,[L(`audio`,{src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,YF)])):B(``,!0)]),_:1})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:1,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>i(`edit`)},[r[6]||=L(`div`,{class:`message-header`},`Вступление`,-1),r[7]||=L(`hr`,{class:`hr`},null,-1),L(`div`,XF,[o.value?(F(),I(`div`,ZF,[L(`audio`,{src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,QF)])):B(``,!0),a.value?(F(),I(`span`,$F,O(e.introduction.text),1)):(F(),I(`span`,eI,`Введение не задано — нажмите, чтобы добавить`))])])):B(``,!0),e.mode==`edit`?(F(),I(`div`,tI,[R(A(FD),{vertical:``},{default:M(()=>[r[11]||=L(`p`,{class:`settings-header`},`Текст вступления`,-1),R(A(jw),{value:n.introduction.text,"onUpdate:value":r[1]||=e=>n.introduction.text=e,type:`textarea`,autosize:{minRows:4,maxRows:12},placeholder:`Дорогие сыщики! В этом деле вам предстоит...`},null,8,[`value`]),r[12]||=L(`p`,{class:`settings-header`},`Аудио вступления`,-1),L(`div`,nI,[R(A(FD),{vertical:``},{default:M(()=>[o.value?(F(),I(`audio`,{key:0,src:s.value,controls:``,preload:`none`,class:`intro-audio`},null,8,rI)):(F(),Da(A(wA),{key:1,depth:`3`},{default:M(()=>[...r[8]||=[z(`Аудио не задано`,-1)]]),_:1})),R(A($),{onClick:r[2]||=e=>c(),disabled:!o.value},{default:M(()=>[...r[9]||=[z(`Убрать аудио`,-1)]]),_:1},8,[`disabled`])]),_:1}),R(A(nj),{"directory-dnd":``,max:1,"file-list":n.introduction.fileList,"onUpdate:fileList":r[3]||=e=>n.introduction.fileList=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...r[10]||=[z(` Щелкните или перетащите аудиофайл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),L(`div`,iI,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0)],64))}}),[[`__scopeId`,`data-v-607f7527`]]),oI={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 24 24`},sI=N({name:`Key24Regular`,render:function(e,t){return F(),I(`svg`,oI,t[0]||=[L(`g`,{fill:`none`},[L(`path`,{d:`M18.25 7a1.25 1.25 0 1 1-2.5 0a1.25 1.25 0 0 1 2.5 0zM15.5 2.05A6.554 6.554 0 0 0 8.95 8.6c0 .387.05.76.11 1.104a.275.275 0 0 1-.07.244l-6.235 6.236a2.75 2.75 0 0 0-.806 1.944V20.3c0 .966.784 1.75 1.75 1.75h2.5a1.75 1.75 0 0 0 1.75-1.75v-1.25H9.7c.69 0 1.25-.56 1.25-1.25v-1.75h1.75a1.25 1.25 0 0 0 1.25-1.204c.496.128 1.02.204 1.55.204a6.554 6.554 0 0 0 6.55-6.55c0-3.631-2.953-6.45-6.55-6.45zM10.45 8.6a5.054 5.054 0 0 1 5.05-5.05c2.802 0 5.05 2.181 5.05 4.95a5.054 5.054 0 0 1-5.05 5.05c-.68 0-1.38-.171-2.005-.44a.75.75 0 0 0-1.046.69v.75H10.7c-.69 0-1.25.56-1.25 1.25v1.75H7.7c-.69 0-1.25.56-1.25 1.25v1.5a.25.25 0 0 1-.25.25H3.7a.25.25 0 0 1-.25-.25v-2.172c0-.331.132-.65.366-.884l6.236-6.235a1.774 1.774 0 0 0 .486-1.564a4.917 4.917 0 0 1-.088-.845z`,fill:`currentColor`})],-1)])}}),cI={key:1,class:`place-block`},lI={class:`message-header`},uI={class:`message-content`},dI={key:0},fI=[`src`],pI={key:0,class:`hr`},mI={class:`application-name`},hI=[`onClick`],gI=[`src`],_I=[`src`],vI=[`href`],yI={class:`gray-block`},bI={key:0},xI={key:3},SI={class:`message-show-header font`},CI={class:`message-show-content font`},wI={key:0},TI=[`src`],EI=[`src`],DI={key:2,class:`show-applications-block`},OI=[`onClick`],kI=[`src`],AI={key:0,class:`show-hr`},jI=[`onClick`],MI={class:`button-dialog-text`},NI={key:1,class:`show-hr`},PI=[`href`],FI={class:`application-label`},II=[`src`],LI={key:4},RI={class:`message-header font`},zI={key:5,class:`place-block`},BI=[`src`],VI={style:{display:`flex`,"flex-direction":`column`,width:`100%`}},HI={key:0,class:`application-edit-file`},UI=[`src`],WI=[`src`],GI=[`href`],KI={style:{display:`flex`,"flex-direction":`column`}},qI={style:{display:`flex`,"flex-direction":`column`,width:`100%`}},JI={class:`door-add-block`},YI={class:`door-field`},XI={style:{"align-items":`center`,display:`flex`,width:`100%`}},ZI={style:{"align-items":`center`,display:`flex`,width:`100%`}},QI={class:`slot-block`},$I={key:0,class:`view-application-image-block`},eL=[`src`],tL=[`src`],nL=[`src`],rL={key:3,class:`view-application-image-block`},iL=[`src`],aL=rP(N({__name:`PlaceBlock`,props:{newPlaceCode:{type:String},newPlaceName:{type:String},newPlaceText:{type:String},place:{type:Object},mode:{type:String,required:!0},addAction:{type:Function}},emits:[`update:newPlaceCode`,`update:newPlaceName`,`update:newPlaceText`,`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:newPlaceCode`,e)},a=e=>{r(`update:newPlaceName`,e)},o=e=>{r(`update:newPlaceText`,e)},s=e=>{r(`update:mode`,e)};function c(){return{name:void 0,image:void 0,file_type:void 0}}function l(){return{code:void 0,name:void 0,keys:void 0}}function u(){return{name:void 0}}function d(e){return e}function f(e){e.image=void 0,e.file_type=void 0,e.fileList=void 0}let p=k(null),m=k(null),h=k(!1);function g(e){p.value=e,m.value=null,h.value=!0}function _(e,t){m.value={title:e,url:t},p.value=null,h.value=!0}function v(){h.value=!1,p.value=null,m.value=null}function y(e){let t=e||``;if(t.length==0)return{before:``,after:``};let n=Math.min(t.length,Math.max(120,Math.floor(t.length*.45))),r=-1,i=1/0;for(let e=0;ey(n.place?.text).before),x=V(()=>y(n.place?.text).after),S=V(()=>n.place?.image?null:(n.place?.applications||[]).find(e=>KP(e)==`image`&&e.image)||null),C=V(()=>(n.place?.applications||[]).filter(e=>e===S.value?!1:KP(e)==`image`&&e.image)),w=V(()=>(n.place?.applications||[]).filter(e=>e===S.value?!1:!(KP(e)==`image`&&e.image)));return(t,r)=>(F(),I(P,null,[e.mode==`mini-add`?(F(),I(`div`,{key:0,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>s(`add`)},[...r[21]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]])):B(``,!0),e.mode==`add`?(F(),I(`div`,cI,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`20%`},value:e.newPlaceCode,"onUpdate:value":i,type:`text`,placeholder:`Ы-1`},null,8,[`value`]),R(A(jw),{style:{width:`80%`},value:e.newPlaceName,"onUpdate:value":a,type:`text`,placeholder:`Дом №Ы`},null,8,[`value`])]),_:1}),R(A(jw),{value:e.newPlaceText,"onUpdate:value":o,type:`textarea`,autosize:{minRows:3},placeholder:`В начале было слово...`},null,8,[`value`]),ri(t.$slots,`default`,{},void 0,!0)]),_:3})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:2,class:`place-block-hover show-editor-block`,onClick:r[4]||=e=>s(`edit`)},[L(`div`,lI,O(n.place?.code)+`: `+O(n.place?.name),1),r[22]||=L(`hr`,{class:`hr`},null,-1),L(`div`,uI,[n.place?.image?(F(),I(`div`,dI,[L(`div`,{class:`message-image-border`,onClick:r[1]||=Ps(e=>_(n.place?.name||``,n.place?.image||``),[`stop`])},[L(`img`,{src:n.place?.image,class:`message-image`},null,8,fI)])])):B(``,!0),z(` `+O(n.place?.text),1)]),(F(!0),I(P,null,ni(n.place?.doors,e=>(F(),I(`div`,{key:e.code,class:`door-block`},[z(O(e.name)+` `,1),(F(!0),I(P,null,ni(e.keys,e=>(F(),I(`span`,{key:e.name,class:`key-block`},[R(A($N),{class:`lock-icon`},{default:M(()=>[R(A(gN))]),_:1}),z(` `+O(e.name),1)]))),128))]))),128)),n.place?.applications?.length?(F(),I(`hr`,pI)):B(``,!0),(F(!0),I(P,null,ni(n.place?.applications,e=>(F(),I(`div`,{class:`message-footer application-block`,key:e.name},[L(`div`,mI,`Приложение: `+O(e.name),1),A(KP)(e)==`image`&&e.image?(F(),I(`div`,{key:0,class:`application-image-border`,onClick:Ps(t=>g(e),[`stop`])},[L(`img`,{src:A(qP)(e.image),class:`application-image`},null,8,gI)],8,hI)):A(KP)(e)==`audio`&&e.image?(F(),I(`audio`,{key:1,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-audio`,onClick:r[2]||=Ps(()=>{},[`stop`])},null,8,_I)):A(KP)(e)==`pdf`&&e.image?(F(),I(`a`,{key:2,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`application-pdf-link`,onClick:r[3]||=Ps(()=>{},[`stop`])},` PDF `,8,vI)):B(``,!0)]))),128)),L(`p`,yI,[n.place?.hidden?(F(),I(`span`,bI,` Скрытая точка `)):B(``,!0),(F(!0),I(P,null,ni(n.place?.keys,e=>(F(),I(`span`,{key:e.name,class:`key-block`},[R(A($N),{class:`lock-icon`},{default:M(()=>[R(A(sI))]),_:1}),z(` `+O(e.name),1)]))),128))])])):B(``,!0),e.mode==`show`?(F(),I(`div`,xI,[R(GF,null,{default:M(()=>[L(`div`,SI,[z(O(e.place?.code)+`: `+O(e.place?.name)+` `,1),L(`span`,{class:`collapse-icon collapse-icon-up`,onClick:r[5]||=e=>s(`show-collapse`)})]),r[23]||=L(`hr`,{class:`show-hr`},null,-1),L(`div`,CI,[e.place?.image?.length?(F(),I(`div`,wI,[L(`div`,{class:`message-image-border`,onClick:r[6]||=t=>_(e.place?.name||``,e.place?.image||``)},[L(`img`,{src:e.place?.image,class:`message-image`},null,8,TI)])])):S.value?(F(),I(`div`,{key:1,class:`message-image-border`,onClick:r[7]||=e=>g(S.value)},[L(`img`,{src:A(qP)(S.value.image),class:`message-image`},null,8,EI)])):B(``,!0),z(` `+O(b.value)+` `,1),C.value.length?(F(),I(`div`,DI,[(F(!0),I(P,null,ni(C.value,e=>(F(),I(`div`,{class:`show-application`,key:e.name},[L(`div`,{class:`application-image-block`,onClick:t=>g(e)},[L(`img`,{src:A(qP)(e.image),class:`application-image`},null,8,kI)],8,OI)]))),128))])):B(``,!0),z(` `+O(x.value),1)]),n.place?.doors?.length?(F(),I(`hr`,AI)):B(``,!0),(F(!0),I(P,null,ni(n.place?.doors,t=>(F(),I(`div`,{key:t.code,class:`button-dialog font`,onClick:n=>e.addAction(t.code)},[L(`div`,MI,O(t.code)+` `+O(t.name),1)],8,jI))),128)),w.value.length?(F(),I(`hr`,NI)):B(``,!0),(F(!0),I(P,null,ni(w.value,e=>(F(),I(`div`,{class:`message-show-footer font`,key:e.name},[A(KP)(e)==`pdf`&&e.image?(F(),I(`a`,{key:0,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`pdf-application-name`},` Приложение: `+O(e.name),9,PI)):(F(),I(P,{key:1},[L(`div`,FI,`Приложение: `+O(e.name),1),A(KP)(e)==`audio`&&e.image?(F(),I(`audio`,{key:0,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-audio`},null,8,II)):B(``,!0)],64))]))),128))]),_:1})])):B(``,!0),e.mode==`show-collapse`?(F(),I(`div`,LI,[R(GF,null,{default:M(()=>[L(`div`,RI,[z(O(e.place?.code)+`: `+O(e.place?.name)+` `,1),L(`span`,{class:`collapse-icon`,onClick:r[8]||=e=>s(`show`)})])]),_:1})])):B(``,!0),e.mode==`edit`?(F(),I(`div`,zI,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`20%`},value:n.place.code,"onUpdate:value":r[9]||=e=>n.place.code=e,type:`text`,placeholder:`Ы-1`},null,8,[`value`]),R(A(jw),{style:{width:`80%`},value:n.place.name,"onUpdate:value":r[10]||=e=>n.place.name=e,type:`text`,placeholder:`Дом №Ы`},null,8,[`value`])]),_:1}),R(A(jw),{value:n.place.text,"onUpdate:value":r[11]||=e=>n.place.text=e,type:`textarea`,autosize:{minRows:3},placeholder:`В начале было слово...`},null,8,[`value`]),r[37]||=L(`p`,{class:`settings-header`},`Картинка`,-1),L(`div`,null,[R(A(FD),null,{default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[L(`img`,{src:n.place.image,class:`message-edit-image`},null,8,BI),R(A($),{onClick:r[12]||=e=>(n.place.image=``,n.place.fileList=void 0)},{default:M(()=>[...r[24]||=[z(`Убрать картинку`,-1)]]),_:1})]),_:1}),R(A(FD),{vertical:``},{default:M(()=>[R(A(jw),{value:n.place.image,"onUpdate:value":r[13]||=e=>n.place.image=e,type:`text`,placeholder:`Не задано`,disabled:``},null,8,[`value`]),R(A(nj),{"directory-dnd":``,max:1,"file-list":n.place.fileList,"onUpdate:fileList":r[14]||=e=>n.place.fileList=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...r[25]||=[z(` Щелкните или перетащите файл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),_:1})]),_:1})]),r[38]||=L(`p`,{class:`settings-header`},`Видимость точки`,-1),R(A(dA),{value:n.place.hidden,"onUpdate:value":r[15]||=e=>n.place.hidden=e},{checked:M(()=>[...r[26]||=[z(` Скрытая точка `,-1)]]),unchecked:M(()=>[...r[27]||=[z(` Обычная точка `,-1)]]),_:1},8,[`value`]),r[39]||=z(` Улики `,-1),R(A(OD),{value:n.place.applications,"onUpdate:value":r[16]||=e=>n.place.applications=e,"on-create":c},{"create-button-default":M(()=>[...r[28]||=[z(` Добавить улику `,-1)]]),default:M(({value:e})=>[L(`div`,VI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`]),e.image?(F(),I(`div`,HI,[R(A(FD),{align:`center`,justify:`space-between`},{default:M(()=>[R(A(wA),{depth:`3`},{default:M(()=>[z(O(A(JP)(e.image))+` `,1),R(A(XC),{size:`small`,bordered:!1},{default:M(()=>[z(O(A(KP)(e)||`файл`),1)]),_:2},1024)]),_:2},1024),R(A($),{size:`small`,quaternary:``,onClick:t=>f(d(e))},{default:M(()=>[...r[29]||=[z(` Убрать файл `,-1)]]),_:1},8,[`onClick`])]),_:2},1024),A(KP)(e)==`image`?(F(),I(`img`,{key:0,src:A(qP)(e.image),class:`application-edit-image`},null,8,UI)):A(KP)(e)==`audio`?(F(),I(`audio`,{key:1,src:A(qP)(e.image),controls:``,preload:`none`,class:`application-edit-audio`},null,8,WI)):A(KP)(e)==`pdf`?(F(),I(`a`,{key:2,href:A(qP)(e.image),target:`_blank`,rel:`noopener`,class:`application-pdf-link`},` PDF `,8,GI)):B(``,!0)])):B(``,!0),R(A(nj),{max:1,"file-list":d(e).fileList,"onUpdate:fileList":t=>d(e).fileList=t,accept:`image/*,application/pdf,audio/*`},{default:M(()=>[R(A($),{size:`small`},{default:M(()=>[...r[30]||=[z(`Загрузить файл улики`,-1)]]),_:1})]),_:1},8,[`file-list`,`onUpdate:fileList`])])]),_:1},8,[`value`]),r[40]||=z(` Действия `,-1),R(A(OD),{value:n.place.doors,"onUpdate:value":r[17]||=e=>n.place.doors=e,"on-create":l},{"create-button-default":M(()=>[...r[31]||=[z(` Добавить действие `,-1)]]),action:M(({index:e,create:t,remove:n})=>[L(`div`,KI,[R(A($),{onClick:()=>t(e),class:`plus-minus-buttons`},{default:M(()=>[...r[32]||=[z(`+`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:()=>n(e),class:`plus-minus-buttons`},{default:M(()=>[...r[33]||=[z(`-`,-1)]]),_:1},8,[`onClick`])])]),default:M(({value:e})=>[L(`div`,qI,[L(`div`,JI,[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`30%`},value:e.code,"onUpdate:value":t=>e.code=t,type:`text`,placeholder:`Код`},null,8,[`value`,`onUpdate:value`]),R(A(jw),{style:{width:`70%`},value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),r[35]||=L(`p`,{class:`need-keys-text`},`Требуемые ключи`,-1),L(`div`,YI,[R(A(OD),{value:e.keys,"onUpdate:value":t=>e.keys=t,"on-create":u},{"create-button-default":M(()=>[...r[34]||=[z(` Добавить ключ `,-1)]]),default:M(({value:e})=>[L(`div`,XI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])])]),_:1},8,[`value`,`onUpdate:value`])])])])]),_:1},8,[`value`]),r[41]||=z(` Получаемые ключи `,-1),R(A(OD),{value:n.place.keys,"onUpdate:value":r[18]||=e=>n.place.keys=e,"on-create":u},{"create-button-default":M(()=>[...r[36]||=[z(` Добавить ключ `,-1)]]),default:M(({value:e})=>[L(`div`,ZI,[R(A(jw),{value:e.name,"onUpdate:value":t=>e.name=t,type:`text`,placeholder:`Название`},null,8,[`value`,`onUpdate:value`])])]),_:1},8,[`value`]),L(`div`,QI,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0),R(A(XE),{show:h.value,"onUpdate:show":r[20]||=e=>h.value=e,"mask-closable":!0},{default:M(()=>[R(A(MT),{style:{width:`min(94vw, 1200px)`},bordered:!1,role:`dialog`,"aria-modal":`true`,"content-style":{padding:`14px`}},{header:M(()=>[z(O(p.value?.name||m.value?.title),1)]),"header-extra":M(()=>[R(A($),{quaternary:``,circle:``,onClick:r[19]||=e=>v()},{default:M(()=>[...r[42]||=[z(` x `,-1)]]),_:1})]),default:M(()=>[p.value&&A(KP)(p.value)==`image`?(F(),I(`div`,$I,[L(`img`,{src:A(qP)(p.value.image),class:`view-application-image`},null,8,eL)])):p.value&&A(KP)(p.value)==`pdf`?(F(),I(`iframe`,{key:1,src:A(qP)(p.value.image),class:`view-application-pdf`},null,8,tL)):p.value&&A(KP)(p.value)==`audio`?(F(),I(`audio`,{key:2,src:A(qP)(p.value.image),controls:``,autoplay:``,class:`view-application-audio`},null,8,nL)):m.value?(F(),I(`div`,rL,[L(`img`,{src:m.value.url,class:`view-application-image`},null,8,iL)])):B(``,!0)]),_:1})]),_:1},8,[`show`])],64))}}),[[`__scopeId`,`data-v-9a0a2d9f`]]),oL={key:1,class:`place-block`},sL={class:`message-header`},cL={class:`message-content`},lL={key:0},uL={key:1,class:`intro-empty`},dL={key:3,class:`place-block`},fL={class:`slot-block`},pL=rP(N({__name:`QuestionBlock`,props:{newQuestionCode:{type:String},newQuestionText:{type:String},newQuestionAnswer:{type:String},question:{type:Object},mode:{type:String,required:!0}},emits:[`update:newQuestionCode`,`update:newQuestionText`,`update:newQuestionAnswer`,`update:mode`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:newQuestionCode`,e)},a=e=>{r(`update:newQuestionText`,e)},o=e=>{r(`update:newQuestionAnswer`,e)},s=e=>{r(`update:mode`,e)};return(t,r)=>(F(),I(P,null,[e.mode==`mini-add`?(F(),I(`div`,{key:0,class:`place-block-hover show-editor-block`,onClick:r[0]||=e=>s(`add`)},[...r[5]||=[L(`p`,{class:`place-image-plus`},`+`,-1)]])):B(``,!0),e.mode==`add`?(F(),I(`div`,oL,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`25%`},value:e.newQuestionCode,"onUpdate:value":i,type:`text`,placeholder:`В-1`},null,8,[`value`]),R(A(jw),{style:{width:`75%`},value:e.newQuestionText,"onUpdate:value":a,type:`text`,placeholder:`Кто украл пастуха?`},null,8,[`value`])]),_:1}),R(A(jw),{value:e.newQuestionAnswer,"onUpdate:value":o,type:`textarea`,autosize:{minRows:2},placeholder:`Правильный ответ (виден только автору и организаторам)`},null,8,[`value`]),ri(t.$slots,`default`,{},void 0,!0)]),_:3})])):B(``,!0),e.mode==`show-editor`?(F(),I(`div`,{key:2,class:`place-block-hover show-editor-block`,onClick:r[1]||=e=>s(`edit`)},[L(`div`,sL,O(n.question?.code)+`: `+O(n.question?.text),1),r[6]||=L(`hr`,{class:`hr`},null,-1),L(`div`,cL,[n.question?.answer?(F(),I(`span`,lL,`Ответ: `+O(n.question.answer),1)):(F(),I(`span`,uL,`Ответ не задан`))])])):B(``,!0),e.mode==`edit`?(F(),I(`div`,dL,[R(A(FD),{vertical:``},{default:M(()=>[R(A(Nw),null,{default:M(()=>[R(A(jw),{style:{width:`25%`},value:n.question.code,"onUpdate:value":r[2]||=e=>n.question.code=e,type:`text`,placeholder:`В-1`},null,8,[`value`]),R(A(jw),{style:{width:`75%`},value:n.question.text,"onUpdate:value":r[3]||=e=>n.question.text=e,type:`text`,placeholder:`Кто украл пастуха?`},null,8,[`value`])]),_:1}),r[8]||=L(`p`,{class:`settings-header`},`Правильный ответ`,-1),R(A(jw),{value:n.question.answer,"onUpdate:value":r[4]||=e=>n.question.answer=e,type:`textarea`,autosize:{minRows:2},placeholder:`Правильный ответ (виден только автору и организаторам)`},null,8,[`value`]),R(A(wA),{class:`hint`,depth:`3`},{default:M(()=>[...r[7]||=[z(` Смена кода вопроса не переносит ответы команд, отправленные под старым кодом. `,-1)]]),_:1}),L(`div`,fL,[ri(t.$slots,`default`,{},void 0,!0)])]),_:3})])):B(``,!0)],64))}}),[[`__scopeId`,`data-v-610ec2d2`]]),mL={class:`center-block-custom`},hL={class:`width700`},gL={class:`places-container`},_L={class:`settings-block`},vL=rP(N({__name:`ScenariosEditorPage`,setup(e){let t=lN(),n=uN(),r=zF(),i=xj().params.id,a=k(!1),o=k(``),s=k(``),c=k(!1),l=dD(),u=k([]),d=k({id:void 0,name:void 0,story:void 0,author:void 0,status:void 0,updatedAt:void 0,createdAt:void 0,publishedAt:void 0}),f=k({text:``,audio:``}),p=k(`show-editor`),m=V(()=>d.value.story?.places||[]),h=V(()=>d.value.story?.questions||[]);async function g(e){let t=await n.GetFullScenario({id:e});if(t.error!=``){l.error(t.error);return}d.value=t.scenario,d.value.story?.places?.forEach(e=>{let t=e;t.oldCode=t.code,t.mode=`show-editor`}),d.value.story?.questions?.forEach(e=>{let t=e;t.oldCode=t.code,t.mode=`show-editor`}),f.value=d.value.story?.introduction||{text:``,audio:``},p.value=`show-editor`}g(Number(i));async function _(e){let t=await n.DeleteScenario({id:e});if(t.error!=``){l.error(t.error);return}bR.push(`/scenarios`)}async function v(e){let t=await n.PublicScenario({id:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),o.value=``,a.value=!1}async function y(e,t){let r=new Date().toISOString(),i=await n.AddGame({name:(`Тестовая игра: `+e).trim(),description:`Тестовая игра`,startAt:r,scenarioId:t});if(i.error!=``){l.error(i.error);return}let a=await n.AddTeam({name:`Тестовая команда`,gameId:i.id});if(a.error!=``){l.error(a.error);return}bR.push(`/team-story/`+a.id+`?password=`+a.password)}async function b(e){let t=await n.DraftScenario({id:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),o.value=``,a.value=!1}async function x(){c.value=!0;try{let{blob:e,filename:t}=await r.downloadScenarioArchive(d.value.id),n=URL.createObjectURL(e),i=document.createElement(`a`);i.href=n,i.download=t,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(n),1e3),l.success(`Архив сценария скачан`)}catch(e){l.error(e instanceof Error?e.message:`Не удалось скачать архив`)}finally{c.value=!1}}async function S(e,t){if(!e)return{filename:``,fileType:``};let r=await e.arrayBuffer(),i=new Uint8Array(r),a=await n.UploadFile({filename:t,data:w(i)});return a.error==``?{filename:a.filename||``,fileType:a.file_type||``}:(l.error(a.error),{filename:``,fileType:``})}async function C(){let e=``;if(u.value&&u.value.length>0){let t=u.value[0].file||null;if(t==null)return;let n=await S(t,`scenarios_`+d.value.id+`_`+t.name);if(n.filename===``)return;e=n.filename}let t=await n.UpdateScenario({id:d.value.id,name:d.value.name,description:d.value.description,image:e});if(t.error!=``){l.error(t.error);return}await g(Number(i)),a.value=!1}function w(e){let t=T(e);return btoa(t)}function T(e){let t=``;for(let n=0;ne.code==r.code)==null){let t=await n.AddScenarioPlace({id:e.id,place:{code:r.code,name:r.name,text:void 0,image:void 0,hidden:!0,applications:void 0,doors:void 0,keys:void 0}});if(t.error!=``){l.error(t.error);return}}}async function ae(e){await g(Number(i)),e.mode=`show-editor`}async function oe(e){if(e.fileList&&e.fileList.length>0){let t=e.fileList[0].file||null;if(t==null)return;let n=await S(t,`scenarios_`+d.value.id+`_place_`+e.code+`_`+t.name);if(n.filename===``)return;e.image=n.filename}let t=e.applications||[];for(let n of t){if(!n.fileList||n.fileList.length==0)continue;let t=n.fileList[0].file||null;if(t==null)continue;let r=await S(t,`scenarios_`+d.value.id+`_place_`+e.code+`_app_`+t.name);if(r.filename===``)return;n.image=r.filename,n.file_type=r.fileType}await ie(d.value,e);let r=await n.UpdateScenarioPlace({id:d.value.id,code:e.oldCode,place:e});if(r.error!=``){l.error(r.error);return}await g(Number(i)),e.mode=`show-editor`}async function se(e){let t=await n.DeleteScenarioPlace({id:d.value.id,code:e.oldCode});if(t.error!=``){l.error(t.error);return}await g(Number(i))}let ce=k(``),le=k(``),ue=k(``),de=k(`mini-add`);async function fe(){let e=await n.AddScenarioQuestion({id:d.value.id,question:{code:ce.value,text:le.value,answer:ue.value}});if(e.error!=``){l.error(e.error);return}await g(Number(i)),ce.value=``,le.value=``,ue.value=``,de.value=`add`}async function pe(){ce.value=``,le.value=``,ue.value=``,de.value=`mini-add`}async function me(e){let t=await n.UpdateScenarioQuestion({id:d.value.id,code:e.oldCode,question:{code:e.code,text:e.text,answer:e.answer}});if(t.error!=``){l.error(t.error);return}await g(Number(i)),e.mode=`show-editor`}async function he(e){await g(Number(i)),e.mode=`show-editor`}async function ge(e){let t=await n.DeleteScenarioQuestion({id:d.value.id,code:e.oldCode});if(t.error!=``){l.error(t.error);return}await g(Number(i))}function _e(e){return e&&e.split(`/`).pop()||``}async function ve(){let e=``;if(f.value.fileList&&f.value.fileList.length>0){let t=f.value.fileList[0].file||null;if(t==null||(e=(await S(t,`scenarios_`+d.value.id+`_intro_`+t.name)).filename,e===``))return}else e=_e(f.value.audio);let t=await n.UpdateScenarioIntro({id:d.value.id,introduction:{text:f.value.text,audio:e}});if(t.error!=``){l.error(t.error);return}await g(Number(i))}async function ye(){await g(Number(i))}function be(){let e=[{text:`Настя, ты просто ослепительна сегодня!`,nameForm:`Настя`},{text:`У Насти невероятный вкус!`,nameForm:`Насти`},{text:`Настенька, твоя улыбка делает мир ярче.`,nameForm:`Настенька`},{text:`С Настей всегда интересно общаться.`,nameForm:`Настей`},{text:`Настя, ты — источник вдохновения для всех вокруг.`,nameForm:`Настя`},{text:`Мне нравится, как Настя смотрит на мир.`,nameForm:`Настя`},{text:`Настюха, ты супер!`,nameForm:`Настюха`},{text:`Талант Насти поражает!`,nameForm:`Насти`},{text:`Настя, твоя энергия заряжает батарейки!`,nameForm:`Настя`},{text:`С Настей хочется проводить каждую минуту.`,nameForm:`Настей`},{text:`Настенька, ты — самое красивое, что случилось в этом мире.`,nameForm:`Настенька`},{text:`У Насти золотое сердце.`,nameForm:`Насти`}];return e[Math.floor(Math.random()*e.length)].text}return(e,n)=>(F(),I(P,null,[L(`div`,mL,[L(`div`,hL,[L(`div`,gL,[d.value.status==`public`?(F(),Da(A(pw),{key:0,title:`Сценарий опубликован`,type:`warning`,style:{"margin-bottom":`20px`}},{default:M(()=>[...n[30]||=[z(` Не рекомендуется редактировать сценарий когда он опубликован. `,-1)]]),_:1})):B(``,!0),A(t).user?.id==2?(F(),Da(A(pw),{key:1,title:be(),type:`info`,style:{"margin-bottom":`20px`}},null,8,[`title`])):B(``,!0),L(`div`,_L,[z(` Точек: `+O(d.value.story?.places?.length)+`, Вопросов: `+O(d.value.story?.questions?.length)+` `,1),R(A($),{quaternary:``,onClick:n[0]||=e=>a.value=!0,class:`settings-button`},{default:M(()=>[R(A($N),{class:`settings-icon`},{default:M(()=>[R(A(WP))]),_:1}),n[31]||=z(` Настройки `,-1)]),_:1})]),R(aI,{introduction:f.value,mode:p.value,"onUpdate:mode":n[3]||=e=>p.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[1]||=e=>ye()},{default:M(()=>[...n[32]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[2]||=e=>ve()},{default:M(()=>[...n[33]||=[z(`Сохранить вступление`,-1)]]),_:1})]),_:1})]),_:1},8,[`introduction`,`mode`]),n[44]||=L(`div`,{class:`questions-header`},`Вопросы дела`,-1),R(pL,{mode:de.value,"onUpdate:mode":n[6]||=e=>de.value=e,newQuestionCode:ce.value,"onUpdate:newQuestionCode":n[7]||=e=>ce.value=e,newQuestionText:le.value,"onUpdate:newQuestionText":n[8]||=e=>le.value=e,newQuestionAnswer:ue.value,"onUpdate:newQuestionAnswer":n[9]||=e=>ue.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[4]||=e=>pe()},{default:M(()=>[...n[34]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[5]||=e=>fe(),disabled:!ce.value},{default:M(()=>[...n[35]||=[z(`Добавить вопрос`,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1},8,[`mode`,`newQuestionCode`,`newQuestionText`,`newQuestionAnswer`]),(F(!0),I(P,null,ni(h.value,e=>(F(),Da(pL,{question:e,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.oldCode??e.code??``},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>ge(e),type:`error`,ghost:``},{default:M(()=>[...n[36]||=[z(`Удалить`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>he(e)},{default:M(()=>[...n[37]||=[z(`Отмена`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>me(e),disabled:e.code==``},{default:M(()=>[...n[38]||=[z(`Сохранить`,-1)]]),_:1},8,[`onClick`,`disabled`])]),_:2},1024)]),_:2},1032,[`question`,`mode`,`onUpdate:mode`]))),128)),R(aL,{mode:te.value,"onUpdate:mode":n[12]||=e=>te.value=e,newPlaceCode:ee.value,"onUpdate:newPlaceCode":n[13]||=e=>ee.value=e,newPlaceName:E.value,"onUpdate:newPlaceName":n[14]||=e=>E.value=e,newPlaceText:D.value,"onUpdate:newPlaceText":n[15]||=e=>D.value=e},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:n[10]||=e=>re()},{default:M(()=>[...n[39]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{onClick:n[11]||=e=>ne(),disabled:!ee.value},{default:M(()=>[...n[40]||=[z(`Добавить точку`,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1},8,[`mode`,`newPlaceCode`,`newPlaceName`,`newPlaceText`]),(F(!0),I(P,null,ni(m.value,e=>(F(),Da(aL,{place:e,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.oldCode??e.code??``},{default:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t=>se(e),type:`error`,ghost:``},{default:M(()=>[...n[41]||=[z(`Удалить`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>ae(e)},{default:M(()=>[...n[42]||=[z(`Отмена`,-1)]]),_:1},8,[`onClick`]),R(A($),{onClick:t=>oe(e),disabled:e.code==``},{default:M(()=>[...n[43]||=[z(`Сохранить`,-1)]]),_:1},8,[`onClick`,`disabled`])]),_:2},1024)]),_:2},1032,[`place`,`mode`,`onUpdate:mode`]))),128))])])]),R(A(XE),{show:a.value,"onUpdate:show":n[29]||=e=>a.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Настройки сценария`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:n[16]||=e=>a.value=!1},{default:M(()=>[...n[45]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[...n[69]||=[]]),default:M(()=>[R(A(FD),{vertical:``},{default:M(()=>[n[58]||=L(`p`,null,`Название`,-1),R(A(jw),{value:d.value.name,"onUpdate:value":n[17]||=e=>d.value.name=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),n[59]||=L(`p`,{class:`settings-header`},`Описание`,-1),R(A(jw),{value:d.value.description,"onUpdate:value":n[18]||=e=>d.value.description=e,type:`textarea`,placeholder:`Убийство пастуха...`},null,8,[`value`]),n[60]||=L(`p`,{class:`settings-header`},`Картинка`,-1),R(A(jw),{value:d.value.image,"onUpdate:value":n[19]||=e=>d.value.image=e,type:`text`,placeholder:`default_scenario.png`,disabled:``},null,8,[`value`]),R(A(nj),{"directory-dnd":``,max:1,"file-list":u.value,"onUpdate:fileList":n[20]||=e=>u.value=e},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...n[46]||=[z(` Щелкните или перетащите файл в эту область для загрузки `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`]),R(A($),{onClick:n[21]||=e=>C(),ghost:``},{default:M(()=>[...n[47]||=[z(` Сохранить изменения `,-1)]]),_:1}),n[61]||=L(`hr`,{class:`settings-hr`},null,-1),n[62]||=L(`p`,{class:`settings-header`},`Архив сценария`,-1),n[63]||=L(`p`,{class:`settings-hint`},` Скачайте сценарий ZIP-архивом (scenario.json + изображения) и импортируйте его в другом аккаунте. `,-1),R(A($),{loading:c.value,disabled:!d.value.id,ghost:``,onClick:n[22]||=e=>x()},{default:M(()=>[...n[48]||=[z(` Скачать архив (.zip) `,-1)]]),_:1},8,[`loading`,`disabled`]),n[64]||=L(`hr`,{class:`settings-hr`},null,-1),n[65]||=L(`p`,null,`Создать тестовую игру`,-1),R(A($),{onClick:n[23]||=e=>y(d.value.name||``,d.value.id),ghost:``},{default:M(()=>[...n[49]||=[z(` Создать игру `,-1)]]),_:1}),n[66]||=L(`hr`,{class:`settings-hr`},null,-1),n[67]||=L(`p`,null,`Публикация`,-1),L(`p`,null,[d.value.status==`public`?(F(),Da(A(XC),{key:0,bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[...n[50]||=[z(` Опубликовано `,-1)]]),_:1})):B(``,!0),d.value.status==`draft`?(F(),Da(A(XC),{key:1,bordered:!1,type:`warning`,class:`status-block`},{default:M(()=>[...n[51]||=[z(` В разработке `,-1)]]),_:1})):B(``,!0)]),L(`p`,null,[n[52]||=z(` Введите название сценария `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(d.value.name),1)]),_:1})]),R(A(jw),{value:o.value,"onUpdate:value":n[24]||=e=>o.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),d.value.status==`public`?B(``,!0):(F(),Da(A($),{key:0,onClick:n[25]||=e=>v(d.value.id),ghost:``,disabled:o.value!=d.value.name},{default:M(()=>[...n[53]||=[z(` Опубликовать сценарий `,-1)]]),_:1},8,[`disabled`])),d.value.status==`draft`?B(``,!0):(F(),Da(A($),{key:1,onClick:n[26]||=e=>b(d.value.id),ghost:``,disabled:o.value!=d.value.name},{default:M(()=>[...n[54]||=[z(` Снять сценарий с публикации `,-1)]]),_:1},8,[`disabled`])),n[68]||=L(`hr`,{class:`settings-hr`},null,-1),L(`p`,null,[n[55]||=z(` Введите название сценария `,-1),R(A(wA),{class:`name-text`,strong:``},{default:M(()=>[z(O(d.value.name),1)]),_:1}),n[56]||=z(` чтобы удалить его `,-1)]),R(A(jw),{value:s.value,"onUpdate:value":n[27]||=e=>s.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`]),R(A($),{onClick:n[28]||=e=>_(d.value.id),type:`error`,ghost:``,disabled:s.value!=d.value.name},{default:M(()=>[...n[57]||=[z(` Удалить сценарий `,-1)]]),_:1},8,[`disabled`])]),_:1})]),_:1})]),_:1},8,[`show`]),R(iP,{active:`scenarios`})],64))}}),[[`__scopeId`,`data-v-07f1e670`]]),yL=N({__name:`ScenariosEditorView`,setup(e){return(e,t)=>(F(),Da(vL))}}),bL={class:`center-block-custom`},xL={class:`width1200 display-table`},SL={class:`scenario-image-block scenario-image-plus import-icon`},CL=[`onClick`],wL={class:`scenario-content-block`},TL={class:`scenario-title`},EL={class:`scenario-label`},DL=rP(N({__name:`ScenariosPage`,setup(e){let t=uN(),n=zF(),r=k([]),i=bj(),a=dD(),o=k(!1),s=k(``),c=k(!1),l=k([]),u=k(!1);async function d(){r.value=[];let e=await t.GetMyScenarios({});r.value=e.scenarios}async function f(e){let n=await t.AddScenario({name:e});if(n.error!=``){a.error(n.error);return}await p(n.id)}async function p(e){i.push(`/scenarios/`+e+`/editor`)}function m(){l.value=[],c.value=!1}async function h(){let e=l.value[0]?.file;if(e){u.value=!0;try{let t=await n.uploadScenarioArchive(e);if(t.error){a.error(t.error);return}a.success(`Сценарий импортирован из архива`),m(),await p(t.id)}catch(e){a.error(e instanceof Error?e.message:`Не удалось импортировать архив`)}finally{u.value=!1}}}return d(),(e,t)=>(F(),I(P,null,[L(`div`,bL,[L(`div`,xL,[L(`div`,{class:`scenario-block`,onClick:t[0]||=e=>o.value=!0},[...t[11]||=[L(`div`,{class:`scenario-image-block scenario-image-plus`},`+`,-1),L(`div`,{class:`scenario-content-block`},[L(`p`,{class:`scenario-title`},`Создать новый сценарий`)],-1)]]),L(`div`,{class:`scenario-block`,onClick:t[1]||=e=>c.value=!0},[L(`div`,SL,[R(A($N),null,{default:M(()=>[R(A(PP))]),_:1})]),t[12]||=L(`div`,{class:`scenario-content-block`},[L(`p`,{class:`scenario-title`},`Импортировать из архива`)],-1)]),(F(!0),I(P,null,ni(r.value,e=>(F(),I(`div`,{class:`scenario-block`,onClick:t=>p(e.id),key:e.id},[L(`div`,{class:`scenario-image-block scenario-image`,style:fe({backgroundImage:`url(${e.image})`})},null,4),L(`div`,wL,[L(`p`,TL,O(e.name),1),L(`p`,EL,[e.status==`public`?(F(),Da(A(XC),{key:0,bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[...t[13]||=[z(`Опубликовано`,-1)]]),_:1})):B(``,!0),e.status==`draft`?(F(),Da(A(XC),{key:1,bordered:!1,type:`warning`,class:`status-block`},{default:M(()=>[...t[14]||=[z(`В разработке`,-1)]]),_:1})):B(``,!0)])])],8,CL))),128))])]),R(A(XE),{show:o.value,"onUpdate:show":t[5]||=e=>o.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Создание сценария`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[2]||=e=>o.value=!1},{default:M(()=>[...t[15]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[4]||=e=>f(s.value),disabled:s.value.length==0},{default:M(()=>[...t[16]||=[z(` Создать `,-1)]]),_:1},8,[`disabled`])]),_:1})]),default:M(()=>[R(A(jw),{value:s.value,"onUpdate:value":t[3]||=e=>s.value=e,type:`text`,placeholder:`Дело №0 "Следствие ведут овечки"`},null,8,[`value`])]),_:1})]),_:1},8,[`show`]),R(A(XE),{show:c.value,"onUpdate:show":t[10]||=e=>c.value=e},{default:M(()=>[R(A(MT),{style:{width:`600px`},title:`Импорт сценария из архива`,bordered:!1,size:`huge`,role:`dialog`,"aria-modal":`true`},{"header-extra":M(()=>[R(A($),{onClick:t[6]||=e=>m()},{default:M(()=>[...t[17]||=[z(` x `,-1)]]),_:1})]),footer:M(()=>[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:t[8]||=e=>m()},{default:M(()=>[...t[19]||=[z(`Отмена`,-1)]]),_:1}),R(A($),{type:`primary`,loading:u.value,disabled:l.value.length==0,onClick:t[9]||=e=>h()},{default:M(()=>[...t[20]||=[z(` Импортировать `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),default:M(()=>[t[21]||=L(`p`,{class:`import-hint`},` Выберите ZIP-архив сценария (файл scenario.json + папка images). Архив можно получить через «Скачать архив» в настройках сценария. `,-1),R(A(nj),{max:1,"file-list":l.value,"onUpdate:fileList":t[7]||=e=>l.value=e,accept:`.zip,application/zip,application/x-zip-compressed,application/octet-stream`},{default:M(()=>[R(A(DA),null,{default:M(()=>[R(A(wA),{style:{"font-size":`16px`}},{default:M(()=>[...t[18]||=[z(` Щелкните или перетащите ZIP-архив в эту область `,-1)]]),_:1})]),_:1})]),_:1},8,[`file-list`])]),_:1})]),_:1},8,[`show`]),R(iP,{active:`scenarios`})],64))}}),[[`__scopeId`,`data-v-adaf4a3c`]]),OL=N({__name:`ScenariosView`,setup(e){return(e,t)=>(F(),Da(DL))}}),kL={class:`center-block-custom`},AL={class:`width700`},jL={class:`scenario-title`},ML=[`src`],NL={class:`scenario-description`},PL={class:`scenario-author`},FL=rP(N({__name:`ScenarioPage`,setup(e){let t=dD(),n=uN(),r=xj().params.id,i=k({id:void 0,name:void 0,story:void 0,author:void 0,status:void 0,updatedAt:void 0,createdAt:void 0,publishedAt:void 0});async function a(e){let r=await n.GetScenario({id:e});if(r.error!=``){t.error(r.error);return}i.value=r.scenario}return a(Number(r)),(e,t)=>(F(),I(P,null,[L(`div`,kL,[L(`div`,AL,[L(`div`,jL,O(i.value.name),1),L(`img`,{class:`scenario-image`,src:i.value.image},null,8,ML),L(`div`,NL,O(i.value.description),1),L(`div`,PL,[R(A(XC),{bordered:!1,type:`success`,class:`status-block`},{default:M(()=>[z(`Автор: `+O(i.value.author?.username),1)]),_:1})]),i.value.story?.introduction&&(i.value.story.introduction.text||i.value.story.introduction.audio)?(F(),Da(aI,{key:0,introduction:i.value.story.introduction,mode:`show`},null,8,[`introduction`])):B(``,!0)])]),R(iP,{active:`catalog`})],64))}}),[[`__scopeId`,`data-v-223ef01a`]]),IL=N({__name:`ScenarioView`,setup(e){return(e,t)=>(F(),Da(FL))}}),LL={xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,viewBox:`0 0 512 512`},RL=N({name:`Footsteps`,render:function(e,t){return F(),I(`svg`,LL,t[0]||=[L(`path`,{d:`M133.83 361.27c-22.61 0-41-8.17-54.79-24.39s-22.84-40.29-28.11-75.31c-7.76-51.61-.06-95.11 21.68-122.48c12.8-16.12 29.6-25.44 48.58-26.94c16.25-1.3 40.54 5.29 64 44c14.69 24.24 25.86 56.44 30.65 88.34c5.79 38.51 1.48 66.86-13.18 86.65c-11.64 15.72-29.54 25.46-53.21 29a106.46 106.46 0 0 1-15.62 1.13z`,fill:`currentColor`},null,-1),L(`path`,{d:`M173 496c-13.21 0-26.6-4.23-38.66-12.36a79.79 79.79 0 0 1-33.52-50.6c-2.85-14.66-1.14-26.31 5.22-35.64c10.33-15.15 28.87-18.56 48.49-22.18c2.07-.38 4.17-.76 6.3-1.17c4.52-.86 9.14-2 13.62-3.11c16.78-4.14 34.14-8.43 48.47 1.75c9.59 6.8 15 18.36 16.62 35.32c1.84 19.57-2.36 39.1-11.83 55c-10.19 17.11-25.47 28.42-43 31.86A61 61 0 0 1 173 496z`,fill:`currentColor`},null,-1),L(`path`,{d:`M378.17 265.27a106.69 106.69 0 0 1-15.6-1.2c-23.66-3.5-41.56-13.25-53.2-29c-14.66-19.79-19-48.13-13.18-86.65c4.79-31.93 15.93-64.1 30.55-88.25c23.34-38.57 47.66-45.26 64-44.08c18.92 1.38 35.69 10.57 48.51 26.6c21.89 27.37 29.65 71 21.86 122.84c-5.27 35-14.2 58.95-28.11 75.31s-32.22 24.43-54.83 24.43z`,fill:`currentColor`},null,-1),L(`path`,{d:`M339 400a61 61 0 0 1-11.68-1.13c-17.56-3.44-32.84-14.75-43-31.86c-9.47-15.9-13.67-35.43-11.83-55c1.6-17 7-28.52 16.62-35.33c14.33-10.17 31.69-5.89 48.47-1.74c4.48 1.1 9.1 2.24 13.62 3.11l6.29 1.17c19.63 3.61 38.17 7 48.5 22.17c6.36 9.33 8.07 21 5.22 35.64a79.78 79.78 0 0 1-33.52 50.61C365.56 395.78 352.17 400 339 400z`,fill:`currentColor`},null,-1)])}}),zL={},BL={class:`belt-block`};function VL(e,t){return F(),I(`div`,null,[t[0]||=L(`div`,{class:`shadow shadow-top`},null,-1),t[1]||=L(`div`,{class:`shadow shadow-bottom`},null,-1),L(`div`,BL,[ri(e.$slots,`default`,{},void 0,!0)])])}var HL=rP(zL,[[`render`,VL],[`__scopeId`,`data-v-bec154c5`]]),UL={},WL={class:`plate-block`},GL={class:`metal-plate-block`};function KL(e,t){return F(),I(`div`,WL,[L(`div`,GL,[ri(e.$slots,`default`,{},void 0,!0)]),t[0]||=L(`div`,{class:`pin pin-top-left`},null,-1),t[1]||=L(`div`,{class:`pin pin-top-right`},null,-1),t[2]||=L(`div`,{class:`pin pin-bottom-right`},null,-1),t[3]||=L(`div`,{class:`pin pin-bottom-left`},null,-1)])}var qL=rP(UL,[[`render`,KL],[`__scopeId`,`data-v-4833fe7e`]]),JL={class:`form-custom`},YL={class:`center-block-700`},XL={class:`controller`},ZL={class:`counters-block`},QL={class:`counter-block`},$L={class:`places-text`},eR={class:`counter-block`},tR={class:`places-text`},nR={class:`game-input`},rR=[`placeholder`,`disabled`],iR=[`disabled`],aR=rP(N({__name:`GameInputForm`,props:{addAction:{type:Function,required:!0},allPlacesCount:{type:Number,required:!0},newPlacesCount:{type:Number,required:!0},gameStatus:{type:String,required:!0}},setup(e){let t=k(``),n=e;async function r(){await n.addAction(t.value),t.value=``}function i(e){e%=100;let t=Math.floor(e/10)%10,n=e%10,r=`–`,i=`–`;return t>0&&(r=String(t)),(n>0||t>0)&&(i=String(n)),[r,i]}return(a,o)=>(F(),I(`div`,JL,[R(HL,{class:`input-form`},{default:M(()=>[R(qL,{class:`controller-metal controller-metal-left`}),R(qL,{class:`controller-metal controller-metal-right`}),L(`div`,YL,[L(`div`,XL,[L(`div`,ZL,[L(`div`,QL,[L(`div`,$L,[R(A($N),{class:`icon-for-counter`},{default:M(()=>[R(A(RL))]),_:1})]),(F(!0),I(P,null,ni(i(e.allPlacesCount),(e,t)=>(F(),I(`div`,{key:t,class:`places-text places-text-number`},O(e),1))),128))]),L(`div`,eR,[L(`div`,tR,[R(A($N),{class:`icon-for-counter`},{default:M(()=>[R(A(mN))]),_:1})]),(F(!0),I(P,null,ni(i(e.newPlacesCount),(e,t)=>(F(),I(`div`,{key:t,class:`places-text places-text-number`},O(e),1))),128))])]),L(`div`,nR,[Vn(L(`input`,{id:`run`,class:`game-input-run`,"onUpdate:modelValue":o[0]||=e=>t.value=e,type:`text`,placeholder:n.gameStatus==`run`?`Место назначения`:`Ходы запрещены`,disabled:n.gameStatus!=`run`},null,8,rR),[[js,t.value]])]),o[4]||=L(`div`,{class:`game-button-run-shadow`},null,-1),L(`button`,{class:`game-button-run`,type:`submit`,disabled:t.value.length==0,onClick:r},[n.gameStatus==`run`?(F(),Da(hP,{key:0},{default:M(()=>[...o[1]||=[z(`Поехали`,-1)]]),_:1})):B(``,!0),n.gameStatus==`pause`||n.gameStatus==`draft`?(F(),Da(hP,{key:1},{default:M(()=>[...o[2]||=[z(`Ждём`,-1)]]),_:1})):B(``,!0),n.gameStatus==`finish`?(F(),Da(hP,{key:2},{default:M(()=>[...o[3]||=[z(`Всё`,-1)]]),_:1})):B(``,!0)],8,iR)])])]),_:1})]))}}),[[`__scopeId`,`data-v-4d904ded`]]),oR={class:`width700`},sR={class:`question-text`},cR={class:`qr-block`},lR={key:3,class:`edit-panel`},uR=rP(N({__name:`TeamStoryPage`,setup(e){let t=lN(),n=uN(),r=dD(),i=xj(),a=i.params.id,o=i.query.password,s=k(0),c=k(),l=k({introduction:void 0,places:[],questions:[]}),u=k({id:void 0,name:void 0,description:void 0,startAt:void 0,status:void 0,scenario:void 0,teams:void 0}),d=k(``),f=window.location.href,p=()=>{let e=c.value;return e?e.scrollHeight-e.scrollTop-e.clientHeight<1:!1};async function m(){let e=l.value,t=await n.GetTeamStory({id:Number(a),password:o});if(t.error!=``){r.error(t.error);return}u.value=t.game;let i=p();i&&(s.value=0);let d=l.value.places.length;l.value={introduction:t.story.introduction,places:t.story.places?.map((t,n)=>(console.log(e?.places[n]?.mode),{place:t,mode:e?.places[n]?.mode||`show`}))||[],questions:t.story.questions||[]};let f=l.value.places.length;if(f>d&&d!=0&&(s.value+=f-d),await kn(),i&&d!=0){let e=c.value;if(!e)return!1;e.scrollTop=e.scrollHeight}}m(),_();async function h(e){let t=await n.AddTeamAction({id:Number(a),password:o,code:e});if(t.error!=``){r.error(t.error);return}await m(),d.value=``,await kn(),s.value=0}let g=k({});async function _(){let e=await n.GetTeamAnswers({id:Number(a),password:o});if(e.error!=``){r.error(e.error);return}let t={};for(let n of e.answers||[])t[n.questionCode||``]=n.answer||``;g.value=t}async function v(){let e=await n.SubmitTeamAnswers({id:Number(a),password:o,answers:(l.value.questions||[]).map(e=>({questionCode:e.code,answer:g.value[e.code||``]||``}))});if(e.error!=``){r.error(e.error);return}r.success(`Ответы сохранены`),await _()}let y=V(()=>u.value?.status==`run`||u.value?.status==`pause`),b=V(()=>(l.value.questions?.length||0)>0),x={Input:{border:`1px dashed black`,borderDisabled:`1px dashed black`,borderFocus:`1px solid black`,borderHover:`1px dashed black`,boxShadowFocus:`0 0 0 2px rgb(99 226 183 / 30%)`,caretColor:`#63e2b7`,color:`transparent`,colorDisabled:`transparent`,colorFocus:`transparent`,fontSizeMedium:`18px`,placeholderColor:`black`,placeholderColorDisabled:`black`,textColor:`black`,textColorDisabled:`black`}};async function S(){let e=await n.DeleteLastTeamAction({id:Number(a)});if(e.error!=``){r.error(e.error);return}await m(),d.value=``}return GP(()=>{m()},2e3),(e,n)=>{let r=Qr(`n-space`);return F(),I(P,null,[L(`div`,{class:`center-block-custom bottom-margin smooth-scroll`,ref_key:`scrollContainer`,ref:c},[L(`div`,oR,[R(aR,{addAction:h,allPlacesCount:l.value.places.length,newPlacesCount:s.value,gameStatus:u.value?.status||``},null,8,[`allPlacesCount`,`newPlacesCount`,`gameStatus`]),u.value?.status&&u.value.status!=`draft`&&l.value.introduction&&(l.value.introduction.text||l.value.introduction.audio)?(F(),Da(aI,{key:0,introduction:l.value.introduction,mode:`show`},null,8,[`introduction`])):B(``,!0),b.value&&u.value?.status&&u.value.status!=`draft`?(F(),Da(GF,{key:1,class:`questions-block`},{default:M(()=>[n[1]||=L(`div`,{class:`font`},`Вопросы дела`,-1),n[2]||=L(`hr`,{class:`questions-hr`},null,-1),n[3]||=L(`p`,{class:`questions-hint font`},` Ответьте на вопросы дела. Ответы можно менять, пока игра идёт. `,-1),R(A($T),{"theme-overrides":x},{default:M(()=>[(F(!0),I(P,null,ni(l.value.questions,e=>(F(),I(`div`,{key:e.code,class:`question-item font`},[L(`div`,sR,O(e.code)+`: `+O(e.text),1),R(A(jw),{value:g.value[e.code||``],"onUpdate:value":t=>g.value[e.code||``]=t,type:`textarea`,autosize:{minRows:2,maxRows:6},disabled:!y.value,placeholder:`Ваш ответ...`},null,8,[`value`,`onUpdate:value`,`disabled`])]))),128)),y.value?(F(),Da(A(HD),{key:0,justify:`end`,class:`questions-actions`},{default:M(()=>[L(`button`,{type:`button`,class:`paper-button`,onClick:n[0]||=e=>v()},` Сохранить ответы `)]),_:1})):B(``,!0)]),_:1})]),_:1})):B(``,!0),(F(!0),I(P,null,ni(l.value.places,e=>(F(),Da(aL,{place:e.place,mode:e.mode,"onUpdate:mode":t=>e.mode=t,key:e.place.code,addAction:h},null,8,[`place`,`mode`,`onUpdate:mode`]))),128)),l.value.places.length==0&&u.value?.status==`draft`?(F(),Da(GF,{key:2,class:`qr-main-block`},{default:M(()=>[R(r,{vertical:``},{default:M(()=>[n[4]||=L(`h2`,{class:`qr-main-block-text`},`Это код этого дела`,-1),n[5]||=L(`p`,{class:`qr-main-block-text`},`Поделись с командой`,-1),L(`div`,cR,[R(A(nA),{value:A(f),size:300,padding:0},null,8,[`value`])]),n[6]||=L(`p`,{class:`qr-main-block-text`},`Игра скоро начнется`,-1)]),_:1})]),_:1})):B(``,!0),A(t).hasRole(`author`)&&l.value.places.length>0?(F(),I(`div`,lR,[R(A(HD),{justify:`end`},{default:M(()=>[R(A($),{onClick:S},{default:M(()=>[...n[7]||=[z(`Удалить последний ход`,-1)]]),_:1})]),_:1})])):B(``,!0)])],512),R(iP,{active:`games`})],64)}}}),[[`__scopeId`,`data-v-b43b2553`]]),dR=N({__name:`TeamStoryView`,setup(e){return(e,t)=>(F(),Da(uR))}}),fR=N({__name:`UserAgreementView`,setup(e){return(e,t)=>(F(),I(P,null,[R(wP,{kind:`terms`}),R(iP)],64))}}),pR={class:`center-block-custom`},mR={class:`width700`},hR={class:`user-field`},gR={class:`user-field`},_R={class:`user-field`},vR=rP(N({__name:`UsersPage`,setup(e){let t=uN(),n=dD(),r=k([]);async function i(){let e=await t.GetUsers({});if(e.error!=``){n.error(e.error);return}r.value=e.users}i();async function a(e,r){let a=await t.AddUserRole({id:e,role:r});if(a.error!=``){n.error(a.error);return}await i()}async function o(e,r){let a=await t.DeleteUserRole({id:e,role:r});if(a.error!=``){n.error(a.error);return}await i()}return(e,t)=>(F(),I(P,null,[L(`div`,pR,[L(`div`,mR,[(F(!0),I(P,null,ni(r.value,e=>(F(),I(`div`,{key:e.id,class:`user-block`},[L(`div`,hR,`Позывной: `+O(e.username),1),L(`div`,gR,`Почта: `+O(e.email),1),L(`div`,_R,[R(A(FD),null,{default:M(()=>[t[0]||=z(` Роли: `,-1),(F(!0),I(P,null,ni(e.roles,e=>(F(),Da(A(XC),{bordered:!1,key:e},{default:M(()=>[z(O(e),1)]),_:2},1024))),128))]),_:2},1024)]),R(A(HD),{justify:`end`,class:`roles-buttons-block`},{default:M(()=>[e.roles?.includes(`author`)?(F(),Da(A($),{key:1,onClick:t=>o(e.id,`author`)},{default:M(()=>[...t[2]||=[z(`Забрать роль автора`,-1)]]),_:1},8,[`onClick`])):(F(),Da(A($),{key:0,onClick:t=>a(e.id,`author`)},{default:M(()=>[...t[1]||=[z(`Сделать автором`,-1)]]),_:1},8,[`onClick`])),e.roles?.includes(`organizer`)?(F(),Da(A($),{key:3,onClick:t=>o(e.id,`organizer`)},{default:M(()=>[...t[4]||=[z(`Забрать роль организатора`,-1)]]),_:1},8,[`onClick`])):(F(),Da(A($),{key:2,onClick:t=>a(e.id,`organizer`)},{default:M(()=>[...t[3]||=[z(`Сделать организатором`,-1)]]),_:1},8,[`onClick`]))]),_:2},1024)]))),128))])]),R(iP,{active:`users`})],64))}}),[[`__scopeId`,`data-v-7c14036f`]]),yR=N({__name:`UsersView`,setup(e){return(e,t)=>(F(),Da(vR))}}),bR=rN({history:TM(`/`),routes:[{path:`/`,name:`home`,component:pF},{path:`/login`,name:`login`,component:AF},{path:`/office`,name:`office`,component:LF},{path:`/user-agreement`,name:`user-agreement`,component:fR},{path:`/privacy-policy`,name:`privacy-policy`,component:RF},{path:`/consent`,name:`consent`,component:TP},{path:`/games`,name:`games`,component:MP},{path:`/games/:id`,name:`game`,component:fF},{path:`/team-story/:id`,name:`team-story`,component:dR},{path:`/scenarios`,name:`scenarios`,component:OL},{path:`/catalog`,name:`catalog`,component:pP},{path:`/scenarios/:id/editor`,name:`scenario-editor`,component:yL},{path:`/scenarios/:id`,name:`scenario`,component:IL},{path:`/users`,name:`users`,component:yR}]}),xR=Bs(iN);xR.use(sc()),xR.use(bR),xR.mount(`#app`); \ No newline at end of file diff --git a/dist/assets/index-Dd0gvwlX.css b/dist/assets/index-Dd0gvwlX.css deleted file mode 100644 index 6f016ff..0000000 --- a/dist/assets/index-Dd0gvwlX.css +++ /dev/null @@ -1 +0,0 @@ -:root{--vt-c-white:#fff;--vt-c-white-soft:#f8f8f8;--vt-c-white-mute:#f2f2f2;--vt-c-black:#181818;--vt-c-black-soft:#222;--vt-c-black-mute:#282828;--vt-c-indigo:#2c3e50;--vt-c-divider-light-1:#3c3c3c4a;--vt-c-divider-light-2:#3c3c3c1f;--vt-c-divider-dark-1:#545454a6;--vt-c-divider-dark-2:#5454547a;--vt-c-text-light-1:var(--vt-c-indigo);--vt-c-text-light-2:#3c3c3ca8;--vt-c-text-dark-1:var(--vt-c-white);--vt-c-text-dark-2:#ebebeba3;--main-color:#22323c;--second-color:#614a16;--main-back-color:#f0f0f0;--main-back-item-color:#fefefe;--color-background:var(--vt-c-white);--color-background-soft:var(--vt-c-white-soft);--color-background-mute:var(--vt-c-white-mute);--color-border:var(--vt-c-divider-light-2);--color-border-hover:var(--vt-c-divider-light-1);--color-heading:var(--vt-c-text-light-1);--color-text:var(--vt-c-text-light-1);--section-gap:160px}@media (prefers-color-scheme:dark){:root{--color-background:var(--vt-c-black);--color-background-soft:var(--vt-c-black-soft);--color-background-mute:var(--vt-c-black-mute);--color-border:var(--vt-c-divider-dark-2);--color-border-hover:var(--vt-c-divider-dark-1);--color-heading:var(--vt-c-text-dark-1);--color-text:var(--vt-c-text-dark-2)}}*,:before,:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:#eee;background:var(--color-background);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-width:none;background-color:#111;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;line-height:1.6;transition:color .5s,background-color .5s;overflow:hidden}@font-face{font-family:font_old_typer;src:url(/assets/a_OldTyper-BsgRTrmO.ttf)}.height80{height:80vh}.content-block{margin-top:70px}.center-block-custom{scrollbar-width:none;height:calc(100vh - 150px);margin-top:70px;overflow-y:auto}.center-block-custom::-webkit-scrollbar{display:none}.width700,.width1200{margin:0 auto;padding:10px}.display-table{flex-flow:wrap;justify-content:center;display:flex}@media (width>=1024px){.center-block-custom{height:calc(100dvh - 70px);margin:70px auto 0}.width700{width:700px;margin:0 auto;padding:20px}.width1200{width:1200px;margin:0 auto;padding:20px}.center-middle-block-custom{place-items:center;display:grid}}.menu-block[data-v-5e423637]{background-color:#222;justify-content:space-between;align-items:center;width:100%;height:70px;padding:20px;display:flex;position:fixed;top:0;left:0}.menu-item-block[data-v-5e423637]{cursor:pointer;margin-left:10px;padding:5px;font-size:1.1em;display:inline-block}.menu-item-block[data-v-5e423637]:hover{color:#63e2b7;opacity:.8}.right[data-v-5e423637]{margin-left:auto}.active[data-v-5e423637]{color:#63e2b7}@media (width>=1024px){.burger-button[data-v-5e423637]{display:none}}@media (width<1024px){.menu-buttons-block[data-v-5e423637]{background-color:#222;flex-direction:column;width:100%;padding-bottom:5px;display:flex;position:fixed;top:70px;left:0}.menu-buttons-block div[data-v-5e423637]{padding:15px 5px}.menu-buttons-block-active[data-v-5e423637]{position:relative;top:-1000px}.burger-icon[data-v-5e423637]{position:relative;top:5px}}.scenario-block[data-v-d72c95c2]{cursor:pointer;background-color:#222;border:2px solid #222;border-radius:12px;width:160px;height:300px;margin:10px;position:relative}.scenario-content-block[data-v-d72c95c2]{padding:2px 10px}.scenario-block[data-v-d72c95c2]:hover{color:#63e2b7;border:2px solid #63e2b7}.scenario-image-block[data-v-d72c95c2]{background-color:#111;border-radius:10px;height:160px}.scenario-image[data-v-d72c95c2]{background-position:50%;background-size:cover}.scenario-title[data-v-d72c95c2]{padding:5px 0}.scenario-description[data-v-d72c95c2]{color:#aaa;display:none}.status-block[data-v-d72c95c2]{position:absolute;bottom:15px;right:15px}@media (width>=1024px){.scenario-block[data-v-d72c95c2]{width:250px;height:400px}.scenario-image-block[data-v-d72c95c2]{height:250px}.scenario-content-block[data-v-d72c95c2]{padding:4px 10px}.scenario-description[data-v-d72c95c2]{color:#aaa;display:block}}.text-with-font[data-v-e13ee3bd]{color:#bfa07d;letter-spacing:2px;font-family:font_old_typer;font-size:22px;font-weight:600;line-height:20px}.doc-page[data-v-6160a426]{padding-top:30px}.doc-title[data-v-6160a426]{text-align:center;margin:0 0 24px}.doc-loading[data-v-6160a426]{justify-content:center;padding:80px 0;display:flex}.doc-error[data-v-6160a426]{max-width:600px;margin:0 auto}.paper-block[data-v-6160a426]{position:relative}.paper[data-v-6160a426]{z-index:2;color:#1d1d1d;scrollbar-width:none;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;border-radius:3px;max-height:60vh;padding:32px 28px;position:relative;overflow-y:auto;box-shadow:0 0 12px #000000b3}.paper[data-v-6160a426]::-webkit-scrollbar{display:none}.doc-text[data-v-6160a426]{white-space:pre-wrap;word-break:break-word;text-align:justify;font-family:font_old_typer;font-size:17px;line-height:1.65}.paper-shadow[data-v-6160a426]{background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;border-radius:3px;width:100%;height:100%;position:absolute;top:0}.paper-shadow-left[data-v-6160a426]{filter:brightness(60%);left:0;transform:rotate(-2.2deg);box-shadow:0 0 10px #0009}.paper-shadow-right[data-v-6160a426]{filter:brightness(75%);right:0;transform:rotate(2.2deg);box-shadow:0 0 10px #0009}.docs-links[data-v-6160a426]{text-align:center;color:#999;margin-top:28px;padding-bottom:20px;font-size:15px}.docs-link[data-v-6160a426]{color:#45aa89;text-decoration:none}.docs-link[data-v-6160a426]:hover{color:#63e2b7}.game-block[data-v-45eae4d9]{background-color:#222;border-radius:10px;margin:10px 0;padding:20px}.game-block[data-v-45eae4d9]:hover{cursor:pointer;color:#63e2b7}.game-title[data-v-45eae4d9]{margin-bottom:10px;font-size:24px}.game-description[data-v-45eae4d9]{color:#aaa;margin-bottom:10px}.team-block[data-v-0379e6c1]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0}.team-block-hover[data-v-0379e6c1]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.team-content-block[data-v-0379e6c1]{padding:20px}.team-name-block[data-v-0379e6c1]{font-size:20px;font-weight:600}.settings-icon[data-v-0379e6c1]{width:20px}.link-button[data-v-0379e6c1]{width:100%;margin-top:20px}.place-image-plus[data-v-0379e6c1]{justify-content:center;align-items:center;font-size:30px;display:flex}.name-text[data-v-0379e6c1]{background-color:#ffffff1a;border-radius:3px;padding:3px}.qr-block[data-v-0379e6c1]{background-color:#fff;padding:12px;display:inline-block}.give-application-image-block[data-v-0379e6c1]{background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;max-width:320px;margin:10px 0 5px;padding:7px;box-shadow:0 3px 15px #626262}.give-application-image[data-v-0379e6c1]{width:100%}.give-application-audio[data-v-0379e6c1]{width:100%;margin:10px 0 5px}.give-application-pdf-link[data-v-0379e6c1]{margin:10px 0 5px;text-decoration:underline;display:inline-block}.answers-empty[data-v-0379e6c1]{color:#777}.answers-question-block[data-v-0379e6c1]{background-color:#222;border-radius:8px;margin:15px 0;padding:12px}.answers-question-title[data-v-0379e6c1]{margin:0 0 4px;font-size:17px;font-weight:600}.answers-question-answer[data-v-0379e6c1]{color:#aaa;margin:0 0 10px}.answers-team-row[data-v-0379e6c1]{background-color:#ffffff0d;border-radius:6px;flex-flow:wrap;align-items:center;gap:10px;margin:8px 0;padding:8px 10px;display:flex}.answers-team-name[data-v-0379e6c1]{width:180px;font-weight:600}.answers-team-answer[data-v-0379e6c1]{color:#aaa;white-space:pre-wrap;flex:200px}.answers-score-input[data-v-0379e6c1]{width:110px}.font-text{font-family:font_old_typer}.content-text{float:right;position:relative;top:100px;right:0}@media (width>=1024px){.font-text{position:relative;left:-50px}.content-text{position:relative;top:100px;right:-50px}}.sign-card[data-v-33c96af1]{background-color:#1d1d1d}.form-label[data-v-33c96af1]{margin-top:10px}.form-button-wrapper[data-v-33c96af1]{justify-content:center;display:flex}.docs-link[data-v-33c96af1]{color:#45aa89}.docs-link[data-v-33c96af1]:hover{color:#63e2b7}@media (width>=1024px){.sign-card[data-v-33c96af1]{width:380px}}.danger-zone[data-v-e477f47a]{background-color:#222;border:1px solid #e06c7566;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:40px;padding:20px;display:flex}.danger-zone-title[data-v-e477f47a]{color:#e06c75;font-size:17px;font-weight:600}.danger-zone-hint[data-v-e477f47a]{color:#999;margin-top:6px;font-size:14px}.delete-modal-text[data-v-e477f47a]{color:#bbb;margin:0 0 16px;line-height:1.5}.delete-modal-error[data-v-e477f47a]{color:#e06c75;margin:12px 0 0}.delete-modal-buttons[data-v-e477f47a]{justify-content:flex-end;gap:12px;margin-top:20px;display:flex}.main[data-v-d026d197]{position:relative}.message-cloud[data-v-d026d197],.message-cloud-2[data-v-d026d197],.message-cloud-3[data-v-d026d197]{background-color:bisque}.message-cloud[data-v-d026d197]{color:#000;margin:15px 0;padding:16px;font-family:font_old_typer,serif;font-size:18px;font-weight:900;line-height:20px;position:relative}.message-cloud[data-v-d026d197],.message-cloud-2[data-v-d026d197],.message-cloud-3[data-v-d026d197]{background-image:url(/assets/paper-CuqvoKhN.jpg);background-size:cover;border-radius:5px;display:flow-root;box-shadow:0 0 5px #000}.message-cloud-2[data-v-d026d197],.message-cloud-3[data-v-d026d197]{position:absolute;top:0;left:0}.message-cloud-2[data-v-d026d197]{filter:brightness(50%);width:100%;height:100%;transform:rotate(-3deg)}.message-cloud-3[data-v-d026d197]{filter:brightness(80%);width:100%;height:100%;transform:rotate(2deg)}.font[data-v-90ebee9a]{font-family:font_old_typer,serif;font-size:18px}.intro-hr[data-v-90ebee9a]{border:1px dashed #000;margin:10px 0}.intro-text[data-v-90ebee9a]{white-space:pre-wrap;font-weight:500}.place-block-hover[data-v-90ebee9a],.place-block[data-v-90ebee9a]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-90ebee9a]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.show-editor-block[data-v-90ebee9a]{cursor:pointer}.hr[data-v-90ebee9a]{border:1px dashed #eee;margin:10px 0}.message-header[data-v-90ebee9a]{padding-right:50px;font-size:20px}.message-content[data-v-90ebee9a]{white-space:pre-wrap;font-weight:500}.intro-empty[data-v-90ebee9a]{color:#777}.settings-header[data-v-90ebee9a]{margin-top:20px}.intro-audio-block[data-v-90ebee9a]{margin-top:15px}.intro-audio[data-v-90ebee9a]{border-radius:5px;width:100%;max-width:460px}.intro-edit-audio[data-v-90ebee9a]{flex-flow:wrap;align-items:flex-start;gap:20px;display:flex}.slot-block[data-v-90ebee9a]{margin-top:10px}.hr[data-v-756a525d]{border:1px dashed #eee;margin:10px 0}.place-block-hover[data-v-756a525d],.place-block[data-v-756a525d]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-756a525d]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.place-image-plus[data-v-756a525d]{justify-content:center;align-items:center;font-size:30px;display:flex}.show-editor-block[data-v-756a525d]{cursor:pointer}.message-content[data-v-756a525d]{white-space:pre-wrap;font-weight:500}.gray-block[data-v-756a525d]{color:#777;margin-top:5px}.application-block[data-v-756a525d]{color:#deb887;margin-right:5px}.application-name[data-v-756a525d]{margin-top:5px}.application-image-border[data-v-756a525d]{float:left;cursor:zoom-in;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;width:40%;max-width:120px;margin-right:15px;padding:7px;transform:rotate(-3deg);box-shadow:0 3px 15px #626262}.message-footer .application-image-border[data-v-756a525d]{float:none;width:120px;max-width:120px;margin:4px 0 10px}.application-image[data-v-756a525d]{width:100%}.application-image-block[data-v-756a525d]{cursor:zoom-in;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;max-width:120px;margin:14px 0 5px;padding:7px;box-shadow:0 3px 15px #626262}.application-audio[data-v-756a525d]{width:100%;margin:5px 0}.application-pdf-link[data-v-756a525d]{color:var(--second-color);cursor:pointer;margin:5px 0;text-decoration:underline;display:inline-block}.view-application-image-block[data-v-756a525d]{text-align:center}.view-application-image[data-v-756a525d]{max-width:100%;max-height:72vh}.view-application-pdf[data-v-756a525d]{border:none;width:100%;height:72vh}.view-application-audio[data-v-756a525d]{width:100%}.application-edit-file[data-v-756a525d]{background-color:#222;border-radius:5px;margin:8px 0 4px;padding:8px}.application-edit-image[data-v-756a525d]{border-radius:4px;width:100%;max-width:120px;margin-top:6px}.application-edit-audio[data-v-756a525d]{width:100%;margin-top:6px}.application-label[data-v-756a525d]{font-weight:600}.door-block[data-v-756a525d]{color:#eee;background-color:#222;border-radius:5px;margin:10px 5px 10px 0;padding:5px 10px;display:inline-block}.door-add-block[data-v-756a525d]{color:#eee;background-color:#222;border-radius:5px;padding:10px}.key-block[data-v-756a525d]{color:gold;margin-left:10px}.lock-icon[data-v-756a525d]{position:relative;top:2px}.door-field[data-v-756a525d]{margin-top:10px}.need-keys-text[data-v-756a525d]{color:gold;margin:15px 0 0;padding:0}.slot-block[data-v-756a525d]{margin-top:10px}.plus-minus-buttons[data-v-756a525d]{text-align:center;color:#eee;border:1px solid #444;border-radius:40px;margin:0 0 10px 5px;padding:0 13px;font-size:25px}.plus-minus-buttons[data-v-756a525d]:hover{cursor:pointer;color:#63e2b7}.message-image-border[data-v-756a525d]{float:left;cursor:zoom-in;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;width:40%;max-width:200px;margin-right:15px;padding:7px;transform:rotate(-3deg);box-shadow:0 3px 15px #626262}.message-image[data-v-756a525d]{width:100%}.message-edit-image[data-v-756a525d]{width:135px;height:135px}.message-header[data-v-756a525d]{padding-right:50px;font-size:20px}.message-footer[data-v-756a525d]{color:#deb887;padding-right:50px;font-weight:400;position:relative}.message-show-header[data-v-756a525d]{padding-right:50px;font-size:20px}.collapse-icon[data-v-756a525d]{cursor:pointer;background-image:url(/assets/collapse-B6YzUtGl.png);background-position:50%;background-size:cover;width:45px;height:28px;position:absolute;top:12px;right:12px}.collapse-icon-up[data-v-756a525d]{transform:rotate(-180deg)}.show-hr[data-v-756a525d]{border:1px dashed #000;margin:10px 0}.font[data-v-756a525d]{font-family:font_old_typer,serif;font-size:18px}.message-show-content[data-v-756a525d]{white-space:pre-wrap;font-weight:500;display:flow-root}.message-show-footer[data-v-756a525d]{color:var(--second-color);padding-right:50px;font-weight:400;position:relative}.pdf-application-name[data-v-756a525d]{color:var(--second-color);cursor:pointer;text-decoration:underline}.show-applications-block[data-v-756a525d]{float:right;flex-direction:column;align-items:flex-end;gap:12px;margin:4px 0 10px 14px;display:flex}.show-application[data-v-756a525d]{flex-direction:column;align-items:flex-end;max-width:100%;display:flex}.show-application .application-image-block[data-v-756a525d]{margin:4px 0 0}.show-application .application-audio[data-v-756a525d]{width:260px;margin:4px 0 0}.show-application .application-pdf-link[data-v-756a525d]{margin:4px 0 0}.button-dialog[data-v-756a525d]{color:#bfa07d;cursor:pointer;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;border-radius:5px;margin-top:10px;margin-right:10px;font-size:16px;font-weight:600;display:inline-block}.button-dialog-text[data-v-756a525d]{padding:5px 12px}.place-block-hover[data-v-a3e74ca6],.place-block[data-v-a3e74ca6]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-a3e74ca6]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.place-image-plus[data-v-a3e74ca6]{justify-content:center;align-items:center;font-size:30px;display:flex}.show-editor-block[data-v-a3e74ca6]{cursor:pointer}.hr[data-v-a3e74ca6]{border:1px dashed #eee;margin:10px 0}.message-header[data-v-a3e74ca6]{padding-right:50px;font-size:20px}.message-content[data-v-a3e74ca6]{white-space:pre-wrap;font-weight:500}.intro-empty[data-v-a3e74ca6]{color:#777}.settings-header[data-v-a3e74ca6]{margin-top:20px}.hint[data-v-a3e74ca6]{margin-top:5px}.slot-block[data-v-a3e74ca6]{margin-top:10px}.settings-block[data-v-56264553]{height:40px}.settings-button[data-v-56264553]{float:right}.settings-icon[data-v-56264553]{width:20px}.name-text[data-v-56264553]{background-color:#ffffff1a;border-radius:3px;padding:3px}.settings-header[data-v-56264553]{margin-top:20px}.settings-hint[data-v-56264553]{color:#999;margin-bottom:10px}.settings-hr[data-v-56264553]{margin:20px 0}.questions-header[data-v-56264553]{color:#aaa;margin:30px 0 5px;font-size:18px}.places-container[data-v-56264553]{flex-flow:column;display:flex}.scenario-block[data-v-57b81e7c]{cursor:pointer;background-color:#222;border:2px solid #222;border-radius:12px;width:160px;height:300px;margin:10px;position:relative}.scenario-content-block[data-v-57b81e7c]{padding:2px 10px}.scenario-block[data-v-57b81e7c]:hover{color:#63e2b7;border:2px solid #63e2b7}.scenario-image-block[data-v-57b81e7c]{background-color:#111;border-radius:10px;height:160px}.scenario-image-plus[data-v-57b81e7c]{background-color:#111;justify-content:center;align-items:center;font-size:120px;display:flex}.import-icon svg[data-v-57b81e7c]{width:100px;height:100px}.import-hint[data-v-57b81e7c]{color:#aaa;margin-bottom:16px}.scenario-image[data-v-57b81e7c]{background-position:50%;background-size:cover}.scenario-title[data-v-57b81e7c]{padding:5px 0}.status-block[data-v-57b81e7c]{position:absolute;bottom:15px;right:15px}@media (width>=1024px){.scenario-block[data-v-57b81e7c]{width:250px;height:400px}.scenario-image-block[data-v-57b81e7c]{height:250px}.scenario-content-block[data-v-57b81e7c]{padding:4px 10px}}.scenario-title[data-v-bde91d68]{margin-bottom:10px;font-size:24px}.scenario-image[data-v-bde91d68]{width:100%;max-width:400px;margin-bottom:10px}.scenario-description[data-v-bde91d68]{color:#aaa;margin-bottom:10px}.belt-block[data-v-82aef99e]{background-color:#000;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;height:100%;position:relative}.shadow[data-v-82aef99e]{background-color:#000;width:100%;height:10px;position:absolute}.shadow-top[data-v-82aef99e]{top:0;box-shadow:0 -5px 10px #000}.shadow-bottom[data-v-82aef99e]{bottom:0;box-shadow:0 5px 10px #000}.plate-block[data-v-35e450f5]{position:relative;box-shadow:0 0 10px #000}.metal-plate-block[data-v-35e450f5]{background-image:url(/assets/metal-BiL2PH1r.png);background-size:cover;border-radius:4px;height:100%;position:relative}.pin[data-v-35e450f5]{background-image:url(/assets/pin-CJfldk-j.png);background-size:cover;width:7px;height:7px;position:absolute}.pin-top-left[data-v-35e450f5]{top:3px;left:3px}.pin-top-right[data-v-35e450f5]{top:3px;right:3px}.pin-bottom-right[data-v-35e450f5]{bottom:3px;right:3px}.pin-bottom-left[data-v-35e450f5]{bottom:3px;left:3px}.form-custom[data-v-6f96fdf3]{color:#fff;z-index:1000;width:100%;position:fixed;bottom:0;left:0}.input-form[data-v-6f96fdf3]{z-index:1000;max-width:1920px;height:76px;margin:0 auto;position:relative}.controller-metal[data-v-6f96fdf3]{width:30px;height:calc(100% + 2px);position:absolute;top:-1px}.controller-metal-left[data-v-6f96fdf3]{left:-30px}.controller-metal-right[data-v-6f96fdf3]{right:-30px}.controller[data-v-6f96fdf3]{display:flex;position:relative}.game-input[data-v-6f96fdf3]{width:calc(100% - 175px);height:50px;position:relative;top:14px;left:15px}.game-input-run[data-v-6f96fdf3]{background-color:#0000;background-image:url(/assets/input_center-DZZtEHaZ.png);background-size:cover;border:0;width:100%;height:100%;padding-left:27px;font-family:font_old_typer;font-size:18px}.game-input-run[data-v-6f96fdf3]::placeholder{color:#333}.game-input-run[data-v-6f96fdf3]:focus{border:0;outline:none}.game-button-run-shadow[data-v-6f96fdf3]{width:150px;height:80px;position:absolute;top:-5px;right:10px;box-shadow:-5px 5px 10px #000}.game-button-run[data-v-6f96fdf3]{cursor:pointer;background-color:#0000;background-image:url(/assets/button-DdziMEJE.png);background-size:cover;border:0;width:155px;height:80px;margin:0;padding:0;font-size:1.5em;position:absolute;top:-5px;right:10px}.new-places-label[data-v-6f96fdf3],.all-places-label[data-v-6f96fdf3]{height:48px;position:absolute}.new-places-label[data-v-6f96fdf3]{width:40px;top:14px;left:85px}.all-places-label[data-v-6f96fdf3]{width:60px;top:14px;left:15px}.places-text[data-v-6f96fdf3]{color:#111;text-align:center;background-color:#d1cebd;background-image:url(/assets/paper-CuqvoKhN.jpg);background-size:cover;border:1px solid #9e9982;border-radius:7px;margin:0 1px;font-family:font_old_typer;font-size:1.4em;display:inline-block;box-shadow:0 -2px 5px #000}.places-text-number[data-v-6f96fdf3]{width:18px}.counters-block[data-v-6f96fdf3]{margin:20px 10px 20px 5px;position:absolute;top:-40px;left:23px}.counter-block[data-v-6f96fdf3]{margin:5px;display:inline-block}.icon-for-counter[data-v-6f96fdf3]{margin:0 4px;position:relative;top:3px}@media (width>=1025px){.center-block-700[data-v-6f96fdf3]{width:700px;margin:0 auto}}.bottom-margin[data-v-8a29c56b]{height:calc(100dvh - 146px)}.smooth-scroll[data-v-8a29c56b]{scroll-behavior:smooth}.edit-panel[data-v-8a29c56b]{background-color:#222;border-radius:10px;margin:30px 0;padding:20px}.qr-main-block[data-v-8a29c56b]{justify-content:center;align-items:center;display:flex}.questions-hr[data-v-8a29c56b]{border:1px dashed #000;margin:10px 0}.questions-hint[data-v-8a29c56b]{color:#000}.question-item[data-v-8a29c56b]{margin:15px 0}.question-text[data-v-8a29c56b]{margin-bottom:6px;font-weight:500}.questions-actions[data-v-8a29c56b]{margin-top:10px}.paper-button[data-v-8a29c56b]{color:#bfa07d;cursor:pointer;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;border:0;border-radius:5px;margin-top:10px;padding:5px 12px;font-family:font_old_typer,serif;font-size:16px;font-weight:600;display:inline-block}.paper-button[data-v-8a29c56b]:hover{color:#63e2b7}.font[data-v-8a29c56b]{font-family:font_old_typer,serif;font-size:18px}.qr-main-block-text[data-v-8a29c56b]{text-align:left;margin:10px 0;font-family:font_old_typer,serif;font-size:18px}p.qr-main-block-text[data-v-8a29c56b]{font-weight:500}.qr-block[data-v-8a29c56b]{background-color:#fff;padding:12px;display:inline-block}@media (width>=1024px){.bottom-margin[data-v-8a29c56b]{height:calc(100dvh - 146px)}}.user-block[data-v-4af0a140]{background-color:#222;border-radius:10px;margin:0 0 20px;padding:20px}.user-field[data-v-4af0a140]{margin:10px}.roles-buttons-block[data-v-4af0a140]{margin-top:20px} diff --git a/dist/assets/index-DlrAb_dw.css b/dist/assets/index-DlrAb_dw.css new file mode 100644 index 0000000..1e0aa95 --- /dev/null +++ b/dist/assets/index-DlrAb_dw.css @@ -0,0 +1 @@ +:root{--vt-c-white:#fff;--vt-c-white-soft:#f8f8f8;--vt-c-white-mute:#f2f2f2;--vt-c-black:#181818;--vt-c-black-soft:#222;--vt-c-black-mute:#282828;--vt-c-indigo:#2c3e50;--vt-c-divider-light-1:#3c3c3c4a;--vt-c-divider-light-2:#3c3c3c1f;--vt-c-divider-dark-1:#545454a6;--vt-c-divider-dark-2:#5454547a;--vt-c-text-light-1:var(--vt-c-indigo);--vt-c-text-light-2:#3c3c3ca8;--vt-c-text-dark-1:var(--vt-c-white);--vt-c-text-dark-2:#ebebeba3;--main-color:#22323c;--second-color:#614a16;--main-back-color:#f0f0f0;--main-back-item-color:#fefefe;--color-background:var(--vt-c-white);--color-background-soft:var(--vt-c-white-soft);--color-background-mute:var(--vt-c-white-mute);--color-border:var(--vt-c-divider-light-2);--color-border-hover:var(--vt-c-divider-light-1);--color-heading:var(--vt-c-text-light-1);--color-text:var(--vt-c-text-light-1);--section-gap:160px}@media (prefers-color-scheme:dark){:root{--color-background:var(--vt-c-black);--color-background-soft:var(--vt-c-black-soft);--color-background-mute:var(--vt-c-black-mute);--color-border:var(--vt-c-divider-dark-2);--color-border-hover:var(--vt-c-divider-dark-1);--color-heading:var(--vt-c-text-dark-1);--color-text:var(--vt-c-text-dark-2)}}*,:before,:after{box-sizing:border-box;margin:0;font-weight:400}body{background:var(--color-background);color:#eee;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scrollbar-width:none;background-color:#111;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;line-height:1.6;transition:color .5s,background-color .5s;overflow:hidden}@font-face{font-family:font_old_typer;src:url(/assets/a_OldTyper-BsgRTrmO.ttf)}.height80{height:80vh}.content-block{margin-top:70px}.center-block-custom{scrollbar-width:none;height:calc(100vh - 150px);margin-top:70px;overflow-y:auto}.center-block-custom::-webkit-scrollbar{display:none}.width700,.width1200{margin:0 auto;padding:10px}.display-table{flex-flow:wrap;justify-content:center;display:flex}@media (width>=1024px){.center-block-custom{height:calc(100dvh - 70px);margin:70px auto 0}.width700{width:700px;margin:0 auto;padding:20px}.width1200{width:1200px;margin:0 auto;padding:20px}.center-middle-block-custom{place-items:center;display:grid}}.menu-block[data-v-97c2db91]{background-color:#222;justify-content:space-between;align-items:center;width:100%;height:70px;padding:20px;display:flex;position:fixed;top:0;left:0}.menu-item-block[data-v-97c2db91]{cursor:pointer;margin-left:10px;padding:5px;font-size:1.1em;display:inline-block}.menu-item-block[data-v-97c2db91]:hover{color:#63e2b7;opacity:.8}.right[data-v-97c2db91]{margin-left:auto}.active[data-v-97c2db91]{color:#63e2b7}@media (width>=1024px){.burger-button[data-v-97c2db91]{display:none}}@media (width<1024px){.menu-buttons-block[data-v-97c2db91]{background-color:#222;flex-direction:column;width:100%;padding-bottom:5px;display:flex;position:fixed;top:70px;left:0}.menu-buttons-block div[data-v-97c2db91]{padding:15px 5px}.menu-buttons-block-active[data-v-97c2db91]{position:relative;top:-1000px}.burger-icon[data-v-97c2db91]{position:relative;top:5px}}.scenario-block[data-v-eeb868d7]{cursor:pointer;background-color:#222;border:2px solid #222;border-radius:12px;width:160px;height:300px;margin:10px;position:relative}.scenario-content-block[data-v-eeb868d7]{padding:2px 10px}.scenario-block[data-v-eeb868d7]:hover{color:#63e2b7;border:2px solid #63e2b7}.scenario-image-block[data-v-eeb868d7]{background-color:#111;border-radius:10px;height:160px}.scenario-image[data-v-eeb868d7]{background-position:50%;background-size:cover}.scenario-title[data-v-eeb868d7]{padding:5px 0}.scenario-description[data-v-eeb868d7]{color:#aaa;display:none}.status-block[data-v-eeb868d7]{position:absolute;bottom:15px;right:15px}@media (width>=1024px){.scenario-block[data-v-eeb868d7]{width:250px;height:400px}.scenario-image-block[data-v-eeb868d7]{height:250px}.scenario-content-block[data-v-eeb868d7]{padding:4px 10px}.scenario-description[data-v-eeb868d7]{color:#aaa;display:block}}.text-with-font[data-v-689794e0]{color:#bfa07d;letter-spacing:2px;font-family:font_old_typer,serif;font-size:22px;font-weight:600;line-height:20px}.doc-page[data-v-f5dde12c]{padding-top:30px}.doc-title[data-v-f5dde12c]{text-align:center;margin:0 0 24px}.doc-loading[data-v-f5dde12c]{justify-content:center;padding:80px 0;display:flex}.doc-error[data-v-f5dde12c]{max-width:600px;margin:0 auto}.paper-block[data-v-f5dde12c]{position:relative}.paper[data-v-f5dde12c]{color:#1d1d1d;scrollbar-width:none;z-index:2;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;border-radius:3px;max-height:60vh;padding:32px 28px;position:relative;overflow-y:auto;box-shadow:0 0 12px #000000b3}.paper[data-v-f5dde12c]::-webkit-scrollbar{display:none}.doc-text[data-v-f5dde12c]{overflow-wrap:anywhere;text-align:justify;white-space:pre-wrap;font-family:font_old_typer,serif;font-size:17px;line-height:1.65}.paper-shadow[data-v-f5dde12c]{background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;border-radius:3px;width:100%;height:100%;position:absolute;top:0}.paper-shadow-left[data-v-f5dde12c]{filter:brightness(60%);left:0;transform:rotate(-2.2deg);box-shadow:0 0 10px #0009}.paper-shadow-right[data-v-f5dde12c]{filter:brightness(75%);right:0;transform:rotate(2.2deg);box-shadow:0 0 10px #0009}.docs-links[data-v-f5dde12c]{color:#999;text-align:center;margin-top:28px;padding-bottom:20px;font-size:15px}.docs-link[data-v-f5dde12c]{color:#45aa89;text-decoration:none}.docs-link[data-v-f5dde12c]:hover{color:#63e2b7}.game-block[data-v-047ac80b]{background-color:#222;border-radius:10px;margin:10px 0;padding:20px}.game-block[data-v-047ac80b]:hover{color:#63e2b7;cursor:pointer}.game-title[data-v-047ac80b]{margin-bottom:10px;font-size:24px}.game-description[data-v-047ac80b]{color:#aaa;margin-bottom:10px}.team-block[data-v-8f1e6c6c]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0}.team-block-hover[data-v-8f1e6c6c]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.team-content-block[data-v-8f1e6c6c]{padding:20px}.team-name-block[data-v-8f1e6c6c]{font-size:20px;font-weight:600}.settings-icon[data-v-8f1e6c6c]{width:20px}.link-button[data-v-8f1e6c6c]{width:100%;margin-top:20px}.place-image-plus[data-v-8f1e6c6c]{justify-content:center;align-items:center;font-size:30px;display:flex}.name-text[data-v-8f1e6c6c]{background-color:#ffffff1a;border-radius:3px;padding:3px}.qr-block[data-v-8f1e6c6c]{background-color:#fff;padding:12px;display:inline-block}.give-application-image-block[data-v-8f1e6c6c]{background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;max-width:320px;margin:10px 0 5px;padding:7px;box-shadow:0 3px 15px #626262}.give-application-image[data-v-8f1e6c6c]{width:100%}.give-application-audio[data-v-8f1e6c6c]{width:100%;margin:10px 0 5px}.give-application-pdf-link[data-v-8f1e6c6c]{margin:10px 0 5px;text-decoration:underline;display:inline-block}.answers-empty[data-v-8f1e6c6c]{color:#777}.answers-question-block[data-v-8f1e6c6c]{background-color:#222;border-radius:8px;margin:15px 0;padding:12px}.answers-question-title[data-v-8f1e6c6c]{margin:0 0 4px;font-size:17px;font-weight:600}.answers-question-answer[data-v-8f1e6c6c]{color:#aaa;margin:0 0 10px}.answers-team-row[data-v-8f1e6c6c]{background-color:#ffffff0d;border-radius:6px;flex-flow:wrap;align-items:center;gap:10px;margin:8px 0;padding:8px 10px;display:flex}.answers-team-name[data-v-8f1e6c6c]{width:180px;font-weight:600}.answers-team-answer[data-v-8f1e6c6c]{color:#aaa;white-space:pre-wrap;flex:200px}.answers-score-input[data-v-8f1e6c6c]{width:110px}.font-text{font-family:font_old_typer,serif}.content-text{float:right;position:relative;top:100px;right:0}@media (width>=1024px){.font-text{position:relative;left:-50px}.content-text{position:relative;top:100px;right:-50px}}.sign-card[data-v-b7969e02]{background-color:#1d1d1d}.form-label[data-v-b7969e02]{margin-top:10px}.form-button-wrapper[data-v-b7969e02]{justify-content:center;display:flex}.docs-link[data-v-b7969e02]{color:#45aa89}.docs-link[data-v-b7969e02]:hover{color:#63e2b7}@media (width>=1024px){.sign-card[data-v-b7969e02]{width:380px}}.danger-zone[data-v-34dfe8a1]{background-color:#222;border:1px solid #e06c7566;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:40px;padding:20px;display:flex}.danger-zone-title[data-v-34dfe8a1]{color:#e06c75;font-size:17px;font-weight:600}.danger-zone-hint[data-v-34dfe8a1]{color:#999;margin-top:6px;font-size:14px}.delete-modal-text[data-v-34dfe8a1]{color:#bbb;margin:0 0 16px;line-height:1.5}.delete-modal-error[data-v-34dfe8a1]{color:#e06c75;margin:12px 0 0}.delete-modal-buttons[data-v-34dfe8a1]{justify-content:flex-end;gap:12px;margin-top:20px;display:flex}.main[data-v-0b1b8d3f]{position:relative}.message-cloud[data-v-0b1b8d3f],.message-cloud-2[data-v-0b1b8d3f],.message-cloud-3[data-v-0b1b8d3f]{background-color:bisque}.message-cloud[data-v-0b1b8d3f]{color:#000;margin:15px 0;padding:16px;font-family:font_old_typer,serif;font-size:18px;font-weight:900;line-height:20px;position:relative}.message-cloud[data-v-0b1b8d3f],.message-cloud-2[data-v-0b1b8d3f],.message-cloud-3[data-v-0b1b8d3f]{background-image:url(/assets/paper-CuqvoKhN.jpg);background-size:cover;border-radius:5px;display:flow-root;box-shadow:0 0 5px #000}.message-cloud-2[data-v-0b1b8d3f],.message-cloud-3[data-v-0b1b8d3f]{position:absolute;top:0;left:0}.message-cloud-2[data-v-0b1b8d3f]{filter:brightness(50%);width:100%;height:100%;transform:rotate(-3deg)}.message-cloud-3[data-v-0b1b8d3f]{filter:brightness(80%);width:100%;height:100%;transform:rotate(2deg)}.font[data-v-607f7527]{font-family:font_old_typer,serif;font-size:18px}.intro-hr[data-v-607f7527]{border:1px dashed #000;margin:10px 0}.intro-text[data-v-607f7527]{white-space:pre-wrap;font-weight:500}.place-block-hover[data-v-607f7527],.place-block[data-v-607f7527]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-607f7527]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.show-editor-block[data-v-607f7527]{cursor:pointer}.hr[data-v-607f7527]{border:1px dashed #eee;margin:10px 0}.message-header[data-v-607f7527]{padding-right:50px;font-size:20px}.message-content[data-v-607f7527]{white-space:pre-wrap;font-weight:500}.intro-empty[data-v-607f7527]{color:#777}.settings-header[data-v-607f7527]{margin-top:20px}.intro-audio-block[data-v-607f7527]{margin-top:15px}.intro-audio[data-v-607f7527]{border-radius:5px;width:100%;max-width:460px}.intro-edit-audio[data-v-607f7527]{flex-flow:wrap;align-items:flex-start;gap:20px;display:flex}.slot-block[data-v-607f7527]{margin-top:10px}.hr[data-v-9a0a2d9f]{border:1px dashed #eee;margin:10px 0}.place-block-hover[data-v-9a0a2d9f],.place-block[data-v-9a0a2d9f]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-9a0a2d9f]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.place-image-plus[data-v-9a0a2d9f]{justify-content:center;align-items:center;font-size:30px;display:flex}.show-editor-block[data-v-9a0a2d9f]{cursor:pointer}.message-content[data-v-9a0a2d9f]{white-space:pre-wrap;font-weight:500}.gray-block[data-v-9a0a2d9f]{color:#777;margin-top:5px}.application-block[data-v-9a0a2d9f]{color:#deb887;margin-right:5px}.application-name[data-v-9a0a2d9f]{margin-top:5px}.application-image-border[data-v-9a0a2d9f]{cursor:zoom-in;float:left;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;width:40%;max-width:120px;margin-right:15px;padding:7px;transform:rotate(-3deg);box-shadow:0 3px 15px #626262}.message-footer .application-image-border[data-v-9a0a2d9f]{float:none;width:120px;max-width:120px;margin:4px 0 10px}.application-image[data-v-9a0a2d9f]{width:100%}.application-image-block[data-v-9a0a2d9f]{cursor:zoom-in;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;max-width:120px;margin:14px 0 5px;padding:7px;box-shadow:0 3px 15px #626262}.application-audio[data-v-9a0a2d9f]{width:100%;margin:5px 0}.application-pdf-link[data-v-9a0a2d9f]{color:var(--second-color);cursor:pointer;margin:5px 0;text-decoration:underline;display:inline-block}.view-application-image-block[data-v-9a0a2d9f]{text-align:center}.view-application-image[data-v-9a0a2d9f]{max-width:100%;max-height:72vh}.view-application-pdf[data-v-9a0a2d9f]{border:none;width:100%;height:72vh}.view-application-audio[data-v-9a0a2d9f]{width:100%}.application-edit-file[data-v-9a0a2d9f]{background-color:#222;border-radius:5px;margin:8px 0 4px;padding:8px}.application-edit-image[data-v-9a0a2d9f]{border-radius:4px;width:100%;max-width:120px;margin-top:6px}.application-edit-audio[data-v-9a0a2d9f]{width:100%;margin-top:6px}.application-label[data-v-9a0a2d9f]{font-weight:600}.door-block[data-v-9a0a2d9f]{color:#eee;background-color:#222;border-radius:5px;margin:10px 5px 10px 0;padding:5px 10px;display:inline-block}.door-add-block[data-v-9a0a2d9f]{color:#eee;background-color:#222;border-radius:5px;padding:10px}.key-block[data-v-9a0a2d9f]{color:gold;margin-left:10px}.lock-icon[data-v-9a0a2d9f]{position:relative;top:2px}.door-field[data-v-9a0a2d9f]{margin-top:10px}.need-keys-text[data-v-9a0a2d9f]{color:gold;margin:15px 0 0;padding:0}.slot-block[data-v-9a0a2d9f]{margin-top:10px}.plus-minus-buttons[data-v-9a0a2d9f]{color:#eee;text-align:center;border:1px solid #444;border-radius:40px;margin:0 0 10px 5px;padding:0 13px;font-size:25px}.plus-minus-buttons[data-v-9a0a2d9f]:hover{color:#63e2b7;cursor:pointer}.message-image-border[data-v-9a0a2d9f]{cursor:zoom-in;float:left;background-image:url(/assets/paper_white-ZSlTzOTx.jpg);background-size:cover;width:40%;max-width:200px;margin-right:15px;padding:7px;transform:rotate(-3deg);box-shadow:0 3px 15px #626262}.message-image[data-v-9a0a2d9f]{width:100%}.message-edit-image[data-v-9a0a2d9f]{width:135px;height:135px}.message-header[data-v-9a0a2d9f]{padding-right:50px;font-size:20px}.message-footer[data-v-9a0a2d9f]{color:#deb887;padding-right:50px;font-weight:400;position:relative}.message-show-header[data-v-9a0a2d9f]{padding-right:50px;font-size:20px}.collapse-icon[data-v-9a0a2d9f]{cursor:pointer;background-image:url(/assets/collapse-B6YzUtGl.png);background-position:50%;background-size:cover;width:45px;height:28px;position:absolute;top:12px;right:12px}.collapse-icon-up[data-v-9a0a2d9f]{transform:rotate(-180deg)}.show-hr[data-v-9a0a2d9f]{border:1px dashed #000;margin:10px 0}.font[data-v-9a0a2d9f]{font-family:font_old_typer,serif;font-size:18px}.message-show-content[data-v-9a0a2d9f]{white-space:pre-wrap;font-weight:500;display:flow-root}.message-show-footer[data-v-9a0a2d9f]{color:var(--second-color);padding-right:50px;font-weight:400;position:relative}.pdf-application-name[data-v-9a0a2d9f]{color:var(--second-color);cursor:pointer;text-decoration:underline}.show-applications-block[data-v-9a0a2d9f]{float:right;flex-direction:column;align-items:flex-end;gap:12px;margin:4px 0 10px 14px;display:flex}.show-application[data-v-9a0a2d9f]{flex-direction:column;align-items:flex-end;max-width:100%;display:flex}.show-application .application-image-block[data-v-9a0a2d9f]{margin:4px 0 0}.show-application .application-audio[data-v-9a0a2d9f]{width:260px;margin:4px 0 0}.show-application .application-pdf-link[data-v-9a0a2d9f]{margin:4px 0 0}.button-dialog[data-v-9a0a2d9f]{color:#bfa07d;cursor:pointer;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;border-radius:5px;margin-top:10px;margin-right:10px;font-size:16px;font-weight:600;display:inline-block}.button-dialog-text[data-v-9a0a2d9f]{padding:5px 12px}.place-block-hover[data-v-610ec2d2],.place-block[data-v-610ec2d2]{background-color:#222;border:1px solid #222;border-radius:10px;margin:10px 0;padding:20px}.place-block-hover[data-v-610ec2d2]:hover{color:#63e2b7;cursor:pointer;border:1px solid #63e2b7}.place-image-plus[data-v-610ec2d2]{justify-content:center;align-items:center;font-size:30px;display:flex}.show-editor-block[data-v-610ec2d2]{cursor:pointer}.hr[data-v-610ec2d2]{border:1px dashed #eee;margin:10px 0}.message-header[data-v-610ec2d2]{padding-right:50px;font-size:20px}.message-content[data-v-610ec2d2]{white-space:pre-wrap;font-weight:500}.intro-empty[data-v-610ec2d2]{color:#777}.settings-header[data-v-610ec2d2]{margin-top:20px}.hint[data-v-610ec2d2]{margin-top:5px}.slot-block[data-v-610ec2d2]{margin-top:10px}.settings-block[data-v-07f1e670]{height:40px}.settings-button[data-v-07f1e670]{float:right}.settings-icon[data-v-07f1e670]{width:20px}.name-text[data-v-07f1e670]{background-color:#ffffff1a;border-radius:3px;padding:3px}.settings-header[data-v-07f1e670]{margin-top:20px}.settings-hint[data-v-07f1e670]{color:#999;margin-bottom:10px}.settings-hr[data-v-07f1e670]{margin:20px 0}.questions-header[data-v-07f1e670]{color:#aaa;margin:30px 0 5px;font-size:18px}.places-container[data-v-07f1e670]{flex-flow:column;display:flex}.scenario-block[data-v-adaf4a3c]{cursor:pointer;background-color:#222;border:2px solid #222;border-radius:12px;width:160px;height:300px;margin:10px;position:relative}.scenario-content-block[data-v-adaf4a3c]{padding:2px 10px}.scenario-block[data-v-adaf4a3c]:hover{color:#63e2b7;border:2px solid #63e2b7}.scenario-image-block[data-v-adaf4a3c]{background-color:#111;border-radius:10px;height:160px}.scenario-image-plus[data-v-adaf4a3c]{background-color:#111;justify-content:center;align-items:center;font-size:120px;display:flex}.import-icon svg[data-v-adaf4a3c]{width:100px;height:100px}.import-hint[data-v-adaf4a3c]{color:#aaa;margin-bottom:16px}.scenario-image[data-v-adaf4a3c]{background-position:50%;background-size:cover}.scenario-title[data-v-adaf4a3c]{padding:5px 0}.status-block[data-v-adaf4a3c]{position:absolute;bottom:15px;right:15px}@media (width>=1024px){.scenario-block[data-v-adaf4a3c]{width:250px;height:400px}.scenario-image-block[data-v-adaf4a3c]{height:250px}.scenario-content-block[data-v-adaf4a3c]{padding:4px 10px}}.scenario-title[data-v-223ef01a]{margin-bottom:10px;font-size:24px}.scenario-image[data-v-223ef01a]{width:100%;max-width:400px;margin-bottom:10px}.scenario-description[data-v-223ef01a]{color:#aaa;margin-bottom:10px}.belt-block[data-v-bec154c5]{background-color:#000;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;height:100%;position:relative}.shadow[data-v-bec154c5]{background-color:#000;width:100%;height:10px;position:absolute}.shadow-top[data-v-bec154c5]{top:0;box-shadow:0 -5px 10px #000}.shadow-bottom[data-v-bec154c5]{bottom:0;box-shadow:0 5px 10px #000}.plate-block[data-v-4833fe7e]{position:relative;box-shadow:0 0 10px #000}.metal-plate-block[data-v-4833fe7e]{background-image:url(/assets/metal-BiL2PH1r.png);background-size:cover;border-radius:4px;height:100%;position:relative}.pin[data-v-4833fe7e]{background-image:url(/assets/pin-CJfldk-j.png);background-size:cover;width:7px;height:7px;position:absolute}.pin-top-left[data-v-4833fe7e]{top:3px;left:3px}.pin-top-right[data-v-4833fe7e]{top:3px;right:3px}.pin-bottom-right[data-v-4833fe7e]{bottom:3px;right:3px}.pin-bottom-left[data-v-4833fe7e]{bottom:3px;left:3px}.form-custom[data-v-4d904ded]{color:#fff;z-index:1000;width:100%;position:fixed;bottom:0;left:0}.input-form[data-v-4d904ded]{z-index:1000;max-width:1920px;height:76px;margin:0 auto;position:relative}.controller-metal[data-v-4d904ded]{width:30px;height:calc(100% + 2px);position:absolute;top:-1px}.controller-metal-left[data-v-4d904ded]{left:-30px}.controller-metal-right[data-v-4d904ded]{right:-30px}.controller[data-v-4d904ded]{display:flex;position:relative}.game-input[data-v-4d904ded]{width:calc(100% - 175px);height:50px;position:relative;top:14px;left:15px}.game-input-run[data-v-4d904ded]{background-color:#0000;background-image:url(/assets/input_center-DZZtEHaZ.png);background-size:cover;border:0;width:100%;height:100%;padding-left:27px;font-family:font_old_typer,serif;font-size:18px}.game-input-run[data-v-4d904ded]::placeholder{color:#333}.game-input-run[data-v-4d904ded]:focus{border:0;outline:none}.game-button-run-shadow[data-v-4d904ded]{width:150px;height:80px;position:absolute;top:-5px;right:10px;box-shadow:-5px 5px 10px #000}.game-button-run[data-v-4d904ded]{cursor:pointer;background-color:#0000;background-image:url(/assets/button-DdziMEJE.png);background-size:cover;border:0;width:155px;height:80px;margin:0;padding:0;font-size:1.5em;position:absolute;top:-5px;right:10px}.new-places-label[data-v-4d904ded],.all-places-label[data-v-4d904ded]{height:48px;position:absolute}.new-places-label[data-v-4d904ded]{width:40px;top:14px;left:85px}.all-places-label[data-v-4d904ded]{width:60px;top:14px;left:15px}.places-text[data-v-4d904ded]{color:#111;text-align:center;background-color:#d1cebd;background-image:url(/assets/paper-CuqvoKhN.jpg);background-size:cover;border:1px solid #9e9982;border-radius:7px;margin:0 1px;font-family:font_old_typer,serif;font-size:1.4em;display:inline-block;box-shadow:0 -2px 5px #000}.places-text-number[data-v-4d904ded]{width:18px}.counters-block[data-v-4d904ded]{margin:20px 10px 20px 5px;position:absolute;top:-40px;left:23px}.counter-block[data-v-4d904ded]{margin:5px;display:inline-block}.icon-for-counter[data-v-4d904ded]{margin:0 4px;position:relative;top:3px}@media (width>=1025px){.center-block-700[data-v-4d904ded]{width:700px;margin:0 auto}}.bottom-margin[data-v-b43b2553]{height:calc(100dvh - 146px)}.smooth-scroll[data-v-b43b2553]{scroll-behavior:smooth}.edit-panel[data-v-b43b2553]{background-color:#222;border-radius:10px;margin:30px 0;padding:20px}.qr-main-block[data-v-b43b2553]{justify-content:center;align-items:center;display:flex}.questions-hr[data-v-b43b2553]{border:1px dashed #000;margin:10px 0}.questions-hint[data-v-b43b2553]{color:#000}.question-item[data-v-b43b2553]{margin:15px 0}.question-text[data-v-b43b2553]{margin-bottom:6px;font-weight:500}.questions-actions[data-v-b43b2553]{margin-top:10px}.paper-button[data-v-b43b2553]{color:#bfa07d;cursor:pointer;background-image:url(/assets/belt-DVqk2_uL.png);background-size:cover;border:0;border-radius:5px;margin-top:10px;padding:5px 12px;font-family:font_old_typer,serif;font-size:16px;font-weight:600;display:inline-block}.paper-button[data-v-b43b2553]:hover{color:#63e2b7}.font[data-v-b43b2553]{font-family:font_old_typer,serif;font-size:18px}.qr-main-block-text[data-v-b43b2553]{text-align:left;margin:10px 0;font-family:font_old_typer,serif;font-size:18px}p.qr-main-block-text[data-v-b43b2553]{font-weight:500}.qr-block[data-v-b43b2553]{background-color:#fff;padding:12px;display:inline-block}@media (width>=1024px){.bottom-margin[data-v-b43b2553]{height:calc(100dvh - 146px)}}.user-block[data-v-7c14036f]{background-color:#222;border-radius:10px;margin:0 0 20px;padding:20px}.user-field[data-v-7c14036f]{margin:10px}.roles-buttons-block[data-v-7c14036f]{margin-top:20px} diff --git a/dist/index.html b/dist/index.html index 7eb1cd6..616cb85 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,12 +1,12 @@ - + - - - + + + Вечерний детектив - - + +
diff --git a/eslint.config.ts b/eslint.config.ts index 1edaebb..750e43e 100644 --- a/eslint.config.ts +++ b/eslint.config.ts @@ -1,8 +1,8 @@ import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' import { globalIgnores } from 'eslint/config' -import simpleImportSort from 'eslint-plugin-simple-import-sort'; -import unusedImports from 'eslint-plugin-unused-imports'; +import simpleImportSort from 'eslint-plugin-simple-import-sort' +import unusedImports from 'eslint-plugin-unused-imports' import pluginVue from 'eslint-plugin-vue' // To allow more languages other than `ts` in `.vue` files, uncomment the following lines: @@ -41,7 +41,7 @@ export default defineConfigWithVueTs( '@typescript-eslint/no-unused-vars': 'off', // Включаем правила плагина - 'unused-imports/no-unused-imports': 'error', // 🔧 автофикс + 'unused-imports/no-unused-imports': 'error', // 🔧 автофикс 'unused-imports/no-unused-vars': [ 'warn', { @@ -52,5 +52,5 @@ export default defineConfigWithVueTs( }, ], }, - } + }, ) diff --git a/index.html b/index.html index 51a48d4..94bd58e 100644 --- a/index.html +++ b/index.html @@ -1,9 +1,9 @@ - + - - - + + + Вечерний детектив diff --git a/package-lock.json b/package-lock.json index c00b30a..94f867b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,7 @@ "prettier": "3.9.4", "stylelint": "^17.14.1", "stylelint-config-standard-scss": "^17.0.0", + "stylelint-order": "^8.1.1", "ts-proto": "^2.12.0", "typescript": "~6.0.3", "vfonts": "^0.0.3", @@ -5321,6 +5322,16 @@ "node": ">=4" } }, + "node_modules/postcss-sorting": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-10.0.0.tgz", + "integrity": "sha512-TXbU+h6vVRW+86c/+ewhWq9k7pr7ijASTnepVhCQiC87zAOTkvB1v2dHyWP+ggstSTX/PNvjzS+IOqzejndz9w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.4.20" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -5915,6 +5926,23 @@ } } }, + "node_modules/stylelint-order": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-8.1.1.tgz", + "integrity": "sha512-LqsEB6VggJuu5v10RtkrQsBObcdwBE7GuAOlwfc/LR3VL/w8UqKX2BOLIjhyGt0Gne/njo7gRNGiJAKhfmPMNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.5.8", + "postcss-sorting": "^10.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "stylelint": "^16.18.0 || ^17.0.0" + } + }, "node_modules/stylelint-scss": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.2.0.tgz", diff --git a/package.json b/package.json index 756afdf..176b177 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "type-check": "vue-tsc --build", "lint": "eslint . --fix", "lint:css": "stylelint \"src/**/*.{css,scss,vue}\" --fix", - "format": "prettier --write src/", + "format": "prettier --write .", "proto:gen": "protoc --typescript-http_out=src/api/generated --proto_path=proto proto/main.proto" }, "dependencies": { @@ -47,6 +47,7 @@ "prettier": "3.9.4", "stylelint": "^17.14.1", "stylelint-config-standard-scss": "^17.0.0", + "stylelint-order": "^8.1.1", "ts-proto": "^2.12.0", "typescript": "~6.0.3", "vfonts": "^0.0.3", diff --git a/src/App.vue b/src/App.vue index 1202918..7d216ff 100644 --- a/src/App.vue +++ b/src/App.vue @@ -11,5 +11,3 @@ import { RouterView } from 'vue-router' - - diff --git a/src/api/archive_client.ts b/src/api/archive_client.ts index f7b4751..78a4a78 100644 --- a/src/api/archive_client.ts +++ b/src/api/archive_client.ts @@ -20,10 +20,7 @@ export function getArchiveClient() { return buildArchiveClient(authStore.refreshTokenAction, authStore.getToken) } -function buildArchiveClient( - refreshTokens: () => Promise, - getToken: () => string | null, -) { +function buildArchiveClient(refreshTokens: () => Promise, getToken: () => string | null) { async function request(path: string, init: RequestInit): Promise { const headers: Record = {} const token = getToken() @@ -59,7 +56,8 @@ function buildArchiveClient( } const blob = await response.blob() const filename = - parseContentDispositionFilename(response.headers.get('Content-Disposition')) || `scenario-${id}.zip` + parseContentDispositionFilename(response.headers.get('Content-Disposition')) || + `scenario-${id}.zip` return { blob, filename } } diff --git a/src/assets/base.css b/src/assets/base.css index db82b01..76c6339 100644 --- a/src/assets/base.css +++ b/src/assets/base.css @@ -51,18 +51,13 @@ *::before, *::after { box-sizing: border-box; - margin: 0; font-weight: normal; + margin: 0; } body { - min-height: 100vh; - color: var(--color-text); background: var(--color-background); - transition: - color 0.5s, - background-color 0.5s; - line-height: 1.6; + color: var(--color-text); font-family: Inter, -apple-system, @@ -77,7 +72,12 @@ body { 'Helvetica Neue', sans-serif; font-size: 15px; - text-rendering: optimizelegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -} \ No newline at end of file + line-height: 1.6; + min-height: 100vh; + text-rendering: optimizelegibility; + transition: + color 0.5s, + background-color 0.5s; +} diff --git a/src/assets/main.css b/src/assets/main.css index ef8278f..7bcb38c 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -1,9 +1,9 @@ @import './base.css'; body { - overflow: hidden; - color: #eee; background-color: #111; + color: #eee; + overflow: hidden; scrollbar-width: none; } @@ -21,9 +21,9 @@ body { } .center-block-custom { + height: calc(100vh - 150px); margin-top: 70px; overflow-y: auto; - height: calc(100vh - 150px); /* Firefox */ scrollbar-width: none; @@ -35,13 +35,13 @@ body { } .width700 { - padding: 10px; margin: 0 auto; + padding: 10px; } .width1200 { - padding: 10px; margin: 0 auto; + padding: 10px; } .display-table { @@ -52,20 +52,20 @@ body { @media (width >=1024px) { .center-block-custom { - margin: 70px auto 0; height: calc(100dvh - 70px); + margin: 70px auto 0; } .width700 { - width: 700px; - padding: 20px; margin: 0 auto; + padding: 20px; + width: 700px; } .width1200 { - width: 1200px; - padding: 20px; margin: 0 auto; + padding: 20px; + width: 1200px; } .center-middle-block-custom { diff --git a/src/components/BeltBlock.vue b/src/components/BeltBlock.vue index 995c21d..1efcd1f 100644 --- a/src/components/BeltBlock.vue +++ b/src/components/BeltBlock.vue @@ -12,23 +12,23 @@ diff --git a/src/components/DocsPage.vue b/src/components/DocsPage.vue index e13ff4c..6306946 100644 --- a/src/components/DocsPage.vue +++ b/src/components/DocsPage.vue @@ -72,7 +72,9 @@ onMounted(async () => { · Политика конфиденциальности · - Согласие на обработку персональных данных + Согласие на обработку персональных данных @@ -104,17 +106,17 @@ onMounted(async () => { } .paper { - position: relative; - z-index: 2; - padding: 32px 28px; - border-radius: 3px; background-image: url('@/assets/images/paper_white.jpg'); background-size: cover; - color: #1d1d1d; + border-radius: 3px; box-shadow: 0 0 12px rgb(0 0 0 / 70%); + color: #1d1d1d; max-height: 60vh; overflow-y: auto; + padding: 32px 28px; + position: relative; scrollbar-width: none; + z-index: 2; } .paper::-webkit-scrollbar { @@ -122,44 +124,44 @@ onMounted(async () => { } .doc-text { - font-family: 'font_old_typer'; + font-family: 'font_old_typer', serif; font-size: 17px; line-height: 1.65; - white-space: pre-wrap; - word-break: break-word; + overflow-wrap: anywhere; text-align: justify; + white-space: pre-wrap; } .paper-shadow { + background-image: url('@/assets/images/paper_white.jpg'); + background-size: cover; + border-radius: 3px; + height: 100%; position: absolute; top: 0; width: 100%; - height: 100%; - border-radius: 3px; - background-image: url('@/assets/images/paper_white.jpg'); - background-size: cover; } .paper-shadow-left { + box-shadow: 0 0 10px rgb(0 0 0 / 60%); + filter: brightness(60%); left: 0; transform: rotate(-2.2deg); - filter: brightness(60%); - box-shadow: 0 0 10px rgb(0 0 0 / 60%); } .paper-shadow-right { + box-shadow: 0 0 10px rgb(0 0 0 / 60%); + filter: brightness(75%); right: 0; transform: rotate(2.2deg); - filter: brightness(75%); - box-shadow: 0 0 10px rgb(0 0 0 / 60%); } .docs-links { + color: #999; + font-size: 15px; margin-top: 28px; padding-bottom: 20px; text-align: center; - font-size: 15px; - color: #999; } .docs-link { diff --git a/src/components/GameInputForm.vue b/src/components/GameInputForm.vue index 25be50e..44644da 100644 --- a/src/components/GameInputForm.vue +++ b/src/components/GameInputForm.vue @@ -2,31 +2,31 @@ import { Footsteps } from '@vicons/ionicons5' import { ContactMailRound } from '@vicons/material' import { Icon } from '@vicons/utils' -import { type PropType, ref } from 'vue'; +import { type PropType, ref } from 'vue' -import BeltBlock from './BeltBlock.vue'; -import HeaderText from './HeaderText.vue'; -import MetalPlate from './MetalPlate.vue'; +import BeltBlock from './BeltBlock.vue' +import HeaderText from './HeaderText.vue' +import MetalPlate from './MetalPlate.vue' const code = ref('') const props = defineProps({ addAction: { type: Function as PropType<(param: string) => void>, - required: true + required: true, }, allPlacesCount: { type: Number, - required: true + required: true, }, newPlacesCount: { type: Number, - required: true + required: true, }, gameStatus: { type: String, - required: true - } + required: true, + }, }) async function addClickButton() { @@ -51,7 +51,6 @@ function getTextForCounter(count: number): string[] { return [text1, text2] } -