import{D as e,E as t,K as n,M as r,N as i,O as a,T as o,V as s,W as c,Y as l,at as u,gt as d,j as f,u as p,w as m,xt as h,y as g,zt as _}from"./client-Dr2LhGo3.js";import{t as v}from"./Card-C2NfeMd7.js";import{t as y}from"./Button-DrSwbbPC.js";import{t as b}from"./Input-C-S2Qhf0.js";import{t as x}from"./Alert-DIuMKvSU.js";import{n as S,r as C}from"./es-DzLJg_jB.js";import{t as w}from"./Space-DTbY_9Vu.js";import{nt as T,t as E}from"./index-CML5W5F9.js";import{t as D}from"./HeaderMenu-BMv76IOe.js";import{t as O}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as k}from"./datetime-BJNH0M1T.js";var A={class:`center-block-custom center-middle-block-custom scanner-page`},j={key:0},M={key:1},N={key:2},P=O(i({__name:`TicketScannerPage`,setup(i){let O=E(),P=p(),F=S(),I=C(),L=d(``),R=d(),z=d(``),B=d(!1),V=d(),H=d(!1),U,W=0,G=m(()=>{try{return new URL(L.value.trim()).pathname.match(/\/tickets\/([^/]+)/)?.[1]||``}catch{return L.value.trim()}});async function K(){if(!(!G.value||B.value)){B.value=!0,z.value=``,R.value=void 0;try{let e=await F.GetTicket({token:G.value});e.ticket?R.value=e.ticket:z.value=`Билет не найден`}catch(e){z.value=e instanceof Error?e.message:`Не удалось проверить билет`}finally{B.value=!1}}}async function q(){if(!(!G.value||B.value)){B.value=!0,z.value=``;try{let e=await F.AcceptTicket({token:G.value});e.ticket?(R.value=e.ticket,I.success(`Билет принят`)):z.value=`Не удалось принять билет`}catch(e){z.value=e instanceof Error?e.message:`Не удалось принять билет`}finally{B.value=!1}}}async function J(){let e=window.BarcodeDetector;if(!e||!navigator.mediaDevices?.getUserMedia){z.value=`Сканирование камерой не поддерживается. Введите ссылку вручную.`;return}try{U=await navigator.mediaDevices.getUserMedia({video:{facingMode:`environment`}}),H.value=!0,await s(),V.value&&(V.value.srcObject=U,await V.value.play());let t=new e,n=async()=>{if(!H.value||!V.value)return;let e=await t.detect(V.value);if(e[0]?.rawValue){L.value=e[0].rawValue,Y(),await K();return}W=requestAnimationFrame(n)};W=requestAnimationFrame(n)}catch{z.value=`Не удалось открыть камеру. Введите ссылку вручную.`}}function Y(){H.value=!1,cancelAnimationFrame(W),U?.getTracks().forEach(e=>e.stop()),U=void 0}return n(()=>{O.isAuthenticated||P.replace(`/login`)}),c(Y),(n,i)=>(l(),a(g,null,[r(D,{active:`games`}),o(`div`,A,[r(h(v),{title:`Проверка билета`,class:`scanner-card`},{default:u(()=>[r(h(w),{vertical:``},{default:u(()=>[H.value?(l(),a(`video`,{key:0,ref_key:`video`,ref:V,class:`scanner-video`,muted:``,playsinline:``},null,512)):e(``,!0),H.value?(l(),t(h(y),{key:2,onClick:Y},{default:u(()=>[...i[2]||=[f(`Остановить камеру`,-1)]]),_:1})):(l(),t(h(y),{key:1,onClick:J},{default:u(()=>[...i[1]||=[f(`Сканировать камерой`,-1)]]),_:1})),r(h(b),{value:L.value,"onUpdate:value":i[0]||=e=>L.value=e,placeholder:`Или вставьте ссылку на билет`,onKeyup:T(K,[`enter`])},null,8,[`value`]),r(h(y),{type:`primary`,loading:B.value,onClick:K},{default:u(()=>[...i[3]||=[f(`Проверить билет`,-1)]]),_:1},8,[`loading`]),z.value?(l(),t(h(x),{key:3,type:`error`},{default:u(()=>[f(_(z.value),1)]),_:1})):e(``,!0),R.value?(l(),a(g,{key:4},[r(h(x),{type:R.value.status===`active`?`success`:`warning`},{default:u(()=>[f(_(R.value.gameName),1),i[4]||=o(`br`,null,null,-1),f(` Статус: `+_(R.value.status===`active`?`действителен`:`уже использован`)+` `,1),R.value.usedBy?(l(),a(`span`,j,` · `+_(R.value.usedBy),1)):e(``,!0),R.value.usedAt?(l(),a(`br`,M)):e(``,!0),R.value.usedAt?(l(),a(`span`,N,`Использован: `+_(h(k)(R.value.usedAt)),1)):e(``,!0)]),_:1},8,[`type`]),R.value.status===`active`&&R.value.gameStatus!==`finish`?(l(),t(h(y),{key:0,type:`primary`,loading:B.value,onClick:q},{default:u(()=>[...i[5]||=[f(` Принять билет `,-1)]]),_:1},8,[`loading`])):e(``,!0)],64)):e(``,!0)]),_:1})]),_:1})])],64))}}),[[`__scopeId`,`data-v-42390d77`]]),F=i({__name:`TicketScannerView`,setup(e){return(e,n)=>(l(),t(P))}});export{F as default};