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
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 l,k as u,ot as d,vt as f,w as p,x as m}from"./vue.runtime.esm-bundler-Dt_AyShc.js";import{a as h,i as ee}from"./portalLocale-vgPGVHT0.js";import{_ as g,n as _,p as v}from"./api-Dpfxb1ca.js";import{f as te,i as ne,p as re}from"./index-DZf__Hx9.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";import{a as b}from"./site-DFdehYNY.js";/* empty css */import{n as ie,t as ae}from"./participantTheme-DJmAYiDK.js";import{c as x,d as S,r as C,s as w}from"./competitionBranding-yuKuMrc8.js";import{t as T}from"./PortalHeaderBrand-CMozNyA5.js";var oe={class:`participant-layout`},se={key:0,class:`admin-impersonation-banner text-center small py-2 px-3`,role:`status`},ce={class:`navbar navbar-expand-lg layout-header`},E={class:`container-fluid px-3 px-lg-4 layout-header-inner`},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`},z={class:`layout-footer-inner`},B={class:`layout-footer-meta`},V=y(e({__name:`MainLayout`,setup(e){let{t:y}=ne(),V=re(),H=te(),U=m(()=>ee(H.query)),W=m(()=>String(H.params.slug??``).trim()),G=f(w()),K=f(``),q=f(``),J=f(``),Y=f(``),le=m(()=>S(G.value,K.value,U.value)),X=m(()=>{let e=Date.now(),t=J.value.trim(),n=Y.value.trim(),r=t?Date.parse(t):NaN,i=n?Date.parse(n):NaN;if(Number.isFinite(i)&&e>i)return y(`layout.signupClosed`);if(Number.isFinite(r)&&e<r)return y(`layout.signupSoon`);if(Number.isFinite(r)||Number.isFinite(i))return y(`layout.signupOpen`);let a=q.value;return y(a===`signup_closed`||a===`ended`?`layout.signupClosed`:a===`signup_open`||a===`published`||a===`reviewing`?`layout.signupOpen`:a===`draft`?`layout.signupSoon`:`layout.signupOpen`)}),Z=m(()=>{let e=Y.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())}`}),ue=m(()=>x(G.value.login.footerCopyright)?G.value.login.footerCopyright:``);async function de(){let e=W.value;if(!e){G.value=w(),K.value=``,q.value=``,J.value=``,Y.value=``,b();return}try{let t=await fetch(`${g()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){G.value=w(),K.value=``,q.value=``,J.value=``,Y.value=``,b();return}let n=await t.json(),r=n.data!=null&&typeof n.data==`object`&&!Array.isArray(n.data)?n.data:n;K.value=String(r.name??``),q.value=String(r.status??``),J.value=String(r.signup_open_at??``),Y.value=String(r.signup_close_at??``),G.value=C(r.branding_json??null,U.value),b(G.value.documentTitle)}catch{G.value=w(),K.value=``,q.value=``,J.value=``,Y.value=``,b()}}d([W,U],()=>{de()},{immediate:!0}),d(G,()=>ae(G.value.login.themePrimary),{deep:!0,immediate:!0});let Q=f(``),$=f(sessionStorage.getItem(_)===`1`),fe=m(()=>{if($.value){let e=Q.value.trim();return e?y(`layout.impersonation`,{name:e}):y(`layout.impersonationAnon`)}return Q.value||y(`layout.userFallback`)});async function pe(){let e=localStorage.getItem(v),t=g();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 me(){localStorage.removeItem(v),localStorage.removeItem(`cxxfds_user`),sessionStorage.removeItem(_),$.value=!1;let e=W.value;e?V.push({name:`participant-login`,params:{slug:e},query:h(U.value)}):V.push(`/c`)}return n(()=>{document.body.classList.add(`prototype-page`,`user-mobile-no-menu`),$.value=sessionStorage.getItem(_)===`1`,pe()}),i(()=>{document.body.classList.remove(`prototype-page`,`user-mobile-no-menu`),ie()}),(e,n)=>{let i=a(`router-view`);return r(),s(`div`,oe,[$.value?(r(),s(`div`,se,c(t(y)(`layout.impersonationBanner`)),1)):p(``,!0),o(`header`,ce,[o(`div`,E,[u(T,{"logo-url":G.value.login.logoUrl,name:le.value},null,8,[`logo-url`,`name`]),o(`div`,D,[X.value?(r(),s(`span`,O,c(X.value),1)):p(``,!0),Z.value?(r(),s(`div`,{key:1,class:`header-deadline`,"aria-label":t(y)(`layout.deadlineAria`)},[o(`span`,null,c(t(y)(`layout.deadlinePrefix`)),1),o(`time`,null,c(Z.value),1)],8,k)):p(``,!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(y)(`layout.userMenu`)},[o(`span`,M,c(fe.value),1)],8,j),o(`ul`,N,[o(`li`,P,[o(`a`,{class:`dropdown-item dropdown-item-danger`,href:`javascript:void(0)`,onClick:l(me,[`prevent`])},[o(`span`,null,c(t(y)(`layout.logout`)),1)])])])])])])]),o(`div`,F,[o(`div`,I,[o(`main`,L,[u(i)])])]),o(`footer`,R,[o(`div`,z,[o(`div`,B,[o(`span`,null,c(ue.value),1)])])])])}}}),[[`__scopeId`,`data-v-83ac050b`]]);export{V as default}; |