You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
5.1 KiB

import{A as e,Dt as t,G as n,J as r,K as i,Q as a,S as o,T as s,an as c,h as ee,k as te,ot as l,vt as u,w as d,x as f}from"./vue.runtime.esm-bundler-EOeHqR7Z.js";import{a as p,i as ne}from"./portalLocale-CgC-o5jM.js";import{_ as m,n as h,p as g}from"./api-IlNPlR49.js";import{f as _,i as v,p as y}from"./index-xGP6mfsH.js";import{t as b}from"./_plugin-vue_export-helper-BOai-rQB.js";import{a as x}from"./site-DbEWHcKU.js";/* empty css */import{n as re,t as ie}from"./participantTheme-B3FTrwQQ.js";import{a as S,c as ae,n as oe,o as se}from"./competitionBranding-BqoVO1VJ.js";var ce={class:`participant-layout`},le={key:0,class:`admin-impersonation-banner text-center small py-2 px-3`,role:`status`},C={class:`navbar navbar-expand-lg layout-header`},w={class:`container-fluid px-3 px-lg-4 layout-header-inner`},T={class:`header-brand`},E={class:`navbar-brand mb-0 prototype-title`},D={class:`header-meta`},O={key:0,class:`header-status`},k=[`aria-label`],A={class:`dropdown header-user-dropdown`},j=[`aria-label`],M={class:`header-user-name`},N={class:`dropdown-menu dropdown-menu-end header-user-menu`,"aria-labelledby":`headerUserToggle`},P={class:`header-user-menu-separator`},F={class:`container-fluid px-3 px-lg-4 py-3 layout-main`},I={class:`row layout-main-row g-3`},L={class:`col-12 participant-main-col`},R={id:`layoutFooter`,class:`layout-footer`},ue={class:`layout-footer-inner`},z={class:`layout-footer-meta`},B=b(e({__name:`MainLayout`,setup(e){let{t:b}=v(),B=y(),V=_(),H=f(()=>ne(V.query)),U=f(()=>String(V.params.slug??``).trim()),W=u(S()),G=u(``),K=u(``),q=u(``),J=u(``),de=f(()=>ae(W.value)),Y=f(()=>{let e=Date.now(),t=q.value.trim(),n=J.value.trim(),r=t?Date.parse(t):NaN,i=n?Date.parse(n):NaN;if(Number.isFinite(i)&&e>i)return b(`layout.signupClosed`);if(Number.isFinite(r)&&e<r)return b(`layout.signupSoon`);if(Number.isFinite(r)||Number.isFinite(i))return b(`layout.signupOpen`);let a=K.value;return b(a===`signup_closed`||a===`ended`?`layout.signupClosed`:a===`signup_open`||a===`published`||a===`reviewing`?`layout.signupOpen`:a===`draft`?`layout.signupSoon`:`layout.signupOpen`)}),X=f(()=>{let e=J.value.trim();if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return e.replace(`T`,` `).slice(0,16);let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}),Z=f(()=>se(W.value.login.footerCopyright)?W.value.login.footerCopyright:``);async function fe(){let e=U.value;if(!e){W.value=S(),G.value=``,K.value=``,q.value=``,J.value=``,x();return}try{let t=await fetch(`${m()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){W.value=S(),G.value=``,K.value=``,q.value=``,J.value=``,x();return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;G.value=String(r.name??``),K.value=String(r.status??``),q.value=String(r.signup_open_at??``),J.value=String(r.signup_close_at??``),W.value=oe(r.branding_json??null,H.value),x(W.value.documentTitle)}catch{W.value=S(),G.value=``,K.value=``,q.value=``,J.value=``,x()}}l([U,H],()=>{fe()},{immediate:!0}),l(W,()=>ie(W.value.login.themePrimary),{deep:!0,immediate:!0});let Q=u(``),$=u(sessionStorage.getItem(h)===`1`),pe=f(()=>{if($.value){let e=Q.value.trim();return e?b(`layout.impersonation`,{name:e}):b(`layout.impersonationAnon`)}return Q.value||b(`layout.userFallback`)});async function me(){let e=localStorage.getItem(g),t=m();if(e)try{let n=await fetch(`${t}/api/me`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/json`}});if(!n.ok)return;let r=await n.json();Q.value=r.name||r.mobile||``}catch{}}function he(){localStorage.removeItem(g),localStorage.removeItem(`cxxfds_user`),sessionStorage.removeItem(h),$.value=!1;let e=U.value;e?B.push({name:`participant-login`,params:{slug:e},query:p(H.value)}):B.push(`/c`)}return n(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),$.value=sessionStorage.getItem(h)===`1`,me()}),i(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`),re()}),(e,n)=>{let i=a(`router-view`);return r(),s(`div`,ce,[$.value?(r(),s(`div`,le,c(t(b)(`layout.impersonationBanner`)),1)):d(``,!0),o(`header`,C,[o(`div`,w,[o(`div`,T,[o(`span`,E,c(de.value),1)]),o(`div`,D,[Y.value?(r(),s(`span`,O,c(Y.value),1)):d(``,!0),X.value?(r(),s(`div`,{key:1,class:`header-deadline`,"aria-label":t(b)(`layout.deadlineAria`)},[o(`span`,null,c(t(b)(`layout.deadlinePrefix`)),1),o(`time`,null,c(X.value),1)],8,k)):d(``,!0),o(`div`,A,[o(`button`,{id:`headerUserToggle`,class:`header-user dropdown-toggle`,type:`button`,"data-bs-toggle":`dropdown`,"data-bs-auto-close":`true`,"aria-expanded":`false`,"aria-label":t(b)(`layout.userMenu`)},[o(`span`,M,c(pe.value),1)],8,j),o(`ul`,N,[o(`li`,P,[o(`a`,{class:`dropdown-item dropdown-item-danger`,href:`javascript:void(0)`,onClick:ee(he,[`prevent`])},[o(`span`,null,c(t(b)(`layout.logout`)),1)])])])])])])]),o(`div`,F,[o(`div`,I,[o(`main`,L,[te(i)])])]),o(`footer`,R,[o(`div`,ue,[o(`div`,z,[o(`span`,null,c(Z.value),1)])])])])}}}),[[`__scopeId`,`data-v-aa1a1fd8`]]);export{B as default};