diff --git a/polylan_submitter/src/Noita.vue b/polylan_submitter/src/Noita.vue index b8419d9..5f9f186 100644 --- a/polylan_submitter/src/Noita.vue +++ b/polylan_submitter/src/Noita.vue @@ -1,7 +1,9 @@ diff --git a/polylan_submitter/src/noita.ts b/polylan_submitter/src/noita.ts index b936e72..7cbdeb6 100644 --- a/polylan_submitter/src/noita.ts +++ b/polylan_submitter/src/noita.ts @@ -1,8 +1,10 @@ import { createApp } from 'vue' import Noita from '@/Noita.vue' +import { pinia } from '@/stores' import '@/style.css' const selector = "#app" const mountData = document.querySelector(selector) const app = createApp(Noita, { ...mountData?.dataset }) +app.use(pinia) app.mount(selector) diff --git a/polylan_submitter/src/stores/noita.ts b/polylan_submitter/src/stores/noita.ts new file mode 100644 index 0000000..62d02a5 --- /dev/null +++ b/polylan_submitter/src/stores/noita.ts @@ -0,0 +1,184 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export interface Objective { + objectiv_id: string + display_string: string + first_seen_at: string | null + count: number + max_count: number + seed: string | null + points_per_objectiv: number + total_points: number +} + +interface UserInfo { + username: string + rank: number | null + score: number + runsSubmitted: number + deathsCount: number + isStaff: boolean +} + +interface LeaderboardEntry { + rank: number + username: string + total_score: number + objectives_count: number + deaths_count: number + is_staff: boolean +} + +export const useNoitaStore = defineStore('noita', () => { + // State + const userInfo = ref({ + username: 'Player', + rank: null, + score: 0, + runsSubmitted: 0, + deathsCount: 0, + isStaff: false, + }) + const objectives = ref([]) + const leaderboard = ref([]) + const isLoadingLeaderboard = ref(false) + const isUploading = ref(false) + const error = ref('') + + // Actions + const fetchUserResults = async () => { + try { + const response = await fetch('/api/noita/results') + if (!response.ok) throw new Error('Failed to fetch results') + + const results = await response.json() + userInfo.value.score = results.total_score + userInfo.value.deathsCount = results.deaths_count + userInfo.value.runsSubmitted = results.objectives.length + objectives.value = results.objectives + } catch (err) { + error.value = 'Failed to fetch user results' + console.error('Error fetching results:', err) + } + } + + const fetchLeaderboard = async () => { + isLoadingLeaderboard.value = true + try { + const response = await fetch('/api/noita/leaderboard') + if (!response.ok) throw new Error('Failed to fetch leaderboard') + + const data = await response.json() + leaderboard.value = data.leaderboard + + // Find current user's rank + const userRank = leaderboard.value.find( + (entry) => entry.username === userInfo.value.username + ) + + if (userRank) { + userInfo.value.rank = userRank.rank + userInfo.value.score = userRank.total_score + userInfo.value.deathsCount = userRank.deaths_count + } + } catch (err) { + error.value = 'Failed to fetch leaderboard' + console.error('Error fetching leaderboard:', err) + } finally { + isLoadingLeaderboard.value = false + } + } + + const loadUserData = async () => { + try { + const response = await fetch('/api/user') + if (response.ok) { + const user = await response.json() + if (user.is_authenticated) { + userInfo.value.username = user.username + userInfo.value.isStaff = user.is_staff || false + } + } + } catch (err) { + console.error('Error fetching user info:', err) + } + + await Promise.all([fetchUserResults(), fetchLeaderboard()]) + } + + const submitRun = async (files: File[]) => { + if (files.length === 0) return + + isUploading.value = true + try { + for (const file of files) { + const formData = new FormData() + formData.append('file', file) + + const response = await fetch('/api/noita/submit', { + method: 'POST', + body: formData, + }) + + if (!response.ok) { + const errorData = await response.json() + throw new Error(errorData.detail || 'Unknown error') + } + + const result = await response.json() + console.log('Submission successful:', result) + } + + // Refresh objectives, score, and rank after successful submission + await Promise.all([fetchUserResults(), fetchLeaderboard()]) + } catch (err) { + const errorMessage = err instanceof Error ? err.message : 'Unknown error' + error.value = `Error submitting run: ${errorMessage}` + throw err + } finally { + isUploading.value = false + } + } + + const clearCache = async () => { + try { + const response = await fetch('/api/cache/clear', { + method: 'POST', + }) + + if (!response.ok) { + const errorData = await response.json() + throw new Error(errorData.detail || 'Unknown error') + } + + await Promise.all([fetchUserResults(), fetchLeaderboard()]) + } catch (err) { + const errorMessage = err instanceof Error ? err.message : 'Unknown error' + error.value = `Error clearing cache: ${errorMessage}` + throw err + } + } + + const refreshData = async () => { + await Promise.all([fetchUserResults(), fetchLeaderboard()]) + } + + return { + // State + userInfo, + objectives, + leaderboard, + isLoadingLeaderboard, + isUploading, + error, + + // Actions + fetchUserResults, + fetchLeaderboard, + loadUserData, + submitRun, + clearCache, + refreshData, + } +}) diff --git a/polylan_submitter/static_source/vite/assets/RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js b/polylan_submitter/static_source/vite/assets/RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js deleted file mode 100644 index 1b4bf64..0000000 --- a/polylan_submitter/static_source/vite/assets/RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js +++ /dev/null @@ -1 +0,0 @@ -import{k as t,l as a,p as n,v as s}from"./style-CSeMeQaG.js";const c={key:0,class:"flex justify-center"},k={key:0,class:"badge badge-warning badge-lg"},d={key:1,class:"badge badge-lg"},l={key:2,class:"badge badge-lg"},o={key:3,class:"badge badge-lg"},g={key:1,class:"text-2xl text-base-content/50"},y=t({__name:"RankBadge",props:{rank:{}},setup(e){return(i,r)=>e.rank!==null?(n(),a("div",c,[e.rank===1?(n(),a("span",k," šŸ† #"+s(e.rank),1)):e.rank===2?(n(),a("span",d," 🄈 #"+s(e.rank),1)):e.rank===3?(n(),a("span",l," šŸ„‰ #"+s(e.rank),1)):(n(),a("span",o," #"+s(e.rank),1))])):(n(),a("div",g," No rank yet "))}});export{y as _}; diff --git a/polylan_submitter/static_source/vite/assets/home-SJcM6NSq.js b/polylan_submitter/static_source/vite/assets/home-De93wAWA.js similarity index 65% rename from polylan_submitter/static_source/vite/assets/home-SJcM6NSq.js rename to polylan_submitter/static_source/vite/assets/home-De93wAWA.js index c8e0e0f..b7ac3ed 100644 --- a/polylan_submitter/static_source/vite/assets/home-SJcM6NSq.js +++ b/polylan_submitter/static_source/vite/assets/home-De93wAWA.js @@ -1 +1 @@ -import{k as v,r as l,I as g,l as o,p as r,s as e,B as x,F as f,y as h,v as y,x as _,O as w}from"./style-CSeMeQaG.js";import{g as k}from"./sdk.gen-CMTwTM_A.js";const j={class:"min-h-screen bg-base-300 flex items-center justify-center px-4"},S={class:"w-full max-w-6xl"},C={key:0,class:"flex justify-center py-20"},E={key:1,class:"grid grid-cols-1 md:grid-cols-2 gap-8"},B=["onClick"],N={class:"relative h-60 bg-base-300 overflow-hidden"},$=["src","alt","onError"],A={key:1,class:"w-full h-full bg-gradient-to-br from-blue-600 to-blue-400 flex items-center justify-center text-white"},I={class:"card-body"},L={class:"card-title text-2xl"},P=v({__name:"Home",setup(F){const i=l(),n=l(!0),d=l(new Set),u=s=>`https://cdn.akamai.steamstatic.com/steam/apps/${s}/header.jpg`,b=s=>{d.value.add(s)},c=s=>{window.location.href=s};return g(async()=>{const s=await k();s.data&&(i.value=s.data),n.value=!1}),(s,t)=>(r(),o("div",j,[e("div",S,[t[6]||(t[6]=e("div",{class:"text-center mb-12"},[e("h1",{class:"text-5xl font-bold mb-4"},"PolyLAN Submitter"),e("p",{class:"text-xl text-base-content/70"}," Choose a game and submit your best solutions ")],-1)),n.value?(r(),o("div",C,[...t[1]||(t[1]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(r(),o("div",E,[e("div",{onClick:t[0]||(t[0]=a=>c("/market")),class:"card card-xl bg-base-200 shadow-xl hover:shadow-2xl transition-all cursor-pointer transform hover:-translate-y-2 hover:scale-[1.05] hover:bg-base-100 overflow-hidden"},[...t[2]||(t[2]=[x('

Market

Place your bets and compete

',2)])]),(r(!0),o(f,null,h(i.value,a=>(r(),o("div",{key:a.steam_app_id,onClick:p=>c(a.path),class:"card card-xl bg-base-200 shadow-xl hover:shadow-2xl transition-all cursor-pointer transform hover:-translate-y-2 hover:scale-[1.05] hover:bg-base-100 overflow-hidden"},[e("figure",N,[d.value.has(a.steam_app_id)?(r(),o("div",A,[...t[3]||(t[3]=[e("i",{class:"mdi mdi-gamepad-variant text-5xl"},null,-1)])])):(r(),o("img",{key:0,src:u(a.steam_app_id),alt:a.name,onError:p=>b(a.steam_app_id),class:"w-full h-full object-cover"},null,40,$)),t[4]||(t[4]=e("div",{class:"absolute inset-0 bg-black/30 group-hover:bg-black/20 transition-colors"},null,-1))]),e("div",I,[e("h2",L,y(a.name),1),t[5]||(t[5]=e("div",{class:"card-actions justify-end mt-4"},[e("button",{class:"btn btn-primary"},[e("i",{class:"mdi mdi-arrow-right mr-2"}),_(" Submit results ")])],-1))])],8,B))),128))])),t[7]||(t[7]=e("div",{class:"text-center mt-12 text-base-content/50"},[e("p",null,"Select a game above to begin submitting")],-1))])]))}}),m="#app",V=document.querySelector(m),D=w(P,{...V?.dataset});D.mount(m); +import{d as v,r as l,q as g,a as o,o as r,b as e,j as f,F as x,g as h,t as y,f as _,E as w}from"./style-CCc0RrA9.js";import{g as k}from"./sdk.gen-CMTwTM_A.js";const j={class:"min-h-screen bg-base-300 flex items-center justify-center px-4"},S={class:"w-full max-w-6xl"},E={key:0,class:"flex justify-center py-20"},C={key:1,class:"grid grid-cols-1 md:grid-cols-2 gap-8"},N=["onClick"],$={class:"relative h-60 bg-base-300 overflow-hidden"},A=["src","alt","onError"],B={key:1,class:"w-full h-full bg-gradient-to-br from-blue-600 to-blue-400 flex items-center justify-center text-white"},L={class:"card-body"},P={class:"card-title text-2xl"},V=v({__name:"Home",setup(F){const i=l(),n=l(!0),d=l(new Set),u=s=>`https://cdn.akamai.steamstatic.com/steam/apps/${s}/header.jpg`,b=s=>{d.value.add(s)},c=s=>{window.location.href=s};return g(async()=>{const s=await k();s.data&&(i.value=s.data),n.value=!1}),(s,t)=>(r(),o("div",j,[e("div",S,[t[6]||(t[6]=e("div",{class:"text-center mb-12"},[e("h1",{class:"text-5xl font-bold mb-4"},"PolyLAN Submitter"),e("p",{class:"text-xl text-base-content/70"}," Choose a game and submit your best solutions ")],-1)),n.value?(r(),o("div",E,[...t[1]||(t[1]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(r(),o("div",C,[e("div",{onClick:t[0]||(t[0]=a=>c("/market")),class:"card card-xl bg-base-200 shadow-xl hover:shadow-2xl transition-all cursor-pointer transform hover:-translate-y-2 hover:scale-[1.05] hover:bg-base-100 overflow-hidden"},[...t[2]||(t[2]=[f('

Market

Place your bets and compete

',2)])]),(r(!0),o(x,null,h(i.value,a=>(r(),o("div",{key:a.steam_app_id,onClick:p=>c(a.path),class:"card card-xl bg-base-200 shadow-xl hover:shadow-2xl transition-all cursor-pointer transform hover:-translate-y-2 hover:scale-[1.05] hover:bg-base-100 overflow-hidden"},[e("figure",$,[d.value.has(a.steam_app_id)?(r(),o("div",B,[...t[3]||(t[3]=[e("i",{class:"mdi mdi-gamepad-variant text-5xl"},null,-1)])])):(r(),o("img",{key:0,src:u(a.steam_app_id),alt:a.name,onError:p=>b(a.steam_app_id),class:"w-full h-full object-cover"},null,40,A)),t[4]||(t[4]=e("div",{class:"absolute inset-0 bg-black/30 group-hover:bg-black/20 transition-colors"},null,-1))]),e("div",L,[e("h2",P,y(a.name),1),t[5]||(t[5]=e("div",{class:"card-actions justify-end mt-4"},[e("button",{class:"btn btn-primary"},[e("i",{class:"mdi mdi-arrow-right mr-2"}),_(" Submit results ")])],-1))])],8,N))),128))])),t[7]||(t[7]=e("div",{class:"text-center mt-12 text-base-content/50"},[e("p",null,"Select a game above to begin submitting")],-1))])]))}}),m="#app",q=document.querySelector(m),D=w(V,{...q?.dataset});D.mount(m); diff --git a/polylan_submitter/static_source/vite/assets/index-B10U1JZR.js b/polylan_submitter/static_source/vite/assets/index-B10U1JZR.js new file mode 100644 index 0000000..3524a9b --- /dev/null +++ b/polylan_submitter/static_source/vite/assets/index-B10U1JZR.js @@ -0,0 +1,5 @@ +import{H as K,r as V,I as q,J as z,c as Q,y as p,K as F,L as st,M as nt,N as ot,O as ct,B as rt,C as at,w as ut,h as ft,P as lt,d as it,a as m,o as j,t as E}from"./style-CCc0RrA9.js";/*! + * pinia v3.0.3 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let U;const I=t=>U=t,X=Symbol();function B(t){return t&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"&&typeof t.toJSON!="function"}var R;(function(t){t.direct="direct",t.patchObject="patch object",t.patchFunction="patch function"})(R||(R={}));function ht(){const t=K(!0),n=t.run(()=>V({}));let s=[],e=[];const r=q({install(a){I(r),r._a=a,a.provide(X,r),a.config.globalProperties.$pinia=r,e.forEach(u=>s.push(u)),e=[]},use(a){return this._a?s.push(a):e.push(a),this},_p:s,_a:null,_e:t,_s:new Map,state:n});return r}const Y=()=>{};function D(t,n,s,e=Y){t.push(n);const r=()=>{const a=t.indexOf(n);a>-1&&(t.splice(a,1),e())};return!s&&rt()&&at(r),r}function x(t,...n){t.slice().forEach(s=>{s(...n)})}const bt=t=>t(),J=Symbol(),N=Symbol();function W(t,n){t instanceof Map&&n instanceof Map?n.forEach((s,e)=>t.set(e,s)):t instanceof Set&&n instanceof Set&&n.forEach(t.add,t);for(const s in n){if(!n.hasOwnProperty(s))continue;const e=n[s],r=t[s];B(r)&&B(e)&&t.hasOwnProperty(s)&&!p(e)&&!F(e)?t[s]=W(r,e):t[s]=e}return t}const yt=Symbol();function dt(t){return!B(t)||!Object.prototype.hasOwnProperty.call(t,yt)}const{assign:h}=Object;function St(t){return!!(p(t)&&t.effect)}function vt(t,n,s,e){const{state:r,actions:a,getters:u}=n,C=s.state.value[t];let y;function b(){C||(s.state.value[t]=r?r():{});const d=lt(s.state.value[t]);return h(d,a,Object.keys(u||{}).reduce((S,v)=>(S[v]=q(Q(()=>{I(s);const g=s._s.get(t);return u[v].call(g,g)})),S),{}))}return y=Z(t,b,n,s,e,!0),y}function Z(t,n,s={},e,r,a){let u;const C=h({actions:{}},s),y={deep:!0};let b,d,S=[],v=[],g;const k=e.state.value[t];!a&&!k&&(e.state.value[t]={}),V({});let H;function M(c){let o;b=d=!1,typeof c=="function"?(c(e.state.value[t]),o={type:R.patchFunction,storeId:t,events:g}):(W(e.state.value[t],c),o={type:R.patchObject,payload:c,storeId:t,events:g});const f=H=Symbol();ft().then(()=>{H===f&&(b=!0)}),d=!0,x(S,o,e.state.value[t])}const G=a?function(){const{state:o}=s,f=o?o():{};this.$patch(_=>{h(_,f)})}:Y;function $(){u.stop(),S=[],v=[],e._s.delete(t)}const A=(c,o="")=>{if(J in c)return c[N]=o,c;const f=function(){I(e);const _=Array.from(arguments),P=[],L=[];function tt(l){P.push(l)}function et(l){L.push(l)}x(v,{args:_,name:f[N],store:i,after:tt,onError:et});let w;try{w=c.apply(this&&this.$id===t?this:i,_)}catch(l){throw x(L,l),l}return w instanceof Promise?w.then(l=>(x(P,l),l)).catch(l=>(x(L,l),Promise.reject(l))):(x(P,w),w)};return f[J]=!0,f[N]=o,f},T={_p:e,$id:t,$onAction:D.bind(null,v),$patch:M,$reset:G,$subscribe(c,o={}){const f=D(S,c,o.detached,()=>_()),_=u.run(()=>ut(()=>e.state.value[t],P=>{(o.flush==="sync"?d:b)&&c({storeId:t,type:R.direct,events:g},P)},h({},y,o)));return f},$dispose:$},i=ct(T);e._s.set(t,i);const O=(e._a&&e._a.runWithContext||bt)(()=>e._e.run(()=>(u=K()).run(()=>n({action:A}))));for(const c in O){const o=O[c];if(p(o)&&!St(o)||F(o))a||(k&&dt(o)&&(p(o)?o.value=k[c]:W(o,k[c])),e.state.value[t][c]=o);else if(typeof o=="function"){const f=A(o,c);O[c]=f,C.actions[c]=o}}return h(i,O),h(z(i),O),Object.defineProperty(i,"$state",{get:()=>e.state.value[t],set:c=>{M(o=>{h(o,c)})}}),e._p.forEach(c=>{h(i,u.run(()=>c({store:i,app:e._a,pinia:e,options:C})))}),k&&a&&s.hydrate&&s.hydrate(i.$state,k),b=!0,d=!0,i}/*! #__NO_SIDE_EFFECTS__ */function Pt(t,n,s){let e;const r=typeof n=="function";e=r?s:n;function a(u,C){const y=ot();return u=u||(y?nt(X,null):null),u&&I(u),u=U,u._s.has(t)||(r?Z(t,n,e,u):vt(t,e,u)),u._s.get(t)}return a.$id=t,a}function wt(t){const n=z(t),s={};for(const e in n){const r=n[e];r.effect?s[e]=Q({get:()=>t[e],set(a){t[e]=a}}):(p(r)||F(r))&&(s[e]=st(t,e))}return s}const gt={key:0,class:"flex justify-center"},kt={key:0,class:"badge badge-warning badge-lg"},_t={key:1,class:"badge badge-lg"},mt={key:2,class:"badge badge-lg"},jt={key:3,class:"badge badge-lg"},xt={key:1,class:"text-2xl text-base-content/50"},Rt=it({__name:"RankBadge",props:{rank:{}},setup(t){return(n,s)=>t.rank!==null?(j(),m("div",gt,[t.rank===1?(j(),m("span",kt," šŸ† #"+E(t.rank),1)):t.rank===2?(j(),m("span",_t," 🄈 #"+E(t.rank),1)):t.rank===3?(j(),m("span",mt," šŸ„‰ #"+E(t.rank),1)):(j(),m("span",jt," #"+E(t.rank),1))])):(j(),m("div",xt," No rank yet "))}}),pt=ht();export{Rt as _,Pt as d,pt as p,wt as s}; diff --git a/polylan_submitter/static_source/vite/assets/noita-BBUDcHwQ.js b/polylan_submitter/static_source/vite/assets/noita-BBUDcHwQ.js new file mode 100644 index 0000000..eb759d4 --- /dev/null +++ b/polylan_submitter/static_source/vite/assets/noita-BBUDcHwQ.js @@ -0,0 +1,22 @@ +import{r as J,y as st,x as lt,w as ut,G as at,u as T,d as gt,c as Te,q as dt,a as H,o as L,b as p,f as K,e as Q,t as O,l as Be,F as ue,g as de,n as ne,E as ct}from"./style-CCc0RrA9.js";import{d as ft,s as pt,_ as qe,p as mt}from"./index-B10U1JZR.js";function ht(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _e={exports:{}},vt=_e.exports,Ue;function St(){return Ue||(Ue=1,(function(e,o){(function(t,n){e.exports=n()})(vt,(function(){var t=1e3,n=6e4,r=36e5,i="millisecond",s="second",u="minute",a="hour",d="day",f="week",h="month",g="quarter",l="year",c="date",m="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,G={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(V){var C=["th","st","nd","rd"],S=V%100;return"["+V+(C[(S-20)%10]||C[S]||C[0])+"]"}},A=function(V,C,S){var _=String(V);return!_||_.length>=C?V:""+Array(C+1-_.length).join(S)+V},N={s:A,z:function(V){var C=-V.utcOffset(),S=Math.abs(C),_=Math.floor(S/60),w=S%60;return(C<=0?"+":"-")+A(_,2,"0")+":"+A(w,2,"0")},m:function V(C,S){if(C.date()1)return V(D[0])}else{var k=C.name;B[k]=C,w=k}return!_&&w&&(b=w),w||!_&&b},I=function(V,C){if(v(V))return V.clone();var S=typeof C=="object"?C:{};return S.date=V,S.args=arguments,new me(S)},E=N;E.l=R,E.i=v,E.w=function(V,C){return I(V,{locale:C.$L,utc:C.$u,x:C.$x,$offset:C.$offset})};var me=(function(){function V(S){this.$L=R(S.locale,null,!0),this.parse(S),this.$x=this.$x||S.x||{},this[F]=!0}var C=V.prototype;return C.parse=function(S){this.$d=(function(_){var w=_.date,P=_.utc;if(w===null)return new Date(NaN);if(E.u(w))return new Date;if(w instanceof Date)return new Date(w);if(typeof w=="string"&&!/Z$/i.test(w)){var D=w.match(y);if(D){var k=D[2]-1||0,z=(D[7]||"0").substring(0,3);return P?new Date(Date.UTC(D[1],k,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)):new Date(D[1],k,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)}}return new Date(w)})(S),this.init()},C.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},C.$utils=function(){return E},C.isValid=function(){return this.$d.toString()!==m},C.isSame=function(S,_){var w=I(S);return this.startOf(_)<=w&&w<=this.endOf(_)},C.isAfter=function(S,_){return I(S){const e=J({username:"Player",rank:null,score:0,runsSubmitted:0,deathsCount:0,isStaff:!1}),o=J([]),t=J([]),n=J(!1),r=J(!1),i=J(""),s=async()=>{try{const g=await fetch("/api/noita/results");if(!g.ok)throw new Error("Failed to fetch results");const l=await g.json();e.value.score=l.total_score,e.value.deathsCount=l.deaths_count,e.value.runsSubmitted=l.objectives.length,o.value=l.objectives}catch(g){i.value="Failed to fetch user results",console.error("Error fetching results:",g)}},u=async()=>{n.value=!0;try{const g=await fetch("/api/noita/leaderboard");if(!g.ok)throw new Error("Failed to fetch leaderboard");const l=await g.json();t.value=l.leaderboard;const c=t.value.find(m=>m.username===e.value.username);c&&(e.value.rank=c.rank,e.value.score=c.total_score,e.value.deathsCount=c.deaths_count)}catch(g){i.value="Failed to fetch leaderboard",console.error("Error fetching leaderboard:",g)}finally{n.value=!1}};return{userInfo:e,objectives:o,leaderboard:t,isLoadingLeaderboard:n,isUploading:r,error:i,fetchUserResults:s,fetchLeaderboard:u,loadUserData:async()=>{try{const g=await fetch("/api/user");if(g.ok){const l=await g.json();l.is_authenticated&&(e.value.username=l.username,e.value.isStaff=l.is_staff||!1)}}catch(g){console.error("Error fetching user info:",g)}await Promise.all([s(),u()])},submitRun:async g=>{if(g.length!==0){r.value=!0;try{for(const l of g){const c=new FormData;c.append("file",l);const m=await fetch("/api/noita/submit",{method:"POST",body:c});if(!m.ok){const M=await m.json();throw new Error(M.detail||"Unknown error")}const y=await m.json();console.log("Submission successful:",y)}await Promise.all([s(),u()])}catch(l){const c=l instanceof Error?l.message:"Unknown error";throw i.value=`Error submitting run: ${c}`,l}finally{r.value=!1}}},clearCache:async()=>{try{const g=await fetch("/api/cache/clear",{method:"POST"});if(!g.ok){const l=await g.json();throw new Error(l.detail||"Unknown error")}await Promise.all([s(),u()])}catch(g){const l=g instanceof Error?g.message:"Unknown error";throw i.value=`Error clearing cache: ${l}`,g}},refreshData:async()=>{await Promise.all([s(),u()])}}});/** + * table-core + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function _t(){return{accessor:(e,o)=>typeof e=="function"?{...o,accessorFn:e}:{...o,accessorKey:e},display:e=>e,group:e=>e}}function oe(e,o){return typeof e=="function"?e(o):e}function W(e,o){return t=>{o.setState(n=>({...n,[e]:oe(t,n[e])}))}}function Re(e){return e instanceof Function}function Rt(e){return Array.isArray(e)&&e.every(o=>typeof o=="number")}function $t(e,o){const t=[],n=r=>{r.forEach(i=>{t.push(i);const s=o(i);s!=null&&s.length&&n(s)})};return n(e),t}function $(e,o,t){let n=[],r;return i=>{let s;t.key&&t.debug&&(s=Date.now());const u=e(i);if(!(u.length!==n.length||u.some((f,h)=>n[h]!==f)))return r;n=u;let d;if(t.key&&t.debug&&(d=Date.now()),r=o(...u),t==null||t.onChange==null||t.onChange(r),t.key&&t.debug&&t!=null&&t.debug()){const f=Math.round((Date.now()-s)*100)/100,h=Math.round((Date.now()-d)*100)/100,g=h/16,l=(c,m)=>{for(c=String(c);c.length{var r;return(r=e?.debugAll)!=null?r:e[o]},key:!1,onChange:n}}function xt(e,o,t,n){const r=()=>{var s;return(s=i.getValue())!=null?s:e.options.renderFallbackValue},i={id:`${o.id}_${t.id}`,row:o,column:t,getValue:()=>o.getValue(n),renderValue:r,getContext:$(()=>[e,t,o,i],(s,u,a,d)=>({table:s,column:u,row:a,cell:d,getValue:d.getValue,renderValue:d.renderValue}),x(e.options,"debugCells"))};return e._features.forEach(s=>{s.createCell==null||s.createCell(i,t,o,e)},{}),i}function Ft(e,o,t,n){var r,i;const u={...e._getDefaultColumnDef(),...o},a=u.accessorKey;let d=(r=(i=u.id)!=null?i:a?typeof String.prototype.replaceAll=="function"?a.replaceAll(".","_"):a.replace(/\./g,"_"):void 0)!=null?r:typeof u.header=="string"?u.header:void 0,f;if(u.accessorFn?f=u.accessorFn:a&&(a.includes(".")?f=g=>{let l=g;for(const m of a.split(".")){var c;l=(c=l)==null?void 0:c[m]}return l}:f=g=>g[u.accessorKey]),!d)throw new Error;let h={id:`${String(d)}`,accessorFn:f,parent:n,depth:t,columnDef:u,columns:[],getFlatColumns:$(()=>[!0],()=>{var g;return[h,...(g=h.columns)==null?void 0:g.flatMap(l=>l.getFlatColumns())]},x(e.options,"debugColumns")),getLeafColumns:$(()=>[e._getOrderColumnsFn()],g=>{var l;if((l=h.columns)!=null&&l.length){let c=h.columns.flatMap(m=>m.getLeafColumns());return g(c)}return[h]},x(e.options,"debugColumns"))};for(const g of e._features)g.createColumn==null||g.createColumn(h,e);return h}const U="debugHeaders";function Ne(e,o,t){var n;let i={id:(n=t.id)!=null?n:o.id,column:o,index:t.index,isPlaceholder:!!t.isPlaceholder,placeholderId:t.placeholderId,depth:t.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const s=[],u=a=>{a.subHeaders&&a.subHeaders.length&&a.subHeaders.map(u),s.push(a)};return u(i),s},getContext:()=>({table:e,header:i,column:o})};return e._features.forEach(s=>{s.createHeader==null||s.createHeader(i,e)}),i}const yt={createTable:e=>{e.getHeaderGroups=$(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n,r)=>{var i,s;const u=(i=n?.map(h=>t.find(g=>g.id===h)).filter(Boolean))!=null?i:[],a=(s=r?.map(h=>t.find(g=>g.id===h)).filter(Boolean))!=null?s:[],d=t.filter(h=>!(n!=null&&n.includes(h.id))&&!(r!=null&&r.includes(h.id)));return ve(o,[...u,...d,...a],e)},x(e.options,U)),e.getCenterHeaderGroups=$(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n,r)=>(t=t.filter(i=>!(n!=null&&n.includes(i.id))&&!(r!=null&&r.includes(i.id))),ve(o,t,e,"center")),x(e.options,U)),e.getLeftHeaderGroups=$(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(o,t,n)=>{var r;const i=(r=n?.map(s=>t.find(u=>u.id===s)).filter(Boolean))!=null?r:[];return ve(o,i,e,"left")},x(e.options,U)),e.getRightHeaderGroups=$(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(o,t,n)=>{var r;const i=(r=n?.map(s=>t.find(u=>u.id===s)).filter(Boolean))!=null?r:[];return ve(o,i,e,"right")},x(e.options,U)),e.getFooterGroups=$(()=>[e.getHeaderGroups()],o=>[...o].reverse(),x(e.options,U)),e.getLeftFooterGroups=$(()=>[e.getLeftHeaderGroups()],o=>[...o].reverse(),x(e.options,U)),e.getCenterFooterGroups=$(()=>[e.getCenterHeaderGroups()],o=>[...o].reverse(),x(e.options,U)),e.getRightFooterGroups=$(()=>[e.getRightHeaderGroups()],o=>[...o].reverse(),x(e.options,U)),e.getFlatHeaders=$(()=>[e.getHeaderGroups()],o=>o.map(t=>t.headers).flat(),x(e.options,U)),e.getLeftFlatHeaders=$(()=>[e.getLeftHeaderGroups()],o=>o.map(t=>t.headers).flat(),x(e.options,U)),e.getCenterFlatHeaders=$(()=>[e.getCenterHeaderGroups()],o=>o.map(t=>t.headers).flat(),x(e.options,U)),e.getRightFlatHeaders=$(()=>[e.getRightHeaderGroups()],o=>o.map(t=>t.headers).flat(),x(e.options,U)),e.getCenterLeafHeaders=$(()=>[e.getCenterFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),x(e.options,U)),e.getLeftLeafHeaders=$(()=>[e.getLeftFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),x(e.options,U)),e.getRightLeafHeaders=$(()=>[e.getRightFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),x(e.options,U)),e.getLeafHeaders=$(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(o,t,n)=>{var r,i,s,u,a,d;return[...(r=(i=o[0])==null?void 0:i.headers)!=null?r:[],...(s=(u=t[0])==null?void 0:u.headers)!=null?s:[],...(a=(d=n[0])==null?void 0:d.headers)!=null?a:[]].map(f=>f.getLeafHeaders()).flat()},x(e.options,U))}};function ve(e,o,t,n){var r,i;let s=0;const u=function(g,l){l===void 0&&(l=1),s=Math.max(s,l),g.filter(c=>c.getIsVisible()).forEach(c=>{var m;(m=c.columns)!=null&&m.length&&u(c.columns,l+1)},0)};u(e);let a=[];const d=(g,l)=>{const c={depth:l,id:[n,`${l}`].filter(Boolean).join("_"),headers:[]},m=[];g.forEach(y=>{const M=[...m].reverse()[0],G=y.column.depth===c.depth;let A,N=!1;if(G&&y.column.parent?A=y.column.parent:(A=y.column,N=!0),M&&M?.column===A)M.subHeaders.push(y);else{const b=Ne(t,A,{id:[n,l,A.id,y?.id].filter(Boolean).join("_"),isPlaceholder:N,placeholderId:N?`${m.filter(B=>B.column===A).length}`:void 0,depth:l,index:m.length});b.subHeaders.push(y),m.push(b)}c.headers.push(y),y.headerGroup=c}),a.push(c),l>0&&d(m,l-1)},f=o.map((g,l)=>Ne(t,g,{depth:s,index:l}));d(f,s-1),a.reverse();const h=g=>g.filter(c=>c.column.getIsVisible()).map(c=>{let m=0,y=0,M=[0];c.subHeaders&&c.subHeaders.length?(M=[],h(c.subHeaders).forEach(A=>{let{colSpan:N,rowSpan:b}=A;m+=N,M.push(b)})):m=1;const G=Math.min(...M);return y=y+G,c.colSpan=m,c.rowSpan=y,{colSpan:m,rowSpan:y}});return h((r=(i=a[0])==null?void 0:i.headers)!=null?r:[]),a}const ke=(e,o,t,n,r,i,s)=>{let u={id:o,index:n,original:t,depth:r,parentId:s,_valuesCache:{},_uniqueValuesCache:{},getValue:a=>{if(u._valuesCache.hasOwnProperty(a))return u._valuesCache[a];const d=e.getColumn(a);if(d!=null&&d.accessorFn)return u._valuesCache[a]=d.accessorFn(u.original,n),u._valuesCache[a]},getUniqueValues:a=>{if(u._uniqueValuesCache.hasOwnProperty(a))return u._uniqueValuesCache[a];const d=e.getColumn(a);if(d!=null&&d.accessorFn)return d.columnDef.getUniqueValues?(u._uniqueValuesCache[a]=d.columnDef.getUniqueValues(u.original,n),u._uniqueValuesCache[a]):(u._uniqueValuesCache[a]=[u.getValue(a)],u._uniqueValuesCache[a])},renderValue:a=>{var d;return(d=u.getValue(a))!=null?d:e.options.renderFallbackValue},subRows:[],getLeafRows:()=>$t(u.subRows,a=>a.subRows),getParentRow:()=>u.parentId?e.getRow(u.parentId,!0):void 0,getParentRows:()=>{let a=[],d=u;for(;;){const f=d.getParentRow();if(!f)break;a.push(f),d=f}return a.reverse()},getAllCells:$(()=>[e.getAllLeafColumns()],a=>a.map(d=>xt(e,u,d,d.id)),x(e.options,"debugRows")),_getAllCellsByColumnId:$(()=>[u.getAllCells()],a=>a.reduce((d,f)=>(d[f.column.id]=f,d),{}),x(e.options,"debugRows"))};for(let a=0;a{e._getFacetedRowModel=o.options.getFacetedRowModel&&o.options.getFacetedRowModel(o,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():o.getPreFilteredRowModel(),e._getFacetedUniqueValues=o.options.getFacetedUniqueValues&&o.options.getFacetedUniqueValues(o,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=o.options.getFacetedMinMaxValues&&o.options.getFacetedMinMaxValues(o,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},Xe=(e,o,t)=>{var n,r;const i=t==null||(n=t.toString())==null?void 0:n.toLowerCase();return!!(!((r=e.getValue(o))==null||(r=r.toString())==null||(r=r.toLowerCase())==null)&&r.includes(i))};Xe.autoRemove=e=>Z(e);const Ke=(e,o,t)=>{var n;return!!(!((n=e.getValue(o))==null||(n=n.toString())==null)&&n.includes(t))};Ke.autoRemove=e=>Z(e);const Je=(e,o,t)=>{var n;return((n=e.getValue(o))==null||(n=n.toString())==null?void 0:n.toLowerCase())===t?.toLowerCase()};Je.autoRemove=e=>Z(e);const Ze=(e,o,t)=>{var n;return(n=e.getValue(o))==null?void 0:n.includes(t)};Ze.autoRemove=e=>Z(e);const Qe=(e,o,t)=>!t.some(n=>{var r;return!((r=e.getValue(o))!=null&&r.includes(n))});Qe.autoRemove=e=>Z(e)||!(e!=null&&e.length);const et=(e,o,t)=>t.some(n=>{var r;return(r=e.getValue(o))==null?void 0:r.includes(n)});et.autoRemove=e=>Z(e)||!(e!=null&&e.length);const tt=(e,o,t)=>e.getValue(o)===t;tt.autoRemove=e=>Z(e);const nt=(e,o,t)=>e.getValue(o)==t;nt.autoRemove=e=>Z(e);const be=(e,o,t)=>{let[n,r]=t;const i=e.getValue(o);return i>=n&&i<=r};be.resolveFilterValue=e=>{let[o,t]=e,n=typeof o!="number"?parseFloat(o):o,r=typeof t!="number"?parseFloat(t):t,i=o===null||Number.isNaN(n)?-1/0:n,s=t===null||Number.isNaN(r)?1/0:r;if(i>s){const u=i;i=s,s=u}return[i,s]};be.autoRemove=e=>Z(e)||Z(e[0])&&Z(e[1]);const ee={includesString:Xe,includesStringSensitive:Ke,equalsString:Je,arrIncludes:Ze,arrIncludesAll:Qe,arrIncludesSome:et,equals:tt,weakEquals:nt,inNumberRange:be};function Z(e){return e==null||e===""}const Vt={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:W("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,o)=>{e.getAutoFilterFn=()=>{const t=o.getCoreRowModel().flatRows[0],n=t?.getValue(e.id);return typeof n=="string"?ee.includesString:typeof n=="number"?ee.inNumberRange:typeof n=="boolean"||n!==null&&typeof n=="object"?ee.equals:Array.isArray(n)?ee.arrIncludes:ee.weakEquals},e.getFilterFn=()=>{var t,n;return Re(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(t=(n=o.options.filterFns)==null?void 0:n[e.columnDef.filterFn])!=null?t:ee[e.columnDef.filterFn]},e.getCanFilter=()=>{var t,n,r;return((t=e.columnDef.enableColumnFilter)!=null?t:!0)&&((n=o.options.enableColumnFilters)!=null?n:!0)&&((r=o.options.enableFilters)!=null?r:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var t;return(t=o.getState().columnFilters)==null||(t=t.find(n=>n.id===e.id))==null?void 0:t.value},e.getFilterIndex=()=>{var t,n;return(t=(n=o.getState().columnFilters)==null?void 0:n.findIndex(r=>r.id===e.id))!=null?t:-1},e.setFilterValue=t=>{o.setColumnFilters(n=>{const r=e.getFilterFn(),i=n?.find(f=>f.id===e.id),s=oe(t,i?i.value:void 0);if(Ye(r,s,e)){var u;return(u=n?.filter(f=>f.id!==e.id))!=null?u:[]}const a={id:e.id,value:s};if(i){var d;return(d=n?.map(f=>f.id===e.id?a:f))!=null?d:[]}return n!=null&&n.length?[...n,a]:[a]})}},createRow:(e,o)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=o=>{const t=e.getAllLeafColumns(),n=r=>{var i;return(i=oe(o,r))==null?void 0:i.filter(s=>{const u=t.find(a=>a.id===s.id);if(u){const a=u.getFilterFn();if(Ye(a,s.value,u))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(n)},e.resetColumnFilters=o=>{var t,n;e.setColumnFilters(o?[]:(t=(n=e.initialState)==null?void 0:n.columnFilters)!=null?t:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function Ye(e,o,t){return(e&&e.autoRemove?e.autoRemove(o,t):!1)||typeof o>"u"||typeof o=="string"&&!o}const Pt=(e,o,t)=>t.reduce((n,r)=>{const i=r.getValue(e);return n+(typeof i=="number"?i:0)},0),Dt=(e,o,t)=>{let n;return t.forEach(r=>{const i=r.getValue(e);i!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}),n},It=(e,o,t)=>{let n;return t.forEach(r=>{const i=r.getValue(e);i!=null&&(n=i)&&(n=i)}),n},Et=(e,o,t)=>{let n,r;return t.forEach(i=>{const s=i.getValue(e);s!=null&&(n===void 0?s>=s&&(n=r=s):(n>s&&(n=s),r{let t=0,n=0;if(o.forEach(r=>{let i=r.getValue(e);i!=null&&(i=+i)>=i&&(++t,n+=i)}),t)return n/t},Lt=(e,o)=>{if(!o.length)return;const t=o.map(i=>i.getValue(e));if(!Rt(t))return;if(t.length===1)return t[0];const n=Math.floor(t.length/2),r=t.sort((i,s)=>i-s);return t.length%2!==0?r[n]:(r[n-1]+r[n])/2},At=(e,o)=>Array.from(new Set(o.map(t=>t.getValue(e))).values()),Gt=(e,o)=>new Set(o.map(t=>t.getValue(e))).size,kt=(e,o)=>o.length,xe={sum:Pt,min:Dt,max:It,extent:Et,mean:Ht,median:Lt,unique:At,uniqueCount:Gt,count:kt},bt={getDefaultColumnDef:()=>({aggregatedCell:e=>{var o,t;return(o=(t=e.getValue())==null||t.toString==null?void 0:t.toString())!=null?o:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:W("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,o)=>{e.toggleGrouping=()=>{o.setGrouping(t=>t!=null&&t.includes(e.id)?t.filter(n=>n!==e.id):[...t??[],e.id])},e.getCanGroup=()=>{var t,n;return((t=e.columnDef.enableGrouping)!=null?t:!0)&&((n=o.options.enableGrouping)!=null?n:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var t;return(t=o.getState().grouping)==null?void 0:t.includes(e.id)},e.getGroupedIndex=()=>{var t;return(t=o.getState().grouping)==null?void 0:t.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const t=o.getCoreRowModel().flatRows[0],n=t?.getValue(e.id);if(typeof n=="number")return xe.sum;if(Object.prototype.toString.call(n)==="[object Date]")return xe.extent},e.getAggregationFn=()=>{var t,n;if(!e)throw new Error;return Re(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(t=(n=o.options.aggregationFns)==null?void 0:n[e.columnDef.aggregationFn])!=null?t:xe[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=o=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(o),e.resetGrouping=o=>{var t,n;e.setGrouping(o?[]:(t=(n=e.initialState)==null?void 0:n.grouping)!=null?t:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,o)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=t=>{if(e._groupingValuesCache.hasOwnProperty(t))return e._groupingValuesCache[t];const n=o.getColumn(t);return n!=null&&n.columnDef.getGroupingValue?(e._groupingValuesCache[t]=n.columnDef.getGroupingValue(e.original),e._groupingValuesCache[t]):e.getValue(t)},e._groupingValuesCache={}},createCell:(e,o,t,n)=>{e.getIsGrouped=()=>o.getIsGrouped()&&o.id===t.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&o.getIsGrouped(),e.getIsAggregated=()=>{var r;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((r=t.subRows)!=null&&r.length)}}};function zt(e,o,t){if(!(o!=null&&o.length)||!t)return e;const n=e.filter(i=>!o.includes(i.id));return t==="remove"?n:[...o.map(i=>e.find(s=>s.id===i)).filter(Boolean),...n]}const Ot={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:W("columnOrder",e)}),createColumn:(e,o)=>{e.getIndex=$(t=>[pe(o,t)],t=>t.findIndex(n=>n.id===e.id),x(o.options,"debugColumns")),e.getIsFirstColumn=t=>{var n;return((n=pe(o,t)[0])==null?void 0:n.id)===e.id},e.getIsLastColumn=t=>{var n;const r=pe(o,t);return((n=r[r.length-1])==null?void 0:n.id)===e.id}},createTable:e=>{e.setColumnOrder=o=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(o),e.resetColumnOrder=o=>{var t;e.setColumnOrder(o?[]:(t=e.initialState.columnOrder)!=null?t:[])},e._getOrderColumnsFn=$(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(o,t,n)=>r=>{let i=[];if(!(o!=null&&o.length))i=r;else{const s=[...o],u=[...r];for(;u.length&&s.length;){const a=s.shift(),d=u.findIndex(f=>f.id===a);d>-1&&i.push(u.splice(d,1)[0])}i=[...i,...u]}return zt(i,t,n)},x(e.options,"debugTable"))}},Fe=()=>({left:[],right:[]}),jt={getInitialState:e=>({columnPinning:Fe(),...e}),getDefaultOptions:e=>({onColumnPinningChange:W("columnPinning",e)}),createColumn:(e,o)=>{e.pin=t=>{const n=e.getLeafColumns().map(r=>r.id).filter(Boolean);o.setColumnPinning(r=>{var i,s;if(t==="right"){var u,a;return{left:((u=r?.left)!=null?u:[]).filter(h=>!(n!=null&&n.includes(h))),right:[...((a=r?.right)!=null?a:[]).filter(h=>!(n!=null&&n.includes(h))),...n]}}if(t==="left"){var d,f;return{left:[...((d=r?.left)!=null?d:[]).filter(h=>!(n!=null&&n.includes(h))),...n],right:((f=r?.right)!=null?f:[]).filter(h=>!(n!=null&&n.includes(h)))}}return{left:((i=r?.left)!=null?i:[]).filter(h=>!(n!=null&&n.includes(h))),right:((s=r?.right)!=null?s:[]).filter(h=>!(n!=null&&n.includes(h)))}})},e.getCanPin=()=>e.getLeafColumns().some(n=>{var r,i,s;return((r=n.columnDef.enablePinning)!=null?r:!0)&&((i=(s=o.options.enableColumnPinning)!=null?s:o.options.enablePinning)!=null?i:!0)}),e.getIsPinned=()=>{const t=e.getLeafColumns().map(u=>u.id),{left:n,right:r}=o.getState().columnPinning,i=t.some(u=>n?.includes(u)),s=t.some(u=>r?.includes(u));return i?"left":s?"right":!1},e.getPinnedIndex=()=>{var t,n;const r=e.getIsPinned();return r?(t=(n=o.getState().columnPinning)==null||(n=n[r])==null?void 0:n.indexOf(e.id))!=null?t:-1:0}},createRow:(e,o)=>{e.getCenterVisibleCells=$(()=>[e._getAllVisibleCells(),o.getState().columnPinning.left,o.getState().columnPinning.right],(t,n,r)=>{const i=[...n??[],...r??[]];return t.filter(s=>!i.includes(s.column.id))},x(o.options,"debugRows")),e.getLeftVisibleCells=$(()=>[e._getAllVisibleCells(),o.getState().columnPinning.left],(t,n)=>(n??[]).map(i=>t.find(s=>s.column.id===i)).filter(Boolean).map(i=>({...i,position:"left"})),x(o.options,"debugRows")),e.getRightVisibleCells=$(()=>[e._getAllVisibleCells(),o.getState().columnPinning.right],(t,n)=>(n??[]).map(i=>t.find(s=>s.column.id===i)).filter(Boolean).map(i=>({...i,position:"right"})),x(o.options,"debugRows"))},createTable:e=>{e.setColumnPinning=o=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(o),e.resetColumnPinning=o=>{var t,n;return e.setColumnPinning(o?Fe():(t=(n=e.initialState)==null?void 0:n.columnPinning)!=null?t:Fe())},e.getIsSomeColumnsPinned=o=>{var t;const n=e.getState().columnPinning;if(!o){var r,i;return!!((r=n.left)!=null&&r.length||(i=n.right)!=null&&i.length)}return!!((t=n[o])!=null&&t.length)},e.getLeftLeafColumns=$(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(o,t)=>(t??[]).map(n=>o.find(r=>r.id===n)).filter(Boolean),x(e.options,"debugColumns")),e.getRightLeafColumns=$(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(o,t)=>(t??[]).map(n=>o.find(r=>r.id===n)).filter(Boolean),x(e.options,"debugColumns")),e.getCenterLeafColumns=$(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n)=>{const r=[...t??[],...n??[]];return o.filter(i=>!r.includes(i.id))},x(e.options,"debugColumns"))}};function Tt(e){return e||(typeof document<"u"?document:null)}const Se={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},ye=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),Bt={getDefaultColumnDef:()=>Se,getInitialState:e=>({columnSizing:{},columnSizingInfo:ye(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:W("columnSizing",e),onColumnSizingInfoChange:W("columnSizingInfo",e)}),createColumn:(e,o)=>{e.getSize=()=>{var t,n,r;const i=o.getState().columnSizing[e.id];return Math.min(Math.max((t=e.columnDef.minSize)!=null?t:Se.minSize,(n=i??e.columnDef.size)!=null?n:Se.size),(r=e.columnDef.maxSize)!=null?r:Se.maxSize)},e.getStart=$(t=>[t,pe(o,t),o.getState().columnSizing],(t,n)=>n.slice(0,e.getIndex(t)).reduce((r,i)=>r+i.getSize(),0),x(o.options,"debugColumns")),e.getAfter=$(t=>[t,pe(o,t),o.getState().columnSizing],(t,n)=>n.slice(e.getIndex(t)+1).reduce((r,i)=>r+i.getSize(),0),x(o.options,"debugColumns")),e.resetSize=()=>{o.setColumnSizing(t=>{let{[e.id]:n,...r}=t;return r})},e.getCanResize=()=>{var t,n;return((t=e.columnDef.enableResizing)!=null?t:!0)&&((n=o.options.enableColumnResizing)!=null?n:!0)},e.getIsResizing=()=>o.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,o)=>{e.getSize=()=>{let t=0;const n=r=>{if(r.subHeaders.length)r.subHeaders.forEach(n);else{var i;t+=(i=r.column.getSize())!=null?i:0}};return n(e),t},e.getStart=()=>{if(e.index>0){const t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=t=>{const n=o.getColumn(e.column.id),r=n?.getCanResize();return i=>{if(!n||!r||(i.persist==null||i.persist(),Me(i)&&i.touches&&i.touches.length>1))return;const s=e.getSize(),u=e?e.getLeafHeaders().map(M=>[M.column.id,M.column.getSize()]):[[n.id,n.getSize()]],a=Me(i)?Math.round(i.touches[0].clientX):i.clientX,d={},f=(M,G)=>{typeof G=="number"&&(o.setColumnSizingInfo(A=>{var N,b;const B=o.options.columnResizeDirection==="rtl"?-1:1,F=(G-((N=A?.startOffset)!=null?N:0))*B,v=Math.max(F/((b=A?.startSize)!=null?b:0),-.999999);return A.columnSizingStart.forEach(R=>{let[I,E]=R;d[I]=Math.round(Math.max(E+E*v,0)*100)/100}),{...A,deltaOffset:F,deltaPercentage:v}}),(o.options.columnResizeMode==="onChange"||M==="end")&&o.setColumnSizing(A=>({...A,...d})))},h=M=>f("move",M),g=M=>{f("end",M),o.setColumnSizingInfo(G=>({...G,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},l=Tt(t),c={moveHandler:M=>h(M.clientX),upHandler:M=>{l?.removeEventListener("mousemove",c.moveHandler),l?.removeEventListener("mouseup",c.upHandler),g(M.clientX)}},m={moveHandler:M=>(M.cancelable&&(M.preventDefault(),M.stopPropagation()),h(M.touches[0].clientX),!1),upHandler:M=>{var G;l?.removeEventListener("touchmove",m.moveHandler),l?.removeEventListener("touchend",m.upHandler),M.cancelable&&(M.preventDefault(),M.stopPropagation()),g((G=M.touches[0])==null?void 0:G.clientX)}},y=qt()?{passive:!1}:!1;Me(i)?(l?.addEventListener("touchmove",m.moveHandler,y),l?.addEventListener("touchend",m.upHandler,y)):(l?.addEventListener("mousemove",c.moveHandler,y),l?.addEventListener("mouseup",c.upHandler,y)),o.setColumnSizingInfo(M=>({...M,startOffset:a,startSize:s,deltaOffset:0,deltaPercentage:0,columnSizingStart:u,isResizingColumn:n.id}))}}},createTable:e=>{e.setColumnSizing=o=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(o),e.setColumnSizingInfo=o=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(o),e.resetColumnSizing=o=>{var t;e.setColumnSizing(o?{}:(t=e.initialState.columnSizing)!=null?t:{})},e.resetHeaderSizeInfo=o=>{var t;e.setColumnSizingInfo(o?ye():(t=e.initialState.columnSizingInfo)!=null?t:ye())},e.getTotalSize=()=>{var o,t;return(o=(t=e.getHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getLeftTotalSize=()=>{var o,t;return(o=(t=e.getLeftHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getCenterTotalSize=()=>{var o,t;return(o=(t=e.getCenterHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getRightTotalSize=()=>{var o,t;return(o=(t=e.getRightHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0}}};let we=null;function qt(){if(typeof we=="boolean")return we;let e=!1;try{const o={get passive(){return e=!0,!1}},t=()=>{};window.addEventListener("test",t,o),window.removeEventListener("test",t)}catch{e=!1}return we=e,we}function Me(e){return e.type==="touchstart"}const Ut={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:W("columnVisibility",e)}),createColumn:(e,o)=>{e.toggleVisibility=t=>{e.getCanHide()&&o.setColumnVisibility(n=>({...n,[e.id]:t??!e.getIsVisible()}))},e.getIsVisible=()=>{var t,n;const r=e.columns;return(t=r.length?r.some(i=>i.getIsVisible()):(n=o.getState().columnVisibility)==null?void 0:n[e.id])!=null?t:!0},e.getCanHide=()=>{var t,n;return((t=e.columnDef.enableHiding)!=null?t:!0)&&((n=o.options.enableHiding)!=null?n:!0)},e.getToggleVisibilityHandler=()=>t=>{e.toggleVisibility==null||e.toggleVisibility(t.target.checked)}},createRow:(e,o)=>{e._getAllVisibleCells=$(()=>[e.getAllCells(),o.getState().columnVisibility],t=>t.filter(n=>n.column.getIsVisible()),x(o.options,"debugRows")),e.getVisibleCells=$(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(t,n,r)=>[...t,...n,...r],x(o.options,"debugRows"))},createTable:e=>{const o=(t,n)=>$(()=>[n(),n().filter(r=>r.getIsVisible()).map(r=>r.id).join("_")],r=>r.filter(i=>i.getIsVisible==null?void 0:i.getIsVisible()),x(e.options,"debugColumns"));e.getVisibleFlatColumns=o("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=o("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=o("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=o("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=o("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=t=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{var n;e.setColumnVisibility(t?{}:(n=e.initialState.columnVisibility)!=null?n:{})},e.toggleAllColumnsVisible=t=>{var n;t=(n=t)!=null?n:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((r,i)=>({...r,[i.id]:t||!(i.getCanHide!=null&&i.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(t=>!(t.getIsVisible!=null&&t.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(t=>t.getIsVisible==null?void 0:t.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>t=>{var n;e.toggleAllColumnsVisible((n=t.target)==null?void 0:n.checked)}}};function pe(e,o){return o?o==="center"?e.getCenterVisibleLeafColumns():o==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const Nt={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},Yt={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:W("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:o=>{var t;const n=(t=e.getCoreRowModel().flatRows[0])==null||(t=t._getAllCellsByColumnId()[o.id])==null?void 0:t.getValue();return typeof n=="string"||typeof n=="number"}}),createColumn:(e,o)=>{e.getCanGlobalFilter=()=>{var t,n,r,i;return((t=e.columnDef.enableGlobalFilter)!=null?t:!0)&&((n=o.options.enableGlobalFilter)!=null?n:!0)&&((r=o.options.enableFilters)!=null?r:!0)&&((i=o.options.getColumnCanGlobalFilter==null?void 0:o.options.getColumnCanGlobalFilter(e))!=null?i:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>ee.includesString,e.getGlobalFilterFn=()=>{var o,t;const{globalFilterFn:n}=e.options;return Re(n)?n:n==="auto"?e.getGlobalAutoFilterFn():(o=(t=e.options.filterFns)==null?void 0:t[n])!=null?o:ee[n]},e.setGlobalFilter=o=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(o)},e.resetGlobalFilter=o=>{e.setGlobalFilter(o?void 0:e.initialState.globalFilter)}}},Wt={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:W("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let o=!1,t=!1;e._autoResetExpanded=()=>{var n,r;if(!o){e._queue(()=>{o=!0});return}if((n=(r=e.options.autoResetAll)!=null?r:e.options.autoResetExpanded)!=null?n:!e.options.manualExpanding){if(t)return;t=!0,e._queue(()=>{e.resetExpanded(),t=!1})}},e.setExpanded=n=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(n),e.toggleAllRowsExpanded=n=>{n??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=n=>{var r,i;e.setExpanded(n?{}:(r=(i=e.initialState)==null?void 0:i.expanded)!=null?r:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(n=>n.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>n=>{n.persist==null||n.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const n=e.getState().expanded;return n===!0||Object.values(n).some(Boolean)},e.getIsAllRowsExpanded=()=>{const n=e.getState().expanded;return typeof n=="boolean"?n===!0:!(!Object.keys(n).length||e.getRowModel().flatRows.some(r=>!r.getIsExpanded()))},e.getExpandedDepth=()=>{let n=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(i=>{const s=i.split(".");n=Math.max(n,s.length)}),n},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,o)=>{e.toggleExpanded=t=>{o.setExpanded(n=>{var r;const i=n===!0?!0:!!(n!=null&&n[e.id]);let s={};if(n===!0?Object.keys(o.getRowModel().rowsById).forEach(u=>{s[u]=!0}):s=n,t=(r=t)!=null?r:!i,!i&&t)return{...s,[e.id]:!0};if(i&&!t){const{[e.id]:u,...a}=s;return a}return n})},e.getIsExpanded=()=>{var t;const n=o.getState().expanded;return!!((t=o.options.getIsRowExpanded==null?void 0:o.options.getIsRowExpanded(e))!=null?t:n===!0||n?.[e.id])},e.getCanExpand=()=>{var t,n,r;return(t=o.options.getRowCanExpand==null?void 0:o.options.getRowCanExpand(e))!=null?t:((n=o.options.enableExpanding)!=null?n:!0)&&!!((r=e.subRows)!=null&&r.length)},e.getIsAllParentsExpanded=()=>{let t=!0,n=e;for(;t&&n.parentId;)n=o.getRow(n.parentId,!0),t=n.getIsExpanded();return t},e.getToggleExpandedHandler=()=>{const t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},Ee=0,He=10,Ve=()=>({pageIndex:Ee,pageSize:He}),Xt={getInitialState:e=>({...e,pagination:{...Ve(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:W("pagination",e)}),createTable:e=>{let o=!1,t=!1;e._autoResetPageIndex=()=>{var n,r;if(!o){e._queue(()=>{o=!0});return}if((n=(r=e.options.autoResetAll)!=null?r:e.options.autoResetPageIndex)!=null?n:!e.options.manualPagination){if(t)return;t=!0,e._queue(()=>{e.resetPageIndex(),t=!1})}},e.setPagination=n=>{const r=i=>oe(n,i);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(r)},e.resetPagination=n=>{var r;e.setPagination(n?Ve():(r=e.initialState.pagination)!=null?r:Ve())},e.setPageIndex=n=>{e.setPagination(r=>{let i=oe(n,r.pageIndex);const s=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return i=Math.max(0,Math.min(i,s)),{...r,pageIndex:i}})},e.resetPageIndex=n=>{var r,i;e.setPageIndex(n?Ee:(r=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageIndex)!=null?r:Ee)},e.resetPageSize=n=>{var r,i;e.setPageSize(n?He:(r=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageSize)!=null?r:He)},e.setPageSize=n=>{e.setPagination(r=>{const i=Math.max(1,oe(n,r.pageSize)),s=r.pageSize*r.pageIndex,u=Math.floor(s/i);return{...r,pageIndex:u,pageSize:i}})},e.setPageCount=n=>e.setPagination(r=>{var i;let s=oe(n,(i=e.options.pageCount)!=null?i:-1);return typeof s=="number"&&(s=Math.max(-1,s)),{...r,pageCount:s}}),e.getPageOptions=$(()=>[e.getPageCount()],n=>{let r=[];return n&&n>0&&(r=[...new Array(n)].fill(null).map((i,s)=>s)),r},x(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:n}=e.getState().pagination,r=e.getPageCount();return r===-1?!0:r===0?!1:ne.setPageIndex(n=>n-1),e.nextPage=()=>e.setPageIndex(n=>n+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var n;return(n=e.options.pageCount)!=null?n:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var n;return(n=e.options.rowCount)!=null?n:e.getPrePaginationRowModel().rows.length}}},Pe=()=>({top:[],bottom:[]}),Kt={getInitialState:e=>({rowPinning:Pe(),...e}),getDefaultOptions:e=>({onRowPinningChange:W("rowPinning",e)}),createRow:(e,o)=>{e.pin=(t,n,r)=>{const i=n?e.getLeafRows().map(a=>{let{id:d}=a;return d}):[],s=r?e.getParentRows().map(a=>{let{id:d}=a;return d}):[],u=new Set([...s,e.id,...i]);o.setRowPinning(a=>{var d,f;if(t==="bottom"){var h,g;return{top:((h=a?.top)!=null?h:[]).filter(m=>!(u!=null&&u.has(m))),bottom:[...((g=a?.bottom)!=null?g:[]).filter(m=>!(u!=null&&u.has(m))),...Array.from(u)]}}if(t==="top"){var l,c;return{top:[...((l=a?.top)!=null?l:[]).filter(m=>!(u!=null&&u.has(m))),...Array.from(u)],bottom:((c=a?.bottom)!=null?c:[]).filter(m=>!(u!=null&&u.has(m)))}}return{top:((d=a?.top)!=null?d:[]).filter(m=>!(u!=null&&u.has(m))),bottom:((f=a?.bottom)!=null?f:[]).filter(m=>!(u!=null&&u.has(m)))}})},e.getCanPin=()=>{var t;const{enableRowPinning:n,enablePinning:r}=o.options;return typeof n=="function"?n(e):(t=n??r)!=null?t:!0},e.getIsPinned=()=>{const t=[e.id],{top:n,bottom:r}=o.getState().rowPinning,i=t.some(u=>n?.includes(u)),s=t.some(u=>r?.includes(u));return i?"top":s?"bottom":!1},e.getPinnedIndex=()=>{var t,n;const r=e.getIsPinned();if(!r)return-1;const i=(t=r==="top"?o.getTopRows():o.getBottomRows())==null?void 0:t.map(s=>{let{id:u}=s;return u});return(n=i?.indexOf(e.id))!=null?n:-1}},createTable:e=>{e.setRowPinning=o=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(o),e.resetRowPinning=o=>{var t,n;return e.setRowPinning(o?Pe():(t=(n=e.initialState)==null?void 0:n.rowPinning)!=null?t:Pe())},e.getIsSomeRowsPinned=o=>{var t;const n=e.getState().rowPinning;if(!o){var r,i;return!!((r=n.top)!=null&&r.length||(i=n.bottom)!=null&&i.length)}return!!((t=n[o])!=null&&t.length)},e._getPinnedRows=(o,t,n)=>{var r;return((r=e.options.keepPinnedRows)==null||r?(t??[]).map(s=>{const u=e.getRow(s,!0);return u.getIsAllParentsExpanded()?u:null}):(t??[]).map(s=>o.find(u=>u.id===s))).filter(Boolean).map(s=>({...s,position:n}))},e.getTopRows=$(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(o,t)=>e._getPinnedRows(o,t,"top"),x(e.options,"debugRows")),e.getBottomRows=$(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(o,t)=>e._getPinnedRows(o,t,"bottom"),x(e.options,"debugRows")),e.getCenterRows=$(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(o,t,n)=>{const r=new Set([...t??[],...n??[]]);return o.filter(i=>!r.has(i.id))},x(e.options,"debugRows"))}},Jt={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:W("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=o=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(o),e.resetRowSelection=o=>{var t;return e.setRowSelection(o?{}:(t=e.initialState.rowSelection)!=null?t:{})},e.toggleAllRowsSelected=o=>{e.setRowSelection(t=>{o=typeof o<"u"?o:!e.getIsAllRowsSelected();const n={...t},r=e.getPreGroupedRowModel().flatRows;return o?r.forEach(i=>{i.getCanSelect()&&(n[i.id]=!0)}):r.forEach(i=>{delete n[i.id]}),n})},e.toggleAllPageRowsSelected=o=>e.setRowSelection(t=>{const n=typeof o<"u"?o:!e.getIsAllPageRowsSelected(),r={...t};return e.getRowModel().rows.forEach(i=>{Le(r,i.id,n,!0,e)}),r}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=$(()=>[e.getState().rowSelection,e.getCoreRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},x(e.options,"debugTable")),e.getFilteredSelectedRowModel=$(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},x(e.options,"debugTable")),e.getGroupedSelectedRowModel=$(()=>[e.getState().rowSelection,e.getSortedRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},x(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const o=e.getFilteredRowModel().flatRows,{rowSelection:t}=e.getState();let n=!!(o.length&&Object.keys(t).length);return n&&o.some(r=>r.getCanSelect()&&!t[r.id])&&(n=!1),n},e.getIsAllPageRowsSelected=()=>{const o=e.getPaginationRowModel().flatRows.filter(r=>r.getCanSelect()),{rowSelection:t}=e.getState();let n=!!o.length;return n&&o.some(r=>!t[r.id])&&(n=!1),n},e.getIsSomeRowsSelected=()=>{var o;const t=Object.keys((o=e.getState().rowSelection)!=null?o:{}).length;return t>0&&t{const o=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:o.filter(t=>t.getCanSelect()).some(t=>t.getIsSelected()||t.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>o=>{e.toggleAllRowsSelected(o.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>o=>{e.toggleAllPageRowsSelected(o.target.checked)}},createRow:(e,o)=>{e.toggleSelected=(t,n)=>{const r=e.getIsSelected();o.setRowSelection(i=>{var s;if(t=typeof t<"u"?t:!r,e.getCanSelect()&&r===t)return i;const u={...i};return Le(u,e.id,t,(s=n?.selectChildren)!=null?s:!0,o),u})},e.getIsSelected=()=>{const{rowSelection:t}=o.getState();return ze(e,t)},e.getIsSomeSelected=()=>{const{rowSelection:t}=o.getState();return Ae(e,t)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:t}=o.getState();return Ae(e,t)==="all"},e.getCanSelect=()=>{var t;return typeof o.options.enableRowSelection=="function"?o.options.enableRowSelection(e):(t=o.options.enableRowSelection)!=null?t:!0},e.getCanSelectSubRows=()=>{var t;return typeof o.options.enableSubRowSelection=="function"?o.options.enableSubRowSelection(e):(t=o.options.enableSubRowSelection)!=null?t:!0},e.getCanMultiSelect=()=>{var t;return typeof o.options.enableMultiRowSelection=="function"?o.options.enableMultiRowSelection(e):(t=o.options.enableMultiRowSelection)!=null?t:!0},e.getToggleSelectedHandler=()=>{const t=e.getCanSelect();return n=>{var r;t&&e.toggleSelected((r=n.target)==null?void 0:r.checked)}}}},Le=(e,o,t,n,r)=>{var i;const s=r.getRow(o,!0);t?(s.getCanMultiSelect()||Object.keys(e).forEach(u=>delete e[u]),s.getCanSelect()&&(e[o]=!0)):delete e[o],n&&(i=s.subRows)!=null&&i.length&&s.getCanSelectSubRows()&&s.subRows.forEach(u=>Le(e,u.id,t,n,r))};function De(e,o){const t=e.getState().rowSelection,n=[],r={},i=function(s,u){return s.map(a=>{var d;const f=ze(a,t);if(f&&(n.push(a),r[a.id]=a),(d=a.subRows)!=null&&d.length&&(a={...a,subRows:i(a.subRows)}),f)return a}).filter(Boolean)};return{rows:i(o.rows),flatRows:n,rowsById:r}}function ze(e,o){var t;return(t=o[e.id])!=null?t:!1}function Ae(e,o,t){var n;if(!((n=e.subRows)!=null&&n.length))return!1;let r=!0,i=!1;return e.subRows.forEach(s=>{if(!(i&&!r)&&(s.getCanSelect()&&(ze(s,o)?i=!0:r=!1),s.subRows&&s.subRows.length)){const u=Ae(s,o);u==="all"?i=!0:(u==="some"&&(i=!0),r=!1)}}),r?"all":i?"some":!1}const Ge=/([0-9]+)/gm,Zt=(e,o,t)=>ot(re(e.getValue(t)).toLowerCase(),re(o.getValue(t)).toLowerCase()),Qt=(e,o,t)=>ot(re(e.getValue(t)),re(o.getValue(t))),en=(e,o,t)=>Oe(re(e.getValue(t)).toLowerCase(),re(o.getValue(t)).toLowerCase()),tn=(e,o,t)=>Oe(re(e.getValue(t)),re(o.getValue(t))),nn=(e,o,t)=>{const n=e.getValue(t),r=o.getValue(t);return n>r?1:nOe(e.getValue(t),o.getValue(t));function Oe(e,o){return e===o?0:e>o?1:-1}function re(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function ot(e,o){const t=e.split(Ge).filter(Boolean),n=o.split(Ge).filter(Boolean);for(;t.length&&n.length;){const r=t.shift(),i=n.shift(),s=parseInt(r,10),u=parseInt(i,10),a=[s,u].sort();if(isNaN(a[0])){if(r>i)return 1;if(i>r)return-1;continue}if(isNaN(a[1]))return isNaN(s)?-1:1;if(s>u)return 1;if(u>s)return-1}return t.length-n.length}const ce={alphanumeric:Zt,alphanumericCaseSensitive:Qt,text:en,textCaseSensitive:tn,datetime:nn,basic:on},rn={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:W("sorting",e),isMultiSortEvent:o=>o.shiftKey}),createColumn:(e,o)=>{e.getAutoSortingFn=()=>{const t=o.getFilteredRowModel().flatRows.slice(10);let n=!1;for(const r of t){const i=r?.getValue(e.id);if(Object.prototype.toString.call(i)==="[object Date]")return ce.datetime;if(typeof i=="string"&&(n=!0,i.split(Ge).length>1))return ce.alphanumeric}return n?ce.text:ce.basic},e.getAutoSortDir=()=>{const t=o.getFilteredRowModel().flatRows[0];return typeof t?.getValue(e.id)=="string"?"asc":"desc"},e.getSortingFn=()=>{var t,n;if(!e)throw new Error;return Re(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(t=(n=o.options.sortingFns)==null?void 0:n[e.columnDef.sortingFn])!=null?t:ce[e.columnDef.sortingFn]},e.toggleSorting=(t,n)=>{const r=e.getNextSortingOrder(),i=typeof t<"u"&&t!==null;o.setSorting(s=>{const u=s?.find(l=>l.id===e.id),a=s?.findIndex(l=>l.id===e.id);let d=[],f,h=i?t:r==="desc";if(s!=null&&s.length&&e.getCanMultiSort()&&n?u?f="toggle":f="add":s!=null&&s.length&&a!==s.length-1?f="replace":u?f="toggle":f="replace",f==="toggle"&&(i||r||(f="remove")),f==="add"){var g;d=[...s,{id:e.id,desc:h}],d.splice(0,d.length-((g=o.options.maxMultiSortColCount)!=null?g:Number.MAX_SAFE_INTEGER))}else f==="toggle"?d=s.map(l=>l.id===e.id?{...l,desc:h}:l):f==="remove"?d=s.filter(l=>l.id!==e.id):d=[{id:e.id,desc:h}];return d})},e.getFirstSortDir=()=>{var t,n;return((t=(n=e.columnDef.sortDescFirst)!=null?n:o.options.sortDescFirst)!=null?t:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=t=>{var n,r;const i=e.getFirstSortDir(),s=e.getIsSorted();return s?s!==i&&((n=o.options.enableSortingRemoval)==null||n)&&(!(t&&(r=o.options.enableMultiRemove)!=null)||r)?!1:s==="desc"?"asc":"desc":i},e.getCanSort=()=>{var t,n;return((t=e.columnDef.enableSorting)!=null?t:!0)&&((n=o.options.enableSorting)!=null?n:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var t,n;return(t=(n=e.columnDef.enableMultiSort)!=null?n:o.options.enableMultiSort)!=null?t:!!e.accessorFn},e.getIsSorted=()=>{var t;const n=(t=o.getState().sorting)==null?void 0:t.find(r=>r.id===e.id);return n?n.desc?"desc":"asc":!1},e.getSortIndex=()=>{var t,n;return(t=(n=o.getState().sorting)==null?void 0:n.findIndex(r=>r.id===e.id))!=null?t:-1},e.clearSorting=()=>{o.setSorting(t=>t!=null&&t.length?t.filter(n=>n.id!==e.id):[])},e.getToggleSortingHandler=()=>{const t=e.getCanSort();return n=>{t&&(n.persist==null||n.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?o.options.isMultiSortEvent==null?void 0:o.options.isMultiSortEvent(n):!1))}}},createTable:e=>{e.setSorting=o=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(o),e.resetSorting=o=>{var t,n;e.setSorting(o?[]:(t=(n=e.initialState)==null?void 0:n.sorting)!=null?t:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},sn=[yt,Ut,Ot,jt,Mt,Vt,Nt,Yt,rn,bt,Wt,Xt,Kt,Jt,Bt];function ln(e){var o,t;const n=[...sn,...(o=e._features)!=null?o:[]];let r={_features:n};const i=r._features.reduce((g,l)=>Object.assign(g,l.getDefaultOptions==null?void 0:l.getDefaultOptions(r)),{}),s=g=>r.options.mergeOptions?r.options.mergeOptions(i,g):{...i,...g};let a={...{},...(t=e.initialState)!=null?t:{}};r._features.forEach(g=>{var l;a=(l=g.getInitialState==null?void 0:g.getInitialState(a))!=null?l:a});const d=[];let f=!1;const h={_features:n,options:{...i,...e},initialState:a,_queue:g=>{d.push(g),f||(f=!0,Promise.resolve().then(()=>{for(;d.length;)d.shift()();f=!1}).catch(l=>setTimeout(()=>{throw l})))},reset:()=>{r.setState(r.initialState)},setOptions:g=>{const l=oe(g,r.options);r.options=s(l)},getState:()=>r.options.state,setState:g=>{r.options.onStateChange==null||r.options.onStateChange(g)},_getRowId:(g,l,c)=>{var m;return(m=r.options.getRowId==null?void 0:r.options.getRowId(g,l,c))!=null?m:`${c?[c.id,l].join("."):l}`},getCoreRowModel:()=>(r._getCoreRowModel||(r._getCoreRowModel=r.options.getCoreRowModel(r)),r._getCoreRowModel()),getRowModel:()=>r.getPaginationRowModel(),getRow:(g,l)=>{let c=(l?r.getPrePaginationRowModel():r.getRowModel()).rowsById[g];if(!c&&(c=r.getCoreRowModel().rowsById[g],!c))throw new Error;return c},_getDefaultColumnDef:$(()=>[r.options.defaultColumn],g=>{var l;return g=(l=g)!=null?l:{},{header:c=>{const m=c.header.column.columnDef;return m.accessorKey?m.accessorKey:m.accessorFn?m.id:null},cell:c=>{var m,y;return(m=(y=c.renderValue())==null||y.toString==null?void 0:y.toString())!=null?m:null},...r._features.reduce((c,m)=>Object.assign(c,m.getDefaultColumnDef==null?void 0:m.getDefaultColumnDef()),{}),...g}},x(e,"debugColumns")),_getColumnDefs:()=>r.options.columns,getAllColumns:$(()=>[r._getColumnDefs()],g=>{const l=function(c,m,y){return y===void 0&&(y=0),c.map(M=>{const G=Ft(r,M,y,m),A=M;return G.columns=A.columns?l(A.columns,G,y+1):[],G})};return l(g)},x(e,"debugColumns")),getAllFlatColumns:$(()=>[r.getAllColumns()],g=>g.flatMap(l=>l.getFlatColumns()),x(e,"debugColumns")),_getAllFlatColumnsById:$(()=>[r.getAllFlatColumns()],g=>g.reduce((l,c)=>(l[c.id]=c,l),{}),x(e,"debugColumns")),getAllLeafColumns:$(()=>[r.getAllColumns(),r._getOrderColumnsFn()],(g,l)=>{let c=g.flatMap(m=>m.getLeafColumns());return l(c)},x(e,"debugColumns")),getColumn:g=>r._getAllFlatColumnsById()[g]};Object.assign(r,h);for(let g=0;g$(()=>[e.options.data],o=>{const t={rows:[],flatRows:[],rowsById:{}},n=function(r,i,s){i===void 0&&(i=0);const u=[];for(let d=0;de._autoResetPageIndex()))}function an(e,o,t){return t.options.filterFromLeafRows?gn(e,o,t):dn(e,o,t)}function gn(e,o,t){var n;const r=[],i={},s=(n=t.options.maxLeafRowFilterDepth)!=null?n:100,u=function(a,d){d===void 0&&(d=0);const f=[];for(let g=0;g$(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter],(o,t,n)=>{if(!o.rows.length||!(t!=null&&t.length)&&!n){for(let g=0;g{var l;const c=e.getColumn(g.id);if(!c)return;const m=c.getFilterFn();m&&r.push({id:g.id,filterFn:m,resolvedValue:(l=m.resolveFilterValue==null?void 0:m.resolveFilterValue(g.value))!=null?l:g.value})});const s=(t??[]).map(g=>g.id),u=e.getGlobalFilterFn(),a=e.getAllLeafColumns().filter(g=>g.getCanGlobalFilter());n&&u&&a.length&&(s.push("__global__"),a.forEach(g=>{var l;i.push({id:g.id,filterFn:u,resolvedValue:(l=u.resolveFilterValue==null?void 0:u.resolveFilterValue(n))!=null?l:n})}));let d,f;for(let g=0;g{l.columnFiltersMeta[m]=y})}if(i.length){for(let c=0;c{l.columnFiltersMeta[m]=y})){l.columnFilters.__global__=!0;break}}l.columnFilters.__global__!==!0&&(l.columnFilters.__global__=!1)}}const h=g=>{for(let l=0;le._autoResetPageIndex()))}function fn(){return e=>$(()=>[e.getState().sorting,e.getPreSortedRowModel()],(o,t)=>{if(!t.rows.length||!(o!=null&&o.length))return t;const n=e.getState().sorting,r=[],i=n.filter(a=>{var d;return(d=e.getColumn(a.id))==null?void 0:d.getCanSort()}),s={};i.forEach(a=>{const d=e.getColumn(a.id);d&&(s[a.id]={sortUndefined:d.columnDef.sortUndefined,invertSorting:d.columnDef.invertSorting,sortingFn:d.getSortingFn()})});const u=a=>{const d=a.map(f=>({...f}));return d.sort((f,h)=>{for(let l=0;l{var h;r.push(f),(h=f.subRows)!=null&&h.length&&(f.subRows=u(f.subRows))}),d};return{rows:u(t.rows),flatRows:r,rowsById:t.rowsById}},x(e.options,"debugTable","getSortedRowModel",()=>e._autoResetPageIndex()))}/** + * vue-table + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Ce(){return!0}const pn=Symbol("merge-proxy"),mn={get(e,o,t){return o===pn?t:e.get(o)},has(e,o){return e.has(o)},set:Ce,deleteProperty:Ce,getOwnPropertyDescriptor(e,o){return{configurable:!0,enumerable:!0,get(){return e.get(o)},set:Ce,deleteProperty:Ce}},ownKeys(e){return e.keys()}};function Ie(e){return"value"in e?e.value:e}function fe(){for(var e=arguments.length,o=new Array(e),t=0;t=0;r--){const i=Ie(o[r])[n];if(i!==void 0)return i}},has(n){for(let r=o.length-1;r>=0;r--)if(n in Ie(o[r]))return!0;return!1},keys(){const n=[];for(let r=0;r{},renderFallbackValue:null,mergeOptions(i,s){return o?{...i,...s}:fe(i,s)}},o?We(e):e),n=ln(t);if(o){const i=lt(e.data);ut(i,()=>{n.setState(s=>({...s,data:i.value}))},{immediate:!0})}const r=J(n.initialState);return at(()=>{n.setOptions(i=>{var s;const u=new Proxy({},{get:(a,d)=>r.value[d]});return fe(i,o?We(e):e,{state:fe(u,(s=e.state)!=null?s:{}),onStateChange:a=>{a instanceof Function?r.value=a(r.value):r.value=a,e.onStateChange==null||e.onStateChange(a)}})})}),n}const vn={class:"min-h-screen bg-base-200"},Sn={class:"container min-w-3/4 mx-auto px-4 py-8"},wn={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},Cn={class:"lg:col-span-1"},_n={class:"card bg-base-100 shadow-lg sticky top-8"},Rn={class:"card-body p-8"},$n={class:"text-center mb-8"},xn={class:"text-4xl font-bold mt-2"},Fn={key:0,class:"flex justify-center py-8"},yn={key:1,class:"space-y-6"},Mn={class:"text-center"},Vn={class:"text-center"},Pn={class:"text-3xl font-bold"},Dn={class:"text-center"},In={class:"text-3xl font-bold"},En={class:"text-center"},Hn={class:"text-3xl font-bold text-error"},Ln={class:"mt-6"},An={class:"overflow-x-auto"},Gn={class:"table table-sm w-full"},kn={class:"font-bold"},bn={class:"text-sm"},zn={key:0,class:"badge badge-primary badge-sm ml-1"},On={key:1,class:"badge badge-warning badge-sm ml-1"},jn={class:"text-right text-sm font-bold text-primary"},Tn={class:"text-right text-sm"},Bn={class:"text-right text-sm text-error"},qn={class:"lg:col-span-1"},Un={class:"card bg-base-100 shadow-lg"},Nn={class:"card-body"},Yn={for:"file-upload",class:"cursor-pointer flex flex-col items-center gap-3"},Wn={key:0,class:"mb-6"},Xn={class:"space-y-2"},Kn={class:"flex-1 min-w-0"},Jn={class:"font-medium truncate"},Zn={class:"text-xs text-base-content/70"},Qn=["onClick"],eo={class:"flex gap-3"},to=["disabled"],no={key:0,class:"mdi mdi-send mr-2"},oo={class:"card bg-base-100 shadow-lg mt-8"},ro={class:"card-body"},io={key:0,class:"text-center py-8"},so={key:1,class:"space-y-4"},lo=["value"],uo={class:"text-sm text-base-content/70"},ao={key:0,class:"overflow-x-auto"},go={class:"table table-zebra w-full"},co=["onClick"],fo={class:"flex items-center justify-between"},po={key:0},mo={key:1,class:"ml-auto"},ho=["href"],vo=["title"],So={key:1,class:"text-center py-8"},wo=gt({__name:"Noita",setup(e){const o=Ct(),{userInfo:t,objectives:n,leaderboard:r,isLoadingLeaderboard:i,isUploading:s}=pt(o),u=J([]),a=J(!1),d=_t(),f=J([]),h=J([]),g=F=>F?$e(F).format("MMM DD, YYYY HH:mm"):"",l=[d.accessor("objectiv_id",{header:"Objective ID",cell:F=>F.getValue()}),d.accessor("total_points",{header:"Your points",cell:F=>F.getValue()||0}),d.accessor("first_seen_at",{header:"First seen",cell:F=>g(F.getValue()),sortingFn:(F,v)=>{const R=$e(F.original.first_seen_at),I=$e(v.original.first_seen_at);return F.original.first_seen_at?v.original.first_seen_at?R.isBefore(I)?-1:R.isAfter(I)?1:0:F.original.first_seen_at?0:1:v.original.first_seen_at?1:0}}),d.accessor("seed",{header:"Seed",cell:F=>F.getValue()})],c=Te(()=>hn({get data(){return n.value},columns:l,state:{get sorting(){return f.value},get columnFilters(){return h.value}},onSortingChange:F=>{f.value=typeof F=="function"?F(f.value):F},onColumnFiltersChange:F=>{h.value=typeof F=="function"?F(h.value):F},getCoreRowModel:un(),getFilteredRowModel:cn(),getSortedRowModel:fn(),filterFns:{fuzzy:(F,v,R)=>{const I=F.getValue(v),E=R.toLowerCase();return v==="first_seen_at"?g(I).includes(E):String(I).toLowerCase().includes(E)}}})),m=Te(()=>c.value.getRowModel().rows),y=F=>{const v=F.target;v.files&&(u.value=Array.from(v.files))},M=F=>{F.preventDefault(),F.stopPropagation(),a.value=!0},G=F=>{F.preventDefault(),F.stopPropagation(),a.value=!1},A=F=>{F.preventDefault(),F.stopPropagation(),a.value=!1,F.dataTransfer?.files&&(u.value=Array.from(F.dataTransfer.files))},N=async()=>{if(u.value.length!==0)try{await o.submitRun(u.value),u.value=[],alert("Run submitted successfully!")}catch(F){console.error("Error submitting run:",F),alert("Error submitting run. Please try again.")}},b=()=>{window.location.href="/"},B=async()=>{try{await o.clearCache(),alert("Cache cleared successfully!")}catch(F){console.error("Error clearing cache:",F),alert("Error clearing cache. Please try again.")}};return dt(()=>{o.loadUserData()}),(F,v)=>(L(),H("div",vn,[p("div",{class:"navbar bg-base-100 shadow-lg"},[p("div",{class:"container min-w-3/4 mx-auto w-full flex items-center gap-4"},[p("button",{onClick:b,class:"btn btn-primary btn-sm"},[...v[1]||(v[1]=[p("i",{class:"mdi mdi-arrow-left"},null,-1),K(" Back ",-1)])]),v[2]||(v[2]=p("h1",{class:"text-xl font-bold"},"Noita Submitter",-1)),v[3]||(v[3]=p("div",{class:"flex-1"},null,-1)),v[4]||(v[4]=p("a",{href:"/api/docs",class:"btn btn-xs"},"API docs",-1)),v[5]||(v[5]=p("a",{href:"/admin",class:"btn btn-xs btn-warning"},"Admin panel",-1))])]),p("div",Sn,[p("div",wn,[p("div",Cn,[p("div",_n,[v[16]||(v[16]=p("div",{class:"bg-gradient-to-br from-purple-600 to-purple-400 p-8 text-white rounded-t-2xl"},[p("h2",{class:"text-3xl font-bold"},[p("i",{class:"mdi mdi-trophy text-3xl"}),K(" Your Ranking ")])],-1)),p("div",Rn,[p("div",$n,[v[6]||(v[6]=p("p",{class:"text-base text-base-content/70"},"Player",-1)),p("p",xn,O(T(t).username),1)]),v[15]||(v[15]=p("div",{class:"divider"},null,-1)),T(i)?(L(),H("div",Fn,[...v[7]||(v[7]=[p("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(L(),H("div",yn,[p("div",Mn,[v[8]||(v[8]=p("p",{class:"text-base text-base-content/70 mb-3"},"Current Rank",-1)),Be(qe,{rank:T(t).rank},null,8,["rank"])]),p("div",Vn,[v[9]||(v[9]=p("p",{class:"text-base text-base-content/70 mb-2"},"Total Score",-1)),p("p",Pn,O(T(t).score.toLocaleString()),1)]),p("div",Dn,[v[10]||(v[10]=p("p",{class:"text-base text-base-content/70 mb-2"},"Objectives Completed",-1)),p("p",In,O(T(t).runsSubmitted),1)]),p("div",En,[v[11]||(v[11]=p("p",{class:"text-base text-base-content/70 mb-2"},"Deaths",-1)),p("p",Hn,O(T(t).deathsCount),1)])])),p("div",Ln,[v[13]||(v[13]=p("h3",{class:"font-bold text-lg mb-3"},"Global Leaderboard",-1)),p("div",An,[p("table",Gn,[v[12]||(v[12]=p("thead",null,[p("tr",null,[p("th",null,"Rank"),p("th",null,"Player"),p("th",{class:"text-right"},"Score"),p("th",{class:"text-right"},"Objectives"),p("th",{class:"text-right"},"Deaths")])],-1)),p("tbody",null,[(L(!0),H(ue,null,de(T(r),R=>(L(),H("tr",{key:R.username,class:ne({"bg-primary/20":R.username===T(t).username})},[p("td",kn,[Be(qe,{rank:R.rank},null,8,["rank"])]),p("td",bn,[K(O(R.username)+" ",1),R.username===T(t).username?(L(),H("span",zn," You ")):Q("",!0),R.is_staff?(L(),H("span",On," admin ")):Q("",!0)]),p("td",jn,O(R.total_score.toLocaleString()),1),p("td",Tn,O(R.objectives_count),1),p("td",Bn,O(R.deaths_count),1)],2))),128))])])])]),T(t).isStaff?(L(),H("button",{key:2,onClick:B,class:"btn btn-error btn-sm w-full mt-3"},[...v[14]||(v[14]=[p("i",{class:"mdi mdi-cache-clear mr-1"},null,-1),K(" Clear Cache ",-1)])])):Q("",!0)])])]),p("div",qn,[p("div",Un,[p("div",Nn,[v[22]||(v[22]=p("h2",{class:"card-title text-2xl mb-6"},[p("i",{class:"mdi mdi-cloud-upload text-purple-500 mr-2"}),K(" Submit Your Run ")],-1)),p("div",{onDragover:M,onDragleave:G,onDrop:A,class:ne(["border-2 border-dashed rounded-lg p-8 text-center transition-colors cursor-pointer bg-base-200/50 mb-6",a.value?"border-primary bg-primary/10":"border-base-300 hover:border-primary"])},[p("input",{type:"file",multiple:"",onChange:y,class:"hidden",id:"file-upload",accept:"text/plain,text/x-log"},null,32),p("label",Yn,[p("i",{class:ne(["mdi text-4xl",a.value?"mdi-cloud-check text-primary":"mdi-file-upload text-base-content/50"])},null,2),v[17]||(v[17]=p("div",null,[p("p",{class:"font-semibold"},"Click to upload or drag and drop"),p("p",{class:"text-sm text-base-content/70"},[K("The log file "),p("code",null,"polylan_mod_log.txt")])],-1))])],34),u.value.length>0?(L(),H("div",Wn,[v[20]||(v[20]=p("p",{class:"font-semibold mb-3"},"Selected Files:",-1)),p("div",Xn,[(L(!0),H(ue,null,de(u.value,(R,I)=>(L(),H("div",{key:I,class:"flex items-center gap-3 bg-base-200 p-3 rounded-lg"},[v[19]||(v[19]=p("i",{class:"mdi mdi-file text-primary"},null,-1)),p("div",Kn,[p("p",Jn,O(R.name),1),p("p",Zn,O((R.size/1024/1024).toFixed(2))+" MB",1)]),p("button",{onClick:E=>u.value.splice(I,1),class:"btn btn-ghost btn-xs"},[...v[18]||(v[18]=[p("i",{class:"mdi mdi-close"},null,-1)])],8,Qn)]))),128))])])):Q("",!0),p("div",eo,[v[21]||(v[21]=p("label",{for:"file-upload",class:"btn btn-outline flex-1"},[p("i",{class:"mdi mdi-folder-open mr-2"}),K(" Choose Files ")],-1)),p("button",{onClick:N,disabled:u.value.length===0||T(s),class:ne(["btn btn-primary flex-1",{loading:T(s)}])},[T(s)?Q("",!0):(L(),H("i",no)),K(" "+O(T(s)?"Submitting...":"Submit Run"),1)],10,to)]),v[23]||(v[23]=p("p",{class:"text-xs text-base-content/70 text-center mt-4"}," Maximum file size: 256 MB per file ",-1))])]),p("div",oo,[p("div",ro,[v[27]||(v[27]=p("h2",{class:"card-title text-2xl mb-6"},[p("i",{class:"mdi mdi-view-list text-purple-500 mr-2"}),K(" Objectives ")],-1)),T(n).length===0?(L(),H("div",io,[...v[24]||(v[24]=[p("p",{class:"text-base-content/70 mb-2"},"No objectives completed yet",-1),p("p",{class:"text-sm text-base-content/50"},"Submit your runs to unlock objectives!",-1)])])):Q("",!0),T(n).length>0?(L(),H("div",so,[p("input",{value:h.value.find(R=>R.id==="objectiv_id")?.value??"",onInput:v[0]||(v[0]=R=>{const I=R.target;c.value.getColumn("objectiv_id")?.setFilterValue(I.value)}),type:"text",placeholder:"Search objectives...",class:"input input-bordered w-full"},null,40,lo),p("div",uo," Showing "+O(m.value.length)+" of "+O(T(n).length)+" objectives ",1),m.value.length>0?(L(),H("div",ao,[p("table",go,[p("thead",null,[p("tr",null,[(L(!0),H(ue,null,de(c.value.getHeaderGroups()[0]?.headers,R=>(L(),H("th",{key:R.id,class:ne(["cursor-pointer hover:bg-base-300",R.column.columnDef.id==="objectiv_id"?"text-left":"text-right"]),onClick:I=>R.column.toggleSorting()},[p("div",fo,[R.column.columnDef.id==="objectiv_id"?(L(),H("span",po,O(R.isPlaceholder?null:R.column.columnDef.header),1)):(L(),H("span",mo,O(R.isPlaceholder?null:R.column.columnDef.header),1)),R.column.getIsSorted()?(L(),H("i",{key:2,class:ne(["mdi ml-2",R.column.getIsSorted()==="desc"?"mdi-arrow-down":"mdi-arrow-up"])},null,2)):Q("",!0)])],10,co))),128))])]),p("tbody",null,[(L(!0),H(ue,null,de(m.value,R=>(L(),H("tr",{key:R.id},[(L(!0),H(ue,null,de(R.getVisibleCells(),I=>(L(),H("td",{key:I.id,class:ne([I.column.id==="objectiv_id"?"font-medium":"text-right"])},[I.column.id==="objectiv_id"?(L(),H("a",{key:0,href:`https://noita.wiki.gg/wiki/${R.original.objectiv_id}`,target:"_blank"},[K(O(R.original.display_string)+" ",1),v[25]||(v[25]=p("i",{class:"mdi mdi-open-in-new"},null,-1))],8,ho)):I.column.id==="total_points"?(L(),H("span",{key:1,class:ne(R.original.count>=R.original.max_count?"text-primary":"text-error")},O(R.original.total_points)+" / "+O(R.original.points_per_objectiv*R.original.max_count),3)):I.column.id==="first_seen_at"?(L(),H("span",{key:2,title:g(R.original.first_seen_at)},O(g(R.original.first_seen_at)),9,vo)):(L(),H(ue,{key:3},[K(O(I.renderValue()),1)],64))],2))),128))]))),128))])])])):Q("",!0),m.value.length===0?(L(),H("div",So,[...v[26]||(v[26]=[p("p",{class:"text-base-content/70"},"No objectives match your search",-1)])])):Q("",!0)])):Q("",!0)])])])])])]))}}),rt="#app",Co=document.querySelector(rt),it=ct(wo,{...Co?.dataset});it.use(mt);it.mount(rt); diff --git a/polylan_submitter/static_source/vite/assets/noita-D-VLRi4K.js b/polylan_submitter/static_source/vite/assets/noita-D-VLRi4K.js deleted file mode 100644 index 0c2bf23..0000000 --- a/polylan_submitter/static_source/vite/assets/noita-D-VLRi4K.js +++ /dev/null @@ -1,22 +0,0 @@ -import{i as rt,K as it,w as st,r as J,P as lt,z as ut,k as at,c as je,I as gt,l as I,p as E,s as m,x as W,u as K,v as O,E as Te,F as ae,y as ce,q as ne,O as dt}from"./style-CSeMeQaG.js";import{_ as Be}from"./RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js";function ct(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _e={exports:{}},ft=_e.exports,qe;function pt(){return qe||(qe=1,(function(e,o){(function(t,n){e.exports=n()})(ft,(function(){var t=1e3,n=6e4,r=36e5,i="millisecond",s="second",u="minute",a="hour",g="day",f="week",v="month",d="quarter",l="year",p="date",S="Invalid Date",M=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,V=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(y){var R=["th","st","nd","rd"],w=y%100;return"["+y+(R[(w-20)%10]||R[w]||R[0])+"]"}},H=function(y,R,w){var $=String(y);return!$||$.length>=R?y:""+Array(R+1-$.length).join(w)+y},q={s:H,z:function(y){var R=-y.utcOffset(),w=Math.abs(R),$=Math.floor(w/60),_=w%60;return(R<=0?"+":"-")+H($,2,"0")+":"+H(_,2,"0")},m:function y(R,w){if(R.date()1)return y(D[0])}else{var G=R.name;b[G]=R,_=G}return!$&&_&&(k=_),_||!$&&k},c=function(y,R){if(Q(y))return y.clone();var w=typeof R=="object"?R:{};return w.date=y,w.args=arguments,new A(w)},h=q;h.l=C,h.i=Q,h.w=function(y,R){return c(y,{locale:R.$L,utc:R.$u,x:R.$x,$offset:R.$offset})};var A=(function(){function y(w){this.$L=C(w.locale,null,!0),this.parse(w),this.$x=this.$x||w.x||{},this[ie]=!0}var R=y.prototype;return R.parse=function(w){this.$d=(function($){var _=$.date,P=$.utc;if(_===null)return new Date(NaN);if(h.u(_))return new Date;if(_ instanceof Date)return new Date(_);if(typeof _=="string"&&!/Z$/i.test(_)){var D=_.match(M);if(D){var G=D[2]-1||0,z=(D[7]||"0").substring(0,3);return P?new Date(Date.UTC(D[1],G,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)):new Date(D[1],G,D[3]||1,D[4]||0,D[5]||0,D[6]||0,z)}}return new Date(_)})(w),this.init()},R.init=function(){var w=this.$d;this.$y=w.getFullYear(),this.$M=w.getMonth(),this.$D=w.getDate(),this.$W=w.getDay(),this.$H=w.getHours(),this.$m=w.getMinutes(),this.$s=w.getSeconds(),this.$ms=w.getMilliseconds()},R.$utils=function(){return h},R.isValid=function(){return this.$d.toString()!==S},R.isSame=function(w,$){var _=c(w);return this.startOf($)<=_&&_<=this.endOf($)},R.isAfter=function(w,$){return c(w)typeof e=="function"?{...o,accessorFn:e}:{...o,accessorKey:e},display:e=>e,group:e=>e}}function oe(e,o){return typeof e=="function"?e(o):e}function U(e,o){return t=>{o.setState(n=>({...n,[e]:oe(t,n[e])}))}}function Re(e){return e instanceof Function}function vt(e){return Array.isArray(e)&&e.every(o=>typeof o=="number")}function St(e,o){const t=[],n=r=>{r.forEach(i=>{t.push(i);const s=o(i);s!=null&&s.length&&n(s)})};return n(e),t}function x(e,o,t){let n=[],r;return i=>{let s;t.key&&t.debug&&(s=Date.now());const u=e(i);if(!(u.length!==n.length||u.some((f,v)=>n[v]!==f)))return r;n=u;let g;if(t.key&&t.debug&&(g=Date.now()),r=o(...u),t==null||t.onChange==null||t.onChange(r),t.key&&t.debug&&t!=null&&t.debug()){const f=Math.round((Date.now()-s)*100)/100,v=Math.round((Date.now()-g)*100)/100,d=v/16,l=(p,S)=>{for(p=String(p);p.length{var r;return(r=e?.debugAll)!=null?r:e[o]},key:!1,onChange:n}}function wt(e,o,t,n){const r=()=>{var s;return(s=i.getValue())!=null?s:e.options.renderFallbackValue},i={id:`${o.id}_${t.id}`,row:o,column:t,getValue:()=>o.getValue(n),renderValue:r,getContext:x(()=>[e,t,o,i],(s,u,a,g)=>({table:s,column:u,row:a,cell:g,getValue:g.getValue,renderValue:g.renderValue}),F(e.options,"debugCells"))};return e._features.forEach(s=>{s.createCell==null||s.createCell(i,t,o,e)},{}),i}function Ct(e,o,t,n){var r,i;const u={...e._getDefaultColumnDef(),...o},a=u.accessorKey;let g=(r=(i=u.id)!=null?i:a?typeof String.prototype.replaceAll=="function"?a.replaceAll(".","_"):a.replace(/\./g,"_"):void 0)!=null?r:typeof u.header=="string"?u.header:void 0,f;if(u.accessorFn?f=u.accessorFn:a&&(a.includes(".")?f=d=>{let l=d;for(const S of a.split(".")){var p;l=(p=l)==null?void 0:p[S]}return l}:f=d=>d[u.accessorKey]),!g)throw new Error;let v={id:`${String(g)}`,accessorFn:f,parent:n,depth:t,columnDef:u,columns:[],getFlatColumns:x(()=>[!0],()=>{var d;return[v,...(d=v.columns)==null?void 0:d.flatMap(l=>l.getFlatColumns())]},F(e.options,"debugColumns")),getLeafColumns:x(()=>[e._getOrderColumnsFn()],d=>{var l;if((l=v.columns)!=null&&l.length){let p=v.columns.flatMap(S=>S.getLeafColumns());return d(p)}return[v]},F(e.options,"debugColumns"))};for(const d of e._features)d.createColumn==null||d.createColumn(v,e);return v}const B="debugHeaders";function Ne(e,o,t){var n;let i={id:(n=t.id)!=null?n:o.id,column:o,index:t.index,isPlaceholder:!!t.isPlaceholder,placeholderId:t.placeholderId,depth:t.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const s=[],u=a=>{a.subHeaders&&a.subHeaders.length&&a.subHeaders.map(u),s.push(a)};return u(i),s},getContext:()=>({table:e,header:i,column:o})};return e._features.forEach(s=>{s.createHeader==null||s.createHeader(i,e)}),i}const _t={createTable:e=>{e.getHeaderGroups=x(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n,r)=>{var i,s;const u=(i=n?.map(v=>t.find(d=>d.id===v)).filter(Boolean))!=null?i:[],a=(s=r?.map(v=>t.find(d=>d.id===v)).filter(Boolean))!=null?s:[],g=t.filter(v=>!(n!=null&&n.includes(v.id))&&!(r!=null&&r.includes(v.id)));return ve(o,[...u,...g,...a],e)},F(e.options,B)),e.getCenterHeaderGroups=x(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n,r)=>(t=t.filter(i=>!(n!=null&&n.includes(i.id))&&!(r!=null&&r.includes(i.id))),ve(o,t,e,"center")),F(e.options,B)),e.getLeftHeaderGroups=x(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(o,t,n)=>{var r;const i=(r=n?.map(s=>t.find(u=>u.id===s)).filter(Boolean))!=null?r:[];return ve(o,i,e,"left")},F(e.options,B)),e.getRightHeaderGroups=x(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(o,t,n)=>{var r;const i=(r=n?.map(s=>t.find(u=>u.id===s)).filter(Boolean))!=null?r:[];return ve(o,i,e,"right")},F(e.options,B)),e.getFooterGroups=x(()=>[e.getHeaderGroups()],o=>[...o].reverse(),F(e.options,B)),e.getLeftFooterGroups=x(()=>[e.getLeftHeaderGroups()],o=>[...o].reverse(),F(e.options,B)),e.getCenterFooterGroups=x(()=>[e.getCenterHeaderGroups()],o=>[...o].reverse(),F(e.options,B)),e.getRightFooterGroups=x(()=>[e.getRightHeaderGroups()],o=>[...o].reverse(),F(e.options,B)),e.getFlatHeaders=x(()=>[e.getHeaderGroups()],o=>o.map(t=>t.headers).flat(),F(e.options,B)),e.getLeftFlatHeaders=x(()=>[e.getLeftHeaderGroups()],o=>o.map(t=>t.headers).flat(),F(e.options,B)),e.getCenterFlatHeaders=x(()=>[e.getCenterHeaderGroups()],o=>o.map(t=>t.headers).flat(),F(e.options,B)),e.getRightFlatHeaders=x(()=>[e.getRightHeaderGroups()],o=>o.map(t=>t.headers).flat(),F(e.options,B)),e.getCenterLeafHeaders=x(()=>[e.getCenterFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),F(e.options,B)),e.getLeftLeafHeaders=x(()=>[e.getLeftFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),F(e.options,B)),e.getRightLeafHeaders=x(()=>[e.getRightFlatHeaders()],o=>o.filter(t=>{var n;return!((n=t.subHeaders)!=null&&n.length)}),F(e.options,B)),e.getLeafHeaders=x(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(o,t,n)=>{var r,i,s,u,a,g;return[...(r=(i=o[0])==null?void 0:i.headers)!=null?r:[],...(s=(u=t[0])==null?void 0:u.headers)!=null?s:[],...(a=(g=n[0])==null?void 0:g.headers)!=null?a:[]].map(f=>f.getLeafHeaders()).flat()},F(e.options,B))}};function ve(e,o,t,n){var r,i;let s=0;const u=function(d,l){l===void 0&&(l=1),s=Math.max(s,l),d.filter(p=>p.getIsVisible()).forEach(p=>{var S;(S=p.columns)!=null&&S.length&&u(p.columns,l+1)},0)};u(e);let a=[];const g=(d,l)=>{const p={depth:l,id:[n,`${l}`].filter(Boolean).join("_"),headers:[]},S=[];d.forEach(M=>{const V=[...S].reverse()[0],L=M.column.depth===p.depth;let H,q=!1;if(L&&M.column.parent?H=M.column.parent:(H=M.column,q=!0),V&&V?.column===H)V.subHeaders.push(M);else{const k=Ne(t,H,{id:[n,l,H.id,M?.id].filter(Boolean).join("_"),isPlaceholder:q,placeholderId:q?`${S.filter(b=>b.column===H).length}`:void 0,depth:l,index:S.length});k.subHeaders.push(M),S.push(k)}p.headers.push(M),M.headerGroup=p}),a.push(p),l>0&&g(S,l-1)},f=o.map((d,l)=>Ne(t,d,{depth:s,index:l}));g(f,s-1),a.reverse();const v=d=>d.filter(p=>p.column.getIsVisible()).map(p=>{let S=0,M=0,V=[0];p.subHeaders&&p.subHeaders.length?(V=[],v(p.subHeaders).forEach(H=>{let{colSpan:q,rowSpan:k}=H;S+=q,V.push(k)})):S=1;const L=Math.min(...V);return M=M+L,p.colSpan=S,p.rowSpan=M,{colSpan:S,rowSpan:M}});return v((r=(i=a[0])==null?void 0:i.headers)!=null?r:[]),a}const ke=(e,o,t,n,r,i,s)=>{let u={id:o,index:n,original:t,depth:r,parentId:s,_valuesCache:{},_uniqueValuesCache:{},getValue:a=>{if(u._valuesCache.hasOwnProperty(a))return u._valuesCache[a];const g=e.getColumn(a);if(g!=null&&g.accessorFn)return u._valuesCache[a]=g.accessorFn(u.original,n),u._valuesCache[a]},getUniqueValues:a=>{if(u._uniqueValuesCache.hasOwnProperty(a))return u._uniqueValuesCache[a];const g=e.getColumn(a);if(g!=null&&g.accessorFn)return g.columnDef.getUniqueValues?(u._uniqueValuesCache[a]=g.columnDef.getUniqueValues(u.original,n),u._uniqueValuesCache[a]):(u._uniqueValuesCache[a]=[u.getValue(a)],u._uniqueValuesCache[a])},renderValue:a=>{var g;return(g=u.getValue(a))!=null?g:e.options.renderFallbackValue},subRows:[],getLeafRows:()=>St(u.subRows,a=>a.subRows),getParentRow:()=>u.parentId?e.getRow(u.parentId,!0):void 0,getParentRows:()=>{let a=[],g=u;for(;;){const f=g.getParentRow();if(!f)break;a.push(f),g=f}return a.reverse()},getAllCells:x(()=>[e.getAllLeafColumns()],a=>a.map(g=>wt(e,u,g,g.id)),F(e.options,"debugRows")),_getAllCellsByColumnId:x(()=>[u.getAllCells()],a=>a.reduce((g,f)=>(g[f.column.id]=f,g),{}),F(e.options,"debugRows"))};for(let a=0;a{e._getFacetedRowModel=o.options.getFacetedRowModel&&o.options.getFacetedRowModel(o,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():o.getPreFilteredRowModel(),e._getFacetedUniqueValues=o.options.getFacetedUniqueValues&&o.options.getFacetedUniqueValues(o,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=o.options.getFacetedMinMaxValues&&o.options.getFacetedMinMaxValues(o,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},We=(e,o,t)=>{var n,r;const i=t==null||(n=t.toString())==null?void 0:n.toLowerCase();return!!(!((r=e.getValue(o))==null||(r=r.toString())==null||(r=r.toLowerCase())==null)&&r.includes(i))};We.autoRemove=e=>X(e);const Xe=(e,o,t)=>{var n;return!!(!((n=e.getValue(o))==null||(n=n.toString())==null)&&n.includes(t))};Xe.autoRemove=e=>X(e);const Ke=(e,o,t)=>{var n;return((n=e.getValue(o))==null||(n=n.toString())==null?void 0:n.toLowerCase())===t?.toLowerCase()};Ke.autoRemove=e=>X(e);const Je=(e,o,t)=>{var n;return(n=e.getValue(o))==null?void 0:n.includes(t)};Je.autoRemove=e=>X(e);const Ze=(e,o,t)=>!t.some(n=>{var r;return!((r=e.getValue(o))!=null&&r.includes(n))});Ze.autoRemove=e=>X(e)||!(e!=null&&e.length);const Qe=(e,o,t)=>t.some(n=>{var r;return(r=e.getValue(o))==null?void 0:r.includes(n)});Qe.autoRemove=e=>X(e)||!(e!=null&&e.length);const et=(e,o,t)=>e.getValue(o)===t;et.autoRemove=e=>X(e);const tt=(e,o,t)=>e.getValue(o)==t;tt.autoRemove=e=>X(e);const ze=(e,o,t)=>{let[n,r]=t;const i=e.getValue(o);return i>=n&&i<=r};ze.resolveFilterValue=e=>{let[o,t]=e,n=typeof o!="number"?parseFloat(o):o,r=typeof t!="number"?parseFloat(t):t,i=o===null||Number.isNaN(n)?-1/0:n,s=t===null||Number.isNaN(r)?1/0:r;if(i>s){const u=i;i=s,s=u}return[i,s]};ze.autoRemove=e=>X(e)||X(e[0])&&X(e[1]);const Z={includesString:We,includesStringSensitive:Xe,equalsString:Ke,arrIncludes:Je,arrIncludesAll:Ze,arrIncludesSome:Qe,equals:et,weakEquals:tt,inNumberRange:ze};function X(e){return e==null||e===""}const $t={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:U("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,o)=>{e.getAutoFilterFn=()=>{const t=o.getCoreRowModel().flatRows[0],n=t?.getValue(e.id);return typeof n=="string"?Z.includesString:typeof n=="number"?Z.inNumberRange:typeof n=="boolean"||n!==null&&typeof n=="object"?Z.equals:Array.isArray(n)?Z.arrIncludes:Z.weakEquals},e.getFilterFn=()=>{var t,n;return Re(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(t=(n=o.options.filterFns)==null?void 0:n[e.columnDef.filterFn])!=null?t:Z[e.columnDef.filterFn]},e.getCanFilter=()=>{var t,n,r;return((t=e.columnDef.enableColumnFilter)!=null?t:!0)&&((n=o.options.enableColumnFilters)!=null?n:!0)&&((r=o.options.enableFilters)!=null?r:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var t;return(t=o.getState().columnFilters)==null||(t=t.find(n=>n.id===e.id))==null?void 0:t.value},e.getFilterIndex=()=>{var t,n;return(t=(n=o.getState().columnFilters)==null?void 0:n.findIndex(r=>r.id===e.id))!=null?t:-1},e.setFilterValue=t=>{o.setColumnFilters(n=>{const r=e.getFilterFn(),i=n?.find(f=>f.id===e.id),s=oe(t,i?i.value:void 0);if(Ue(r,s,e)){var u;return(u=n?.filter(f=>f.id!==e.id))!=null?u:[]}const a={id:e.id,value:s};if(i){var g;return(g=n?.map(f=>f.id===e.id?a:f))!=null?g:[]}return n!=null&&n.length?[...n,a]:[a]})}},createRow:(e,o)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=o=>{const t=e.getAllLeafColumns(),n=r=>{var i;return(i=oe(o,r))==null?void 0:i.filter(s=>{const u=t.find(a=>a.id===s.id);if(u){const a=u.getFilterFn();if(Ue(a,s.value,u))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(n)},e.resetColumnFilters=o=>{var t,n;e.setColumnFilters(o?[]:(t=(n=e.initialState)==null?void 0:n.columnFilters)!=null?t:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function Ue(e,o,t){return(e&&e.autoRemove?e.autoRemove(o,t):!1)||typeof o>"u"||typeof o=="string"&&!o}const xt=(e,o,t)=>t.reduce((n,r)=>{const i=r.getValue(e);return n+(typeof i=="number"?i:0)},0),Ft=(e,o,t)=>{let n;return t.forEach(r=>{const i=r.getValue(e);i!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}),n},yt=(e,o,t)=>{let n;return t.forEach(r=>{const i=r.getValue(e);i!=null&&(n=i)&&(n=i)}),n},Mt=(e,o,t)=>{let n,r;return t.forEach(i=>{const s=i.getValue(e);s!=null&&(n===void 0?s>=s&&(n=r=s):(n>s&&(n=s),r{let t=0,n=0;if(o.forEach(r=>{let i=r.getValue(e);i!=null&&(i=+i)>=i&&(++t,n+=i)}),t)return n/t},Pt=(e,o)=>{if(!o.length)return;const t=o.map(i=>i.getValue(e));if(!vt(t))return;if(t.length===1)return t[0];const n=Math.floor(t.length/2),r=t.sort((i,s)=>i-s);return t.length%2!==0?r[n]:(r[n-1]+r[n])/2},Dt=(e,o)=>Array.from(new Set(o.map(t=>t.getValue(e))).values()),It=(e,o)=>new Set(o.map(t=>t.getValue(e))).size,Et=(e,o)=>o.length,xe={sum:xt,min:Ft,max:yt,extent:Mt,mean:Vt,median:Pt,unique:Dt,uniqueCount:It,count:Et},Ht={getDefaultColumnDef:()=>({aggregatedCell:e=>{var o,t;return(o=(t=e.getValue())==null||t.toString==null?void 0:t.toString())!=null?o:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:U("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,o)=>{e.toggleGrouping=()=>{o.setGrouping(t=>t!=null&&t.includes(e.id)?t.filter(n=>n!==e.id):[...t??[],e.id])},e.getCanGroup=()=>{var t,n;return((t=e.columnDef.enableGrouping)!=null?t:!0)&&((n=o.options.enableGrouping)!=null?n:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var t;return(t=o.getState().grouping)==null?void 0:t.includes(e.id)},e.getGroupedIndex=()=>{var t;return(t=o.getState().grouping)==null?void 0:t.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const t=o.getCoreRowModel().flatRows[0],n=t?.getValue(e.id);if(typeof n=="number")return xe.sum;if(Object.prototype.toString.call(n)==="[object Date]")return xe.extent},e.getAggregationFn=()=>{var t,n;if(!e)throw new Error;return Re(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(t=(n=o.options.aggregationFns)==null?void 0:n[e.columnDef.aggregationFn])!=null?t:xe[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=o=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(o),e.resetGrouping=o=>{var t,n;e.setGrouping(o?[]:(t=(n=e.initialState)==null?void 0:n.grouping)!=null?t:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,o)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=t=>{if(e._groupingValuesCache.hasOwnProperty(t))return e._groupingValuesCache[t];const n=o.getColumn(t);return n!=null&&n.columnDef.getGroupingValue?(e._groupingValuesCache[t]=n.columnDef.getGroupingValue(e.original),e._groupingValuesCache[t]):e.getValue(t)},e._groupingValuesCache={}},createCell:(e,o,t,n)=>{e.getIsGrouped=()=>o.getIsGrouped()&&o.id===t.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&o.getIsGrouped(),e.getIsAggregated=()=>{var r;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((r=t.subRows)!=null&&r.length)}}};function Lt(e,o,t){if(!(o!=null&&o.length)||!t)return e;const n=e.filter(i=>!o.includes(i.id));return t==="remove"?n:[...o.map(i=>e.find(s=>s.id===i)).filter(Boolean),...n]}const At={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:U("columnOrder",e)}),createColumn:(e,o)=>{e.getIndex=x(t=>[me(o,t)],t=>t.findIndex(n=>n.id===e.id),F(o.options,"debugColumns")),e.getIsFirstColumn=t=>{var n;return((n=me(o,t)[0])==null?void 0:n.id)===e.id},e.getIsLastColumn=t=>{var n;const r=me(o,t);return((n=r[r.length-1])==null?void 0:n.id)===e.id}},createTable:e=>{e.setColumnOrder=o=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(o),e.resetColumnOrder=o=>{var t;e.setColumnOrder(o?[]:(t=e.initialState.columnOrder)!=null?t:[])},e._getOrderColumnsFn=x(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(o,t,n)=>r=>{let i=[];if(!(o!=null&&o.length))i=r;else{const s=[...o],u=[...r];for(;u.length&&s.length;){const a=s.shift(),g=u.findIndex(f=>f.id===a);g>-1&&i.push(u.splice(g,1)[0])}i=[...i,...u]}return Lt(i,t,n)},F(e.options,"debugTable"))}},Fe=()=>({left:[],right:[]}),Gt={getInitialState:e=>({columnPinning:Fe(),...e}),getDefaultOptions:e=>({onColumnPinningChange:U("columnPinning",e)}),createColumn:(e,o)=>{e.pin=t=>{const n=e.getLeafColumns().map(r=>r.id).filter(Boolean);o.setColumnPinning(r=>{var i,s;if(t==="right"){var u,a;return{left:((u=r?.left)!=null?u:[]).filter(v=>!(n!=null&&n.includes(v))),right:[...((a=r?.right)!=null?a:[]).filter(v=>!(n!=null&&n.includes(v))),...n]}}if(t==="left"){var g,f;return{left:[...((g=r?.left)!=null?g:[]).filter(v=>!(n!=null&&n.includes(v))),...n],right:((f=r?.right)!=null?f:[]).filter(v=>!(n!=null&&n.includes(v)))}}return{left:((i=r?.left)!=null?i:[]).filter(v=>!(n!=null&&n.includes(v))),right:((s=r?.right)!=null?s:[]).filter(v=>!(n!=null&&n.includes(v)))}})},e.getCanPin=()=>e.getLeafColumns().some(n=>{var r,i,s;return((r=n.columnDef.enablePinning)!=null?r:!0)&&((i=(s=o.options.enableColumnPinning)!=null?s:o.options.enablePinning)!=null?i:!0)}),e.getIsPinned=()=>{const t=e.getLeafColumns().map(u=>u.id),{left:n,right:r}=o.getState().columnPinning,i=t.some(u=>n?.includes(u)),s=t.some(u=>r?.includes(u));return i?"left":s?"right":!1},e.getPinnedIndex=()=>{var t,n;const r=e.getIsPinned();return r?(t=(n=o.getState().columnPinning)==null||(n=n[r])==null?void 0:n.indexOf(e.id))!=null?t:-1:0}},createRow:(e,o)=>{e.getCenterVisibleCells=x(()=>[e._getAllVisibleCells(),o.getState().columnPinning.left,o.getState().columnPinning.right],(t,n,r)=>{const i=[...n??[],...r??[]];return t.filter(s=>!i.includes(s.column.id))},F(o.options,"debugRows")),e.getLeftVisibleCells=x(()=>[e._getAllVisibleCells(),o.getState().columnPinning.left],(t,n)=>(n??[]).map(i=>t.find(s=>s.column.id===i)).filter(Boolean).map(i=>({...i,position:"left"})),F(o.options,"debugRows")),e.getRightVisibleCells=x(()=>[e._getAllVisibleCells(),o.getState().columnPinning.right],(t,n)=>(n??[]).map(i=>t.find(s=>s.column.id===i)).filter(Boolean).map(i=>({...i,position:"right"})),F(o.options,"debugRows"))},createTable:e=>{e.setColumnPinning=o=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(o),e.resetColumnPinning=o=>{var t,n;return e.setColumnPinning(o?Fe():(t=(n=e.initialState)==null?void 0:n.columnPinning)!=null?t:Fe())},e.getIsSomeColumnsPinned=o=>{var t;const n=e.getState().columnPinning;if(!o){var r,i;return!!((r=n.left)!=null&&r.length||(i=n.right)!=null&&i.length)}return!!((t=n[o])!=null&&t.length)},e.getLeftLeafColumns=x(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(o,t)=>(t??[]).map(n=>o.find(r=>r.id===n)).filter(Boolean),F(e.options,"debugColumns")),e.getRightLeafColumns=x(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(o,t)=>(t??[]).map(n=>o.find(r=>r.id===n)).filter(Boolean),F(e.options,"debugColumns")),e.getCenterLeafColumns=x(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(o,t,n)=>{const r=[...t??[],...n??[]];return o.filter(i=>!r.includes(i.id))},F(e.options,"debugColumns"))}};function kt(e){return e||(typeof document<"u"?document:null)}const Se={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},ye=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),zt={getDefaultColumnDef:()=>Se,getInitialState:e=>({columnSizing:{},columnSizingInfo:ye(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:U("columnSizing",e),onColumnSizingInfoChange:U("columnSizingInfo",e)}),createColumn:(e,o)=>{e.getSize=()=>{var t,n,r;const i=o.getState().columnSizing[e.id];return Math.min(Math.max((t=e.columnDef.minSize)!=null?t:Se.minSize,(n=i??e.columnDef.size)!=null?n:Se.size),(r=e.columnDef.maxSize)!=null?r:Se.maxSize)},e.getStart=x(t=>[t,me(o,t),o.getState().columnSizing],(t,n)=>n.slice(0,e.getIndex(t)).reduce((r,i)=>r+i.getSize(),0),F(o.options,"debugColumns")),e.getAfter=x(t=>[t,me(o,t),o.getState().columnSizing],(t,n)=>n.slice(e.getIndex(t)+1).reduce((r,i)=>r+i.getSize(),0),F(o.options,"debugColumns")),e.resetSize=()=>{o.setColumnSizing(t=>{let{[e.id]:n,...r}=t;return r})},e.getCanResize=()=>{var t,n;return((t=e.columnDef.enableResizing)!=null?t:!0)&&((n=o.options.enableColumnResizing)!=null?n:!0)},e.getIsResizing=()=>o.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,o)=>{e.getSize=()=>{let t=0;const n=r=>{if(r.subHeaders.length)r.subHeaders.forEach(n);else{var i;t+=(i=r.column.getSize())!=null?i:0}};return n(e),t},e.getStart=()=>{if(e.index>0){const t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=t=>{const n=o.getColumn(e.column.id),r=n?.getCanResize();return i=>{if(!n||!r||(i.persist==null||i.persist(),Me(i)&&i.touches&&i.touches.length>1))return;const s=e.getSize(),u=e?e.getLeafHeaders().map(V=>[V.column.id,V.column.getSize()]):[[n.id,n.getSize()]],a=Me(i)?Math.round(i.touches[0].clientX):i.clientX,g={},f=(V,L)=>{typeof L=="number"&&(o.setColumnSizingInfo(H=>{var q,k;const b=o.options.columnResizeDirection==="rtl"?-1:1,ie=(L-((q=H?.startOffset)!=null?q:0))*b,Q=Math.max(ie/((k=H?.startSize)!=null?k:0),-.999999);return H.columnSizingStart.forEach(C=>{let[c,h]=C;g[c]=Math.round(Math.max(h+h*Q,0)*100)/100}),{...H,deltaOffset:ie,deltaPercentage:Q}}),(o.options.columnResizeMode==="onChange"||V==="end")&&o.setColumnSizing(H=>({...H,...g})))},v=V=>f("move",V),d=V=>{f("end",V),o.setColumnSizingInfo(L=>({...L,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},l=kt(t),p={moveHandler:V=>v(V.clientX),upHandler:V=>{l?.removeEventListener("mousemove",p.moveHandler),l?.removeEventListener("mouseup",p.upHandler),d(V.clientX)}},S={moveHandler:V=>(V.cancelable&&(V.preventDefault(),V.stopPropagation()),v(V.touches[0].clientX),!1),upHandler:V=>{var L;l?.removeEventListener("touchmove",S.moveHandler),l?.removeEventListener("touchend",S.upHandler),V.cancelable&&(V.preventDefault(),V.stopPropagation()),d((L=V.touches[0])==null?void 0:L.clientX)}},M=Ot()?{passive:!1}:!1;Me(i)?(l?.addEventListener("touchmove",S.moveHandler,M),l?.addEventListener("touchend",S.upHandler,M)):(l?.addEventListener("mousemove",p.moveHandler,M),l?.addEventListener("mouseup",p.upHandler,M)),o.setColumnSizingInfo(V=>({...V,startOffset:a,startSize:s,deltaOffset:0,deltaPercentage:0,columnSizingStart:u,isResizingColumn:n.id}))}}},createTable:e=>{e.setColumnSizing=o=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(o),e.setColumnSizingInfo=o=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(o),e.resetColumnSizing=o=>{var t;e.setColumnSizing(o?{}:(t=e.initialState.columnSizing)!=null?t:{})},e.resetHeaderSizeInfo=o=>{var t;e.setColumnSizingInfo(o?ye():(t=e.initialState.columnSizingInfo)!=null?t:ye())},e.getTotalSize=()=>{var o,t;return(o=(t=e.getHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getLeftTotalSize=()=>{var o,t;return(o=(t=e.getLeftHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getCenterTotalSize=()=>{var o,t;return(o=(t=e.getCenterHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0},e.getRightTotalSize=()=>{var o,t;return(o=(t=e.getRightHeaderGroups()[0])==null?void 0:t.headers.reduce((n,r)=>n+r.getSize(),0))!=null?o:0}}};let we=null;function Ot(){if(typeof we=="boolean")return we;let e=!1;try{const o={get passive(){return e=!0,!1}},t=()=>{};window.addEventListener("test",t,o),window.removeEventListener("test",t)}catch{e=!1}return we=e,we}function Me(e){return e.type==="touchstart"}const bt={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:U("columnVisibility",e)}),createColumn:(e,o)=>{e.toggleVisibility=t=>{e.getCanHide()&&o.setColumnVisibility(n=>({...n,[e.id]:t??!e.getIsVisible()}))},e.getIsVisible=()=>{var t,n;const r=e.columns;return(t=r.length?r.some(i=>i.getIsVisible()):(n=o.getState().columnVisibility)==null?void 0:n[e.id])!=null?t:!0},e.getCanHide=()=>{var t,n;return((t=e.columnDef.enableHiding)!=null?t:!0)&&((n=o.options.enableHiding)!=null?n:!0)},e.getToggleVisibilityHandler=()=>t=>{e.toggleVisibility==null||e.toggleVisibility(t.target.checked)}},createRow:(e,o)=>{e._getAllVisibleCells=x(()=>[e.getAllCells(),o.getState().columnVisibility],t=>t.filter(n=>n.column.getIsVisible()),F(o.options,"debugRows")),e.getVisibleCells=x(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(t,n,r)=>[...t,...n,...r],F(o.options,"debugRows"))},createTable:e=>{const o=(t,n)=>x(()=>[n(),n().filter(r=>r.getIsVisible()).map(r=>r.id).join("_")],r=>r.filter(i=>i.getIsVisible==null?void 0:i.getIsVisible()),F(e.options,"debugColumns"));e.getVisibleFlatColumns=o("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=o("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=o("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=o("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=o("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=t=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{var n;e.setColumnVisibility(t?{}:(n=e.initialState.columnVisibility)!=null?n:{})},e.toggleAllColumnsVisible=t=>{var n;t=(n=t)!=null?n:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((r,i)=>({...r,[i.id]:t||!(i.getCanHide!=null&&i.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(t=>!(t.getIsVisible!=null&&t.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(t=>t.getIsVisible==null?void 0:t.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>t=>{var n;e.toggleAllColumnsVisible((n=t.target)==null?void 0:n.checked)}}};function me(e,o){return o?o==="center"?e.getCenterVisibleLeafColumns():o==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const jt={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},Tt={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:U("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:o=>{var t;const n=(t=e.getCoreRowModel().flatRows[0])==null||(t=t._getAllCellsByColumnId()[o.id])==null?void 0:t.getValue();return typeof n=="string"||typeof n=="number"}}),createColumn:(e,o)=>{e.getCanGlobalFilter=()=>{var t,n,r,i;return((t=e.columnDef.enableGlobalFilter)!=null?t:!0)&&((n=o.options.enableGlobalFilter)!=null?n:!0)&&((r=o.options.enableFilters)!=null?r:!0)&&((i=o.options.getColumnCanGlobalFilter==null?void 0:o.options.getColumnCanGlobalFilter(e))!=null?i:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>Z.includesString,e.getGlobalFilterFn=()=>{var o,t;const{globalFilterFn:n}=e.options;return Re(n)?n:n==="auto"?e.getGlobalAutoFilterFn():(o=(t=e.options.filterFns)==null?void 0:t[n])!=null?o:Z[n]},e.setGlobalFilter=o=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(o)},e.resetGlobalFilter=o=>{e.setGlobalFilter(o?void 0:e.initialState.globalFilter)}}},Bt={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:U("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let o=!1,t=!1;e._autoResetExpanded=()=>{var n,r;if(!o){e._queue(()=>{o=!0});return}if((n=(r=e.options.autoResetAll)!=null?r:e.options.autoResetExpanded)!=null?n:!e.options.manualExpanding){if(t)return;t=!0,e._queue(()=>{e.resetExpanded(),t=!1})}},e.setExpanded=n=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(n),e.toggleAllRowsExpanded=n=>{n??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=n=>{var r,i;e.setExpanded(n?{}:(r=(i=e.initialState)==null?void 0:i.expanded)!=null?r:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(n=>n.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>n=>{n.persist==null||n.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const n=e.getState().expanded;return n===!0||Object.values(n).some(Boolean)},e.getIsAllRowsExpanded=()=>{const n=e.getState().expanded;return typeof n=="boolean"?n===!0:!(!Object.keys(n).length||e.getRowModel().flatRows.some(r=>!r.getIsExpanded()))},e.getExpandedDepth=()=>{let n=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(i=>{const s=i.split(".");n=Math.max(n,s.length)}),n},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,o)=>{e.toggleExpanded=t=>{o.setExpanded(n=>{var r;const i=n===!0?!0:!!(n!=null&&n[e.id]);let s={};if(n===!0?Object.keys(o.getRowModel().rowsById).forEach(u=>{s[u]=!0}):s=n,t=(r=t)!=null?r:!i,!i&&t)return{...s,[e.id]:!0};if(i&&!t){const{[e.id]:u,...a}=s;return a}return n})},e.getIsExpanded=()=>{var t;const n=o.getState().expanded;return!!((t=o.options.getIsRowExpanded==null?void 0:o.options.getIsRowExpanded(e))!=null?t:n===!0||n?.[e.id])},e.getCanExpand=()=>{var t,n,r;return(t=o.options.getRowCanExpand==null?void 0:o.options.getRowCanExpand(e))!=null?t:((n=o.options.enableExpanding)!=null?n:!0)&&!!((r=e.subRows)!=null&&r.length)},e.getIsAllParentsExpanded=()=>{let t=!0,n=e;for(;t&&n.parentId;)n=o.getRow(n.parentId,!0),t=n.getIsExpanded();return t},e.getToggleExpandedHandler=()=>{const t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},Ee=0,He=10,Ve=()=>({pageIndex:Ee,pageSize:He}),qt={getInitialState:e=>({...e,pagination:{...Ve(),...e?.pagination}}),getDefaultOptions:e=>({onPaginationChange:U("pagination",e)}),createTable:e=>{let o=!1,t=!1;e._autoResetPageIndex=()=>{var n,r;if(!o){e._queue(()=>{o=!0});return}if((n=(r=e.options.autoResetAll)!=null?r:e.options.autoResetPageIndex)!=null?n:!e.options.manualPagination){if(t)return;t=!0,e._queue(()=>{e.resetPageIndex(),t=!1})}},e.setPagination=n=>{const r=i=>oe(n,i);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(r)},e.resetPagination=n=>{var r;e.setPagination(n?Ve():(r=e.initialState.pagination)!=null?r:Ve())},e.setPageIndex=n=>{e.setPagination(r=>{let i=oe(n,r.pageIndex);const s=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return i=Math.max(0,Math.min(i,s)),{...r,pageIndex:i}})},e.resetPageIndex=n=>{var r,i;e.setPageIndex(n?Ee:(r=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageIndex)!=null?r:Ee)},e.resetPageSize=n=>{var r,i;e.setPageSize(n?He:(r=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageSize)!=null?r:He)},e.setPageSize=n=>{e.setPagination(r=>{const i=Math.max(1,oe(n,r.pageSize)),s=r.pageSize*r.pageIndex,u=Math.floor(s/i);return{...r,pageIndex:u,pageSize:i}})},e.setPageCount=n=>e.setPagination(r=>{var i;let s=oe(n,(i=e.options.pageCount)!=null?i:-1);return typeof s=="number"&&(s=Math.max(-1,s)),{...r,pageCount:s}}),e.getPageOptions=x(()=>[e.getPageCount()],n=>{let r=[];return n&&n>0&&(r=[...new Array(n)].fill(null).map((i,s)=>s)),r},F(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:n}=e.getState().pagination,r=e.getPageCount();return r===-1?!0:r===0?!1:ne.setPageIndex(n=>n-1),e.nextPage=()=>e.setPageIndex(n=>n+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var n;return(n=e.options.pageCount)!=null?n:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var n;return(n=e.options.rowCount)!=null?n:e.getPrePaginationRowModel().rows.length}}},Pe=()=>({top:[],bottom:[]}),Nt={getInitialState:e=>({rowPinning:Pe(),...e}),getDefaultOptions:e=>({onRowPinningChange:U("rowPinning",e)}),createRow:(e,o)=>{e.pin=(t,n,r)=>{const i=n?e.getLeafRows().map(a=>{let{id:g}=a;return g}):[],s=r?e.getParentRows().map(a=>{let{id:g}=a;return g}):[],u=new Set([...s,e.id,...i]);o.setRowPinning(a=>{var g,f;if(t==="bottom"){var v,d;return{top:((v=a?.top)!=null?v:[]).filter(S=>!(u!=null&&u.has(S))),bottom:[...((d=a?.bottom)!=null?d:[]).filter(S=>!(u!=null&&u.has(S))),...Array.from(u)]}}if(t==="top"){var l,p;return{top:[...((l=a?.top)!=null?l:[]).filter(S=>!(u!=null&&u.has(S))),...Array.from(u)],bottom:((p=a?.bottom)!=null?p:[]).filter(S=>!(u!=null&&u.has(S)))}}return{top:((g=a?.top)!=null?g:[]).filter(S=>!(u!=null&&u.has(S))),bottom:((f=a?.bottom)!=null?f:[]).filter(S=>!(u!=null&&u.has(S)))}})},e.getCanPin=()=>{var t;const{enableRowPinning:n,enablePinning:r}=o.options;return typeof n=="function"?n(e):(t=n??r)!=null?t:!0},e.getIsPinned=()=>{const t=[e.id],{top:n,bottom:r}=o.getState().rowPinning,i=t.some(u=>n?.includes(u)),s=t.some(u=>r?.includes(u));return i?"top":s?"bottom":!1},e.getPinnedIndex=()=>{var t,n;const r=e.getIsPinned();if(!r)return-1;const i=(t=r==="top"?o.getTopRows():o.getBottomRows())==null?void 0:t.map(s=>{let{id:u}=s;return u});return(n=i?.indexOf(e.id))!=null?n:-1}},createTable:e=>{e.setRowPinning=o=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(o),e.resetRowPinning=o=>{var t,n;return e.setRowPinning(o?Pe():(t=(n=e.initialState)==null?void 0:n.rowPinning)!=null?t:Pe())},e.getIsSomeRowsPinned=o=>{var t;const n=e.getState().rowPinning;if(!o){var r,i;return!!((r=n.top)!=null&&r.length||(i=n.bottom)!=null&&i.length)}return!!((t=n[o])!=null&&t.length)},e._getPinnedRows=(o,t,n)=>{var r;return((r=e.options.keepPinnedRows)==null||r?(t??[]).map(s=>{const u=e.getRow(s,!0);return u.getIsAllParentsExpanded()?u:null}):(t??[]).map(s=>o.find(u=>u.id===s))).filter(Boolean).map(s=>({...s,position:n}))},e.getTopRows=x(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(o,t)=>e._getPinnedRows(o,t,"top"),F(e.options,"debugRows")),e.getBottomRows=x(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(o,t)=>e._getPinnedRows(o,t,"bottom"),F(e.options,"debugRows")),e.getCenterRows=x(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(o,t,n)=>{const r=new Set([...t??[],...n??[]]);return o.filter(i=>!r.has(i.id))},F(e.options,"debugRows"))}},Ut={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:U("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=o=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(o),e.resetRowSelection=o=>{var t;return e.setRowSelection(o?{}:(t=e.initialState.rowSelection)!=null?t:{})},e.toggleAllRowsSelected=o=>{e.setRowSelection(t=>{o=typeof o<"u"?o:!e.getIsAllRowsSelected();const n={...t},r=e.getPreGroupedRowModel().flatRows;return o?r.forEach(i=>{i.getCanSelect()&&(n[i.id]=!0)}):r.forEach(i=>{delete n[i.id]}),n})},e.toggleAllPageRowsSelected=o=>e.setRowSelection(t=>{const n=typeof o<"u"?o:!e.getIsAllPageRowsSelected(),r={...t};return e.getRowModel().rows.forEach(i=>{Le(r,i.id,n,!0,e)}),r}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=x(()=>[e.getState().rowSelection,e.getCoreRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},F(e.options,"debugTable")),e.getFilteredSelectedRowModel=x(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},F(e.options,"debugTable")),e.getGroupedSelectedRowModel=x(()=>[e.getState().rowSelection,e.getSortedRowModel()],(o,t)=>Object.keys(o).length?De(e,t):{rows:[],flatRows:[],rowsById:{}},F(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const o=e.getFilteredRowModel().flatRows,{rowSelection:t}=e.getState();let n=!!(o.length&&Object.keys(t).length);return n&&o.some(r=>r.getCanSelect()&&!t[r.id])&&(n=!1),n},e.getIsAllPageRowsSelected=()=>{const o=e.getPaginationRowModel().flatRows.filter(r=>r.getCanSelect()),{rowSelection:t}=e.getState();let n=!!o.length;return n&&o.some(r=>!t[r.id])&&(n=!1),n},e.getIsSomeRowsSelected=()=>{var o;const t=Object.keys((o=e.getState().rowSelection)!=null?o:{}).length;return t>0&&t{const o=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:o.filter(t=>t.getCanSelect()).some(t=>t.getIsSelected()||t.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>o=>{e.toggleAllRowsSelected(o.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>o=>{e.toggleAllPageRowsSelected(o.target.checked)}},createRow:(e,o)=>{e.toggleSelected=(t,n)=>{const r=e.getIsSelected();o.setRowSelection(i=>{var s;if(t=typeof t<"u"?t:!r,e.getCanSelect()&&r===t)return i;const u={...i};return Le(u,e.id,t,(s=n?.selectChildren)!=null?s:!0,o),u})},e.getIsSelected=()=>{const{rowSelection:t}=o.getState();return Oe(e,t)},e.getIsSomeSelected=()=>{const{rowSelection:t}=o.getState();return Ae(e,t)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:t}=o.getState();return Ae(e,t)==="all"},e.getCanSelect=()=>{var t;return typeof o.options.enableRowSelection=="function"?o.options.enableRowSelection(e):(t=o.options.enableRowSelection)!=null?t:!0},e.getCanSelectSubRows=()=>{var t;return typeof o.options.enableSubRowSelection=="function"?o.options.enableSubRowSelection(e):(t=o.options.enableSubRowSelection)!=null?t:!0},e.getCanMultiSelect=()=>{var t;return typeof o.options.enableMultiRowSelection=="function"?o.options.enableMultiRowSelection(e):(t=o.options.enableMultiRowSelection)!=null?t:!0},e.getToggleSelectedHandler=()=>{const t=e.getCanSelect();return n=>{var r;t&&e.toggleSelected((r=n.target)==null?void 0:r.checked)}}}},Le=(e,o,t,n,r)=>{var i;const s=r.getRow(o,!0);t?(s.getCanMultiSelect()||Object.keys(e).forEach(u=>delete e[u]),s.getCanSelect()&&(e[o]=!0)):delete e[o],n&&(i=s.subRows)!=null&&i.length&&s.getCanSelectSubRows()&&s.subRows.forEach(u=>Le(e,u.id,t,n,r))};function De(e,o){const t=e.getState().rowSelection,n=[],r={},i=function(s,u){return s.map(a=>{var g;const f=Oe(a,t);if(f&&(n.push(a),r[a.id]=a),(g=a.subRows)!=null&&g.length&&(a={...a,subRows:i(a.subRows)}),f)return a}).filter(Boolean)};return{rows:i(o.rows),flatRows:n,rowsById:r}}function Oe(e,o){var t;return(t=o[e.id])!=null?t:!1}function Ae(e,o,t){var n;if(!((n=e.subRows)!=null&&n.length))return!1;let r=!0,i=!1;return e.subRows.forEach(s=>{if(!(i&&!r)&&(s.getCanSelect()&&(Oe(s,o)?i=!0:r=!1),s.subRows&&s.subRows.length)){const u=Ae(s,o);u==="all"?i=!0:(u==="some"&&(i=!0),r=!1)}}),r?"all":i?"some":!1}const Ge=/([0-9]+)/gm,Yt=(e,o,t)=>nt(re(e.getValue(t)).toLowerCase(),re(o.getValue(t)).toLowerCase()),Wt=(e,o,t)=>nt(re(e.getValue(t)),re(o.getValue(t))),Xt=(e,o,t)=>be(re(e.getValue(t)).toLowerCase(),re(o.getValue(t)).toLowerCase()),Kt=(e,o,t)=>be(re(e.getValue(t)),re(o.getValue(t))),Jt=(e,o,t)=>{const n=e.getValue(t),r=o.getValue(t);return n>r?1:nbe(e.getValue(t),o.getValue(t));function be(e,o){return e===o?0:e>o?1:-1}function re(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function nt(e,o){const t=e.split(Ge).filter(Boolean),n=o.split(Ge).filter(Boolean);for(;t.length&&n.length;){const r=t.shift(),i=n.shift(),s=parseInt(r,10),u=parseInt(i,10),a=[s,u].sort();if(isNaN(a[0])){if(r>i)return 1;if(i>r)return-1;continue}if(isNaN(a[1]))return isNaN(s)?-1:1;if(s>u)return 1;if(u>s)return-1}return t.length-n.length}const fe={alphanumeric:Yt,alphanumericCaseSensitive:Wt,text:Xt,textCaseSensitive:Kt,datetime:Jt,basic:Zt},Qt={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:U("sorting",e),isMultiSortEvent:o=>o.shiftKey}),createColumn:(e,o)=>{e.getAutoSortingFn=()=>{const t=o.getFilteredRowModel().flatRows.slice(10);let n=!1;for(const r of t){const i=r?.getValue(e.id);if(Object.prototype.toString.call(i)==="[object Date]")return fe.datetime;if(typeof i=="string"&&(n=!0,i.split(Ge).length>1))return fe.alphanumeric}return n?fe.text:fe.basic},e.getAutoSortDir=()=>{const t=o.getFilteredRowModel().flatRows[0];return typeof t?.getValue(e.id)=="string"?"asc":"desc"},e.getSortingFn=()=>{var t,n;if(!e)throw new Error;return Re(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(t=(n=o.options.sortingFns)==null?void 0:n[e.columnDef.sortingFn])!=null?t:fe[e.columnDef.sortingFn]},e.toggleSorting=(t,n)=>{const r=e.getNextSortingOrder(),i=typeof t<"u"&&t!==null;o.setSorting(s=>{const u=s?.find(l=>l.id===e.id),a=s?.findIndex(l=>l.id===e.id);let g=[],f,v=i?t:r==="desc";if(s!=null&&s.length&&e.getCanMultiSort()&&n?u?f="toggle":f="add":s!=null&&s.length&&a!==s.length-1?f="replace":u?f="toggle":f="replace",f==="toggle"&&(i||r||(f="remove")),f==="add"){var d;g=[...s,{id:e.id,desc:v}],g.splice(0,g.length-((d=o.options.maxMultiSortColCount)!=null?d:Number.MAX_SAFE_INTEGER))}else f==="toggle"?g=s.map(l=>l.id===e.id?{...l,desc:v}:l):f==="remove"?g=s.filter(l=>l.id!==e.id):g=[{id:e.id,desc:v}];return g})},e.getFirstSortDir=()=>{var t,n;return((t=(n=e.columnDef.sortDescFirst)!=null?n:o.options.sortDescFirst)!=null?t:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=t=>{var n,r;const i=e.getFirstSortDir(),s=e.getIsSorted();return s?s!==i&&((n=o.options.enableSortingRemoval)==null||n)&&(!(t&&(r=o.options.enableMultiRemove)!=null)||r)?!1:s==="desc"?"asc":"desc":i},e.getCanSort=()=>{var t,n;return((t=e.columnDef.enableSorting)!=null?t:!0)&&((n=o.options.enableSorting)!=null?n:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var t,n;return(t=(n=e.columnDef.enableMultiSort)!=null?n:o.options.enableMultiSort)!=null?t:!!e.accessorFn},e.getIsSorted=()=>{var t;const n=(t=o.getState().sorting)==null?void 0:t.find(r=>r.id===e.id);return n?n.desc?"desc":"asc":!1},e.getSortIndex=()=>{var t,n;return(t=(n=o.getState().sorting)==null?void 0:n.findIndex(r=>r.id===e.id))!=null?t:-1},e.clearSorting=()=>{o.setSorting(t=>t!=null&&t.length?t.filter(n=>n.id!==e.id):[])},e.getToggleSortingHandler=()=>{const t=e.getCanSort();return n=>{t&&(n.persist==null||n.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?o.options.isMultiSortEvent==null?void 0:o.options.isMultiSortEvent(n):!1))}}},createTable:e=>{e.setSorting=o=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(o),e.resetSorting=o=>{var t,n;e.setSorting(o?[]:(t=(n=e.initialState)==null?void 0:n.sorting)!=null?t:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},en=[_t,bt,At,Gt,Rt,$t,jt,Tt,Qt,Ht,Bt,qt,Nt,Ut,zt];function tn(e){var o,t;const n=[...en,...(o=e._features)!=null?o:[]];let r={_features:n};const i=r._features.reduce((d,l)=>Object.assign(d,l.getDefaultOptions==null?void 0:l.getDefaultOptions(r)),{}),s=d=>r.options.mergeOptions?r.options.mergeOptions(i,d):{...i,...d};let a={...{},...(t=e.initialState)!=null?t:{}};r._features.forEach(d=>{var l;a=(l=d.getInitialState==null?void 0:d.getInitialState(a))!=null?l:a});const g=[];let f=!1;const v={_features:n,options:{...i,...e},initialState:a,_queue:d=>{g.push(d),f||(f=!0,Promise.resolve().then(()=>{for(;g.length;)g.shift()();f=!1}).catch(l=>setTimeout(()=>{throw l})))},reset:()=>{r.setState(r.initialState)},setOptions:d=>{const l=oe(d,r.options);r.options=s(l)},getState:()=>r.options.state,setState:d=>{r.options.onStateChange==null||r.options.onStateChange(d)},_getRowId:(d,l,p)=>{var S;return(S=r.options.getRowId==null?void 0:r.options.getRowId(d,l,p))!=null?S:`${p?[p.id,l].join("."):l}`},getCoreRowModel:()=>(r._getCoreRowModel||(r._getCoreRowModel=r.options.getCoreRowModel(r)),r._getCoreRowModel()),getRowModel:()=>r.getPaginationRowModel(),getRow:(d,l)=>{let p=(l?r.getPrePaginationRowModel():r.getRowModel()).rowsById[d];if(!p&&(p=r.getCoreRowModel().rowsById[d],!p))throw new Error;return p},_getDefaultColumnDef:x(()=>[r.options.defaultColumn],d=>{var l;return d=(l=d)!=null?l:{},{header:p=>{const S=p.header.column.columnDef;return S.accessorKey?S.accessorKey:S.accessorFn?S.id:null},cell:p=>{var S,M;return(S=(M=p.renderValue())==null||M.toString==null?void 0:M.toString())!=null?S:null},...r._features.reduce((p,S)=>Object.assign(p,S.getDefaultColumnDef==null?void 0:S.getDefaultColumnDef()),{}),...d}},F(e,"debugColumns")),_getColumnDefs:()=>r.options.columns,getAllColumns:x(()=>[r._getColumnDefs()],d=>{const l=function(p,S,M){return M===void 0&&(M=0),p.map(V=>{const L=Ct(r,V,M,S),H=V;return L.columns=H.columns?l(H.columns,L,M+1):[],L})};return l(d)},F(e,"debugColumns")),getAllFlatColumns:x(()=>[r.getAllColumns()],d=>d.flatMap(l=>l.getFlatColumns()),F(e,"debugColumns")),_getAllFlatColumnsById:x(()=>[r.getAllFlatColumns()],d=>d.reduce((l,p)=>(l[p.id]=p,l),{}),F(e,"debugColumns")),getAllLeafColumns:x(()=>[r.getAllColumns(),r._getOrderColumnsFn()],(d,l)=>{let p=d.flatMap(S=>S.getLeafColumns());return l(p)},F(e,"debugColumns")),getColumn:d=>r._getAllFlatColumnsById()[d]};Object.assign(r,v);for(let d=0;dx(()=>[e.options.data],o=>{const t={rows:[],flatRows:[],rowsById:{}},n=function(r,i,s){i===void 0&&(i=0);const u=[];for(let g=0;ge._autoResetPageIndex()))}function on(e,o,t){return t.options.filterFromLeafRows?rn(e,o,t):sn(e,o,t)}function rn(e,o,t){var n;const r=[],i={},s=(n=t.options.maxLeafRowFilterDepth)!=null?n:100,u=function(a,g){g===void 0&&(g=0);const f=[];for(let d=0;dx(()=>[e.getPreFilteredRowModel(),e.getState().columnFilters,e.getState().globalFilter],(o,t,n)=>{if(!o.rows.length||!(t!=null&&t.length)&&!n){for(let d=0;d{var l;const p=e.getColumn(d.id);if(!p)return;const S=p.getFilterFn();S&&r.push({id:d.id,filterFn:S,resolvedValue:(l=S.resolveFilterValue==null?void 0:S.resolveFilterValue(d.value))!=null?l:d.value})});const s=(t??[]).map(d=>d.id),u=e.getGlobalFilterFn(),a=e.getAllLeafColumns().filter(d=>d.getCanGlobalFilter());n&&u&&a.length&&(s.push("__global__"),a.forEach(d=>{var l;i.push({id:d.id,filterFn:u,resolvedValue:(l=u.resolveFilterValue==null?void 0:u.resolveFilterValue(n))!=null?l:n})}));let g,f;for(let d=0;d{l.columnFiltersMeta[S]=M})}if(i.length){for(let p=0;p{l.columnFiltersMeta[S]=M})){l.columnFilters.__global__=!0;break}}l.columnFilters.__global__!==!0&&(l.columnFilters.__global__=!1)}}const v=d=>{for(let l=0;le._autoResetPageIndex()))}function un(){return e=>x(()=>[e.getState().sorting,e.getPreSortedRowModel()],(o,t)=>{if(!t.rows.length||!(o!=null&&o.length))return t;const n=e.getState().sorting,r=[],i=n.filter(a=>{var g;return(g=e.getColumn(a.id))==null?void 0:g.getCanSort()}),s={};i.forEach(a=>{const g=e.getColumn(a.id);g&&(s[a.id]={sortUndefined:g.columnDef.sortUndefined,invertSorting:g.columnDef.invertSorting,sortingFn:g.getSortingFn()})});const u=a=>{const g=a.map(f=>({...f}));return g.sort((f,v)=>{for(let l=0;l{var v;r.push(f),(v=f.subRows)!=null&&v.length&&(f.subRows=u(f.subRows))}),g};return{rows:u(t.rows),flatRows:r,rowsById:t.rowsById}},F(e.options,"debugTable","getSortedRowModel",()=>e._autoResetPageIndex()))}/** - * vue-table - * - * Copyright (c) TanStack - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function Ce(){return!0}const an=Symbol("merge-proxy"),gn={get(e,o,t){return o===an?t:e.get(o)},has(e,o){return e.has(o)},set:Ce,deleteProperty:Ce,getOwnPropertyDescriptor(e,o){return{configurable:!0,enumerable:!0,get(){return e.get(o)},set:Ce,deleteProperty:Ce}},ownKeys(e){return e.keys()}};function Ie(e){return"value"in e?e.value:e}function pe(){for(var e=arguments.length,o=new Array(e),t=0;t=0;r--){const i=Ie(o[r])[n];if(i!==void 0)return i}},has(n){for(let r=o.length-1;r>=0;r--)if(n in Ie(o[r]))return!0;return!1},keys(){const n=[];for(let r=0;r{},renderFallbackValue:null,mergeOptions(i,s){return o?{...i,...s}:pe(i,s)}},o?Ye(e):e),n=tn(t);if(o){const i=it(e.data);st(i,()=>{n.setState(s=>({...s,data:i.value}))},{immediate:!0})}const r=J(n.initialState);return lt(()=>{n.setOptions(i=>{var s;const u=new Proxy({},{get:(a,g)=>r.value[g]});return pe(i,o?Ye(e):e,{state:pe(u,(s=e.state)!=null?s:{}),onStateChange:a=>{a instanceof Function?r.value=a(r.value):r.value=a,e.onStateChange==null||e.onStateChange(a)}})})}),n}const cn={class:"min-h-screen bg-base-200"},fn={class:"container min-w-3/4 mx-auto px-4 py-8"},pn={class:"grid grid-cols-1 lg:grid-cols-2 gap-8"},mn={class:"lg:col-span-1"},hn={class:"card bg-base-100 shadow-lg sticky top-8"},vn={class:"card-body p-8"},Sn={class:"text-center mb-8"},wn={class:"text-4xl font-bold mt-2"},Cn={key:0,class:"flex justify-center py-8"},_n={key:1,class:"space-y-6"},Rn={class:"text-center"},$n={class:"text-center"},xn={class:"text-3xl font-bold"},Fn={class:"text-center"},yn={class:"text-3xl font-bold"},Mn={class:"text-center"},Vn={class:"text-3xl font-bold text-error"},Pn={class:"mt-6"},Dn={class:"overflow-x-auto"},In={class:"table table-sm w-full"},En={class:"font-bold"},Hn={class:"text-sm"},Ln={key:0,class:"badge badge-primary badge-sm ml-1"},An={key:1,class:"badge badge-warning badge-sm ml-1"},Gn={class:"text-right text-sm font-bold text-primary"},kn={class:"text-right text-sm"},zn={class:"text-right text-sm text-error"},On={class:"lg:col-span-1"},bn={class:"card bg-base-100 shadow-lg"},jn={class:"card-body"},Tn={for:"file-upload",class:"cursor-pointer flex flex-col items-center gap-3"},Bn={key:0,class:"mb-6"},qn={class:"space-y-2"},Nn={class:"flex-1 min-w-0"},Un={class:"font-medium truncate"},Yn={class:"text-xs text-base-content/70"},Wn=["onClick"],Xn={class:"flex gap-3"},Kn=["disabled"],Jn={key:0,class:"mdi mdi-send mr-2"},Zn={class:"card bg-base-100 shadow-lg mt-8"},Qn={class:"card-body"},eo={key:0,class:"text-center py-8"},to={key:1,class:"space-y-4"},no=["value"],oo={class:"text-sm text-base-content/70"},ro={key:0,class:"overflow-x-auto"},io={class:"table table-zebra w-full"},so=["onClick"],lo={class:"flex items-center justify-between"},uo={key:0},ao={key:1,class:"ml-auto"},go=["href"],co=["title"],fo={key:1,class:"text-center py-8"},po=at({__name:"Noita",setup(e){const o=J({username:"Player",rank:null,score:0,runsSubmitted:0,deathsCount:0,isStaff:!1}),t=J([]),n=J(!1),r=J(!1),i=J([]),s=J(!1),u=J([]),a=ht(),g=J([]),f=J([]),v=C=>C?$e(C).format("MMM DD, YYYY HH:mm"):"",d=[a.accessor("objectiv_id",{header:"Objective ID",cell:C=>C.getValue()}),a.accessor("total_points",{header:"Your points",cell:C=>C.getValue()||0}),a.accessor("first_seen_at",{header:"First seen",cell:C=>v(C.getValue()),sortingFn:(C,c)=>{const h=$e(C.original.first_seen_at),A=$e(c.original.first_seen_at);return C.original.first_seen_at?c.original.first_seen_at?h.isBefore(A)?-1:h.isAfter(A)?1:0:C.original.first_seen_at?0:1:c.original.first_seen_at?1:0}}),a.accessor("seed",{header:"Seed",cell:C=>C.getValue()})],l=je(()=>dn({get data(){return i.value},columns:d,state:{get sorting(){return g.value},get columnFilters(){return f.value}},onSortingChange:C=>{g.value=typeof C=="function"?C(g.value):C},onColumnFiltersChange:C=>{f.value=typeof C=="function"?C(f.value):C},getCoreRowModel:nn(),getFilteredRowModel:ln(),getSortedRowModel:un(),filterFns:{fuzzy:(C,c,h)=>{const A=C.getValue(c),ee=h.toLowerCase();return c==="first_seen_at"?v(A).includes(ee):String(A).toLowerCase().includes(ee)}}})),p=je(()=>l.value.getRowModel().rows),S=C=>{const c=C.target;c.files&&(t.value=Array.from(c.files))},M=C=>{C.preventDefault(),C.stopPropagation(),r.value=!0},V=C=>{C.preventDefault(),C.stopPropagation(),r.value=!1},L=C=>{C.preventDefault(),C.stopPropagation(),r.value=!1,C.dataTransfer?.files&&(t.value=Array.from(C.dataTransfer.files))},H=async()=>{if(t.value.length!==0){n.value=!0;try{for(const C of t.value){const c=new FormData;c.append("file",C);const h=await fetch("/api/noita/submit",{method:"POST",body:c});if(!h.ok){const ee=await h.json();alert(`Error submitting ${C.name}: ${ee.detail||"Unknown error"}`);return}const A=await h.json();console.log("Submission successful:",A)}t.value=[],alert("Run submitted successfully!"),await Promise.all([k(),b()])}catch(C){console.error("Error submitting run:",C),alert("Error submitting run. Please try again.")}finally{n.value=!1}}},q=()=>{window.location.href="/"},k=async()=>{try{const C=await fetch("/api/noita/results");if(!C.ok)throw new Error("Failed to fetch results");const c=await C.json();o.value.score=c.total_score,o.value.deathsCount=c.deaths_count,o.value.runsSubmitted=c.objectives.length,i.value=c.objectives}catch(C){console.error("Error fetching results:",C)}},b=async()=>{s.value=!0;try{const C=await fetch("/api/noita/leaderboard");if(!C.ok)throw new Error("Failed to fetch leaderboard");const c=await C.json();u.value=c.leaderboard;const h=u.value.find(A=>A.username===o.value.username);h&&(o.value.rank=h.rank,o.value.score=h.total_score,o.value.deathsCount=h.deaths_count)}catch(C){console.error("Error fetching leaderboard:",C)}finally{s.value=!1}},ie=async()=>{try{const C=await fetch("/api/cache/clear",{method:"POST"});if(C.ok)alert("Cache cleared successfully!"),await Promise.all([k(),b()]);else{const c=await C.json();alert(`Error clearing cache: ${c.detail||"Unknown error"}`)}}catch(C){console.error("Error clearing cache:",C),alert("Error clearing cache. Please try again.")}},Q=async()=>{try{const C=await fetch("/api/user");if(C.ok){const c=await C.json();c.is_authenticated&&(o.value.username=c.username,o.value.isStaff=c.is_staff||!1)}}catch(C){console.error("Error fetching user info:",C)}await Promise.all([k(),b()])};return gt(()=>{Q()}),(C,c)=>(E(),I("div",cn,[m("div",{class:"navbar bg-base-100 shadow-lg"},[m("div",{class:"container min-w-3/4 mx-auto w-full flex items-center gap-4"},[m("button",{onClick:q,class:"btn btn-primary btn-sm"},[...c[1]||(c[1]=[m("i",{class:"mdi mdi-arrow-left"},null,-1),W(" Back ",-1)])]),c[2]||(c[2]=m("h1",{class:"text-xl font-bold"},"Noita Submitter",-1)),c[3]||(c[3]=m("div",{class:"flex-1"},null,-1)),c[4]||(c[4]=m("a",{href:"/api/docs",class:"btn btn-xs"},"API docs",-1)),c[5]||(c[5]=m("a",{href:"/admin",class:"btn btn-xs btn-warning"},"Admin panel",-1))])]),m("div",fn,[m("div",pn,[m("div",mn,[m("div",hn,[c[16]||(c[16]=m("div",{class:"bg-gradient-to-br from-purple-600 to-purple-400 p-8 text-white rounded-t-2xl"},[m("h2",{class:"text-3xl font-bold"},[m("i",{class:"mdi mdi-trophy text-3xl"}),W(" Your Ranking ")])],-1)),m("div",vn,[m("div",Sn,[c[6]||(c[6]=m("p",{class:"text-base text-base-content/70"},"Player",-1)),m("p",wn,O(o.value.username),1)]),c[15]||(c[15]=m("div",{class:"divider"},null,-1)),s.value?(E(),I("div",Cn,[...c[7]||(c[7]=[m("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(E(),I("div",_n,[m("div",Rn,[c[8]||(c[8]=m("p",{class:"text-base text-base-content/70 mb-3"},"Current Rank",-1)),Te(Be,{rank:o.value.rank},null,8,["rank"])]),m("div",$n,[c[9]||(c[9]=m("p",{class:"text-base text-base-content/70 mb-2"},"Total Score",-1)),m("p",xn,O(o.value.score.toLocaleString()),1)]),m("div",Fn,[c[10]||(c[10]=m("p",{class:"text-base text-base-content/70 mb-2"},"Objectives Completed",-1)),m("p",yn,O(o.value.runsSubmitted),1)]),m("div",Mn,[c[11]||(c[11]=m("p",{class:"text-base text-base-content/70 mb-2"},"Deaths",-1)),m("p",Vn,O(o.value.deathsCount),1)])])),m("div",Pn,[c[13]||(c[13]=m("h3",{class:"font-bold text-lg mb-3"},"Global Leaderboard",-1)),m("div",Dn,[m("table",In,[c[12]||(c[12]=m("thead",null,[m("tr",null,[m("th",null,"Rank"),m("th",null,"Player"),m("th",{class:"text-right"},"Score"),m("th",{class:"text-right"},"Objectives"),m("th",{class:"text-right"},"Deaths")])],-1)),m("tbody",null,[(E(!0),I(ae,null,ce(u.value,h=>(E(),I("tr",{key:h.username,class:ne({"bg-primary/20":h.username===o.value.username})},[m("td",En,[Te(Be,{rank:h.rank},null,8,["rank"])]),m("td",Hn,[W(O(h.username)+" ",1),h.username===o.value.username?(E(),I("span",Ln," You ")):K("",!0),h.is_staff?(E(),I("span",An," admin ")):K("",!0)]),m("td",Gn,O(h.total_score.toLocaleString()),1),m("td",kn,O(h.objectives_count),1),m("td",zn,O(h.deaths_count),1)],2))),128))])])])]),o.value.isStaff?(E(),I("button",{key:2,onClick:ie,class:"btn btn-error btn-sm w-full mt-3"},[...c[14]||(c[14]=[m("i",{class:"mdi mdi-cache-clear mr-1"},null,-1),W(" Clear Cache ",-1)])])):K("",!0)])])]),m("div",On,[m("div",bn,[m("div",jn,[c[22]||(c[22]=m("h2",{class:"card-title text-2xl mb-6"},[m("i",{class:"mdi mdi-cloud-upload text-purple-500 mr-2"}),W(" Submit Your Run ")],-1)),m("div",{onDragover:M,onDragleave:V,onDrop:L,class:ne(["border-2 border-dashed rounded-lg p-8 text-center transition-colors cursor-pointer bg-base-200/50 mb-6",r.value?"border-primary bg-primary/10":"border-base-300 hover:border-primary"])},[m("input",{type:"file",multiple:"",onChange:S,class:"hidden",id:"file-upload",accept:"text/plain,text/x-log"},null,32),m("label",Tn,[m("i",{class:ne(["mdi text-4xl",r.value?"mdi-cloud-check text-primary":"mdi-file-upload text-base-content/50"])},null,2),c[17]||(c[17]=m("div",null,[m("p",{class:"font-semibold"},"Click to upload or drag and drop"),m("p",{class:"text-sm text-base-content/70"},[W("The log file "),m("code",null,"polylan_mod_log.txt")])],-1))])],34),t.value.length>0?(E(),I("div",Bn,[c[20]||(c[20]=m("p",{class:"font-semibold mb-3"},"Selected Files:",-1)),m("div",qn,[(E(!0),I(ae,null,ce(t.value,(h,A)=>(E(),I("div",{key:A,class:"flex items-center gap-3 bg-base-200 p-3 rounded-lg"},[c[19]||(c[19]=m("i",{class:"mdi mdi-file text-primary"},null,-1)),m("div",Nn,[m("p",Un,O(h.name),1),m("p",Yn,O((h.size/1024/1024).toFixed(2))+" MB",1)]),m("button",{onClick:ee=>t.value.splice(A,1),class:"btn btn-ghost btn-xs"},[...c[18]||(c[18]=[m("i",{class:"mdi mdi-close"},null,-1)])],8,Wn)]))),128))])])):K("",!0),m("div",Xn,[c[21]||(c[21]=m("label",{for:"file-upload",class:"btn btn-outline flex-1"},[m("i",{class:"mdi mdi-folder-open mr-2"}),W(" Choose Files ")],-1)),m("button",{onClick:H,disabled:t.value.length===0||n.value,class:ne(["btn btn-primary flex-1",{loading:n.value}])},[n.value?K("",!0):(E(),I("i",Jn)),W(" "+O(n.value?"Submitting...":"Submit Run"),1)],10,Kn)]),c[23]||(c[23]=m("p",{class:"text-xs text-base-content/70 text-center mt-4"}," Maximum file size: 256 MB per file ",-1))])]),m("div",Zn,[m("div",Qn,[c[27]||(c[27]=m("h2",{class:"card-title text-2xl mb-6"},[m("i",{class:"mdi mdi-view-list text-purple-500 mr-2"}),W(" Objectives ")],-1)),i.value.length===0?(E(),I("div",eo,[...c[24]||(c[24]=[m("p",{class:"text-base-content/70 mb-2"},"No objectives completed yet",-1),m("p",{class:"text-sm text-base-content/50"},"Submit your runs to unlock objectives!",-1)])])):K("",!0),i.value.length>0?(E(),I("div",to,[m("input",{value:f.value.find(h=>h.id==="objectiv_id")?.value??"",onInput:c[0]||(c[0]=h=>{const A=h.target;l.value.getColumn("objectiv_id")?.setFilterValue(A.value)}),type:"text",placeholder:"Search objectives...",class:"input input-bordered w-full"},null,40,no),m("div",oo," Showing "+O(p.value.length)+" of "+O(i.value.length)+" objectives ",1),p.value.length>0?(E(),I("div",ro,[m("table",io,[m("thead",null,[m("tr",null,[(E(!0),I(ae,null,ce(l.value.getHeaderGroups()[0]?.headers,h=>(E(),I("th",{key:h.id,class:ne(["cursor-pointer hover:bg-base-300",h.column.columnDef.id==="objectiv_id"?"text-left":"text-right"]),onClick:A=>h.column.toggleSorting()},[m("div",lo,[h.column.columnDef.id==="objectiv_id"?(E(),I("span",uo,O(h.isPlaceholder?null:h.column.columnDef.header),1)):(E(),I("span",ao,O(h.isPlaceholder?null:h.column.columnDef.header),1)),h.column.getIsSorted()?(E(),I("i",{key:2,class:ne(["mdi ml-2",h.column.getIsSorted()==="desc"?"mdi-arrow-down":"mdi-arrow-up"])},null,2)):K("",!0)])],10,so))),128))])]),m("tbody",null,[(E(!0),I(ae,null,ce(p.value,h=>(E(),I("tr",{key:h.id},[(E(!0),I(ae,null,ce(h.getVisibleCells(),A=>(E(),I("td",{key:A.id,class:ne([A.column.id==="objectiv_id"?"font-medium":"text-right"])},[A.column.id==="objectiv_id"?(E(),I("a",{key:0,href:`https://noita.wiki.gg/wiki/${h.original.objectiv_id}`,target:"_blank"},[W(O(h.original.display_string)+" ",1),c[25]||(c[25]=m("i",{class:"mdi mdi-open-in-new"},null,-1))],8,go)):A.column.id==="total_points"?(E(),I("span",{key:1,class:ne(h.original.count>=h.original.max_count?"text-primary":"text-error")},O(h.original.total_points)+" / "+O(h.original.points_per_objectiv*h.original.max_count),3)):A.column.id==="first_seen_at"?(E(),I("span",{key:2,title:v(h.original.first_seen_at)},O(v(h.original.first_seen_at)),9,co)):(E(),I(ae,{key:3},[W(O(A.renderValue()),1)],64))],2))),128))]))),128))])])])):K("",!0),p.value.length===0?(E(),I("div",fo,[...c[26]||(c[26]=[m("p",{class:"text-base-content/70"},"No objectives match your search",-1)])])):K("",!0)])):K("",!0)])])])])])]))}}),ot="#app",mo=document.querySelector(ot),ho=dt(po,{...mo?.dataset});ho.mount(ot); diff --git a/polylan_submitter/static_source/vite/assets/opus_magnum-CBjPWRy9.js b/polylan_submitter/static_source/vite/assets/opus_magnum-CBjPWRy9.js deleted file mode 100644 index b88cda3..0000000 --- a/polylan_submitter/static_source/vite/assets/opus_magnum-CBjPWRy9.js +++ /dev/null @@ -1,5 +0,0 @@ -import{e as Ut,r as O,m as Bt,t as Vt,c as te,i as ge,a as nt,b as us,d as fs,h as ms,f as hs,g as Gt,o as Wt,w as Ce,n as Se,j as vs,k as ue,l as d,p as c,q as oe,s as e,u as L,v as p,x as E,F as U,y as W,z as q,A as et,B as gs,C as de,D as Jt,E as ce,G as $e,H as ps,I as pe,J as ut,K as Ht,L as bs,M as ze,N as ys,O as _s}from"./style-CSeMeQaG.js";import{s as xs,p as ws,a as ks}from"./sdk.gen-CMTwTM_A.js";import{_ as ft}from"./RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js";/*! - * pinia v3.0.3 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let Kt;const Pe=o=>Kt=o,Yt=Symbol();function tt(o){return o&&typeof o=="object"&&Object.prototype.toString.call(o)==="[object Object]"&&typeof o.toJSON!="function"}var we;(function(o){o.direct="direct",o.patchObject="patch object",o.patchFunction="patch function"})(we||(we={}));function $s(){const o=Ut(!0),n=o.run(()=>O({}));let s=[],t=[];const a=Bt({install(l){Pe(a),a._a=l,l.provide(Yt,a),l.config.globalProperties.$pinia=a,t.forEach(i=>s.push(i)),t=[]},use(l){return this._a?s.push(l):t.push(l),this},_p:s,_a:null,_e:o,_s:new Map,state:n});return a}const Zt=()=>{};function mt(o,n,s,t=Zt){o.push(n);const a=()=>{const l=o.indexOf(n);l>-1&&(o.splice(l,1),t())};return!s&&Gt()&&Wt(a),a}function ve(o,...n){o.slice().forEach(s=>{s(...n)})}const zs=o=>o(),ht=Symbol(),Ee=Symbol();function st(o,n){o instanceof Map&&n instanceof Map?n.forEach((s,t)=>o.set(t,s)):o instanceof Set&&n instanceof Set&&n.forEach(o.add,o);for(const s in n){if(!n.hasOwnProperty(s))continue;const t=n[s],a=o[s];tt(a)&&tt(t)&&o.hasOwnProperty(s)&&!ge(t)&&!nt(t)?o[s]=st(a,t):o[s]=t}return o}const Ss=Symbol();function Cs(o){return!tt(o)||!Object.prototype.hasOwnProperty.call(o,Ss)}const{assign:me}=Object;function Ps(o){return!!(ge(o)&&o.effect)}function Ls(o,n,s,t){const{state:a,actions:l,getters:i}=n,m=s.state.value[o];let g;function b(){m||(s.state.value[o]=a?a():{});const k=vs(s.state.value[o]);return me(k,l,Object.keys(i||{}).reduce((S,w)=>(S[w]=Bt(te(()=>{Pe(s);const r=s._s.get(o);return i[w].call(r,r)})),S),{}))}return g=Qt(o,b,n,s,t,!0),g}function Qt(o,n,s={},t,a,l){let i;const m=me({actions:{}},s),g={deep:!0};let b,k,S=[],w=[],r;const u=t.state.value[o];!l&&!u&&(t.state.value[o]={}),O({});let y;function v(R){let T;b=k=!1,typeof R=="function"?(R(t.state.value[o]),T={type:we.patchFunction,storeId:o,events:r}):(st(t.state.value[o],R),T={type:we.patchObject,payload:R,storeId:o,events:r});const B=y=Symbol();Se().then(()=>{y===B&&(b=!0)}),k=!0,ve(S,T,t.state.value[o])}const f=l?function(){const{state:T}=s,B=T?T():{};this.$patch(Y=>{me(Y,B)})}:Zt;function h(){i.stop(),S=[],w=[],t._s.delete(o)}const _=(R,T="")=>{if(ht in R)return R[Ee]=T,R;const B=function(){Pe(t);const Y=Array.from(arguments),re=[],fe=[];function be(V){re.push(V)}function se(V){fe.push(V)}ve(w,{args:Y,name:B[Ee],store:D,after:be,onError:se});let ne;try{ne=R.apply(this&&this.$id===o?this:D,Y)}catch(V){throw ve(fe,V),V}return ne instanceof Promise?ne.then(V=>(ve(re,V),V)).catch(V=>(ve(fe,V),Promise.reject(V))):(ve(re,ne),ne)};return B[ht]=!0,B[Ee]=T,B},M={_p:t,$id:o,$onAction:mt.bind(null,w),$patch:v,$reset:f,$subscribe(R,T={}){const B=mt(S,R,T.detached,()=>Y()),Y=i.run(()=>Ce(()=>t.state.value[o],re=>{(T.flush==="sync"?k:b)&&R({storeId:o,type:we.direct,events:r},re)},me({},g,T)));return B},$dispose:h},D=hs(M);t._s.set(o,D);const C=(t._a&&t._a.runWithContext||zs)(()=>t._e.run(()=>(i=Ut()).run(()=>n({action:_}))));for(const R in C){const T=C[R];if(ge(T)&&!Ps(T)||nt(T))l||(u&&Cs(T)&&(ge(T)?T.value=u[R]:st(T,u[R])),t.state.value[o][R]=T);else if(typeof T=="function"){const B=_(T,R);C[R]=B,m.actions[R]=T}}return me(D,C),me(Vt(D),C),Object.defineProperty(D,"$state",{get:()=>t.state.value[o],set:R=>{v(T=>{me(T,R)})}}),t._p.forEach(R=>{me(D,i.run(()=>R({store:D,app:t._a,pinia:t,options:m})))}),u&&l&&s.hydrate&&s.hydrate(D.$state,u),b=!0,k=!0,D}/*! #__NO_SIDE_EFFECTS__ */function at(o,n,s){let t;const a=typeof n=="function";t=a?s:n;function l(i,m){const g=ms();return i=i||(g?fs(Yt,null):null),i&&Pe(i),i=Kt,i._s.has(o)||(a?Qt(o,n,t,i):Ls(o,t,i)),i._s.get(o)}return l.$id=o,l}function rt(o){const n=Vt(o),s={};for(const t in n){const a=n[t];a.effect?s[t]=te({get:()=>o[t],set(l){o[t]=l}}):(ge(a)||nt(a))&&(s[t]=us(o,t))}return s}const vt="/api";class Rs{async request(n,s={}){try{const t=await fetch(`${vt}${n}`,{headers:{"Content-Type":"application/json",...s.headers},...s}),a=await t.json();return t.ok?{data:a,status:t.status}:{error:a.detail||`HTTP ${t.status}`,status:t.status}}catch(t){return{error:t instanceof Error?t.message:"Network error",status:0}}}async uploadRequest(n,s){try{const t=await fetch(`${vt}${n}`,{method:"POST",body:s}),a=await t.json();return t.ok?{data:a,status:t.status}:{error:a.detail||`HTTP ${t.status}`,status:t.status}}catch(t){return{error:t instanceof Error?t.message:"Network error",status:0}}}async getGames(){return this.request("/games/")}async getPuzzles(){return this.request("/submissions/puzzles")}async getCollection(){return this.request("/submissions/collection")}async getTopSubmissions(n=5){return this.request(`/results/top-submissions?limit=${n}`)}async getPuzzleResults(n=5){return this.request(`/results/puzzle-results?limit=${n}`)}async getSubmissions(n=20,s=0){return this.request(`/submissions/submissions?limit=${n}&offset=${s}`)}async getSubmission(n){return this.request(`/submissions/submissions/${n}`)}async createSubmission(n,s){const t=new FormData;return t.append("data",JSON.stringify(n)),s.forEach(a=>{t.append("files",a)}),this.uploadRequest("/submissions/submissions",t)}async validateResponse(n,s){return this.request(`/submissions/responses/${n}/validate`,{method:"PUT",body:JSON.stringify(s)})}async autoValidateResponses(n){return this.request(`/submissions/responses/${n}/validate/auto`,{method:"PUT"})}async getResponsesNeedingValidation(){return this.request("/submissions/responses/needs-validation")}async validateSubmission(n){return this.request(`/submissions/submissions/${n}/validate`,{method:"POST"})}async deleteSubmission(n){return this.request(`/submissions/submissions/${n}`,{method:"DELETE"})}async getStats(){return this.request("/submissions/stats")}async healthCheck(){return this.request("/health")}async getUserInfo(){return this.request("/user")}async getMarkets(){return this.request("/market/")}async placeBet(n,s){return this.request(`/market/${n}/bets`,{method:"POST",body:JSON.stringify(s)})}async getUserBets(){return this.request("/market/user/bets")}async closeMarket(n){return this.request(`/market/${n}/actions/close`,{method:"POST"})}async resolveMarket(n,s){return this.request(`/market/${n}/actions/resolve`,{method:"POST",body:JSON.stringify({winning_option_uuid:s})})}}const ae=new Rs,Es={async loadPuzzles(){const o=await ae.getPuzzles();return o.error?(console.error("Failed to load puzzles:",o.error),[]):o.data||[]},findPuzzleByName(o,n){if(!n)return null;let s=o.find(t=>t.title.toLowerCase()===n.toLowerCase());return s||(s=o.find(t=>t.title.toLowerCase().includes(n.toLowerCase())||n.toLowerCase().includes(t.title.toLowerCase()))),s||null}},gt={async createFromFiles(o,n,s,t){const a=o.map(i=>{const m=Es.findPuzzleByName(n,i.ocrData?.puzzle||"");if(m)return{puzzle_id:m.id,puzzle_name:i.ocrData?.puzzle||"",cost:i.ocrData?.cost,cycles:i.ocrData?.cycles,area:i.ocrData?.area,needs_manual_validation:(i.ocrData?.confidence.overall??0)<=.8,ocr_confidence_cost:i.ocrData?.confidence?.cost||0,ocr_confidence_cycles:i.ocrData?.confidence?.cycles||0,ocr_confidence_area:i.ocrData?.confidence?.area||0}}).filter(i=>i!==void 0),l=o.map(i=>i.file);return ae.createSubmission({notes:s,manual_validation_requested:t,responses:a},l)},async loadSubmissions(o=20,n=0){const s=await ae.getSubmissions(o,n);return s.error?(console.error("Failed to load submissions:",s.error),[]):s.data?.items||[]}},Xt={getErrorMessage(o){return typeof o=="string"?o:o instanceof Error?o.message:typeof o=="object"&&o!==null&&"detail"in o?String(o.detail):"An unknown error occurred"},isNetworkError(o){return typeof o=="string"&&o.includes("Network")},isValidationError(o){return o===400},isAuthError(o){return o===401||o===403}},Le=at("puzzles",()=>{const o=O([]),n=O(!1),s=O(""),t=te(()=>o.value.map(m=>m.title)),a=te(()=>m=>{if(!m)return null;const g=o.value.find(k=>k.title.toLowerCase()===m.toLowerCase());return g||o.value.find(k=>k.title.toLowerCase().includes(m.toLowerCase())||m.toLowerCase().includes(k.title.toLowerCase()))||null}),l=async()=>{if(!(o.value.length>0))try{n.value=!0,s.value="";const m=await xs();if(m.error){s.value=String(m.error),console.error("Failed to load puzzles:",m.error);return}m.data&&(o.value=m.data)}catch(m){s.value="Failed to load puzzles",console.error("Error loading puzzles:",m)}finally{n.value=!1}};return{puzzles:o,isLoading:n,error:s,puzzleNames:t,findPuzzleByName:a,loadPuzzles:l,refreshPuzzles:async()=>{o.value=[],await l()}}}),lt=at("submissions",()=>{const o=O([]),n=O(!1),s=O(""),t=O(!1),a=Le(),{puzzles:l}=rt(a),i=async(w=20,r=0)=>{try{n.value=!0,s.value="";const u=await gt.loadSubmissions(w,r);r===0?o.value=u:o.value.push(...u)}catch(u){s.value="Failed to load submissions",console.error("Error loading submissions:",u)}finally{n.value=!1}},m=async(w,r,u)=>{try{n.value=!0,s.value="";const y=await gt.createFromFiles(w,l.value,r,u);if(y.error)throw s.value=y.error,new Error(y.error);return y.data?(o.value.unshift(y.data),y.data):void 0}catch(y){throw s.value=y instanceof Error?y.message:"Failed to create submission",y}finally{n.value=!1}},g=()=>{t.value=!0},b=()=>{t.value=!1};return{submissions:o,isLoading:n,error:s,isSubmissionModalOpen:t,loadSubmissions:i,createSubmission:m,openSubmissionModal:g,closeSubmissionModal:b,refreshSubmissions:async()=>{o.value=[],await i()},handleSubmission:async w=>{try{n.value=!0,s.value="";const r=await m(w.files,w.notes,w.manualValidationRequested);if(r){const u=r.responses.map(y=>y.puzzle_name).join(", ");alert(`Solutions submitted successfully for puzzles: ${u}`)}else alert("Submission created successfully!");b()}catch(r){const u=Xt.getErrorMessage(r);s.value=u,alert(`Submission failed: ${u}`),console.error("Submission error:",r)}finally{n.value=!1}}}}),Os={class:"card-body"},Ms={class:"flex items-start justify-between"},Ns={class:"flex-1"},As={class:"text-sm text-base-content/70 mb-2"},Ds={class:"flex items-center gap-2 mb-3"},Ts={class:"badge badge-primary badge-sm"},js={class:"badge badge-ghost badge-sm"},Is={key:0,class:"text-sm text-base-content/80 mb-4"},qs={key:1,class:"bg-base-200 p-3 rounded-lg mb-4"},Fs={class:"grid grid-cols-3 gap-2"},Us={class:"text-center"},Bs={class:"font-bold text-primary"},Vs={class:"text-center"},Gs={class:"font-bold text-primary"},Ws={class:"text-center"},Js={class:"font-bold text-primary"},Hs={key:2,class:"flex flex-wrap gap-1 mb-4"},Ks={key:0,class:"badge badge-outline badge-xs"},Ys={class:"flex flex-col items-end gap-2"},Zs={class:"tooltip","data-tip":"View on Steam Workshop"},Qs=["href"],Xs={key:0,class:"mt-1"},eo={class:"divider"},to={class:"text-sm font-medium"},so={class:"table table-xs"},oo={key:0,class:"badge badge-success badge-xs"},no={key:1,class:"text-base-content/50"},ao={key:0,class:"badge badge-info badge-xs"},ro={key:1,class:"text-base-content/50"},lo={key:0,class:"badge badge-warning badge-xs"},io={key:1,class:"text-base-content/50"},co={class:"flex items-center gap-1"},uo={class:"badge badge-ghost badge-xs"},fo=["data-tip"],mo={key:1,class:"tooltip","data-tip":"Needs manual validation"},ho=ue({__name:"PuzzleCard",props:{puzzle:{},responses:{}},setup(o){const{openSubmissionModal:n}=lt();return(s,t)=>(c(),d("div",{class:oe(["card bg-base-100 shadow-lg hover:shadow-2xl transition-shadow duration-300",o.responses?.length==0?"shadow-red-900":"shadow-primary-300"])},[e("div",Os,[e("div",Ms,[e("div",Ns,[e("h3",{class:oe(["card-title text-lg font-bold",o.responses?.length==0?"text-error":"text-primary"])},p(o.puzzle.title),3),e("p",As," by "+p(o.puzzle.author_name),1),e("div",Ds,[e("div",Ts,p(o.puzzle.steam_item_id),1),e("div",js,"ID: "+p(o.puzzle.id),1)]),o.puzzle.description?(c(),d("p",Is,p(o.puzzle.description),1)):L("",!0),o.puzzle.points_factor?(c(),d("div",qs,[t[7]||(t[7]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-2"},"Points Coefficients",-1)),e("div",Fs,[e("div",Us,[e("span",Bs,[t[1]||(t[1]=e("small",null,"x",-1)),E(p(o.puzzle.points_factor.cost),1)]),t[2]||(t[2]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",Vs,[e("span",Gs,[t[3]||(t[3]=e("small",null,"x",-1)),E(p(o.puzzle.points_factor.cycles),1)]),t[4]||(t[4]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",Ws,[e("span",Js,[t[5]||(t[5]=e("small",null,"x",-1)),E(p(o.puzzle.points_factor.area),1)]),t[6]||(t[6]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),o.puzzle.tags&&o.puzzle.tags.length>0?(c(),d("div",Hs,[(c(!0),d(U,null,W(o.puzzle.tags.slice(0,3),a=>(c(),d("span",{key:a,class:"badge badge-outline badge-xs"},p(a),1))),128)),o.puzzle.tags.length>3?(c(),d("span",Ks," +"+p(o.puzzle.tags.length-3)+" more ",1)):L("",!0)])):L("",!0)]),e("div",Ys,[e("div",Zs,[e("a",{href:`https://steamcommunity.com/workshop/filedetails/?id=${o.puzzle.steam_item_id}`,target:"_blank",class:"btn btn-ghost btn-sm btn-square"},[...t[8]||(t[8]=[e("i",{class:"mdi mdi-steam text-lg"},null,-1)])],8,Qs)])])]),o.responses&&o.responses.length>0?(c(),d("div",Xs,[e("div",eo,[e("span",to,"Solutions ("+p(o.responses.length)+")",1)]),e("div",null,[e("table",so,[t[11]||(t[11]=e("thead",null,[e("tr",null,[e("th",null,"Cost"),e("th",null,"Cycles"),e("th",null,"Area"),e("th",null,"Files")])],-1)),e("tbody",null,[(c(!0),d(U,null,W(o.responses,a=>(c(),d("tr",{key:a.id,class:"hover"},[e("td",null,[a.final_cost||a.cost?(c(),d("span",oo,p(a.final_cost||a.cost),1)):(c(),d("span",no,"-"))]),e("td",null,[a.final_cycles||a.cycles?(c(),d("span",ao,p(a.final_cycles||a.cycles),1)):(c(),d("span",ro,"-"))]),e("td",null,[a.final_area||a.area?(c(),d("span",lo,p(a.final_area||a.area),1)):(c(),d("span",io,"-"))]),e("td",null,[e("div",co,[e("span",uo,p(a.files?.length||0),1),a.files?.length?(c(),d("div",{key:0,class:"tooltip","data-tip":a.files.map(l=>l.original_filename||l.file?.name).join(", ")},[...t[9]||(t[9]=[e("i",{class:"mdi mdi-information-outline text-xs"},null,-1)])],8,fo)):L("",!0),a.needs_manual_validation?(c(),d("div",mo,[...t[10]||(t[10]=[e("i",{class:"mdi mdi-alert-circle text-xs text-warning"},null,-1)])])):L("",!0)])])]))),128))])])])])):(c(),d("div",{key:1,class:"mt-6 text-center py-4 border-2 border-dashed border-base-300 rounded-lg hover:border-primary transition-colors duration-300 cursor-pointer",onClick:t[0]||(t[0]=(...a)=>q(n)&&q(n)(...a))},[...t[12]||(t[12]=[e("i",{class:"mdi mdi-upload text-2xl text-base-content/40"},null,-1),e("p",{class:"text-sm text-base-content/60 mt-2"},"No solutions yet",-1),e("p",{class:"text-xs text-base-content/40"}," Upload solutions using the submit button ",-1)])]))])],2))}});var Oe={exports:{}},pt;function vo(){return pt||(pt=1,(function(o){var n=(function(s){var t=Object.prototype,a=t.hasOwnProperty,l=Object.defineProperty||function($,x,z){$[x]=z.value},i,m=typeof Symbol=="function"?Symbol:{},g=m.iterator||"@@iterator",b=m.asyncIterator||"@@asyncIterator",k=m.toStringTag||"@@toStringTag";function S($,x,z){return Object.defineProperty($,x,{value:z,enumerable:!0,configurable:!0,writable:!0}),$[x]}try{S({},"")}catch{S=function(x,z,N){return x[z]=N}}function w($,x,z,N){var P=x&&x.prototype instanceof _?x:_,I=Object.create(P.prototype),K=new ne(N||[]);return l(I,"_invoke",{value:re($,z,K)}),I}s.wrap=w;function r($,x,z){try{return{type:"normal",arg:$.call(x,z)}}catch(N){return{type:"throw",arg:N}}}var u="suspendedStart",y="suspendedYield",v="executing",f="completed",h={};function _(){}function M(){}function D(){}var F={};S(F,g,function(){return this});var C=Object.getPrototypeOf,R=C&&C(C(V([])));R&&R!==t&&a.call(R,g)&&(F=R);var T=D.prototype=_.prototype=Object.create(F);M.prototype=D,l(T,"constructor",{value:D,configurable:!0}),l(D,"constructor",{value:M,configurable:!0}),M.displayName=S(D,k,"GeneratorFunction");function B($){["next","throw","return"].forEach(function(x){S($,x,function(z){return this._invoke(x,z)})})}s.isGeneratorFunction=function($){var x=typeof $=="function"&&$.constructor;return x?x===M||(x.displayName||x.name)==="GeneratorFunction":!1},s.mark=function($){return Object.setPrototypeOf?Object.setPrototypeOf($,D):($.__proto__=D,S($,k,"GeneratorFunction")),$.prototype=Object.create(T),$},s.awrap=function($){return{__await:$}};function Y($,x){function z(I,K,J,X){var G=r($[I],$,K);if(G.type==="throw")X(G.arg);else{var ye=G.arg,he=ye.value;return he&&typeof he=="object"&&a.call(he,"__await")?x.resolve(he.__await).then(function(le){z("next",le,J,X)},function(le){z("throw",le,J,X)}):x.resolve(he).then(function(le){ye.value=le,J(ye)},function(le){return z("throw",le,J,X)})}}var N;function P(I,K){function J(){return new x(function(X,G){z(I,K,X,G)})}return N=N?N.then(J,J):J()}l(this,"_invoke",{value:P})}B(Y.prototype),S(Y.prototype,b,function(){return this}),s.AsyncIterator=Y,s.async=function($,x,z,N,P){P===void 0&&(P=Promise);var I=new Y(w($,x,z,N),P);return s.isGeneratorFunction(x)?I:I.next().then(function(K){return K.done?K.value:I.next()})};function re($,x,z){var N=u;return function(I,K){if(N===v)throw new Error("Generator is already running");if(N===f){if(I==="throw")throw K;return Q()}for(z.method=I,z.arg=K;;){var J=z.delegate;if(J){var X=fe(J,z);if(X){if(X===h)continue;return X}}if(z.method==="next")z.sent=z._sent=z.arg;else if(z.method==="throw"){if(N===u)throw N=f,z.arg;z.dispatchException(z.arg)}else z.method==="return"&&z.abrupt("return",z.arg);N=v;var G=r($,x,z);if(G.type==="normal"){if(N=z.done?f:y,G.arg===h)continue;return{value:G.arg,done:z.done}}else G.type==="throw"&&(N=f,z.method="throw",z.arg=G.arg)}}}function fe($,x){var z=x.method,N=$.iterator[z];if(N===i)return x.delegate=null,z==="throw"&&$.iterator.return&&(x.method="return",x.arg=i,fe($,x),x.method==="throw")||z!=="return"&&(x.method="throw",x.arg=new TypeError("The iterator does not provide a '"+z+"' method")),h;var P=r(N,$.iterator,x.arg);if(P.type==="throw")return x.method="throw",x.arg=P.arg,x.delegate=null,h;var I=P.arg;if(!I)return x.method="throw",x.arg=new TypeError("iterator result is not an object"),x.delegate=null,h;if(I.done)x[$.resultName]=I.value,x.next=$.nextLoc,x.method!=="return"&&(x.method="next",x.arg=i);else return I;return x.delegate=null,h}B(T),S(T,k,"Generator"),S(T,g,function(){return this}),S(T,"toString",function(){return"[object Generator]"});function be($){var x={tryLoc:$[0]};1 in $&&(x.catchLoc=$[1]),2 in $&&(x.finallyLoc=$[2],x.afterLoc=$[3]),this.tryEntries.push(x)}function se($){var x=$.completion||{};x.type="normal",delete x.arg,$.completion=x}function ne($){this.tryEntries=[{tryLoc:"root"}],$.forEach(be,this),this.reset(!0)}s.keys=function($){var x=Object($),z=[];for(var N in x)z.push(N);return z.reverse(),function P(){for(;z.length;){var I=z.pop();if(I in x)return P.value=I,P.done=!1,P}return P.done=!0,P}};function V($){if($){var x=$[g];if(x)return x.call($);if(typeof $.next=="function")return $;if(!isNaN($.length)){var z=-1,N=function P(){for(;++z<$.length;)if(a.call($,z))return P.value=$[z],P.done=!1,P;return P.value=i,P.done=!0,P};return N.next=N}}return{next:Q}}s.values=V;function Q(){return{value:i,done:!0}}return ne.prototype={constructor:ne,reset:function($){if(this.prev=0,this.next=0,this.sent=this._sent=i,this.done=!1,this.delegate=null,this.method="next",this.arg=i,this.tryEntries.forEach(se),!$)for(var x in this)x.charAt(0)==="t"&&a.call(this,x)&&!isNaN(+x.slice(1))&&(this[x]=i)},stop:function(){this.done=!0;var $=this.tryEntries[0],x=$.completion;if(x.type==="throw")throw x.arg;return this.rval},dispatchException:function($){if(this.done)throw $;var x=this;function z(X,G){return I.type="throw",I.arg=$,x.next=X,G&&(x.method="next",x.arg=i),!!G}for(var N=this.tryEntries.length-1;N>=0;--N){var P=this.tryEntries[N],I=P.completion;if(P.tryLoc==="root")return z("end");if(P.tryLoc<=this.prev){var K=a.call(P,"catchLoc"),J=a.call(P,"finallyLoc");if(K&&J){if(this.prev=0;--z){var N=this.tryEntries[z];if(N.tryLoc<=this.prev&&a.call(N,"finallyLoc")&&this.prev=0;--x){var z=this.tryEntries[x];if(z.finallyLoc===$)return this.complete(z.completion,z.afterLoc),se(z),h}},catch:function($){for(var x=this.tryEntries.length-1;x>=0;--x){var z=this.tryEntries[x];if(z.tryLoc===$){var N=z.completion;if(N.type==="throw"){var P=N.arg;se(z)}return P}}throw new Error("illegal catch attempt")},delegateYield:function($,x,z){return this.delegate={iterator:V($),resultName:x,nextLoc:z},this.method==="next"&&(this.arg=i),h}},s})(o.exports);try{regeneratorRuntime=n}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}})(Oe)),Oe.exports}var Me,bt;function it(){return bt||(bt=1,Me=(o,n)=>`${o}-${n}-${Math.random().toString(16).slice(3,8)}`),Me}var Ne,yt;function es(){if(yt)return Ne;yt=1;const o=it();let n=0;return Ne=({id:s,action:t,payload:a={}})=>{let l=s;return typeof l>"u"&&(l=o("Job",n),n+=1),{id:l,action:t,payload:a}},Ne}var _e={},_t;function ct(){if(_t)return _e;_t=1;let o=!1;return _e.logging=o,_e.setLogging=n=>{o=n},_e.log=(...n)=>o?console.log.apply(this,n):null,_e}var Ae,xt;function go(){if(xt)return Ae;xt=1;const o=es(),{log:n}=ct(),s=it();let t=0;return Ae=()=>{const a=s("Scheduler",t),l={},i={};let m=[];t+=1;const g=()=>m.length,b=()=>Object.keys(l).length,k=()=>{if(m.length!==0){const y=Object.keys(l);for(let v=0;v"u"){m[0](l[y[v]]);break}}},S=(y,v)=>new Promise((f,h)=>{const _=o({action:y,payload:v});m.push(async M=>{m.shift(),i[M.id]=_;try{f(await M[y].apply(this,[...v,_.id]))}catch(D){h(D)}finally{delete i[M.id],k()}}),n(`[${a}]: Add ${_.id} to JobQueue`),n(`[${a}]: JobQueue length=${m.length}`),k()});return{addWorker:y=>(l[y.id]=y,n(`[${a}]: Add ${y.id}`),n(`[${a}]: Number of workers=${b()}`),k(),y.id),addJob:async(y,...v)=>{if(b()===0)throw Error(`[${a}]: You need to have at least one worker before adding jobs`);return S(y,v)},terminate:async()=>{Object.keys(l).forEach(async y=>{await l[y].terminate()}),m=[]},getQueueLen:g,getNumWorkers:b}},Ae}function po(o){throw new Error('Could not dynamically require "'+o+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var De,wt;function bo(){if(wt)return De;wt=1;function o(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}return De=o,De}var Te,kt;function yo(){if(kt)return Te;kt=1;const o=bo();return Te=n=>{const s={};return typeof WorkerGlobalScope<"u"?s.type="webworker":o()?s.type="electron":typeof document=="object"?s.type="browser":typeof process=="object"&&typeof po=="function"&&(s.type="node"),typeof n>"u"?s:s[n]},Te}var je,$t;function _o(){if($t)return je;$t=1;const n=yo()("type")==="browser"?s=>new URL(s,window.location.href).href:s=>s;return je=s=>{const t={...s};return["corePath","workerPath","langPath"].forEach(a=>{s[a]&&(t[a]=n(t[a]))}),t},je}var Ie,zt;function xo(){return zt||(zt=1,Ie=o=>{const n=[],s=[],t=[],a=[],l=[];return o.blocks&&o.blocks.forEach(i=>{i.paragraphs.forEach(m=>{m.lines.forEach(g=>{g.words.forEach(b=>{b.symbols.forEach(k=>{l.push({...k,page:o,block:i,paragraph:m,line:g,word:b})}),a.push({...b,page:o,block:i,paragraph:m,line:g})}),t.push({...g,page:o,block:i,paragraph:m})}),s.push({...m,page:o,block:i})}),n.push({...i,page:o})}),{...o,blocks:n,paragraphs:s,lines:t,words:a,symbols:l}}),Ie}var qe,St;function ts(){return St||(St=1,qe={TESSERACT_ONLY:0,LSTM_ONLY:1,TESSERACT_LSTM_COMBINED:2,DEFAULT:3}),qe}const wo="5.1.1",ko={version:wo};var Fe,Ct;function $o(){return Ct||(Ct=1,Fe={workerBlobURL:!0,logger:()=>{}}),Fe}var Ue,Pt;function zo(){if(Pt)return Ue;Pt=1;const o=ko.version;return Ue={...$o(),workerPath:`https://cdn.jsdelivr.net/npm/tesseract.js@v${o}/dist/worker.min.js`},Ue}var Be,Lt;function So(){return Lt||(Lt=1,Be=({workerPath:o,workerBlobURL:n})=>{let s;if(Blob&&URL&&n){const t=new Blob([`importScripts("${o}");`],{type:"application/javascript"});s=new Worker(URL.createObjectURL(t))}else s=new Worker(o);return s}),Be}var Ve,Rt;function Co(){return Rt||(Rt=1,Ve=o=>{o.terminate()}),Ve}var Ge,Et;function Po(){return Et||(Et=1,Ge=(o,n)=>{o.onmessage=({data:s})=>{n(s)}}),Ge}var We,Ot;function Lo(){return Ot||(Ot=1,We=async(o,n)=>{o.postMessage(n)}),We}var Je,Mt;function Ro(){if(Mt)return Je;Mt=1;const o=s=>new Promise((t,a)=>{const l=new FileReader;l.onload=()=>{t(l.result)},l.onerror=({target:{error:{code:i}}})=>{a(Error(`File could not be read! Code=${i}`))},l.readAsArrayBuffer(s)}),n=async s=>{let t=s;if(typeof s>"u")return"undefined";if(typeof s=="string")/data:image\/([a-zA-Z]*);base64,([^"]*)/.test(s)?t=atob(s.split(",")[1]).split("").map(a=>a.charCodeAt(0)):t=await(await fetch(s)).arrayBuffer();else if(typeof HTMLElement<"u"&&s instanceof HTMLElement)s.tagName==="IMG"&&(t=await n(s.src)),s.tagName==="VIDEO"&&(t=await n(s.poster)),s.tagName==="CANVAS"&&await new Promise(a=>{s.toBlob(async l=>{t=await o(l),a()})});else if(typeof OffscreenCanvas<"u"&&s instanceof OffscreenCanvas){const a=await s.convertToBlob();t=await o(a)}else(s instanceof File||s instanceof Blob)&&(t=await o(s));return new Uint8Array(t)};return Je=n,Je}var He,Nt;function Eo(){if(Nt)return He;Nt=1;const o=zo(),n=So(),s=Co(),t=Po(),a=Lo(),l=Ro();return He={defaultOptions:o,spawnWorker:n,terminateWorker:s,onMessage:t,send:a,loadImage:l},He}var Ke,At;function ss(){if(At)return Ke;At=1;const o=_o(),n=xo(),s=es(),{log:t}=ct(),a=it(),l=ts(),{defaultOptions:i,spawnWorker:m,terminateWorker:g,onMessage:b,loadImage:k,send:S}=Eo();let w=0;return Ke=async(r="eng",u=l.LSTM_ONLY,y={},v={})=>{const f=a("Worker",w),{logger:h,errorHandler:_,...M}=o({...i,...y}),D={},F={},C=typeof r=="string"?r.split("+"):r;let R=u,T=v;const B=[l.DEFAULT,l.LSTM_ONLY].includes(u)&&!M.legacyCore;let Y,re;const fe=new Promise((A,j)=>{re=A,Y=j}),be=A=>{Y(A.message)};let se=m(M);se.onerror=be,w+=1;const ne=(A,j)=>{D[A]=j},V=(A,j)=>{F[A]=j},Q=({id:A,action:j,payload:H})=>new Promise((ee,Z)=>{t(`[${f}]: Start ${A}, action=${j}`);const ie=`${j}-${A}`;ne(ie,ee),V(ie,Z),S(se,{workerId:f,jobId:A,action:j,payload:H})}),$=()=>console.warn("`load` is depreciated and should be removed from code (workers now come pre-loaded)"),x=A=>Q(s({id:A,action:"load",payload:{options:{lstmOnly:B,corePath:M.corePath,logging:M.logging}}})),z=(A,j,H)=>Q(s({id:H,action:"FS",payload:{method:"writeFile",args:[A,j]}})),N=(A,j)=>Q(s({id:j,action:"FS",payload:{method:"readFile",args:[A,{encoding:"utf8"}]}})),P=(A,j)=>Q(s({id:j,action:"FS",payload:{method:"unlink",args:[A]}})),I=(A,j,H)=>Q(s({id:H,action:"FS",payload:{method:A,args:j}})),K=()=>console.warn("`loadLanguage` is depreciated and should be removed from code (workers now come with language pre-loaded)"),J=(A,j)=>Q(s({id:j,action:"loadLanguage",payload:{langs:A,options:{langPath:M.langPath,dataPath:M.dataPath,cachePath:M.cachePath,cacheMethod:M.cacheMethod,gzip:M.gzip,lstmOnly:[l.DEFAULT,l.LSTM_ONLY].includes(R)&&!M.legacyLang}}})),X=()=>console.warn("`initialize` is depreciated and should be removed from code (workers now come pre-initialized)"),G=(A,j,H,ee)=>Q(s({id:ee,action:"initialize",payload:{langs:A,oem:j,config:H}})),ye=(A="eng",j,H,ee)=>{if(B&&[l.TESSERACT_ONLY,l.TESSERACT_LSTM_COMBINED].includes(j))throw Error("Legacy model requested but code missing.");const Z=j||R;R=Z;const ie=H||T;T=ie;const Re=(typeof A=="string"?A.split("+"):A).filter(ds=>!C.includes(ds));return C.push(...Re),Re.length>0?J(Re,ee).then(()=>G(A,Z,ie,ee)):G(A,Z,ie,ee)},he=(A={},j)=>Q(s({id:j,action:"setParameters",payload:{params:A}})),le=async(A,j={},H={blocks:!0,text:!0,hocr:!0,tsv:!0},ee)=>Q(s({id:ee,action:"recognize",payload:{image:await k(A),options:j,output:H}})),rs=(A="Tesseract OCR Result",j=!1,H)=>(console.log("`getPDF` function is depreciated. `recognize` option `savePDF` should be used instead."),Q(s({id:H,action:"getPDF",payload:{title:A,textonly:j}}))),ls=async(A,j)=>{if(B)throw Error("`worker.detect` requires Legacy model, which was not loaded.");return Q(s({id:j,action:"detect",payload:{image:await k(A)}}))},is=async()=>(se!==null&&(g(se),se=null),Promise.resolve());b(se,({workerId:A,jobId:j,status:H,action:ee,data:Z})=>{const ie=`${ee}-${j}`;if(H==="resolve"){t(`[${A}]: Complete ${j}`);let ke=Z;ee==="recognize"?ke=n(Z):ee==="getPDF"&&(ke=Array.from({...Z,length:Object.keys(Z).length})),D[ie]({jobId:j,data:ke})}else if(H==="reject")if(F[ie](Z),ee==="load"&&Y(Z),_)_(Z);else throw Error(Z);else H==="progress"&&h({...Z,userJobId:j})});const cs={id:f,worker:se,setResolve:ne,setReject:V,load:$,writeText:z,readText:N,removeFile:P,FS:I,loadLanguage:K,initialize:X,reinitialize:ye,setParameters:he,recognize:le,getPDF:rs,detect:ls,terminate:is};return x().then(()=>J(r)).then(()=>G(r,u,v)).then(()=>re(cs)).catch(()=>{}),fe},Ke}var Ye,Dt;function Oo(){if(Dt)return Ye;Dt=1;const o=ss();return Ye={recognize:async(t,a,l)=>{const i=await o(a,1,l);return i.recognize(t).finally(async()=>{await i.terminate()})},detect:async(t,a)=>{const l=await o("osd",0,a);return l.detect(t).finally(async()=>{await l.terminate()})}},Ye}var Ze,Tt;function Mo(){return Tt||(Tt=1,Ze={AFR:"afr",AMH:"amh",ARA:"ara",ASM:"asm",AZE:"aze",AZE_CYRL:"aze_cyrl",BEL:"bel",BEN:"ben",BOD:"bod",BOS:"bos",BUL:"bul",CAT:"cat",CEB:"ceb",CES:"ces",CHI_SIM:"chi_sim",CHI_TRA:"chi_tra",CHR:"chr",CYM:"cym",DAN:"dan",DEU:"deu",DZO:"dzo",ELL:"ell",ENG:"eng",ENM:"enm",EPO:"epo",EST:"est",EUS:"eus",FAS:"fas",FIN:"fin",FRA:"fra",FRK:"frk",FRM:"frm",GLE:"gle",GLG:"glg",GRC:"grc",GUJ:"guj",HAT:"hat",HEB:"heb",HIN:"hin",HRV:"hrv",HUN:"hun",IKU:"iku",IND:"ind",ISL:"isl",ITA:"ita",ITA_OLD:"ita_old",JAV:"jav",JPN:"jpn",KAN:"kan",KAT:"kat",KAT_OLD:"kat_old",KAZ:"kaz",KHM:"khm",KIR:"kir",KOR:"kor",KUR:"kur",LAO:"lao",LAT:"lat",LAV:"lav",LIT:"lit",MAL:"mal",MAR:"mar",MKD:"mkd",MLT:"mlt",MSA:"msa",MYA:"mya",NEP:"nep",NLD:"nld",NOR:"nor",ORI:"ori",PAN:"pan",POL:"pol",POR:"por",PUS:"pus",RON:"ron",RUS:"rus",SAN:"san",SIN:"sin",SLK:"slk",SLV:"slv",SPA:"spa",SPA_OLD:"spa_old",SQI:"sqi",SRP:"srp",SRP_LATN:"srp_latn",SWA:"swa",SWE:"swe",SYR:"syr",TAM:"tam",TEL:"tel",TGK:"tgk",TGL:"tgl",THA:"tha",TIR:"tir",TUR:"tur",UIG:"uig",UKR:"ukr",URD:"urd",UZB:"uzb",UZB_CYRL:"uzb_cyrl",VIE:"vie",YID:"yid"}),Ze}var Qe,jt;function No(){return jt||(jt=1,Qe={OSD_ONLY:"0",AUTO_OSD:"1",AUTO_ONLY:"2",AUTO:"3",SINGLE_COLUMN:"4",SINGLE_BLOCK_VERT_TEXT:"5",SINGLE_BLOCK:"6",SINGLE_LINE:"7",SINGLE_WORD:"8",CIRCLE_WORD:"9",SINGLE_CHAR:"10",SPARSE_TEXT:"11",SPARSE_TEXT_OSD:"12",RAW_LINE:"13"}),Qe}var Xe,It;function Ao(){if(It)return Xe;It=1,vo();const o=go(),n=ss(),s=Oo(),t=Mo(),a=ts(),l=No(),{setLogging:i}=ct();return Xe={languages:t,OEM:a,PSM:l,createScheduler:o,createWorker:n,setLogging:i,...s},Xe}var Do=Ao();class dt{worker=null;availablePuzzleNames=[];regions={puzzle:{x:15,y:600,width:330,height:28},cost:{x:412,y:603,width:65,height:22},cycles:{x:577,y:603,width:65,height:22},area:{x:739,y:603,width:65,height:22}};async initialize(){this.worker||(this.worker=await Do.createWorker("eng"),await this.worker.setParameters({tessedit_ocr_engine_mode:"3",tessedit_pageseg_mode:7}))}setAvailablePuzzleNames(n){this.availablePuzzleNames=n,console.log("OCR service updated with puzzle names:",n)}async configurePuzzleOCR(){this.worker&&(await this.worker.setParameters({load_system_dawg:"0",load_freq_dawg:"0",load_punc_dawg:"0",load_number_dawg:"0",load_unambig_dawg:"0",load_bigram_dawg:"0",load_fixed_length_dawgs:"0",tessedit_char_whitelist:this.getPuzzleCharacterSet(),tessedit_pageseg_mode:8,segment_penalty_dict_nonword:"2.0",segment_penalty_dict_frequent_word:"0.001",segment_penalty_dict_case_ok:"0.001",segment_penalty_dict_case_bad:"0.1",classify_enable_learning:"0",classify_enable_adaptive_matcher:"1",preserve_interword_spaces:"1"}),console.log("OCR configured for puzzle names with character set:",this.getPuzzleCharacterSet()))}getPuzzleCharacterSet(){if(this.availablePuzzleNames.length===0)return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -";const n=new Set;return this.availablePuzzleNames.forEach(s=>{for(const t of s)n.add(t)}),Array.from(n).join("")}async extractOpusMagnumData(n){this.worker||await this.initialize();const s=URL.createObjectURL(n),t=new Image;return new Promise((a,l)=>{t.onload=async()=>{try{const i=document.createElement("canvas"),m=i.getContext("2d");i.width=t.width,i.height=t.height,m.drawImage(t,0,0);const g={},b={};for(const[w,r]of Object.entries(this.regions)){const u=document.createElement("canvas"),y=u.getContext("2d");u.width=r.width,u.height=r.height,y.drawImage(i,r.x,r.y,r.width,r.height,0,0,r.width,r.height);const v=y.getImageData(0,0,r.width,r.height);this.preprocessImage(v),y.putImageData(v,0,0),w==="cost"?await this.worker.setParameters({tessedit_char_whitelist:"0123456789G"}):w==="cycles"||w==="area"?await this.worker.setParameters({tessedit_char_whitelist:"0123456789"}):w==="puzzle"?await this.configurePuzzleOCR():await this.worker.setParameters({tessedit_char_whitelist:""});const{data:{text:f,confidence:h}}=await this.worker.recognize(u);let _=f.trim();if(b[w]=h/100,w==="cost"){if(_.endsWith("6")&&_.length>1){const M=_.slice(0,-1);/^\d+$/.test(M)&&(_=M)}_=_.replace(/G+$/g,""),_=_.replace(/[^0-9]/g,"")}else if(w==="cycles"||w==="area")_=_.replace(/[^0-9]/g,"");else if(w==="puzzle"&&(_=this.findBestPuzzleMatch(_),this.availablePuzzleNames.length>0&&!this.availablePuzzleNames.includes(_))){const M=this.findBestPuzzleMatchForced(_);M&&(_=M,console.log(`Forced OCR match: "${f.trim()}" -> "${_}"`))}g[w]=_}URL.revokeObjectURL(s);const k=Object.values(b),S=k.length>0?k.reduce((w,r)=>w+r,0)/k.length:0;a({puzzle:g.puzzle||"",cost:parseInt(g.cost||""),cycles:parseInt(g.cycles||""),area:parseInt(g.area||""),confidence:{puzzle:b.puzzle||0,cost:b.cost||0,cycles:b.cycles||0,area:b.area||0,overall:S}})}catch(i){URL.revokeObjectURL(s),l(i)}},t.onerror=()=>{URL.revokeObjectURL(s),l(new Error("Failed to load image"))},t.src=s})}preprocessImage(n){const s=n.data;for(let t=0;tArray(n.length+1).fill(null));for(let a=0;a<=n.length;a++)t[0][a]=a;for(let a=0;a<=s.length;a++)t[a][0]=a;for(let a=1;a<=s.length;a++)for(let l=1;l<=n.length;l++){const i=n[l-1]===s[a-1]?0:1;t[a][l]=Math.min(t[a][l-1]+1,t[a-1][l]+1,t[a-1][l-1]+i)}return t[s.length][n.length]}findBestPuzzleMatch(n){if(!this.availablePuzzleNames.length)return n.trim();const s=n.trim();if(!s)return"";const t=this.availablePuzzleNames.find(m=>m.toLowerCase()===s.toLowerCase());if(t)return t;const a=this.availablePuzzleNames.find(m=>m.toLowerCase().includes(s.toLowerCase())||s.toLowerCase().includes(m.toLowerCase()));if(a)return a;let l=s,i=0;for(const m of this.availablePuzzleNames){const g=[this.calculateLevenshteinSimilarity(s,m),this.calculateJaroWinklerSimilarity(s,m),this.calculateNGramSimilarity(s,m,2)],b=Math.max(...g);b>i&&b>.4&&(i=b,l=m)}if(i<.6){const m=this.findBestCharacterMatch(s);m&&(l=m)}return l}calculateLevenshteinSimilarity(n,s){const t=this.levenshteinDistance(n.toLowerCase(),s.toLowerCase()),a=Math.max(n.length,s.length);return a===0?1:1-t/a}calculateJaroWinklerSimilarity(n,s){const t=n.toLowerCase(),a=s.toLowerCase();if(t===a)return 1;const l=Math.floor(Math.max(t.length,a.length)/2)-1;if(l<0)return 0;const i=new Array(t.length).fill(!1),m=new Array(a.length).fill(!1);let g=0,b=0;for(let r=0;rm.has(k))),b=new Set([...i,...m]);return g.size/b.size}findBestCharacterMatch(n){let s=null,t=0;for(const a of this.availablePuzzleNames){const l=this.calculateCharacterFrequencyScore(n.toLowerCase(),a.toLowerCase());l>t&&l>.3&&(t=l,s=a)}return s}calculateCharacterFrequencyScore(n,s){const t=new Map,a=new Map;for(const g of n)t.set(g,(t.get(g)||0)+1);for(const g of s)a.set(g,(a.get(g)||0)+1);const l=new Set([...t.keys(),...a.keys()]);let i=0,m=0;for(const g of l){const b=t.get(g)||0,k=a.get(g)||0;i+=Math.min(b,k),m+=Math.max(b,k)}return m===0?0:i/m}findBestPuzzleMatchForced(n){if(!this.availablePuzzleNames.length||!n.trim())return null;const s=n.trim().toLowerCase();let t=this.availablePuzzleNames[0],a=0;for(const l of this.availablePuzzleNames){const i=[this.calculateLevenshteinSimilarity(s,l),this.calculateJaroWinklerSimilarity(s,l),this.calculateNGramSimilarity(s,l,2),this.calculateCharacterFrequencyScore(s,l.toLowerCase()),this.calculateLengthSimilarity(s,l.toLowerCase())],m=i[0]*.25+i[1]*.25+i[2]*.2+i[3]*.2+i[4]*.1;m>a&&(a=m,t=l)}return console.log(`Forced match for "${n}": "${t}" (score: ${a.toFixed(3)})`),t}calculateLengthSimilarity(n,s){const t=n.length,a=s.length,l=Math.max(t,a),i=Math.min(t,a);return l===0?1:i/l}async terminate(){this.worker&&(await this.worker.terminate(),this.worker=null)}static isValidOpusMagnumImage(n){return["image/jpeg","image/jpg","image/png","image/gif"].includes(n.type)}static drawDebugRegions(n){return new Promise((s,t)=>{const a=URL.createObjectURL(n),l=new Image;l.onload=()=>{const i=document.createElement("canvas"),m=i.getContext("2d");i.width=l.width,i.height=l.height,m.drawImage(l,0,0),m.strokeStyle="#00ff00",m.lineWidth=2;const g=new dt;Object.values(g.regions).forEach(b=>{m.strokeRect(b.x,b.y,b.width,b.height)}),URL.revokeObjectURL(a),s(i.toDataURL())},l.onerror=()=>{URL.revokeObjectURL(a),t(new Error("Failed to load image for debug"))},l.src=a})}}const ot=new dt,xe=.8,os=at("uploads",()=>{const o=O([]),n=te(()=>o.value.some(g=>g.ocrProcessing)),s=te(()=>o.value.some(g=>a(g))),t=te(()=>o.value.filter(g=>g.needsManualPuzzleSelection)),a=g=>g.ocrData?.confidence?g.ocrData.confidence.cost{for(;n.value;){const k=Math.floor(Math.random()*400)+100;console.log(`OCR is already processing, waiting ${k}ms...`),await new Promise(S=>setTimeout(S,k))}const b=o.value.indexOf(g);o.value[b].ocrProcessing=!0,o.value[b].ocrError=void 0,o.value[b].ocrData=void 0;try{console.log("Starting OCR processing for:",g.file.name),await ot.initialize();const k=await ot.extractOpusMagnumData(g.file);console.log("OCR completed:",k),await Se(),o.value[b].ocrData=k,k.confidence.puzzle{const g=o.value.filter(b=>a(b));for(const b of g)l(b)},clearFiles:()=>{o.value=[]},isProcessingOCR:n,hasLowConfidence:s,CONFIDENCE_VALUE:xe}}),To={class:"form-control w-full"},jo={key:0,class:"space-y-4"},Io={key:1,class:"space-y-4"},qo={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},Fo={class:"aspect-square rounded-lg overflow-hidden bg-base-200"},Uo=["src","alt"],Bo={class:"absolute inset-0 bg-black/80 opacity-0 group-hover:opacity-100 transition-opacity duration-200 rounded-lg flex items-center justify-center"},Vo=["onClick"],Go={class:"mt-2"},Wo={class:"text-xs font-medium truncate"},Jo={class:"text-xs text-base-content/60"},Ho={key:0,class:"mt-1 flex items-center gap-1"},Ko={key:1,class:"mt-1"},Yo={class:"text-xs text-error"},Zo={key:2,class:"mt-1 space-y-1"},Qo={class:"text-xs flex items-center justify-between"},Xo={class:"flex items-center gap-2"},en=["title"],tn=["onClick"],sn={class:"text-xs space-y-1 bg-base-200 p-2 rounded"},on={key:0},nn=["title"],an={key:1},rn=["title"],ln={key:2},cn=["title"],dn={key:3},un=["title"],fn={key:3,class:"mt-2"},mn={class:"mt-2"},hn=["onUpdate:modelValue","onChange"],vn=["value"],gn={key:4,class:"mt-1"},pn=["onClick"],bn={class:"flex justify-center"},yn={key:0,class:"label"},_n={class:"label-text-alt text-error"},xn=ue({__name:"FileUpload",setup(o){const n=Le(),{submissionFiles:s,processOCR:t}=os(),a=O(),l=O(!1),i=O("");Ce(()=>n.puzzles,f=>{f&&f.length>0&&ot.setAvailablePuzzleNames(n.puzzleNames)},{immediate:!0});const m=f=>{const h=f.target;h.files&&b(Array.from(h.files))},g=f=>{f.preventDefault(),l.value=!1,f.dataTransfer?.files&&b(Array.from(f.dataTransfer.files))},b=async f=>{i.value="";for(const h of f)if(k(h))try{const _=await S(h),M=h.type.startsWith("image/gif")?"gif":"image",D={file:h,file_url:"",preview:_,type:M,ocrProcessing:!1,ocrError:void 0,ocrData:void 0};s.push(D),u(h)&&Se(()=>{t(D)})}catch{i.value=`Failed to process ${h.name}`}},k=f=>f.type.startsWith("image/")?f.size>256*1024*1024?(i.value=`${f.name} is too large (max 256MB)`,!1):!0:(i.value=`${f.name} is not a valid image file`,!1),S=f=>new Promise((h,_)=>{const M=new FileReader;M.onload=D=>h(D.target?.result),M.onerror=_,M.readAsDataURL(f)}),w=f=>{s.splice(f,1)},r=f=>{if(f===0)return"0 Bytes";const h=1024,_=["Bytes","KB","MB","GB"],M=Math.floor(Math.log(f)/Math.log(h));return parseFloat((f/Math.pow(h,M)).toFixed(2))+" "+_[M]},u=f=>f.type.startsWith("image/")&&f.size>5e4,y=f=>f>=.8?"badge-success":f>=.6?"badge-warning":"badge-error",v=f=>{const h=s.findIndex(_=>_.file===f.file);h!==-1&&s[h].manualPuzzleSelection&&(s[h].needsManualPuzzleSelection=!1,console.log(`Manual puzzle selection: ${f.file.name} -> ${s[h].manualPuzzleSelection}`))};return(f,h)=>(c(),d("div",To,[h[19]||(h[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"Upload Solution Files"),e("span",{class:"label-text-alt text-xs"},"Images or GIFs only")],-1)),e("div",{class:oe(["border-2 border-dashed border-base-300 rounded-lg p-6 text-center hover:border-primary transition-colors duration-300",{"border-primary bg-primary/5":l.value}]),onDrop:g,onDragover:h[2]||(h[2]=et(_=>l.value=!0,["prevent"])),onDragleave:h[3]||(h[3]=_=>l.value=!1),onDragenter:h[4]||(h[4]=et(()=>{},["prevent"]))},[e("input",{ref_key:"fileInput",ref:a,type:"file",multiple:"",accept:"image/*,.gif",class:"hidden",onChange:m},null,544),q(s).length===0?(c(),d("div",jo,[h[6]||(h[6]=e("div",{class:"mx-auto w-12 h-12 text-base-content/40 flex items-center justify-center"},[e("i",{class:"mdi mdi-cloud-upload text-5xl"})],-1)),e("div",null,[h[5]||(h[5]=e("p",{class:"text-base-content/70 mb-2"},"Drop your files here or",-1)),e("button",{type:"button",onClick:h[0]||(h[0]=_=>a.value?.click()),class:"btn btn-primary btn-sm"}," Choose Files ")]),h[7]||(h[7]=e("p",{class:"text-xs text-base-content/50"}," Supported formats: JPG, PNG, GIF (max 256MB each) ",-1))])):(c(),d("div",Io,[e("div",qo,[(c(!0),d(U,null,W(q(s),(_,M)=>(c(),d("div",{key:M,class:"relative group"},[e("div",Fo,[e("img",{src:_.preview,alt:_.file.name,class:"w-full h-full object-cover"},null,8,Uo)]),e("div",Bo,[e("button",{onClick:D=>w(M),class:"btn btn-error btn-lg btn-circle"},[...h[8]||(h[8]=[e("i",{class:"mdi mdi-close"},null,-1)])],8,Vo)]),e("div",Go,[e("p",Wo,p(_.file.name),1),e("p",Jo,p(r(_.file.size))+" • "+p(_.type.toUpperCase()),1),_.ocrProcessing?(c(),d("div",Ho,[...h[9]||(h[9]=[e("span",{class:"loading loading-spinner loading-xs"},null,-1),e("span",{class:"text-xs text-info"},"Extracting puzzle data...",-1)])])):_.ocrError?(c(),d("div",Ko,[e("p",Yo,p(_.ocrError),1)])):_.ocrData?(c(),d("div",Zo,[e("div",Qo,[e("div",Xo,[h[10]||(h[10]=e("span",{class:"font-medium text-success"},"āœ“ OCR Complete",-1)),_.ocrData.confidence?(c(),d("span",{key:0,class:oe(["badge badge-xs",y(_.ocrData.confidence.overall)]),title:`Overall confidence: ${Math.round(_.ocrData.confidence.overall*100)}%`},p(Math.round(_.ocrData.confidence.overall*100))+"% ",11,en)):L("",!0)]),e("button",{onClick:D=>q(t)(_),class:"btn btn-xs btn-ghost",title:"Retry OCR"},[...h[11]||(h[11]=[e("i",{class:"mdi mdi-refresh"},null,-1)])],8,tn)]),e("div",sn,[_.ocrData.puzzle?(c(),d("div",on,[h[12]||(h[12]=e("strong",null,"Puzzle:",-1)),E(" "+p(_.ocrData.puzzle)+" ",1),_.ocrData.confidence?.puzzle?(c(),d("span",{key:0,class:"ml-2 opacity-60",title:`Puzzle confidence: ${Math.round(_.ocrData.confidence.puzzle*100)}%`}," ("+p(Math.round(_.ocrData.confidence.puzzle*100))+"%) ",9,nn)):L("",!0)])):L("",!0),_.ocrData.cost?(c(),d("div",an,[h[13]||(h[13]=e("strong",null,"Cost:",-1)),E(" "+p(_.ocrData.cost)+" ",1),_.ocrData.confidence?.cost?(c(),d("span",{key:0,class:"ml-2 opacity-60",title:`Cost confidence: ${Math.round(_.ocrData.confidence.cost*100)}%`}," ("+p(Math.round(_.ocrData.confidence.cost*100))+"%) ",9,rn)):L("",!0)])):L("",!0),_.ocrData.cycles?(c(),d("div",ln,[h[14]||(h[14]=e("strong",null,"Cycles:",-1)),E(" "+p(_.ocrData.cycles)+" ",1),_.ocrData.confidence?.cycles?(c(),d("span",{key:0,class:"ml-2 opacity-60",title:`Cycles confidence: ${Math.round(_.ocrData.confidence.cycles*100)}%`}," ("+p(Math.round(_.ocrData.confidence.cycles*100))+"%) ",9,cn)):L("",!0)])):L("",!0),_.ocrData.area?(c(),d("div",dn,[h[15]||(h[15]=e("strong",null,"Area:",-1)),E(" "+p(_.ocrData.area)+" ",1),_.ocrData.confidence?.area?(c(),d("span",{key:0,class:"ml-2 opacity-60",title:`Area confidence: ${Math.round(_.ocrData.confidence.area*100)}%`}," ("+p(Math.round(_.ocrData.confidence.area*100))+"%) ",9,un)):L("",!0)])):L("",!0)])])):L("",!0),_.needsManualPuzzleSelection?(c(),d("div",fn,[h[17]||(h[17]=gs('
Low OCR Confidence
Please select the correct puzzle manually
',1)),e("div",mn,[de(e("select",{"onUpdate:modelValue":D=>_.manualPuzzleSelection=D,class:"select select-bordered select-sm w-full",onChange:D=>v(_)},[h[16]||(h[16]=e("option",{value:""},"Select puzzle...",-1)),(c(!0),d(U,null,W(q(n).puzzles,D=>(c(),d("option",{key:D.id,value:D.title},p(D.title),9,vn))),128))],40,hn),[[Jt,_.manualPuzzleSelection]])])])):!_.ocrProcessing&&!_.ocrError&&!_.ocrData?(c(),d("div",gn,[e("button",{onClick:D=>q(t)(_),class:"btn btn-xs btn-outline"},[...h[18]||(h[18]=[e("i",{class:"mdi mdi-text-recognition"},null,-1),E(" Extract Puzzle Data ",-1)])],8,pn)])):L("",!0)])]))),128))]),e("div",bn,[e("button",{type:"button",onClick:h[1]||(h[1]=_=>a.value?.click()),class:"btn btn-outline btn-sm"}," Add More Files ")])]))],34),i.value?(c(),d("div",yn,[e("span",_n,p(i.value),1)])):L("",!0)]))}}),wn={class:"card bg-base-100 shadow-xl"},kn={class:"card-body"},$n={key:0,class:"alert alert-info"},zn={class:"flex-1"},Sn={class:"font-bold"},Cn={class:"text-sm space-y-1 mt-1"},Pn={class:"badge badge-ghost badge-sm ml-2"},Ln={key:1,class:"alert alert-warning"},Rn={class:"flex-1"},En={class:"text-sm"},On={class:"form-control"},Mn={class:"flex-1"},Nn={class:"flex label"},An={class:"label-text-alt"},Dn={class:"form-control"},Tn={class:"label cursor-pointer justify-start gap-3"},jn=["disabled"],In={class:"card-actions justify-end"},qn=["disabled"],Fn={key:0,class:"loading loading-spinner loading-sm"},Un={key:1},Bn={key:2},Vn={key:3},Gn=ue({__name:"SubmissionForm",props:{puzzles:{},findPuzzleByName:{type:Function}},setup(o){const n=o,s=os(),{submissionFiles:t,hasLowConfidence:a,submissionFilesNeedingManualSelection:l}=rt(s),{clearFiles:i,processLowConfidenceOCRFiles:m}=s,{handleSubmission:g}=lt(),b=O(""),k=O(!1),S=O(!1),w=te(()=>b.value.length),r=te(()=>{const v=t.value.length>0,f=!t.value.some(h=>h.needsManualPuzzleSelection);return v&&!S.value&&f});Ce(a,v=>{v&&(k.value=!0)});const u=te(()=>{const v={};return t.value.forEach(f=>{const h=f.manualPuzzleSelection||f.ocrData?.puzzle;h&&(v[h]||(v[h]={puzzle:n.findPuzzleByName(h),files:[]}),v[h].files.push(f))}),v}),y=async()=>{if(r.value){S.value=!0;try{g({files:t.value,notes:b.value.trim()||void 0,manualValidationRequested:a.value||k.value}),i(),b.value="",k.value=!1}catch(v){console.error("Submission error:",v)}finally{S.value=!1}}};return(v,f)=>(c(),d("div",wn,[e("div",kn,[f[9]||(f[9]=e("h2",{class:"card-title text-xl mb-6"},[e("i",{class:"mdi mdi-check-circle text-2xl text-primary"}),E(" Submit Solution ")],-1)),e("form",{onSubmit:et(y,["prevent"]),class:"space-y-6"},[Object.keys(u.value).length>0?(c(),d("div",$n,[f[3]||(f[3]=e("i",{class:"mdi mdi-information-outline text-xl"},null,-1)),e("div",zn,[e("h4",Sn," Detected Puzzles ("+p(Object.keys(u.value).length)+") ",1),e("div",Cn,[(c(!0),d(U,null,W(u.value,(h,_)=>(c(),d("div",{key:_,class:"flex justify-between"},[e("span",null,p(_),1),e("span",Pn,p(h.files.length)+" file(s)",1)]))),128))])])])):L("",!0),ce(xn),q(l).length>0?(c(),d("div",Ln,[f[6]||(f[6]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",Rn,[f[5]||(f[5]=e("div",{class:"font-bold"},"Manual Puzzle Selection Required",-1)),e("div",En,p(q(l).length)+" file(s) have low OCR confidence for puzzle names. Please select the correct puzzle for each file before submitting. ",1),e("button",{class:"btn mt-3 w-full",onClick:f[0]||(f[0]=(...h)=>q(m)&&q(m)(...h))},[...f[4]||(f[4]=[e("span",{class:"mdi mdi-reload text-2xl"},null,-1),E(" Retry OCR on low confidence puzzle ",-1)])])])])):L("",!0),e("div",On,[e("div",Mn,[e("label",Nn,[f[7]||(f[7]=e("span",{class:"label-text font-medium"},"Notes (Optional)",-1)),e("span",An,p(w.value)+"/500",1)]),de(e("textarea",{"onUpdate:modelValue":f[1]||(f[1]=h=>b.value=h),class:"flex textarea textarea-bordered h-24 w-full resize-none",placeholder:"Add any notes about your solution, approach, or interesting findings...",maxlength:"500"},null,512),[[$e,b.value]])])]),e("div",Dn,[e("label",Tn,[de(e("input",{type:"checkbox","onUpdate:modelValue":f[2]||(f[2]=h=>k.value=h),class:"checkbox checkbox-primary",disabled:q(a)},null,8,jn),[[ps,k.value]]),f[8]||(f[8]=e("div",{class:"flex-1"},[e("span",{class:"label-text font-medium"},"Request manual validation"),e("div",{class:"label-text-alt text-xs opacity-70 mt-1"},[E(" Check this if you want an admin to manually review your submission, even if OCR confidence is high. "),e("br"),e("em",null,"Note: This will be automatically checked if any OCR confidence is below 80%.")])],-1))])]),e("div",In,[e("button",{type:"submit",class:"btn btn-primary",disabled:!r.value},[S.value?(c(),d("span",Fn)):L("",!0),S.value?(c(),d("span",Un,"Submitting...")):q(l).length>0?(c(),d("span",Bn," Select Puzzles ("+p(q(l).length)+" remaining) ",1)):(c(),d("span",Vn,"Submit Solution"))],8,qn)])],32)])]))}}),Wn={class:"card bg-base-100 shadow-xl"},Jn={class:"card-body"},Hn={class:"stats stats-vertical lg:stats-horizontal shadow mb-6"},Kn={class:"stat"},Yn={class:"stat-value text-primary"},Zn={class:"stat"},Qn={class:"stat-value text-secondary"},Xn={class:"stat"},ea={class:"stat-value text-warning"},ta={class:"stat"},sa={class:"stat-value text-success"},oa={key:0},na={class:"overflow-x-auto"},aa={class:"table table-zebra"},ra={class:"font-bold"},la={class:"text-sm opacity-50"},ia={class:"text-sm space-y-1"},ca={class:"flex justify-between items-center"},da={class:"flex justify-between items-center"},ua={class:"flex justify-between items-center"},fa={class:"badge badge-warning badge-sm"},ma=["onClick"],ha=["onClick"],va={key:1,class:"text-center py-8"},ga={key:0,class:"modal modal-open"},pa={class:"modal-box w-11/12 max-w-5xl"},ba=["src"],ya={key:0,class:"space-y-4"},_a={class:"alert alert-info"},xa={class:"font-bold"},wa={class:"grid grid-cols-4 gap-4"},ka={class:"form-control"},$a=["value"],za={class:"form-control"},Sa=["placeholder"],Ca={class:"form-control"},Pa=["placeholder"],La={class:"form-control"},Ra=["placeholder"],Ea={class:"modal-action"},Oa=["disabled"],Ma={key:0,class:"loading loading-spinner loading-sm"},Na={class:"mockup-code w-full"},Aa=ue({__name:"AdminPanel",setup(o,{expose:n}){const s=Le(),t=O({total_submissions:0,total_responses:0,needs_validation:0,validated_submissions:0,validation_rate:0}),a=O([]),l=O(!1),i=O(!1),m=O({show:!1,response:null,data:{puzzle:-1,validated_cost:0,validated_cycles:0,validated_area:0}}),g=async()=>{try{l.value=!0;try{const f=await ae.getStats();f.data&&(t.value=f.data)}catch(f){console.warn("Stats endpoint not available:",f),t.value={total_submissions:0,total_responses:0,needs_validation:0,validated_submissions:0,validation_rate:0}}const v=await ae.getResponsesNeedingValidation();v.data&&(a.value=v.data)}catch(v){console.error("Failed to load admin data:",v)}finally{l.value=!1}},b=async()=>{for(const v of Array.from(a.value)){if(!v.id)continue;const{data:f,error:h}=await ae.autoValidateResponses(v.id);if(f&&!f.needs_manual_validation)a.value=a.value.filter(_=>_.id!==v.id),t.value.needs_validation-=1;else if(h)break}},k=v=>{m.value.response=v,m.value.data={puzzle:v.puzzle_id||-1,validated_cost:v.cost||0,validated_cycles:v.cycles||0,validated_area:v.area||0},m.value.show=!0},S=()=>{m.value.show=!1,m.value.response=null,m.value.data={puzzle:-1,validated_cost:0,validated_cycles:0,validated_area:0}},w=async v=>{const{data:f}=await ae.autoValidateResponses(v);console.log(f),f&&!f.needs_manual_validation&&(a.value=a.value.filter(h=>h.id!==v),console.log(t.value),t.value.needs_validation-=1,console.log(t.value))},r=async()=>{if(m.value.response?.id)try{i.value=!0;const v=await ae.validateResponse(m.value.response.id,m.value.data);if(v.error){alert(`Validation failed: ${v.error}`);return}a.value=a.value.filter(f=>f.id!==m.value.response?.id),t.value.needs_validation=Math.max(0,t.value.needs_validation-1),S()}catch(v){console.error("Validation error:",v),alert("Validation failed")}finally{i.value=!1}};pe(()=>{g()});const u=v=>v>=.8?"badge-success":v>=.6?"badge-warning":"badge-error",y=v=>{const f=[v.ocr_confidence_cost,v.ocr_confidence_cycles,v.ocr_confidence_area].filter(_=>_!=null);if(f.length===0)return 0;const h=f.reduce((_,M)=>_+M,0)/f.length;return Math.round(h*100)};return n({refresh:g}),(v,f)=>(c(),d(U,null,[e("div",Wn,[e("div",Jn,[f[14]||(f[14]=e("h2",{class:"card-title"},[e("i",{class:"mdi mdi-shield-account text-2xl text-warning"}),E(" Admin Panel ")],-1)),e("div",Hn,[e("div",Kn,[f[4]||(f[4]=e("div",{class:"stat-title"},"Total Submissions",-1)),e("div",Yn,p(t.value.total_submissions),1)]),e("div",Zn,[f[5]||(f[5]=e("div",{class:"stat-title"},"Total Responses",-1)),e("div",Qn,p(t.value.total_responses),1)]),e("div",Xn,[f[6]||(f[6]=e("div",{class:"stat-title"},"Need Validation",-1)),e("div",ea,p(t.value.needs_validation),1)]),e("div",ta,[f[7]||(f[7]=e("div",{class:"stat-title"},"Validation Rate",-1)),e("div",sa,p(Math.round(t.value.validation_rate*100))+"% ",1)])]),e("button",{class:"btn btn-sm btn-primary",onClick:b},[...f[8]||(f[8]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),E(" Auto validation for all responses ",-1)])]),a.value.length>0?(c(),d("div",oa,[f[12]||(f[12]=e("h3",{class:"text-lg font-bold mb-4"},"Responses Needing Validation",-1)),e("div",na,[e("table",aa,[f[11]||(f[11]=e("thead",null,[e("tr",null,[e("th",null,"Puzzle"),e("th",null,"OCR Data"),e("th",null,"Confidence"),e("th",null,"Actions")])],-1)),e("tbody",null,[(c(!0),d(U,null,W(a.value,h=>(c(),d("tr",{key:h.id},[e("td",null,[e("div",ra,p(h.puzzle_name),1),e("div",la,"ID: "+p(h.id),1)]),e("td",null,[e("div",ia,[e("div",ca,[e("span",null,"Cost: "+p(h.cost||"-"),1),h.ocr_confidence_cost?(c(),d("span",{key:0,class:oe(["badge badge-xs",u(h.ocr_confidence_cost)])},p(Math.round(h.ocr_confidence_cost*100))+"% ",3)):L("",!0)]),e("div",da,[e("span",null,"Cycles: "+p(h.cycles||"-"),1),h.ocr_confidence_cycles?(c(),d("span",{key:0,class:oe(["badge badge-xs",u(h.ocr_confidence_cycles)])},p(Math.round(h.ocr_confidence_cycles*100))+"% ",3)):L("",!0)]),e("div",ua,[e("span",null,"Area: "+p(h.area||"-"),1),h.ocr_confidence_area?(c(),d("span",{key:0,class:oe(["badge badge-xs",u(h.ocr_confidence_area)])},p(Math.round(h.ocr_confidence_area*100))+"% ",3)):L("",!0)])])]),e("td",null,[e("div",fa,p(y(h))+"% ",1)]),e("td",null,[e("button",{onClick:_=>k(h),class:"btn btn-sm btn-primary mr-2"},[...f[9]||(f[9]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),E(" Validate ",-1)])],8,ma),h.id?(c(),d("button",{key:0,onClick:_=>w(h.id),class:"btn btn-sm btn-warning"},[...f[10]||(f[10]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),E(" Auto Validation ",-1)])],8,ha)):L("",!0)])]))),128))])])])])):(c(),d("div",va,[...f[13]||(f[13]=[e("i",{class:"mdi mdi-check-all text-6xl text-success opacity-50"},null,-1),e("p",{class:"text-lg font-medium mt-2"},"All responses validated!",-1),e("p",{class:"text-sm opacity-70"}," No responses currently need manual validation. ",-1)])]))])]),m.value.show?(c(),d("div",ga,[e("div",pa,[f[22]||(f[22]=e("h3",{class:"font-bold text-lg mb-4"},"Validate Response",-1)),(c(!0),d(U,null,W(m.value.response?.files??[],h=>(c(),d("div",null,[e("img",{src:h.file_url},null,8,ba)]))),256)),m.value.response?(c(),d("div",ya,[e("div",_a,[f[16]||(f[16]=e("i",{class:"mdi mdi-information-outline"},null,-1)),e("div",null,[e("div",xa,p(m.value.response.puzzle_name),1),f[15]||(f[15]=e("div",{class:"text-sm"},"Review and correct the OCR data below",-1))])]),e("div",wa,[e("div",ka,[f[18]||(f[18]=e("label",{class:"label"},[e("span",{class:"label-text"},"Puzzle")],-1)),de(e("select",{"onUpdate:modelValue":f[0]||(f[0]=h=>m.value.data.puzzle=h),class:"select select-bordered select-sm w-full"},[f[17]||(f[17]=e("option",{value:""},"Select puzzle...",-1)),(c(!0),d(U,null,W(q(s).puzzles,h=>(c(),d("option",{key:h.id,value:h.id},p(h.title),9,$a))),128))],512),[[Jt,m.value.data.puzzle]])]),e("div",za,[f[19]||(f[19]=e("label",{class:"label"},[e("span",{class:"label-text"},"Cost")],-1)),de(e("input",{"onUpdate:modelValue":f[1]||(f[1]=h=>m.value.data.validated_cost=h),type:"text",class:"input input-bordered input-sm",placeholder:m.value.response.cost?.toString()||"Enter cost"},null,8,Sa),[[$e,m.value.data.validated_cost]])]),e("div",Ca,[f[20]||(f[20]=e("label",{class:"label"},[e("span",{class:"label-text"},"Cycles")],-1)),de(e("input",{"onUpdate:modelValue":f[2]||(f[2]=h=>m.value.data.validated_cycles=h),type:"text",class:"input input-bordered input-sm",placeholder:m.value.response.cycles?.toString()||"Enter cycles"},null,8,Pa),[[$e,m.value.data.validated_cycles]])]),e("div",La,[f[21]||(f[21]=e("label",{class:"label"},[e("span",{class:"label-text"},"Area")],-1)),de(e("input",{"onUpdate:modelValue":f[3]||(f[3]=h=>m.value.data.validated_area=h),type:"text",class:"input input-bordered input-sm",placeholder:m.value.response.area?.toString()||"Enter area"},null,8,Ra),[[$e,m.value.data.validated_area]])])]),e("div",Ea,[e("button",{onClick:S,class:"btn btn-ghost"}," Cancel "),e("button",{onClick:r,class:"btn btn-primary",disabled:i.value},[i.value?(c(),d("span",Ma)):L("",!0),E(" "+p(i.value?"Validating...":"Validate"),1)],8,Oa)]),e("div",Na,[e("pre",null,[e("code",null,p(m.value),1)])])])):L("",!0)]),e("div",{class:"modal-backdrop",onClick:S})])):L("",!0)],64))}}),Da={class:"mb-8"},Ta={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},ja={class:"lg:col-span-1"},Ia={class:"card bg-base-100 shadow-lg sticky top-8"},qa={class:"card-body"},Fa={class:"text-center mb-6"},Ua={class:"text-3xl font-bold"},Ba={key:0,class:"flex justify-center py-8"},Va={key:1,class:"space-y-4"},Ga={class:"text-center"},Wa={key:0,class:"text-4xl font-bold text-primary"},Ja={key:1,class:"text-2xl text-base-content/50"},Ha={class:"text-center"},Ka={class:"text-2xl font-bold"},Ya={class:"text-center"},Za={class:"text-2xl font-bold"},Qa={class:"lg:col-span-2"},Xa={class:"card bg-base-100 shadow-lg"},er={class:"card-body"},tr={key:0,class:"flex justify-center py-8"},sr={key:1,class:"text-center py-8"},or={key:2,class:"space-y-6"},nr={class:"tabs tabs-border"},ar={class:"space-y-4"},rr={key:0,class:"text-center py-8"},lr={key:1,class:"overflow-x-auto"},ir={class:"table table-zebra w-full"},cr={class:"font-bold"},dr={class:"font-medium"},ur={key:0,class:"badge badge-warning"},fr={class:"text-right"},mr={class:"text-right font-bold"},hr={class:"space-y-6"},vr=["onClick"],gr={class:"ml-auto badge badge-sm"},pr={key:0,class:"card-body"},br={key:0,class:"text-center py-8"},yr={key:1,class:"space-y-6"},_r={key:0,class:"bg-base-200 p-4 rounded-lg"},xr={class:"grid grid-cols-3 gap-4"},wr={class:"text-center"},kr={class:"text-2xl font-bold text-primary"},$r={class:"text-center"},zr={class:"text-2xl font-bold text-primary"},Sr={class:"text-center"},Cr={class:"text-2xl font-bold text-primary"},Pr={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},Lr={class:"card-body p-4"},Rr={class:"text-xs text-base-content/70 font-bold"},Er={class:"font-bold text-lg"},Or={key:0,class:"badge badge-warning"},Mr={class:"space-y-2 text-sm"},Nr={class:"flex justify-between"},Ar={key:0,class:"text-xs text-base-content/60"},Dr={class:"badge badge-sm"},Tr={class:"flex justify-between"},jr={key:0,class:"text-xs text-base-content/60"},Ir={class:"badge badge-sm"},qr={class:"flex justify-between"},Fr={key:0,class:"text-xs text-base-content/60"},Ur={class:"badge badge-sm"},Br={class:"flex justify-between pt-2 border-t"},Vr={class:"badge badge-sm"},Gr={class:"flex justify-between pt-2 border-t"},Wr={class:"badge badge-primary"},Jr={class:"overflow-x-auto"},Hr={class:"table table-zebra w-full table-sm"},Kr={class:"text-center"},Yr={key:0,class:"text-xs text-base-content/60 block"},Zr={class:"text-center"},Qr={key:0,class:"text-xs text-base-content/60 block"},Xr={class:"text-center"},el={key:0,class:"text-xs text-base-content/60 block"},tl={class:"font-bold"},sl={key:0,class:"badge badge-warning"},ol={key:1,class:"badge"},nl={key:2,class:"badge"},al={key:3},rl={class:"font-medium"},ll={class:"text-center"},il={key:0,class:"badge badge-sm"},cl={key:1,class:"text-base-content/40"},dl={class:"text-center"},ul={key:0,class:"badge badge-sm"},fl={key:1,class:"text-base-content/40"},ml={class:"text-center"},hl={key:0,class:"badge badge-sm"},vl={key:1,class:"text-base-content/40"},gl={class:"text-center"},pl={key:0,class:"badge badge-sm"},bl={key:1,class:"text-base-content/40"},yl={class:"text-right font-bold text-primary text-lg"},_l=ue({__name:"Results",setup(o){const n=O(!0),s=O(null),t=O("overall"),a=O(null),l=O({username:"Player",rank:null,totalPoints:0,puzzlesSolved:0,isStaff:!1}),i=async()=>{n.value=!0;try{const w=await fetch("/api/results/results");if(!w.ok)throw new Error("Failed to fetch results");s.value=await w.json()}catch(w){console.error("Error fetching results:",w)}finally{n.value=!1}},m=()=>s.value?s.value.users.map(r=>{const u=s.value.responses_by_userid[r.id]||[],y=u.reduce((f,h)=>f+(h.rank_points||0),0),v=u.length;return{user:r,totalPoints:y,puzzlesSolved:v}}).sort((r,u)=>u.totalPoints-r.totalPoints):[],g=w=>s.value?(s.value.ranking_by_puzzle[w]||[]).map(u=>({user:s.value.users.find(v=>v.id===u.user_id),cost:u.final_cost,cycles:u.final_cycles,area:u.final_area,points:u.points,rank_points:u.rank_points||0})).reverse():[],b=w=>{a.value=a.value===w?null:w},k=async()=>{try{const w=await fetch("/api/cache/clear",{method:"POST"});if(w.ok)alert("Cache cleared successfully!"),await i();else{const r=await w.json();alert(`Error clearing cache: ${r.detail||"Unknown error"}`)}}catch(w){console.error("Error clearing cache:",w),alert("Error clearing cache. Please try again.")}},S=async()=>{try{const w=await fetch("/api/user");if(w.ok){const r=await w.json();if(r.is_authenticated){l.value.username=r.username,l.value.isStaff=r.is_staff||!1,await i();const u=m(),y=u.findIndex(v=>v.user.id===r.id);y!==-1&&(l.value.rank=y+1,l.value.totalPoints=u[y].totalPoints,l.value.puzzlesSolved=u[y].puzzlesSolved)}}}catch(w){console.error("Error loading user data:",w),await i()}};return pe(()=>{S()}),(w,r)=>(c(),d("div",Da,[e("div",Ta,[e("div",ja,[e("div",Ia,[r[9]||(r[9]=e("div",{class:"bg-gradient-to-br from-purple-600 to-purple-400 p-6 text-white rounded-t-2xl"},[e("h3",{class:"text-3xl font-bold"},[e("i",{class:"mdi mdi-trophy text-3xl"}),E(" Your Ranking ")])],-1)),e("div",qa,[e("div",Fa,[r[2]||(r[2]=e("p",{class:"text-sm text-base-content/70"},"Player",-1)),e("p",Ua,p(l.value.username),1)]),r[8]||(r[8]=e("div",{class:"divider"},null,-1)),n.value?(c(),d("div",Ba,[...r[3]||(r[3]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(c(),d("div",Va,[e("div",Ga,[r[4]||(r[4]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Current Rank",-1)),l.value.rank!==null?(c(),d("p",Wa,[ce(ft,{rank:l.value.rank},null,8,["rank"])])):(c(),d("p",Ja,"No rank yet"))]),e("div",Ha,[r[5]||(r[5]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Total Points",-1)),e("p",Ka,p(l.value.totalPoints.toLocaleString()),1)]),e("div",Ya,[r[6]||(r[6]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Puzzles Solved",-1)),e("p",Za,p(l.value.puzzlesSolved),1)]),l.value.isStaff?(c(),d("button",{key:0,onClick:k,class:"btn btn-error btn-sm w-full mt-6"},[...r[7]||(r[7]=[e("i",{class:"mdi mdi-cache-clear mr-1"},null,-1),E(" Clear Cache ",-1)])])):L("",!0)]))])])]),e("div",Qa,[e("div",Xa,[e("div",er,[r[37]||(r[37]=e("h2",{class:"card-title text-2xl mb-6"},[e("i",{class:"mdi mdi-trophy text-yellow-500 mr-2"}),E(" General Results ")],-1)),n.value?(c(),d("div",tr,[...r[10]||(r[10]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):s.value?(c(),d("div",or,[e("div",nr,[e("button",{onClick:r[0]||(r[0]=u=>t.value="overall"),class:oe(["tab",t.value==="overall"?"tab-active":""])},[...r[12]||(r[12]=[e("i",{class:"mdi mdi-chart-line mr-2"},null,-1),E(" Overall Ranking ",-1)])],2),e("button",{onClick:r[1]||(r[1]=u=>t.value="byPuzzle"),class:oe(["tab",t.value==="byPuzzle"?"tab-active":""])},[...r[13]||(r[13]=[e("i",{class:"mdi mdi-puzzle mr-2"},null,-1),E(" By Puzzle ",-1)])],2)]),de(e("div",ar,[m().length===0?(c(),d("div",rr,[...r[14]||(r[14]=[e("p",{class:"text-base-content/70"},"No submissions yet",-1)])])):(c(),d("div",lr,[e("table",ir,[r[15]||(r[15]=e("thead",null,[e("tr",null,[e("th",null,"Rank"),e("th",null,"Player"),e("th",{class:"text-right"},"Puzzles Solved"),e("th",{class:"text-right"},"Total Points")])],-1)),e("tbody",null,[(c(!0),d(U,null,W(m(),(u,y)=>(c(),d("tr",{key:u.user.username},[e("td",cr,[ce(ft,{rank:y+1},null,8,["rank"])]),e("td",dr,[E(p(u.user.username)+" ",1),u.user.is_staff?(c(),d("span",ur," admin ")):L("",!0)]),e("td",fr,p(u.puzzlesSolved),1),e("td",mr,p(u.totalPoints),1)]))),128))])])]))],512),[[ut,t.value==="overall"]]),de(e("div",hr,[(c(!0),d(U,null,W(s.value.puzzles,u=>(c(),d("div",{key:u.id,class:"card bg-base-100 border border-base-300"},[e("button",{onClick:y=>b(u.id),class:"btn btn-ghost btn-lg w-full justify-start text-lg font-bold hover:bg-primary/20 rounded-b-none"},[e("i",{class:oe(["mdi mr-2",a.value===u.id?"mdi-chevron-down":"mdi-chevron-right"])},null,2),E(" "+p(u.title)+" ",1),e("span",gr,p(g(u.id).length)+" submissions ",1)],8,vr),a.value===u.id?(c(),d("div",pr,[g(u.id).length===0?(c(),d("div",br,[...r[16]||(r[16]=[e("p",{class:"text-base-content/70 text-lg"},"No submissions yet",-1)])])):(c(),d("div",yr,[u.points_factor?(c(),d("div",_r,[r[23]||(r[23]=e("p",{class:"text-sm text-base-content/70 mb-3 font-semibold"},"Points Coefficients",-1)),e("div",xr,[e("div",wr,[e("span",kr,[r[17]||(r[17]=e("small",null,"x",-1)),E(p(u.points_factor.cost),1)]),r[18]||(r[18]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",$r,[e("span",zr,[r[19]||(r[19]=e("small",null,"x",-1)),E(p(u.points_factor.cycles),1)]),r[20]||(r[20]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",Sr,[e("span",Cr,[r[21]||(r[21]=e("small",null,"x",-1)),E(p(u.points_factor.area),1)]),r[22]||(r[22]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),e("div",Pr,[(c(!0),d(U,null,W(g(u.id).slice(0,3),(y,v)=>(c(),d("div",{key:v,class:"card bg-base-200"},[e("div",Lr,[e("div",Rr,p(v===0?"šŸ† 1st Place":v===1?"🄈 2nd Place":"šŸ„‰ 3rd Place"),1),e("h4",Er,[E(p(y.user.username)+" ",1),y.user.is_staff?(c(),d("span",Or," admin ")):L("",!0)]),r[29]||(r[29]=e("div",{class:"divider my-2"},null,-1)),e("div",Mr,[e("div",Nr,[e("span",null,[r[24]||(r[24]=E("Cost",-1)),u.points_factor?(c(),d("span",Ar," (x"+p(u.points_factor.cost)+") ",1)):L("",!0)]),e("span",Dr,p(y.cost||"N/A"),1)]),e("div",Tr,[e("span",null,[r[25]||(r[25]=E("Cycles",-1)),u.points_factor?(c(),d("span",jr," (x"+p(u.points_factor.cycles)+") ",1)):L("",!0)]),e("span",Ir,p(y.cycles||"N/A"),1)]),e("div",qr,[e("span",null,[r[26]||(r[26]=E("Area",-1)),u.points_factor?(c(),d("span",Fr," (x"+p(u.points_factor.area)+") ",1)):L("",!0)]),e("span",Ur,p(y.area||"N/A"),1)]),e("div",Br,[r[27]||(r[27]=e("span",null,"Total (with coef.)",-1)),e("span",Vr,p(y.points||"N/A"),1)]),e("div",Gr,[r[28]||(r[28]=e("span",{class:"font-bold"},"Points",-1)),e("span",Wr,p(y.rank_points)+" pts",1)])])])]))),128))]),e("div",Jr,[e("table",Hr,[e("thead",null,[e("tr",null,[r[33]||(r[33]=e("th",{class:"w-12"},"Rank",-1)),r[34]||(r[34]=e("th",null,"Player",-1)),e("th",Kr,[r[30]||(r[30]=E(" Cost ",-1)),u.points_factor?(c(),d("span",Yr,"(x"+p(u.points_factor.cost)+")",1)):L("",!0)]),e("th",Zr,[r[31]||(r[31]=E(" Cycles ",-1)),u.points_factor?(c(),d("span",Qr,"(x"+p(u.points_factor.cycles)+")",1)):L("",!0)]),e("th",Xr,[r[32]||(r[32]=E(" Area ",-1)),u.points_factor?(c(),d("span",el,"(x"+p(u.points_factor.area)+")",1)):L("",!0)]),r[35]||(r[35]=e("th",{class:"text-center"},"Total (with coef.)",-1)),r[36]||(r[36]=e("th",{class:"text-right"},"Points",-1))])]),e("tbody",null,[(c(!0),d(U,null,W(g(u.id),(y,v)=>(c(),d("tr",{key:v,class:oe({"bg-primary/10":v<3})},[e("td",tl,[v===0?(c(),d("span",sl,"šŸ†")):v===1?(c(),d("span",ol,"🄈")):v===2?(c(),d("span",nl,"šŸ„‰")):(c(),d("span",al,"#"+p(v+1),1))]),e("td",rl,p(y.user.username),1),e("td",ll,[y.cost?(c(),d("span",il,p(y.cost),1)):(c(),d("span",cl,"—"))]),e("td",dl,[y.cycles?(c(),d("span",ul,p(y.cycles),1)):(c(),d("span",fl,"—"))]),e("td",ml,[y.area?(c(),d("span",hl,p(y.area),1)):(c(),d("span",vl,"—"))]),e("td",gl,[y.points?(c(),d("span",pl,p(y.points),1)):(c(),d("span",bl,"—"))]),e("td",yl,p(y.rank_points),1)],2))),128))])])])]))])):L("",!0)]))),128))],512),[[ut,t.value==="byPuzzle"]])])):(c(),d("div",sr,[...r[11]||(r[11]=[e("p",{class:"text-base-content/70"},"No results available yet",-1)])]))])])])])]))}}),xl={class:"card bg-base-100 shadow-lg"},wl={class:"card-body"},kl={key:0,class:"flex justify-center py-12"},$l={key:1,class:"alert alert-error"},zl={key:2,class:"text-center py-8"},Sl={key:3,class:"overflow-x-auto"},Cl={class:"table table-zebra"},Pl={class:"font-semibold"},Ll={class:"text-right"},Rl={class:"text-right"},El={class:"text-right"},Ol={class:"text-right font-bold"},Ml={class:"text-right font-bold text-primary"},Nl={class:"text-center"},Al=["onClick"],Dl={key:1,class:"text-base-content/50"},Tl={key:0,class:"modal modal-open"},jl={class:"modal-box max-w-7xl w-full"},Il={class:"flex justify-between items-center mb-4"},ql={class:"font-bold text-lg"},Fl={class:"flex justify-center bg-base-200 rounded-lg p-4"},Ul=["src","alt"],Bl={class:"modal-action mt-4"},Vl=["href"],Gl=ue({__name:"Winners",setup(o){const n=O(!0),s=O(null),t=O(""),a=O(!1),l=O(""),i=O(""),m=async()=>{n.value=!0,t.value="";try{const w=await ae.getTopSubmissions(5);w.data?s.value=w.data:w.error&&(t.value=w.error,console.error("Error fetching submissions:",w.error))}catch(w){t.value=w instanceof Error?w.message:"Failed to fetch submissions",console.error("Error fetching submissions:",w)}finally{n.value=!1}},g=w=>w!==void 0?w.toLocaleString():"—",b=te(()=>{if(!s.value)return[];const w=[];return s.value.submissions.forEach(r=>{r.submissions.forEach(u=>{w.push({puzzleName:r.puzzle_title,username:u.username,cost:u.final_cost,cycles:u.final_cycles,area:u.final_area,total:u.rank_points,totalCoef:u.total_coef,files:u.files.map(y=>({url:y.file_url,name:y.original_filename}))})})}),w.sort((r,u)=>(u.total||0)-(r.total||0))}),k=(w,r)=>{l.value=w,i.value=r,a.value=!0},S=()=>{a.value=!1,l.value="",i.value=""};return pe(()=>{m()}),(w,r)=>(c(),d(U,null,[e("div",xl,[e("div",wl,[r[5]||(r[5]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-trophy text-yellow-500 text-3xl"}),E(" Top Submissions ")],-1)),n.value?(c(),d("div",kl,[...r[0]||(r[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(c(),d("div",$l,[r[1]||(r[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,p(t.value),1)])):b.value.length===0?(c(),d("div",zl,[...r[2]||(r[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(c(),d("div",Sl,[e("table",Cl,[r[4]||(r[4]=e("thead",null,[e("tr",null,[e("th",null,"Puzzle"),e("th",null,"User"),e("th",{class:"text-right"},"Cost"),e("th",{class:"text-right"},"Cycles"),e("th",{class:"text-right"},"Area"),e("th",{class:"text-right"},"Total Pts"),e("th",{class:"text-right"},"Total Coef"),e("th",{class:"text-center"},"GIF")])],-1)),e("tbody",null,[(c(!0),d(U,null,W(b.value,(u,y)=>(c(),d("tr",{key:y},[e("td",Pl,p(u.puzzleName),1),e("td",null,p(u.username),1),e("td",Ll,p(g(u.cost)),1),e("td",Rl,p(g(u.cycles)),1),e("td",El,p(g(u.area)),1),e("td",Ol,p(g(u.total)),1),e("td",Ml,p(g(u.totalCoef)),1),e("td",Nl,[u.files.length>0?(c(),d("button",{key:0,onClick:v=>k(u.files[0].url,u.files[0].name),class:"btn btn-xs btn-primary gap-1"},[...r[3]||(r[3]=[e("i",{class:"mdi mdi-image"},null,-1),E(" View ",-1)])],8,Al)):(c(),d("span",Dl,"—"))])]))),128))])])]))])]),a.value?(c(),d("div",Tl,[e("div",jl,[e("div",Il,[e("h3",ql,p(i.value),1),e("button",{onClick:S,class:"btn btn-sm btn-circle btn-ghost"},[...r[6]||(r[6]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),e("div",Fl,[e("img",{src:l.value,alt:i.value,class:"object-contain"},null,8,Ul)]),e("div",Bl,[e("a",{href:l.value,target:"_blank",class:"btn btn-primary btn-sm"},[...r[7]||(r[7]=[e("i",{class:"mdi mdi-download"},null,-1),E(" Download ",-1)])],8,Vl),e("button",{onClick:S,class:"btn btn-sm"},"Close")])]),e("div",{class:"modal-backdrop",onClick:S})])):L("",!0)],64))}}),Wl={class:"card bg-base-100 shadow-lg"},Jl={class:"card-body"},Hl={key:0,class:"flex justify-center py-12"},Kl={key:1,class:"alert alert-error"},Yl={key:2,class:"text-center py-8"},Zl={key:3,class:"space-y-8"},Ql={class:"mb-4"},Xl={class:"text-xl font-bold mb-3"},ei={key:0,class:"bg-base-200 p-3 rounded-lg mb-4"},ti={class:"grid grid-cols-3 gap-2"},si={class:"text-center"},oi={class:"font-bold text-primary"},ni={class:"text-center"},ai={class:"font-bold text-primary"},ri={class:"text-center"},li={class:"font-bold text-primary"},ii={key:1,class:"bg-base-200 p-4 rounded-lg"},ci={class:"flex flex-wrap justify-center gap-6"},di={key:0,class:"text-center w-96"},ui={class:"text-sm text-base-content/70 mb-3 font-semibold truncate"},fi=["onClick"],mi=["src","alt"],hi={key:0,class:"overflow-x-auto"},vi={class:"table table-sm table-zebra"},gi={class:"text-center text-lg font-bold"},pi={class:"font-semibold"},bi={class:"text-right"},yi={class:"text-right"},_i={class:"text-right"},xi={class:"text-right font-bold text-primary"},wi={class:"text-center"},ki=["onClick"],$i={key:1,class:"text-base-content/50"},zi={key:1,class:"p-4 bg-base-200 rounded-lg text-center text-base-content/70"},Si={key:0,class:"modal modal-open"},Ci={class:"modal-box max-w-7xl w-full"},Pi={class:"flex justify-between items-center mb-4"},Li={class:"font-bold text-lg"},Ri={class:"flex justify-center bg-base-200 rounded-lg p-4"},Ei=["src","alt"],Oi={class:"modal-action mt-4"},Mi=["href"],Ni=ue({__name:"PuzzleResults",setup(o){const n=O(!0),s=O(null),t=O(""),a=O(!1),l=O(""),i=O(""),m=async()=>{n.value=!0,t.value="";try{const r=await ae.getPuzzleResults(5);r.data?s.value=r.data:r.error&&(t.value=r.error,console.error("Error fetching results:",r.error))}catch(r){t.value=r instanceof Error?r.message:"Failed to fetch results",console.error("Error fetching results:",r)}finally{n.value=!1}},g=r=>r!==void 0?r.toLocaleString():"—",b=(r,u)=>{l.value=r,i.value=u,a.value=!0},k=()=>{a.value=!1,l.value="",i.value=""},S=r=>["šŸ„‡","🄈","šŸ„‰"][r-1]||`#${r}`,w=r=>{if(!r.submissions||r.submissions.length===0)return[];const u=r.submissions[0].rank_points;return r.submissions.filter(y=>y.rank_points===u)};return pe(()=>{m()}),(r,u)=>(c(),d(U,null,[e("div",Wl,[e("div",Jl,[u[13]||(u[13]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-table text-blue-500 text-3xl"}),E(" Results by Puzzle ")],-1)),n.value?(c(),d("div",Hl,[...u[0]||(u[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(c(),d("div",Kl,[u[1]||(u[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,p(t.value),1)])):!s.value||s.value.results.length===0?(c(),d("div",Yl,[...u[2]||(u[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(c(),d("div",Zl,[(c(!0),d(U,null,W(s.value.results,y=>(c(),d("div",{key:y.puzzle_id,class:"border-b pb-8 last:border-b-0"},[e("div",Ql,[e("h3",Xl,p(y.puzzle_title),1),y.points_factor?(c(),d("div",ei,[u[9]||(u[9]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-2"},"Points Coefficients",-1)),e("div",ti,[e("div",si,[e("span",oi,[u[3]||(u[3]=e("small",null,"x",-1)),E(p(y.points_factor.cost),1)]),u[4]||(u[4]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",ni,[e("span",ai,[u[5]||(u[5]=e("small",null,"x",-1)),E(p(y.points_factor.cycles),1)]),u[6]||(u[6]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",ri,[e("span",li,[u[7]||(u[7]=e("small",null,"x",-1)),E(p(y.points_factor.area),1)]),u[8]||(u[8]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),y.submissions.length>0&&w(y).length>0?(c(),d("div",ii,[u[10]||(u[10]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-3 text-center"},"šŸ† Winning Solutions",-1)),e("div",ci,[(c(!0),d(U,null,W(w(y),v=>(c(),d(U,{key:`${y.puzzle_id}-${v.user_id}`},[v&&v.files&&v.files.length>0?(c(),d("div",di,[e("div",ui,p(v.username),1),e("button",{onClick:f=>b(v.files[0].file_url,v.files[0].original_filename),class:"hover:opacity-80 transition-opacity cursor-pointer w-full flex items-center justify-center"},[e("img",{src:v.files[0].file_url,alt:`${y.puzzle_title} - ${v.username}`,class:"max-h-full max-w-full object-contain"},null,8,mi)],8,fi)])):L("",!0)],64))),128))])])):L("",!0)]),y.submissions.length>0?(c(),d("div",hi,[e("table",vi,[u[12]||(u[12]=e("thead",null,[e("tr",null,[e("th",{class:"w-12 text-center"},"Pos"),e("th",null,"User"),e("th",{class:"text-right"},"Cost"),e("th",{class:"text-right"},"Cycles"),e("th",{class:"text-right"},"Area"),e("th",{class:"text-right font-bold"},"Total Pts"),e("th",{class:"text-right font-bold"},"Total Coef"),e("th",{class:"text-center"},"GIF")])],-1)),e("tbody",null,[(c(!0),d(U,null,W(y.submissions,v=>(c(),d("tr",{key:`${y.puzzle_id}-${v.user_id}`},[e("td",gi,p(S(v.rank)),1),e("td",pi,p(v.username),1),e("td",bi,p(g(v.final_cost)),1),e("td",yi,p(g(v.final_cycles)),1),e("td",_i,p(g(v.final_area)),1),e("td",{class:oe(["text-right font-bold",{"text-yellow-600":v.rank===1,"text-gray-600":v.rank===2,"text-orange-600":v.rank===3}])},p(g(v.rank_points)),3),e("td",xi,p(g(v.total_coef)),1),e("td",wi,[v.files.length>0?(c(),d("button",{key:0,onClick:f=>b(v.files[0].file_url,v.files[0].original_filename),class:"btn btn-xs btn-primary gap-1"},[...u[11]||(u[11]=[e("i",{class:"mdi mdi-image"},null,-1),E(" View ",-1)])],8,ki)):(c(),d("span",$i,"—"))])]))),128))])])])):(c(),d("div",zi," No submissions yet "))]))),128))]))])]),a.value?(c(),d("div",Si,[e("div",Ci,[e("div",Pi,[e("h3",Li,p(i.value),1),e("button",{onClick:k,class:"btn btn-sm btn-circle btn-ghost"},[...u[14]||(u[14]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),e("div",Ri,[e("img",{src:l.value,alt:i.value,class:"object-contain"},null,8,Ei)]),e("div",Oi,[e("a",{href:l.value,target:"_blank",class:"btn btn-primary btn-sm"},[...u[15]||(u[15]=[e("i",{class:"mdi mdi-download"},null,-1),E(" Download ",-1)])],8,Mi),e("button",{onClick:k,class:"btn btn-sm"},"Close")])]),e("div",{class:"modal-backdrop",onClick:k})])):L("",!0)],64))}}),Ai={class:"card bg-base-100 shadow-lg"},Di={class:"card-body"},Ti={key:0,class:"flex justify-center py-12"},ji={key:1,class:"alert alert-error"},Ii={key:2,class:"text-center py-8"},qi={key:3,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-3"},Fi={class:"text-3xl font-bold mb-2"},Ui={class:"font-semibold text-sm mb-2 truncate"},Bi={class:"text-2xl font-bold text-primary"},Vi=ue({__name:"TopUsersLeaderboard",setup(o){const n=O(!0),s=O(null),t=O(""),a=async()=>{n.value=!0,t.value="";try{const i=await ae.getPuzzleResults(100);i.data?s.value=i.data:i.error&&(t.value=i.error,console.error("Error fetching results:",i.error))}catch(i){t.value=i instanceof Error?i.message:"Failed to fetch results",console.error("Error fetching results:",i)}finally{n.value=!1}},l=()=>{if(!s.value)return[];const i={};return s.value.results.forEach(m=>{m.submissions.forEach(g=>{const b=g.user_id;i[b]||(i[b]={username:g.username,user_id:g.user_id,total_points:0}),i[b].total_points+=g.rank_points||0})}),Object.values(i).sort((m,g)=>g.total_points-m.total_points).slice(0,10)};return pe(()=>{a()}),(i,m)=>(c(),d("div",Ai,[e("div",Di,[m[3]||(m[3]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-podium text-yellow-500 text-3xl"}),E(" Top 10 Users ")],-1)),n.value?(c(),d("div",Ti,[...m[0]||(m[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(c(),d("div",ji,[m[1]||(m[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,p(t.value),1)])):l().length===0?(c(),d("div",Ii,[...m[2]||(m[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(c(),d("div",qi,[(c(!0),d(U,null,W(l(),(g,b)=>(c(),d("div",{key:g.user_id,class:oe(["bg-base-200 p-4 rounded-lg text-center",{"ring-2 ring-yellow-500":b===0,"ring-2 ring-gray-400":b===1,"ring-2 ring-orange-400":b===2}])},[e("div",Fi,p(b===0?"šŸ„‡":b===1?"🄈":b===2?"šŸ„‰":`#${b+1}`),1),e("div",Ui,p(g.username),1),e("div",Bi,p(g.total_points)+" pts",1)],2))),128))]))])]))}});function qt(o,n){return Gt()?(Wt(o,n),!0):!1}const Ft=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function Gi(o,n=1e3,s={}){const{immediate:t=!0,immediateCallback:a=!1}=s;let l=null;const i=Ht(!1);function m(){l&&(clearInterval(l),l=null)}function g(){i.value=!1,m()}function b(){const k=ze(n);k<=0||(i.value=!0,a&&o(),m(),i.value&&(l=setInterval(o,k)))}return t&&Ft&&b(),(ge(n)||typeof n=="function")&&qt(Ce(n,()=>{i.value&&Ft&&b()})),qt(g),{isActive:bs(i),pause:g,resume:b}}function Wi(o,n){var s,t;const a=Ht(ze(o)),l=Gi(()=>{var k;const S=a.value-1;if(a.value=S<0?0:S,n==null||(k=n.onTick)===null||k===void 0||k.call(n),a.value<=0){var w;l.pause(),n==null||(w=n.onComplete)===null||w===void 0||w.call(n)}},(s=n?.interval)!==null&&s!==void 0?s:1e3,{immediate:(t=n?.immediate)!==null&&t!==void 0?t:!1}),i=k=>{var S;a.value=(S=ze(k))!==null&&S!==void 0?S:ze(o)},m=()=>{l.pause(),i()},g=()=>{l.isActive.value||a.value>0&&l.resume()};return{remaining:a,reset:i,stop:m,start:k=>{i(k),l.resume()},pause:l.pause,resume:g,isActive:l.isActive}}const Ji={class:"min-h-screen bg-base-200"},Hi={class:"navbar bg-base-100 shadow-lg"},Ki={class:"container min-w-3/4 mx-auto w-full flex items-center gap-4"},Yi={class:"flex items-center gap-4"},Zi={key:0,class:"flex items-center gap-2"},Qi={class:"text-sm"},Xi={class:"font-medium"},ec={key:0,class:"badge badge-warning badge-xs ml-1"},tc={key:1,class:"text-sm text-base-content/70"},sc={class:"container min-w-3/4 mx-auto px-4 py-8"},oc={key:0,class:"flex justify-center"},nc={class:"text-center"},ac={class:"mb-6 text-base-content/70"},rc={key:1,class:"flex justify-center items-center min-h-[400px]"},lc={key:2,class:"alert alert-error max-w-2xl mx-auto"},ic={class:"text-sm"},cc={key:3,class:"space-y-8"},dc={key:0,class:"space-y-8"},uc={class:"mb-8"},fc={class:"card bg-base-100 shadow-lg"},mc={class:"card-body"},hc={class:"card-title text-2xl"},vc={class:"text-base-content/70"},gc={class:"flex flex-wrap gap-4 mt-4"},pc=["disabled"],bc={key:0,class:"alert alert-warning mt-4"},yc={key:0},_c={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},xc={key:1,class:"text-center py-12"},wc={key:0,class:"modal modal-open"},kc={class:"modal-box max-w-6xl"},$c={class:"flex justify-between items-center mb-4"},zc=ue({__name:"OpusMagnum",props:{collectionTitle:{},collectionUrl:{},collectionDescription:{}},setup(o){const n=o,s=Le(),t=lt(),{submissions:a,isSubmissionModalOpen:l}=rt(t),{openSubmissionModal:i,loadSubmissions:m,closeSubmissionModal:g}=t,b=O(null),k=O(null),S=O(!0),w=O(""),r=te(()=>b.value?.is_superuser||!1),u=te(()=>!!(k.value&&!k.value.accepting_submissions)),y=te(()=>{const F={};return a.value.forEach(C=>{C.responses.forEach(R=>{F[R.puzzle_id]||(F[R.puzzle_id]=[]),F[R.puzzle_id].push(R)})}),F});async function v(){try{S.value=!0,w.value="",console.log("Starting data load..."),console.log("Loading user info...");const F=await ws();F.data?(b.value=F.data,console.log("User info loaded:",F.data)):F.error&&console.warn("User info error:",F.error),console.log("Loading collection...");const C=await ks();C.data?(k.value=C.data,console.log("Collection loaded:",C.data)):C.error&&console.warn("Collection error:",C.error),console.log("Loading puzzles..."),await s.loadPuzzles(),console.log("Puzzles loaded:",s.puzzles.length),console.log("Loading submissions..."),await m(),console.log("Submissions loaded:",a.value.length),console.log("Data load complete!")}catch(F){w.value=Xt.getErrorMessage(F),console.error("Failed to load data:",F)}finally{S.value=!1,console.log("Loading state set to false")}b.value?.is_superuser&&h()}const{remaining:f,start:h}=Wi(60,{onComplete(){v()}});pe(async()=>{await v()});const _=F=>s.findPuzzleByName(F),M=()=>{window.location.reload()},D=()=>{window.location.href="/"};return(F,C)=>(c(),d("div",Ji,[e("div",Hi,[e("div",Ki,[e("button",{onClick:D,class:"btn btn-primary btn-sm"},[...C[3]||(C[3]=[e("i",{class:"mdi mdi-arrow-left"},null,-1),E(" Back ",-1)])]),C[6]||(C[6]=e("h1",{class:"text-xl font-bold"},"Opus Magnum Puzzle Submitter",-1)),C[7]||(C[7]=e("div",{class:"flex-1"},null,-1)),e("div",Yi,[b.value?.is_authenticated?(c(),d("div",Zi,[e("div",Qi,[e("span",Xi,p(b.value.username),1),b.value.is_superuser?(c(),d("span",ec,"Admin")):L("",!0)])])):(c(),d("div",tc,"Not logged in")),C[4]||(C[4]=e("a",{href:"/api/docs",class:"btn btn-xs"},"API docs",-1)),C[5]||(C[5]=e("a",{href:"/admin",class:"btn btn-xs btn-warning"},"Admin panel",-1))])])]),e("div",sc,[b.value?.is_superuser?(c(),d("div",oc,[e("div",nc,[e("p",ac,[C[8]||(C[8]=e("span",{class:"loading loading-spinner loading-lg"},null,-1)),E(" Auto reload page in "+p(q(f))+" seconds ... ",1)])])])):L("",!0),S.value?(c(),d("div",rc,[...C[9]||(C[9]=[e("div",{class:"text-center"},[e("span",{class:"loading loading-spinner loading-lg"}),e("p",{class:"mt-4 text-base-content/70"},"Loading puzzles...")],-1)])])):w.value?(c(),d("div",lc,[C[12]||(C[12]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,[C[10]||(C[10]=e("h3",{class:"font-bold"},"Error Loading Data",-1)),e("div",ic,p(w.value),1)]),e("button",{onClick:M,class:"btn btn-sm btn-outline"},[...C[11]||(C[11]=[e("i",{class:"mdi mdi-refresh mr-1"},null,-1),E(" Retry ",-1)])])])):(c(),d("div",cc,[u.value?(c(),d("div",dc,[ce(Vi),ce(Ni),ce(Gl)])):(c(),d(U,{key:1},[e("div",uc,[e("div",fc,[e("div",mc,[e("h2",hc,p(n.collectionTitle),1),e("p",vc,p(n.collectionDescription),1),e("div",gc,[e("button",{onClick:C[0]||(C[0]=(...R)=>q(i)&&q(i)(...R)),class:"btn btn-primary",disabled:u.value},[...C[13]||(C[13]=[e("i",{class:"mdi mdi-plus mr-2"},null,-1),E(" Submit Solution ",-1)])],8,pc)]),u.value?(c(),d("div",bc,[...C[14]||(C[14]=[e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1),e("div",null,[e("h3",{class:"font-bold"},"Tournament Closed"),e("div",{class:"text-sm"},"This tournament is no longer accepting new submissions.")],-1)])])):L("",!0)])])]),ce(_l),r.value?(c(),d("div",yc,[ce(Aa)])):L("",!0),e("div",_c,[(c(!0),d(U,null,W(q(s).puzzles,R=>(c(),ys(ho,{key:R.id,puzzle:R,responses:y.value[R.id]||[]},null,8,["puzzle","responses"]))),128))]),q(s).puzzles.length===0?(c(),d("div",xc,[...C[15]||(C[15]=[e("div",{class:"text-6xl mb-4"},"🧩",-1),e("h3",{class:"text-xl font-bold mb-2"},"No Puzzles Available",-1),e("p",{class:"text-base-content/70"}," Check back later for new puzzle collections! ",-1)])])):L("",!0)],64))]))]),q(l)?(c(),d("div",wc,[e("div",kc,[e("div",$c,[C[17]||(C[17]=e("h3",{class:"font-bold text-lg"},"Submit Solution",-1)),e("button",{onClick:C[1]||(C[1]=(...R)=>q(g)&&q(g)(...R)),class:"btn btn-sm btn-circle btn-ghost"},[...C[16]||(C[16]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),ce(Gn,{puzzles:q(s).puzzles,"find-puzzle-by-name":_},null,8,["puzzles"])]),e("div",{class:"modal-backdrop",onClick:C[2]||(C[2]=(...R)=>q(g)&&q(g)(...R))})])):L("",!0)]))}}),Sc=$s(),ns="#app",Cc=document.querySelector(ns),as=_s(zc,{...Cc?.dataset});as.use(Sc);as.mount(ns); diff --git a/polylan_submitter/static_source/vite/assets/opus_magnum-CniXRQHB.js b/polylan_submitter/static_source/vite/assets/opus_magnum-CniXRQHB.js new file mode 100644 index 0000000..6f3b5b0 --- /dev/null +++ b/polylan_submitter/static_source/vite/assets/opus_magnum-CniXRQHB.js @@ -0,0 +1 @@ +import{r as E,c as Q,d as le,a as r,o as l,n as Z,b as e,e as L,t as h,f as R,F,g as B,u as I,h as We,w as Ye,i as Je,j as Gt,k as ae,v as Et,l as ne,m as ye,p as Wt,q as fe,s as st,x as Mt,y as Jt,z as Ht,A as _e,B as Yt,C as Kt,D as Zt,E as Qt}from"./style-CCc0RrA9.js";import{d as Ke,s as Ze,_ as ot,p as Xt}from"./index-B10U1JZR.js";import{s as es,p as ts,a as ss}from"./sdk.gen-CMTwTM_A.js";const nt="/api";class os{async request(n,s={}){try{const t=await fetch(`${nt}${n}`,{headers:{"Content-Type":"application/json",...s.headers},...s}),a=await t.json();return t.ok?{data:a,status:t.status}:{error:a.detail||`HTTP ${t.status}`,status:t.status}}catch(t){return{error:t instanceof Error?t.message:"Network error",status:0}}}async uploadRequest(n,s){try{const t=await fetch(`${nt}${n}`,{method:"POST",body:s}),a=await t.json();return t.ok?{data:a,status:t.status}:{error:a.detail||`HTTP ${t.status}`,status:t.status}}catch(t){return{error:t instanceof Error?t.message:"Network error",status:0}}}async getGames(){return this.request("/games/")}async getPuzzles(){return this.request("/submissions/puzzles")}async getCollection(){return this.request("/submissions/collection")}async getTopSubmissions(n=5){return this.request(`/results/top-submissions?limit=${n}`)}async getPuzzleResults(n=5){return this.request(`/results/puzzle-results?limit=${n}`)}async getSubmissions(n=20,s=0){return this.request(`/submissions/submissions?limit=${n}&offset=${s}`)}async getSubmission(n){return this.request(`/submissions/submissions/${n}`)}async createSubmission(n,s){const t=new FormData;return t.append("data",JSON.stringify(n)),s.forEach(a=>{t.append("files",a)}),this.uploadRequest("/submissions/submissions",t)}async validateResponse(n,s){return this.request(`/submissions/responses/${n}/validate`,{method:"PUT",body:JSON.stringify(s)})}async autoValidateResponses(n){return this.request(`/submissions/responses/${n}/validate/auto`,{method:"PUT"})}async getResponsesNeedingValidation(){return this.request("/submissions/responses/needs-validation")}async validateSubmission(n){return this.request(`/submissions/submissions/${n}/validate`,{method:"POST"})}async deleteSubmission(n){return this.request(`/submissions/submissions/${n}`,{method:"DELETE"})}async getStats(){return this.request("/submissions/stats")}async healthCheck(){return this.request("/health")}async getUserInfo(){return this.request("/user")}async getMarkets(){return this.request("/market/")}async placeBet(n,s){return this.request(`/market/${n}/bets`,{method:"POST",body:JSON.stringify(s)})}async getUserBets(){return this.request("/market/user/bets")}async closeMarket(n){return this.request(`/market/${n}/actions/close`,{method:"POST"})}async resolveMarket(n,s){return this.request(`/market/${n}/actions/resolve`,{method:"POST",body:JSON.stringify({winning_option_uuid:s})})}}const ee=new os,ns={async loadPuzzles(){const c=await ee.getPuzzles();return c.error?(console.error("Failed to load puzzles:",c.error),[]):c.data||[]},findPuzzleByName(c,n){if(!n)return null;let s=c.find(t=>t.title.toLowerCase()===n.toLowerCase());return s||(s=c.find(t=>t.title.toLowerCase().includes(n.toLowerCase())||n.toLowerCase().includes(t.title.toLowerCase()))),s||null}},at={async createFromFiles(c,n,s,t){const a=c.map(f=>{const v=ns.findPuzzleByName(n,f.ocrData?.puzzle||"");if(v)return{puzzle_id:v.id,puzzle_name:f.ocrData?.puzzle||"",cost:f.ocrData?.cost,cycles:f.ocrData?.cycles,area:f.ocrData?.area,needs_manual_validation:(f.ocrData?.confidence.overall??0)<=.8,ocr_confidence_cost:f.ocrData?.confidence?.cost||0,ocr_confidence_cycles:f.ocrData?.confidence?.cycles||0,ocr_confidence_area:f.ocrData?.confidence?.area||0}}).filter(f=>f!==void 0),i=c.map(f=>f.file);return ee.createSubmission({notes:s,manual_validation_requested:t,responses:a},i)},async loadSubmissions(c=20,n=0){const s=await ee.getSubmissions(c,n);return s.error?(console.error("Failed to load submissions:",s.error),[]):s.data?.items||[]}},Ot={getErrorMessage(c){return typeof c=="string"?c:c instanceof Error?c.message:typeof c=="object"&&c!==null&&"detail"in c?String(c.detail):"An unknown error occurred"},isNetworkError(c){return typeof c=="string"&&c.includes("Network")},isValidationError(c){return c===400},isAuthError(c){return c===401||c===403}},xe=Ke("puzzles",()=>{const c=E([]),n=E(!1),s=E(""),t=Q(()=>c.value.map(v=>v.title)),a=Q(()=>v=>{if(!v)return null;const p=c.value.find($=>$.title.toLowerCase()===v.toLowerCase());return p||c.value.find($=>$.title.toLowerCase().includes(v.toLowerCase())||v.toLowerCase().includes($.title.toLowerCase()))||null}),i=async()=>{if(!(c.value.length>0))try{n.value=!0,s.value="";const v=await es();if(v.error){s.value=String(v.error),console.error("Failed to load puzzles:",v.error);return}v.data&&(c.value=v.data)}catch(v){s.value="Failed to load puzzles",console.error("Error loading puzzles:",v)}finally{n.value=!1}};return{puzzles:c,isLoading:n,error:s,puzzleNames:t,findPuzzleByName:a,loadPuzzles:i,refreshPuzzles:async()=>{c.value=[],await i()}}}),Qe=Ke("submissions",()=>{const c=E([]),n=E(!1),s=E(""),t=E(!1),a=xe(),{puzzles:i}=Ze(a),f=async(w=20,o=0)=>{try{n.value=!0,s.value="";const d=await at.loadSubmissions(w,o);o===0?c.value=d:c.value.push(...d)}catch(d){s.value="Failed to load submissions",console.error("Error loading submissions:",d)}finally{n.value=!1}},v=async(w,o,d)=>{try{n.value=!0,s.value="";const b=await at.createFromFiles(w,i.value,o,d);if(b.error)throw s.value=b.error,new Error(b.error);return b.data?(c.value.unshift(b.data),b.data):void 0}catch(b){throw s.value=b instanceof Error?b.message:"Failed to create submission",b}finally{n.value=!1}},p=()=>{t.value=!0},x=()=>{t.value=!1};return{submissions:c,isLoading:n,error:s,isSubmissionModalOpen:t,loadSubmissions:f,createSubmission:v,openSubmissionModal:p,closeSubmissionModal:x,refreshSubmissions:async()=>{c.value=[],await f()},handleSubmission:async w=>{try{n.value=!0,s.value="";const o=await v(w.files,w.notes,w.manualValidationRequested);if(o){const d=o.responses.map(b=>b.puzzle_name).join(", ");alert(`Solutions submitted successfully for puzzles: ${d}`)}else alert("Submission created successfully!");x()}catch(o){const d=Ot.getErrorMessage(o);s.value=d,alert(`Submission failed: ${d}`),console.error("Submission error:",o)}finally{n.value=!1}}}}),as={class:"card-body"},ls={class:"flex items-start justify-between"},rs={class:"flex-1"},is={class:"text-sm text-base-content/70 mb-2"},cs={class:"flex items-center gap-2 mb-3"},ds={class:"badge badge-primary badge-sm"},us={class:"badge badge-ghost badge-sm"},fs={key:0,class:"text-sm text-base-content/80 mb-4"},ms={key:1,class:"bg-base-200 p-3 rounded-lg mb-4"},vs={class:"grid grid-cols-3 gap-2"},hs={class:"text-center"},gs={class:"font-bold text-primary"},ps={class:"text-center"},bs={class:"font-bold text-primary"},ys={class:"text-center"},_s={class:"font-bold text-primary"},xs={key:2,class:"flex flex-wrap gap-1 mb-4"},ws={key:0,class:"badge badge-outline badge-xs"},ks={class:"flex flex-col items-end gap-2"},$s={class:"tooltip","data-tip":"View on Steam Workshop"},zs=["href"],Ss={key:0,class:"mt-1"},Cs={class:"divider"},Ps={class:"text-sm font-medium"},Ls={class:"table table-xs"},Rs={key:0,class:"badge badge-success badge-xs"},Es={key:1,class:"text-base-content/50"},Ms={key:0,class:"badge badge-info badge-xs"},Os={key:1,class:"text-base-content/50"},Ns={key:0,class:"badge badge-warning badge-xs"},As={key:1,class:"text-base-content/50"},Ds={class:"flex items-center gap-1"},Ts={class:"badge badge-ghost badge-xs"},Is=["data-tip"],qs={key:1,class:"tooltip","data-tip":"Needs manual validation"},js=le({__name:"PuzzleCard",props:{puzzle:{},responses:{}},setup(c){const{openSubmissionModal:n}=Qe();return(s,t)=>(l(),r("div",{class:Z(["card bg-base-100 shadow-lg hover:shadow-2xl transition-shadow duration-300",c.responses?.length==0?"shadow-red-900":"shadow-primary-300"])},[e("div",as,[e("div",ls,[e("div",rs,[e("h3",{class:Z(["card-title text-lg font-bold",c.responses?.length==0?"text-error":"text-primary"])},h(c.puzzle.title),3),e("p",is," by "+h(c.puzzle.author_name),1),e("div",cs,[e("div",ds,h(c.puzzle.steam_item_id),1),e("div",us,"ID: "+h(c.puzzle.id),1)]),c.puzzle.description?(l(),r("p",fs,h(c.puzzle.description),1)):L("",!0),c.puzzle.points_factor?(l(),r("div",ms,[t[7]||(t[7]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-2"},"Points Coefficients",-1)),e("div",vs,[e("div",hs,[e("span",gs,[t[1]||(t[1]=e("small",null,"x",-1)),R(h(c.puzzle.points_factor.cost),1)]),t[2]||(t[2]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",ps,[e("span",bs,[t[3]||(t[3]=e("small",null,"x",-1)),R(h(c.puzzle.points_factor.cycles),1)]),t[4]||(t[4]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",ys,[e("span",_s,[t[5]||(t[5]=e("small",null,"x",-1)),R(h(c.puzzle.points_factor.area),1)]),t[6]||(t[6]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),c.puzzle.tags&&c.puzzle.tags.length>0?(l(),r("div",xs,[(l(!0),r(F,null,B(c.puzzle.tags.slice(0,3),a=>(l(),r("span",{key:a,class:"badge badge-outline badge-xs"},h(a),1))),128)),c.puzzle.tags.length>3?(l(),r("span",ws," +"+h(c.puzzle.tags.length-3)+" more ",1)):L("",!0)])):L("",!0)]),e("div",ks,[e("div",$s,[e("a",{href:`https://steamcommunity.com/workshop/filedetails/?id=${c.puzzle.steam_item_id}`,target:"_blank",class:"btn btn-ghost btn-sm btn-square"},[...t[8]||(t[8]=[e("i",{class:"mdi mdi-steam text-lg"},null,-1)])],8,zs)])])]),c.responses&&c.responses.length>0?(l(),r("div",Ss,[e("div",Cs,[e("span",Ps,"Solutions ("+h(c.responses.length)+")",1)]),e("div",null,[e("table",Ls,[t[11]||(t[11]=e("thead",null,[e("tr",null,[e("th",null,"Cost"),e("th",null,"Cycles"),e("th",null,"Area"),e("th",null,"Files")])],-1)),e("tbody",null,[(l(!0),r(F,null,B(c.responses,a=>(l(),r("tr",{key:a.id,class:"hover"},[e("td",null,[a.final_cost||a.cost?(l(),r("span",Rs,h(a.final_cost||a.cost),1)):(l(),r("span",Es,"-"))]),e("td",null,[a.final_cycles||a.cycles?(l(),r("span",Ms,h(a.final_cycles||a.cycles),1)):(l(),r("span",Os,"-"))]),e("td",null,[a.final_area||a.area?(l(),r("span",Ns,h(a.final_area||a.area),1)):(l(),r("span",As,"-"))]),e("td",null,[e("div",Ds,[e("span",Ts,h(a.files?.length||0),1),a.files?.length?(l(),r("div",{key:0,class:"tooltip","data-tip":a.files.map(i=>i.original_filename||i.file?.name).join(", ")},[...t[9]||(t[9]=[e("i",{class:"mdi mdi-information-outline text-xs"},null,-1)])],8,Is)):L("",!0),a.needs_manual_validation?(l(),r("div",qs,[...t[10]||(t[10]=[e("i",{class:"mdi mdi-alert-circle text-xs text-warning"},null,-1)])])):L("",!0)])])]))),128))])])])])):(l(),r("div",{key:1,class:"mt-6 text-center py-4 border-2 border-dashed border-base-300 rounded-lg hover:border-primary transition-colors duration-300 cursor-pointer",onClick:t[0]||(t[0]=(...a)=>I(n)&&I(n)(...a))},[...t[12]||(t[12]=[e("i",{class:"mdi mdi-upload text-2xl text-base-content/40"},null,-1),e("p",{class:"text-sm text-base-content/60 mt-2"},"No solutions yet",-1),e("p",{class:"text-xs text-base-content/40"}," Upload solutions using the submit button ",-1)])]))])],2))}});var $e={exports:{}},lt;function Fs(){return lt||(lt=1,(function(c){var n=(function(s){var t=Object.prototype,a=t.hasOwnProperty,i=Object.defineProperty||function(k,_,z){k[_]=z.value},f,v=typeof Symbol=="function"?Symbol:{},p=v.iterator||"@@iterator",x=v.asyncIterator||"@@asyncIterator",$=v.toStringTag||"@@toStringTag";function S(k,_,z){return Object.defineProperty(k,_,{value:z,enumerable:!0,configurable:!0,writable:!0}),k[_]}try{S({},"")}catch{S=function(_,z,O){return _[z]=O}}function w(k,_,z,O){var C=_&&_.prototype instanceof y?_:y,D=Object.create(C.prototype),W=new de(O||[]);return i(D,"_invoke",{value:ge(k,z,W)}),D}s.wrap=w;function o(k,_,z){try{return{type:"normal",arg:k.call(_,z)}}catch(O){return{type:"throw",arg:O}}}var d="suspendedStart",b="suspendedYield",g="executing",u="completed",m={};function y(){}function M(){}function T(){}var q={};S(q,p,function(){return this});var P=Object.getPrototypeOf,j=P&&P(P(ue([])));j&&j!==t&&a.call(j,p)&&(q=j);var te=T.prototype=y.prototype=Object.create(q);M.prototype=T,i(te,"constructor",{value:T,configurable:!0}),i(T,"constructor",{value:M,configurable:!0}),M.displayName=S(T,$,"GeneratorFunction");function ce(k){["next","throw","return"].forEach(function(_){S(k,_,function(z){return this._invoke(_,z)})})}s.isGeneratorFunction=function(k){var _=typeof k=="function"&&k.constructor;return _?_===M||(_.displayName||_.name)==="GeneratorFunction":!1},s.mark=function(k){return Object.setPrototypeOf?Object.setPrototypeOf(k,T):(k.__proto__=T,S(k,$,"GeneratorFunction")),k.prototype=Object.create(te),k},s.awrap=function(k){return{__await:k}};function re(k,_){function z(D,W,V,Y){var U=o(k[D],k,W);if(U.type==="throw")Y(U.arg);else{var me=U.arg,ie=me.value;return ie&&typeof ie=="object"&&a.call(ie,"__await")?_.resolve(ie.__await).then(function(se){z("next",se,V,Y)},function(se){z("throw",se,V,Y)}):_.resolve(ie).then(function(se){me.value=se,V(me)},function(se){return z("throw",se,V,Y)})}}var O;function C(D,W){function V(){return new _(function(Y,U){z(D,W,Y,U)})}return O=O?O.then(V,V):V()}i(this,"_invoke",{value:C})}ce(re.prototype),S(re.prototype,x,function(){return this}),s.AsyncIterator=re,s.async=function(k,_,z,O,C){C===void 0&&(C=Promise);var D=new re(w(k,_,z,O),C);return s.isGeneratorFunction(_)?D:D.next().then(function(W){return W.done?W.value:D.next()})};function ge(k,_,z){var O=d;return function(D,W){if(O===g)throw new Error("Generator is already running");if(O===u){if(D==="throw")throw W;return H()}for(z.method=D,z.arg=W;;){var V=z.delegate;if(V){var Y=pe(V,z);if(Y){if(Y===m)continue;return Y}}if(z.method==="next")z.sent=z._sent=z.arg;else if(z.method==="throw"){if(O===d)throw O=u,z.arg;z.dispatchException(z.arg)}else z.method==="return"&&z.abrupt("return",z.arg);O=g;var U=o(k,_,z);if(U.type==="normal"){if(O=z.done?u:b,U.arg===m)continue;return{value:U.arg,done:z.done}}else U.type==="throw"&&(O=u,z.method="throw",z.arg=U.arg)}}}function pe(k,_){var z=_.method,O=k.iterator[z];if(O===f)return _.delegate=null,z==="throw"&&k.iterator.return&&(_.method="return",_.arg=f,pe(k,_),_.method==="throw")||z!=="return"&&(_.method="throw",_.arg=new TypeError("The iterator does not provide a '"+z+"' method")),m;var C=o(O,k.iterator,_.arg);if(C.type==="throw")return _.method="throw",_.arg=C.arg,_.delegate=null,m;var D=C.arg;if(!D)return _.method="throw",_.arg=new TypeError("iterator result is not an object"),_.delegate=null,m;if(D.done)_[k.resultName]=D.value,_.next=k.nextLoc,_.method!=="return"&&(_.method="next",_.arg=f);else return D;return _.delegate=null,m}ce(te),S(te,$,"Generator"),S(te,p,function(){return this}),S(te,"toString",function(){return"[object Generator]"});function we(k){var _={tryLoc:k[0]};1 in k&&(_.catchLoc=k[1]),2 in k&&(_.finallyLoc=k[2],_.afterLoc=k[3]),this.tryEntries.push(_)}function X(k){var _=k.completion||{};_.type="normal",delete _.arg,k.completion=_}function de(k){this.tryEntries=[{tryLoc:"root"}],k.forEach(we,this),this.reset(!0)}s.keys=function(k){var _=Object(k),z=[];for(var O in _)z.push(O);return z.reverse(),function C(){for(;z.length;){var D=z.pop();if(D in _)return C.value=D,C.done=!1,C}return C.done=!0,C}};function ue(k){if(k){var _=k[p];if(_)return _.call(k);if(typeof k.next=="function")return k;if(!isNaN(k.length)){var z=-1,O=function C(){for(;++z=0;--O){var C=this.tryEntries[O],D=C.completion;if(C.tryLoc==="root")return z("end");if(C.tryLoc<=this.prev){var W=a.call(C,"catchLoc"),V=a.call(C,"finallyLoc");if(W&&V){if(this.prev=0;--z){var O=this.tryEntries[z];if(O.tryLoc<=this.prev&&a.call(O,"finallyLoc")&&this.prev=0;--_){var z=this.tryEntries[_];if(z.finallyLoc===k)return this.complete(z.completion,z.afterLoc),X(z),m}},catch:function(k){for(var _=this.tryEntries.length-1;_>=0;--_){var z=this.tryEntries[_];if(z.tryLoc===k){var O=z.completion;if(O.type==="throw"){var C=O.arg;X(z)}return C}}throw new Error("illegal catch attempt")},delegateYield:function(k,_,z){return this.delegate={iterator:ue(k),resultName:_,nextLoc:z},this.method==="next"&&(this.arg=f),m}},s})(c.exports);try{regeneratorRuntime=n}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}})($e)),$e.exports}var ze,rt;function Xe(){return rt||(rt=1,ze=(c,n)=>`${c}-${n}-${Math.random().toString(16).slice(3,8)}`),ze}var Se,it;function Nt(){if(it)return Se;it=1;const c=Xe();let n=0;return Se=({id:s,action:t,payload:a={}})=>{let i=s;return typeof i>"u"&&(i=c("Job",n),n+=1),{id:i,action:t,payload:a}},Se}var ve={},ct;function et(){if(ct)return ve;ct=1;let c=!1;return ve.logging=c,ve.setLogging=n=>{c=n},ve.log=(...n)=>c?console.log.apply(this,n):null,ve}var Ce,dt;function Us(){if(dt)return Ce;dt=1;const c=Nt(),{log:n}=et(),s=Xe();let t=0;return Ce=()=>{const a=s("Scheduler",t),i={},f={};let v=[];t+=1;const p=()=>v.length,x=()=>Object.keys(i).length,$=()=>{if(v.length!==0){const b=Object.keys(i);for(let g=0;g"u"){v[0](i[b[g]]);break}}},S=(b,g)=>new Promise((u,m)=>{const y=c({action:b,payload:g});v.push(async M=>{v.shift(),f[M.id]=y;try{u(await M[b].apply(this,[...g,y.id]))}catch(T){m(T)}finally{delete f[M.id],$()}}),n(`[${a}]: Add ${y.id} to JobQueue`),n(`[${a}]: JobQueue length=${v.length}`),$()});return{addWorker:b=>(i[b.id]=b,n(`[${a}]: Add ${b.id}`),n(`[${a}]: Number of workers=${x()}`),$(),b.id),addJob:async(b,...g)=>{if(x()===0)throw Error(`[${a}]: You need to have at least one worker before adding jobs`);return S(b,g)},terminate:async()=>{Object.keys(i).forEach(async b=>{await i[b].terminate()}),v=[]},getQueueLen:p,getNumWorkers:x}},Ce}function Bs(c){throw new Error('Could not dynamically require "'+c+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Pe,ut;function Vs(){if(ut)return Pe;ut=1;function c(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}return Pe=c,Pe}var Le,ft;function Gs(){if(ft)return Le;ft=1;const c=Vs();return Le=n=>{const s={};return typeof WorkerGlobalScope<"u"?s.type="webworker":c()?s.type="electron":typeof document=="object"?s.type="browser":typeof process=="object"&&typeof Bs=="function"&&(s.type="node"),typeof n>"u"?s:s[n]},Le}var Re,mt;function Ws(){if(mt)return Re;mt=1;const n=Gs()("type")==="browser"?s=>new URL(s,window.location.href).href:s=>s;return Re=s=>{const t={...s};return["corePath","workerPath","langPath"].forEach(a=>{s[a]&&(t[a]=n(t[a]))}),t},Re}var Ee,vt;function Js(){return vt||(vt=1,Ee=c=>{const n=[],s=[],t=[],a=[],i=[];return c.blocks&&c.blocks.forEach(f=>{f.paragraphs.forEach(v=>{v.lines.forEach(p=>{p.words.forEach(x=>{x.symbols.forEach($=>{i.push({...$,page:c,block:f,paragraph:v,line:p,word:x})}),a.push({...x,page:c,block:f,paragraph:v,line:p})}),t.push({...p,page:c,block:f,paragraph:v})}),s.push({...v,page:c,block:f})}),n.push({...f,page:c})}),{...c,blocks:n,paragraphs:s,lines:t,words:a,symbols:i}}),Ee}var Me,ht;function At(){return ht||(ht=1,Me={TESSERACT_ONLY:0,LSTM_ONLY:1,TESSERACT_LSTM_COMBINED:2,DEFAULT:3}),Me}const Hs="5.1.1",Ys={version:Hs};var Oe,gt;function Ks(){return gt||(gt=1,Oe={workerBlobURL:!0,logger:()=>{}}),Oe}var Ne,pt;function Zs(){if(pt)return Ne;pt=1;const c=Ys.version;return Ne={...Ks(),workerPath:`https://cdn.jsdelivr.net/npm/tesseract.js@v${c}/dist/worker.min.js`},Ne}var Ae,bt;function Qs(){return bt||(bt=1,Ae=({workerPath:c,workerBlobURL:n})=>{let s;if(Blob&&URL&&n){const t=new Blob([`importScripts("${c}");`],{type:"application/javascript"});s=new Worker(URL.createObjectURL(t))}else s=new Worker(c);return s}),Ae}var De,yt;function Xs(){return yt||(yt=1,De=c=>{c.terminate()}),De}var Te,_t;function eo(){return _t||(_t=1,Te=(c,n)=>{c.onmessage=({data:s})=>{n(s)}}),Te}var Ie,xt;function to(){return xt||(xt=1,Ie=async(c,n)=>{c.postMessage(n)}),Ie}var qe,wt;function so(){if(wt)return qe;wt=1;const c=s=>new Promise((t,a)=>{const i=new FileReader;i.onload=()=>{t(i.result)},i.onerror=({target:{error:{code:f}}})=>{a(Error(`File could not be read! Code=${f}`))},i.readAsArrayBuffer(s)}),n=async s=>{let t=s;if(typeof s>"u")return"undefined";if(typeof s=="string")/data:image\/([a-zA-Z]*);base64,([^"]*)/.test(s)?t=atob(s.split(",")[1]).split("").map(a=>a.charCodeAt(0)):t=await(await fetch(s)).arrayBuffer();else if(typeof HTMLElement<"u"&&s instanceof HTMLElement)s.tagName==="IMG"&&(t=await n(s.src)),s.tagName==="VIDEO"&&(t=await n(s.poster)),s.tagName==="CANVAS"&&await new Promise(a=>{s.toBlob(async i=>{t=await c(i),a()})});else if(typeof OffscreenCanvas<"u"&&s instanceof OffscreenCanvas){const a=await s.convertToBlob();t=await c(a)}else(s instanceof File||s instanceof Blob)&&(t=await c(s));return new Uint8Array(t)};return qe=n,qe}var je,kt;function oo(){if(kt)return je;kt=1;const c=Zs(),n=Qs(),s=Xs(),t=eo(),a=to(),i=so();return je={defaultOptions:c,spawnWorker:n,terminateWorker:s,onMessage:t,send:a,loadImage:i},je}var Fe,$t;function Dt(){if($t)return Fe;$t=1;const c=Ws(),n=Js(),s=Nt(),{log:t}=et(),a=Xe(),i=At(),{defaultOptions:f,spawnWorker:v,terminateWorker:p,onMessage:x,loadImage:$,send:S}=oo();let w=0;return Fe=async(o="eng",d=i.LSTM_ONLY,b={},g={})=>{const u=a("Worker",w),{logger:m,errorHandler:y,...M}=c({...f,...b}),T={},q={},P=typeof o=="string"?o.split("+"):o;let j=d,te=g;const ce=[i.DEFAULT,i.LSTM_ONLY].includes(d)&&!M.legacyCore;let re,ge;const pe=new Promise((N,A)=>{ge=N,re=A}),we=N=>{re(N.message)};let X=v(M);X.onerror=we,w+=1;const de=(N,A)=>{T[N]=A},ue=(N,A)=>{q[N]=A},H=({id:N,action:A,payload:G})=>new Promise((K,J)=>{t(`[${u}]: Start ${N}, action=${A}`);const oe=`${A}-${N}`;de(oe,K),ue(oe,J),S(X,{workerId:u,jobId:N,action:A,payload:G})}),k=()=>console.warn("`load` is depreciated and should be removed from code (workers now come pre-loaded)"),_=N=>H(s({id:N,action:"load",payload:{options:{lstmOnly:ce,corePath:M.corePath,logging:M.logging}}})),z=(N,A,G)=>H(s({id:G,action:"FS",payload:{method:"writeFile",args:[N,A]}})),O=(N,A)=>H(s({id:A,action:"FS",payload:{method:"readFile",args:[N,{encoding:"utf8"}]}})),C=(N,A)=>H(s({id:A,action:"FS",payload:{method:"unlink",args:[N]}})),D=(N,A,G)=>H(s({id:G,action:"FS",payload:{method:N,args:A}})),W=()=>console.warn("`loadLanguage` is depreciated and should be removed from code (workers now come with language pre-loaded)"),V=(N,A)=>H(s({id:A,action:"loadLanguage",payload:{langs:N,options:{langPath:M.langPath,dataPath:M.dataPath,cachePath:M.cachePath,cacheMethod:M.cacheMethod,gzip:M.gzip,lstmOnly:[i.DEFAULT,i.LSTM_ONLY].includes(j)&&!M.legacyLang}}})),Y=()=>console.warn("`initialize` is depreciated and should be removed from code (workers now come pre-initialized)"),U=(N,A,G,K)=>H(s({id:K,action:"initialize",payload:{langs:N,oem:A,config:G}})),me=(N="eng",A,G,K)=>{if(ce&&[i.TESSERACT_ONLY,i.TESSERACT_LSTM_COMBINED].includes(A))throw Error("Legacy model requested but code missing.");const J=A||j;j=J;const oe=G||te;te=oe;const ke=(typeof N=="string"?N.split("+"):N).filter(Vt=>!P.includes(Vt));return P.push(...ke),ke.length>0?V(ke,K).then(()=>U(N,J,oe,K)):U(N,J,oe,K)},ie=(N={},A)=>H(s({id:A,action:"setParameters",payload:{params:N}})),se=async(N,A={},G={blocks:!0,text:!0,hocr:!0,tsv:!0},K)=>H(s({id:K,action:"recognize",payload:{image:await $(N),options:A,output:G}})),jt=(N="Tesseract OCR Result",A=!1,G)=>(console.log("`getPDF` function is depreciated. `recognize` option `savePDF` should be used instead."),H(s({id:G,action:"getPDF",payload:{title:N,textonly:A}}))),Ft=async(N,A)=>{if(ce)throw Error("`worker.detect` requires Legacy model, which was not loaded.");return H(s({id:A,action:"detect",payload:{image:await $(N)}}))},Ut=async()=>(X!==null&&(p(X),X=null),Promise.resolve());x(X,({workerId:N,jobId:A,status:G,action:K,data:J})=>{const oe=`${K}-${A}`;if(G==="resolve"){t(`[${N}]: Complete ${A}`);let be=J;K==="recognize"?be=n(J):K==="getPDF"&&(be=Array.from({...J,length:Object.keys(J).length})),T[oe]({jobId:A,data:be})}else if(G==="reject")if(q[oe](J),K==="load"&&re(J),y)y(J);else throw Error(J);else G==="progress"&&m({...J,userJobId:A})});const Bt={id:u,worker:X,setResolve:de,setReject:ue,load:k,writeText:z,readText:O,removeFile:C,FS:D,loadLanguage:W,initialize:Y,reinitialize:me,setParameters:ie,recognize:se,getPDF:jt,detect:Ft,terminate:Ut};return _().then(()=>V(o)).then(()=>U(o,d,g)).then(()=>ge(Bt)).catch(()=>{}),pe},Fe}var Ue,zt;function no(){if(zt)return Ue;zt=1;const c=Dt();return Ue={recognize:async(t,a,i)=>{const f=await c(a,1,i);return f.recognize(t).finally(async()=>{await f.terminate()})},detect:async(t,a)=>{const i=await c("osd",0,a);return i.detect(t).finally(async()=>{await i.terminate()})}},Ue}var Be,St;function ao(){return St||(St=1,Be={AFR:"afr",AMH:"amh",ARA:"ara",ASM:"asm",AZE:"aze",AZE_CYRL:"aze_cyrl",BEL:"bel",BEN:"ben",BOD:"bod",BOS:"bos",BUL:"bul",CAT:"cat",CEB:"ceb",CES:"ces",CHI_SIM:"chi_sim",CHI_TRA:"chi_tra",CHR:"chr",CYM:"cym",DAN:"dan",DEU:"deu",DZO:"dzo",ELL:"ell",ENG:"eng",ENM:"enm",EPO:"epo",EST:"est",EUS:"eus",FAS:"fas",FIN:"fin",FRA:"fra",FRK:"frk",FRM:"frm",GLE:"gle",GLG:"glg",GRC:"grc",GUJ:"guj",HAT:"hat",HEB:"heb",HIN:"hin",HRV:"hrv",HUN:"hun",IKU:"iku",IND:"ind",ISL:"isl",ITA:"ita",ITA_OLD:"ita_old",JAV:"jav",JPN:"jpn",KAN:"kan",KAT:"kat",KAT_OLD:"kat_old",KAZ:"kaz",KHM:"khm",KIR:"kir",KOR:"kor",KUR:"kur",LAO:"lao",LAT:"lat",LAV:"lav",LIT:"lit",MAL:"mal",MAR:"mar",MKD:"mkd",MLT:"mlt",MSA:"msa",MYA:"mya",NEP:"nep",NLD:"nld",NOR:"nor",ORI:"ori",PAN:"pan",POL:"pol",POR:"por",PUS:"pus",RON:"ron",RUS:"rus",SAN:"san",SIN:"sin",SLK:"slk",SLV:"slv",SPA:"spa",SPA_OLD:"spa_old",SQI:"sqi",SRP:"srp",SRP_LATN:"srp_latn",SWA:"swa",SWE:"swe",SYR:"syr",TAM:"tam",TEL:"tel",TGK:"tgk",TGL:"tgl",THA:"tha",TIR:"tir",TUR:"tur",UIG:"uig",UKR:"ukr",URD:"urd",UZB:"uzb",UZB_CYRL:"uzb_cyrl",VIE:"vie",YID:"yid"}),Be}var Ve,Ct;function lo(){return Ct||(Ct=1,Ve={OSD_ONLY:"0",AUTO_OSD:"1",AUTO_ONLY:"2",AUTO:"3",SINGLE_COLUMN:"4",SINGLE_BLOCK_VERT_TEXT:"5",SINGLE_BLOCK:"6",SINGLE_LINE:"7",SINGLE_WORD:"8",CIRCLE_WORD:"9",SINGLE_CHAR:"10",SPARSE_TEXT:"11",SPARSE_TEXT_OSD:"12",RAW_LINE:"13"}),Ve}var Ge,Pt;function ro(){if(Pt)return Ge;Pt=1,Fs();const c=Us(),n=Dt(),s=no(),t=ao(),a=At(),i=lo(),{setLogging:f}=et();return Ge={languages:t,OEM:a,PSM:i,createScheduler:c,createWorker:n,setLogging:f,...s},Ge}var io=ro();class tt{worker=null;availablePuzzleNames=[];regions={puzzle:{x:15,y:600,width:330,height:28},cost:{x:412,y:603,width:65,height:22},cycles:{x:577,y:603,width:65,height:22},area:{x:739,y:603,width:65,height:22}};async initialize(){this.worker||(this.worker=await io.createWorker("eng"),await this.worker.setParameters({tessedit_ocr_engine_mode:"3",tessedit_pageseg_mode:7}))}setAvailablePuzzleNames(n){this.availablePuzzleNames=n,console.log("OCR service updated with puzzle names:",n)}async configurePuzzleOCR(){this.worker&&(await this.worker.setParameters({load_system_dawg:"0",load_freq_dawg:"0",load_punc_dawg:"0",load_number_dawg:"0",load_unambig_dawg:"0",load_bigram_dawg:"0",load_fixed_length_dawgs:"0",tessedit_char_whitelist:this.getPuzzleCharacterSet(),tessedit_pageseg_mode:8,segment_penalty_dict_nonword:"2.0",segment_penalty_dict_frequent_word:"0.001",segment_penalty_dict_case_ok:"0.001",segment_penalty_dict_case_bad:"0.1",classify_enable_learning:"0",classify_enable_adaptive_matcher:"1",preserve_interword_spaces:"1"}),console.log("OCR configured for puzzle names with character set:",this.getPuzzleCharacterSet()))}getPuzzleCharacterSet(){if(this.availablePuzzleNames.length===0)return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 -";const n=new Set;return this.availablePuzzleNames.forEach(s=>{for(const t of s)n.add(t)}),Array.from(n).join("")}async extractOpusMagnumData(n){this.worker||await this.initialize();const s=URL.createObjectURL(n),t=new Image;return new Promise((a,i)=>{t.onload=async()=>{try{const f=document.createElement("canvas"),v=f.getContext("2d");f.width=t.width,f.height=t.height,v.drawImage(t,0,0);const p={},x={};for(const[w,o]of Object.entries(this.regions)){const d=document.createElement("canvas"),b=d.getContext("2d");d.width=o.width,d.height=o.height,b.drawImage(f,o.x,o.y,o.width,o.height,0,0,o.width,o.height);const g=b.getImageData(0,0,o.width,o.height);this.preprocessImage(g),b.putImageData(g,0,0),w==="cost"?await this.worker.setParameters({tessedit_char_whitelist:"0123456789G"}):w==="cycles"||w==="area"?await this.worker.setParameters({tessedit_char_whitelist:"0123456789"}):w==="puzzle"?await this.configurePuzzleOCR():await this.worker.setParameters({tessedit_char_whitelist:""});const{data:{text:u,confidence:m}}=await this.worker.recognize(d);let y=u.trim();if(x[w]=m/100,w==="cost"){if(y.endsWith("6")&&y.length>1){const M=y.slice(0,-1);/^\d+$/.test(M)&&(y=M)}y=y.replace(/G+$/g,""),y=y.replace(/[^0-9]/g,"")}else if(w==="cycles"||w==="area")y=y.replace(/[^0-9]/g,"");else if(w==="puzzle"&&(y=this.findBestPuzzleMatch(y),this.availablePuzzleNames.length>0&&!this.availablePuzzleNames.includes(y))){const M=this.findBestPuzzleMatchForced(y);M&&(y=M,console.log(`Forced OCR match: "${u.trim()}" -> "${y}"`))}p[w]=y}URL.revokeObjectURL(s);const $=Object.values(x),S=$.length>0?$.reduce((w,o)=>w+o,0)/$.length:0;a({puzzle:p.puzzle||"",cost:parseInt(p.cost||""),cycles:parseInt(p.cycles||""),area:parseInt(p.area||""),confidence:{puzzle:x.puzzle||0,cost:x.cost||0,cycles:x.cycles||0,area:x.area||0,overall:S}})}catch(f){URL.revokeObjectURL(s),i(f)}},t.onerror=()=>{URL.revokeObjectURL(s),i(new Error("Failed to load image"))},t.src=s})}preprocessImage(n){const s=n.data;for(let t=0;tArray(n.length+1).fill(null));for(let a=0;a<=n.length;a++)t[0][a]=a;for(let a=0;a<=s.length;a++)t[a][0]=a;for(let a=1;a<=s.length;a++)for(let i=1;i<=n.length;i++){const f=n[i-1]===s[a-1]?0:1;t[a][i]=Math.min(t[a][i-1]+1,t[a-1][i]+1,t[a-1][i-1]+f)}return t[s.length][n.length]}findBestPuzzleMatch(n){if(!this.availablePuzzleNames.length)return n.trim();const s=n.trim();if(!s)return"";const t=this.availablePuzzleNames.find(v=>v.toLowerCase()===s.toLowerCase());if(t)return t;const a=this.availablePuzzleNames.find(v=>v.toLowerCase().includes(s.toLowerCase())||s.toLowerCase().includes(v.toLowerCase()));if(a)return a;let i=s,f=0;for(const v of this.availablePuzzleNames){const p=[this.calculateLevenshteinSimilarity(s,v),this.calculateJaroWinklerSimilarity(s,v),this.calculateNGramSimilarity(s,v,2)],x=Math.max(...p);x>f&&x>.4&&(f=x,i=v)}if(f<.6){const v=this.findBestCharacterMatch(s);v&&(i=v)}return i}calculateLevenshteinSimilarity(n,s){const t=this.levenshteinDistance(n.toLowerCase(),s.toLowerCase()),a=Math.max(n.length,s.length);return a===0?1:1-t/a}calculateJaroWinklerSimilarity(n,s){const t=n.toLowerCase(),a=s.toLowerCase();if(t===a)return 1;const i=Math.floor(Math.max(t.length,a.length)/2)-1;if(i<0)return 0;const f=new Array(t.length).fill(!1),v=new Array(a.length).fill(!1);let p=0,x=0;for(let o=0;ov.has($))),x=new Set([...f,...v]);return p.size/x.size}findBestCharacterMatch(n){let s=null,t=0;for(const a of this.availablePuzzleNames){const i=this.calculateCharacterFrequencyScore(n.toLowerCase(),a.toLowerCase());i>t&&i>.3&&(t=i,s=a)}return s}calculateCharacterFrequencyScore(n,s){const t=new Map,a=new Map;for(const p of n)t.set(p,(t.get(p)||0)+1);for(const p of s)a.set(p,(a.get(p)||0)+1);const i=new Set([...t.keys(),...a.keys()]);let f=0,v=0;for(const p of i){const x=t.get(p)||0,$=a.get(p)||0;f+=Math.min(x,$),v+=Math.max(x,$)}return v===0?0:f/v}findBestPuzzleMatchForced(n){if(!this.availablePuzzleNames.length||!n.trim())return null;const s=n.trim().toLowerCase();let t=this.availablePuzzleNames[0],a=0;for(const i of this.availablePuzzleNames){const f=[this.calculateLevenshteinSimilarity(s,i),this.calculateJaroWinklerSimilarity(s,i),this.calculateNGramSimilarity(s,i,2),this.calculateCharacterFrequencyScore(s,i.toLowerCase()),this.calculateLengthSimilarity(s,i.toLowerCase())],v=f[0]*.25+f[1]*.25+f[2]*.2+f[3]*.2+f[4]*.1;v>a&&(a=v,t=i)}return console.log(`Forced match for "${n}": "${t}" (score: ${a.toFixed(3)})`),t}calculateLengthSimilarity(n,s){const t=n.length,a=s.length,i=Math.max(t,a),f=Math.min(t,a);return i===0?1:f/i}async terminate(){this.worker&&(await this.worker.terminate(),this.worker=null)}static isValidOpusMagnumImage(n){return["image/jpeg","image/jpg","image/png","image/gif"].includes(n.type)}static drawDebugRegions(n){return new Promise((s,t)=>{const a=URL.createObjectURL(n),i=new Image;i.onload=()=>{const f=document.createElement("canvas"),v=f.getContext("2d");f.width=i.width,f.height=i.height,v.drawImage(i,0,0),v.strokeStyle="#00ff00",v.lineWidth=2;const p=new tt;Object.values(p.regions).forEach(x=>{v.strokeRect(x.x,x.y,x.width,x.height)}),URL.revokeObjectURL(a),s(f.toDataURL())},i.onerror=()=>{URL.revokeObjectURL(a),t(new Error("Failed to load image for debug"))},i.src=a})}}const He=new tt,he=.8,Tt=Ke("uploads",()=>{const c=E([]),n=Q(()=>c.value.some(p=>p.ocrProcessing)),s=Q(()=>c.value.some(p=>a(p))),t=Q(()=>c.value.filter(p=>p.needsManualPuzzleSelection)),a=p=>p.ocrData?.confidence?p.ocrData.confidence.cost{for(;n.value;){const $=Math.floor(Math.random()*400)+100;console.log(`OCR is already processing, waiting ${$}ms...`),await new Promise(S=>setTimeout(S,$))}const x=c.value.indexOf(p);c.value[x].ocrProcessing=!0,c.value[x].ocrError=void 0,c.value[x].ocrData=void 0;try{console.log("Starting OCR processing for:",p.file.name),await He.initialize();const $=await He.extractOpusMagnumData(p.file);console.log("OCR completed:",$),await We(),c.value[x].ocrData=$,$.confidence.puzzle{const p=c.value.filter(x=>a(x));for(const x of p)i(x)},clearFiles:()=>{c.value=[]},isProcessingOCR:n,hasLowConfidence:s,CONFIDENCE_VALUE:he}}),co={class:"form-control w-full"},uo={key:0,class:"space-y-4"},fo={key:1,class:"space-y-4"},mo={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},vo={class:"aspect-square rounded-lg overflow-hidden bg-base-200"},ho=["src","alt"],go={class:"absolute inset-0 bg-black/80 opacity-0 group-hover:opacity-100 transition-opacity duration-200 rounded-lg flex items-center justify-center"},po=["onClick"],bo={class:"mt-2"},yo={class:"text-xs font-medium truncate"},_o={class:"text-xs text-base-content/60"},xo={key:0,class:"mt-1 flex items-center gap-1"},wo={key:1,class:"mt-1"},ko={class:"text-xs text-error"},$o={key:2,class:"mt-1 space-y-1"},zo={class:"text-xs flex items-center justify-between"},So={class:"flex items-center gap-2"},Co=["title"],Po=["onClick"],Lo={class:"text-xs space-y-1 bg-base-200 p-2 rounded"},Ro={key:0},Eo=["title"],Mo={key:1},Oo=["title"],No={key:2},Ao=["title"],Do={key:3},To=["title"],Io={key:3,class:"mt-2"},qo={class:"mt-2"},jo=["onUpdate:modelValue","onChange"],Fo=["value"],Uo={key:4,class:"mt-1"},Bo=["onClick"],Vo={class:"flex justify-center"},Go={key:0,class:"label"},Wo={class:"label-text-alt text-error"},Jo=le({__name:"FileUpload",setup(c){const n=xe(),{submissionFiles:s,processOCR:t}=Tt(),a=E(),i=E(!1),f=E("");Ye(()=>n.puzzles,u=>{u&&u.length>0&&He.setAvailablePuzzleNames(n.puzzleNames)},{immediate:!0});const v=u=>{const m=u.target;m.files&&x(Array.from(m.files))},p=u=>{u.preventDefault(),i.value=!1,u.dataTransfer?.files&&x(Array.from(u.dataTransfer.files))},x=async u=>{f.value="";for(const m of u)if($(m))try{const y=await S(m),M=m.type.startsWith("image/gif")?"gif":"image",T={file:m,file_url:"",preview:y,type:M,ocrProcessing:!1,ocrError:void 0,ocrData:void 0};s.push(T),d(m)&&We(()=>{t(T)})}catch{f.value=`Failed to process ${m.name}`}},$=u=>u.type.startsWith("image/")?u.size>256*1024*1024?(f.value=`${u.name} is too large (max 256MB)`,!1):!0:(f.value=`${u.name} is not a valid image file`,!1),S=u=>new Promise((m,y)=>{const M=new FileReader;M.onload=T=>m(T.target?.result),M.onerror=y,M.readAsDataURL(u)}),w=u=>{s.splice(u,1)},o=u=>{if(u===0)return"0 Bytes";const m=1024,y=["Bytes","KB","MB","GB"],M=Math.floor(Math.log(u)/Math.log(m));return parseFloat((u/Math.pow(m,M)).toFixed(2))+" "+y[M]},d=u=>u.type.startsWith("image/")&&u.size>5e4,b=u=>u>=.8?"badge-success":u>=.6?"badge-warning":"badge-error",g=u=>{const m=s.findIndex(y=>y.file===u.file);m!==-1&&s[m].manualPuzzleSelection&&(s[m].needsManualPuzzleSelection=!1,console.log(`Manual puzzle selection: ${u.file.name} -> ${s[m].manualPuzzleSelection}`))};return(u,m)=>(l(),r("div",co,[m[19]||(m[19]=e("label",{class:"label"},[e("span",{class:"label-text font-medium"},"Upload Solution Files"),e("span",{class:"label-text-alt text-xs"},"Images or GIFs only")],-1)),e("div",{class:Z(["border-2 border-dashed border-base-300 rounded-lg p-6 text-center hover:border-primary transition-colors duration-300",{"border-primary bg-primary/5":i.value}]),onDrop:p,onDragover:m[2]||(m[2]=Je(y=>i.value=!0,["prevent"])),onDragleave:m[3]||(m[3]=y=>i.value=!1),onDragenter:m[4]||(m[4]=Je(()=>{},["prevent"]))},[e("input",{ref_key:"fileInput",ref:a,type:"file",multiple:"",accept:"image/*,.gif",class:"hidden",onChange:v},null,544),I(s).length===0?(l(),r("div",uo,[m[6]||(m[6]=e("div",{class:"mx-auto w-12 h-12 text-base-content/40 flex items-center justify-center"},[e("i",{class:"mdi mdi-cloud-upload text-5xl"})],-1)),e("div",null,[m[5]||(m[5]=e("p",{class:"text-base-content/70 mb-2"},"Drop your files here or",-1)),e("button",{type:"button",onClick:m[0]||(m[0]=y=>a.value?.click()),class:"btn btn-primary btn-sm"}," Choose Files ")]),m[7]||(m[7]=e("p",{class:"text-xs text-base-content/50"}," Supported formats: JPG, PNG, GIF (max 256MB each) ",-1))])):(l(),r("div",fo,[e("div",mo,[(l(!0),r(F,null,B(I(s),(y,M)=>(l(),r("div",{key:M,class:"relative group"},[e("div",vo,[e("img",{src:y.preview,alt:y.file.name,class:"w-full h-full object-cover"},null,8,ho)]),e("div",go,[e("button",{onClick:T=>w(M),class:"btn btn-error btn-lg btn-circle"},[...m[8]||(m[8]=[e("i",{class:"mdi mdi-close"},null,-1)])],8,po)]),e("div",bo,[e("p",yo,h(y.file.name),1),e("p",_o,h(o(y.file.size))+" • "+h(y.type.toUpperCase()),1),y.ocrProcessing?(l(),r("div",xo,[...m[9]||(m[9]=[e("span",{class:"loading loading-spinner loading-xs"},null,-1),e("span",{class:"text-xs text-info"},"Extracting puzzle data...",-1)])])):y.ocrError?(l(),r("div",wo,[e("p",ko,h(y.ocrError),1)])):y.ocrData?(l(),r("div",$o,[e("div",zo,[e("div",So,[m[10]||(m[10]=e("span",{class:"font-medium text-success"},"āœ“ OCR Complete",-1)),y.ocrData.confidence?(l(),r("span",{key:0,class:Z(["badge badge-xs",b(y.ocrData.confidence.overall)]),title:`Overall confidence: ${Math.round(y.ocrData.confidence.overall*100)}%`},h(Math.round(y.ocrData.confidence.overall*100))+"% ",11,Co)):L("",!0)]),e("button",{onClick:T=>I(t)(y),class:"btn btn-xs btn-ghost",title:"Retry OCR"},[...m[11]||(m[11]=[e("i",{class:"mdi mdi-refresh"},null,-1)])],8,Po)]),e("div",Lo,[y.ocrData.puzzle?(l(),r("div",Ro,[m[12]||(m[12]=e("strong",null,"Puzzle:",-1)),R(" "+h(y.ocrData.puzzle)+" ",1),y.ocrData.confidence?.puzzle?(l(),r("span",{key:0,class:"ml-2 opacity-60",title:`Puzzle confidence: ${Math.round(y.ocrData.confidence.puzzle*100)}%`}," ("+h(Math.round(y.ocrData.confidence.puzzle*100))+"%) ",9,Eo)):L("",!0)])):L("",!0),y.ocrData.cost?(l(),r("div",Mo,[m[13]||(m[13]=e("strong",null,"Cost:",-1)),R(" "+h(y.ocrData.cost)+" ",1),y.ocrData.confidence?.cost?(l(),r("span",{key:0,class:"ml-2 opacity-60",title:`Cost confidence: ${Math.round(y.ocrData.confidence.cost*100)}%`}," ("+h(Math.round(y.ocrData.confidence.cost*100))+"%) ",9,Oo)):L("",!0)])):L("",!0),y.ocrData.cycles?(l(),r("div",No,[m[14]||(m[14]=e("strong",null,"Cycles:",-1)),R(" "+h(y.ocrData.cycles)+" ",1),y.ocrData.confidence?.cycles?(l(),r("span",{key:0,class:"ml-2 opacity-60",title:`Cycles confidence: ${Math.round(y.ocrData.confidence.cycles*100)}%`}," ("+h(Math.round(y.ocrData.confidence.cycles*100))+"%) ",9,Ao)):L("",!0)])):L("",!0),y.ocrData.area?(l(),r("div",Do,[m[15]||(m[15]=e("strong",null,"Area:",-1)),R(" "+h(y.ocrData.area)+" ",1),y.ocrData.confidence?.area?(l(),r("span",{key:0,class:"ml-2 opacity-60",title:`Area confidence: ${Math.round(y.ocrData.confidence.area*100)}%`}," ("+h(Math.round(y.ocrData.confidence.area*100))+"%) ",9,To)):L("",!0)])):L("",!0)])])):L("",!0),y.needsManualPuzzleSelection?(l(),r("div",Io,[m[17]||(m[17]=Gt('
Low OCR Confidence
Please select the correct puzzle manually
',1)),e("div",qo,[ae(e("select",{"onUpdate:modelValue":T=>y.manualPuzzleSelection=T,class:"select select-bordered select-sm w-full",onChange:T=>g(y)},[m[16]||(m[16]=e("option",{value:""},"Select puzzle...",-1)),(l(!0),r(F,null,B(I(n).puzzles,T=>(l(),r("option",{key:T.id,value:T.title},h(T.title),9,Fo))),128))],40,jo),[[Et,y.manualPuzzleSelection]])])])):!y.ocrProcessing&&!y.ocrError&&!y.ocrData?(l(),r("div",Uo,[e("button",{onClick:T=>I(t)(y),class:"btn btn-xs btn-outline"},[...m[18]||(m[18]=[e("i",{class:"mdi mdi-text-recognition"},null,-1),R(" Extract Puzzle Data ",-1)])],8,Bo)])):L("",!0)])]))),128))]),e("div",Vo,[e("button",{type:"button",onClick:m[1]||(m[1]=y=>a.value?.click()),class:"btn btn-outline btn-sm"}," Add More Files ")])]))],34),f.value?(l(),r("div",Go,[e("span",Wo,h(f.value),1)])):L("",!0)]))}}),Ho={class:"card bg-base-100 shadow-xl"},Yo={class:"card-body"},Ko={key:0,class:"alert alert-info"},Zo={class:"flex-1"},Qo={class:"font-bold"},Xo={class:"text-sm space-y-1 mt-1"},en={class:"badge badge-ghost badge-sm ml-2"},tn={key:1,class:"alert alert-warning"},sn={class:"flex-1"},on={class:"text-sm"},nn={class:"form-control"},an={class:"flex-1"},ln={class:"flex label"},rn={class:"label-text-alt"},cn={class:"form-control"},dn={class:"label cursor-pointer justify-start gap-3"},un=["disabled"],fn={class:"card-actions justify-end"},mn=["disabled"],vn={key:0,class:"loading loading-spinner loading-sm"},hn={key:1},gn={key:2},pn={key:3},bn=le({__name:"SubmissionForm",props:{puzzles:{},findPuzzleByName:{type:Function}},setup(c){const n=c,s=Tt(),{submissionFiles:t,hasLowConfidence:a,submissionFilesNeedingManualSelection:i}=Ze(s),{clearFiles:f,processLowConfidenceOCRFiles:v}=s,{handleSubmission:p}=Qe(),x=E(""),$=E(!1),S=E(!1),w=Q(()=>x.value.length),o=Q(()=>{const g=t.value.length>0,u=!t.value.some(m=>m.needsManualPuzzleSelection);return g&&!S.value&&u});Ye(a,g=>{g&&($.value=!0)});const d=Q(()=>{const g={};return t.value.forEach(u=>{const m=u.manualPuzzleSelection||u.ocrData?.puzzle;m&&(g[m]||(g[m]={puzzle:n.findPuzzleByName(m),files:[]}),g[m].files.push(u))}),g}),b=async()=>{if(o.value){S.value=!0;try{p({files:t.value,notes:x.value.trim()||void 0,manualValidationRequested:a.value||$.value}),f(),x.value="",$.value=!1}catch(g){console.error("Submission error:",g)}finally{S.value=!1}}};return(g,u)=>(l(),r("div",Ho,[e("div",Yo,[u[9]||(u[9]=e("h2",{class:"card-title text-xl mb-6"},[e("i",{class:"mdi mdi-check-circle text-2xl text-primary"}),R(" Submit Solution ")],-1)),e("form",{onSubmit:Je(b,["prevent"]),class:"space-y-6"},[Object.keys(d.value).length>0?(l(),r("div",Ko,[u[3]||(u[3]=e("i",{class:"mdi mdi-information-outline text-xl"},null,-1)),e("div",Zo,[e("h4",Qo," Detected Puzzles ("+h(Object.keys(d.value).length)+") ",1),e("div",Xo,[(l(!0),r(F,null,B(d.value,(m,y)=>(l(),r("div",{key:y,class:"flex justify-between"},[e("span",null,h(y),1),e("span",en,h(m.files.length)+" file(s)",1)]))),128))])])])):L("",!0),ne(Jo),I(i).length>0?(l(),r("div",tn,[u[6]||(u[6]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",sn,[u[5]||(u[5]=e("div",{class:"font-bold"},"Manual Puzzle Selection Required",-1)),e("div",on,h(I(i).length)+" file(s) have low OCR confidence for puzzle names. Please select the correct puzzle for each file before submitting. ",1),e("button",{class:"btn mt-3 w-full",onClick:u[0]||(u[0]=(...m)=>I(v)&&I(v)(...m))},[...u[4]||(u[4]=[e("span",{class:"mdi mdi-reload text-2xl"},null,-1),R(" Retry OCR on low confidence puzzle ",-1)])])])])):L("",!0),e("div",nn,[e("div",an,[e("label",ln,[u[7]||(u[7]=e("span",{class:"label-text font-medium"},"Notes (Optional)",-1)),e("span",rn,h(w.value)+"/500",1)]),ae(e("textarea",{"onUpdate:modelValue":u[1]||(u[1]=m=>x.value=m),class:"flex textarea textarea-bordered h-24 w-full resize-none",placeholder:"Add any notes about your solution, approach, or interesting findings...",maxlength:"500"},null,512),[[ye,x.value]])])]),e("div",cn,[e("label",dn,[ae(e("input",{type:"checkbox","onUpdate:modelValue":u[2]||(u[2]=m=>$.value=m),class:"checkbox checkbox-primary",disabled:I(a)},null,8,un),[[Wt,$.value]]),u[8]||(u[8]=e("div",{class:"flex-1"},[e("span",{class:"label-text font-medium"},"Request manual validation"),e("div",{class:"label-text-alt text-xs opacity-70 mt-1"},[R(" Check this if you want an admin to manually review your submission, even if OCR confidence is high. "),e("br"),e("em",null,"Note: This will be automatically checked if any OCR confidence is below 80%.")])],-1))])]),e("div",fn,[e("button",{type:"submit",class:"btn btn-primary",disabled:!o.value},[S.value?(l(),r("span",vn)):L("",!0),S.value?(l(),r("span",hn,"Submitting...")):I(i).length>0?(l(),r("span",gn," Select Puzzles ("+h(I(i).length)+" remaining) ",1)):(l(),r("span",pn,"Submit Solution"))],8,mn)])],32)])]))}}),yn={class:"card bg-base-100 shadow-xl"},_n={class:"card-body"},xn={class:"stats stats-vertical lg:stats-horizontal shadow mb-6"},wn={class:"stat"},kn={class:"stat-value text-primary"},$n={class:"stat"},zn={class:"stat-value text-secondary"},Sn={class:"stat"},Cn={class:"stat-value text-warning"},Pn={class:"stat"},Ln={class:"stat-value text-success"},Rn={key:0},En={class:"overflow-x-auto"},Mn={class:"table table-zebra"},On={class:"font-bold"},Nn={class:"text-sm opacity-50"},An={class:"text-sm space-y-1"},Dn={class:"flex justify-between items-center"},Tn={class:"flex justify-between items-center"},In={class:"flex justify-between items-center"},qn={class:"badge badge-warning badge-sm"},jn=["onClick"],Fn=["onClick"],Un={key:1,class:"text-center py-8"},Bn={key:0,class:"modal modal-open"},Vn={class:"modal-box w-11/12 max-w-5xl"},Gn=["src"],Wn={key:0,class:"space-y-4"},Jn={class:"alert alert-info"},Hn={class:"font-bold"},Yn={class:"grid grid-cols-4 gap-4"},Kn={class:"form-control"},Zn=["value"],Qn={class:"form-control"},Xn=["placeholder"],ea={class:"form-control"},ta=["placeholder"],sa={class:"form-control"},oa=["placeholder"],na={class:"modal-action"},aa=["disabled"],la={key:0,class:"loading loading-spinner loading-sm"},ra={class:"mockup-code w-full"},ia=le({__name:"AdminPanel",setup(c,{expose:n}){const s=xe(),t=E({total_submissions:0,total_responses:0,needs_validation:0,validated_submissions:0,validation_rate:0}),a=E([]),i=E(!1),f=E(!1),v=E({show:!1,response:null,data:{puzzle:-1,validated_cost:0,validated_cycles:0,validated_area:0}}),p=async()=>{try{i.value=!0;try{const u=await ee.getStats();u.data&&(t.value=u.data)}catch(u){console.warn("Stats endpoint not available:",u),t.value={total_submissions:0,total_responses:0,needs_validation:0,validated_submissions:0,validation_rate:0}}const g=await ee.getResponsesNeedingValidation();g.data&&(a.value=g.data)}catch(g){console.error("Failed to load admin data:",g)}finally{i.value=!1}},x=async()=>{for(const g of Array.from(a.value)){if(!g.id)continue;const{data:u,error:m}=await ee.autoValidateResponses(g.id);if(u&&!u.needs_manual_validation)a.value=a.value.filter(y=>y.id!==g.id),t.value.needs_validation-=1;else if(m)break}},$=g=>{v.value.response=g,v.value.data={puzzle:g.puzzle_id||-1,validated_cost:g.cost||0,validated_cycles:g.cycles||0,validated_area:g.area||0},v.value.show=!0},S=()=>{v.value.show=!1,v.value.response=null,v.value.data={puzzle:-1,validated_cost:0,validated_cycles:0,validated_area:0}},w=async g=>{const{data:u}=await ee.autoValidateResponses(g);console.log(u),u&&!u.needs_manual_validation&&(a.value=a.value.filter(m=>m.id!==g),console.log(t.value),t.value.needs_validation-=1,console.log(t.value))},o=async()=>{if(v.value.response?.id)try{f.value=!0;const g=await ee.validateResponse(v.value.response.id,v.value.data);if(g.error){alert(`Validation failed: ${g.error}`);return}a.value=a.value.filter(u=>u.id!==v.value.response?.id),t.value.needs_validation=Math.max(0,t.value.needs_validation-1),S()}catch(g){console.error("Validation error:",g),alert("Validation failed")}finally{f.value=!1}};fe(()=>{p()});const d=g=>g>=.8?"badge-success":g>=.6?"badge-warning":"badge-error",b=g=>{const u=[g.ocr_confidence_cost,g.ocr_confidence_cycles,g.ocr_confidence_area].filter(y=>y!=null);if(u.length===0)return 0;const m=u.reduce((y,M)=>y+M,0)/u.length;return Math.round(m*100)};return n({refresh:p}),(g,u)=>(l(),r(F,null,[e("div",yn,[e("div",_n,[u[14]||(u[14]=e("h2",{class:"card-title"},[e("i",{class:"mdi mdi-shield-account text-2xl text-warning"}),R(" Admin Panel ")],-1)),e("div",xn,[e("div",wn,[u[4]||(u[4]=e("div",{class:"stat-title"},"Total Submissions",-1)),e("div",kn,h(t.value.total_submissions),1)]),e("div",$n,[u[5]||(u[5]=e("div",{class:"stat-title"},"Total Responses",-1)),e("div",zn,h(t.value.total_responses),1)]),e("div",Sn,[u[6]||(u[6]=e("div",{class:"stat-title"},"Need Validation",-1)),e("div",Cn,h(t.value.needs_validation),1)]),e("div",Pn,[u[7]||(u[7]=e("div",{class:"stat-title"},"Validation Rate",-1)),e("div",Ln,h(Math.round(t.value.validation_rate*100))+"% ",1)])]),e("button",{class:"btn btn-sm btn-primary",onClick:x},[...u[8]||(u[8]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),R(" Auto validation for all responses ",-1)])]),a.value.length>0?(l(),r("div",Rn,[u[12]||(u[12]=e("h3",{class:"text-lg font-bold mb-4"},"Responses Needing Validation",-1)),e("div",En,[e("table",Mn,[u[11]||(u[11]=e("thead",null,[e("tr",null,[e("th",null,"Puzzle"),e("th",null,"OCR Data"),e("th",null,"Confidence"),e("th",null,"Actions")])],-1)),e("tbody",null,[(l(!0),r(F,null,B(a.value,m=>(l(),r("tr",{key:m.id},[e("td",null,[e("div",On,h(m.puzzle_name),1),e("div",Nn,"ID: "+h(m.id),1)]),e("td",null,[e("div",An,[e("div",Dn,[e("span",null,"Cost: "+h(m.cost||"-"),1),m.ocr_confidence_cost?(l(),r("span",{key:0,class:Z(["badge badge-xs",d(m.ocr_confidence_cost)])},h(Math.round(m.ocr_confidence_cost*100))+"% ",3)):L("",!0)]),e("div",Tn,[e("span",null,"Cycles: "+h(m.cycles||"-"),1),m.ocr_confidence_cycles?(l(),r("span",{key:0,class:Z(["badge badge-xs",d(m.ocr_confidence_cycles)])},h(Math.round(m.ocr_confidence_cycles*100))+"% ",3)):L("",!0)]),e("div",In,[e("span",null,"Area: "+h(m.area||"-"),1),m.ocr_confidence_area?(l(),r("span",{key:0,class:Z(["badge badge-xs",d(m.ocr_confidence_area)])},h(Math.round(m.ocr_confidence_area*100))+"% ",3)):L("",!0)])])]),e("td",null,[e("div",qn,h(b(m))+"% ",1)]),e("td",null,[e("button",{onClick:y=>$(m),class:"btn btn-sm btn-primary mr-2"},[...u[9]||(u[9]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),R(" Validate ",-1)])],8,jn),m.id?(l(),r("button",{key:0,onClick:y=>w(m.id),class:"btn btn-sm btn-warning"},[...u[10]||(u[10]=[e("i",{class:"mdi mdi-check-circle mr-1"},null,-1),R(" Auto Validation ",-1)])],8,Fn)):L("",!0)])]))),128))])])])])):(l(),r("div",Un,[...u[13]||(u[13]=[e("i",{class:"mdi mdi-check-all text-6xl text-success opacity-50"},null,-1),e("p",{class:"text-lg font-medium mt-2"},"All responses validated!",-1),e("p",{class:"text-sm opacity-70"}," No responses currently need manual validation. ",-1)])]))])]),v.value.show?(l(),r("div",Bn,[e("div",Vn,[u[22]||(u[22]=e("h3",{class:"font-bold text-lg mb-4"},"Validate Response",-1)),(l(!0),r(F,null,B(v.value.response?.files??[],m=>(l(),r("div",null,[e("img",{src:m.file_url},null,8,Gn)]))),256)),v.value.response?(l(),r("div",Wn,[e("div",Jn,[u[16]||(u[16]=e("i",{class:"mdi mdi-information-outline"},null,-1)),e("div",null,[e("div",Hn,h(v.value.response.puzzle_name),1),u[15]||(u[15]=e("div",{class:"text-sm"},"Review and correct the OCR data below",-1))])]),e("div",Yn,[e("div",Kn,[u[18]||(u[18]=e("label",{class:"label"},[e("span",{class:"label-text"},"Puzzle")],-1)),ae(e("select",{"onUpdate:modelValue":u[0]||(u[0]=m=>v.value.data.puzzle=m),class:"select select-bordered select-sm w-full"},[u[17]||(u[17]=e("option",{value:""},"Select puzzle...",-1)),(l(!0),r(F,null,B(I(s).puzzles,m=>(l(),r("option",{key:m.id,value:m.id},h(m.title),9,Zn))),128))],512),[[Et,v.value.data.puzzle]])]),e("div",Qn,[u[19]||(u[19]=e("label",{class:"label"},[e("span",{class:"label-text"},"Cost")],-1)),ae(e("input",{"onUpdate:modelValue":u[1]||(u[1]=m=>v.value.data.validated_cost=m),type:"text",class:"input input-bordered input-sm",placeholder:v.value.response.cost?.toString()||"Enter cost"},null,8,Xn),[[ye,v.value.data.validated_cost]])]),e("div",ea,[u[20]||(u[20]=e("label",{class:"label"},[e("span",{class:"label-text"},"Cycles")],-1)),ae(e("input",{"onUpdate:modelValue":u[2]||(u[2]=m=>v.value.data.validated_cycles=m),type:"text",class:"input input-bordered input-sm",placeholder:v.value.response.cycles?.toString()||"Enter cycles"},null,8,ta),[[ye,v.value.data.validated_cycles]])]),e("div",sa,[u[21]||(u[21]=e("label",{class:"label"},[e("span",{class:"label-text"},"Area")],-1)),ae(e("input",{"onUpdate:modelValue":u[3]||(u[3]=m=>v.value.data.validated_area=m),type:"text",class:"input input-bordered input-sm",placeholder:v.value.response.area?.toString()||"Enter area"},null,8,oa),[[ye,v.value.data.validated_area]])])]),e("div",na,[e("button",{onClick:S,class:"btn btn-ghost"}," Cancel "),e("button",{onClick:o,class:"btn btn-primary",disabled:f.value},[f.value?(l(),r("span",la)):L("",!0),R(" "+h(f.value?"Validating...":"Validate"),1)],8,aa)]),e("div",ra,[e("pre",null,[e("code",null,h(v.value),1)])])])):L("",!0)]),e("div",{class:"modal-backdrop",onClick:S})])):L("",!0)],64))}}),ca={class:"mb-8"},da={class:"grid grid-cols-1 lg:grid-cols-3 gap-8"},ua={class:"lg:col-span-1"},fa={class:"card bg-base-100 shadow-lg sticky top-8"},ma={class:"card-body"},va={class:"text-center mb-6"},ha={class:"text-3xl font-bold"},ga={key:0,class:"flex justify-center py-8"},pa={key:1,class:"space-y-4"},ba={class:"text-center"},ya={key:0,class:"text-4xl font-bold text-primary"},_a={key:1,class:"text-2xl text-base-content/50"},xa={class:"text-center"},wa={class:"text-2xl font-bold"},ka={class:"text-center"},$a={class:"text-2xl font-bold"},za={class:"lg:col-span-2"},Sa={class:"card bg-base-100 shadow-lg"},Ca={class:"card-body"},Pa={key:0,class:"flex justify-center py-8"},La={key:1,class:"text-center py-8"},Ra={key:2,class:"space-y-6"},Ea={class:"tabs tabs-border"},Ma={class:"space-y-4"},Oa={key:0,class:"text-center py-8"},Na={key:1,class:"overflow-x-auto"},Aa={class:"table table-zebra w-full"},Da={class:"font-bold"},Ta={class:"font-medium"},Ia={key:0,class:"badge badge-warning"},qa={class:"text-right"},ja={class:"text-right font-bold"},Fa={class:"space-y-6"},Ua=["onClick"],Ba={class:"ml-auto badge badge-sm"},Va={key:0,class:"card-body"},Ga={key:0,class:"text-center py-8"},Wa={key:1,class:"space-y-6"},Ja={key:0,class:"bg-base-200 p-4 rounded-lg"},Ha={class:"grid grid-cols-3 gap-4"},Ya={class:"text-center"},Ka={class:"text-2xl font-bold text-primary"},Za={class:"text-center"},Qa={class:"text-2xl font-bold text-primary"},Xa={class:"text-center"},el={class:"text-2xl font-bold text-primary"},tl={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},sl={class:"card-body p-4"},ol={class:"text-xs text-base-content/70 font-bold"},nl={class:"font-bold text-lg"},al={key:0,class:"badge badge-warning"},ll={class:"space-y-2 text-sm"},rl={class:"flex justify-between"},il={key:0,class:"text-xs text-base-content/60"},cl={class:"badge badge-sm"},dl={class:"flex justify-between"},ul={key:0,class:"text-xs text-base-content/60"},fl={class:"badge badge-sm"},ml={class:"flex justify-between"},vl={key:0,class:"text-xs text-base-content/60"},hl={class:"badge badge-sm"},gl={class:"flex justify-between pt-2 border-t"},pl={class:"badge badge-sm"},bl={class:"flex justify-between pt-2 border-t"},yl={class:"badge badge-primary"},_l={class:"overflow-x-auto"},xl={class:"table table-zebra w-full table-sm"},wl={class:"text-center"},kl={key:0,class:"text-xs text-base-content/60 block"},$l={class:"text-center"},zl={key:0,class:"text-xs text-base-content/60 block"},Sl={class:"text-center"},Cl={key:0,class:"text-xs text-base-content/60 block"},Pl={class:"font-bold"},Ll={key:0,class:"badge badge-warning"},Rl={key:1,class:"badge"},El={key:2,class:"badge"},Ml={key:3},Ol={class:"font-medium"},Nl={class:"text-center"},Al={key:0,class:"badge badge-sm"},Dl={key:1,class:"text-base-content/40"},Tl={class:"text-center"},Il={key:0,class:"badge badge-sm"},ql={key:1,class:"text-base-content/40"},jl={class:"text-center"},Fl={key:0,class:"badge badge-sm"},Ul={key:1,class:"text-base-content/40"},Bl={class:"text-center"},Vl={key:0,class:"badge badge-sm"},Gl={key:1,class:"text-base-content/40"},Wl={class:"text-right font-bold text-primary text-lg"},Jl=le({__name:"Results",setup(c){const n=E(!0),s=E(null),t=E("overall"),a=E(null),i=E({username:"Player",rank:null,totalPoints:0,puzzlesSolved:0,isStaff:!1}),f=async()=>{n.value=!0;try{const w=await fetch("/api/results/results");if(!w.ok)throw new Error("Failed to fetch results");s.value=await w.json()}catch(w){console.error("Error fetching results:",w)}finally{n.value=!1}},v=()=>s.value?s.value.users.map(o=>{const d=s.value.responses_by_userid[o.id]||[],b=d.reduce((u,m)=>u+(m.rank_points||0),0),g=d.length;return{user:o,totalPoints:b,puzzlesSolved:g}}).sort((o,d)=>d.totalPoints-o.totalPoints):[],p=w=>s.value?(s.value.ranking_by_puzzle[w]||[]).map(d=>({user:s.value.users.find(g=>g.id===d.user_id),cost:d.final_cost,cycles:d.final_cycles,area:d.final_area,points:d.points,rank_points:d.rank_points||0})).reverse():[],x=w=>{a.value=a.value===w?null:w},$=async()=>{try{const w=await fetch("/api/cache/clear",{method:"POST"});if(w.ok)alert("Cache cleared successfully!"),await f();else{const o=await w.json();alert(`Error clearing cache: ${o.detail||"Unknown error"}`)}}catch(w){console.error("Error clearing cache:",w),alert("Error clearing cache. Please try again.")}},S=async()=>{try{const w=await fetch("/api/user");if(w.ok){const o=await w.json();if(o.is_authenticated){i.value.username=o.username,i.value.isStaff=o.is_staff||!1,await f();const d=v(),b=d.findIndex(g=>g.user.id===o.id);b!==-1&&(i.value.rank=b+1,i.value.totalPoints=d[b].totalPoints,i.value.puzzlesSolved=d[b].puzzlesSolved)}}}catch(w){console.error("Error loading user data:",w),await f()}};return fe(()=>{S()}),(w,o)=>(l(),r("div",ca,[e("div",da,[e("div",ua,[e("div",fa,[o[9]||(o[9]=e("div",{class:"bg-gradient-to-br from-purple-600 to-purple-400 p-6 text-white rounded-t-2xl"},[e("h3",{class:"text-3xl font-bold"},[e("i",{class:"mdi mdi-trophy text-3xl"}),R(" Your Ranking ")])],-1)),e("div",ma,[e("div",va,[o[2]||(o[2]=e("p",{class:"text-sm text-base-content/70"},"Player",-1)),e("p",ha,h(i.value.username),1)]),o[8]||(o[8]=e("div",{class:"divider"},null,-1)),n.value?(l(),r("div",ga,[...o[3]||(o[3]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):(l(),r("div",pa,[e("div",ba,[o[4]||(o[4]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Current Rank",-1)),i.value.rank!==null?(l(),r("p",ya,[ne(ot,{rank:i.value.rank},null,8,["rank"])])):(l(),r("p",_a,"No rank yet"))]),e("div",xa,[o[5]||(o[5]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Total Points",-1)),e("p",wa,h(i.value.totalPoints.toLocaleString()),1)]),e("div",ka,[o[6]||(o[6]=e("p",{class:"text-sm text-base-content/70 mb-1"},"Puzzles Solved",-1)),e("p",$a,h(i.value.puzzlesSolved),1)]),i.value.isStaff?(l(),r("button",{key:0,onClick:$,class:"btn btn-error btn-sm w-full mt-6"},[...o[7]||(o[7]=[e("i",{class:"mdi mdi-cache-clear mr-1"},null,-1),R(" Clear Cache ",-1)])])):L("",!0)]))])])]),e("div",za,[e("div",Sa,[e("div",Ca,[o[37]||(o[37]=e("h2",{class:"card-title text-2xl mb-6"},[e("i",{class:"mdi mdi-trophy text-yellow-500 mr-2"}),R(" General Results ")],-1)),n.value?(l(),r("div",Pa,[...o[10]||(o[10]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):s.value?(l(),r("div",Ra,[e("div",Ea,[e("button",{onClick:o[0]||(o[0]=d=>t.value="overall"),class:Z(["tab",t.value==="overall"?"tab-active":""])},[...o[12]||(o[12]=[e("i",{class:"mdi mdi-chart-line mr-2"},null,-1),R(" Overall Ranking ",-1)])],2),e("button",{onClick:o[1]||(o[1]=d=>t.value="byPuzzle"),class:Z(["tab",t.value==="byPuzzle"?"tab-active":""])},[...o[13]||(o[13]=[e("i",{class:"mdi mdi-puzzle mr-2"},null,-1),R(" By Puzzle ",-1)])],2)]),ae(e("div",Ma,[v().length===0?(l(),r("div",Oa,[...o[14]||(o[14]=[e("p",{class:"text-base-content/70"},"No submissions yet",-1)])])):(l(),r("div",Na,[e("table",Aa,[o[15]||(o[15]=e("thead",null,[e("tr",null,[e("th",null,"Rank"),e("th",null,"Player"),e("th",{class:"text-right"},"Puzzles Solved"),e("th",{class:"text-right"},"Total Points")])],-1)),e("tbody",null,[(l(!0),r(F,null,B(v(),(d,b)=>(l(),r("tr",{key:d.user.username},[e("td",Da,[ne(ot,{rank:b+1},null,8,["rank"])]),e("td",Ta,[R(h(d.user.username)+" ",1),d.user.is_staff?(l(),r("span",Ia," admin ")):L("",!0)]),e("td",qa,h(d.puzzlesSolved),1),e("td",ja,h(d.totalPoints),1)]))),128))])])]))],512),[[st,t.value==="overall"]]),ae(e("div",Fa,[(l(!0),r(F,null,B(s.value.puzzles,d=>(l(),r("div",{key:d.id,class:"card bg-base-100 border border-base-300"},[e("button",{onClick:b=>x(d.id),class:"btn btn-ghost btn-lg w-full justify-start text-lg font-bold hover:bg-primary/20 rounded-b-none"},[e("i",{class:Z(["mdi mr-2",a.value===d.id?"mdi-chevron-down":"mdi-chevron-right"])},null,2),R(" "+h(d.title)+" ",1),e("span",Ba,h(p(d.id).length)+" submissions ",1)],8,Ua),a.value===d.id?(l(),r("div",Va,[p(d.id).length===0?(l(),r("div",Ga,[...o[16]||(o[16]=[e("p",{class:"text-base-content/70 text-lg"},"No submissions yet",-1)])])):(l(),r("div",Wa,[d.points_factor?(l(),r("div",Ja,[o[23]||(o[23]=e("p",{class:"text-sm text-base-content/70 mb-3 font-semibold"},"Points Coefficients",-1)),e("div",Ha,[e("div",Ya,[e("span",Ka,[o[17]||(o[17]=e("small",null,"x",-1)),R(h(d.points_factor.cost),1)]),o[18]||(o[18]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",Za,[e("span",Qa,[o[19]||(o[19]=e("small",null,"x",-1)),R(h(d.points_factor.cycles),1)]),o[20]||(o[20]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",Xa,[e("span",el,[o[21]||(o[21]=e("small",null,"x",-1)),R(h(d.points_factor.area),1)]),o[22]||(o[22]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),e("div",tl,[(l(!0),r(F,null,B(p(d.id).slice(0,3),(b,g)=>(l(),r("div",{key:g,class:"card bg-base-200"},[e("div",sl,[e("div",ol,h(g===0?"šŸ† 1st Place":g===1?"🄈 2nd Place":"šŸ„‰ 3rd Place"),1),e("h4",nl,[R(h(b.user.username)+" ",1),b.user.is_staff?(l(),r("span",al," admin ")):L("",!0)]),o[29]||(o[29]=e("div",{class:"divider my-2"},null,-1)),e("div",ll,[e("div",rl,[e("span",null,[o[24]||(o[24]=R("Cost",-1)),d.points_factor?(l(),r("span",il," (x"+h(d.points_factor.cost)+") ",1)):L("",!0)]),e("span",cl,h(b.cost||"N/A"),1)]),e("div",dl,[e("span",null,[o[25]||(o[25]=R("Cycles",-1)),d.points_factor?(l(),r("span",ul," (x"+h(d.points_factor.cycles)+") ",1)):L("",!0)]),e("span",fl,h(b.cycles||"N/A"),1)]),e("div",ml,[e("span",null,[o[26]||(o[26]=R("Area",-1)),d.points_factor?(l(),r("span",vl," (x"+h(d.points_factor.area)+") ",1)):L("",!0)]),e("span",hl,h(b.area||"N/A"),1)]),e("div",gl,[o[27]||(o[27]=e("span",null,"Total (with coef.)",-1)),e("span",pl,h(b.points||"N/A"),1)]),e("div",bl,[o[28]||(o[28]=e("span",{class:"font-bold"},"Points",-1)),e("span",yl,h(b.rank_points)+" pts",1)])])])]))),128))]),e("div",_l,[e("table",xl,[e("thead",null,[e("tr",null,[o[33]||(o[33]=e("th",{class:"w-12"},"Rank",-1)),o[34]||(o[34]=e("th",null,"Player",-1)),e("th",wl,[o[30]||(o[30]=R(" Cost ",-1)),d.points_factor?(l(),r("span",kl,"(x"+h(d.points_factor.cost)+")",1)):L("",!0)]),e("th",$l,[o[31]||(o[31]=R(" Cycles ",-1)),d.points_factor?(l(),r("span",zl,"(x"+h(d.points_factor.cycles)+")",1)):L("",!0)]),e("th",Sl,[o[32]||(o[32]=R(" Area ",-1)),d.points_factor?(l(),r("span",Cl,"(x"+h(d.points_factor.area)+")",1)):L("",!0)]),o[35]||(o[35]=e("th",{class:"text-center"},"Total (with coef.)",-1)),o[36]||(o[36]=e("th",{class:"text-right"},"Points",-1))])]),e("tbody",null,[(l(!0),r(F,null,B(p(d.id),(b,g)=>(l(),r("tr",{key:g,class:Z({"bg-primary/10":g<3})},[e("td",Pl,[g===0?(l(),r("span",Ll,"šŸ†")):g===1?(l(),r("span",Rl,"🄈")):g===2?(l(),r("span",El,"šŸ„‰")):(l(),r("span",Ml,"#"+h(g+1),1))]),e("td",Ol,h(b.user.username),1),e("td",Nl,[b.cost?(l(),r("span",Al,h(b.cost),1)):(l(),r("span",Dl,"—"))]),e("td",Tl,[b.cycles?(l(),r("span",Il,h(b.cycles),1)):(l(),r("span",ql,"—"))]),e("td",jl,[b.area?(l(),r("span",Fl,h(b.area),1)):(l(),r("span",Ul,"—"))]),e("td",Bl,[b.points?(l(),r("span",Vl,h(b.points),1)):(l(),r("span",Gl,"—"))]),e("td",Wl,h(b.rank_points),1)],2))),128))])])])]))])):L("",!0)]))),128))],512),[[st,t.value==="byPuzzle"]])])):(l(),r("div",La,[...o[11]||(o[11]=[e("p",{class:"text-base-content/70"},"No results available yet",-1)])]))])])])])]))}}),Hl={class:"card bg-base-100 shadow-lg"},Yl={class:"card-body"},Kl={key:0,class:"flex justify-center py-12"},Zl={key:1,class:"alert alert-error"},Ql={key:2,class:"text-center py-8"},Xl={key:3,class:"overflow-x-auto"},er={class:"table table-zebra"},tr={class:"font-semibold"},sr={class:"text-right"},or={class:"text-right"},nr={class:"text-right"},ar={class:"text-right font-bold"},lr={class:"text-right font-bold text-primary"},rr={class:"text-center"},ir=["onClick"],cr={key:1,class:"text-base-content/50"},dr={key:0,class:"modal modal-open"},ur={class:"modal-box max-w-7xl w-full"},fr={class:"flex justify-between items-center mb-4"},mr={class:"font-bold text-lg"},vr={class:"flex justify-center bg-base-200 rounded-lg p-4"},hr=["src","alt"],gr={class:"modal-action mt-4"},pr=["href"],br=le({__name:"Winners",setup(c){const n=E(!0),s=E(null),t=E(""),a=E(!1),i=E(""),f=E(""),v=async()=>{n.value=!0,t.value="";try{const w=await ee.getTopSubmissions(5);w.data?s.value=w.data:w.error&&(t.value=w.error,console.error("Error fetching submissions:",w.error))}catch(w){t.value=w instanceof Error?w.message:"Failed to fetch submissions",console.error("Error fetching submissions:",w)}finally{n.value=!1}},p=w=>w!==void 0?w.toLocaleString():"—",x=Q(()=>{if(!s.value)return[];const w=[];return s.value.submissions.forEach(o=>{o.submissions.forEach(d=>{w.push({puzzleName:o.puzzle_title,username:d.username,cost:d.final_cost,cycles:d.final_cycles,area:d.final_area,total:d.rank_points,totalCoef:d.total_coef,files:d.files.map(b=>({url:b.file_url,name:b.original_filename}))})})}),w.sort((o,d)=>(d.total||0)-(o.total||0))}),$=(w,o)=>{i.value=w,f.value=o,a.value=!0},S=()=>{a.value=!1,i.value="",f.value=""};return fe(()=>{v()}),(w,o)=>(l(),r(F,null,[e("div",Hl,[e("div",Yl,[o[5]||(o[5]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-trophy text-yellow-500 text-3xl"}),R(" Top Submissions ")],-1)),n.value?(l(),r("div",Kl,[...o[0]||(o[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(l(),r("div",Zl,[o[1]||(o[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,h(t.value),1)])):x.value.length===0?(l(),r("div",Ql,[...o[2]||(o[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(l(),r("div",Xl,[e("table",er,[o[4]||(o[4]=e("thead",null,[e("tr",null,[e("th",null,"Puzzle"),e("th",null,"User"),e("th",{class:"text-right"},"Cost"),e("th",{class:"text-right"},"Cycles"),e("th",{class:"text-right"},"Area"),e("th",{class:"text-right"},"Total Pts"),e("th",{class:"text-right"},"Total Coef"),e("th",{class:"text-center"},"GIF")])],-1)),e("tbody",null,[(l(!0),r(F,null,B(x.value,(d,b)=>(l(),r("tr",{key:b},[e("td",tr,h(d.puzzleName),1),e("td",null,h(d.username),1),e("td",sr,h(p(d.cost)),1),e("td",or,h(p(d.cycles)),1),e("td",nr,h(p(d.area)),1),e("td",ar,h(p(d.total)),1),e("td",lr,h(p(d.totalCoef)),1),e("td",rr,[d.files.length>0?(l(),r("button",{key:0,onClick:g=>$(d.files[0].url,d.files[0].name),class:"btn btn-xs btn-primary gap-1"},[...o[3]||(o[3]=[e("i",{class:"mdi mdi-image"},null,-1),R(" View ",-1)])],8,ir)):(l(),r("span",cr,"—"))])]))),128))])])]))])]),a.value?(l(),r("div",dr,[e("div",ur,[e("div",fr,[e("h3",mr,h(f.value),1),e("button",{onClick:S,class:"btn btn-sm btn-circle btn-ghost"},[...o[6]||(o[6]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),e("div",vr,[e("img",{src:i.value,alt:f.value,class:"object-contain"},null,8,hr)]),e("div",gr,[e("a",{href:i.value,target:"_blank",class:"btn btn-primary btn-sm"},[...o[7]||(o[7]=[e("i",{class:"mdi mdi-download"},null,-1),R(" Download ",-1)])],8,pr),e("button",{onClick:S,class:"btn btn-sm"},"Close")])]),e("div",{class:"modal-backdrop",onClick:S})])):L("",!0)],64))}}),yr={class:"card bg-base-100 shadow-lg"},_r={class:"card-body"},xr={key:0,class:"flex justify-center py-12"},wr={key:1,class:"alert alert-error"},kr={key:2,class:"text-center py-8"},$r={key:3,class:"space-y-8"},zr={class:"mb-4"},Sr={class:"text-xl font-bold mb-3"},Cr={key:0,class:"bg-base-200 p-3 rounded-lg mb-4"},Pr={class:"grid grid-cols-3 gap-2"},Lr={class:"text-center"},Rr={class:"font-bold text-primary"},Er={class:"text-center"},Mr={class:"font-bold text-primary"},Or={class:"text-center"},Nr={class:"font-bold text-primary"},Ar={key:1,class:"bg-base-200 p-4 rounded-lg"},Dr={class:"flex flex-wrap justify-center gap-6"},Tr={key:0,class:"text-center w-96"},Ir={class:"text-sm text-base-content/70 mb-3 font-semibold truncate"},qr=["onClick"],jr=["src","alt"],Fr={key:0,class:"overflow-x-auto"},Ur={class:"table table-sm table-zebra"},Br={class:"text-center text-lg font-bold"},Vr={class:"font-semibold"},Gr={class:"text-right"},Wr={class:"text-right"},Jr={class:"text-right"},Hr={class:"text-right font-bold text-primary"},Yr={class:"text-center"},Kr=["onClick"],Zr={key:1,class:"text-base-content/50"},Qr={key:1,class:"p-4 bg-base-200 rounded-lg text-center text-base-content/70"},Xr={key:0,class:"modal modal-open"},ei={class:"modal-box max-w-7xl w-full"},ti={class:"flex justify-between items-center mb-4"},si={class:"font-bold text-lg"},oi={class:"flex justify-center bg-base-200 rounded-lg p-4"},ni=["src","alt"],ai={class:"modal-action mt-4"},li=["href"],ri=le({__name:"PuzzleResults",setup(c){const n=E(!0),s=E(null),t=E(""),a=E(!1),i=E(""),f=E(""),v=async()=>{n.value=!0,t.value="";try{const o=await ee.getPuzzleResults(5);o.data?s.value=o.data:o.error&&(t.value=o.error,console.error("Error fetching results:",o.error))}catch(o){t.value=o instanceof Error?o.message:"Failed to fetch results",console.error("Error fetching results:",o)}finally{n.value=!1}},p=o=>o!==void 0?o.toLocaleString():"—",x=(o,d)=>{i.value=o,f.value=d,a.value=!0},$=()=>{a.value=!1,i.value="",f.value=""},S=o=>["šŸ„‡","🄈","šŸ„‰"][o-1]||`#${o}`,w=o=>{if(!o.submissions||o.submissions.length===0)return[];const d=o.submissions[0].rank_points;return o.submissions.filter(b=>b.rank_points===d)};return fe(()=>{v()}),(o,d)=>(l(),r(F,null,[e("div",yr,[e("div",_r,[d[13]||(d[13]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-table text-blue-500 text-3xl"}),R(" Results by Puzzle ")],-1)),n.value?(l(),r("div",xr,[...d[0]||(d[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(l(),r("div",wr,[d[1]||(d[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,h(t.value),1)])):!s.value||s.value.results.length===0?(l(),r("div",kr,[...d[2]||(d[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(l(),r("div",$r,[(l(!0),r(F,null,B(s.value.results,b=>(l(),r("div",{key:b.puzzle_id,class:"border-b pb-8 last:border-b-0"},[e("div",zr,[e("h3",Sr,h(b.puzzle_title),1),b.points_factor?(l(),r("div",Cr,[d[9]||(d[9]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-2"},"Points Coefficients",-1)),e("div",Pr,[e("div",Lr,[e("span",Rr,[d[3]||(d[3]=e("small",null,"x",-1)),R(h(b.points_factor.cost),1)]),d[4]||(d[4]=e("p",{class:"text-xs text-base-content/70"},"Cost",-1))]),e("div",Er,[e("span",Mr,[d[5]||(d[5]=e("small",null,"x",-1)),R(h(b.points_factor.cycles),1)]),d[6]||(d[6]=e("p",{class:"text-xs text-base-content/70"},"Cycles",-1))]),e("div",Or,[e("span",Nr,[d[7]||(d[7]=e("small",null,"x",-1)),R(h(b.points_factor.area),1)]),d[8]||(d[8]=e("p",{class:"text-xs text-base-content/70"},"Area",-1))])])])):L("",!0),b.submissions.length>0&&w(b).length>0?(l(),r("div",Ar,[d[10]||(d[10]=e("p",{class:"text-xs text-base-content/70 font-semibold mb-3 text-center"},"šŸ† Winning Solutions",-1)),e("div",Dr,[(l(!0),r(F,null,B(w(b),g=>(l(),r(F,{key:`${b.puzzle_id}-${g.user_id}`},[g&&g.files&&g.files.length>0?(l(),r("div",Tr,[e("div",Ir,h(g.username),1),e("button",{onClick:u=>x(g.files[0].file_url,g.files[0].original_filename),class:"hover:opacity-80 transition-opacity cursor-pointer w-full flex items-center justify-center"},[e("img",{src:g.files[0].file_url,alt:`${b.puzzle_title} - ${g.username}`,class:"max-h-full max-w-full object-contain"},null,8,jr)],8,qr)])):L("",!0)],64))),128))])])):L("",!0)]),b.submissions.length>0?(l(),r("div",Fr,[e("table",Ur,[d[12]||(d[12]=e("thead",null,[e("tr",null,[e("th",{class:"w-12 text-center"},"Pos"),e("th",null,"User"),e("th",{class:"text-right"},"Cost"),e("th",{class:"text-right"},"Cycles"),e("th",{class:"text-right"},"Area"),e("th",{class:"text-right font-bold"},"Total Pts"),e("th",{class:"text-right font-bold"},"Total Coef"),e("th",{class:"text-center"},"GIF")])],-1)),e("tbody",null,[(l(!0),r(F,null,B(b.submissions,g=>(l(),r("tr",{key:`${b.puzzle_id}-${g.user_id}`},[e("td",Br,h(S(g.rank)),1),e("td",Vr,h(g.username),1),e("td",Gr,h(p(g.final_cost)),1),e("td",Wr,h(p(g.final_cycles)),1),e("td",Jr,h(p(g.final_area)),1),e("td",{class:Z(["text-right font-bold",{"text-yellow-600":g.rank===1,"text-gray-600":g.rank===2,"text-orange-600":g.rank===3}])},h(p(g.rank_points)),3),e("td",Hr,h(p(g.total_coef)),1),e("td",Yr,[g.files.length>0?(l(),r("button",{key:0,onClick:u=>x(g.files[0].file_url,g.files[0].original_filename),class:"btn btn-xs btn-primary gap-1"},[...d[11]||(d[11]=[e("i",{class:"mdi mdi-image"},null,-1),R(" View ",-1)])],8,Kr)):(l(),r("span",Zr,"—"))])]))),128))])])])):(l(),r("div",Qr," No submissions yet "))]))),128))]))])]),a.value?(l(),r("div",Xr,[e("div",ei,[e("div",ti,[e("h3",si,h(f.value),1),e("button",{onClick:$,class:"btn btn-sm btn-circle btn-ghost"},[...d[14]||(d[14]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),e("div",oi,[e("img",{src:i.value,alt:f.value,class:"object-contain"},null,8,ni)]),e("div",ai,[e("a",{href:i.value,target:"_blank",class:"btn btn-primary btn-sm"},[...d[15]||(d[15]=[e("i",{class:"mdi mdi-download"},null,-1),R(" Download ",-1)])],8,li),e("button",{onClick:$,class:"btn btn-sm"},"Close")])]),e("div",{class:"modal-backdrop",onClick:$})])):L("",!0)],64))}}),ii={class:"card bg-base-100 shadow-lg"},ci={class:"card-body"},di={key:0,class:"flex justify-center py-12"},ui={key:1,class:"alert alert-error"},fi={key:2,class:"text-center py-8"},mi={key:3,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-3"},vi={class:"text-3xl font-bold mb-2"},hi={class:"font-semibold text-sm mb-2 truncate"},gi={class:"text-2xl font-bold text-primary"},pi=le({__name:"TopUsersLeaderboard",setup(c){const n=E(!0),s=E(null),t=E(""),a=async()=>{n.value=!0,t.value="";try{const f=await ee.getPuzzleResults(100);f.data?s.value=f.data:f.error&&(t.value=f.error,console.error("Error fetching results:",f.error))}catch(f){t.value=f instanceof Error?f.message:"Failed to fetch results",console.error("Error fetching results:",f)}finally{n.value=!1}},i=()=>{if(!s.value)return[];const f={};return s.value.results.forEach(v=>{v.submissions.forEach(p=>{const x=p.user_id;f[x]||(f[x]={username:p.username,user_id:p.user_id,total_points:0}),f[x].total_points+=p.rank_points||0})}),Object.values(f).sort((v,p)=>p.total_points-v.total_points).slice(0,10)};return fe(()=>{a()}),(f,v)=>(l(),r("div",ii,[e("div",ci,[v[3]||(v[3]=e("h2",{class:"card-title text-2xl flex items-center gap-2"},[e("i",{class:"mdi mdi-podium text-yellow-500 text-3xl"}),R(" Top 10 Users ")],-1)),n.value?(l(),r("div",di,[...v[0]||(v[0]=[e("span",{class:"loading loading-spinner loading-lg"},null,-1)])])):t.value?(l(),r("div",ui,[v[1]||(v[1]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,h(t.value),1)])):i().length===0?(l(),r("div",fi,[...v[2]||(v[2]=[e("p",{class:"text-base-content/70"},"No results available yet.",-1)])])):(l(),r("div",mi,[(l(!0),r(F,null,B(i(),(p,x)=>(l(),r("div",{key:p.user_id,class:Z(["bg-base-200 p-4 rounded-lg text-center",{"ring-2 ring-yellow-500":x===0,"ring-2 ring-gray-400":x===1,"ring-2 ring-orange-400":x===2}])},[e("div",vi,h(x===0?"šŸ„‡":x===1?"🄈":x===2?"šŸ„‰":`#${x+1}`),1),e("div",hi,h(p.username),1),e("div",gi,h(p.total_points)+" pts",1)],2))),128))]))])]))}});function Lt(c,n){return Yt()?(Kt(c,n),!0):!1}const Rt=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;function bi(c,n=1e3,s={}){const{immediate:t=!0,immediateCallback:a=!1}=s;let i=null;const f=Mt(!1);function v(){i&&(clearInterval(i),i=null)}function p(){f.value=!1,v()}function x(){const $=_e(n);$<=0||(f.value=!0,a&&c(),v(),f.value&&(i=setInterval(c,$)))}return t&&Rt&&x(),(Jt(n)||typeof n=="function")&&Lt(Ye(n,()=>{f.value&&Rt&&x()})),Lt(p),{isActive:Ht(f),pause:p,resume:x}}function yi(c,n){var s,t;const a=Mt(_e(c)),i=bi(()=>{var $;const S=a.value-1;if(a.value=S<0?0:S,n==null||($=n.onTick)===null||$===void 0||$.call(n),a.value<=0){var w;i.pause(),n==null||(w=n.onComplete)===null||w===void 0||w.call(n)}},(s=n?.interval)!==null&&s!==void 0?s:1e3,{immediate:(t=n?.immediate)!==null&&t!==void 0?t:!1}),f=$=>{var S;a.value=(S=_e($))!==null&&S!==void 0?S:_e(c)},v=()=>{i.pause(),f()},p=()=>{i.isActive.value||a.value>0&&i.resume()};return{remaining:a,reset:f,stop:v,start:$=>{f($),i.resume()},pause:i.pause,resume:p,isActive:i.isActive}}const _i={class:"min-h-screen bg-base-200"},xi={class:"navbar bg-base-100 shadow-lg"},wi={class:"container min-w-3/4 mx-auto w-full flex items-center gap-4"},ki={class:"flex items-center gap-4"},$i={key:0,class:"flex items-center gap-2"},zi={class:"text-sm"},Si={class:"font-medium"},Ci={key:0,class:"badge badge-warning badge-xs ml-1"},Pi={key:1,class:"text-sm text-base-content/70"},Li={class:"container min-w-3/4 mx-auto px-4 py-8"},Ri={key:0,class:"flex justify-center"},Ei={class:"text-center"},Mi={class:"mb-6 text-base-content/70"},Oi={key:1,class:"flex justify-center items-center min-h-[400px]"},Ni={key:2,class:"alert alert-error max-w-2xl mx-auto"},Ai={class:"text-sm"},Di={key:3,class:"space-y-8"},Ti={key:0,class:"space-y-8"},Ii={class:"mb-8"},qi={class:"card bg-base-100 shadow-lg"},ji={class:"card-body"},Fi={class:"card-title text-2xl"},Ui={class:"text-base-content/70"},Bi={class:"flex flex-wrap gap-4 mt-4"},Vi=["disabled"],Gi={key:0,class:"alert alert-warning mt-4"},Wi={key:0},Ji={class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"},Hi={key:1,class:"text-center py-12"},Yi={key:0,class:"modal modal-open"},Ki={class:"modal-box max-w-6xl"},Zi={class:"flex justify-between items-center mb-4"},Qi=le({__name:"OpusMagnum",props:{collectionTitle:{},collectionUrl:{},collectionDescription:{}},setup(c){const n=c,s=xe(),t=Qe(),{submissions:a,isSubmissionModalOpen:i}=Ze(t),{openSubmissionModal:f,loadSubmissions:v,closeSubmissionModal:p}=t,x=E(null),$=E(null),S=E(!0),w=E(""),o=Q(()=>x.value?.is_superuser||!1),d=Q(()=>!!($.value&&!$.value.accepting_submissions)),b=Q(()=>{const q={};return a.value.forEach(P=>{P.responses.forEach(j=>{q[j.puzzle_id]||(q[j.puzzle_id]=[]),q[j.puzzle_id].push(j)})}),q});async function g(){try{S.value=!0,w.value="",console.log("Starting data load..."),console.log("Loading user info...");const q=await ts();q.data?(x.value=q.data,console.log("User info loaded:",q.data)):q.error&&console.warn("User info error:",q.error),console.log("Loading collection...");const P=await ss();P.data?($.value=P.data,console.log("Collection loaded:",P.data)):P.error&&console.warn("Collection error:",P.error),console.log("Loading puzzles..."),await s.loadPuzzles(),console.log("Puzzles loaded:",s.puzzles.length),console.log("Loading submissions..."),await v(),console.log("Submissions loaded:",a.value.length),console.log("Data load complete!")}catch(q){w.value=Ot.getErrorMessage(q),console.error("Failed to load data:",q)}finally{S.value=!1,console.log("Loading state set to false")}x.value?.is_superuser&&m()}const{remaining:u,start:m}=yi(60,{onComplete(){g()}});fe(async()=>{await g()});const y=q=>s.findPuzzleByName(q),M=()=>{window.location.reload()},T=()=>{window.location.href="/"};return(q,P)=>(l(),r("div",_i,[e("div",xi,[e("div",wi,[e("button",{onClick:T,class:"btn btn-primary btn-sm"},[...P[3]||(P[3]=[e("i",{class:"mdi mdi-arrow-left"},null,-1),R(" Back ",-1)])]),P[6]||(P[6]=e("h1",{class:"text-xl font-bold"},"Opus Magnum Puzzle Submitter",-1)),P[7]||(P[7]=e("div",{class:"flex-1"},null,-1)),e("div",ki,[x.value?.is_authenticated?(l(),r("div",$i,[e("div",zi,[e("span",Si,h(x.value.username),1),x.value.is_superuser?(l(),r("span",Ci,"Admin")):L("",!0)])])):(l(),r("div",Pi,"Not logged in")),P[4]||(P[4]=e("a",{href:"/api/docs",class:"btn btn-xs"},"API docs",-1)),P[5]||(P[5]=e("a",{href:"/admin",class:"btn btn-xs btn-warning"},"Admin panel",-1))])])]),e("div",Li,[x.value?.is_superuser?(l(),r("div",Ri,[e("div",Ei,[e("p",Mi,[P[8]||(P[8]=e("span",{class:"loading loading-spinner loading-lg"},null,-1)),R(" Auto reload page in "+h(I(u))+" seconds ... ",1)])])])):L("",!0),S.value?(l(),r("div",Oi,[...P[9]||(P[9]=[e("div",{class:"text-center"},[e("span",{class:"loading loading-spinner loading-lg"}),e("p",{class:"mt-4 text-base-content/70"},"Loading puzzles...")],-1)])])):w.value?(l(),r("div",Ni,[P[12]||(P[12]=e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1)),e("div",null,[P[10]||(P[10]=e("h3",{class:"font-bold"},"Error Loading Data",-1)),e("div",Ai,h(w.value),1)]),e("button",{onClick:M,class:"btn btn-sm btn-outline"},[...P[11]||(P[11]=[e("i",{class:"mdi mdi-refresh mr-1"},null,-1),R(" Retry ",-1)])])])):(l(),r("div",Di,[d.value?(l(),r("div",Ti,[ne(pi),ne(ri),ne(br)])):(l(),r(F,{key:1},[e("div",Ii,[e("div",qi,[e("div",ji,[e("h2",Fi,h(n.collectionTitle),1),e("p",Ui,h(n.collectionDescription),1),e("div",Bi,[e("button",{onClick:P[0]||(P[0]=(...j)=>I(f)&&I(f)(...j)),class:"btn btn-primary",disabled:d.value},[...P[13]||(P[13]=[e("i",{class:"mdi mdi-plus mr-2"},null,-1),R(" Submit Solution ",-1)])],8,Vi)]),d.value?(l(),r("div",Gi,[...P[14]||(P[14]=[e("i",{class:"mdi mdi-alert-circle text-xl"},null,-1),e("div",null,[e("h3",{class:"font-bold"},"Tournament Closed"),e("div",{class:"text-sm"},"This tournament is no longer accepting new submissions.")],-1)])])):L("",!0)])])]),ne(Jl),o.value?(l(),r("div",Wi,[ne(ia)])):L("",!0),e("div",Ji,[(l(!0),r(F,null,B(I(s).puzzles,j=>(l(),Zt(js,{key:j.id,puzzle:j,responses:b.value[j.id]||[]},null,8,["puzzle","responses"]))),128))]),I(s).puzzles.length===0?(l(),r("div",Hi,[...P[15]||(P[15]=[e("div",{class:"text-6xl mb-4"},"🧩",-1),e("h3",{class:"text-xl font-bold mb-2"},"No Puzzles Available",-1),e("p",{class:"text-base-content/70"}," Check back later for new puzzle collections! ",-1)])])):L("",!0)],64))]))]),I(i)?(l(),r("div",Yi,[e("div",Ki,[e("div",Zi,[P[17]||(P[17]=e("h3",{class:"font-bold text-lg"},"Submit Solution",-1)),e("button",{onClick:P[1]||(P[1]=(...j)=>I(p)&&I(p)(...j)),class:"btn btn-sm btn-circle btn-ghost"},[...P[16]||(P[16]=[e("i",{class:"mdi mdi-close"},null,-1)])])]),ne(bn,{puzzles:I(s).puzzles,"find-puzzle-by-name":y},null,8,["puzzles"])]),e("div",{class:"modal-backdrop",onClick:P[2]||(P[2]=(...j)=>I(p)&&I(p)(...j))})])):L("",!0)]))}}),It="#app",Xi=document.querySelector(It),qt=Qt(Qi,{...Xi?.dataset});qt.use(Xt);qt.mount(It); diff --git a/polylan_submitter/static_source/vite/assets/style-CSeMeQaG.js b/polylan_submitter/static_source/vite/assets/style-CCc0RrA9.js similarity index 99% rename from polylan_submitter/static_source/vite/assets/style-CSeMeQaG.js rename to polylan_submitter/static_source/vite/assets/style-CCc0RrA9.js index ea52ad7..6c3ac3c 100644 --- a/polylan_submitter/static_source/vite/assets/style-CSeMeQaG.js +++ b/polylan_submitter/static_source/vite/assets/style-CCc0RrA9.js @@ -14,4 +14,4 @@ * @vue/runtime-dom v3.5.22 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Is;const Sn=typeof window<"u"&&window.trustedTypes;if(Sn)try{Is=Sn.createPolicy("vue",{createHTML:e=>e})}catch{}const qi=Is?e=>Is.createHTML(e):e=>e,Qo="http://www.w3.org/2000/svg",el="http://www.w3.org/1998/Math/MathML",Te=typeof document<"u"?document:null,wn=Te&&Te.createElement("template"),tl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Te.createElementNS(Qo,e):t==="mathml"?Te.createElementNS(el,e):s?Te.createElement(e,{is:s}):Te.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Te.createTextNode(e),createComment:e=>Te.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Te.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{wn.innerHTML=qi(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const l=wn.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},sl=Symbol("_vtc");function nl(e,t,s){const n=e[sl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Qt=Symbol("_vod"),Gi=Symbol("_vsh"),Ll={name:"show",beforeMount(e,{value:t},{transition:s}){e[Qt]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):dt(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:n}){!t!=!s&&(n?t?(n.beforeEnter(e),dt(e,!0),n.enter(e)):n.leave(e,()=>{dt(e,!1)}):dt(e,t))},beforeUnmount(e,{value:t}){dt(e,t)}};function dt(e,t){e.style.display=t?e[Qt]:"none",e[Gi]=!t}const il=Symbol(""),rl=/(?:^|;)\s*display\s*:/;function ol(e,t,s){const n=e.style,i=G(s);let r=!1;if(s&&!i){if(t)if(G(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Bt(n,l,"")}else for(const o in t)s[o]==null&&Bt(n,o,"");for(const o in s)o==="display"&&(r=!0),Bt(n,o,s[o])}else if(i){if(t!==s){const o=n[il];o&&(s+=";"+o),n.cssText=s,r=rl.test(s)}}else t&&e.removeAttribute("style");Qt in e&&(e[Qt]=r?n.display:"",e[Gi]&&(n.display="none"))}const Cn=/\s*!important$/;function Bt(e,t,s){if(O(s))s.forEach(n=>Bt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ll(e,t);Cn.test(s)?e.setProperty(ke(n),s.replace(Cn,""),"important"):e[n]=s}}const Tn=["Webkit","Moz","ms"],vs={};function ll(e,t){const s=vs[t];if(s)return s;let n=$e(t);if(n!=="filter"&&n in e)return vs[t]=n;n=Ln(n);for(let i=0;iSs||(al.then(()=>Ss=0),Ss=Date.now());function hl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;we(pl(n,s.value),t,5,[n])};return s.value=e,s.attached=dl(),s}function pl(e,t){if(O(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Pn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gl=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?nl(e,n,o):t==="style"?ol(e,s,n):es(t)?Ds(t)||cl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):_l(e,t,n,o))?(An(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&On(e,t,n,o,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!G(n))?An(e,$e(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),On(e,t,n,o))};function _l(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pn(t)&&R(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Pn(t)&&G(s)?!1:t in e}const it=e=>{const t=e.props["onUpdate:modelValue"]||!1;return O(t)?s=>$t(t,s):t};function ml(e){e.target.composing=!0}function In(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Me=Symbol("_assign"),Kl={created(e,{modifiers:{lazy:t,trim:s,number:n}},i){e[Me]=it(i);const r=n||i.props&&i.props.type==="number";Ne(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;s&&(l=l.trim()),r&&(l=Wt(l)),e[Me](l)}),s&&Ne(e,"change",()=>{e.value=e.value.trim()}),t||(Ne(e,"compositionstart",ml),Ne(e,"compositionend",In),Ne(e,"change",In))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},o){if(e[Me]=it(o),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?Wt(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||i&&e.value.trim()===c)||(e.value=c))}},Ul={deep:!0,created(e,t,s){e[Me]=it(s),Ne(e,"change",()=>{const n=e._modelValue,i=Et(e),r=e.checked,o=e[Me];if(O(n)){const l=$s(n,i),c=l!==-1;if(r&&!c)o(n.concat(i));else if(!r&&c){const h=[...n];h.splice(l,1),o(h)}}else if(rt(n)){const l=new Set(n);r?l.add(i):l.delete(i),o(l)}else o(Ji(e,r))})},mounted:Fn,beforeUpdate(e,t,s){e[Me]=it(s),Fn(e,t,s)}};function Fn(e,{value:t,oldValue:s},n){e._modelValue=t;let i;if(O(t))i=$s(t,n.props.value)>-1;else if(rt(t))i=t.has(n.props.value);else{if(t===s)return;i=At(t,Ji(e,!0))}e.checked!==i&&(e.checked=i)}const Bl={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const i=rt(t);Ne(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>s?Wt(Et(o)):Et(o));e[Me](e.multiple?i?new Set(r):r:r[0]),e._assigning=!0,hi(()=>{e._assigning=!1})}),e[Me]=it(n)},mounted(e,{value:t}){Dn(e,t)},beforeUpdate(e,t,s){e[Me]=it(s)},updated(e,{value:t}){e._assigning||Dn(e,t)}};function Dn(e,t){const s=e.multiple,n=O(t);if(!(s&&!n&&!rt(t))){for(let i=0,r=e.options.length;iString(h)===String(l)):o.selected=$s(t,l)>-1}else o.selected=t.has(l);else if(At(Et(o),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Et(e){return"_value"in e?e._value:e.value}function Ji(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const bl=["ctrl","shift","alt","meta"],yl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bl.some(s=>e[`${s}Key`]&&!t.includes(s))},Wl=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((i,...r)=>{for(let o=0;o{const t=vl().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=wl(n);if(!i)return;const r=t._component;!R(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Sl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t});function Sl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wl(e){return G(e)?document.querySelector(e):e}export{Wl as A,Vl as B,Il as C,Bl as D,ve as E,Ee as F,Kl as G,Ul as H,kr as I,Ll as J,Al as K,Ol as L,Ml as M,Vo as N,ql as O,Hl as P,tt as a,Pl as b,Xo as c,Lt as d,Tl as e,Ws as f,fr as g,jl as h,Y as i,Rl as j,Fl as k,Nl as l,Mr as m,hi as n,El as o,Ho as p,Vs as q,Rr as r,Ki as s,j as t,$l as u,lr as v,xs as w,Ko as x,Dl as y,ci as z}; +**/let Is;const Sn=typeof window<"u"&&window.trustedTypes;if(Sn)try{Is=Sn.createPolicy("vue",{createHTML:e=>e})}catch{}const qi=Is?e=>Is.createHTML(e):e=>e,Qo="http://www.w3.org/2000/svg",el="http://www.w3.org/1998/Math/MathML",Te=typeof document<"u"?document:null,wn=Te&&Te.createElement("template"),tl={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?Te.createElementNS(Qo,e):t==="mathml"?Te.createElementNS(el,e):s?Te.createElement(e,{is:s}):Te.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Te.createTextNode(e),createComment:e=>Te.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Te.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{wn.innerHTML=qi(n==="svg"?`${e}`:n==="mathml"?`${e}`:e);const l=wn.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},sl=Symbol("_vtc");function nl(e,t,s){const n=e[sl];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Qt=Symbol("_vod"),Gi=Symbol("_vsh"),Ll={name:"show",beforeMount(e,{value:t},{transition:s}){e[Qt]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):dt(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:n}){!t!=!s&&(n?t?(n.beforeEnter(e),dt(e,!0),n.enter(e)):n.leave(e,()=>{dt(e,!1)}):dt(e,t))},beforeUnmount(e,{value:t}){dt(e,t)}};function dt(e,t){e.style.display=t?e[Qt]:"none",e[Gi]=!t}const il=Symbol(""),rl=/(?:^|;)\s*display\s*:/;function ol(e,t,s){const n=e.style,i=G(s);let r=!1;if(s&&!i){if(t)if(G(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Bt(n,l,"")}else for(const o in t)s[o]==null&&Bt(n,o,"");for(const o in s)o==="display"&&(r=!0),Bt(n,o,s[o])}else if(i){if(t!==s){const o=n[il];o&&(s+=";"+o),n.cssText=s,r=rl.test(s)}}else t&&e.removeAttribute("style");Qt in e&&(e[Qt]=r?n.display:"",e[Gi]&&(n.display="none"))}const Cn=/\s*!important$/;function Bt(e,t,s){if(O(s))s.forEach(n=>Bt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=ll(e,t);Cn.test(s)?e.setProperty(ke(n),s.replace(Cn,""),"important"):e[n]=s}}const Tn=["Webkit","Moz","ms"],vs={};function ll(e,t){const s=vs[t];if(s)return s;let n=$e(t);if(n!=="filter"&&n in e)return vs[t]=n;n=Ln(n);for(let i=0;iSs||(al.then(()=>Ss=0),Ss=Date.now());function hl(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;we(pl(n,s.value),t,5,[n])};return s.value=e,s.attached=dl(),s}function pl(e,t){if(O(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Pn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,gl=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?nl(e,n,o):t==="style"?ol(e,s,n):es(t)?Ds(t)||cl(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):_l(e,t,n,o))?(An(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&On(e,t,n,o,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!G(n))?An(e,$e(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),On(e,t,n,o))};function _l(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Pn(t)&&R(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Pn(t)&&G(s)?!1:t in e}const it=e=>{const t=e.props["onUpdate:modelValue"]||!1;return O(t)?s=>$t(t,s):t};function ml(e){e.target.composing=!0}function In(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Me=Symbol("_assign"),Kl={created(e,{modifiers:{lazy:t,trim:s,number:n}},i){e[Me]=it(i);const r=n||i.props&&i.props.type==="number";Ne(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;s&&(l=l.trim()),r&&(l=Wt(l)),e[Me](l)}),s&&Ne(e,"change",()=>{e.value=e.value.trim()}),t||(Ne(e,"compositionstart",ml),Ne(e,"compositionend",In),Ne(e,"change",In))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},o){if(e[Me]=it(o),e.composing)return;const l=(r||e.type==="number")&&!/^0\d/.test(e.value)?Wt(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||i&&e.value.trim()===c)||(e.value=c))}},Ul={deep:!0,created(e,t,s){e[Me]=it(s),Ne(e,"change",()=>{const n=e._modelValue,i=Et(e),r=e.checked,o=e[Me];if(O(n)){const l=$s(n,i),c=l!==-1;if(r&&!c)o(n.concat(i));else if(!r&&c){const h=[...n];h.splice(l,1),o(h)}}else if(rt(n)){const l=new Set(n);r?l.add(i):l.delete(i),o(l)}else o(Ji(e,r))})},mounted:Fn,beforeUpdate(e,t,s){e[Me]=it(s),Fn(e,t,s)}};function Fn(e,{value:t,oldValue:s},n){e._modelValue=t;let i;if(O(t))i=$s(t,n.props.value)>-1;else if(rt(t))i=t.has(n.props.value);else{if(t===s)return;i=At(t,Ji(e,!0))}e.checked!==i&&(e.checked=i)}const Bl={deep:!0,created(e,{value:t,modifiers:{number:s}},n){const i=rt(t);Ne(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>s?Wt(Et(o)):Et(o));e[Me](e.multiple?i?new Set(r):r:r[0]),e._assigning=!0,hi(()=>{e._assigning=!1})}),e[Me]=it(n)},mounted(e,{value:t}){Dn(e,t)},beforeUpdate(e,t,s){e[Me]=it(s)},updated(e,{value:t}){e._assigning||Dn(e,t)}};function Dn(e,t){const s=e.multiple,n=O(t);if(!(s&&!n&&!rt(t))){for(let i=0,r=e.options.length;iString(h)===String(l)):o.selected=$s(t,l)>-1}else o.selected=t.has(l);else if(At(Et(o),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Et(e){return"_value"in e?e._value:e.value}function Ji(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const bl=["ctrl","shift","alt","meta"],yl={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bl.some(s=>e[`${s}Key`]&&!t.includes(s))},Wl=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=((i,...r)=>{for(let o=0;o{const t=vl().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=wl(n);if(!i)return;const r=t._component;!R(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Sl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t});function Sl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wl(e){return G(e)?document.querySelector(e):e}export{Ml as A,fr as B,El as C,Vo as D,ql as E,Ee as F,Hl as G,Tl as H,Mr as I,j as J,tt as K,Pl as L,Lt as M,jl as N,Ws as O,Rl as P,Nl as a,Ki as b,Xo as c,Fl as d,$l as e,Ko as f,Dl as g,hi as h,Wl as i,Vl as j,Il as k,ve as l,Kl as m,Vs as n,Ho as o,Ul as p,kr as q,Rr as r,Ll as s,lr as t,ci as u,Bl as v,xs as w,Al as x,Y as y,Ol as z}; diff --git a/polylan_submitter/static_source/vite/manifest.json b/polylan_submitter/static_source/vite/manifest.json index 834a690..b3425be 100644 --- a/polylan_submitter/static_source/vite/manifest.json +++ b/polylan_submitter/static_source/vite/manifest.json @@ -1,9 +1,9 @@ { - "_RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js": { - "file": "assets/RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js", - "name": "RankBadge.vue_vue_type_script_setup_true_lang", + "_index-B10U1JZR.js": { + "file": "assets/index-B10U1JZR.js", + "name": "index", "imports": [ - "_style-CSeMeQaG.js" + "_style-CCc0RrA9.js" ] }, "_sdk.gen-CMTwTM_A.js": { @@ -14,8 +14,8 @@ "file": "assets/style-B7hBs3CR.css", "src": "_style-B7hBs3CR.css" }, - "_style-CSeMeQaG.js": { - "file": "assets/style-CSeMeQaG.js", + "_style-CCc0RrA9.js": { + "file": "assets/style-CCc0RrA9.js", "name": "style", "css": [ "assets/style-B7hBs3CR.css" @@ -44,34 +44,34 @@ "src": "node_modules/.pnpm/@mdi+font@7.4.47/node_modules/@mdi/font/fonts/materialdesignicons-webfont.woff2" }, "src/home.ts": { - "file": "assets/home-SJcM6NSq.js", + "file": "assets/home-De93wAWA.js", "name": "home", "src": "src/home.ts", "isEntry": true, "imports": [ - "_style-CSeMeQaG.js", + "_style-CCc0RrA9.js", "_sdk.gen-CMTwTM_A.js" ] }, "src/noita.ts": { - "file": "assets/noita-D-VLRi4K.js", + "file": "assets/noita-BBUDcHwQ.js", "name": "noita", "src": "src/noita.ts", "isEntry": true, "imports": [ - "_style-CSeMeQaG.js", - "_RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js" + "_style-CCc0RrA9.js", + "_index-B10U1JZR.js" ] }, "src/opus-magnum.ts": { - "file": "assets/opus_magnum-CBjPWRy9.js", + "file": "assets/opus_magnum-CniXRQHB.js", "name": "opus_magnum", "src": "src/opus-magnum.ts", "isEntry": true, "imports": [ - "_style-CSeMeQaG.js", - "_sdk.gen-CMTwTM_A.js", - "_RankBadge.vue_vue_type_script_setup_true_lang-CfKZiK2-.js" + "_style-CCc0RrA9.js", + "_index-B10U1JZR.js", + "_sdk.gen-CMTwTM_A.js" ] } } \ No newline at end of file diff --git a/polylan_submitter/tsconfig.tsbuildinfo b/polylan_submitter/tsconfig.tsbuildinfo index 98801fc..44d9e25 100644 --- a/polylan_submitter/tsconfig.tsbuildinfo +++ b/polylan_submitter/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"root":["./src/home.ts","./src/market.ts","./src/noita.ts","./src/opus-magnum.ts","./src/api/client.gen.ts","./src/api/index.ts","./src/api/sdk.gen.ts","./src/api/types.gen.ts","./src/api/client/client.gen.ts","./src/api/client/index.ts","./src/api/client/types.gen.ts","./src/api/client/utils.gen.ts","./src/api/core/auth.gen.ts","./src/api/core/bodySerializer.gen.ts","./src/api/core/params.gen.ts","./src/api/core/pathSerializer.gen.ts","./src/api/core/queryKeySerializer.gen.ts","./src/api/core/serverSentEvents.gen.ts","./src/api/core/types.gen.ts","./src/api/core/utils.gen.ts","./src/services/apiService.ts","./src/services/ocrService.ts","./src/stores/index.ts","./src/stores/market.ts","./src/stores/puzzles.ts","./src/stores/submissions.ts","./src/stores/uploads.ts","./src/types/index.ts","./src/Home.vue","./src/Market.vue","./src/Noita.vue","./src/OpusMagnum.vue","./src/components/AdminPanel.vue","./src/components/FileUpload.vue","./src/components/MarketCard.vue","./src/components/PuzzleCard.vue","./src/components/PuzzleResults.vue","./src/components/RankBadge.vue","./src/components/Results.vue","./src/components/SubmissionForm.vue","./src/components/TopUsersLeaderboard.vue","./src/components/UserBets.vue","./src/components/Winners.vue"],"version":"5.9.3"} \ No newline at end of file +{"root":["./src/home.ts","./src/market.ts","./src/noita.ts","./src/opus-magnum.ts","./src/api/client.gen.ts","./src/api/index.ts","./src/api/sdk.gen.ts","./src/api/types.gen.ts","./src/api/client/client.gen.ts","./src/api/client/index.ts","./src/api/client/types.gen.ts","./src/api/client/utils.gen.ts","./src/api/core/auth.gen.ts","./src/api/core/bodySerializer.gen.ts","./src/api/core/params.gen.ts","./src/api/core/pathSerializer.gen.ts","./src/api/core/queryKeySerializer.gen.ts","./src/api/core/serverSentEvents.gen.ts","./src/api/core/types.gen.ts","./src/api/core/utils.gen.ts","./src/services/apiService.ts","./src/services/ocrService.ts","./src/stores/index.ts","./src/stores/market.ts","./src/stores/noita.ts","./src/stores/puzzles.ts","./src/stores/submissions.ts","./src/stores/uploads.ts","./src/types/index.ts","./src/Home.vue","./src/Market.vue","./src/Noita.vue","./src/OpusMagnum.vue","./src/components/AdminPanel.vue","./src/components/FileUpload.vue","./src/components/MarketCard.vue","./src/components/PuzzleCard.vue","./src/components/PuzzleResults.vue","./src/components/RankBadge.vue","./src/components/Results.vue","./src/components/SubmissionForm.vue","./src/components/TopUsersLeaderboard.vue","./src/components/UserBets.vue","./src/components/Winners.vue"],"version":"5.9.3"} \ No newline at end of file