SCGR commited on
Commit
52c6e82
·
1 Parent(s): c3f28dc
Files changed (37) hide show
  1. frontend/vite.config.ts +17 -40
  2. py_backend/static/assets/AdminPage-Dz89QBtX.js +0 -45
  3. py_backend/static/assets/ExportModal-BtNOxnGZ.js +0 -1
  4. py_backend/static/assets/ExportModal-DxEvAVvI.js +0 -1
  5. py_backend/static/assets/index-Bj6KcvNd.js +0 -2
  6. py_backend/static/assets/index-BsrMOmjk.css +0 -1
  7. py_backend/static/assets/index-CwG_dxMe.js +0 -2
  8. py_backend/static/assets/index-DMU6q_dg.js +0 -1
  9. py_backend/static/assets/index-DyXqjI96.js +0 -17
  10. py_backend/static/assets/index-Uy48qW96.js +0 -17
  11. py_backend/static/assets/index-iAxVbTZE.js +0 -3
  12. py_backend/static/assets/index-jo0G9peP.js +0 -3
  13. py_backend/static/assets/index-om3EFqpn.css +0 -1
  14. py_backend/static/assets/useAdmin-BStaIYmd.js +0 -1
  15. py_backend/static/assets/useAdmin-B_k2Fdj-.js +0 -1
  16. py_backend/static/assets/vendor-DxpCibxB.js +0 -28
  17. py_backend/static/assets/vendor-react-BxsGb6Ph.js +0 -0
  18. py_backend/static/assets/vendor-ui-DpEM1HT6.css +0 -1
  19. py_backend/static/assets/vendor-ui-l_DttnRj.js +0 -0
  20. py_backend/static/assets/AdminPage-C_7rpuzO.js → py—backend/static/AdminPage-Ba_QXeaN.js +2 -2
  21. {py_backend/static/assets → py—backend/static}/AdminPage-VgSjQ50W.css +0 -0
  22. {py_backend/static/assets → py—backend/static}/ExportModal-BoB3JpqO.css +0 -0
  23. py—backend/static/ExportModal-CrJtybXx.js +1 -0
  24. py—backend/static/index-B1uKTNcW.css +1 -0
  25. py—backend/static/index-B3hZqJuM.js +3 -0
  26. py—backend/static/index-B5YX0VGQ.js +2 -0
  27. {py_backend/static/assets → py—backend/static}/index-BzPMJFRS.css +0 -0
  28. py—backend/static/index-CLLTwnqd.js +1 -0
  29. py—backend/static/index-DkIjYZRi.css +1 -0
  30. py—backend/static/index-oPRJTRcN.js +0 -0
  31. {py_backend/static/assets → py—backend/static}/index-tDgjKyWF.css +0 -0
  32. {py_backend → py—backend}/static/index.html +2 -6
  33. py_backend/static/assets/vendor-utils-Db80MiSc.js → py—backend/static/jszip.min-DHOAM-1s.js +1 -1
  34. {py_backend → py—backend}/static/manifest.json +0 -0
  35. {py_backend → py—backend}/static/sw.js +0 -0
  36. py—backend/static/useAdmin-DytkUHQc.js +1 -0
  37. {py_backend → py—backend}/static/vite.svg +0 -0
frontend/vite.config.ts CHANGED
@@ -1,58 +1,35 @@
1
  /// <reference types="vitest" />
2
  import { defineConfig } from 'vite'
3
  import react from '@vitejs/plugin-react'
 
4
 
5
  export default defineConfig({
6
  base: '/',
7
  plugins: [react()],
8
- resolve: {
9
- dedupe: ['react', 'react-dom']
10
- },
11
- optimizeDeps: {
12
- include: ['react', 'react-dom']
13
- },
14
- server: {
15
- proxy: {
16
- '/api': {
17
- target: 'http://localhost:8000',
18
- changeOrigin: true,
19
- secure: false,
20
- },
21
  },
 
 
 
 
22
  },
23
  build: {
24
- rollupOptions: {
25
- output: {
26
- manualChunks(id) {
27
- if (!id.includes('node_modules')) return
28
-
29
- // Core framework
30
- if (/[\\/]node_modules[\\/](react|react-dom|react-router-dom)[\\/]/.test(id)) {
31
- return 'vendor-react'
32
- }
33
- // UI libs (all @ifrc-go/* + lucide)
34
- if (/[\\/]node_modules[\\/]@ifrc-go[\\/]/.test(id) || /[\\/]node_modules[\\/]lucide-react[\\/]/.test(id)) {
35
- return 'vendor-ui'
36
- }
37
- // Utils
38
- if (/[\\/]node_modules[\\/]jszip[\\/]/.test(id)) return 'vendor-utils'
39
-
40
- // Fallback vendor bucket
41
- return 'vendor'
42
- },
43
- },
44
- },
45
- chunkSizeWarningLimit: 1000
46
  },
47
  test: {
48
  globals: true,
49
  environment: 'jsdom',
50
  setupFiles: ['./src/test/setup.ts'],
51
  css: true,
52
- deps: {
53
- inline: ['@ifrc-go/ui']
54
- }
55
  },
56
  })
57
-
58
-
 
1
  /// <reference types="vitest" />
2
  import { defineConfig } from 'vite'
3
  import react from '@vitejs/plugin-react'
4
+ import path from 'node:path'
5
 
6
  export default defineConfig({
7
  base: '/',
8
  plugins: [react()],
9
+ resolve: {
10
+ // Make EVERY import of react/react-dom resolve to this one location
11
+ alias: {
12
+ react: path.resolve(__dirname, 'node_modules/react'),
13
+ 'react-dom': path.resolve(__dirname, 'node_modules/react-dom'),
 
 
 
 
 
 
 
 
14
  },
15
+ dedupe: ['react', 'react-dom'],
16
+ },
17
+ optimizeDeps: {
18
+ include: ['react', 'react-dom', 'react/jsx-runtime'], // add jsx-runtime
19
  },
20
  build: {
21
+ // ⛔ TEMP: comment out your manualChunks block while we test
22
+ // rollupOptions: { output: { manualChunks: { ... } } },
23
+ chunkSizeWarningLimit: 1000,
24
+ },
25
+ server: {
26
+ proxy: { '/api': { target: 'http://localhost:8000', changeOrigin: true, secure: false } },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  },
28
  test: {
29
  globals: true,
30
  environment: 'jsdom',
31
  setupFiles: ['./src/test/setup.ts'],
32
  css: true,
33
+ deps: { inline: ['@ifrc-go/ui'] },
 
 
34
  },
35
  })
 
 
py_backend/static/assets/AdminPage-Dz89QBtX.js DELETED
@@ -1,45 +0,0 @@
1
- import{r as d,j as a}from"./vendor-react-BxsGb6Ph.js";import{u as we}from"./useAdmin-B_k2Fdj-.js";import{N as B,R as Fe,O as h,z as f,n as t,f as S}from"./vendor-ui-l_DttnRj.js";import"./vendor-DxpCibxB.js";import"./index-Uy48qW96.js";const ke="_adminContainer_j11pf_5",Te="_adminHeader_j11pf_13",Ae="_adminSection_j11pf_20",Pe="_modelSelectionArea_j11pf_29",Ie="_modelSelectionRow_j11pf_36",$e="_modelsTable_j11pf_89",Le="_promptSubsection_j11pf_97",Ee="_promptSubsectionTitle_j11pf_109",Be="_modelCode_j11pf_152",Oe="_modelId_j11pf_157",Re="_modelActions_j11pf_163",De="_addModelButtonContainer_j11pf_169",Ue="_addModelForm_j11pf_177",ze="_addModelFormTitle_j11pf_185",He="_addModelFormGrid_j11pf_193",Ge="_addModelFormField_j11pf_206",Ve="_addModelFormCheckbox_j11pf_250",Je="_addModelFormActions_j11pf_268",Ke="_modalOverlay_j11pf_277",We="_modalContent_j11pf_291",qe="_modalBody_j11pf_302",Ye="_modalTitle_j11pf_312",Qe="_modalText_j11pf_320",Xe="_modalTextLeft_j11pf_332",Ze="_modalButtons_j11pf_355",ea="_modalForm_j11pf_363",aa="_formField_j11pf_372",la="_formLabel_j11pf_376",sa="_formInput_j11pf_385",oa="_textarea_j11pf_407",l={adminContainer:ke,adminHeader:Te,adminSection:Ae,modelSelectionArea:Pe,modelSelectionRow:Ie,modelsTable:$e,promptSubsection:Le,promptSubsectionTitle:Ee,modelCode:Be,modelId:Oe,modelActions:Re,addModelButtonContainer:De,addModelForm:Ue,addModelFormTitle:ze,addModelFormGrid:He,addModelFormField:Ge,addModelFormCheckbox:Ve,addModelFormActions:Je,modalOverlay:Ke,modalContent:We,modalBody:qe,modalTitle:Ye,modalText:Qe,modalTextLeft:Xe,modalButtons:Ze,modalForm:ea,formField:aa,formLabel:la,formInput:sa,textarea:oa},w="selectedVlmModel";function ca(){const{isAuthenticated:F,isLoading:X,login:Z,logout:ee}=we(),[k,O]=d.useState(""),[R,u]=d.useState(""),[D,U]=d.useState(!1),[z,H]=d.useState([]),[ae,b]=d.useState(""),[G,le]=d.useState([]),[se,oe]=d.useState([]),[te,y]=d.useState(!1),[de,N]=d.useState(!1),[ie,T]=d.useState(null),[C,A]=d.useState(null),[n,r]=d.useState({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1}),[V,P]=d.useState(!1),[ne,I]=d.useState(!1),[$,L]=d.useState(null),[o,c]=d.useState({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1}),[re,M]=d.useState(!1),[ce,E]=d.useState(!1),[me,p]=d.useState(!1),[J,K]=d.useState(""),[he,pe]=d.useState(""),[_e,_]=d.useState(""),[ue,j]=d.useState(""),x=d.useCallback(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{console.log("Models data received:",e),H(e.models||[]);const s=localStorage.getItem(w);if(e.models&&e.models.length>0)if(s==="random")b("random");else if(s&&e.models.find(i=>i.m_code===s&&i.is_available))b(s);else{const i=e.models.find(m=>m.is_available)||e.models[0];b(i.m_code),localStorage.setItem(w,i.m_code)}}).catch(()=>{})},[]),v=d.useCallback(()=>{console.log("=== fetchPrompts called ==="),fetch("/api/prompts").then(e=>e.json()).then(e=>{console.log("Prompts data received:",e),le(e||[]),console.log("State update triggered with:",e||[])}).catch(e=>{console.error("Error fetching prompts:",e)})},[]),W=d.useCallback(()=>{fetch("/api/image-types").then(e=>e.json()).then(e=>{console.log("Image types data received:",e),oe(e||[])}).catch(()=>{})},[]);d.useEffect(()=>{F&&(x(),v(),W())},[F,x,v,W]);const q=e=>{A(e),r({p_code:e.p_code,label:e.label||"",metadata_instructions:e.metadata_instructions||"",image_type:e.image_type||"crisis_map",is_active:e.is_active||!1}),y(!0)},je=async()=>{try{if(!C){alert("No prompt selected for editing");return}const e=await fetch(`/api/prompts/${C.p_code}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({label:n.label,metadata_instructions:n.metadata_instructions,image_type:n.image_type,is_active:n.is_active})});if(e.ok)v(),y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to update prompt: ${s.error||"Unknown error"}`)}}catch{alert("Error updating prompt")}},Y=async(e,s)=>{try{const i=await fetch(`/api/prompts/${e}/toggle-active?image_type=${s}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(i.ok)v();else{const m=await i.json();alert(`Failed to toggle prompt active status: ${m.detail||"Unknown error"}`)}}catch{alert("Error toggling prompt active status")}},Q=e=>{T(e),r({p_code:"",label:"",metadata_instructions:"",image_type:e,is_active:!1}),N(!0)},xe=async()=>{try{const e=await fetch("/api/prompts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(e.ok)v(),N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to create prompt: ${s.detail||"Unknown error"}`)}}catch{alert("Error creating prompt")}},ve=async(e,s)=>{try{const i=await fetch(`/api/models/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({is_available:!s})});if(i.ok)H(m=>m.map(g=>g.m_code===e?{...g,is_available:!s}:g));else{const m=await i.json();alert(`Failed to toggle model availability: ${m.error||"Unknown error"}`)}}catch{alert("Error toggling model availability")}},ge=e=>{b(e),e==="random"?localStorage.setItem(w,"random"):localStorage.setItem(w,e)},fe=async()=>{try{const e=await fetch("/api/admin/models",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("adminToken")}`},body:JSON.stringify(o)});if(e.ok){const s=`
2
- Model "${o.label}" added successfully!
3
-
4
- ⚠️ IMPORTANT: Model will NOT work until you complete these steps:
5
-
6
- 1. 🔑 Ensure API key is set and valid.
7
-
8
- 2. 📝 Verify model_id format.
9
-
10
- 3. 📚 Check model specific documentation for details.
11
- `;pe(s),E(!0),P(!1),c({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1}),x()}else{const s=await e.json();alert(`Failed to add model: ${s.detail||"Unknown error"}`)}}catch{alert("Error adding model")}},be=e=>{L(e),c({m_code:e.m_code,label:e.label,model_type:e.model_type||"custom",provider:e.provider||e.config?.provider||"huggingface",model_id:e.model_id||e.config?.model_id||e.m_code,is_available:e.is_available}),I(!0)},ye=async()=>{try{console.log("Updating model with data:",o);const e={label:o.label,model_type:o.model_type,provider:o.provider,model_id:o.model_id,is_available:o.is_available};if(console.log("Update payload:",e),!$){alert("No model selected for editing");return}const s=await fetch(`/api/admin/models/${$.m_code}`,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("adminToken")}`},body:JSON.stringify(e)});if(console.log("Update response status:",s.status),s.ok){const i=await s.json();console.log("Update successful:",i),I(!1),L(null),c({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1}),console.log("Refreshing models..."),x()}else{const i=await s.json();console.error("Update failed:",i),alert(`Failed to update model: ${i.detail||"Unknown error"}`)}}catch(e){console.error("Update error:",e),alert("Error updating model")}},Ne=async e=>{K(e),M(!0)},Ce=async()=>{try{const e=await fetch(`/api/admin/models/${J}`,{method:"DELETE",headers:{Authorization:`Bearer ${localStorage.getItem("adminToken")}`}});if(e.ok)M(!1),K(""),x();else{const s=await e.json();alert(`Failed to delete model: ${s.detail||"Unknown error"}`)}}catch{alert("Error deleting model")}},Me=async e=>{if(e.preventDefault(),!k.trim()){u("Please enter a password");return}U(!0),u("");try{await Z(k)||u("Invalid password")}catch{u("Login failed. Please try again.")}finally{U(!1)}},Se=()=>{ee(),O(""),u("")};return X?a.jsx(B,{children:a.jsx("div",{className:"flex items-center justify-center min-h-[400px]",children:a.jsxs("div",{className:"text-center",children:[a.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-ifrcRed mx-auto mb-4"}),a.jsx("p",{className:"text-gray-600",children:"Loading..."})]})})}):F?a.jsxs(B,{children:[a.jsxs("div",{className:l.adminContainer,children:[a.jsx("div",{className:l.adminHeader,children:a.jsx(t,{name:"logout",variant:"secondary",onClick:Se,children:"Logout"})}),a.jsxs("div",{className:l.adminSection,children:[a.jsx(f,{heading:"VLM Model Selection",headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,children:a.jsxs("div",{className:l.modelSelectionArea,children:[a.jsx("p",{className:"text-gray-700",children:"Select which Vision Language Model to use for caption generation."}),a.jsx("div",{className:l.modelSelectionRow,children:a.jsx(S,{label:"Model",name:"selected-model",value:ae,onChange:e=>ge(e||""),options:[{value:"random",label:"Random"},...z.filter(e=>e.is_available).map(e=>({value:e.m_code,label:e.label}))],keySelector:e=>e.value,labelSelector:e=>e.label})})]})}),a.jsx(f,{heading:"Model Management",headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,children:a.jsxs("div",{className:l.modelManagementArea,children:[a.jsx("div",{className:l.modelsTable,children:a.jsxs("table",{children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Code"}),a.jsx("th",{children:"Label"}),a.jsx("th",{children:"Provider"}),a.jsx("th",{children:"Model ID"}),a.jsx("th",{children:"Available"}),a.jsx("th",{children:"Actions"})]})}),a.jsx("tbody",{children:z.map(e=>a.jsxs("tr",{children:[a.jsx("td",{className:l.modelCode,children:e.m_code}),a.jsx("td",{children:e.label}),a.jsx("td",{children:e.provider||e.config?.provider||"huggingface"}),a.jsx("td",{className:l.modelId,children:e.model_id||e.config?.model_id||e.m_code||"N/A"}),a.jsx("td",{children:a.jsx(t,{name:`toggle-${e.m_code}`,variant:e.is_available?"primary":"secondary",size:1,onClick:()=>ve(e.m_code,e.is_available),children:e.is_available?"Enabled":"Disabled"})}),a.jsx("td",{children:a.jsxs("div",{className:l.modelActions,children:[a.jsx(t,{name:`edit-${e.m_code}`,variant:"secondary",size:1,onClick:()=>be(e),children:"Edit"}),a.jsx(t,{name:`delete-${e.m_code}`,variant:"secondary",size:1,onClick:()=>Ne(e.m_code),children:"Delete"})]})})]},e.m_code))})]})}),!V&&a.jsx("div",{className:l.addModelButtonContainer,children:a.jsx(t,{name:"show-add-form",variant:"primary",onClick:()=>P(!0),children:"Add New Model"})}),V&&a.jsxs("div",{className:l.addModelForm,children:[a.jsx("h4",{className:l.addModelFormTitle,children:"Add New Model"}),a.jsxs("div",{className:l.addModelFormGrid,children:[a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Model Code",name:"model-code",value:o.m_code,onChange:e=>c({...o,m_code:e||""}),placeholder:"e.g., NEW_MODEL_123"})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Label",name:"model-label",value:o.label,onChange:e=>c({...o,label:e||""}),placeholder:"e.g., New Model Name"})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(S,{label:"Provider",name:"model-provider",value:o.provider,onChange:e=>c({...o,provider:e||"huggingface"}),options:[{value:"huggingface",label:"HuggingFace"},{value:"openai",label:"OpenAI"},{value:"google",label:"Google"}],keySelector:e=>e.value,labelSelector:e=>e.label})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Model ID",name:"model-id",value:o.model_id,onChange:e=>c({...o,model_id:e||""}),placeholder:"e.g., org/model-name"})}),a.jsx("div",{className:l.addModelFormField,children:a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:o.is_available,onChange:e=>c({...o,is_available:e.target.checked})}),a.jsx("span",{children:"Available for use"})]})})]}),a.jsxs("div",{className:l.addModelFormActions,children:[a.jsx(t,{name:"save-model",variant:"primary",onClick:fe,disabled:!o.m_code||!o.label||!o.model_id,children:"Save Model"}),a.jsx(t,{name:"cancel-add",variant:"secondary",onClick:()=>P(!1),children:"Cancel"})]})]}),ne&&a.jsxs("div",{className:l.addModelForm,children:[a.jsxs("h4",{className:l.addModelFormTitle,children:["Edit Model: ",$?.label]}),a.jsxs("div",{className:l.addModelFormGrid,children:[a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Model Code",name:"model-code",value:o.m_code,onChange:e=>c({...o,m_code:e||""}),placeholder:"e.g., NEW_MODEL_123",disabled:!0})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Label",name:"model-label",value:o.label,onChange:e=>c({...o,label:e||""}),placeholder:"e.g., New Model Name"})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(S,{label:"Provider",name:"model-provider",value:o.provider,onChange:e=>c({...o,provider:e||"huggingface"}),options:[{value:"huggingface",label:"HuggingFace"},{value:"openai",label:"OpenAI"},{value:"google",label:"Google"}],keySelector:e=>e.value,labelSelector:e=>e.label})}),a.jsx("div",{className:l.addModelFormField,children:a.jsx(h,{label:"Model ID",name:"model-id",value:o.model_id,onChange:e=>c({...o,model_id:e||""}),placeholder:"e.g., org/model-name"})}),a.jsx("div",{className:l.addModelFormField,children:a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:o.is_available,onChange:e=>c({...o,is_available:e.target.checked})}),a.jsx("span",{children:"Available for use"})]})})]}),a.jsxs("div",{className:l.addModelFormActions,children:[a.jsx(t,{name:"update-model",variant:"primary",onClick:ye,disabled:!o.m_code||!o.label||!o.model_id,children:"Update Model"}),a.jsx(t,{name:"cancel-edit",variant:"secondary",onClick:()=>{I(!1),L(null),c({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1})},children:"Cancel"})]})]})]})}),a.jsx(f,{heading:"Prompt Management",headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,children:a.jsxs("div",{className:l.modelManagementArea,children:[a.jsxs("div",{className:l.promptSubsection,children:[a.jsx("h4",{className:l.promptSubsectionTitle,children:"Crisis Maps"}),a.jsx("div",{className:l.modelsTable,children:a.jsxs("table",{children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Code"}),a.jsx("th",{children:"Label"}),a.jsx("th",{children:"Status"}),a.jsx("th",{children:"Actions"})]})}),a.jsx("tbody",{children:G.filter(e=>e.image_type==="crisis_map").sort((e,s)=>e.p_code.localeCompare(s.p_code)).map(e=>a.jsxs("tr",{children:[a.jsx("td",{className:l.modelCode,children:e.p_code}),a.jsx("td",{className:l.promptLabel,children:e.label||"No label"}),a.jsx("td",{children:a.jsx(t,{name:`toggle-crisis-${e.p_code}`,variant:e.is_active?"primary":"secondary",size:1,onClick:()=>Y(e.p_code,"crisis_map"),children:e.is_active?"Active":"Inactive"})}),a.jsx("td",{children:a.jsxs("div",{className:l.modelActions,children:[a.jsx(t,{name:`view-${e.p_code}`,variant:"secondary",size:1,onClick:()=>{_(`=== Prompt Details ===
12
- Code: ${e.p_code}
13
- Label: ${e.label}
14
- Image Type: ${e.image_type}
15
- Active: ${e.is_active}
16
-
17
- Metadata Instructions:
18
- ${e.metadata_instructions||"No instructions available"}`),j(`Prompt: ${e.p_code}`),p(!0)},children:"View"}),a.jsx(t,{name:`edit-${e.p_code}`,variant:"secondary",size:1,onClick:()=>q(e),children:"Edit"})]})})]},e.p_code))})]})}),a.jsx("div",{className:l.addModelButtonContainer,children:a.jsx(t,{name:"add-crisis-prompt",variant:"primary",onClick:()=>Q("crisis_map"),children:"Add New Crisis Map Prompt"})})]}),a.jsxs("div",{className:l.promptSubsection,children:[a.jsx("h4",{className:l.promptSubsectionTitle,children:"Drone Images"}),a.jsx("div",{className:l.modelsTable,children:a.jsxs("table",{children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{children:"Code"}),a.jsx("th",{children:"Label"}),a.jsx("th",{children:"Status"}),a.jsx("th",{children:"Actions"})]})}),a.jsx("tbody",{children:G.filter(e=>e.image_type==="drone_image").sort((e,s)=>e.p_code.localeCompare(s.p_code)).map(e=>a.jsxs("tr",{children:[a.jsx("td",{className:l.modelCode,children:e.p_code}),a.jsx("td",{className:l.promptLabel,children:e.label||"No label"}),a.jsx("td",{children:a.jsx(t,{name:`toggle-drone-${e.p_code}`,variant:e.is_active?"primary":"secondary",size:1,onClick:()=>Y(e.p_code,"drone_image"),children:e.is_active?"Active":"Inactive"})}),a.jsx("td",{children:a.jsxs("div",{className:l.modelActions,children:[a.jsx(t,{name:`view-${e.p_code}`,variant:"secondary",size:1,onClick:()=>{_(`=== Prompt Details ===
19
- Code: ${e.p_code}
20
- Label: ${e.label}
21
- Image Type: ${e.image_type}
22
- Active: ${e.is_active}
23
-
24
- Metadata Instructions:
25
- ${e.metadata_instructions||"No instructions available"}`),j(`Prompt: ${e.p_code}`),p(!0)},children:"View"}),a.jsx(t,{name:`edit-${e.p_code}`,variant:"secondary",size:1,onClick:()=>q(e),children:"Edit"})]})})]},e.p_code))})]})}),a.jsx("div",{className:l.addModelButtonContainer,children:a.jsx(t,{name:"add-drone-prompt",variant:"primary",onClick:()=>Q("drone_image"),children:"Add New Drone Image Prompt"})})]})]})}),a.jsx(f,{heading:"Utilities",headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,children:a.jsxs("div",{className:"flex flex-wrap gap-4",children:[a.jsx(t,{name:"test-connection",variant:"secondary",onClick:async()=>{_("Testing API connection..."),j("Connection Test Results");try{const e=await fetch("/api/models");if(e.ok){const s=await e.json(),i=`✅ API connection successful!
26
-
27
- Found ${s.models?.length||0} models in database.
28
-
29
- Available models:
30
- ${s.models?.filter(m=>m.is_available).map(m=>`- ${m.label} (${m.m_code})`).join(`
31
- `)||"None"}`;_(i)}else{const s=`❌ API connection failed: HTTP ${e.status}`;_(s)}p(!0)}catch(e){const s=`❌ Connection error: ${e}`;_(s),p(!0)}},children:"Test Connection"}),a.jsx(t,{name:"view-schemas",variant:"secondary",onClick:()=>{fetch("/api/schemas",{headers:{Authorization:`Bearer ${localStorage.getItem("adminToken")}`}}).then(e=>e.json()).then(e=>{console.log("Schemas Response:",e);let s="",i="Schemas Response";e&&Array.isArray(e)?(s=`Found ${e.length} schemas:
32
-
33
- `,e.forEach((m,g)=>{s+=`=== Schema ${g+1} ===
34
- `,s+=JSON.stringify(m,null,2),s+=`
35
-
36
- `})):e&&typeof e=="object"?s=`Prompts Response:
37
-
38
- Response type: ${typeof e}
39
- Keys: ${Object.keys(e).join(", ")}
40
-
41
- Raw data:
42
- ${JSON.stringify(e,null,2)}`:s=`Prompts Response:
43
-
44
- Unexpected data type: ${typeof e}
45
- Value: ${e}`,_(s),j(i),p(!0)}).catch(e=>{console.error("Schemas Error:",e);const s=`Failed to fetch prompts: ${e.message||"Unknown error"}`;_(s),j("Schemas Error"),p(!0)})},children:"View Schemas"})]})})]})]}),re&&a.jsx("div",{className:l.modalOverlay,onClick:()=>M(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Delete Model"}),a.jsxs("p",{className:l.modalText,children:["Are you sure you want to delete model ",a.jsx("span",{className:l.modelCode,children:J}),"? This action cannot be undone."]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-delete",variant:"tertiary",onClick:()=>M(!1),children:"Cancel"}),a.jsx(t,{name:"confirm-delete",variant:"secondary",onClick:Ce,children:"Delete"})]})]})})}),ce&&a.jsx("div",{className:l.modalOverlay,onClick:()=>E(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Model Added Successfully!"}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:he}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-setup-instructions",variant:"secondary",onClick:()=>E(!1),children:"Got it!"})})]})})}),me&&a.jsx("div",{className:l.modalOverlay,onClick:()=>p(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:ue}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:a.jsx("div",{className:"whitespace-pre-wrap font-mono text-sm leading-relaxed",children:_e})}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-test-results",variant:"secondary",onClick:()=>p(!1),children:"Close"})})]})})}),te&&a.jsx("div",{className:l.modalOverlay,onClick:()=>y(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Edit Prompt: ",C?.p_code]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:C?.p_code,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(S,{name:"prompt-image-type",value:n.image_type,onChange:e=>r(s=>({...s,image_type:e||"crisis_map"})),options:se,keySelector:e=>e.image_type,labelSelector:e=>e.label})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-edit-prompt",variant:"tertiary",onClick:()=>{y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-prompt",variant:"primary",onClick:je,children:"Save Changes"})]})]})})}),de&&a.jsx("div",{className:l.modalOverlay,onClick:()=>N(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Add New ",ie==="crisis_map"?"Crisis Map":"Drone Image"," Prompt"]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:n.p_code,onChange:e=>r(s=>({...s,p_code:e||""})),placeholder:"e.g., CUSTOM_CRISIS_MAP_001",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),placeholder:"Enter prompt description...",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(h,{name:"prompt-image-type",value:n.image_type,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),placeholder:"Enter metadata extraction instructions...",className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-add-prompt",variant:"tertiary",onClick:()=>{N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-new-prompt",variant:"primary",onClick:xe,disabled:!n.p_code||!n.label,children:"Create Prompt"})]})]})})})]}):a.jsx(B,{children:a.jsxs("div",{className:"mx-auto max-w-md px-4 sm:px-6 lg:px-8 py-6 sm:py-10",children:[a.jsx("div",{className:"text-center mb-8",children:a.jsx(Fe,{level:2,children:"Admin Login"})}),a.jsxs("form",{onSubmit:Me,className:"space-y-6",children:[a.jsxs("div",{children:[a.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 mb-2",children:"Password"}),a.jsx(h,{id:"password",name:"password",type:"password",value:k,onChange:e=>O(e||""),placeholder:"Enter admin password",required:!0,className:"w-full"})]}),R&&a.jsx("div",{className:"bg-ifrcRed/10 border border-ifrcRed/20 rounded-md p-3",children:a.jsx("p",{className:"text-sm text-ifrcRed font-medium",children:R})}),a.jsx("div",{className:"flex justify-center",children:a.jsx(f,{withInternalPadding:!0,className:"p-2",children:a.jsx(t,{name:"login",type:"submit",variant:"primary",size:2,disabled:D,children:D?"Logging in...":"Login"})})})]})]})})}export{ca as default};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
py_backend/static/assets/ExportModal-BtNOxnGZ.js DELETED
@@ -1 +0,0 @@
1
- import{r as o,j as e}from"./vendor-react-BxsGb6Ph.js";import{z as i,n as r,F as W,O,f as v,d as P,_ as N,L as B,j as F}from"./vendor-ui-l_DttnRj.js";import{u as A}from"./index-Uy48qW96.js";function ie({sources:_,types:S,regions:f,countries:I,imageTypes:k,isLoadingFilters:a=!1}){const[d,y]=o.useState(!1),{search:T,setSearch:p,srcFilter:w,setSrcFilter:m,catFilter:z,setCatFilter:u,regionFilter:h,setRegionFilter:g,countryFilter:x,setCountryFilter:j,imageTypeFilter:M,setImageTypeFilter:b,uploadTypeFilter:E,setUploadTypeFilter:C,showReferenceExamples:c,setShowReferenceExamples:t,clearAllFilters:n}=A();return e.jsxs("div",{className:"mb-6 space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(r,{name:"toggle-filters",variant:"secondary",onClick:()=>y(!d),className:"whitespace-nowrap",title:d?"Hide Filters":"Show Filters",children:e.jsx(W,{className:"w-4 h-4"})})}),e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:e.jsx(O,{name:"search",placeholder:"Search examples...",value:T,onChange:l=>p(l||"")})}),e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(r,{name:"clear-filters",variant:"secondary",onClick:n,children:"Clear Filters"})})]}),d&&e.jsx("div",{className:"bg-white/20 backdrop-blur-sm rounded-md p-4",children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"source",placeholder:a?"Loading...":"All Sources",options:_,value:w||null,onChange:l=>m(l||""),keySelector:l=>l.s_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"category",placeholder:a?"Loading...":"All Categories",options:S,value:z||null,onChange:l=>u(l||""),keySelector:l=>l.t_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"region",placeholder:a?"Loading...":"All Regions",options:f,value:h||null,onChange:l=>g(l||""),keySelector:l=>l.r_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(P,{name:"country",placeholder:a?"Loading...":"All Countries",options:I,value:x?[x]:[],onChange:l=>j(l[0]||""),keySelector:l=>l.c_code,labelSelector:l=>l.label,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"imageType",placeholder:a?"Loading...":"All Image Types",options:k,value:M||null,onChange:l=>b(l||""),keySelector:l=>l.image_type,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"uploadType",placeholder:"All Upload Types",options:[{key:"single",label:"Single Upload"},{key:"multiple",label:"Multiple Upload"}],value:E||null,onChange:l=>C(l||""),keySelector:l=>l.key,labelSelector:l=>l.label,required:!1,disabled:!1})})]})})]})}const R="_fullSizeModalOverlay_cyz3b_1",q="_fullSizeModalContent_cyz3b_29",G="_ratingWarningContent_cyz3b_53",U="_ratingWarningTitle_cyz3b_65",D="_exportModeSection_cyz3b_133",V="_splitConfigSection_cyz3b_143",Y="_splitConfigTitle_cyz3b_153",$="_splitInputsContainer_cyz3b_167",H="_splitInputGroup_cyz3b_183",J="_splitInputLabel_cyz3b_197",K="_splitInput_cyz3b_167",Q="_splitTotal_cyz3b_247",X="_splitTotalError_cyz3b_261",Z="_checkboxesContainer_cyz3b_271",L="_ratingWarningButtons_cyz3b_289",ee="_singleExportMessage_cyz3b_309",le="_navigateButtonContainer_cyz3b_333",se="_loadingOverlay_cyz3b_349",s={fullSizeModalOverlay:R,fullSizeModalContent:q,ratingWarningContent:G,ratingWarningTitle:U,exportModeSection:D,splitConfigSection:V,splitConfigTitle:Y,splitInputsContainer:$,splitInputGroup:H,splitInputLabel:J,splitInput:K,splitTotal:Q,splitTotalError:X,checkboxesContainer:Z,ratingWarningButtons:L,singleExportMessage:ee,navigateButtonContainer:le,loadingOverlay:se};function re({isOpen:_,onClose:S,onExport:f,crisisMapsCount:I,droneImagesCount:k,isLoading:a=!1,exportSuccess:d=!1,variant:y="bulk",onNavigateAndExport:T}){const[p,w]=o.useState("standard"),[m,z]=o.useState(80),[u,h]=o.useState(10),[g,x]=o.useState(10),[j,M]=o.useState(!0),[b,E]=o.useState(!0),C=()=>{if(y==="single"){f(p,["crisis_map","drone_image"]);return}if(!j&&!b){alert("Please select at least one image type to export.");return}const t=[];j&&t.push("crisis_map"),b&&t.push("drone_image"),f(p,t)},c=()=>{S()};return _?y==="single"?e.jsx("div",{className:s.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:s.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:[a&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(N,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),d&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(r,{name:"close-export-success",onClick:c,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:s.ratingWarningContent,children:[e.jsx("h3",{className:s.ratingWarningTitle,children:"Export Single Item"}),e.jsxs("div",{className:s.singleExportMessage,children:[e.jsx("p",{children:"This only exports the 1 item currently on display."}),e.jsx("p",{children:'You may export the entire dataset from the "list view" here:'})]}),e.jsx("div",{className:s.navigateButtonContainer,children:e.jsx(r,{name:"navigate-to-list",variant:"secondary",onClick:T,children:"Navigate to List View"})}),e.jsxs("div",{className:s.ratingWarningButtons,children:[e.jsx(r,{name:"continue-export",onClick:C,disabled:a,children:a?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-white"}),"Exporting..."]}):"Continue"}),e.jsx(r,{name:"cancel-export",variant:"tertiary",onClick:c,disabled:a,children:"Cancel"})]})]})]})}):e.jsx("div",{className:s.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:s.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:[a&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(N,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),d&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(r,{name:"close-export-success",onClick:c,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:s.ratingWarningContent,children:[e.jsx("h3",{className:s.ratingWarningTitle,children:"Export Dataset"}),e.jsx("div",{className:s.exportModeSection,children:e.jsx(B,{name:"export-mode",value:p,onChange:t=>{(t==="standard"||t==="fine-tuning")&&w(t)},options:[{key:"standard",label:"Standard"},{key:"fine-tuning",label:"Fine-tuning"}],keySelector:t=>t.key,labelSelector:t=>t.label,disabled:a})}),p==="fine-tuning"&&e.jsxs("div",{className:s.splitConfigSection,children:[e.jsx("div",{className:s.splitConfigTitle,children:"Dataset Split Configuration"}),e.jsxs("div",{className:s.splitInputsContainer,children:[e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"train-split",className:s.splitInputLabel,children:"Train (%)"}),e.jsx("input",{id:"train-split",type:"number",min:"0",max:"100",value:m,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-n;l>=0&&(z(n),u+g>l&&(h(Math.floor(l/2)),x(l-Math.floor(l/2))))},className:s.splitInput,disabled:a})]}),e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"test-split",className:s.splitInputLabel,children:"Test (%)"}),e.jsx("input",{id:"test-split",type:"number",min:"0",max:"100",value:u,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-m-n;l>=0&&(h(n),x(l))},className:s.splitInput,disabled:a})]}),e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"val-split",className:s.splitInputLabel,children:"Val (%)"}),e.jsx("input",{id:"val-split",type:"number",min:"0",max:"100",value:g,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-m-n;l>=0&&(x(n),h(l))},className:s.splitInput,disabled:a})]})]}),m+u+g!==100&&e.jsx("div",{className:s.splitTotal,children:e.jsx("span",{className:s.splitTotalError,children:"Must equal 100%"})})]}),e.jsxs("div",{className:s.checkboxesContainer,children:[e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(F,{name:"crisis-maps",label:`Crisis Maps (${I} images)`,value:j,onChange:t=>M(t),disabled:a})}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(F,{name:"drone-images",label:`Drone Images (${k} images)`,value:b,onChange:t=>E(t),disabled:a})})]}),e.jsxs("div",{className:s.ratingWarningButtons,children:[e.jsx(r,{name:"confirm-export",onClick:C,disabled:a,children:a?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-white"}),"Exporting..."]}):"Export Selected"}),e.jsx(r,{name:"cancel-export",variant:"tertiary",onClick:c,disabled:a,children:"Cancel"})]})]})]})}):null}export{re as E,ie as F};
 
 
py_backend/static/assets/ExportModal-DxEvAVvI.js DELETED
@@ -1 +0,0 @@
1
- import{r as o,j as e}from"./vendor-react-BxsGb6Ph.js";import{z as i,n as r,F as W,O,f as v,d as P,_ as N,L as B,j as F}from"./vendor-ui-l_DttnRj.js";import{u as A}from"./index-DyXqjI96.js";function ie({sources:_,types:S,regions:f,countries:I,imageTypes:k,isLoadingFilters:a=!1}){const[d,y]=o.useState(!1),{search:T,setSearch:p,srcFilter:w,setSrcFilter:m,catFilter:z,setCatFilter:u,regionFilter:h,setRegionFilter:g,countryFilter:x,setCountryFilter:j,imageTypeFilter:M,setImageTypeFilter:b,uploadTypeFilter:E,setUploadTypeFilter:C,showReferenceExamples:c,setShowReferenceExamples:t,clearAllFilters:n}=A();return e.jsxs("div",{className:"mb-6 space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(r,{name:"toggle-filters",variant:"secondary",onClick:()=>y(!d),className:"whitespace-nowrap",title:d?"Hide Filters":"Show Filters",children:e.jsx(W,{className:"w-4 h-4"})})}),e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:e.jsx(O,{name:"search",placeholder:"Search examples...",value:T,onChange:l=>p(l||"")})}),e.jsx(i,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(r,{name:"clear-filters",variant:"secondary",onClick:n,children:"Clear Filters"})})]}),d&&e.jsx("div",{className:"bg-white/20 backdrop-blur-sm rounded-md p-4",children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"source",placeholder:a?"Loading...":"All Sources",options:_,value:w||null,onChange:l=>m(l||""),keySelector:l=>l.s_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"category",placeholder:a?"Loading...":"All Categories",options:S,value:z||null,onChange:l=>u(l||""),keySelector:l=>l.t_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"region",placeholder:a?"Loading...":"All Regions",options:f,value:h||null,onChange:l=>g(l||""),keySelector:l=>l.r_code,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(P,{name:"country",placeholder:a?"Loading...":"All Countries",options:I,value:x?[x]:[],onChange:l=>j(l[0]||""),keySelector:l=>l.c_code,labelSelector:l=>l.label,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"imageType",placeholder:a?"Loading...":"All Image Types",options:k,value:M||null,onChange:l=>b(l||""),keySelector:l=>l.image_type,labelSelector:l=>l.label,required:!1,disabled:a})}),e.jsx(i,{withInternalPadding:!0,className:"p-2",children:e.jsx(v,{name:"uploadType",placeholder:"All Upload Types",options:[{key:"single",label:"Single Upload"},{key:"multiple",label:"Multiple Upload"}],value:E||null,onChange:l=>C(l||""),keySelector:l=>l.key,labelSelector:l=>l.label,required:!1,disabled:!1})})]})})]})}const R="_fullSizeModalOverlay_cyz3b_1",q="_fullSizeModalContent_cyz3b_29",G="_ratingWarningContent_cyz3b_53",U="_ratingWarningTitle_cyz3b_65",D="_exportModeSection_cyz3b_133",V="_splitConfigSection_cyz3b_143",Y="_splitConfigTitle_cyz3b_153",$="_splitInputsContainer_cyz3b_167",H="_splitInputGroup_cyz3b_183",J="_splitInputLabel_cyz3b_197",K="_splitInput_cyz3b_167",Q="_splitTotal_cyz3b_247",X="_splitTotalError_cyz3b_261",Z="_checkboxesContainer_cyz3b_271",L="_ratingWarningButtons_cyz3b_289",ee="_singleExportMessage_cyz3b_309",le="_navigateButtonContainer_cyz3b_333",se="_loadingOverlay_cyz3b_349",s={fullSizeModalOverlay:R,fullSizeModalContent:q,ratingWarningContent:G,ratingWarningTitle:U,exportModeSection:D,splitConfigSection:V,splitConfigTitle:Y,splitInputsContainer:$,splitInputGroup:H,splitInputLabel:J,splitInput:K,splitTotal:Q,splitTotalError:X,checkboxesContainer:Z,ratingWarningButtons:L,singleExportMessage:ee,navigateButtonContainer:le,loadingOverlay:se};function re({isOpen:_,onClose:S,onExport:f,crisisMapsCount:I,droneImagesCount:k,isLoading:a=!1,exportSuccess:d=!1,variant:y="bulk",onNavigateAndExport:T}){const[p,w]=o.useState("standard"),[m,z]=o.useState(80),[u,h]=o.useState(10),[g,x]=o.useState(10),[j,M]=o.useState(!0),[b,E]=o.useState(!0),C=()=>{if(y==="single"){f(p,["crisis_map","drone_image"]);return}if(!j&&!b){alert("Please select at least one image type to export.");return}const t=[];j&&t.push("crisis_map"),b&&t.push("drone_image"),f(p,t)},c=()=>{S()};return _?y==="single"?e.jsx("div",{className:s.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:s.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:[a&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(N,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),d&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(r,{name:"close-export-success",onClick:c,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:s.ratingWarningContent,children:[e.jsx("h3",{className:s.ratingWarningTitle,children:"Export Single Item"}),e.jsxs("div",{className:s.singleExportMessage,children:[e.jsx("p",{children:"This only exports the 1 item currently on display."}),e.jsx("p",{children:'You may export the entire dataset from the "list view" here:'})]}),e.jsx("div",{className:s.navigateButtonContainer,children:e.jsx(r,{name:"navigate-to-list",variant:"secondary",onClick:T,children:"Navigate to List View"})}),e.jsxs("div",{className:s.ratingWarningButtons,children:[e.jsx(r,{name:"continue-export",onClick:C,disabled:a,children:a?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-white"}),"Exporting..."]}):"Continue"}),e.jsx(r,{name:"cancel-export",variant:"tertiary",onClick:c,disabled:a,children:"Cancel"})]})]})]})}):e.jsx("div",{className:s.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:s.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:[a&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(N,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),d&&e.jsx("div",{className:s.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(r,{name:"close-export-success",onClick:c,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:s.ratingWarningContent,children:[e.jsx("h3",{className:s.ratingWarningTitle,children:"Export Dataset"}),e.jsx("div",{className:s.exportModeSection,children:e.jsx(B,{name:"export-mode",value:p,onChange:t=>{(t==="standard"||t==="fine-tuning")&&w(t)},options:[{key:"standard",label:"Standard"},{key:"fine-tuning",label:"Fine-tuning"}],keySelector:t=>t.key,labelSelector:t=>t.label,disabled:a})}),p==="fine-tuning"&&e.jsxs("div",{className:s.splitConfigSection,children:[e.jsx("div",{className:s.splitConfigTitle,children:"Dataset Split Configuration"}),e.jsxs("div",{className:s.splitInputsContainer,children:[e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"train-split",className:s.splitInputLabel,children:"Train (%)"}),e.jsx("input",{id:"train-split",type:"number",min:"0",max:"100",value:m,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-n;l>=0&&(z(n),u+g>l&&(h(Math.floor(l/2)),x(l-Math.floor(l/2))))},className:s.splitInput,disabled:a})]}),e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"test-split",className:s.splitInputLabel,children:"Test (%)"}),e.jsx("input",{id:"test-split",type:"number",min:"0",max:"100",value:u,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-m-n;l>=0&&(h(n),x(l))},className:s.splitInput,disabled:a})]}),e.jsxs("div",{className:s.splitInputGroup,children:[e.jsx("label",{htmlFor:"val-split",className:s.splitInputLabel,children:"Val (%)"}),e.jsx("input",{id:"val-split",type:"number",min:"0",max:"100",value:g,onChange:t=>{const n=parseInt(t.target.value)||0,l=100-m-n;l>=0&&(x(n),h(l))},className:s.splitInput,disabled:a})]})]}),m+u+g!==100&&e.jsx("div",{className:s.splitTotal,children:e.jsx("span",{className:s.splitTotalError,children:"Must equal 100%"})})]}),e.jsxs("div",{className:s.checkboxesContainer,children:[e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(F,{name:"crisis-maps",label:`Crisis Maps (${I} images)`,value:j,onChange:t=>M(t),disabled:a})}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(F,{name:"drone-images",label:`Drone Images (${k} images)`,value:b,onChange:t=>E(t),disabled:a})})]}),e.jsxs("div",{className:s.ratingWarningButtons,children:[e.jsx(r,{name:"confirm-export",onClick:C,disabled:a,children:a?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-white"}),"Exporting..."]}):"Export Selected"}),e.jsx(r,{name:"cancel-export",variant:"tertiary",onClick:c,disabled:a,children:"Cancel"})]})]})]})}):null}export{re as E,ie as F};
 
 
py_backend/static/assets/index-Bj6KcvNd.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-utils-Db80MiSc.js","assets/vendor-DxpCibxB.js","assets/vendor-react-BxsGb6Ph.js"])))=>i.map(i=>d[i]);
2
- import{u as Se,_ as Te}from"./index-DyXqjI96.js";import{r as m,j as t}from"./vendor-react-BxsGb6Ph.js";import{N as Ie,_ as ie,L as Ee,z as Z,n as D,D as be}from"./vendor-ui-l_DttnRj.js";import{u as Ce}from"./useAdmin-BStaIYmd.js";import{F as $e,E as Pe}from"./ExportModal-DxEvAVvI.js";import{a as Fe,u as De}from"./vendor-DxpCibxB.js";const ke="_tabSelector_o9y1f_1",Le="_metadataTags_o9y1f_8",Oe="_metadataTag_o9y1f_8",Me="_metadataTagSource_o9y1f_32",Re="_metadataTagType_o9y1f_43",Je="_mapItem_o9y1f_54",We="_mapItemImage_o9y1f_72",ze="_mapItemContent_o9y1f_92",Ue="_mapItemTitle_o9y1f_97",Ae="_mapItemMetadata_o9y1f_105",Be="_fullSizeModalOverlay_o9y1f_134",He="_fullSizeModalContent_o9y1f_148",Ve="_ratingWarningContent_o9y1f_159",Ge="_ratingWarningTitle_o9y1f_165",Ze="_ratingWarningText_o9y1f_172",qe="_ratingWarningButtons_o9y1f_179",g={tabSelector:ke,metadataTags:Le,metadataTag:Oe,metadataTagSource:Me,metadataTagType:Re,mapItem:Je,mapItemImage:We,mapItemContent:ze,mapItemTitle:Ue,mapItemMetadata:Ae,fullSizeModalOverlay:Be,fullSizeModalContent:He,ratingWarningContent:Ve,ratingWarningTitle:Ge,ratingWarningText:Ze,ratingWarningButtons:qe};function at(){const k=Fe(),q=De(),{isAuthenticated:ne}=Ce(),[K,oe]=m.useState("explore"),[_,L]=m.useState([]),{search:y,srcFilter:E,catFilter:b,regionFilter:C,countryFilter:$,imageTypeFilter:P,uploadTypeFilter:F,showReferenceExamples:j,setShowReferenceExamples:le}=Se(),[J,re]=m.useState([]),[W,ce]=m.useState([]),[Q,me]=m.useState([]),[ge,de]=m.useState([]),[X,pe]=m.useState([]),[ue,Y]=m.useState(!0),[z,ee]=m.useState(!0),[fe,U]=m.useState(!1),[he,A]=m.useState(!1),[_e,B]=m.useState(!1),[xe,O]=m.useState(!1),[M,te]=m.useState(""),[H,ae]=m.useState(!1),ye=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],se=()=>{ee(!0),fetch("/api/images/grouped").then(e=>e.ok?e.json():(console.error("ExplorePage: Grouped endpoint failed, trying legacy endpoint"),fetch("/api/captions/legacy").then(s=>s.ok?s.json():(console.error("ExplorePage: Legacy endpoint failed, trying regular images endpoint"),fetch("/api/images").then(o=>{if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);return o.json()}))))).then(e=>{if(console.log("ExplorePage: API response data:",e),Array.isArray(e)){const s=e.filter(o=>{const f=o.generated&&o.model,u=o.image_id&&o.image_id!=="undefined"&&o.image_id!=="null";return u||console.error("ExplorePage: Item missing valid image_id:",o),f&&u});console.log("ExplorePage: Filtered images with captions:",s.length),L(s)}else console.error("ExplorePage: API response is not an array:",e),L([])}).catch(()=>{L([])}).finally(()=>{ee(!1)})};m.useEffect(()=>{se()},[]),m.useEffect(()=>{const e=()=>{document.hidden||se()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[]),m.useEffect(()=>{new URLSearchParams(q.search).get("export")==="true"&&(U(!0),k("/explore",{replace:!0}))},[q.search,k,y,E,b,C,$,P,j]),m.useEffect(()=>{Y(!0),Promise.all([fetch("/api/sources").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/regions").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/countries").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/image-types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()})]).then(([e,s,o,f,u])=>{re(e),ce(s),me(o),de(f),pe(u)}).catch(()=>{}).finally(()=>{Y(!1)})},[]);const v=m.useMemo(()=>_.filter(e=>{const s=!y||e.title?.toLowerCase().includes(y.toLowerCase())||e.generated?.toLowerCase().includes(y.toLowerCase())||e.source?.toLowerCase().includes(y.toLowerCase())||e.event_type?.toLowerCase().includes(y.toLowerCase()),o=!E||e.source&&e.source.split(", ").some(x=>x.trim()===E),f=!b||e.event_type&&e.event_type.split(", ").some(x=>x.trim()===b),u=!C||e.countries.some(x=>x.r_code===C),N=!$||e.countries.some(x=>x.c_code===$),V=!P||e.image_type===P,R=!F||F==="single"&&(!e.image_count||e.image_count<=1)||F==="multiple"&&e.image_count&&e.image_count>1,w=!j||e.starred===!0;return s&&o&&f&&u&&N&&V&&R&&w}),[_,y,E,b,C,$,P,F,j]),je=async(e,s="fine-tuning")=>{if(e.length===0){alert("No images to export");return}A(!0),B(!1);try{const o=(await Te(async()=>{const{default:i}=await import("./vendor-utils-Db80MiSc.js").then(S=>S.j);return{default:i}},__vite__mapDeps([0,1,2]))).default,f=new o,u=e.filter(i=>i.image_type==="crisis_map"),N=e.filter(i=>i.image_type==="drone_image");if(u.length>0){const i=f.folder("crisis_maps_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of u)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}if(N.length>0){const i=f.folder("drone_images_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of N)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}const V=await f.generateAsync({type:"blob"}),R=URL.createObjectURL(V),w=document.createElement("a");w.href=R,w.download=`datasets_${s}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(w),w.click(),document.body.removeChild(w),URL.revokeObjectURL(R);const x=(u.length||0)+(N.length||0);console.log(`Exported ${s} datasets with ${x} total images:`),u.length>0&&console.log(`- Crisis maps: ${u.length} images`),N.length>0&&console.log(`- Drone images: ${N.length} images`),B(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{A(!1)}},ve=e=>{te(e),O(!0)},Ne=async()=>{if(M){ae(!0);try{console.log("Deleting image with ID:",M),(await fetch(`/api/images/${M}`,{method:"DELETE"})).ok?(L(s=>s.filter(o=>o.image_id!==M)),O(!1),te("")):(console.error("Delete failed"),alert("Failed to delete image. Please try again."))}catch(e){console.error("Delete failed:",e),alert("Failed to delete image. Please try again.")}finally{ae(!1)}}};return t.jsxs(Ie,{children:[z?t.jsx("div",{className:"flex flex-col items-center justify-center min-h-[60vh]",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}):t.jsxs("div",{className:"max-w-7xl mx-auto",children:[t.jsxs("div",{className:g.tabSelector,children:[t.jsx(Ee,{name:"explore-view",value:K,onChange:e=>{(e==="explore"||e==="mapDetails")&&(oe(e),e==="mapDetails"&&_.length>0&&(_[0]?.image_id&&_[0].image_id!=="undefined"&&_[0].image_id!=="null"?k(`/map/${_[0].image_id}`):console.error("Invalid image_id for navigation:",_[0]?.image_id)))},options:ye,keySelector:e=>e.key,labelSelector:e=>e.label}),t.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(D,{name:"reference-examples",variant:j?"primary":"secondary",onClick:()=>le(!j),className:"whitespace-nowrap",children:[t.jsx("span",{className:"mr-2",children:j?t.jsx("span",{className:"text-yellow-400",children:"★"}):t.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),t.jsx(D,{name:"export-dataset",variant:"secondary",onClick:()=>U(!0),children:"Export"})]})]}),K==="explore"?t.jsxs("div",{className:"space-y-6",children:[t.jsx("div",{className:"mb-6 space-y-4",children:t.jsx("div",{className:"flex flex-wrap items-center gap-4",children:t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:t.jsx($e,{sources:J,types:W,regions:Q,countries:ge,imageTypes:X,isLoadingFilters:ue})})})}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"flex justify-between items-center",children:t.jsxs("p",{className:"text-sm text-gray-600",children:[v.length," of ",_.length," examples"]})}),z&&t.jsx("div",{className:"text-center py-12",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}),!z&&t.jsxs("div",{className:"space-y-4",children:[v.map(e=>t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:`${g.mapItem} flex-1`,onClick:()=>{console.log("ExplorePage: Clicking on image with ID:",e.image_id),console.log("ExplorePage: Image data:",e),e.image_id&&e.image_id!=="undefined"&&e.image_id!=="null"?(console.log("ExplorePage: Navigating to:",`/map/${e.image_id}`),console.log("ExplorePage: Full navigation URL:",`/#/map/${e.image_id}`),k(`/map/${e.image_id}`)):(console.error("Invalid image_id for navigation:",e.image_id),console.error("Full item data:",JSON.stringify(e,null,2)),alert(`Cannot navigate: Invalid image ID (${e.image_id})`))},children:[t.jsx("div",{className:g.mapItemImage,style:{width:"120px",height:"80px"},children:e.image_url?t.jsxs(t.Fragment,{children:[console.log("ExplorePage: Rendering image with URL:",e.image_url),t.jsx("img",{src:e.image_url,alt:e.file_key,onError:s=>{console.error("ExplorePage: Image failed to load:",e.image_url);const o=s.target;o.style.display="none",o.parentElement.innerHTML="Img"},onLoad:()=>console.log("ExplorePage: Image loaded successfully:",e.image_url)})]}):t.jsxs(t.Fragment,{children:[console.log("ExplorePage: No image_url provided for item:",e),"'Img'"]})}),t.jsxs("div",{className:g.mapItemContent,children:[t.jsx("h3",{className:g.mapItemTitle,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:e.title||"Untitled"}),e.starred&&t.jsx("span",{className:"text-red-500 text-lg",title:"Starred image",children:"★"})]})}),t.jsx("div",{className:g.mapItemMetadata,children:t.jsxs("div",{className:g.metadataTags,children:[e.image_type!=="drone_image"&&t.jsx("span",{className:g.metadataTagSource,children:e.source&&e.source.includes(", ")?e.source.split(", ").map(s=>J.find(o=>o.s_code===s.trim())?.label||s.trim()).join(", "):J.find(s=>s.s_code===e.source)?.label||e.source}),t.jsx("span",{className:g.metadataTagType,children:e.event_type&&e.event_type.includes(", ")?e.event_type.split(", ").map(s=>W.find(o=>o.t_code===s.trim())?.label||s.trim()).join(", "):W.find(s=>s.t_code===e.event_type)?.label||e.event_type}),t.jsx("span",{className:g.metadataTag,children:X.find(s=>s.image_type===e.image_type)?.label||e.image_type}),e.image_count&&e.image_count>1&&t.jsxs("span",{className:g.metadataTag,title:`Multi-upload with ${e.image_count} images`,children:["📷 ",e.image_count]}),(!e.image_count||e.image_count<=1)&&t.jsx("span",{className:g.metadataTag,title:"Single Upload",children:"Single"}),e.countries&&e.countries.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:g.metadataTag,children:Q.find(s=>s.r_code===e.countries[0].r_code)?.label||"Unknown Region"}),t.jsx("span",{className:g.metadataTag,children:e.countries.map(s=>s.label).join(", ")})]})]})})]})]}),ne&&t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(D,{name:`delete-${e.image_id}`,variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:()=>ve(e.image_id),title:"Delete","aria-label":"Delete saved image",children:t.jsx(be,{className:"w-4 h-4"})})})]},e.image_id)),!v.length&&t.jsx("div",{className:"text-center py-12",children:t.jsx("p",{className:"text-gray-500",children:"No examples found."})})]})]})]}):t.jsx("div",{className:"space-y-6",children:t.jsxs("div",{className:"text-center py-12",children:[t.jsx("p",{className:"text-gray-500",children:"Map Details view coming soon..."}),t.jsx("p",{className:"text-sm text-gray-400 mt-2",children:"This will show detailed information about individual maps"})]})})]}),xe&&t.jsx("div",{className:g.fullSizeModalOverlay,onClick:()=>O(!1),children:t.jsx("div",{className:g.fullSizeModalContent,onClick:e=>e.stopPropagation(),children:t.jsxs("div",{className:g.ratingWarningContent,children:[t.jsx("h3",{className:g.ratingWarningTitle,children:"Delete Image?"}),t.jsx("p",{className:g.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),t.jsxs("div",{className:g.ratingWarningButtons,children:[t.jsx(D,{name:"confirm-delete",variant:"secondary",onClick:Ne,disabled:H,children:H?"Deleting...":"Delete"}),t.jsx(D,{name:"cancel-delete",variant:"tertiary",onClick:()=>O(!1),disabled:H,children:"Cancel"})]})]})})}),t.jsx(Pe,{isOpen:fe,onClose:()=>{U(!1),B(!1),A(!1)},onExport:(e,s)=>{const o=v.filter(f=>s.includes(f.image_type));je(o,e)},filteredCount:v.length,totalCount:_.length,hasFilters:!!(y||E||b||C||$||P||F||j),crisisMapsCount:v.filter(e=>e.image_type==="crisis_map").length,droneImagesCount:v.filter(e=>e.image_type==="drone_image").length,isLoading:he,exportSuccess:_e})]})}export{at as default};
 
 
 
py_backend/static/assets/index-BsrMOmjk.css DELETED
@@ -1 +0,0 @@
1
- ._tabSelector_vlxoe_1{display:flex;justify-content:center;margin:var(--go-ui-spacing-xl) 0}._summaryStats_vlxoe_7{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._progressSection_vlxoe_14{margin-top:var(--go-ui-spacing-lg);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._progressLabel_vlxoe_20{display:flex;justify-content:space-between;margin-bottom:var(--go-ui-spacing-sm);color:var(--go-ui-color-text);font-weight:var(--go-ui-font-weight-medium)}._chartGrid_vlxoe_28{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-xl)}._chartSection_vlxoe_34{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._chartContainer_vlxoe_40{display:flex;justify-content:center;align-items:center;min-height:300px;background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-lg)}._tableContainer_vlxoe_51,._modelPerformance_vlxoe_59{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);overflow:hidden;box-shadow:var(--go-ui-box-shadow-sm)}._loadingContainer_vlxoe_67{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--go-ui-color-gray-60);font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-medium)}._errorContainer_vlxoe_77{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--go-ui-color-negative);font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-medium)}@media (min-width: 1024px){._chartSection_vlxoe_34{grid-template-columns:1fr 1fr}}._userInteractionCards_vlxoe_96{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._userInteractionCard_vlxoe_96{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-xl);text-align:center;box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow .2s ease-in-out}._userInteractionCard_vlxoe_96:hover{box-shadow:var(--go-ui-box-shadow-md)}._userInteractionCardValue_vlxoe_116{font-size:var(--go-ui-font-size-2xl);font-weight:var(--go-ui-font-weight-bold);color:var(--go-ui-color-text);margin-bottom:var(--go-ui-spacing-sm)}._userInteractionCardLabel_vlxoe_123{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-text-secondary);margin-bottom:var(--go-ui-spacing-md);font-weight:var(--go-ui-font-weight-medium)}._userInteractionCardButton_vlxoe_130{width:100%}._userInteractionCard_vlxoe_96 ._chartContainer_vlxoe_40{min-height:200px;background-color:transparent;border:none;padding:var(--go-ui-spacing-md);margin-bottom:var(--go-ui-spacing-lg)}._userInteractionCard_vlxoe_96:nth-child(3) ._chartContainer_vlxoe_40{width:110%;margin-left:-5%}._summaryStatsCards_vlxoe_148{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._summaryStatsCard_vlxoe_148{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-xl);text-align:center;box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow .2s ease-in-out}._summaryStatsCard_vlxoe_148:hover{box-shadow:var(--go-ui-box-shadow-md)}._summaryStatsCardValue_vlxoe_169{font-size:var(--go-ui-font-size-2xl);font-weight:var(--go-ui-font-weight-bold);color:var(--go-ui-color-text);margin-bottom:var(--go-ui-spacing-sm)}._summaryStatsCardLabel_vlxoe_176{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-text-secondary)}@media (min-width: 768px){._userInteractionCards_vlxoe_96{grid-template-columns:repeat(3,1fr)}._summaryStatsCards_vlxoe_148{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){._summaryStats_vlxoe_7{grid-template-columns:1fr;gap:var(--go-ui-spacing-md)}._chartContainer_vlxoe_40{min-height:250px;padding:var(--go-ui-spacing-md)}._tabSelector_vlxoe_1{margin:var(--go-ui-spacing-lg) 0}}
 
 
py_backend/static/assets/index-CwG_dxMe.js DELETED
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-utils-Db80MiSc.js","assets/vendor-DxpCibxB.js","assets/vendor-react-BxsGb6Ph.js"])))=>i.map(i=>d[i]);
2
- import{u as Se,_ as Te}from"./index-Uy48qW96.js";import{r as m,j as t}from"./vendor-react-BxsGb6Ph.js";import{N as Ie,_ as ie,L as Ee,z as Z,n as D,D as be}from"./vendor-ui-l_DttnRj.js";import{u as Ce}from"./useAdmin-B_k2Fdj-.js";import{F as $e,E as Pe}from"./ExportModal-BtNOxnGZ.js";import{a as Fe,u as De}from"./vendor-DxpCibxB.js";const ke="_tabSelector_o9y1f_1",Le="_metadataTags_o9y1f_8",Oe="_metadataTag_o9y1f_8",Me="_metadataTagSource_o9y1f_32",Re="_metadataTagType_o9y1f_43",Je="_mapItem_o9y1f_54",We="_mapItemImage_o9y1f_72",ze="_mapItemContent_o9y1f_92",Ue="_mapItemTitle_o9y1f_97",Ae="_mapItemMetadata_o9y1f_105",Be="_fullSizeModalOverlay_o9y1f_134",He="_fullSizeModalContent_o9y1f_148",Ve="_ratingWarningContent_o9y1f_159",Ge="_ratingWarningTitle_o9y1f_165",Ze="_ratingWarningText_o9y1f_172",qe="_ratingWarningButtons_o9y1f_179",g={tabSelector:ke,metadataTags:Le,metadataTag:Oe,metadataTagSource:Me,metadataTagType:Re,mapItem:Je,mapItemImage:We,mapItemContent:ze,mapItemTitle:Ue,mapItemMetadata:Ae,fullSizeModalOverlay:Be,fullSizeModalContent:He,ratingWarningContent:Ve,ratingWarningTitle:Ge,ratingWarningText:Ze,ratingWarningButtons:qe};function at(){const k=Fe(),q=De(),{isAuthenticated:ne}=Ce(),[K,oe]=m.useState("explore"),[_,L]=m.useState([]),{search:y,srcFilter:E,catFilter:b,regionFilter:C,countryFilter:$,imageTypeFilter:P,uploadTypeFilter:F,showReferenceExamples:j,setShowReferenceExamples:le}=Se(),[J,re]=m.useState([]),[W,ce]=m.useState([]),[Q,me]=m.useState([]),[ge,de]=m.useState([]),[X,pe]=m.useState([]),[ue,Y]=m.useState(!0),[z,ee]=m.useState(!0),[fe,U]=m.useState(!1),[he,A]=m.useState(!1),[_e,B]=m.useState(!1),[xe,O]=m.useState(!1),[M,te]=m.useState(""),[H,ae]=m.useState(!1),ye=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],se=()=>{ee(!0),fetch("/api/images/grouped").then(e=>e.ok?e.json():(console.error("ExplorePage: Grouped endpoint failed, trying legacy endpoint"),fetch("/api/captions/legacy").then(s=>s.ok?s.json():(console.error("ExplorePage: Legacy endpoint failed, trying regular images endpoint"),fetch("/api/images").then(o=>{if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);return o.json()}))))).then(e=>{if(console.log("ExplorePage: API response data:",e),Array.isArray(e)){const s=e.filter(o=>{const f=o.generated&&o.model,u=o.image_id&&o.image_id!=="undefined"&&o.image_id!=="null";return u||console.error("ExplorePage: Item missing valid image_id:",o),f&&u});console.log("ExplorePage: Filtered images with captions:",s.length),L(s)}else console.error("ExplorePage: API response is not an array:",e),L([])}).catch(()=>{L([])}).finally(()=>{ee(!1)})};m.useEffect(()=>{se()},[]),m.useEffect(()=>{const e=()=>{document.hidden||se()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[]),m.useEffect(()=>{new URLSearchParams(q.search).get("export")==="true"&&(U(!0),k("/explore",{replace:!0}))},[q.search,k,y,E,b,C,$,P,j]),m.useEffect(()=>{Y(!0),Promise.all([fetch("/api/sources").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/regions").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/countries").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/image-types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()})]).then(([e,s,o,f,u])=>{re(e),ce(s),me(o),de(f),pe(u)}).catch(()=>{}).finally(()=>{Y(!1)})},[]);const v=m.useMemo(()=>_.filter(e=>{const s=!y||e.title?.toLowerCase().includes(y.toLowerCase())||e.generated?.toLowerCase().includes(y.toLowerCase())||e.source?.toLowerCase().includes(y.toLowerCase())||e.event_type?.toLowerCase().includes(y.toLowerCase()),o=!E||e.source&&e.source.split(", ").some(x=>x.trim()===E),f=!b||e.event_type&&e.event_type.split(", ").some(x=>x.trim()===b),u=!C||e.countries.some(x=>x.r_code===C),N=!$||e.countries.some(x=>x.c_code===$),V=!P||e.image_type===P,R=!F||F==="single"&&(!e.image_count||e.image_count<=1)||F==="multiple"&&e.image_count&&e.image_count>1,w=!j||e.starred===!0;return s&&o&&f&&u&&N&&V&&R&&w}),[_,y,E,b,C,$,P,F,j]),je=async(e,s="fine-tuning")=>{if(e.length===0){alert("No images to export");return}A(!0),B(!1);try{const o=(await Te(async()=>{const{default:i}=await import("./vendor-utils-Db80MiSc.js").then(S=>S.j);return{default:i}},__vite__mapDeps([0,1,2]))).default,f=new o,u=e.filter(i=>i.image_type==="crisis_map"),N=e.filter(i=>i.image_type==="drone_image");if(u.length>0){const i=f.folder("crisis_maps_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of u)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}if(N.length>0){const i=f.folder("drone_images_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of N)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}const V=await f.generateAsync({type:"blob"}),R=URL.createObjectURL(V),w=document.createElement("a");w.href=R,w.download=`datasets_${s}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(w),w.click(),document.body.removeChild(w),URL.revokeObjectURL(R);const x=(u.length||0)+(N.length||0);console.log(`Exported ${s} datasets with ${x} total images:`),u.length>0&&console.log(`- Crisis maps: ${u.length} images`),N.length>0&&console.log(`- Drone images: ${N.length} images`),B(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{A(!1)}},ve=e=>{te(e),O(!0)},Ne=async()=>{if(M){ae(!0);try{console.log("Deleting image with ID:",M),(await fetch(`/api/images/${M}`,{method:"DELETE"})).ok?(L(s=>s.filter(o=>o.image_id!==M)),O(!1),te("")):(console.error("Delete failed"),alert("Failed to delete image. Please try again."))}catch(e){console.error("Delete failed:",e),alert("Failed to delete image. Please try again.")}finally{ae(!1)}}};return t.jsxs(Ie,{children:[z?t.jsx("div",{className:"flex flex-col items-center justify-center min-h-[60vh]",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}):t.jsxs("div",{className:"max-w-7xl mx-auto",children:[t.jsxs("div",{className:g.tabSelector,children:[t.jsx(Ee,{name:"explore-view",value:K,onChange:e=>{(e==="explore"||e==="mapDetails")&&(oe(e),e==="mapDetails"&&_.length>0&&(_[0]?.image_id&&_[0].image_id!=="undefined"&&_[0].image_id!=="null"?k(`/map/${_[0].image_id}`):console.error("Invalid image_id for navigation:",_[0]?.image_id)))},options:ye,keySelector:e=>e.key,labelSelector:e=>e.label}),t.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(D,{name:"reference-examples",variant:j?"primary":"secondary",onClick:()=>le(!j),className:"whitespace-nowrap",children:[t.jsx("span",{className:"mr-2",children:j?t.jsx("span",{className:"text-yellow-400",children:"★"}):t.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),t.jsx(D,{name:"export-dataset",variant:"secondary",onClick:()=>U(!0),children:"Export"})]})]}),K==="explore"?t.jsxs("div",{className:"space-y-6",children:[t.jsx("div",{className:"mb-6 space-y-4",children:t.jsx("div",{className:"flex flex-wrap items-center gap-4",children:t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:t.jsx($e,{sources:J,types:W,regions:Q,countries:ge,imageTypes:X,isLoadingFilters:ue})})})}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"flex justify-between items-center",children:t.jsxs("p",{className:"text-sm text-gray-600",children:[v.length," of ",_.length," examples"]})}),z&&t.jsx("div",{className:"text-center py-12",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}),!z&&t.jsxs("div",{className:"space-y-4",children:[v.map(e=>t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:`${g.mapItem} flex-1`,onClick:()=>{console.log("ExplorePage: Clicking on image with ID:",e.image_id),console.log("ExplorePage: Image data:",e),e.image_id&&e.image_id!=="undefined"&&e.image_id!=="null"?(console.log("ExplorePage: Navigating to:",`/map/${e.image_id}`),console.log("ExplorePage: Full navigation URL:",`/#/map/${e.image_id}`),k(`/map/${e.image_id}`)):(console.error("Invalid image_id for navigation:",e.image_id),console.error("Full item data:",JSON.stringify(e,null,2)),alert(`Cannot navigate: Invalid image ID (${e.image_id})`))},children:[t.jsx("div",{className:g.mapItemImage,style:{width:"120px",height:"80px"},children:e.image_url?t.jsxs(t.Fragment,{children:[console.log("ExplorePage: Rendering image with URL:",e.image_url),t.jsx("img",{src:e.image_url,alt:e.file_key,onError:s=>{console.error("ExplorePage: Image failed to load:",e.image_url);const o=s.target;o.style.display="none",o.parentElement.innerHTML="Img"},onLoad:()=>console.log("ExplorePage: Image loaded successfully:",e.image_url)})]}):t.jsxs(t.Fragment,{children:[console.log("ExplorePage: No image_url provided for item:",e),"'Img'"]})}),t.jsxs("div",{className:g.mapItemContent,children:[t.jsx("h3",{className:g.mapItemTitle,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:e.title||"Untitled"}),e.starred&&t.jsx("span",{className:"text-red-500 text-lg",title:"Starred image",children:"★"})]})}),t.jsx("div",{className:g.mapItemMetadata,children:t.jsxs("div",{className:g.metadataTags,children:[e.image_type!=="drone_image"&&t.jsx("span",{className:g.metadataTagSource,children:e.source&&e.source.includes(", ")?e.source.split(", ").map(s=>J.find(o=>o.s_code===s.trim())?.label||s.trim()).join(", "):J.find(s=>s.s_code===e.source)?.label||e.source}),t.jsx("span",{className:g.metadataTagType,children:e.event_type&&e.event_type.includes(", ")?e.event_type.split(", ").map(s=>W.find(o=>o.t_code===s.trim())?.label||s.trim()).join(", "):W.find(s=>s.t_code===e.event_type)?.label||e.event_type}),t.jsx("span",{className:g.metadataTag,children:X.find(s=>s.image_type===e.image_type)?.label||e.image_type}),e.image_count&&e.image_count>1&&t.jsxs("span",{className:g.metadataTag,title:`Multi-upload with ${e.image_count} images`,children:["📷 ",e.image_count]}),(!e.image_count||e.image_count<=1)&&t.jsx("span",{className:g.metadataTag,title:"Single Upload",children:"Single"}),e.countries&&e.countries.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:g.metadataTag,children:Q.find(s=>s.r_code===e.countries[0].r_code)?.label||"Unknown Region"}),t.jsx("span",{className:g.metadataTag,children:e.countries.map(s=>s.label).join(", ")})]})]})})]})]}),ne&&t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(D,{name:`delete-${e.image_id}`,variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:()=>ve(e.image_id),title:"Delete","aria-label":"Delete saved image",children:t.jsx(be,{className:"w-4 h-4"})})})]},e.image_id)),!v.length&&t.jsx("div",{className:"text-center py-12",children:t.jsx("p",{className:"text-gray-500",children:"No examples found."})})]})]})]}):t.jsx("div",{className:"space-y-6",children:t.jsxs("div",{className:"text-center py-12",children:[t.jsx("p",{className:"text-gray-500",children:"Map Details view coming soon..."}),t.jsx("p",{className:"text-sm text-gray-400 mt-2",children:"This will show detailed information about individual maps"})]})})]}),xe&&t.jsx("div",{className:g.fullSizeModalOverlay,onClick:()=>O(!1),children:t.jsx("div",{className:g.fullSizeModalContent,onClick:e=>e.stopPropagation(),children:t.jsxs("div",{className:g.ratingWarningContent,children:[t.jsx("h3",{className:g.ratingWarningTitle,children:"Delete Image?"}),t.jsx("p",{className:g.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),t.jsxs("div",{className:g.ratingWarningButtons,children:[t.jsx(D,{name:"confirm-delete",variant:"secondary",onClick:Ne,disabled:H,children:H?"Deleting...":"Delete"}),t.jsx(D,{name:"cancel-delete",variant:"tertiary",onClick:()=>O(!1),disabled:H,children:"Cancel"})]})]})})}),t.jsx(Pe,{isOpen:fe,onClose:()=>{U(!1),B(!1),A(!1)},onExport:(e,s)=>{const o=v.filter(f=>s.includes(f.image_type));je(o,e)},filteredCount:v.length,totalCount:_.length,hasFilters:!!(y||E||b||C||$||P||F||j),crisisMapsCount:v.filter(e=>e.image_type==="crisis_map").length,droneImagesCount:v.filter(e=>e.image_type==="drone_image").length,isLoading:he,exportSuccess:_e})]})}export{at as default};
 
 
 
py_backend/static/assets/index-DMU6q_dg.js DELETED
@@ -1 +0,0 @@
1
- import{u as Oe,r as d,j as t}from"./vendor-react-BxsGb6Ph.js";import{g as C,h as u,N as $,_ as Qe,L as Ue,z as _,P as be,K as F,n as p,y as h,i as f}from"./vendor-ui-l_DttnRj.js";import"./vendor-DxpCibxB.js";const Ge="_tabSelector_vlxoe_1",$e="_progressSection_vlxoe_14",ze="_progressLabel_vlxoe_20",qe="_chartGrid_vlxoe_28",Ke="_chartContainer_vlxoe_40",We="_tableContainer_vlxoe_51",Je="_modelPerformance_vlxoe_59",Xe="_loadingContainer_vlxoe_67",Ye="_errorContainer_vlxoe_77",Ze="_userInteractionCards_vlxoe_96",et="_userInteractionCard_vlxoe_96",tt="_userInteractionCardValue_vlxoe_116",at="_userInteractionCardLabel_vlxoe_123",st="_userInteractionCardButton_vlxoe_130",nt="_summaryStatsCards_vlxoe_148",rt="_summaryStatsCard_vlxoe_148",it="_summaryStatsCardValue_vlxoe_169",ot="_summaryStatsCardLabel_vlxoe_176",i={tabSelector:Ge,progressSection:$e,progressLabel:ze,chartGrid:qe,chartContainer:Ke,tableContainer:We,modelPerformance:Je,loadingContainer:Xe,errorContainer:Ye,userInteractionCards:Ze,userInteractionCard:et,userInteractionCardValue:tt,userInteractionCardLabel:at,userInteractionCardButton:st,summaryStatsCards:nt,summaryStatsCard:rt,summaryStatsCardValue:it,summaryStatsCardLabel:ot};function ut(){const[z]=Oe(),[c,q]=d.useState(null),[Me,K]=d.useState(!0),[W,J]=d.useState("crisis_maps"),[I,Se]=d.useState([]),[w,Ie]=d.useState([]),[N,we]=d.useState([]),[b,Ne]=d.useState([]),[D,De]=d.useState(!1),[T,Te]=d.useState(!1),[k,ke]=d.useState(!1),[P,Pe]=d.useState(!1),[H,Ee]=d.useState(!1),[E,Le]=d.useState(!1),j=e=>{De(e==="editTime"),Te(e==="percentage"),ke(e==="delete"),Pe(e==="regions"),Ee(e==="sources"),Le(e==="types")},Be=[{key:"crisis_maps",label:"Crisis Maps"},{key:"drone_images",label:"Drone Images"}],G=d.useCallback((e,r)=>{if(!e||!r)return 0;const s=e.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(l=>l.length>0),a=r.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(l=>l.length>0);if(s.length===0&&a.length===0)return 1;if(s.length===0||a.length===0)return 0;const n=new Set(s),o=new Set(a),g=new Set([...n].filter(l=>o.has(l))),y=new Set([...n,...o]);return g.size/y.size},[]),X=d.useCallback(async()=>{K(!0);try{const r=await(await fetch("/api/images")).json(),s={},a=r.filter(l=>l.image_type==="crisis_map"),n=r.filter(l=>l.image_type==="drone_image"),o={totalCaptions:r.length,sources:{},types:{},regions:{},models:{},modelEditTimes:s,percentageModified:0,modelPercentageData:{},totalDeleteCount:0,deleteRate:0,crisisMaps:a,droneImages:n};r.forEach(l=>{if(l.source&&(o.sources[l.source]=(o.sources[l.source]||0)+1),l.event_type&&(o.types[l.event_type]=(o.types[l.event_type]||0)+1),l.countries&&l.countries.forEach(m=>{m.r_code&&(o.regions[m.r_code]=(o.regions[m.r_code]||0)+1)}),l.model){const m=l.model,v=o.models[m]||={count:0,avgAccuracy:0,avgContext:0,avgUsability:0,totalScore:0,deleteCount:0};if(v.count++,l.accuracy!=null&&(v.avgAccuracy+=l.accuracy),l.context!=null&&(v.avgContext+=l.context),l.usability!=null&&(v.avgUsability+=l.usability),l.created_at&&l.updated_at){const S=new Date(l.created_at).getTime(),U=new Date(l.updated_at).getTime()-S;U>0&&(s[m]||(s[m]=[]),s[m].push(U))}}}),I.forEach(l=>{l.s_code&&!o.sources[l.s_code]&&(o.sources[l.s_code]=0)}),w.forEach(l=>{l.t_code&&!o.types[l.t_code]&&(o.types[l.t_code]=0)}),N.forEach(l=>{l.r_code&&!o.regions[l.r_code]&&(o.regions[l.r_code]=0)}),["GPT-4","Claude","Gemini","Llama","Other"].forEach(l=>{o.models[l]||(o.models[l]={count:0,avgAccuracy:0,avgContext:0,avgUsability:0,totalScore:0,deleteCount:0})}),Object.values(o.models).forEach(l=>{l.count>0&&(l.avgAccuracy=Math.round(l.avgAccuracy/l.count),l.avgContext=Math.round(l.avgContext/l.count),l.avgUsability=Math.round(l.avgUsability/l.count),l.totalScore=Math.round((l.avgAccuracy+l.avgContext+l.avgUsability)/3))});const y=r.filter(l=>l.generated&&l.edited);if(y.length>0){const m=[...y.map(L=>G(L.generated,L.edited))].sort((L,U)=>L-U),v=Math.floor(m.length/2),S=m.length%2===0?(m[v-1]+m[v])/2:m[v];o.percentageModified=Math.round((1-S)*100)}const x={};r.forEach(l=>{if(l.model&&l.generated&&l.edited){const m=G(l.generated,l.edited),v=Math.round((1-m)*100);x[l.model]||(x[l.model]=[]),x[l.model].push(v)}}),o.modelPercentageData=x;try{const l=await fetch("/api/models");if(l.ok){const m=await l.json();if(m.models){m.models.forEach(S=>{o.models[S.m_code]&&(o.models[S.m_code].deleteCount=S.delete_count||0)});const v=m.models.reduce((S,L)=>S+(L.delete_count||0),0);o.totalDeleteCount=v,o.deleteRate=v>0?Math.round(v/(v+r.length)*100):0}}}catch(l){console.log("Could not fetch model delete counts:",l)}q(o)}catch{q(null)}finally{K(!1)}},[I,w,N,G]),Y=d.useCallback(async()=>{try{const[e,r,s,a]=await Promise.all([fetch("/api/sources"),fetch("/api/types"),fetch("/api/regions"),fetch("/api/models")]),n=await e.json(),o=await r.json(),g=await s.json(),y=await a.json();Se(n),Ie(o),we(g),Ne(y.models||[])}catch(e){console.log("Could not fetch lookup data:",e)}},[]);d.useEffect(()=>{const e=z.get("view");(e==="crisis_maps"||e==="drone_images")&&J(e)},[z]),d.useEffect(()=>{Y()},[Y]),d.useEffect(()=>{I.length>0&&w.length>0&&N.length>0&&b.length>0&&X()},[I,w,N,b,X]);const O=d.useCallback(e=>{const r=I.find(s=>s.s_code===e);return r?r.label:e},[I]),B=d.useCallback(e=>{if(e.length===0)return 0;const r=[...e].sort((a,n)=>a-n),s=Math.floor(r.length/2);return r.length%2===0?Math.round((r[s-1]+r[s])/2):r[s]},[]),A=d.useCallback(e=>{const r=Math.floor(e/1e3),s=Math.floor(r/60),a=Math.floor(s/60);return a>0?`${a}h ${s%60}m`:s>0?`${s}m ${r%60}s`:`${r}s`},[]),Q=d.useCallback(e=>{const r=w.find(s=>s.t_code===e);return r?r.label:e},[w]),M=d.useCallback(e=>{const r=b.find(s=>s.m_code===e);return r?r.label:e},[b]),Z=d.useMemo(()=>c?Object.entries(c.modelEditTimes||{}).filter(([,e])=>e.length>0).sort(([,e],[,r])=>B(r)-B(e)).map(([e,r],s)=>({id:s+1,name:M(e),count:r.length,avgEditTime:B(r),minEditTime:Math.min(...r),maxEditTime:Math.max(...r)})):[],[c,B,M]),ee=d.useMemo(()=>c?Object.entries(c.modelPercentageData||{}).filter(([,e])=>e.length>0).sort(([,e],[,r])=>{const s=[...e].sort((x,l)=>x-l),a=[...r].sort((x,l)=>x-l),n=Math.floor(s.length/2),o=Math.floor(a.length/2),g=s.length%2===0?(s[n-1]+s[n])/2:s[n];return(a.length%2===0?(a[o-1]+a[o])/2:a[o])-g}).map(([e,r],s)=>{const a=[...r].sort((g,y)=>g-y),n=Math.floor(a.length/2),o=a.length%2===0?Math.round((a[n-1]+a[n])/2):a[n];return{id:s+1,name:M(e),count:r.length,avgPercentageModified:o,minPercentageModified:Math.min(...r),maxPercentageModified:Math.max(...r)}}):[],[c,M]),te=d.useMemo(()=>c?Object.entries(c.models).filter(([,e])=>e.count>0).map(([e,r],s)=>{const a=[r.avgAccuracy,r.avgContext,r.avgUsability],n=a.reduce((y,x)=>y+x,0)/a.length,o=a.reduce((y,x)=>y+Math.pow(x-n,2),0)/a.length,g=Math.round(100-Math.sqrt(o));return{id:s+1,name:M(e),consistency:Math.max(0,g),avgScore:Math.round(n),count:r.count}}).sort((e,r)=>r.consistency-e.consistency):[],[c,M]),ae=d.useMemo(()=>[C("name","Region",e=>e.name),u("count","Count",e=>e.count),u("percentage","% of Total",e=>e.percentage,{suffix:"%",maximumFractionDigits:0})],[]),se=d.useMemo(()=>[C("name","Type",e=>e.name),u("count","Count",e=>e.count),u("percentage","% of Total",e=>e.percentage,{suffix:"%",maximumFractionDigits:0})],[]),Ve=d.useMemo(()=>[C("name","Source",e=>e.name),u("count","Count",e=>e.count),u("percentage","% of Total",e=>e.percentage,{suffix:"%",maximumFractionDigits:0})],[]),ne=d.useMemo(()=>[C("name","Model",e=>e.name),u("count","Count",e=>e.count),u("accuracy","Accuracy",e=>e.accuracy,{suffix:"%",maximumFractionDigits:0}),u("context","Context",e=>e.context,{suffix:"%",maximumFractionDigits:0}),u("usability","Usability",e=>e.usability,{suffix:"%",maximumFractionDigits:0}),u("totalScore","Total Score",e=>e.totalScore,{suffix:"%",maximumFractionDigits:0})],[]),re=d.useMemo(()=>[C("name","Model",e=>e.name),u("count","Count",e=>e.count),C("avgEditTime","Median Edit Time",e=>A(e.avgEditTime)),C("minEditTime","Min Edit Time",e=>A(e.minEditTime)),C("maxEditTime","Max Edit Time",e=>A(e.maxEditTime))],[]),ie=d.useMemo(()=>[C("name","Model",e=>e.name),u("count","Count",e=>e.count),u("avgPercentageModified","Median % Modified",e=>e.avgPercentageModified,{suffix:"%",maximumFractionDigits:0}),u("minPercentageModified","Min % Modified",e=>e.minPercentageModified,{suffix:"%",maximumFractionDigits:0}),u("maxPercentageModified","Max % Modified",e=>e.maxPercentageModified,{suffix:"%",maximumFractionDigits:0})],[]),oe=d.useMemo(()=>[C("name","Model",e=>e.name),u("count","Total Count",e=>e.count),u("deleteCount","Delete Count",e=>e.deleteCount),u("deleteRate","Delete Rate",e=>e.deleteRate,{suffix:"%",maximumFractionDigits:1})],[]),Ae=d.useMemo(()=>[C("source","Source",e=>e.source),u("avgQuality","Average Quality",e=>e.avgQuality,{suffix:"%",maximumFractionDigits:0}),u("count","Count",e=>e.count)],[]),ce=d.useMemo(()=>[C("eventType","Event Type",e=>e.eventType),u("avgQuality","Average Quality",e=>e.avgQuality,{suffix:"%",maximumFractionDigits:0}),u("count","Count",e=>e.count)],[]),le=d.useMemo(()=>[C("name","Model",e=>e.name),u("consistency","Consistency",e=>e.consistency,{suffix:"%",maximumFractionDigits:0}),u("avgScore","Average Score",e=>e.avgScore,{suffix:"%",maximumFractionDigits:0}),u("count","Count",e=>e.count)],[]),V=d.useCallback(e=>c?e==="crisis_map"?c.crisisMaps.length:e==="drone_image"?c.droneImages.length:0:0,[c]),de=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.countries&&a.countries.forEach(n=>{n.r_code&&(s[n.r_code]=(s[n.r_code]||0)+1)})}),Object.entries(s).filter(([,a])=>a>0).map(([a,n])=>({name:N.find(o=>o.r_code===a)?.label||a,value:n}))},[c,N]),ue=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};r.forEach(n=>{n.countries&&n.countries.forEach(o=>{o.r_code&&(s[o.r_code]=(s[o.r_code]||0)+1)})});const a=N.reduce((n,o)=>(o.r_code&&(n[o.r_code]={name:o.label,count:s[o.r_code]||0}),n),{});return Object.entries(a).sort(([,n],[,o])=>o.count-n.count).map(([,{name:n,count:o}],g)=>({id:g+1,name:n,count:o,percentage:r.length>0?Math.round(o/r.length*100):0}))},[c,N]),Re=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.source&&(s[a.source]=(s[a.source]||0)+1)}),Object.entries(s).filter(([,a])=>a>0).map(([a,n])=>({name:I.find(o=>o.s_code===a)?.label||a,value:n}))},[c,I]),Fe=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.source&&(s[a.source]=(s[a.source]||0)+1)}),Object.entries(s).sort(([,a],[,n])=>n-a).map(([a,n],o)=>({id:o+1,name:O(a),count:n,percentage:r.length>0?Math.round(n/r.length*100):0}))},[c,O]),me=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.event_type&&(s[a.event_type]=(s[a.event_type]||0)+1)}),Object.entries(s).filter(([,a])=>a>0).map(([a,n])=>({name:w.find(o=>o.t_code===a)?.label||a,value:n}))},[c,w]),ge=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.event_type&&(s[a.event_type]=(s[a.event_type]||0)+1)}),Object.entries(s).sort(([,a],[,n])=>n-a).map(([a,n],o)=>({id:o+1,name:Q(a),count:n,percentage:r.length>0?Math.round(n/r.length*100):0}))},[c,Q]),he=d.useCallback(e=>{if(!c)return"No data available";const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s=new Set;r.forEach(o=>{o.model&&s.add(o.model)}),console.log(`Debug ${e}:`,{totalImages:r.length,usedModels:Array.from(s),availableEditTimes:Object.keys(c.modelEditTimes),modelEditTimesData:c.modelEditTimes});const n=Object.entries(c.modelEditTimes).filter(([o])=>s.has(o)).flatMap(([,o])=>o);return n.length===0?"No data available":A(B(n))},[c,A,B]),fe=d.useCallback(()=>{if(!c)return"No data available";const e=c.totalCaptions||0,r=c.percentageModified||0;return e>0?Math.round(r/e*100):0},[c]),ye=d.useCallback(()=>c&&c.deleteRate>=0?`${c.deleteRate}%`:"No data available",[c]),xe=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s=new Set;return r.forEach(n=>{n.model&&s.add(n.model)}),Z.filter(n=>{const o=b.find(g=>g.label===n.name)?.m_code;return o&&s.has(o)})},[c,Z,b]),ve=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s=new Set;return r.forEach(n=>{n.model&&s.add(n.model)}),ee.filter(n=>{const o=b.find(g=>g.label===n.name)?.m_code;return o&&s.has(o)})},[c,ee,b]),Ce=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.model&&(s[a.model]||(s[a.model]={count:0,deleteCount:0}),s[a.model].count++)}),Object.entries(s).map(([a,n],o)=>{const y=c.models?.[a]?.deleteCount||0,x=n.count>0?Math.round(y/n.count*100*10)/10:0;return{id:o+1,name:M(a),count:n.count,deleteCount:y,deleteRate:x}}).sort((a,n)=>n.count-a.count)},[c,M]),_e=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.model&&(s[a.model]||(s[a.model]={count:0,totalAccuracy:0,totalContext:0,totalUsability:0}),s[a.model].count++,a.accuracy!=null&&(s[a.model].totalAccuracy+=a.accuracy),a.context!=null&&(s[a.model].totalContext+=a.context),a.usability!=null&&(s[a.model].totalUsability+=a.usability))}),Object.entries(s).map(([a,n],o)=>({id:o+1,name:M(a),count:n.count,accuracy:n.count>0?Math.round(n.totalAccuracy/n.count):0,context:n.count>0?Math.round(n.totalContext/n.count):0,usability:n.count>0?Math.round(n.totalUsability/n.count):0,totalScore:n.count>0?Math.round((n.totalAccuracy+n.totalContext+n.totalUsability)/(3*n.count)):0})).sort((a,n)=>n.totalScore-a.totalScore)},[c,M]),He=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.source&&(s[a.source]||(s[a.source]={total:0,count:0,totalImages:0}),s[a.source].totalImages+=1,a.accuracy!=null&&(s[a.source].total+=a.accuracy,s[a.source].count+=1))}),Object.entries(s).map(([a,n],o)=>({id:o+1,source:O(a),avgQuality:n.count>0?Math.round(n.total/n.count):0,count:n.totalImages}))},[c,O]),je=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s={};return r.forEach(a=>{a.event_type&&(s[a.event_type]||(s[a.event_type]={total:0,count:0,totalImages:0}),s[a.event_type].totalImages+=1,a.accuracy!=null&&(s[a.event_type].total+=a.accuracy,s[a.event_type].count+=1))}),Object.entries(s).map(([a,n],o)=>({id:o+1,eventType:Q(a),avgQuality:n.count>0?Math.round(n.total/n.count):0,count:n.totalImages}))},[c,Q]),pe=d.useCallback(e=>{if(!c)return[];const r=e==="crisis_map"?c.crisisMaps:c.droneImages,s=new Set;return r.forEach(n=>{n.model&&s.add(n.model)}),te.filter(n=>{const o=b.find(g=>g.label===n.name)?.m_code;return o&&s.has(o)})},[c,te,b]);if(Me)return t.jsx($,{children:t.jsx("div",{className:i.loadingContainer,children:t.jsx(Qe,{})})});if(!c)return t.jsx($,{children:t.jsx("div",{className:i.errorContainer,children:t.jsx("div",{className:"text-red-500",children:"Failed to load analytics data. Please try again."})})});const R=["#F5333F","#F64752","#F75C65","#F87079","#F9858C","#FA999F","#FBADB2","#FCC2C5"];return t.jsx($,{children:t.jsxs("div",{className:"max-w-7xl mx-auto",children:[t.jsx("div",{className:i.tabSelector,children:t.jsx(Ue,{name:"analytics-view",value:W,onChange:e=>{(e==="crisis_maps"||e==="drone_images")&&J(e)},options:Be,keySelector:e=>e.key,labelSelector:e=>e.label})}),W==="crisis_maps"?t.jsxs("div",{className:i.chartGrid,children:[t.jsxs(_,{heading:"Summary Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.summaryStatsCards,children:[t.jsxs("div",{className:i.summaryStatsCard,children:[t.jsx("div",{className:i.summaryStatsCardValue,children:V("crisis_map")}),t.jsx("div",{className:i.summaryStatsCardLabel,children:"Total Crisis Maps"})]}),t.jsxs("div",{className:i.summaryStatsCard,children:[t.jsx("div",{className:i.summaryStatsCardValue,children:"2000"}),t.jsx("div",{className:i.summaryStatsCardLabel,children:"Target Amount"})]})]}),t.jsxs("div",{className:i.progressSection,children:[t.jsxs("div",{className:i.progressLabel,children:[t.jsx("span",{children:"Progress towards target"}),t.jsxs("span",{children:[Math.round(V("crisis_map")/2e3*100),"%"]})]}),t.jsx(be,{value:V("crisis_map"),totalValue:2e3})]})]}),t.jsxs(_,{heading:"Distribution Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.userInteractionCards,children:[t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardLabel,children:"Regions Distribution"}),t.jsx("div",{className:i.chartContainer,children:t.jsx(F,{data:de("crisis_map"),valueSelector:e=>e.value,labelSelector:e=>e.name,keySelector:e=>e.name,colors:R,showPercentageInLegend:!0})}),t.jsx(p,{name:"view-regions-details",variant:P?"primary":"secondary",onClick:()=>j(P?"none":"regions"),className:i.userInteractionCardButton,children:P?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardLabel,children:"Sources Distribution"}),t.jsx("div",{className:i.chartContainer,children:t.jsx(F,{data:Re("crisis_map"),valueSelector:e=>e.value,labelSelector:e=>e.name,keySelector:e=>e.name,colors:R,showPercentageInLegend:!0})}),t.jsx(p,{name:"view-sources-details",variant:H?"primary":"secondary",onClick:()=>j(H?"none":"sources"),className:i.userInteractionCardButton,children:H?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardLabel,children:"Types Distribution"}),t.jsx("div",{className:i.chartContainer,children:t.jsx(F,{data:me("crisis_map"),valueSelector:e=>e.value,labelSelector:e=>e.name,keySelector:e=>e.name,colors:R,showPercentageInLegend:!0})}),t.jsx(p,{name:"view-types-details",variant:E?"primary":"secondary",onClick:()=>j(E?"none":"types"),className:i.userInteractionCardButton,children:E?"Hide Details":"View Details"})]})]}),P&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ue("crisis_map"),columns:ae,keySelector:f,filtered:!1,pending:!1})}),H&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:Fe("crisis_map"),columns:Ve,keySelector:f,filtered:!1,pending:!1})}),E&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ge("crisis_map"),columns:se,keySelector:f,filtered:!1,pending:!1})})]}),t.jsxs(_,{heading:"User Interaction Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.userInteractionCards,children:[t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:he("crisis_map")}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Median Edit Time"}),t.jsx(p,{name:"view-edit-time-details",variant:D?"primary":"secondary",onClick:()=>j(D?"none":"editTime"),className:i.userInteractionCardButton,children:D?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:fe()}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Median % Modified"}),t.jsx(p,{name:"view-percentage-details",variant:T?"primary":"secondary",onClick:()=>j(T?"none":"percentage"),className:i.userInteractionCardButton,children:T?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:ye()}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Delete Rate"}),t.jsx(p,{name:"view-delete-details",variant:k?"primary":"secondary",onClick:()=>j(k?"none":"delete"),className:i.userInteractionCardButton,children:k?"Hide Details":"View Details"})]})]}),D&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:xe("crisis_map"),columns:re,keySelector:f,filtered:!1,pending:!1})}),T&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ve("crisis_map"),columns:ie,keySelector:f,filtered:!1,pending:!1})}),k&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:Ce("crisis_map"),columns:oe,keySelector:f,filtered:!1,pending:!1})})]}),t.jsx(_,{heading:"Model Performance",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:_e("crisis_map"),columns:ne,keySelector:f,filtered:!1,pending:!1})})}),t.jsx(_,{heading:"Quality-Source Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.tableContainer,children:t.jsx(h,{data:He("crisis_map"),columns:Ae,keySelector:f,filtered:!1,pending:!1})})}),t.jsx(_,{heading:"Quality-Event Type Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.tableContainer,children:t.jsx(h,{data:je("crisis_map"),columns:ce,keySelector:f,filtered:!1,pending:!1})})}),t.jsx(_,{heading:"Model Consistency Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.tableContainer,children:t.jsx(h,{data:pe("crisis_map"),columns:le,keySelector:f,filtered:!1,pending:!1})})})]}):t.jsxs("div",{className:i.chartGrid,children:[t.jsxs(_,{heading:"Summary Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.summaryStatsCards,children:[t.jsxs("div",{className:i.summaryStatsCard,children:[t.jsx("div",{className:i.summaryStatsCardValue,children:V("drone_image")}),t.jsx("div",{className:i.summaryStatsCardLabel,children:"Total Drone Images"})]}),t.jsxs("div",{className:i.summaryStatsCard,children:[t.jsx("div",{className:i.summaryStatsCardValue,children:"2000"}),t.jsx("div",{className:i.summaryStatsCardLabel,children:"Target Amount"})]})]}),t.jsxs("div",{className:i.progressSection,children:[t.jsxs("div",{className:i.progressLabel,children:[t.jsx("span",{children:"Progress towards target"}),t.jsxs("span",{children:[Math.round(V("drone_image")/2e3*100),"%"]})]}),t.jsx(be,{value:V("drone_image"),totalValue:2e3})]})]}),t.jsxs(_,{heading:"Distribution Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.userInteractionCards,children:[t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardLabel,children:"Regions Distribution"}),t.jsx("div",{className:i.chartContainer,children:t.jsx(F,{data:de("drone_image"),valueSelector:e=>e.value,labelSelector:e=>e.name,keySelector:e=>e.name,colors:R,showPercentageInLegend:!0})}),t.jsx(p,{name:"view-regions-details",variant:P?"primary":"secondary",onClick:()=>j(P?"none":"regions"),className:i.userInteractionCardButton,children:P?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardLabel,children:"Types Distribution"}),t.jsx("div",{className:i.chartContainer,children:t.jsx(F,{data:me("drone_image"),valueSelector:e=>e.value,labelSelector:e=>e.name,keySelector:e=>e.name,colors:R,showPercentageInLegend:!0})}),t.jsx(p,{name:"view-types-details",variant:E?"primary":"secondary",onClick:()=>j(E?"none":"types"),className:i.userInteractionCardButton,children:E?"Hide Details":"View Details"})]})]}),P&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ue("drone_image"),columns:ae,keySelector:f,filtered:!1,pending:!1})}),E&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ge("drone_image"),columns:se,keySelector:f,filtered:!1,pending:!1})})]}),t.jsxs(_,{heading:"User Interaction Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[t.jsxs("div",{className:i.userInteractionCards,children:[t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:he("drone_image")}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Median Edit Time"}),t.jsx(p,{name:"view-edit-time-details",variant:D?"primary":"secondary",onClick:()=>j(D?"none":"editTime"),className:i.userInteractionCardButton,children:D?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:fe()}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Median % Modified"}),t.jsx(p,{name:"view-percentage-details",variant:T?"primary":"secondary",onClick:()=>j(T?"none":"percentage"),className:i.userInteractionCardButton,children:T?"Hide Details":"View Details"})]}),t.jsxs("div",{className:i.userInteractionCard,children:[t.jsx("div",{className:i.userInteractionCardValue,children:ye()}),t.jsx("div",{className:i.userInteractionCardLabel,children:"Delete Rate"}),t.jsx(p,{name:"view-delete-details",variant:k?"primary":"secondary",onClick:()=>j(k?"none":"delete"),className:i.userInteractionCardButton,children:k?"Hide Details":"View Details"})]})]}),D&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:xe("drone_image"),columns:re,keySelector:f,filtered:!1,pending:!1})}),T&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:ve("drone_image"),columns:ie,keySelector:f,filtered:!1,pending:!1})}),k&&t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:Ce("drone_image"),columns:oe,keySelector:f,filtered:!1,pending:!1})})]}),t.jsx(_,{heading:"Model Performance",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.modelPerformance,children:t.jsx(h,{data:_e("drone_image"),columns:ne,keySelector:f,filtered:!1,pending:!1})})}),t.jsx(_,{heading:"Quality-Event Type Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.tableContainer,children:t.jsx(h,{data:je("drone_image"),columns:ce,keySelector:f,filtered:!1,pending:!1})})}),t.jsx(_,{heading:"Model Consistency Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:t.jsx("div",{className:i.tableContainer,children:t.jsx(h,{data:pe("drone_image"),columns:le,keySelector:f,filtered:!1,pending:!1})})})]})]})})}export{ut as default};
 
 
py_backend/static/assets/index-DyXqjI96.js DELETED
@@ -1,17 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DMU6q_dg.js","assets/vendor-react-BxsGb6Ph.js","assets/vendor-DxpCibxB.js","assets/vendor-ui-l_DttnRj.js","assets/vendor-ui-DpEM1HT6.css","assets/index-BsrMOmjk.css","assets/index-Bj6KcvNd.js","assets/useAdmin-BStaIYmd.js","assets/ExportModal-DxEvAVvI.js","assets/ExportModal-BoB3JpqO.css","assets/index-BzPMJFRS.css","assets/AdminPage-C_7rpuzO.js","assets/AdminPage-VgSjQ50W.css","assets/index-iAxVbTZE.js","assets/index-tDgjKyWF.css"])))=>i.map(i=>d[i]);
2
- import{r as a,j as e,L as zt,u as Ot,c as $t,R as Bt,b as Ut}from"./vendor-react-BxsGb6Ph.js";import{N as ln,G as Wt,U as Fn,S as Ht,A as Vt,z as U,n as w,M as Gt,Q as qt,a as Yt,b as Zt,L as Kt,B as cn,D as dn,C as Jt,c as Qt,O as D,f as J,d as Ln,e as Xt,_ as rn,R as te,l as ea,t as na}from"./vendor-ui-l_DttnRj.js";import{u as ta,a as un,O as aa,k as sa}from"./vendor-DxpCibxB.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))p(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&p(_)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function p(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();const ia="modulepreload",oa=function(i){return"/"+i},Tn={},B=function(s,o,p){let c=Promise.resolve();if(o&&o.length>0){let S=function(x){return Promise.all(x.map(l=>Promise.resolve(l).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};document.getElementsByTagName("link");const _=document.querySelector("meta[property=csp-nonce]"),C=_?.nonce||_?.getAttribute("nonce");c=S(o.map(x=>{if(x=oa(x),x in Tn)return;Tn[x]=!0;const l=x.endsWith(".css"),b=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${b}`))return;const M=document.createElement("link");if(M.rel=l?"stylesheet":ia,l||(M.as="script"),M.crossOrigin="",M.href=x,C&&M.setAttribute("nonce",C),document.head.appendChild(M),l)return new Promise((E,j)=>{M.addEventListener("load",E),M.addEventListener("error",()=>j(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(_){const C=new Event("vite:preloadError",{cancelable:!0});if(C.payload=_,window.dispatchEvent(C),!C.defaultPrevented)throw _}return c.then(_=>{for(const C of _||[])C.status==="rejected"&&d(C.reason);return s().catch(d)})},ra="_dropdownContainer_1six7_3",la="_dropdownMenu_1six7_15",ca="_dropdownContent_1six7_43",on={dropdownContainer:ra,dropdownMenu:la,dropdownContent:ca},da=[{to:"/upload",label:"Upload",Icon:Fn},{to:"/explore",label:"Explore",Icon:Ht},{to:"/analytics",label:"Analytics",Icon:Vt}];function ua(){const i=ta(),s=un(),[o,p]=a.useState(!1),c=a.useRef(null);return a.useEffect(()=>{const d=_=>{c.current&&!c.current.contains(_.target)&&p(!1)};return document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d)}},[]),e.jsx("nav",{className:"border-b border-gray-200 bg-white shadow-sm sticky top-0 z-50 backdrop-blur-sm bg-white/95",children:e.jsxs(ln,{className:"border-b-2 border-ifrcRed",contentClassName:"grid grid-cols-3 items-center py-6",children:[e.jsxs("div",{className:"flex items-center gap-4 min-w-0 cursor-pointer group transition-all duration-200 hover:scale-105",onClick:()=>{if(!(i.pathname==="/upload"||i.pathname==="/")){if(i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/")}},children:[e.jsx("div",{className:"p-2 rounded-lg bg-gradient-to-br from-ifrcRed/10 to-ifrcRed/20 group-hover:from-ifrcRed/20 group-hover:to-ifrcRed/30 transition-all duration-200",children:e.jsx(Wt,{className:"h-8 w-8 flex-shrink-0 text-ifrcRed"})}),e.jsx("div",{className:"flex flex-col",children:e.jsx("span",{className:"font-bold text-xl text-gray-900 leading-tight",children:"PromptAid Vision"})})]}),e.jsx("div",{className:"flex justify-center",children:e.jsx("nav",{className:"flex items-center space-x-4 bg-gray-50/80 rounded-xl p-2 backdrop-blur-sm",children:da.map(({to:d,label:_,Icon:C})=>{const S=i.pathname===d||d==="/upload"&&i.pathname==="/"||d==="/explore"&&i.pathname.startsWith("/map/"),x=i.pathname==="/upload"||i.pathname==="/",l=d==="/upload"||d==="/";return e.jsxs("div",{className:"relative",children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:_.toLowerCase(),variant:S?"primary":"tertiary",size:1,className:`transition-all duration-200 ${S?"shadow-lg shadow-ifrcRed/20 transform scale-105":"hover:bg-white hover:shadow-md hover:scale-105"}`,onClick:()=>{if(!(x&&l)){if(i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded(d);return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s(d)}},children:[e.jsx(C,{className:`w-4 h-4 transition-transform duration-200 ${S?"scale-110":"group-hover:scale-110"}`}),e.jsx("span",{className:"inline ml-2 font-semibold",children:_})]})}),S&&e.jsx("div",{className:"absolute -bottom-2 left-1/2 transform -translate-x-1/2 w-8 h-1 bg-ifrcRed rounded-full animate-pulse"})]},d)})})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("div",{className:on.dropdownContainer,ref:c,children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsx(w,{name:"more-options",variant:o?"primary":"tertiary",size:1,className:"transition-all duration-200",onClick:()=>p(!o),children:e.jsx(Gt,{className:"w-4 h-4"})})}),o&&e.jsx("div",{className:on.dropdownMenu,children:e.jsxs("div",{className:on.dropdownContent,children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:"help-support",variant:"tertiary",size:1,className:"w-full justify-start",onClick:()=>{if(p(!1),i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/help");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/help")},children:[e.jsx(qt,{className:"w-4 h-4"}),e.jsx("span",{className:"ml-2 font-semibold",children:"Help & Support"})]})}),e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:"dev",variant:"tertiary",size:1,className:"w-full justify-start",onClick:()=>{if(p(!1),i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/admin");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/admin")},children:[e.jsx(Yt,{className:"w-4 h-4"}),e.jsx("span",{className:"ml-2 font-semibold",children:"Dev"})]})})]})})]})})]})})}function ga(){return e.jsxs(e.Fragment,{children:[e.jsx(ua,{}),e.jsx(aa,{})]})}const pa="_uploadContainer_1w5i1_1",ma="_dropZone_1w5i1_9",ha="_hasFile_1w5i1_30",fa="_dropZoneIcon_1w5i1_37",xa="_dropZoneText_1w5i1_43",va="_dropZoneSubtext_1w5i1_49",_a="_filePreview_1w5i1_55",ja="_filePreviewImage_1w5i1_64",wa="_fileName_1w5i1_110",Ca="_fileInfo_1w5i1_118",ya="_helpLink_1w5i1_125",Sa="_loadingContainer_1w5i1_145",ba="_loadingText_1w5i1_153",Na="_generateButtonContainer_1w5i1_157",ka="_uploadedMapContainer_1w5i1_165",Ia="_uploadedMapImage_1w5i1_169",Ma="_formGrid_1w5i1_209",La="_titleField_1w5i1_222",Ta="_ratingDescription_1w5i1_230",Da="_ratingSlider_1w5i1_235",Ea="_ratingLabel_1w5i1_242",Pa="_ratingInput_1w5i1_251",Fa="_ratingValue_1w5i1_256",Ra="_submitSection_1w5i1_266",Aa="_successContainer_1w5i1_275",za="_successHeading_1w5i1_280",Oa="_successText_1w5i1_285",$a="_successButton_1w5i1_291",Ba="_viewFullSizeButton_1w5i1_297",Ua="_fullSizeModalOverlay_1w5i1_306",Wa="_lightModalOverlay_1w5i1_320",Ha="_fullSizeModalContent_1w5i1_334",Va="_fullSizeModalHeader_1w5i1_345",Ga="_fullSizeModalImage_1w5i1_361",qa="_confirmSection_1w5i1_398",Ya="_step2Layout_1w5i1_407",Za="_topRow_1w5i1_413",Ka="_ratingHidden_1w5i1_421",Ja="_imageSection_1w5i1_425",Qa="_ratingContent_1w5i1_435",Xa="_mapColumn_1w5i1_453",es="_contentColumn_1w5i1_458",ns="_step2bLayout_1w5i1_465",ts="_metadataSectionCard_1w5i1_562",as="_droneMetadataSection_1w5i1_571",ss="_droneMetadataHeading_1w5i1_577",is="_droneMetadataGrid_1w5i1_585",os="_rtkFixContainer_1w5i1_591",rs="_rtkFixLabel_1w5i1_597",ls="_rtkFixCheckbox_1w5i1_606",cs="_confirmButtonContainer_1w5i1_621",ds="_ratingWarningContent_1w5i1_629",us="_ratingWarningTitle_1w5i1_637",gs="_ratingWarningText_1w5i1_644",ps="_ratingWarningButtons_1w5i1_651",ms="_preprocessingProgress_1w5i1_658",hs="_carouselContainer_1w5i1_711",fs="_carouselImageWrapper_1w5i1_716",xs="_carouselImage_1w5i1_716",vs="_carouselNavigation_1w5i1_739",_s="_carouselButton_1w5i1_751",js="_carouselIndicators_1w5i1_775",ws="_carouselIndicator_1w5i1_775",Cs="_carouselIndicatorActive_1w5i1_804",ys="_viewImageButtonContainer_1w5i1_840",t={uploadContainer:pa,dropZone:ma,hasFile:ha,dropZoneIcon:fa,dropZoneText:xa,dropZoneSubtext:va,filePreview:_a,filePreviewImage:ja,fileName:wa,fileInfo:Ca,helpLink:ya,loadingContainer:Sa,loadingText:ba,generateButtonContainer:Na,uploadedMapContainer:ka,uploadedMapImage:Ia,formGrid:Ma,titleField:La,ratingDescription:Ta,ratingSlider:Da,ratingLabel:Ea,ratingInput:Pa,ratingValue:Fa,submitSection:Ra,successContainer:Aa,successHeading:za,successText:Oa,successButton:$a,viewFullSizeButton:Ba,fullSizeModalOverlay:Ua,lightModalOverlay:Wa,fullSizeModalContent:Ha,fullSizeModalHeader:Va,fullSizeModalImage:Ga,confirmSection:qa,step2Layout:Ya,topRow:Za,ratingHidden:Ka,imageSection:Ja,ratingContent:Qa,mapColumn:Xa,contentColumn:es,step2bLayout:ns,metadataSectionCard:ts,droneMetadataSection:as,droneMetadataHeading:ss,droneMetadataGrid:is,rtkFixContainer:os,rtkFixLabel:rs,rtkFixCheckbox:ls,confirmButtonContainer:cs,ratingWarningContent:ds,ratingWarningTitle:us,ratingWarningText:gs,ratingWarningButtons:ps,preprocessingProgress:ms,carouselContainer:hs,carouselImageWrapper:fs,carouselImage:xs,carouselNavigation:vs,carouselButton:_s,carouselIndicators:js,carouselIndicator:ws,carouselIndicatorActive:Cs,viewImageButtonContainer:ys},Rn=a.createContext(void 0),Ss=({children:i})=>{const[s,o]=a.useState(""),[p,c]=a.useState(""),[d,_]=a.useState(""),[C,S]=a.useState(""),[x,l]=a.useState(""),[b,M]=a.useState(""),[E,j]=a.useState(""),[F,A]=a.useState(!1),L={search:s,srcFilter:p,catFilter:d,regionFilter:C,countryFilter:x,imageTypeFilter:b,uploadTypeFilter:E,showReferenceExamples:F,setSearch:o,setSrcFilter:c,setCatFilter:_,setRegionFilter:S,setCountryFilter:l,setImageTypeFilter:M,setUploadTypeFilter:j,setShowReferenceExamples:A,clearAllFilters:()=>{o(""),c(""),_(""),S(""),l(""),M(""),j(""),A(!1)}};return e.jsx(Rn.Provider,{value:L,children:i})},bs=()=>{const i=a.useContext(Rn);if(i===void 0)throw new Error("useFilterContext must be used within a FilterProvider");return i};function Dn({files:i,file:s,preview:o,imageType:p,onFileChange:c,onRemoveImage:d,onAddImage:_,onImageTypeChange:C,onChangeFile:S}){const x=l=>{l.preventDefault();const b=l.dataTransfer.files?.[0];b&&c(b)};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-gray-700 leading-relaxed max-w-2xl mx-auto",children:"This app evaluates how well multimodal AI models analyze and describe crisis maps and drone imagery. Upload an image and the AI will generate a description. Then you can review and rate the result based on your expertise."}),e.jsx("div",{className:t.helpLink,children:e.jsxs(zt,{to:"/help",className:t.helpLink,children:["More ",e.jsx(Zt,{className:"w-3 h-3"})]})}),e.jsx("div",{className:"flex justify-center",children:e.jsx(U,{withInternalPadding:!0,className:"bg-transparent border-none shadow-none",children:e.jsx(Kt,{name:"image-type",value:p,onChange:l=>C(l),options:[{key:"crisis_map",label:"Crisis Maps"},{key:"drone_image",label:"Drone Imagery"}],keySelector:l=>l.key,labelSelector:l=>l.label})})}),e.jsxs("div",{className:`${t.dropZone} ${s?t.hasFile:""}`,onDragOver:l=>l.preventDefault(),onDrop:x,children:[i.length>1?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4 mb-4",children:i.map((l,b)=>e.jsxs("div",{className:"relative",children:[e.jsx("img",{src:URL.createObjectURL(l),alt:`Image ${b+1}`,className:"w-full h-32 object-cover rounded"}),e.jsx(cn,{name:"remove-image",variant:"tertiary",onClick:()=>d(b),title:"Remove image",ariaLabel:"Remove image",className:"absolute top-2 right-2 bg-white/90 hover:bg-white shadow-md hover:shadow-lg border border-gray-200 hover:border-red-300 transition-all duration-200 backdrop-blur-sm",children:e.jsx(dn,{className:"w-4 h-4"})}),e.jsx("div",{className:"text-xs text-center mt-1",children:l.name})]},b))}):s&&o?e.jsxs("div",{className:t.filePreview,children:[e.jsx("div",{className:t.filePreviewImage,children:e.jsx("img",{src:o,alt:"File preview"})}),e.jsx("p",{className:t.fileName,children:s.name}),e.jsxs("p",{className:t.fileInfo,children:[(s.size/1024/1024).toFixed(2)," MB"]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Fn,{className:t.dropZoneIcon}),e.jsx("p",{className:t.dropZoneText,children:"Drag & Drop any file here"}),e.jsx("p",{className:t.dropZoneSubtext,children:"or"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("label",{className:"inline-block cursor-pointer",children:[e.jsx("input",{type:"file",className:"sr-only",accept:".jpg,.jpeg,.png,.tiff,.tif,.heic,.heif,.webp,.gif,.pdf",onChange:l=>{s&&S?S(l.target.files?.[0]):c(l.target.files?.[0])}}),e.jsx(w,{name:"upload",variant:"secondary",size:1,onClick:()=>document.querySelector('input[type="file"]')?.click(),children:s?"Change Image":"Browse Files"})]}),s&&i.length<5&&e.jsx(w,{name:"add-image",variant:"secondary",size:1,onClick:_,children:"Add Image"})]})]})]})}function En({files:i,imageUrl:s,preview:o,onViewFullSize:p,currentImageIndex:c=0,onGoToPrevious:d,onGoToNext:_,onGoToImage:C,showCarousel:S=!1}){return S&&i.length>1?e.jsx(U,{heading:"Uploaded Images",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.carouselContainer,children:[e.jsx("div",{className:t.carouselImageWrapper,children:i[c]?e.jsx("img",{src:URL.createObjectURL(i[c]),alt:`Image ${c+1}`,className:t.carouselImage}):e.jsx("div",{className:t.imagePlaceholder,children:"No image available"})}),e.jsxs("div",{className:t.carouselNavigation,children:[e.jsx(w,{name:"previous-image",variant:"tertiary",size:1,onClick:d,className:t.carouselButton,children:e.jsx(Jt,{className:"w-4 h-4"})}),e.jsx("div",{className:t.carouselIndicators,children:i.map((x,l)=>e.jsx("button",{onClick:()=>C?.(l),className:`${t.carouselIndicator} ${l===c?t.carouselIndicatorActive:""}`,children:l+1},l))}),e.jsx(w,{name:"next-image",variant:"tertiary",size:1,onClick:_,className:t.carouselButton,children:e.jsx(Qt,{className:"w-4 h-4"})})]}),e.jsx("div",{className:t.viewImageButtonContainer,children:e.jsx(w,{name:"view-full-size-carousel",variant:"secondary",size:1,onClick:()=>p({file:i[c],index:c}),disabled:!i[c],children:"View Image"})})]})}):i.length>1?e.jsx("div",{className:"space-y-6",children:i.map((x,l)=>e.jsx(U,{heading:`Image ${l+1}: ${x.name}`,headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.uploadedMapContainer,children:[e.jsx("div",{className:t.uploadedMapImage,children:e.jsx("img",{src:URL.createObjectURL(x),alt:`Image ${l+1}`})}),e.jsx("div",{className:t.viewFullSizeButton,children:e.jsx(w,{name:`view-full-size-${l}`,variant:"secondary",size:1,onClick:()=>p({file:x,index:l}),children:"View Image"})})]})},l))}):e.jsx(U,{heading:"Uploaded Image",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.uploadedMapContainer,children:[e.jsx("div",{className:t.uploadedMapImage,children:e.jsx("img",{src:s||o||void 0,alt:"Uploaded image preview"})}),e.jsx("div",{className:t.viewFullSizeButton,children:e.jsx(w,{name:"view-full-size",variant:"secondary",size:1,onClick:()=>p(),children:"View Image"})})]})})}function Ns({files:i,imageType:s,title:o,source:p,eventType:c,epsg:d,countries:_,centerLon:C,centerLat:S,amslM:x,aglM:l,headingDeg:b,yawDeg:M,pitchDeg:E,rollDeg:j,rtkFix:F,stdHM:A,stdVM:z,metadataArray:L,sources:G,types:q,spatialReferences:Y,imageTypes:R,countriesOptions:Q,onTitleChange:Z,onSourceChange:ae,onEventTypeChange:K,onEpsgChange:se,onCountriesChange:ie,onCenterLonChange:oe,onCenterLatChange:re,onAmslMChange:le,onAglMChange:ce,onHeadingDegChange:de,onYawDegChange:ue,onPitchDegChange:ge,onRollDegChange:pe,onRtkFixChange:me,onStdHMChange:he,onStdVMChange:fe,onImageTypeChange:xe,updateMetadataForImage:P}){return i.length>1?e.jsxs("div",{children:[e.jsx("div",{className:"mb-4",children:e.jsx(D,{label:"Shared Title",name:"title",value:o,onChange:Z,placeholder:"Enter a title for all images...",required:!0})}),i.map((N,m)=>e.jsx("div",{className:"mb-6",children:e.jsx(U,{heading:`Image ${m+1}: ${N.name}`,headingLevel:4,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.formGrid,children:[s!=="drone_image"&&e.jsx(J,{label:"Source",name:`source_${m}`,value:L[m]?.source||"",onChange:h=>P(m,"source",h),options:G,keySelector:h=>h.s_code,labelSelector:h=>h.label,required:!0}),e.jsx(J,{label:"Event Type",name:`event_type_${m}`,value:L[m]?.eventType||"",onChange:h=>P(m,"eventType",h),options:q,keySelector:h=>h.t_code,labelSelector:h=>h.label,required:s!=="drone_image"}),e.jsx(J,{label:"EPSG",name:`epsg_${m}`,value:L[m]?.epsg||"",onChange:h=>P(m,"epsg",h),options:Y,keySelector:h=>h.epsg,labelSelector:h=>`${h.srid} (EPSG:${h.epsg})`,placeholder:"EPSG",required:s!=="drone_image"}),e.jsx(Ln,{label:"Countries (optional)",name:`countries_${m}`,value:L[m]?.countries||[],onChange:h=>P(m,"countries",h),options:Q,keySelector:h=>h.c_code,labelSelector:h=>h.label,placeholder:"Select one or more"}),s==="drone_image"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:t.droneMetadataSection,children:[e.jsx("h4",{className:t.droneMetadataHeading,children:"Drone Flight Data"}),e.jsxs("div",{className:t.droneMetadataGrid,children:[e.jsx(D,{label:"Center Longitude",name:`center_lon_${m}`,value:L[m]?.centerLon||"",onChange:h=>P(m,"centerLon",h),placeholder:"e.g., -122.4194",step:"any"}),e.jsx(D,{label:"Center Latitude",name:`center_lat_${m}`,value:L[m]?.centerLat||"",onChange:h=>P(m,"centerLat",h),placeholder:"e.g., 37.7749",step:"any"}),e.jsx(D,{label:"Altitude AMSL (m)",name:`amsl_m_${m}`,value:L[m]?.amslM||"",onChange:h=>P(m,"amslM",h),placeholder:"e.g., 100.5",step:"any"}),e.jsx(D,{label:"Altitude AGL (m)",name:`agl_m_${m}`,value:L[m]?.aglM||"",onChange:h=>P(m,"aglM",h),placeholder:"e.g., 50.2",step:"any"}),e.jsx(D,{label:"Heading (degrees)",name:`heading_deg_${m}`,value:L[m]?.headingDeg||"",onChange:h=>P(m,"headingDeg",h),placeholder:"e.g., 180.0",step:"any"}),e.jsx(D,{label:"Yaw (degrees)",name:`yaw_deg_${m}`,value:L[m]?.yawDeg||"",onChange:h=>P(m,"yawDeg",h),placeholder:"e.g., 90.0",step:"any"}),e.jsx(D,{label:"Pitch (degrees)",name:`pitch_deg_${m}`,value:L[m]?.pitchDeg||"",onChange:h=>P(m,"pitchDeg",h),placeholder:"e.g., 0.0",step:"any"}),e.jsx(D,{label:"Roll (degrees)",name:`roll_deg_${m}`,value:L[m]?.rollDeg||"",onChange:h=>P(m,"rollDeg",h),placeholder:"e.g., 0.0",step:"any"}),e.jsx("div",{className:t.rtkFixContainer,children:e.jsxs("label",{className:t.rtkFixLabel,children:[e.jsx("input",{type:"checkbox",checked:L[m]?.rtkFix||!1,onChange:h=>P(m,"rtkFix",h.target.checked),className:t.rtkFixCheckbox}),"RTK Fix Available"]})}),e.jsx(D,{label:"Horizontal Std Dev (m)",name:`std_h_m_${m}`,value:L[m]?.stdHM||"",onChange:h=>P(m,"stdHM",h),placeholder:"e.g., 0.1",step:"any"}),e.jsx(D,{label:"Vertical Std Dev (m)",name:`std_v_m_${m}`,value:L[m]?.stdVM||"",onChange:h=>P(m,"stdVM",h),placeholder:"e.g., 0.2",step:"any"})]})]})})]})})},m))]}):e.jsxs("div",{className:t.formGrid,children:[e.jsx("div",{className:t.titleField,children:e.jsx(D,{label:"Title",name:"title",value:o,onChange:Z,placeholder:"Enter a title for this map...",required:!0})}),s!=="drone_image"&&e.jsx(J,{label:"Source",name:"source",value:p,onChange:ae,options:G,keySelector:N=>N.s_code,labelSelector:N=>N.label,required:!0}),e.jsx(J,{label:"Event Type",name:"event_type",value:c,onChange:K,options:q,keySelector:N=>N.t_code,labelSelector:N=>N.label,required:s!=="drone_image"}),e.jsx(J,{label:"EPSG",name:"epsg",value:d,onChange:se,options:Y,keySelector:N=>N.epsg,labelSelector:N=>`${N.srid} (EPSG:${N.epsg})`,placeholder:"EPSG",required:s!=="drone_image"}),e.jsx(J,{label:"Image Type",name:"image_type",value:s,onChange:xe,options:R,keySelector:N=>N.image_type,labelSelector:N=>N.label,required:!0}),e.jsx(Ln,{label:"Countries (optional)",name:"countries",value:_,onChange:ie,options:Q,keySelector:N=>N.c_code,labelSelector:N=>N.label,placeholder:"Select one or more"}),s==="drone_image"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:t.droneMetadataSection,children:[e.jsx("h4",{className:t.droneMetadataHeading,children:"Drone Flight Data"}),e.jsxs("div",{className:t.droneMetadataGrid,children:[e.jsx(D,{label:"Center Longitude",name:"center_lon",value:C,onChange:oe,placeholder:"e.g., -122.4194",step:"any"}),e.jsx(D,{label:"Center Latitude",name:"center_lat",value:S,onChange:re,placeholder:"e.g., 37.7749",step:"any"}),e.jsx(D,{label:"Altitude AMSL (m)",name:"amsl_m",value:x,onChange:le,placeholder:"e.g., 100.5",step:"any"}),e.jsx(D,{label:"Altitude AGL (m)",name:"agl_m",value:l,onChange:ce,placeholder:"e.g., 50.2",step:"any"}),e.jsx(D,{label:"Heading (degrees)",name:"heading_deg",value:b,onChange:de,placeholder:"e.g., 180.0",step:"any"}),e.jsx(D,{label:"Yaw (degrees)",name:"yaw_deg",value:M,onChange:ue,placeholder:"e.g., 90.0",step:"any"}),e.jsx(D,{label:"Pitch (degrees)",name:"pitch_deg",value:E,onChange:ge,placeholder:"e.g., 0.0",step:"any"}),e.jsx(D,{label:"Roll (degrees)",name:"roll_deg",value:j,onChange:pe,placeholder:"e.g., 0.0",step:"any"}),e.jsx("div",{className:t.rtkFixContainer,children:e.jsxs("label",{className:t.rtkFixLabel,children:[e.jsx("input",{type:"checkbox",checked:F,onChange:N=>me(N.target.checked),className:t.rtkFixCheckbox}),"RTK Fix Available"]})}),e.jsx(D,{label:"Horizontal Std Dev (m)",name:"std_h_m",value:A,onChange:he,placeholder:"e.g., 0.1",step:"any"}),e.jsx(D,{label:"Vertical Std Dev (m)",name:"std_v_m",value:z,onChange:fe,placeholder:"e.g., 0.2",step:"any"})]})]})})]})}function ks({isPerformanceConfirmed:i,scores:s,onScoreChange:o,onConfirmRatings:p,onEditRatings:c}){return i?null:e.jsx(U,{heading:"AI Performance Rating",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.ratingContent,children:[e.jsx("p",{className:t.ratingDescription,children:"How well did the AI perform on the task?"}),["accuracy","context","usability"].map(d=>e.jsxs("div",{className:t.ratingSlider,children:[e.jsx("label",{className:t.ratingLabel,children:d}),e.jsx("input",{type:"range",min:0,max:100,value:s[d],onChange:_=>o(d,Number(_.target.value)),className:t.ratingInput}),e.jsx("span",{className:t.ratingValue,children:s[d]})]},d)),e.jsx("div",{className:t.confirmButtonContainer,children:e.jsx(w,{name:"confirm-ratings",variant:"secondary",onClick:p,children:"Confirm Ratings"})})]})})}function Is({description:i,analysis:s,recommendedActions:o,onDescriptionChange:p,onAnalysisChange:c,onRecommendedActionsChange:d,onBack:_,onDelete:C,onSubmit:S,onEditRatings:x,isPerformanceConfirmed:l=!1}){const b=M=>{if(M){const E=M.split(`
3
- `),j=E.findIndex(z=>z.startsWith("Description:")),F=E.findIndex(z=>z.startsWith("Analysis:")),A=E.findIndex(z=>z.startsWith("Recommended Actions:"));j!==-1&&F!==-1&&A!==-1&&(p(E.slice(j+1,F).join(`
4
- `).trim()),c(E.slice(F+1,A).join(`
5
- `).trim()),d(E.slice(A+1).join(`
6
- `).trim()))}};return e.jsxs(U,{heading:"Generated Text",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsx("div",{className:"text-left space-y-4",children:e.jsx("div",{children:e.jsx(Xt,{name:"generatedContent",value:`Description:
7
- ${i||"AI-generated description will appear here..."}
8
-
9
- Analysis:
10
- ${s||"AI-generated analysis will appear here..."}
11
-
12
- Recommended Actions:
13
- ${o||"AI-generated recommended actions will appear here..."}`,onChange:b,rows:12,placeholder:"AI-generated content will appear here..."})})}),e.jsxs("div",{className:t.submitSection,children:[e.jsx(w,{name:"back",variant:"secondary",onClick:_,children:"Back"}),l&&x&&e.jsx(w,{name:"edit-ratings",variant:"secondary",onClick:x,children:"Edit Ratings"}),e.jsx(cn,{name:"delete",variant:"tertiary",onClick:C,title:"Delete",ariaLabel:"Delete uploaded image",children:e.jsx(dn,{})}),e.jsx(w,{name:"submit",onClick:S,children:"Submit"})]})]})}function Ms({isOpen:i,imageUrl:s,preview:o,selectedImageData:p,onClose:c}){if(!i)return null;let d,_;return p?(d=URL.createObjectURL(p.file),_=`Image ${p.index+1}: ${p.file.name}`):(d=s||o||void 0,_="Full size map"),e.jsx("div",{className:t.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:t.fullSizeModalContent,onClick:C=>C.stopPropagation(),children:[e.jsx("div",{className:t.fullSizeModalHeader,children:e.jsx(w,{name:"close-modal",variant:"tertiary",size:1,onClick:c,children:"✕"})}),e.jsx("div",{className:t.fullSizeModalImage,children:e.jsx("img",{src:d,alt:_})})]})})}function Ls({isOpen:i,onClose:s}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:s,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:o=>o.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Please Confirm Your Ratings"}),e.jsx("p",{className:t.ratingWarningText,children:'You must confirm your performance ratings before submitting. Please go back to the rating section and click "Confirm Ratings".'}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-warning",variant:"secondary",onClick:s,children:"Close"})})]})})}):null}function Ts({isOpen:i,onConfirm:s,onCancel:o}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Delete Image?"}),e.jsx("p",{className:t.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this uploaded image?"}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-delete",variant:"secondary",onClick:s,children:"Delete"}),e.jsx(w,{name:"cancel-delete",variant:"tertiary",onClick:o,children:"Cancel"})]})]})})}):null}function Ds({isOpen:i,onConfirm:s,onCancel:o}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Leave Page?"}),e.jsx("p",{className:t.ratingWarningText,children:"Your uploaded image will be deleted if you leave this page. Are you sure you want to continue?"}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-navigation",variant:"secondary",onClick:s,children:"Leave Page"}),e.jsx(w,{name:"cancel-navigation",variant:"tertiary",onClick:o,children:"Stay"})]})]})})}):null}function Es({isOpen:i,fallbackInfo:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Model Changed"}),e.jsxs("p",{className:t.ratingWarningText,children:[s.originalModel," is currently unavailable. We've automatically switched to ",s.fallbackModel," to complete your request."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-fallback",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function Ps({isOpen:i,preprocessingInfo:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Converted"}),e.jsxs("p",{className:t.ratingWarningText,children:["Your file ",e.jsx("strong",{children:s.original_filename})," has been converted from",e.jsxs("strong",{children:[" ",s.original_mime_type]})," to",e.jsxs("strong",{children:[" ",s.processed_mime_type]})," for optimal processing.",e.jsx("br",{}),e.jsx("br",{}),"This conversion ensures your file is in the best format for our AI models to analyze."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-preprocessing",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function Fs({isOpen:i,preprocessingFile:s,isPreprocessing:o,preprocessingProgress:p,onConfirm:c,onCancel:d}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o?void 0:d,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:_=>_.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Conversion Required"}),e.jsx("p",{className:t.ratingWarningText,children:"The file you selected will be converted to PNG format. This ensures optimal compatibility and processing by our AI models."}),!o&&e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-preprocessing",variant:"secondary",onClick:c,children:"Convert File"}),e.jsx(w,{name:"cancel-preprocessing",variant:"tertiary",onClick:d,children:"Cancel"})]}),o&&e.jsxs("div",{className:t.preprocessingProgress,children:[e.jsx("p",{children:p}),e.jsx(rn,{className:"text-ifrcRed"})]})]})})}):null}function Rs({isOpen:i,unsupportedFile:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Unsupported File Format"}),e.jsxs("p",{className:t.ratingWarningText,children:["The file ",e.jsx("strong",{children:s.name})," is not supported for upload.",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Supported formats:"}),e.jsx("br",{}),"• Images: JPEG, PNG, TIFF, HEIC, WebP, GIF",e.jsx("br",{}),"• Documents: PDF (will be converted to image)",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Recommendation:"})," Convert your file to JPEG or PNG format for best compatibility."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-unsupported",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function As({isOpen:i,oversizedFile:s,onClose:o,onCancel:p}){return!i||!s?null:e.jsx("div",{className:t.lightModalOverlay,onClick:p,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:c=>c.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Size Warning"}),e.jsxs("p",{className:t.ratingWarningText,children:["The file ",e.jsx("strong",{children:s.name})," is large (",(s.size/(1024*1024)).toFixed(1),"MB).",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Warning:"})," This file size might exceed the limits of the AI models we use.",e.jsx("br",{}),e.jsx("br",{}),"You can still proceed, but consider using a smaller file if you encounter issues."]}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"continue-size-warning",variant:"secondary",onClick:o,children:"Continue"}),e.jsx(w,{name:"cancel-size-warning",variant:"tertiary",onClick:p,children:"Cancel"})]})]})})})}const Pe="selectedVlmModel";function Pn(){const[i]=Ot(),s=un(),[o,p]=a.useState(1),[c,d]=a.useState(!1),[_,C]=a.useState(!1),S=a.useRef(o),x=a.useRef(null),[l,b]=a.useState(null),[M,E]=a.useState(null),[j,F]=a.useState([]),[A,z]=a.useState(""),[L,G]=a.useState(""),[q,Y]=a.useState(""),[R,Q]=a.useState("crisis_map"),[Z,ae]=a.useState([]),[K,se]=a.useState(""),[ie,oe]=a.useState(""),[re,le]=a.useState(""),[ce,de]=a.useState(""),[ue,ge]=a.useState(""),[pe,me]=a.useState(""),[he,fe]=a.useState(""),[xe,P]=a.useState(""),[N,m]=a.useState(""),[h,Fe]=a.useState(!1),[Re,Ae]=a.useState(""),[ze,Oe]=a.useState(""),[$e,Se]=a.useState([]),[An,zn]=a.useState([]),[On,$n]=a.useState([]),[Bn,Un]=a.useState([]),[Wn,Hn]=a.useState([]),[Vn,Gn]=a.useState([]),[W,be]=a.useState(null),[Be,X]=a.useState([]),[Ne,gn]=a.useState(null),[qn,pn]=a.useState(""),[mn,Ue]=a.useState(""),[hn,We]=a.useState(""),[fn,He]=a.useState(""),[ke,xn]=a.useState({accuracy:50,context:50,usability:50}),[Yn,Ve]=a.useState(!1),[Zn,Ge]=a.useState(null),[ve,Ie]=a.useState(!1),[Kn,vn]=a.useState(!1),[Jn,qe]=a.useState(!1),[Qn,Me]=a.useState(!1),[Ye,Ze]=a.useState(null),[Xn,Ke]=a.useState(!1),[et,_n]=a.useState(null),[nt,Je]=a.useState(!1),[tt,jn]=a.useState(null),[at,ee]=a.useState(!1),[Qe,ne]=a.useState(null),[st,_e]=a.useState(!1),[it,H]=a.useState(""),[ot,Le]=a.useState(!1),[rt,Xe]=a.useState(null),[lt,je]=a.useState(!1),[ct,en]=a.useState(null),[dt,Te]=a.useState(0);S.current=o,x.current=W;const ut=n=>z(n||""),gt=n=>G(n||""),pt=n=>Y(n||""),nn=n=>Q(n||""),mt=n=>ae(Array.isArray(n)?n:[]),ht=n=>oe(n||""),ft=n=>le(n||""),xt=n=>de(n||""),vt=n=>ge(n||""),_t=n=>me(n||""),jt=n=>fe(n||""),wt=n=>P(n||""),Ct=n=>m(n||""),yt=n=>Fe(n||!1),St=n=>Ae(n||""),bt=n=>Oe(n||""),De=n=>p(n),Nt=a.useCallback(()=>{j.length>1&&Te(n=>n>0?n-1:j.length-1)},[j.length]),kt=a.useCallback(()=>{j.length>1&&Te(n=>n<j.length-1?n+1:0)},[j.length]),It=a.useCallback(n=>{n>=0&&n<j.length&&Te(n)},[j.length]),wn=()=>{if(j.length<5){const n=document.createElement("input");n.type="file",n.accept=".jpg,.jpeg,.png,.tiff,.tif,.heic,.heif,.webp,.gif,.pdf",n.onchange=f=>{const u=f.target;if(u.files&&u.files[0]){const g=u.files[0];tn(g)}},n.click()}},Cn=n=>{F(f=>{const u=f.filter((g,r)=>r!==n);return u.length===1?E(u[0]):u.length===0&&E(null),u}),Se(f=>f.filter((u,g)=>g!==n))},Mt=(n,f,u)=>{Se(g=>{const r=[...g];return r[n]||(r[n]={source:"",eventType:"",epsg:"",countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""}),r[n]={...r[n],[f]:u},r})},yn=n=>{const f=["image/jpeg","image/jpg","image/png"],u=[".jpg",".jpeg",".png"];let g=!f.includes(n.type);if(!g&&n.name){const r=n.name.toLowerCase().substring(n.name.lastIndexOf("."));g=!u.includes(r)}return g},Sn=n=>{const f=["text/html","text/css","application/javascript","application/json","text/plain","application/xml","text/xml","application/zip","application/x-zip-compressed","application/x-rar-compressed","application/x-7z-compressed","audio/","video/","text/csv","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];for(const u of f)if(n.type.startsWith(u))return!0;if(n.name){const u=n.name.toLowerCase().substring(n.name.lastIndexOf("."));if([".html",".htm",".css",".js",".json",".txt",".xml",".zip",".rar",".7z",".csv",".xlsx",".xls",".pptx",".ppt",".docx",".doc",".mp3",".mp4",".avi",".mov"].includes(u))return!0}return!1},tn=n=>{if(n){if(console.log("File selected:",n.name,"Type:",n.type,"Size:",n.size),n.size/(1024*1024)>5&&(console.log("File too large, showing size warning modal"),en(n),je(!0)),Sn(n)){console.log("File format not supported at all, showing unsupported format modal"),Xe(n),Le(!0);return}yn(n)?(console.log("File needs preprocessing, showing modal"),ne(n),ee(!0)):(console.log("File does not need preprocessing, setting directly"),j.length===0?(E(n),F([n])):F(u=>[...u,n]))}},bn=n=>{if(n){if(console.log("File changed:",n.name,"Type:",n.type,"Size:",n.size),n.size/(1024*1024)>5&&(console.log("File too large, showing size warning modal"),en(n),je(!0)),Sn(n)){console.log("File format not supported at all, showing unsupported format modal"),Xe(n),Le(!0);return}yn(n)?(console.log("File needs preprocessing, showing modal"),ne(n),ee(!0)):(console.log("File does not need preprocessing, replacing last file"),j.length>1?(F(u=>{const g=[...u];return g[g.length-1]=n,g}),j.length===1&&E(n)):(E(n),F([n])))}};async function we(n){const f=await n.text();try{return f?JSON.parse(f):{}}catch{return{error:f}}}function an(n,f){const u=n instanceof Error?n.message:`Failed to ${f.toLowerCase()}`;alert(u)}async function Nn(){if(j.length!==0){d(!0);try{j.length===1?await Lt():await Tt()}catch(n){an(n,"Upload")}finally{d(!1)}}}async function Lt(){console.log("DEBUG: Starting single image upload");const n=new FormData;n.append("file",j[0]),n.append("title",K),n.append("image_type",R),A&&n.append("source",A),L&&n.append("event_type",L),q&&n.append("epsg",q),Z.length>0&&Z.forEach(r=>n.append("countries",r)),R==="drone_image"&&(ie&&n.append("center_lon",ie),re&&n.append("center_lat",re),ce&&n.append("amsl_m",ce),ue&&n.append("agl_m",ue),pe&&n.append("heading_deg",pe),he&&n.append("yaw_deg",he),xe&&n.append("pitch_deg",xe),N&&n.append("roll_deg",N),h&&n.append("rtk_fix",h.toString()),Re&&n.append("std_h_m",Re),ze&&n.append("std_v_m",ze));const f=localStorage.getItem(Pe);f&&n.append("model_name",f);const u=await fetch("/api/images/",{method:"POST",body:n}),g=await we(u);if(!u.ok)throw new Error(g.error||"Upload failed");console.log("DEBUG: Single upload response:",g),await kn(g,!1)}async function Tt(){console.log("DEBUG: Starting multi-image upload");const n=new FormData;j.forEach(r=>n.append("files",r)),n.append("title",K),n.append("image_type",R),$e.forEach((r,v)=>{r.source&&n.append(`source_${v}`,r.source),r.eventType&&n.append(`event_type_${v}`,r.eventType),r.epsg&&n.append(`epsg_${v}`,r.epsg),r.countries.length>0&&r.countries.forEach(T=>n.append(`countries_${v}`,T)),R==="drone_image"&&(r.centerLon&&n.append(`center_lon_${v}`,r.centerLon),r.centerLat&&n.append(`center_lat_${v}`,r.centerLat),r.amslM&&n.append(`amsl_m_${v}`,r.amslM),r.aglM&&n.append(`agl_m_${v}`,r.aglM),r.headingDeg&&n.append(`heading_deg_${v}`,r.headingDeg),r.yawDeg&&n.append(`yaw_deg_${v}`,r.yawDeg),r.pitchDeg&&n.append(`pitch_deg_${v}`,r.pitchDeg),r.rollDeg&&n.append(`roll_deg_${v}`,r.rollDeg),r.rtkFix&&n.append(`rtk_fix_${v}`,r.rtkFix.toString()),r.stdHM&&n.append(`std_h_m_${v}`,r.stdHM),r.stdVM&&n.append(`std_v_m_${v}`,r.stdVM))});const f=localStorage.getItem(Pe);f&&n.append("model_name",f);const u=await fetch("/api/images/multi",{method:"POST",body:n}),g=await we(u);if(!u.ok)throw new Error(g.error||"Upload failed");console.log("DEBUG: Multi upload response:",g),await kn(g,!0)}async function kn(n,f){gn(n.image_url),n.preprocessing_info&&typeof n.preprocessing_info=="object"&&"was_preprocessed"in n.preprocessing_info&&n.preprocessing_info.was_preprocessed===!0&&(jn(n.preprocessing_info),Je(!0));const u=n.image_id;if(!u)throw new Error("Upload failed: image_id not found");if(be(u),f)if(n.image_ids&&Array.isArray(n.image_ids)){const y=n.image_ids;console.log("DEBUG: Storing image IDs for multi-upload:",y),X(y)}else console.log("DEBUG: Multi-upload but no image_ids found, using single ID"),X([u]);else console.log("DEBUG: Storing single image ID:",u),X([u]);const g=n,r=g.raw_json?.fallback_info;r&&(_n({originalModel:r.original_model,fallbackModel:r.fallback_model,reason:r.reason}),Ke(!0));const v=g.raw_json?.metadata;if(v){const y=v.metadata||v;if(y&&typeof y=="object"){const O=[];if(f){const k=y.metadata_images;if(k&&typeof k=="object")for(let $=1;$<=j.length;$++){const Ce=`image${$}`,sn=k[Ce];if(sn&&typeof sn=="object"){const ye=sn;O.push({source:ye.source||"",eventType:ye.type||"",epsg:ye.epsg||"",countries:Array.isArray(ye.countries)?ye.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""})}else O.push({source:"",eventType:"",epsg:"",countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""})}else{const $={source:y.source||"",eventType:y.type||"",epsg:y.epsg||"",countries:Array.isArray(y.countries)?y.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""};for(let Ce=0;Ce<j.length;Ce++)O.push({...$})}}else{const k={source:y.source||"",eventType:y.type||"",epsg:y.epsg||"",countries:Array.isArray(y.countries)?y.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""};O.push(k)}if(Se(O),O.length>0){const k=O[0];if(y&&typeof y=="object"){const $=y.title;$&&se($||"")}z(k.source||""),G(k.eventType||""),Y(k.epsg||""),ae(k.countries||[]),R==="drone_image"&&(oe(k.centerLon||""),le(k.centerLat||""),de(k.amslM||""),ge(k.aglM||""),me(k.headingDeg||""),fe(k.yawDeg||""),P(k.pitchDeg||""),m(k.rollDeg||""),Fe(k.rtkFix||!1),Ae(k.stdHM||""),Oe(k.stdVM||""))}}}const T=g.raw_json?.metadata;T&&(T.description&&Ue(T.description),T.analysis&&We(T.analysis),T.recommended_actions&&He(T.recommended_actions)),g.generated&&pn(g.generated),De("2a")}async function Dt(){if(console.log("handleSubmit called with:",{uploadedImageId:W,title:K,draft:qn}),!W)return alert("No image to submit");if(!ve){vn(!0);return}try{const n=Be.length>0?Be:[W];console.log("DEBUG: Submit - Using image IDs:",n),console.log("DEBUG: Submit - uploadedImageIds:",Be),console.log("DEBUG: Submit - uploadedImageId:",W);for(let v=0;v<n.length;v++){const T=n[v],y=$e[v]||{source:A||"OTHER",eventType:L||"OTHER",epsg:q||"OTHER",countries:Z||[]},O={source:R==="drone_image"?void 0:y.source||"OTHER",event_type:y.eventType||"OTHER",epsg:y.epsg||"OTHER",image_type:R,countries:y.countries||[]};console.log(`Updating metadata for image ${v+1}:`,O);const k=await fetch(`/api/images/${T}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}),$=await we(k);if(!k.ok)throw new Error($.error||`Metadata update failed for image ${v+1}`)}const f=`Description: ${mn}
14
-
15
- Analysis: ${hn}
16
-
17
- Recommended Actions: ${fn}`,u={title:K,edited:f,accuracy:ke.accuracy,context:ke.context,usability:ke.usability};console.log("Updating caption:",u);const g=await fetch(`/api/images/${W}/caption`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}),r=await we(g);if(!g.ok)throw new Error(r.error||"Caption update failed");be(null),X([]),De(3)}catch(n){an(n,"Submit")}}async function In(){if(console.log("handleDelete called with uploadedImageId:",W),!W){alert("No image to delete. Please try refreshing the page.");return}qe(!0)}async function Et(){try{console.log("Deleting image with ID:",W);const n=await fetch(`/api/images/${W}`,{method:"DELETE"});if(!n.ok){const f=await we(n);throw new Error(f.error||`Delete failed with status ${n.status}`)}qe(!1),Mn()}catch(n){an(n,"Delete")}}const Mn=()=>{Ie(!1),p(1),E(null),F([]),b(null),be(null),X([]),gn(null),se(""),z(""),G(""),Y(""),ae([]),oe(""),le(""),de(""),ge(""),me(""),fe(""),P(""),m(""),Fe(!1),Ae(""),Oe(""),xn({accuracy:50,context:50,usability:50}),pn(""),Ue(""),We(""),He(""),Se([]),Ke(!1),_n(null),Je(!1),jn(null),ee(!1),ne(null),_e(!1),H(""),Le(!1),Xe(null),je(!1),en(null),s("/upload",{replace:!0})},Ee=a.useCallback(n=>{n==="/upload"||n==="/"||(x.current?(Ze(n),Me(!0)):s(n))},[s]);async function Pt(){if(Ye&&x.current)try{await fetch(`/api/images/${x.current}`,{method:"DELETE"}),Me(!1),Ze(null),s(Ye)}catch(n){console.error("Failed to delete image before navigation:",n),Me(!1),Ze(null),s(Ye)}}const Ft=async()=>{if(Qe){_e(!0),H("Starting file conversion...");try{const n=new FormData;n.append("file",Qe),n.append("preprocess_only","true"),H("Converting file format...");const f=await fetch("/api/images/preprocess",{method:"POST",body:n});if(!f.ok)throw new Error("Preprocessing failed");const u=await f.json();H("Finalizing conversion...");const g=atob(u.processed_content),r=new Uint8Array(g.length);for(let y=0;y<g.length;y++)r[y]=g.charCodeAt(y);const v=new File([r],u.processed_filename,{type:u.processed_mime_type}),T=URL.createObjectURL(v);j.length===0?(E(v),F([v])):F(y=>[...y,v]),b(T),H("Conversion complete!"),setTimeout(()=>{ee(!1),ne(null),_e(!1),H("")},1e3)}catch(n){console.error("Preprocessing error:",n),H("Conversion failed. Please try again."),setTimeout(()=>{ee(!1),ne(null),_e(!1),H("")},2e3)}}},Rt=()=>{ee(!1),ne(null),_e(!1),H("")},At=async n=>{C(!0);try{const f=n.map(async v=>{const T=await fetch(`/api/images/${v}`);if(!T.ok)throw new Error(`Failed to fetch image ${v}`);const y=await T.json(),O=await fetch(`/api/images/${v}/file`);if(!O.ok)throw new Error(`Failed to fetch image file ${v}`);const k=await O.blob(),$=y.file_key.split("/").pop()||`contributed_${v}.png`;return{file:new File([k],$,{type:k.type}),imageData:y}}),u=await Promise.all(f),g=u.map(v=>v.file),r=u[0]?.imageData;F(g),X(n),n.length===1&&be(n[0]),g.length>=1&&E(g[0]),r?.image_type&&Q(r.image_type)}catch(f){console.error("Failed to fetch contributed images:",f),alert(`Failed to load contributed images: ${f instanceof Error?f.message:"Unknown error"}`)}finally{C(!1)}};return a.useEffect(()=>{Promise.all([fetch("/api/sources").then(n=>n.json()),fetch("/api/types").then(n=>n.json()),fetch("/api/spatial-references").then(n=>n.json()),fetch("/api/image-types").then(n=>n.json()),fetch("/api/countries").then(n=>n.json()),fetch("/api/models").then(n=>n.json())]).then(([n,f,u,g,r,v])=>{!localStorage.getItem(Pe)&&v?.length&&localStorage.setItem(Pe,v[0].m_code),zn(n),$n(f),Un(u),Hn(g),Gn(r),n.length>0&&z(n[0].s_code),G("OTHER"),Y("OTHER"),g.length>0&&!i.get("imageType")&&!R&&Q(g[0].image_type)})},[i,R]),a.useEffect(()=>(window.confirmNavigationIfNeeded=n=>{Ee(n)},()=>{delete window.confirmNavigationIfNeeded}),[Ee]),a.useEffect(()=>{const n=g=>{if(x.current){const r="You have an uploaded image that will be deleted if you leave this page. Are you sure you want to leave?";return g.preventDefault(),g.returnValue=r,r}},f=()=>{x.current&&fetch(`/api/images/${x.current}`,{method:"DELETE"}).catch(console.error)},u=g=>{const r=g.target,v=r.closest("a[href]")||r.closest("[data-navigate]");if(v&&x.current){const T=v.getAttribute("href")||v.getAttribute("data-navigate");T&&T!=="#"&&!T.startsWith("javascript:")&&!T.startsWith("mailto:")&&(g.preventDefault(),g.stopPropagation(),Ee(T))}};return window.addEventListener("beforeunload",n),document.addEventListener("click",u,!0),()=>{window.removeEventListener("beforeunload",n),document.removeEventListener("click",u,!0),f()}},[Ee]),a.useEffect(()=>{if(!M){b(null);return}const n=URL.createObjectURL(M);return b(n),()=>URL.revokeObjectURL(n)},[M]),a.useEffect(()=>{const n=i.get("contribute"),f=i.get("imageIds");if(n==="true"&&f){const u=f.split(",").filter(g=>g.trim());u.length>0&&At(u)}},[i]),a.useEffect(()=>{o==="2b"&&Te(0)},[o]),e.jsxs(ln,{children:[o!==3&&e.jsx("div",{className:"max-w-7xl mx-auto",children:e.jsxs("div",{className:t.uploadContainer,"data-step":o,children:[o===1&&!i.get("step")&&!_&&e.jsx(Dn,{files:j,file:M,preview:l,imageType:R,onFileChange:tn,onRemoveImage:Cn,onAddImage:wn,onImageTypeChange:nn,onChangeFile:bn}),o===1&&i.get("contribute")==="true"&&!_&&j.length>0&&e.jsx(Dn,{files:j,file:M,preview:l,imageType:R,onFileChange:tn,onRemoveImage:Cn,onAddImage:wn,onImageTypeChange:nn,onChangeFile:bn}),c&&e.jsxs("div",{className:t.loadingContainer,children:[e.jsx(rn,{className:"text-ifrcRed"}),e.jsx("p",{className:t.loadingText,children:"Generating..."})]}),_&&e.jsxs("div",{className:t.loadingContainer,children:[e.jsx(rn,{className:"text-ifrcRed"}),e.jsx("p",{className:t.loadingText,children:"Loading contribution..."})]}),(o===1&&!c&&!_||o===1&&i.get("contribute")==="true"&&!c&&!_&&j.length>0)&&e.jsx("div",{className:t.generateButtonContainer,children:Ne?e.jsx(w,{name:"generate-from-url",onClick:Nn,children:"Generate Caption"}):e.jsx(w,{name:"generate",disabled:j.length===0,onClick:Nn,children:"Generate"})}),o==="2a"&&e.jsxs("div",{className:t.step2Layout,children:[e.jsx("div",{className:t.mapColumn,children:e.jsx(En,{files:j,imageUrl:Ne,preview:l,onViewFullSize:n=>{Ge(n||null),Ve(!0)}})}),e.jsx("div",{className:t.contentColumn,children:e.jsxs("div",{className:t.metadataSectionCard,children:[e.jsx(Ns,{files:j,imageType:R,title:K,source:A,eventType:L,epsg:q,countries:Z,centerLon:ie,centerLat:re,amslM:ce,aglM:ue,headingDeg:pe,yawDeg:he,pitchDeg:xe,rollDeg:N,rtkFix:h,stdHM:Re,stdVM:ze,metadataArray:$e,sources:An,types:On,spatialReferences:Bn,imageTypes:Wn,countriesOptions:Vn,onTitleChange:n=>se(n||""),onSourceChange:ut,onEventTypeChange:gt,onEpsgChange:pt,onCountriesChange:mt,onCenterLonChange:ht,onCenterLatChange:ft,onAmslMChange:xt,onAglMChange:vt,onHeadingDegChange:_t,onYawDegChange:jt,onPitchDegChange:wt,onRollDegChange:Ct,onRtkFixChange:yt,onStdHMChange:St,onStdVMChange:bt,onImageTypeChange:nn,updateMetadataForImage:Mt}),e.jsxs("div",{className:t.confirmSection,children:[e.jsx(cn,{name:"delete",variant:"tertiary",onClick:In,title:"Delete",ariaLabel:"Delete uploaded image",children:e.jsx(dn,{})}),e.jsx(w,{name:"confirm-metadata",onClick:()=>De("2b"),children:"Next"})]})]})})]}),o==="2b"&&e.jsxs("div",{className:t.step2bLayout,children:[e.jsxs("div",{className:`${t.topRow} ${ve?t.ratingHidden:""}`,children:[e.jsx("div",{className:t.imageSection,children:e.jsx(En,{files:j,imageUrl:Ne,preview:l,onViewFullSize:n=>{Ge(n||null),Ve(!0)},currentImageIndex:dt,onGoToPrevious:Nt,onGoToNext:kt,onGoToImage:It,showCarousel:!0})}),!ve&&e.jsx("div",{className:t.metadataSectionCard,children:e.jsx(ks,{isPerformanceConfirmed:ve,scores:ke,onScoreChange:(n,f)=>xn(u=>({...u,[n]:f})),onConfirmRatings:()=>Ie(!0),onEditRatings:()=>Ie(!1)})})]}),e.jsx("div",{className:t.metadataSectionCard,children:e.jsx(Is,{description:mn,analysis:hn,recommendedActions:fn,onDescriptionChange:n=>Ue(n||""),onAnalysisChange:n=>We(n||""),onRecommendedActionsChange:n=>He(n||""),onBack:()=>De("2a"),onDelete:In,onSubmit:Dt,onEditRatings:()=>Ie(!1),isPerformanceConfirmed:ve})})]})]})}),o===3&&e.jsxs("div",{className:t.successContainer,children:[e.jsx(te,{level:2,className:t.successHeading,children:"Saved!"}),e.jsx("p",{className:t.successText,children:i.get("contribute")==="true"?"Your contribution has been successfully saved.":"Your caption has been successfully saved."}),e.jsx("div",{className:t.successButton,children:e.jsx(w,{name:"upload-another",onClick:()=>{Mn()},children:"Upload Another"})})]}),e.jsx(Ms,{isOpen:Yn,imageUrl:Ne,preview:l,selectedImageData:Zn,onClose:()=>{Ve(!1),Ge(null)}}),e.jsx(Ls,{isOpen:Kn,onClose:()=>vn(!1)}),e.jsx(Ts,{isOpen:Jn,onConfirm:Et,onCancel:()=>qe(!1)}),e.jsx(Ds,{isOpen:Qn,onConfirm:Pt,onCancel:()=>Me(!1)}),e.jsx(Es,{isOpen:Xn,fallbackInfo:et,onClose:()=>Ke(!1)}),e.jsx(Ps,{isOpen:nt,preprocessingInfo:tt,onClose:()=>Je(!1)}),e.jsx(Fs,{isOpen:at,preprocessingFile:Qe,isPreprocessing:st,preprocessingProgress:it,onConfirm:Ft,onCancel:Rt}),e.jsx(Rs,{isOpen:ot,unsupportedFile:rt,onClose:()=>Le(!1)}),e.jsx(As,{isOpen:lt,oversizedFile:ct,onClose:()=>je(!1),onCancel:()=>je(!1)})]})}const zs="_helpContainer_1wavj_1",Os="_helpSection_1wavj_13",$s="_sectionHeader_1wavj_49",Bs="_sectionTitle_1wavj_91",Us="_sectionContent_1wavj_105",Ws="_guidelinesList_1wavj_119",Hs="_buttonContainer_1wavj_181",I={helpContainer:zs,helpSection:Os,sectionHeader:$s,sectionTitle:Bs,sectionContent:Us,guidelinesList:Ws,buttonContainer:Hs};function Vs(){const i=un(),{setShowReferenceExamples:s}=bs(),o=()=>{i("/upload")},p=()=>{s(!0),i("/explore")},c=()=>{i("/analytics?view=crisis_maps")};return e.jsx(ln,{className:"py-10",children:e.jsx("div",{className:I.helpContainer,children:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Introduction"})}),e.jsx("div",{className:I.sectionContent,children:"In collaboration with the IFRC, PromptAid Vision is a tool that generates textual descriptions of crisis maps/crisis drone images utiliing Visual language models. This prototype is for collecting data for the fine-tuning of our own models. We aim to utilize AI tools to support national societies with rapid decision making during emergencies."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"upload-now",variant:"secondary",onClick:o,children:"Upload now →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Guidelines"})}),e.jsxs("div",{className:I.sectionContent,children:["To make the process smoother, please follow the guidelines below:",e.jsxs("ul",{className:I.guidelinesList,children:[e.jsx("li",{children:"Avoid uploading images that are not crisis maps/crisis drone images."}),e.jsx("li",{children:"Confirm the image details prior to modifying the description."}),e.jsx("li",{children:"Before the modification, please read the description generated and provide a rating via the rating sliders."}),e.jsx("li",{children:'Click the "Submit" button to save the description.'})]})]}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"see-examples",variant:"secondary",onClick:p,children:"See examples →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"VLMs"})}),e.jsx("div",{className:I.sectionContent,children:"PromptAid Vision uses a variety of Visual Language Models (VLMs). A random VLM is selected for each upload. Therefore feel free to delete and reupload. You can view performance details here:"}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"view-vlm-details",variant:"secondary",onClick:c,children:"View VLM details →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Dataset"})}),e.jsx("div",{className:I.sectionContent,children:"All users are able to export the dataset. You could apply filters when exporting, and it have the option to organize based on model fine-tuning formats."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"export-dataset",variant:"secondary",onClick:()=>{s(!1),i("/explore"),setTimeout(()=>{const d=document.querySelector('[name="export-dataset"]');d&&d.click()},100)},children:"Export dataset →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Contact us"})}),e.jsx("div",{className:I.sectionContent,children:"Need help or have questions about PromptAid Vision? Our team is here to support you."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"contact-support",variant:"secondary",disabled:!0,children:"Get in touch →"})})]})]})})})}const Gs=a.createContext(void 0),qs=({children:i})=>{const[s,o]=a.useState(!1),[p,c]=a.useState(!0),d=async()=>{const x=localStorage.getItem("adminToken");if(!x){o(!1),c(!1);return}try{(await fetch("/api/admin/verify",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`}})).ok?o(!0):(localStorage.removeItem("adminToken"),o(!1))}catch(l){console.error("Error verifying admin token:",l),localStorage.removeItem("adminToken"),o(!1)}finally{c(!1)}},_=async x=>{try{const l=await fetch("/api/admin/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:x})});if(l.ok){const b=await l.json();return localStorage.setItem("adminToken",b.access_token),o(!0),!0}else return!1}catch(l){return console.error("Login error:",l),!1}},C=()=>{localStorage.removeItem("adminToken"),o(!1)};a.useEffect(()=>{d()},[]);const S={isAuthenticated:s,isLoading:p,login:_,logout:C,verifyToken:d};return e.jsx(Gs.Provider,{value:S,children:i})},Ys=a.lazy(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),Zs=a.lazy(()=>B(()=>import("./index-Bj6KcvNd.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),Ks=a.lazy(()=>B(()=>import("./AdminPage-C_7rpuzO.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),Js=a.lazy(()=>B(()=>import("./index-iAxVbTZE.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])));class Qs extends a.Component{constructor(s){super(s),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,o){console.error("Error caught by boundary:",s,o)}render(){return this.state.hasError?e.jsxs("div",{style:{padding:"20px",textAlign:"center"},children:[e.jsx("h2",{children:"Something went wrong"}),e.jsx("p",{children:"Please refresh the page to try again."}),e.jsx("button",{onClick:()=>window.location.reload(),children:"Refresh Page"})]}):this.props.children}}const V=i=>{const s=i();return s.catch(()=>{}),s},Xs=()=>{"requestIdleCallback"in window?requestIdleCallback(()=>{V(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),V(()=>B(()=>import("./index-Bj6KcvNd.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),V(()=>B(()=>import("./AdminPage-C_7rpuzO.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),V(()=>B(()=>import("./index-iAxVbTZE.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])))}):setTimeout(()=>{V(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),V(()=>B(()=>import("./index-Bj6KcvNd.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),V(()=>B(()=>import("./AdminPage-C_7rpuzO.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),V(()=>B(()=>import("./index-iAxVbTZE.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])))},1e3)},ei=$t([{element:e.jsx(ga,{}),children:[{path:"/",element:e.jsx(Pn,{})},{path:"/upload",element:e.jsx(Pn,{})},{path:"/analytics",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Analytics..."}),children:e.jsx(Ys,{})})},{path:"/explore",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Explore..."}),children:e.jsx(Zs,{})})},{path:"/help",element:e.jsx(Vs,{})},{path:"/admin",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Admin..."}),children:e.jsx(Ks,{})})},{path:"/map/:mapId",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Map Details..."}),children:e.jsx(Js,{})})}]}],{basename:"/"});function ni(){const[i,s]=a.useState([]);a.useEffect(()=>{Xs()},[]);const o=a.useCallback(C=>{s(S=>sa([...S,C],x=>x.name)??S)},[s]),p=a.useCallback(C=>{s(S=>{const x=S.findIndex(b=>b.name===C);if(x===-1)return S;const l=[...S];return l.splice(x,1),l})},[s]),c=a.useCallback((C,S)=>{s(x=>{const l=x.findIndex(M=>M.name===C);if(l===-1)return x;const b=[...x];return b[l]={...b[l],...S},b})},[s]),d=a.useMemo(()=>({alerts:i,addAlert:o,removeAlert:p,updateAlert:c}),[i,o,p,c]),_=a.useMemo(()=>({languageNamespaceStatus:{},setLanguageNamespaceStatus:()=>{},currentLanguage:"en",setCurrentLanguage:()=>{},strings:{},setStrings:()=>{},registerNamespace:()=>{}}),[]);return e.jsx(Qs,{children:e.jsx(ea.Provider,{value:d,children:e.jsx(na.Provider,{value:_,children:e.jsx(qs,{children:e.jsx(Ss,{children:e.jsx(Bt,{router:ei})})})})})})}function ti(){return e.jsx(ni,{})}console.log("React version at runtime:",a.version,"createContext exists?",!!a.createContext);Ut.createRoot(document.getElementById("root")).render(e.jsx(a.StrictMode,{children:e.jsx(ti,{})}));export{Gs as A,Ms as F,B as _,bs as u};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
py_backend/static/assets/index-Uy48qW96.js DELETED
@@ -1,17 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DMU6q_dg.js","assets/vendor-react-BxsGb6Ph.js","assets/vendor-DxpCibxB.js","assets/vendor-ui-l_DttnRj.js","assets/vendor-ui-DpEM1HT6.css","assets/index-BsrMOmjk.css","assets/index-CwG_dxMe.js","assets/useAdmin-B_k2Fdj-.js","assets/ExportModal-BtNOxnGZ.js","assets/ExportModal-BoB3JpqO.css","assets/index-BzPMJFRS.css","assets/AdminPage-Dz89QBtX.js","assets/AdminPage-VgSjQ50W.css","assets/index-jo0G9peP.js","assets/index-tDgjKyWF.css"])))=>i.map(i=>d[i]);
2
- import{r as a,j as e,L as zt,u as Ot,c as $t,R as Bt,b as Ut}from"./vendor-react-BxsGb6Ph.js";import{N as ln,G as Wt,U as Fn,S as Ht,A as Vt,z as U,n as w,M as Gt,Q as qt,a as Yt,b as Zt,L as Kt,B as cn,D as dn,C as Jt,c as Qt,O as D,f as J,d as Ln,e as Xt,_ as rn,R as te,l as ea,t as na}from"./vendor-ui-l_DttnRj.js";import{u as ta,a as un,O as aa,k as sa}from"./vendor-DxpCibxB.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))p(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const _ of d.addedNodes)_.tagName==="LINK"&&_.rel==="modulepreload"&&p(_)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function p(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();const ia="modulepreload",oa=function(i){return"/"+i},Tn={},B=function(s,o,p){let c=Promise.resolve();if(o&&o.length>0){let S=function(x){return Promise.all(x.map(l=>Promise.resolve(l).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};document.getElementsByTagName("link");const _=document.querySelector("meta[property=csp-nonce]"),C=_?.nonce||_?.getAttribute("nonce");c=S(o.map(x=>{if(x=oa(x),x in Tn)return;Tn[x]=!0;const l=x.endsWith(".css"),b=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${b}`))return;const M=document.createElement("link");if(M.rel=l?"stylesheet":ia,l||(M.as="script"),M.crossOrigin="",M.href=x,C&&M.setAttribute("nonce",C),document.head.appendChild(M),l)return new Promise((E,j)=>{M.addEventListener("load",E),M.addEventListener("error",()=>j(new Error(`Unable to preload CSS for ${x}`)))})}))}function d(_){const C=new Event("vite:preloadError",{cancelable:!0});if(C.payload=_,window.dispatchEvent(C),!C.defaultPrevented)throw _}return c.then(_=>{for(const C of _||[])C.status==="rejected"&&d(C.reason);return s().catch(d)})},ra="_dropdownContainer_1six7_3",la="_dropdownMenu_1six7_15",ca="_dropdownContent_1six7_43",on={dropdownContainer:ra,dropdownMenu:la,dropdownContent:ca},da=[{to:"/upload",label:"Upload",Icon:Fn},{to:"/explore",label:"Explore",Icon:Ht},{to:"/analytics",label:"Analytics",Icon:Vt}];function ua(){const i=ta(),s=un(),[o,p]=a.useState(!1),c=a.useRef(null);return a.useEffect(()=>{const d=_=>{c.current&&!c.current.contains(_.target)&&p(!1)};return document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d)}},[]),e.jsx("nav",{className:"border-b border-gray-200 bg-white shadow-sm sticky top-0 z-50 backdrop-blur-sm bg-white/95",children:e.jsxs(ln,{className:"border-b-2 border-ifrcRed",contentClassName:"grid grid-cols-3 items-center py-6",children:[e.jsxs("div",{className:"flex items-center gap-4 min-w-0 cursor-pointer group transition-all duration-200 hover:scale-105",onClick:()=>{if(!(i.pathname==="/upload"||i.pathname==="/")){if(i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/")}},children:[e.jsx("div",{className:"p-2 rounded-lg bg-gradient-to-br from-ifrcRed/10 to-ifrcRed/20 group-hover:from-ifrcRed/20 group-hover:to-ifrcRed/30 transition-all duration-200",children:e.jsx(Wt,{className:"h-8 w-8 flex-shrink-0 text-ifrcRed"})}),e.jsx("div",{className:"flex flex-col",children:e.jsx("span",{className:"font-bold text-xl text-gray-900 leading-tight",children:"PromptAid Vision"})})]}),e.jsx("div",{className:"flex justify-center",children:e.jsx("nav",{className:"flex items-center space-x-4 bg-gray-50/80 rounded-xl p-2 backdrop-blur-sm",children:da.map(({to:d,label:_,Icon:C})=>{const S=i.pathname===d||d==="/upload"&&i.pathname==="/"||d==="/explore"&&i.pathname.startsWith("/map/"),x=i.pathname==="/upload"||i.pathname==="/",l=d==="/upload"||d==="/";return e.jsxs("div",{className:"relative",children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:_.toLowerCase(),variant:S?"primary":"tertiary",size:1,className:`transition-all duration-200 ${S?"shadow-lg shadow-ifrcRed/20 transform scale-105":"hover:bg-white hover:shadow-md hover:scale-105"}`,onClick:()=>{if(!(x&&l)){if(i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded(d);return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s(d)}},children:[e.jsx(C,{className:`w-4 h-4 transition-transform duration-200 ${S?"scale-110":"group-hover:scale-110"}`}),e.jsx("span",{className:"inline ml-2 font-semibold",children:_})]})}),S&&e.jsx("div",{className:"absolute -bottom-2 left-1/2 transform -translate-x-1/2 w-8 h-1 bg-ifrcRed rounded-full animate-pulse"})]},d)})})}),e.jsx("div",{className:"flex justify-end",children:e.jsxs("div",{className:on.dropdownContainer,ref:c,children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsx(w,{name:"more-options",variant:o?"primary":"tertiary",size:1,className:"transition-all duration-200",onClick:()=>p(!o),children:e.jsx(Gt,{className:"w-4 h-4"})})}),o&&e.jsx("div",{className:on.dropdownMenu,children:e.jsxs("div",{className:on.dropdownContent,children:[e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:"help-support",variant:"tertiary",size:1,className:"w-full justify-start",onClick:()=>{if(p(!1),i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/help");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/help")},children:[e.jsx(qt,{className:"w-4 h-4"}),e.jsx("span",{className:"ml-2 font-semibold",children:"Help & Support"})]})}),e.jsx(U,{withInternalPadding:!0,className:"p-2",children:e.jsxs(w,{name:"dev",variant:"tertiary",size:1,className:"w-full justify-start",onClick:()=>{if(p(!1),i.pathname==="/upload"){if(window.confirmNavigationIfNeeded){window.confirmNavigationIfNeeded("/admin");return}if(!confirm("You have unsaved changes. Are you sure you want to leave?"))return}s("/admin")},children:[e.jsx(Yt,{className:"w-4 h-4"}),e.jsx("span",{className:"ml-2 font-semibold",children:"Dev"})]})})]})})]})})]})})}function ga(){return e.jsxs(e.Fragment,{children:[e.jsx(ua,{}),e.jsx(aa,{})]})}const pa="_uploadContainer_1w5i1_1",ma="_dropZone_1w5i1_9",ha="_hasFile_1w5i1_30",fa="_dropZoneIcon_1w5i1_37",xa="_dropZoneText_1w5i1_43",va="_dropZoneSubtext_1w5i1_49",_a="_filePreview_1w5i1_55",ja="_filePreviewImage_1w5i1_64",wa="_fileName_1w5i1_110",Ca="_fileInfo_1w5i1_118",ya="_helpLink_1w5i1_125",Sa="_loadingContainer_1w5i1_145",ba="_loadingText_1w5i1_153",Na="_generateButtonContainer_1w5i1_157",ka="_uploadedMapContainer_1w5i1_165",Ia="_uploadedMapImage_1w5i1_169",Ma="_formGrid_1w5i1_209",La="_titleField_1w5i1_222",Ta="_ratingDescription_1w5i1_230",Da="_ratingSlider_1w5i1_235",Ea="_ratingLabel_1w5i1_242",Pa="_ratingInput_1w5i1_251",Fa="_ratingValue_1w5i1_256",Ra="_submitSection_1w5i1_266",Aa="_successContainer_1w5i1_275",za="_successHeading_1w5i1_280",Oa="_successText_1w5i1_285",$a="_successButton_1w5i1_291",Ba="_viewFullSizeButton_1w5i1_297",Ua="_fullSizeModalOverlay_1w5i1_306",Wa="_lightModalOverlay_1w5i1_320",Ha="_fullSizeModalContent_1w5i1_334",Va="_fullSizeModalHeader_1w5i1_345",Ga="_fullSizeModalImage_1w5i1_361",qa="_confirmSection_1w5i1_398",Ya="_step2Layout_1w5i1_407",Za="_topRow_1w5i1_413",Ka="_ratingHidden_1w5i1_421",Ja="_imageSection_1w5i1_425",Qa="_ratingContent_1w5i1_435",Xa="_mapColumn_1w5i1_453",es="_contentColumn_1w5i1_458",ns="_step2bLayout_1w5i1_465",ts="_metadataSectionCard_1w5i1_562",as="_droneMetadataSection_1w5i1_571",ss="_droneMetadataHeading_1w5i1_577",is="_droneMetadataGrid_1w5i1_585",os="_rtkFixContainer_1w5i1_591",rs="_rtkFixLabel_1w5i1_597",ls="_rtkFixCheckbox_1w5i1_606",cs="_confirmButtonContainer_1w5i1_621",ds="_ratingWarningContent_1w5i1_629",us="_ratingWarningTitle_1w5i1_637",gs="_ratingWarningText_1w5i1_644",ps="_ratingWarningButtons_1w5i1_651",ms="_preprocessingProgress_1w5i1_658",hs="_carouselContainer_1w5i1_711",fs="_carouselImageWrapper_1w5i1_716",xs="_carouselImage_1w5i1_716",vs="_carouselNavigation_1w5i1_739",_s="_carouselButton_1w5i1_751",js="_carouselIndicators_1w5i1_775",ws="_carouselIndicator_1w5i1_775",Cs="_carouselIndicatorActive_1w5i1_804",ys="_viewImageButtonContainer_1w5i1_840",t={uploadContainer:pa,dropZone:ma,hasFile:ha,dropZoneIcon:fa,dropZoneText:xa,dropZoneSubtext:va,filePreview:_a,filePreviewImage:ja,fileName:wa,fileInfo:Ca,helpLink:ya,loadingContainer:Sa,loadingText:ba,generateButtonContainer:Na,uploadedMapContainer:ka,uploadedMapImage:Ia,formGrid:Ma,titleField:La,ratingDescription:Ta,ratingSlider:Da,ratingLabel:Ea,ratingInput:Pa,ratingValue:Fa,submitSection:Ra,successContainer:Aa,successHeading:za,successText:Oa,successButton:$a,viewFullSizeButton:Ba,fullSizeModalOverlay:Ua,lightModalOverlay:Wa,fullSizeModalContent:Ha,fullSizeModalHeader:Va,fullSizeModalImage:Ga,confirmSection:qa,step2Layout:Ya,topRow:Za,ratingHidden:Ka,imageSection:Ja,ratingContent:Qa,mapColumn:Xa,contentColumn:es,step2bLayout:ns,metadataSectionCard:ts,droneMetadataSection:as,droneMetadataHeading:ss,droneMetadataGrid:is,rtkFixContainer:os,rtkFixLabel:rs,rtkFixCheckbox:ls,confirmButtonContainer:cs,ratingWarningContent:ds,ratingWarningTitle:us,ratingWarningText:gs,ratingWarningButtons:ps,preprocessingProgress:ms,carouselContainer:hs,carouselImageWrapper:fs,carouselImage:xs,carouselNavigation:vs,carouselButton:_s,carouselIndicators:js,carouselIndicator:ws,carouselIndicatorActive:Cs,viewImageButtonContainer:ys},Rn=a.createContext(void 0),Ss=({children:i})=>{const[s,o]=a.useState(""),[p,c]=a.useState(""),[d,_]=a.useState(""),[C,S]=a.useState(""),[x,l]=a.useState(""),[b,M]=a.useState(""),[E,j]=a.useState(""),[F,A]=a.useState(!1),L={search:s,srcFilter:p,catFilter:d,regionFilter:C,countryFilter:x,imageTypeFilter:b,uploadTypeFilter:E,showReferenceExamples:F,setSearch:o,setSrcFilter:c,setCatFilter:_,setRegionFilter:S,setCountryFilter:l,setImageTypeFilter:M,setUploadTypeFilter:j,setShowReferenceExamples:A,clearAllFilters:()=>{o(""),c(""),_(""),S(""),l(""),M(""),j(""),A(!1)}};return e.jsx(Rn.Provider,{value:L,children:i})},bs=()=>{const i=a.useContext(Rn);if(i===void 0)throw new Error("useFilterContext must be used within a FilterProvider");return i};function Dn({files:i,file:s,preview:o,imageType:p,onFileChange:c,onRemoveImage:d,onAddImage:_,onImageTypeChange:C,onChangeFile:S}){const x=l=>{l.preventDefault();const b=l.dataTransfer.files?.[0];b&&c(b)};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("p",{className:"text-gray-700 leading-relaxed max-w-2xl mx-auto",children:"This app evaluates how well multimodal AI models analyze and describe crisis maps and drone imagery. Upload an image and the AI will generate a description. Then you can review and rate the result based on your expertise."}),e.jsx("div",{className:t.helpLink,children:e.jsxs(zt,{to:"/help",className:t.helpLink,children:["More ",e.jsx(Zt,{className:"w-3 h-3"})]})}),e.jsx("div",{className:"flex justify-center",children:e.jsx(U,{withInternalPadding:!0,className:"bg-transparent border-none shadow-none",children:e.jsx(Kt,{name:"image-type",value:p,onChange:l=>C(l),options:[{key:"crisis_map",label:"Crisis Maps"},{key:"drone_image",label:"Drone Imagery"}],keySelector:l=>l.key,labelSelector:l=>l.label})})}),e.jsxs("div",{className:`${t.dropZone} ${s?t.hasFile:""}`,onDragOver:l=>l.preventDefault(),onDrop:x,children:[i.length>1?e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-4 mb-4",children:i.map((l,b)=>e.jsxs("div",{className:"relative",children:[e.jsx("img",{src:URL.createObjectURL(l),alt:`Image ${b+1}`,className:"w-full h-32 object-cover rounded"}),e.jsx(cn,{name:"remove-image",variant:"tertiary",onClick:()=>d(b),title:"Remove image",ariaLabel:"Remove image",className:"absolute top-2 right-2 bg-white/90 hover:bg-white shadow-md hover:shadow-lg border border-gray-200 hover:border-red-300 transition-all duration-200 backdrop-blur-sm",children:e.jsx(dn,{className:"w-4 h-4"})}),e.jsx("div",{className:"text-xs text-center mt-1",children:l.name})]},b))}):s&&o?e.jsxs("div",{className:t.filePreview,children:[e.jsx("div",{className:t.filePreviewImage,children:e.jsx("img",{src:o,alt:"File preview"})}),e.jsx("p",{className:t.fileName,children:s.name}),e.jsxs("p",{className:t.fileInfo,children:[(s.size/1024/1024).toFixed(2)," MB"]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Fn,{className:t.dropZoneIcon}),e.jsx("p",{className:t.dropZoneText,children:"Drag & Drop any file here"}),e.jsx("p",{className:t.dropZoneSubtext,children:"or"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("label",{className:"inline-block cursor-pointer",children:[e.jsx("input",{type:"file",className:"sr-only",accept:".jpg,.jpeg,.png,.tiff,.tif,.heic,.heif,.webp,.gif,.pdf",onChange:l=>{s&&S?S(l.target.files?.[0]):c(l.target.files?.[0])}}),e.jsx(w,{name:"upload",variant:"secondary",size:1,onClick:()=>document.querySelector('input[type="file"]')?.click(),children:s?"Change Image":"Browse Files"})]}),s&&i.length<5&&e.jsx(w,{name:"add-image",variant:"secondary",size:1,onClick:_,children:"Add Image"})]})]})]})}function En({files:i,imageUrl:s,preview:o,onViewFullSize:p,currentImageIndex:c=0,onGoToPrevious:d,onGoToNext:_,onGoToImage:C,showCarousel:S=!1}){return S&&i.length>1?e.jsx(U,{heading:"Uploaded Images",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.carouselContainer,children:[e.jsx("div",{className:t.carouselImageWrapper,children:i[c]?e.jsx("img",{src:URL.createObjectURL(i[c]),alt:`Image ${c+1}`,className:t.carouselImage}):e.jsx("div",{className:t.imagePlaceholder,children:"No image available"})}),e.jsxs("div",{className:t.carouselNavigation,children:[e.jsx(w,{name:"previous-image",variant:"tertiary",size:1,onClick:d,className:t.carouselButton,children:e.jsx(Jt,{className:"w-4 h-4"})}),e.jsx("div",{className:t.carouselIndicators,children:i.map((x,l)=>e.jsx("button",{onClick:()=>C?.(l),className:`${t.carouselIndicator} ${l===c?t.carouselIndicatorActive:""}`,children:l+1},l))}),e.jsx(w,{name:"next-image",variant:"tertiary",size:1,onClick:_,className:t.carouselButton,children:e.jsx(Qt,{className:"w-4 h-4"})})]}),e.jsx("div",{className:t.viewImageButtonContainer,children:e.jsx(w,{name:"view-full-size-carousel",variant:"secondary",size:1,onClick:()=>p({file:i[c],index:c}),disabled:!i[c],children:"View Image"})})]})}):i.length>1?e.jsx("div",{className:"space-y-6",children:i.map((x,l)=>e.jsx(U,{heading:`Image ${l+1}: ${x.name}`,headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.uploadedMapContainer,children:[e.jsx("div",{className:t.uploadedMapImage,children:e.jsx("img",{src:URL.createObjectURL(x),alt:`Image ${l+1}`})}),e.jsx("div",{className:t.viewFullSizeButton,children:e.jsx(w,{name:`view-full-size-${l}`,variant:"secondary",size:1,onClick:()=>p({file:x,index:l}),children:"View Image"})})]})},l))}):e.jsx(U,{heading:"Uploaded Image",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.uploadedMapContainer,children:[e.jsx("div",{className:t.uploadedMapImage,children:e.jsx("img",{src:s||o||void 0,alt:"Uploaded image preview"})}),e.jsx("div",{className:t.viewFullSizeButton,children:e.jsx(w,{name:"view-full-size",variant:"secondary",size:1,onClick:()=>p(),children:"View Image"})})]})})}function Ns({files:i,imageType:s,title:o,source:p,eventType:c,epsg:d,countries:_,centerLon:C,centerLat:S,amslM:x,aglM:l,headingDeg:b,yawDeg:M,pitchDeg:E,rollDeg:j,rtkFix:F,stdHM:A,stdVM:z,metadataArray:L,sources:G,types:q,spatialReferences:Y,imageTypes:R,countriesOptions:Q,onTitleChange:Z,onSourceChange:ae,onEventTypeChange:K,onEpsgChange:se,onCountriesChange:ie,onCenterLonChange:oe,onCenterLatChange:re,onAmslMChange:le,onAglMChange:ce,onHeadingDegChange:de,onYawDegChange:ue,onPitchDegChange:ge,onRollDegChange:pe,onRtkFixChange:me,onStdHMChange:he,onStdVMChange:fe,onImageTypeChange:xe,updateMetadataForImage:P}){return i.length>1?e.jsxs("div",{children:[e.jsx("div",{className:"mb-4",children:e.jsx(D,{label:"Shared Title",name:"title",value:o,onChange:Z,placeholder:"Enter a title for all images...",required:!0})}),i.map((N,m)=>e.jsx("div",{className:"mb-6",children:e.jsx(U,{heading:`Image ${m+1}: ${N.name}`,headingLevel:4,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.formGrid,children:[s!=="drone_image"&&e.jsx(J,{label:"Source",name:`source_${m}`,value:L[m]?.source||"",onChange:h=>P(m,"source",h),options:G,keySelector:h=>h.s_code,labelSelector:h=>h.label,required:!0}),e.jsx(J,{label:"Event Type",name:`event_type_${m}`,value:L[m]?.eventType||"",onChange:h=>P(m,"eventType",h),options:q,keySelector:h=>h.t_code,labelSelector:h=>h.label,required:s!=="drone_image"}),e.jsx(J,{label:"EPSG",name:`epsg_${m}`,value:L[m]?.epsg||"",onChange:h=>P(m,"epsg",h),options:Y,keySelector:h=>h.epsg,labelSelector:h=>`${h.srid} (EPSG:${h.epsg})`,placeholder:"EPSG",required:s!=="drone_image"}),e.jsx(Ln,{label:"Countries (optional)",name:`countries_${m}`,value:L[m]?.countries||[],onChange:h=>P(m,"countries",h),options:Q,keySelector:h=>h.c_code,labelSelector:h=>h.label,placeholder:"Select one or more"}),s==="drone_image"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:t.droneMetadataSection,children:[e.jsx("h4",{className:t.droneMetadataHeading,children:"Drone Flight Data"}),e.jsxs("div",{className:t.droneMetadataGrid,children:[e.jsx(D,{label:"Center Longitude",name:`center_lon_${m}`,value:L[m]?.centerLon||"",onChange:h=>P(m,"centerLon",h),placeholder:"e.g., -122.4194",step:"any"}),e.jsx(D,{label:"Center Latitude",name:`center_lat_${m}`,value:L[m]?.centerLat||"",onChange:h=>P(m,"centerLat",h),placeholder:"e.g., 37.7749",step:"any"}),e.jsx(D,{label:"Altitude AMSL (m)",name:`amsl_m_${m}`,value:L[m]?.amslM||"",onChange:h=>P(m,"amslM",h),placeholder:"e.g., 100.5",step:"any"}),e.jsx(D,{label:"Altitude AGL (m)",name:`agl_m_${m}`,value:L[m]?.aglM||"",onChange:h=>P(m,"aglM",h),placeholder:"e.g., 50.2",step:"any"}),e.jsx(D,{label:"Heading (degrees)",name:`heading_deg_${m}`,value:L[m]?.headingDeg||"",onChange:h=>P(m,"headingDeg",h),placeholder:"e.g., 180.0",step:"any"}),e.jsx(D,{label:"Yaw (degrees)",name:`yaw_deg_${m}`,value:L[m]?.yawDeg||"",onChange:h=>P(m,"yawDeg",h),placeholder:"e.g., 90.0",step:"any"}),e.jsx(D,{label:"Pitch (degrees)",name:`pitch_deg_${m}`,value:L[m]?.pitchDeg||"",onChange:h=>P(m,"pitchDeg",h),placeholder:"e.g., 0.0",step:"any"}),e.jsx(D,{label:"Roll (degrees)",name:`roll_deg_${m}`,value:L[m]?.rollDeg||"",onChange:h=>P(m,"rollDeg",h),placeholder:"e.g., 0.0",step:"any"}),e.jsx("div",{className:t.rtkFixContainer,children:e.jsxs("label",{className:t.rtkFixLabel,children:[e.jsx("input",{type:"checkbox",checked:L[m]?.rtkFix||!1,onChange:h=>P(m,"rtkFix",h.target.checked),className:t.rtkFixCheckbox}),"RTK Fix Available"]})}),e.jsx(D,{label:"Horizontal Std Dev (m)",name:`std_h_m_${m}`,value:L[m]?.stdHM||"",onChange:h=>P(m,"stdHM",h),placeholder:"e.g., 0.1",step:"any"}),e.jsx(D,{label:"Vertical Std Dev (m)",name:`std_v_m_${m}`,value:L[m]?.stdVM||"",onChange:h=>P(m,"stdVM",h),placeholder:"e.g., 0.2",step:"any"})]})]})})]})})},m))]}):e.jsxs("div",{className:t.formGrid,children:[e.jsx("div",{className:t.titleField,children:e.jsx(D,{label:"Title",name:"title",value:o,onChange:Z,placeholder:"Enter a title for this map...",required:!0})}),s!=="drone_image"&&e.jsx(J,{label:"Source",name:"source",value:p,onChange:ae,options:G,keySelector:N=>N.s_code,labelSelector:N=>N.label,required:!0}),e.jsx(J,{label:"Event Type",name:"event_type",value:c,onChange:K,options:q,keySelector:N=>N.t_code,labelSelector:N=>N.label,required:s!=="drone_image"}),e.jsx(J,{label:"EPSG",name:"epsg",value:d,onChange:se,options:Y,keySelector:N=>N.epsg,labelSelector:N=>`${N.srid} (EPSG:${N.epsg})`,placeholder:"EPSG",required:s!=="drone_image"}),e.jsx(J,{label:"Image Type",name:"image_type",value:s,onChange:xe,options:R,keySelector:N=>N.image_type,labelSelector:N=>N.label,required:!0}),e.jsx(Ln,{label:"Countries (optional)",name:"countries",value:_,onChange:ie,options:Q,keySelector:N=>N.c_code,labelSelector:N=>N.label,placeholder:"Select one or more"}),s==="drone_image"&&e.jsx(e.Fragment,{children:e.jsxs("div",{className:t.droneMetadataSection,children:[e.jsx("h4",{className:t.droneMetadataHeading,children:"Drone Flight Data"}),e.jsxs("div",{className:t.droneMetadataGrid,children:[e.jsx(D,{label:"Center Longitude",name:"center_lon",value:C,onChange:oe,placeholder:"e.g., -122.4194",step:"any"}),e.jsx(D,{label:"Center Latitude",name:"center_lat",value:S,onChange:re,placeholder:"e.g., 37.7749",step:"any"}),e.jsx(D,{label:"Altitude AMSL (m)",name:"amsl_m",value:x,onChange:le,placeholder:"e.g., 100.5",step:"any"}),e.jsx(D,{label:"Altitude AGL (m)",name:"agl_m",value:l,onChange:ce,placeholder:"e.g., 50.2",step:"any"}),e.jsx(D,{label:"Heading (degrees)",name:"heading_deg",value:b,onChange:de,placeholder:"e.g., 180.0",step:"any"}),e.jsx(D,{label:"Yaw (degrees)",name:"yaw_deg",value:M,onChange:ue,placeholder:"e.g., 90.0",step:"any"}),e.jsx(D,{label:"Pitch (degrees)",name:"pitch_deg",value:E,onChange:ge,placeholder:"e.g., 0.0",step:"any"}),e.jsx(D,{label:"Roll (degrees)",name:"roll_deg",value:j,onChange:pe,placeholder:"e.g., 0.0",step:"any"}),e.jsx("div",{className:t.rtkFixContainer,children:e.jsxs("label",{className:t.rtkFixLabel,children:[e.jsx("input",{type:"checkbox",checked:F,onChange:N=>me(N.target.checked),className:t.rtkFixCheckbox}),"RTK Fix Available"]})}),e.jsx(D,{label:"Horizontal Std Dev (m)",name:"std_h_m",value:A,onChange:he,placeholder:"e.g., 0.1",step:"any"}),e.jsx(D,{label:"Vertical Std Dev (m)",name:"std_v_m",value:z,onChange:fe,placeholder:"e.g., 0.2",step:"any"})]})]})})]})}function ks({isPerformanceConfirmed:i,scores:s,onScoreChange:o,onConfirmRatings:p,onEditRatings:c}){return i?null:e.jsx(U,{heading:"AI Performance Rating",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsxs("div",{className:t.ratingContent,children:[e.jsx("p",{className:t.ratingDescription,children:"How well did the AI perform on the task?"}),["accuracy","context","usability"].map(d=>e.jsxs("div",{className:t.ratingSlider,children:[e.jsx("label",{className:t.ratingLabel,children:d}),e.jsx("input",{type:"range",min:0,max:100,value:s[d],onChange:_=>o(d,Number(_.target.value)),className:t.ratingInput}),e.jsx("span",{className:t.ratingValue,children:s[d]})]},d)),e.jsx("div",{className:t.confirmButtonContainer,children:e.jsx(w,{name:"confirm-ratings",variant:"secondary",onClick:p,children:"Confirm Ratings"})})]})})}function Is({description:i,analysis:s,recommendedActions:o,onDescriptionChange:p,onAnalysisChange:c,onRecommendedActionsChange:d,onBack:_,onDelete:C,onSubmit:S,onEditRatings:x,isPerformanceConfirmed:l=!1}){const b=M=>{if(M){const E=M.split(`
3
- `),j=E.findIndex(z=>z.startsWith("Description:")),F=E.findIndex(z=>z.startsWith("Analysis:")),A=E.findIndex(z=>z.startsWith("Recommended Actions:"));j!==-1&&F!==-1&&A!==-1&&(p(E.slice(j+1,F).join(`
4
- `).trim()),c(E.slice(F+1,A).join(`
5
- `).trim()),d(E.slice(A+1).join(`
6
- `).trim()))}};return e.jsxs(U,{heading:"Generated Text",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsx("div",{className:"text-left space-y-4",children:e.jsx("div",{children:e.jsx(Xt,{name:"generatedContent",value:`Description:
7
- ${i||"AI-generated description will appear here..."}
8
-
9
- Analysis:
10
- ${s||"AI-generated analysis will appear here..."}
11
-
12
- Recommended Actions:
13
- ${o||"AI-generated recommended actions will appear here..."}`,onChange:b,rows:12,placeholder:"AI-generated content will appear here..."})})}),e.jsxs("div",{className:t.submitSection,children:[e.jsx(w,{name:"back",variant:"secondary",onClick:_,children:"Back"}),l&&x&&e.jsx(w,{name:"edit-ratings",variant:"secondary",onClick:x,children:"Edit Ratings"}),e.jsx(cn,{name:"delete",variant:"tertiary",onClick:C,title:"Delete",ariaLabel:"Delete uploaded image",children:e.jsx(dn,{})}),e.jsx(w,{name:"submit",onClick:S,children:"Submit"})]})]})}function Ms({isOpen:i,imageUrl:s,preview:o,selectedImageData:p,onClose:c}){if(!i)return null;let d,_;return p?(d=URL.createObjectURL(p.file),_=`Image ${p.index+1}: ${p.file.name}`):(d=s||o||void 0,_="Full size map"),e.jsx("div",{className:t.fullSizeModalOverlay,onClick:c,children:e.jsxs("div",{className:t.fullSizeModalContent,onClick:C=>C.stopPropagation(),children:[e.jsx("div",{className:t.fullSizeModalHeader,children:e.jsx(w,{name:"close-modal",variant:"tertiary",size:1,onClick:c,children:"✕"})}),e.jsx("div",{className:t.fullSizeModalImage,children:e.jsx("img",{src:d,alt:_})})]})})}function Ls({isOpen:i,onClose:s}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:s,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:o=>o.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Please Confirm Your Ratings"}),e.jsx("p",{className:t.ratingWarningText,children:'You must confirm your performance ratings before submitting. Please go back to the rating section and click "Confirm Ratings".'}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-warning",variant:"secondary",onClick:s,children:"Close"})})]})})}):null}function Ts({isOpen:i,onConfirm:s,onCancel:o}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Delete Image?"}),e.jsx("p",{className:t.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this uploaded image?"}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-delete",variant:"secondary",onClick:s,children:"Delete"}),e.jsx(w,{name:"cancel-delete",variant:"tertiary",onClick:o,children:"Cancel"})]})]})})}):null}function Ds({isOpen:i,onConfirm:s,onCancel:o}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Leave Page?"}),e.jsx("p",{className:t.ratingWarningText,children:"Your uploaded image will be deleted if you leave this page. Are you sure you want to continue?"}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-navigation",variant:"secondary",onClick:s,children:"Leave Page"}),e.jsx(w,{name:"cancel-navigation",variant:"tertiary",onClick:o,children:"Stay"})]})]})})}):null}function Es({isOpen:i,fallbackInfo:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Model Changed"}),e.jsxs("p",{className:t.ratingWarningText,children:[s.originalModel," is currently unavailable. We've automatically switched to ",s.fallbackModel," to complete your request."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-fallback",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function Ps({isOpen:i,preprocessingInfo:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Converted"}),e.jsxs("p",{className:t.ratingWarningText,children:["Your file ",e.jsx("strong",{children:s.original_filename})," has been converted from",e.jsxs("strong",{children:[" ",s.original_mime_type]})," to",e.jsxs("strong",{children:[" ",s.processed_mime_type]})," for optimal processing.",e.jsx("br",{}),e.jsx("br",{}),"This conversion ensures your file is in the best format for our AI models to analyze."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-preprocessing",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function Fs({isOpen:i,preprocessingFile:s,isPreprocessing:o,preprocessingProgress:p,onConfirm:c,onCancel:d}){return i?e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o?void 0:d,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:_=>_.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Conversion Required"}),e.jsx("p",{className:t.ratingWarningText,children:"The file you selected will be converted to PNG format. This ensures optimal compatibility and processing by our AI models."}),!o&&e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"confirm-preprocessing",variant:"secondary",onClick:c,children:"Convert File"}),e.jsx(w,{name:"cancel-preprocessing",variant:"tertiary",onClick:d,children:"Cancel"})]}),o&&e.jsxs("div",{className:t.preprocessingProgress,children:[e.jsx("p",{children:p}),e.jsx(rn,{className:"text-ifrcRed"})]})]})})}):null}function Rs({isOpen:i,unsupportedFile:s,onClose:o}){return!i||!s?null:e.jsx("div",{className:t.fullSizeModalOverlay,onClick:o,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:p=>p.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"Unsupported File Format"}),e.jsxs("p",{className:t.ratingWarningText,children:["The file ",e.jsx("strong",{children:s.name})," is not supported for upload.",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Supported formats:"}),e.jsx("br",{}),"• Images: JPEG, PNG, TIFF, HEIC, WebP, GIF",e.jsx("br",{}),"• Documents: PDF (will be converted to image)",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Recommendation:"})," Convert your file to JPEG or PNG format for best compatibility."]}),e.jsx("div",{className:t.ratingWarningButtons,children:e.jsx(w,{name:"close-unsupported",variant:"secondary",onClick:o,children:"Got it"})})]})})})}function As({isOpen:i,oversizedFile:s,onClose:o,onCancel:p}){return!i||!s?null:e.jsx("div",{className:t.lightModalOverlay,onClick:p,children:e.jsx("div",{className:t.fullSizeModalContent,onClick:c=>c.stopPropagation(),children:e.jsxs("div",{className:t.ratingWarningContent,children:[e.jsx("h3",{className:t.ratingWarningTitle,children:"File Size Warning"}),e.jsxs("p",{className:t.ratingWarningText,children:["The file ",e.jsx("strong",{children:s.name})," is large (",(s.size/(1024*1024)).toFixed(1),"MB).",e.jsx("br",{}),e.jsx("br",{}),e.jsx("strong",{children:"Warning:"})," This file size might exceed the limits of the AI models we use.",e.jsx("br",{}),e.jsx("br",{}),"You can still proceed, but consider using a smaller file if you encounter issues."]}),e.jsxs("div",{className:t.ratingWarningButtons,children:[e.jsx(w,{name:"continue-size-warning",variant:"secondary",onClick:o,children:"Continue"}),e.jsx(w,{name:"cancel-size-warning",variant:"tertiary",onClick:p,children:"Cancel"})]})]})})})}const Pe="selectedVlmModel";function Pn(){const[i]=Ot(),s=un(),[o,p]=a.useState(1),[c,d]=a.useState(!1),[_,C]=a.useState(!1),S=a.useRef(o),x=a.useRef(null),[l,b]=a.useState(null),[M,E]=a.useState(null),[j,F]=a.useState([]),[A,z]=a.useState(""),[L,G]=a.useState(""),[q,Y]=a.useState(""),[R,Q]=a.useState("crisis_map"),[Z,ae]=a.useState([]),[K,se]=a.useState(""),[ie,oe]=a.useState(""),[re,le]=a.useState(""),[ce,de]=a.useState(""),[ue,ge]=a.useState(""),[pe,me]=a.useState(""),[he,fe]=a.useState(""),[xe,P]=a.useState(""),[N,m]=a.useState(""),[h,Fe]=a.useState(!1),[Re,Ae]=a.useState(""),[ze,Oe]=a.useState(""),[$e,Se]=a.useState([]),[An,zn]=a.useState([]),[On,$n]=a.useState([]),[Bn,Un]=a.useState([]),[Wn,Hn]=a.useState([]),[Vn,Gn]=a.useState([]),[W,be]=a.useState(null),[Be,X]=a.useState([]),[Ne,gn]=a.useState(null),[qn,pn]=a.useState(""),[mn,Ue]=a.useState(""),[hn,We]=a.useState(""),[fn,He]=a.useState(""),[ke,xn]=a.useState({accuracy:50,context:50,usability:50}),[Yn,Ve]=a.useState(!1),[Zn,Ge]=a.useState(null),[ve,Ie]=a.useState(!1),[Kn,vn]=a.useState(!1),[Jn,qe]=a.useState(!1),[Qn,Me]=a.useState(!1),[Ye,Ze]=a.useState(null),[Xn,Ke]=a.useState(!1),[et,_n]=a.useState(null),[nt,Je]=a.useState(!1),[tt,jn]=a.useState(null),[at,ee]=a.useState(!1),[Qe,ne]=a.useState(null),[st,_e]=a.useState(!1),[it,H]=a.useState(""),[ot,Le]=a.useState(!1),[rt,Xe]=a.useState(null),[lt,je]=a.useState(!1),[ct,en]=a.useState(null),[dt,Te]=a.useState(0);S.current=o,x.current=W;const ut=n=>z(n||""),gt=n=>G(n||""),pt=n=>Y(n||""),nn=n=>Q(n||""),mt=n=>ae(Array.isArray(n)?n:[]),ht=n=>oe(n||""),ft=n=>le(n||""),xt=n=>de(n||""),vt=n=>ge(n||""),_t=n=>me(n||""),jt=n=>fe(n||""),wt=n=>P(n||""),Ct=n=>m(n||""),yt=n=>Fe(n||!1),St=n=>Ae(n||""),bt=n=>Oe(n||""),De=n=>p(n),Nt=a.useCallback(()=>{j.length>1&&Te(n=>n>0?n-1:j.length-1)},[j.length]),kt=a.useCallback(()=>{j.length>1&&Te(n=>n<j.length-1?n+1:0)},[j.length]),It=a.useCallback(n=>{n>=0&&n<j.length&&Te(n)},[j.length]),wn=()=>{if(j.length<5){const n=document.createElement("input");n.type="file",n.accept=".jpg,.jpeg,.png,.tiff,.tif,.heic,.heif,.webp,.gif,.pdf",n.onchange=f=>{const u=f.target;if(u.files&&u.files[0]){const g=u.files[0];tn(g)}},n.click()}},Cn=n=>{F(f=>{const u=f.filter((g,r)=>r!==n);return u.length===1?E(u[0]):u.length===0&&E(null),u}),Se(f=>f.filter((u,g)=>g!==n))},Mt=(n,f,u)=>{Se(g=>{const r=[...g];return r[n]||(r[n]={source:"",eventType:"",epsg:"",countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""}),r[n]={...r[n],[f]:u},r})},yn=n=>{const f=["image/jpeg","image/jpg","image/png"],u=[".jpg",".jpeg",".png"];let g=!f.includes(n.type);if(!g&&n.name){const r=n.name.toLowerCase().substring(n.name.lastIndexOf("."));g=!u.includes(r)}return g},Sn=n=>{const f=["text/html","text/css","application/javascript","application/json","text/plain","application/xml","text/xml","application/zip","application/x-zip-compressed","application/x-rar-compressed","application/x-7z-compressed","audio/","video/","text/csv","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document"];for(const u of f)if(n.type.startsWith(u))return!0;if(n.name){const u=n.name.toLowerCase().substring(n.name.lastIndexOf("."));if([".html",".htm",".css",".js",".json",".txt",".xml",".zip",".rar",".7z",".csv",".xlsx",".xls",".pptx",".ppt",".docx",".doc",".mp3",".mp4",".avi",".mov"].includes(u))return!0}return!1},tn=n=>{if(n){if(console.log("File selected:",n.name,"Type:",n.type,"Size:",n.size),n.size/(1024*1024)>5&&(console.log("File too large, showing size warning modal"),en(n),je(!0)),Sn(n)){console.log("File format not supported at all, showing unsupported format modal"),Xe(n),Le(!0);return}yn(n)?(console.log("File needs preprocessing, showing modal"),ne(n),ee(!0)):(console.log("File does not need preprocessing, setting directly"),j.length===0?(E(n),F([n])):F(u=>[...u,n]))}},bn=n=>{if(n){if(console.log("File changed:",n.name,"Type:",n.type,"Size:",n.size),n.size/(1024*1024)>5&&(console.log("File too large, showing size warning modal"),en(n),je(!0)),Sn(n)){console.log("File format not supported at all, showing unsupported format modal"),Xe(n),Le(!0);return}yn(n)?(console.log("File needs preprocessing, showing modal"),ne(n),ee(!0)):(console.log("File does not need preprocessing, replacing last file"),j.length>1?(F(u=>{const g=[...u];return g[g.length-1]=n,g}),j.length===1&&E(n)):(E(n),F([n])))}};async function we(n){const f=await n.text();try{return f?JSON.parse(f):{}}catch{return{error:f}}}function an(n,f){const u=n instanceof Error?n.message:`Failed to ${f.toLowerCase()}`;alert(u)}async function Nn(){if(j.length!==0){d(!0);try{j.length===1?await Lt():await Tt()}catch(n){an(n,"Upload")}finally{d(!1)}}}async function Lt(){console.log("DEBUG: Starting single image upload");const n=new FormData;n.append("file",j[0]),n.append("title",K),n.append("image_type",R),A&&n.append("source",A),L&&n.append("event_type",L),q&&n.append("epsg",q),Z.length>0&&Z.forEach(r=>n.append("countries",r)),R==="drone_image"&&(ie&&n.append("center_lon",ie),re&&n.append("center_lat",re),ce&&n.append("amsl_m",ce),ue&&n.append("agl_m",ue),pe&&n.append("heading_deg",pe),he&&n.append("yaw_deg",he),xe&&n.append("pitch_deg",xe),N&&n.append("roll_deg",N),h&&n.append("rtk_fix",h.toString()),Re&&n.append("std_h_m",Re),ze&&n.append("std_v_m",ze));const f=localStorage.getItem(Pe);f&&n.append("model_name",f);const u=await fetch("/api/images/",{method:"POST",body:n}),g=await we(u);if(!u.ok)throw new Error(g.error||"Upload failed");console.log("DEBUG: Single upload response:",g),await kn(g,!1)}async function Tt(){console.log("DEBUG: Starting multi-image upload");const n=new FormData;j.forEach(r=>n.append("files",r)),n.append("title",K),n.append("image_type",R),$e.forEach((r,v)=>{r.source&&n.append(`source_${v}`,r.source),r.eventType&&n.append(`event_type_${v}`,r.eventType),r.epsg&&n.append(`epsg_${v}`,r.epsg),r.countries.length>0&&r.countries.forEach(T=>n.append(`countries_${v}`,T)),R==="drone_image"&&(r.centerLon&&n.append(`center_lon_${v}`,r.centerLon),r.centerLat&&n.append(`center_lat_${v}`,r.centerLat),r.amslM&&n.append(`amsl_m_${v}`,r.amslM),r.aglM&&n.append(`agl_m_${v}`,r.aglM),r.headingDeg&&n.append(`heading_deg_${v}`,r.headingDeg),r.yawDeg&&n.append(`yaw_deg_${v}`,r.yawDeg),r.pitchDeg&&n.append(`pitch_deg_${v}`,r.pitchDeg),r.rollDeg&&n.append(`roll_deg_${v}`,r.rollDeg),r.rtkFix&&n.append(`rtk_fix_${v}`,r.rtkFix.toString()),r.stdHM&&n.append(`std_h_m_${v}`,r.stdHM),r.stdVM&&n.append(`std_v_m_${v}`,r.stdVM))});const f=localStorage.getItem(Pe);f&&n.append("model_name",f);const u=await fetch("/api/images/multi",{method:"POST",body:n}),g=await we(u);if(!u.ok)throw new Error(g.error||"Upload failed");console.log("DEBUG: Multi upload response:",g),await kn(g,!0)}async function kn(n,f){gn(n.image_url),n.preprocessing_info&&typeof n.preprocessing_info=="object"&&"was_preprocessed"in n.preprocessing_info&&n.preprocessing_info.was_preprocessed===!0&&(jn(n.preprocessing_info),Je(!0));const u=n.image_id;if(!u)throw new Error("Upload failed: image_id not found");if(be(u),f)if(n.image_ids&&Array.isArray(n.image_ids)){const y=n.image_ids;console.log("DEBUG: Storing image IDs for multi-upload:",y),X(y)}else console.log("DEBUG: Multi-upload but no image_ids found, using single ID"),X([u]);else console.log("DEBUG: Storing single image ID:",u),X([u]);const g=n,r=g.raw_json?.fallback_info;r&&(_n({originalModel:r.original_model,fallbackModel:r.fallback_model,reason:r.reason}),Ke(!0));const v=g.raw_json?.metadata;if(v){const y=v.metadata||v;if(y&&typeof y=="object"){const O=[];if(f){const k=y.metadata_images;if(k&&typeof k=="object")for(let $=1;$<=j.length;$++){const Ce=`image${$}`,sn=k[Ce];if(sn&&typeof sn=="object"){const ye=sn;O.push({source:ye.source||"",eventType:ye.type||"",epsg:ye.epsg||"",countries:Array.isArray(ye.countries)?ye.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""})}else O.push({source:"",eventType:"",epsg:"",countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""})}else{const $={source:y.source||"",eventType:y.type||"",epsg:y.epsg||"",countries:Array.isArray(y.countries)?y.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""};for(let Ce=0;Ce<j.length;Ce++)O.push({...$})}}else{const k={source:y.source||"",eventType:y.type||"",epsg:y.epsg||"",countries:Array.isArray(y.countries)?y.countries:[],centerLon:"",centerLat:"",amslM:"",aglM:"",headingDeg:"",yawDeg:"",pitchDeg:"",rollDeg:"",rtkFix:!1,stdHM:"",stdVM:""};O.push(k)}if(Se(O),O.length>0){const k=O[0];if(y&&typeof y=="object"){const $=y.title;$&&se($||"")}z(k.source||""),G(k.eventType||""),Y(k.epsg||""),ae(k.countries||[]),R==="drone_image"&&(oe(k.centerLon||""),le(k.centerLat||""),de(k.amslM||""),ge(k.aglM||""),me(k.headingDeg||""),fe(k.yawDeg||""),P(k.pitchDeg||""),m(k.rollDeg||""),Fe(k.rtkFix||!1),Ae(k.stdHM||""),Oe(k.stdVM||""))}}}const T=g.raw_json?.metadata;T&&(T.description&&Ue(T.description),T.analysis&&We(T.analysis),T.recommended_actions&&He(T.recommended_actions)),g.generated&&pn(g.generated),De("2a")}async function Dt(){if(console.log("handleSubmit called with:",{uploadedImageId:W,title:K,draft:qn}),!W)return alert("No image to submit");if(!ve){vn(!0);return}try{const n=Be.length>0?Be:[W];console.log("DEBUG: Submit - Using image IDs:",n),console.log("DEBUG: Submit - uploadedImageIds:",Be),console.log("DEBUG: Submit - uploadedImageId:",W);for(let v=0;v<n.length;v++){const T=n[v],y=$e[v]||{source:A||"OTHER",eventType:L||"OTHER",epsg:q||"OTHER",countries:Z||[]},O={source:R==="drone_image"?void 0:y.source||"OTHER",event_type:y.eventType||"OTHER",epsg:y.epsg||"OTHER",image_type:R,countries:y.countries||[]};console.log(`Updating metadata for image ${v+1}:`,O);const k=await fetch(`/api/images/${T}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}),$=await we(k);if(!k.ok)throw new Error($.error||`Metadata update failed for image ${v+1}`)}const f=`Description: ${mn}
14
-
15
- Analysis: ${hn}
16
-
17
- Recommended Actions: ${fn}`,u={title:K,edited:f,accuracy:ke.accuracy,context:ke.context,usability:ke.usability};console.log("Updating caption:",u);const g=await fetch(`/api/images/${W}/caption`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)}),r=await we(g);if(!g.ok)throw new Error(r.error||"Caption update failed");be(null),X([]),De(3)}catch(n){an(n,"Submit")}}async function In(){if(console.log("handleDelete called with uploadedImageId:",W),!W){alert("No image to delete. Please try refreshing the page.");return}qe(!0)}async function Et(){try{console.log("Deleting image with ID:",W);const n=await fetch(`/api/images/${W}`,{method:"DELETE"});if(!n.ok){const f=await we(n);throw new Error(f.error||`Delete failed with status ${n.status}`)}qe(!1),Mn()}catch(n){an(n,"Delete")}}const Mn=()=>{Ie(!1),p(1),E(null),F([]),b(null),be(null),X([]),gn(null),se(""),z(""),G(""),Y(""),ae([]),oe(""),le(""),de(""),ge(""),me(""),fe(""),P(""),m(""),Fe(!1),Ae(""),Oe(""),xn({accuracy:50,context:50,usability:50}),pn(""),Ue(""),We(""),He(""),Se([]),Ke(!1),_n(null),Je(!1),jn(null),ee(!1),ne(null),_e(!1),H(""),Le(!1),Xe(null),je(!1),en(null),s("/upload",{replace:!0})},Ee=a.useCallback(n=>{n==="/upload"||n==="/"||(x.current?(Ze(n),Me(!0)):s(n))},[s]);async function Pt(){if(Ye&&x.current)try{await fetch(`/api/images/${x.current}`,{method:"DELETE"}),Me(!1),Ze(null),s(Ye)}catch(n){console.error("Failed to delete image before navigation:",n),Me(!1),Ze(null),s(Ye)}}const Ft=async()=>{if(Qe){_e(!0),H("Starting file conversion...");try{const n=new FormData;n.append("file",Qe),n.append("preprocess_only","true"),H("Converting file format...");const f=await fetch("/api/images/preprocess",{method:"POST",body:n});if(!f.ok)throw new Error("Preprocessing failed");const u=await f.json();H("Finalizing conversion...");const g=atob(u.processed_content),r=new Uint8Array(g.length);for(let y=0;y<g.length;y++)r[y]=g.charCodeAt(y);const v=new File([r],u.processed_filename,{type:u.processed_mime_type}),T=URL.createObjectURL(v);j.length===0?(E(v),F([v])):F(y=>[...y,v]),b(T),H("Conversion complete!"),setTimeout(()=>{ee(!1),ne(null),_e(!1),H("")},1e3)}catch(n){console.error("Preprocessing error:",n),H("Conversion failed. Please try again."),setTimeout(()=>{ee(!1),ne(null),_e(!1),H("")},2e3)}}},Rt=()=>{ee(!1),ne(null),_e(!1),H("")},At=async n=>{C(!0);try{const f=n.map(async v=>{const T=await fetch(`/api/images/${v}`);if(!T.ok)throw new Error(`Failed to fetch image ${v}`);const y=await T.json(),O=await fetch(`/api/images/${v}/file`);if(!O.ok)throw new Error(`Failed to fetch image file ${v}`);const k=await O.blob(),$=y.file_key.split("/").pop()||`contributed_${v}.png`;return{file:new File([k],$,{type:k.type}),imageData:y}}),u=await Promise.all(f),g=u.map(v=>v.file),r=u[0]?.imageData;F(g),X(n),n.length===1&&be(n[0]),g.length>=1&&E(g[0]),r?.image_type&&Q(r.image_type)}catch(f){console.error("Failed to fetch contributed images:",f),alert(`Failed to load contributed images: ${f instanceof Error?f.message:"Unknown error"}`)}finally{C(!1)}};return a.useEffect(()=>{Promise.all([fetch("/api/sources").then(n=>n.json()),fetch("/api/types").then(n=>n.json()),fetch("/api/spatial-references").then(n=>n.json()),fetch("/api/image-types").then(n=>n.json()),fetch("/api/countries").then(n=>n.json()),fetch("/api/models").then(n=>n.json())]).then(([n,f,u,g,r,v])=>{!localStorage.getItem(Pe)&&v?.length&&localStorage.setItem(Pe,v[0].m_code),zn(n),$n(f),Un(u),Hn(g),Gn(r),n.length>0&&z(n[0].s_code),G("OTHER"),Y("OTHER"),g.length>0&&!i.get("imageType")&&!R&&Q(g[0].image_type)})},[i,R]),a.useEffect(()=>(window.confirmNavigationIfNeeded=n=>{Ee(n)},()=>{delete window.confirmNavigationIfNeeded}),[Ee]),a.useEffect(()=>{const n=g=>{if(x.current){const r="You have an uploaded image that will be deleted if you leave this page. Are you sure you want to leave?";return g.preventDefault(),g.returnValue=r,r}},f=()=>{x.current&&fetch(`/api/images/${x.current}`,{method:"DELETE"}).catch(console.error)},u=g=>{const r=g.target,v=r.closest("a[href]")||r.closest("[data-navigate]");if(v&&x.current){const T=v.getAttribute("href")||v.getAttribute("data-navigate");T&&T!=="#"&&!T.startsWith("javascript:")&&!T.startsWith("mailto:")&&(g.preventDefault(),g.stopPropagation(),Ee(T))}};return window.addEventListener("beforeunload",n),document.addEventListener("click",u,!0),()=>{window.removeEventListener("beforeunload",n),document.removeEventListener("click",u,!0),f()}},[Ee]),a.useEffect(()=>{if(!M){b(null);return}const n=URL.createObjectURL(M);return b(n),()=>URL.revokeObjectURL(n)},[M]),a.useEffect(()=>{const n=i.get("contribute"),f=i.get("imageIds");if(n==="true"&&f){const u=f.split(",").filter(g=>g.trim());u.length>0&&At(u)}},[i]),a.useEffect(()=>{o==="2b"&&Te(0)},[o]),e.jsxs(ln,{children:[o!==3&&e.jsx("div",{className:"max-w-7xl mx-auto",children:e.jsxs("div",{className:t.uploadContainer,"data-step":o,children:[o===1&&!i.get("step")&&!_&&e.jsx(Dn,{files:j,file:M,preview:l,imageType:R,onFileChange:tn,onRemoveImage:Cn,onAddImage:wn,onImageTypeChange:nn,onChangeFile:bn}),o===1&&i.get("contribute")==="true"&&!_&&j.length>0&&e.jsx(Dn,{files:j,file:M,preview:l,imageType:R,onFileChange:tn,onRemoveImage:Cn,onAddImage:wn,onImageTypeChange:nn,onChangeFile:bn}),c&&e.jsxs("div",{className:t.loadingContainer,children:[e.jsx(rn,{className:"text-ifrcRed"}),e.jsx("p",{className:t.loadingText,children:"Generating..."})]}),_&&e.jsxs("div",{className:t.loadingContainer,children:[e.jsx(rn,{className:"text-ifrcRed"}),e.jsx("p",{className:t.loadingText,children:"Loading contribution..."})]}),(o===1&&!c&&!_||o===1&&i.get("contribute")==="true"&&!c&&!_&&j.length>0)&&e.jsx("div",{className:t.generateButtonContainer,children:Ne?e.jsx(w,{name:"generate-from-url",onClick:Nn,children:"Generate Caption"}):e.jsx(w,{name:"generate",disabled:j.length===0,onClick:Nn,children:"Generate"})}),o==="2a"&&e.jsxs("div",{className:t.step2Layout,children:[e.jsx("div",{className:t.mapColumn,children:e.jsx(En,{files:j,imageUrl:Ne,preview:l,onViewFullSize:n=>{Ge(n||null),Ve(!0)}})}),e.jsx("div",{className:t.contentColumn,children:e.jsxs("div",{className:t.metadataSectionCard,children:[e.jsx(Ns,{files:j,imageType:R,title:K,source:A,eventType:L,epsg:q,countries:Z,centerLon:ie,centerLat:re,amslM:ce,aglM:ue,headingDeg:pe,yawDeg:he,pitchDeg:xe,rollDeg:N,rtkFix:h,stdHM:Re,stdVM:ze,metadataArray:$e,sources:An,types:On,spatialReferences:Bn,imageTypes:Wn,countriesOptions:Vn,onTitleChange:n=>se(n||""),onSourceChange:ut,onEventTypeChange:gt,onEpsgChange:pt,onCountriesChange:mt,onCenterLonChange:ht,onCenterLatChange:ft,onAmslMChange:xt,onAglMChange:vt,onHeadingDegChange:_t,onYawDegChange:jt,onPitchDegChange:wt,onRollDegChange:Ct,onRtkFixChange:yt,onStdHMChange:St,onStdVMChange:bt,onImageTypeChange:nn,updateMetadataForImage:Mt}),e.jsxs("div",{className:t.confirmSection,children:[e.jsx(cn,{name:"delete",variant:"tertiary",onClick:In,title:"Delete",ariaLabel:"Delete uploaded image",children:e.jsx(dn,{})}),e.jsx(w,{name:"confirm-metadata",onClick:()=>De("2b"),children:"Next"})]})]})})]}),o==="2b"&&e.jsxs("div",{className:t.step2bLayout,children:[e.jsxs("div",{className:`${t.topRow} ${ve?t.ratingHidden:""}`,children:[e.jsx("div",{className:t.imageSection,children:e.jsx(En,{files:j,imageUrl:Ne,preview:l,onViewFullSize:n=>{Ge(n||null),Ve(!0)},currentImageIndex:dt,onGoToPrevious:Nt,onGoToNext:kt,onGoToImage:It,showCarousel:!0})}),!ve&&e.jsx("div",{className:t.metadataSectionCard,children:e.jsx(ks,{isPerformanceConfirmed:ve,scores:ke,onScoreChange:(n,f)=>xn(u=>({...u,[n]:f})),onConfirmRatings:()=>Ie(!0),onEditRatings:()=>Ie(!1)})})]}),e.jsx("div",{className:t.metadataSectionCard,children:e.jsx(Is,{description:mn,analysis:hn,recommendedActions:fn,onDescriptionChange:n=>Ue(n||""),onAnalysisChange:n=>We(n||""),onRecommendedActionsChange:n=>He(n||""),onBack:()=>De("2a"),onDelete:In,onSubmit:Dt,onEditRatings:()=>Ie(!1),isPerformanceConfirmed:ve})})]})]})}),o===3&&e.jsxs("div",{className:t.successContainer,children:[e.jsx(te,{level:2,className:t.successHeading,children:"Saved!"}),e.jsx("p",{className:t.successText,children:i.get("contribute")==="true"?"Your contribution has been successfully saved.":"Your caption has been successfully saved."}),e.jsx("div",{className:t.successButton,children:e.jsx(w,{name:"upload-another",onClick:()=>{Mn()},children:"Upload Another"})})]}),e.jsx(Ms,{isOpen:Yn,imageUrl:Ne,preview:l,selectedImageData:Zn,onClose:()=>{Ve(!1),Ge(null)}}),e.jsx(Ls,{isOpen:Kn,onClose:()=>vn(!1)}),e.jsx(Ts,{isOpen:Jn,onConfirm:Et,onCancel:()=>qe(!1)}),e.jsx(Ds,{isOpen:Qn,onConfirm:Pt,onCancel:()=>Me(!1)}),e.jsx(Es,{isOpen:Xn,fallbackInfo:et,onClose:()=>Ke(!1)}),e.jsx(Ps,{isOpen:nt,preprocessingInfo:tt,onClose:()=>Je(!1)}),e.jsx(Fs,{isOpen:at,preprocessingFile:Qe,isPreprocessing:st,preprocessingProgress:it,onConfirm:Ft,onCancel:Rt}),e.jsx(Rs,{isOpen:ot,unsupportedFile:rt,onClose:()=>Le(!1)}),e.jsx(As,{isOpen:lt,oversizedFile:ct,onClose:()=>je(!1),onCancel:()=>je(!1)})]})}const zs="_helpContainer_1wavj_1",Os="_helpSection_1wavj_13",$s="_sectionHeader_1wavj_49",Bs="_sectionTitle_1wavj_91",Us="_sectionContent_1wavj_105",Ws="_guidelinesList_1wavj_119",Hs="_buttonContainer_1wavj_181",I={helpContainer:zs,helpSection:Os,sectionHeader:$s,sectionTitle:Bs,sectionContent:Us,guidelinesList:Ws,buttonContainer:Hs};function Vs(){const i=un(),{setShowReferenceExamples:s}=bs(),o=()=>{i("/upload")},p=()=>{s(!0),i("/explore")},c=()=>{i("/analytics?view=crisis_maps")};return e.jsx(ln,{className:"py-10",children:e.jsx("div",{className:I.helpContainer,children:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Introduction"})}),e.jsx("div",{className:I.sectionContent,children:"In collaboration with the IFRC, PromptAid Vision is a tool that generates textual descriptions of crisis maps/crisis drone images utiliing Visual language models. This prototype is for collecting data for the fine-tuning of our own models. We aim to utilize AI tools to support national societies with rapid decision making during emergencies."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"upload-now",variant:"secondary",onClick:o,children:"Upload now →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Guidelines"})}),e.jsxs("div",{className:I.sectionContent,children:["To make the process smoother, please follow the guidelines below:",e.jsxs("ul",{className:I.guidelinesList,children:[e.jsx("li",{children:"Avoid uploading images that are not crisis maps/crisis drone images."}),e.jsx("li",{children:"Confirm the image details prior to modifying the description."}),e.jsx("li",{children:"Before the modification, please read the description generated and provide a rating via the rating sliders."}),e.jsx("li",{children:'Click the "Submit" button to save the description.'})]})]}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"see-examples",variant:"secondary",onClick:p,children:"See examples →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"VLMs"})}),e.jsx("div",{className:I.sectionContent,children:"PromptAid Vision uses a variety of Visual Language Models (VLMs). A random VLM is selected for each upload. Therefore feel free to delete and reupload. You can view performance details here:"}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"view-vlm-details",variant:"secondary",onClick:c,children:"View VLM details →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Dataset"})}),e.jsx("div",{className:I.sectionContent,children:"All users are able to export the dataset. You could apply filters when exporting, and it have the option to organize based on model fine-tuning formats."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"export-dataset",variant:"secondary",onClick:()=>{s(!1),i("/explore"),setTimeout(()=>{const d=document.querySelector('[name="export-dataset"]');d&&d.click()},100)},children:"Export dataset →"})})]}),e.jsxs("div",{className:I.helpSection,children:[e.jsx("div",{className:I.sectionHeader,children:e.jsx(te,{level:3,className:I.sectionTitle,children:"Contact us"})}),e.jsx("div",{className:I.sectionContent,children:"Need help or have questions about PromptAid Vision? Our team is here to support you."}),e.jsx("div",{className:I.buttonContainer,children:e.jsx(w,{name:"contact-support",variant:"secondary",disabled:!0,children:"Get in touch →"})})]})]})})})}const Gs=a.createContext(void 0),qs=({children:i})=>{const[s,o]=a.useState(!1),[p,c]=a.useState(!0),d=async()=>{const x=localStorage.getItem("adminToken");if(!x){o(!1),c(!1);return}try{(await fetch("/api/admin/verify",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`}})).ok?o(!0):(localStorage.removeItem("adminToken"),o(!1))}catch(l){console.error("Error verifying admin token:",l),localStorage.removeItem("adminToken"),o(!1)}finally{c(!1)}},_=async x=>{try{const l=await fetch("/api/admin/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:x})});if(l.ok){const b=await l.json();return localStorage.setItem("adminToken",b.access_token),o(!0),!0}else return!1}catch(l){return console.error("Login error:",l),!1}},C=()=>{localStorage.removeItem("adminToken"),o(!1)};a.useEffect(()=>{d()},[]);const S={isAuthenticated:s,isLoading:p,login:_,logout:C,verifyToken:d};return e.jsx(Gs.Provider,{value:S,children:i})},Ys=a.lazy(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),Zs=a.lazy(()=>B(()=>import("./index-CwG_dxMe.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),Ks=a.lazy(()=>B(()=>import("./AdminPage-Dz89QBtX.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),Js=a.lazy(()=>B(()=>import("./index-jo0G9peP.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])));class Qs extends a.Component{constructor(s){super(s),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(s,o){console.error("Error caught by boundary:",s,o)}render(){return this.state.hasError?e.jsxs("div",{style:{padding:"20px",textAlign:"center"},children:[e.jsx("h2",{children:"Something went wrong"}),e.jsx("p",{children:"Please refresh the page to try again."}),e.jsx("button",{onClick:()=>window.location.reload(),children:"Refresh Page"})]}):this.props.children}}const V=i=>{const s=i();return s.catch(()=>{}),s},Xs=()=>{"requestIdleCallback"in window?requestIdleCallback(()=>{V(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),V(()=>B(()=>import("./index-CwG_dxMe.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),V(()=>B(()=>import("./AdminPage-Dz89QBtX.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),V(()=>B(()=>import("./index-jo0G9peP.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])))}):setTimeout(()=>{V(()=>B(()=>import("./index-DMU6q_dg.js"),__vite__mapDeps([0,1,2,3,4,5]))),V(()=>B(()=>import("./index-CwG_dxMe.js"),__vite__mapDeps([6,1,2,3,4,7,8,9,10]))),V(()=>B(()=>import("./AdminPage-Dz89QBtX.js"),__vite__mapDeps([11,1,2,7,3,4,12]))),V(()=>B(()=>import("./index-jo0G9peP.js"),__vite__mapDeps([13,1,2,3,4,7,8,9,14])))},1e3)},ei=$t([{element:e.jsx(ga,{}),children:[{path:"/",element:e.jsx(Pn,{})},{path:"/upload",element:e.jsx(Pn,{})},{path:"/analytics",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Analytics..."}),children:e.jsx(Ys,{})})},{path:"/explore",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Explore..."}),children:e.jsx(Zs,{})})},{path:"/help",element:e.jsx(Vs,{})},{path:"/admin",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Admin..."}),children:e.jsx(Ks,{})})},{path:"/map/:mapId",element:e.jsx(a.Suspense,{fallback:e.jsx("div",{children:"Loading Map Details..."}),children:e.jsx(Js,{})})}]}],{basename:"/"});function ni(){const[i,s]=a.useState([]);a.useEffect(()=>{Xs()},[]);const o=a.useCallback(C=>{s(S=>sa([...S,C],x=>x.name)??S)},[s]),p=a.useCallback(C=>{s(S=>{const x=S.findIndex(b=>b.name===C);if(x===-1)return S;const l=[...S];return l.splice(x,1),l})},[s]),c=a.useCallback((C,S)=>{s(x=>{const l=x.findIndex(M=>M.name===C);if(l===-1)return x;const b=[...x];return b[l]={...b[l],...S},b})},[s]),d=a.useMemo(()=>({alerts:i,addAlert:o,removeAlert:p,updateAlert:c}),[i,o,p,c]),_=a.useMemo(()=>({languageNamespaceStatus:{},setLanguageNamespaceStatus:()=>{},currentLanguage:"en",setCurrentLanguage:()=>{},strings:{},setStrings:()=>{},registerNamespace:()=>{}}),[]);return e.jsx(Qs,{children:e.jsx(ea.Provider,{value:d,children:e.jsx(na.Provider,{value:_,children:e.jsx(qs,{children:e.jsx(Ss,{children:e.jsx(Bt,{router:ei})})})})})})}function ti(){return e.jsx(ni,{})}Ut.createRoot(document.getElementById("root")).render(e.jsx(a.StrictMode,{children:e.jsx(ti,{})}));export{Gs as A,Ms as F,B as _,bs as u};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
py_backend/static/assets/index-iAxVbTZE.js DELETED
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-utils-Db80MiSc.js","assets/vendor-DxpCibxB.js","assets/vendor-react-BxsGb6Ph.js"])))=>i.map(i=>d[i]);
2
- import{u as Xe,F as Ye,_ as ea}from"./index-DyXqjI96.js";import{j as a,r as g}from"./vendor-react-BxsGb6Ph.js";import{N as X,n as T,_ as ve,L as aa,z as E,C as se,c as ie,D as ta}from"./vendor-ui-l_DttnRj.js";import{u as sa}from"./useAdmin-BStaIYmd.js";import{F as ia,E as na}from"./ExportModal-DxEvAVvI.js";import{n as oa,a as ra}from"./vendor-DxpCibxB.js";const la="_tabSelector_usssr_1",ca="_imageContainer_usssr_12",da="_imagePlaceholder_usssr_33",ga="_metadataTags_usssr_45",ma="_metadataTag_usssr_45",ua="_captionContainer_usssr_67",pa="_captionText_usssr_74",fa="_gridLayout_usssr_131",ha="_detailsSection_usssr_155",_a="_loadingContainer_usssr_161",xa="_errorContainer_usssr_171",ya="_fullSizeModalOverlay_usssr_205",va="_fullSizeModalContent_usssr_219",wa="_ratingWarningContent_usssr_230",Ca="_ratingWarningTitle_usssr_236",ja="_ratingWarningText_usssr_243",Ia="_ratingWarningButtons_usssr_250",Na="_carouselContainer_usssr_365",ba="_carouselImageWrapper_usssr_370",Sa="_carouselImage_usssr_370",La="_carouselNavigation_usssr_393",Da="_carouselButton_usssr_405",ka="_carouselIndicators_usssr_429",Ma="_carouselIndicator_usssr_429",Ta="_carouselIndicatorActive_usssr_458",Fa="_singleImageContainer_usssr_488",Ea="_viewImageButtonContainer_usssr_494",p={tabSelector:la,imageContainer:ca,imagePlaceholder:da,metadataTags:ga,metadataTag:ma,captionContainer:ua,captionText:pa,gridLayout:fa,detailsSection:ha,loadingContainer:_a,errorContainer:xa,fullSizeModalOverlay:ya,fullSizeModalContent:va,ratingWarningContent:wa,ratingWarningTitle:Ca,ratingWarningText:ja,ratingWarningButtons:Ia,carouselContainer:Na,carouselImageWrapper:ba,carouselImage:Sa,carouselNavigation:La,carouselButton:Da,carouselIndicators:ka,carouselIndicator:Ma,carouselIndicatorActive:Ta,singleImageContainer:Fa,viewImageButtonContainer:Ea};function it(){const{mapId:u}=oa(),y=ra(),{isAuthenticated:ne}=sa();console.log("MapDetailsPage: Current URL:",window.location.href),console.log("MapDetailsPage: Hash:",window.location.hash),console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId length:",u?.length),console.log("MapDetailsPage: mapId value:",JSON.stringify(u));const we=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;if(!u||u==="undefined"||u==="null"||u.trim()===""||!we.test(u))return a.jsx(X,{children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center py-12",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Invalid Map ID"}),a.jsx("div",{children:"The map ID provided is not valid."}),a.jsxs("div",{className:"text-sm text-gray-500 mt-2",children:['Debug Info: mapId = "',u,'" (type: ',typeof u,")"]}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})});const[oe,Ce]=g.useState("mapDetails"),[e,Y]=g.useState(null),[W,P]=g.useState(!0),[re,O]=g.useState(null),[le,je]=g.useState([]),[ce,Ie]=g.useState([]),[de,Ne]=g.useState([]),[ge,be]=g.useState([]),[Se,Le]=g.useState([]),[De,ke]=g.useState(!1),[Me,Te]=g.useState(!1),[B,q]=g.useState(!1),[Fe,G]=g.useState(!1),[me,Z]=g.useState(!1),[Ee,ee]=g.useState(!1),[Re,ae]=g.useState(!1),[Ra,$a]=g.useState("standard"),[R,Pa]=g.useState(80),[J,Aa]=g.useState(10),[za,Oa]=g.useState(10),[Ua,Wa]=g.useState(!0),[Ba,Ja]=g.useState(!0),[K,Q]=g.useState(!1),[$e,ue]=g.useState(!1),[Pe,pe]=g.useState(null),[D,H]=g.useState([]),[A,z]=g.useState(0),[V,fe]=g.useState(!1),{search:d,setSearch:Ha,srcFilter:v,setSrcFilter:Va,catFilter:w,setCatFilter:qa,regionFilter:C,setRegionFilter:Ga,countryFilter:j,setCountryFilter:Za,imageTypeFilter:I,setImageTypeFilter:Ka,uploadTypeFilter:N,setUploadTypeFilter:Qa,showReferenceExamples:k,setShowReferenceExamples:Ae,clearAllFilters:ze}=Xe(),Oe=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],he=g.useCallback(async t=>{if(console.log("fetchMapData called with id:",t),console.log("fetchMapData id type:",typeof t),!t||t==="undefined"||t==="null"||t.trim()===""){console.log("fetchMapData: Invalid ID detected:",t),O("Invalid Map ID"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)){console.log("fetchMapData: Invalid UUID format:",t),O("Invalid Map ID format"),P(!1);return}console.log("fetchMapData: Making API call for id:",t),q(!0),P(!0);try{const f=await fetch(`/api/images/${t}`);if(!f.ok)throw new Error("Map not found");const s=await f.json();if(Y(s),s.all_image_ids&&s.all_image_ids.length>1)await _e(s.all_image_ids);else if(s.image_count&&s.image_count>1){console.log("Multi-upload detected but no all_image_ids, trying grouped endpoint");try{const l=await fetch("/api/images/grouped");if(l.ok){const r=(await l.json()).find(c=>c.all_image_ids&&c.all_image_ids.includes(s.image_id));r&&r.all_image_ids?await _e(r.all_image_ids):(H([s]),z(0))}else H([s]),z(0)}catch(l){console.error("Failed to fetch from grouped endpoint:",l),H([s]),z(0)}}else H([s]),z(0);await te(t)}catch(f){O(f instanceof Error?f.message:"Unknown error occurred")}finally{P(!1),q(!1)}},[]),_e=g.useCallback(async t=>{console.log("fetchAllImages called with imageIds:",t),fe(!0);try{const o=t.map(async s=>{const l=await fetch(`/api/images/${s}`);if(!l.ok)throw new Error(`Failed to fetch image ${s}`);return l.json()}),f=await Promise.all(o);H(f),z(0),console.log("fetchAllImages: Loaded",f.length,"images")}catch(o){console.error("fetchAllImages error:",o),O(o instanceof Error?o.message:"Failed to load all images")}finally{fe(!1)}},[]),Ue=g.useCallback(()=>{D.length>1&&z(t=>t>0?t-1:D.length-1)},[D.length]),We=g.useCallback(()=>{D.length>1&&z(t=>t<D.length-1?t+1:0)},[D.length]),Be=g.useCallback(t=>{t>=0&&t<D.length&&z(t)},[D.length]),xe=g.useCallback(t=>{const o=t||(D.length>0?D[A]:e);o&&(pe(o),ue(!0))},[D,A,e]),Je=g.useCallback(()=>{ue(!1),pe(null)},[]);g.useEffect(()=>{if(console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId value:",u),!u||u==="undefined"||u==="null"||u.trim()===""||u===void 0||u===null){console.log("MapDetailsPage: Invalid mapId, setting error"),O("Map ID is required"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("MapDetailsPage: Invalid UUID format:",u),O("Invalid Map ID format"),P(!1);return}console.log("MapDetailsPage: Fetching data for mapId:",u),he(u)},[u,he]),g.useEffect(()=>{if(!e||W||K)return;if(!u||u==="undefined"||u==="null"||u.trim()===""){console.log("Auto-navigation skipped: Invalid mapId");return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("Auto-navigation skipped: Invalid mapId format");return}(()=>{const f=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),s=!v||e.source===v,l=!w||e.event_type===w,i=!C||e.countries.some(M=>M.r_code===C),r=!j||e.countries.some(M=>M.c_code===j),c=!I||e.image_type===I,n=!k||e.starred===!0,x=f&&s&&l&&i&&r&&c&&n;return console.log("Auto-navigation check:",{mapId:u,search:d,srcFilter:v,catFilter:w,regionFilter:C,countryFilter:j,imageTypeFilter:I,showReferenceExamples:k,matchesSearch:f,matchesSource:s,matchesCategory:l,matchesRegion:i,matchesCountry:r,matchesImageType:c,matchesReferenceExamples:n,matches:x}),x})()||(console.log("Current map does not match filters, looking for first matching item"),fetch("/api/images").then(f=>f.json()).then(f=>{console.log("Auto-navigation: Received images from API:",f.length),console.log("Auto-navigation: First few images:",f.slice(0,3).map(l=>({image_id:l.image_id,title:l.title})));const s=f.find(l=>{const i=!d||l.title?.toLowerCase().includes(d.toLowerCase())||l.generated?.toLowerCase().includes(d.toLowerCase())||l.source?.toLowerCase().includes(d.toLowerCase())||l.event_type?.toLowerCase().includes(d.toLowerCase()),r=!v||l.source===v,c=!w||l.event_type===w,n=!C||l.countries?.some(m=>m.r_code===C),x=!j||l.countries?.some(m=>m.c_code===j),M=!I||l.image_type===I,S=!k||l.starred===!0;return i&&r&&c&&n&&x&&M&&S});console.log("Auto-navigation: Found first matching image:",s?{image_id:s.image_id,title:s.title,source:s.source}:"No matching image found"),s&&s.image_id&&s.image_id!=="undefined"&&s.image_id!=="null"&&s.image_id.trim()!==""&&s.image_id!==u&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s.image_id)?(console.log("Auto-navigating to:",s.image_id),y(`/map/${s.image_id}`)):console.error("Auto-navigation blocked: Invalid image_id format:",s.image_id))}).catch(console.error))},[e,d,v,w,C,j,I,k,u,y,W,K]);const te=async t=>{if(!(!t||t==="undefined"||t==="null"||t.trim()===""))try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.findIndex(i=>i.image_id===t);ke(s.length>1&&l>0),Te(s.length>1&&l<s.length-1)}}catch(o){console.error("Failed to check navigation availability:",o)}},ye=async t=>{if(!B){q(!0);try{const o=await fetch("/api/images/grouped");if(o.ok){const f=await o.json(),s=f.filter(n=>{const x=!d||n.title?.toLowerCase().includes(d.toLowerCase())||n.generated?.toLowerCase().includes(d.toLowerCase())||n.source?.toLowerCase().includes(d.toLowerCase())||n.event_type?.toLowerCase().includes(d.toLowerCase()),M=!v||n.source===v,S=!w||n.event_type===w,m=!C||n.countries?.some($=>$.r_code===C),b=!j||n.countries?.some($=>$.c_code===j),_=!I||n.image_type===I,L=!N||N==="single"&&(!n.image_count||n.image_count<=1)||N==="multiple"&&n.image_count&&n.image_count>1,U=!k||n.starred===!0;return x&&M&&S&&m&&b&&_&&L&&U});if(s.findIndex(n=>n.image_id===u)===-1){const n=f.find(x=>x.image_id===u);n&&s.push(n)}const i=s.findIndex(n=>n.image_id===u);if(i===-1){console.error("Current image not found in filtered list");return}let r;t==="previous"?r=i>0?i-1:s.length-1:r=i<s.length-1?i+1:0;const c=s[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Carousel navigating to:",c.image_id),y(`/map/${c.image_id}`)):console.error("Carousel navigation blocked: Invalid image_id format:",c.image_id))}}catch(o){console.error("Failed to navigate to item:",o)}finally{q(!1)}}};g.useEffect(()=>{e&&u&&!W&&!K&&te(u)},[e,u,d,v,w,C,j,I,N,k,W,K,te]),g.useEffect(()=>{Promise.all([fetch("/api/sources").then(t=>t.json()),fetch("/api/types").then(t=>t.json()),fetch("/api/image-types").then(t=>t.json()),fetch("/api/regions").then(t=>t.json()),fetch("/api/countries").then(t=>t.json())]).then(([t,o,f,s,l])=>{je(t),Ie(o),Ne(f),be(s),Le(l)}).catch(console.error)},[]);const He=async()=>{e&&G(!0)},Ve=async()=>{if(e)try{(await fetch(`/api/images/${e.image_id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({starred:!e.starred})})).ok?Y(o=>o?{...o,starred:!o.starred}:null):console.error("Failed to toggle starred status")}catch(t){console.error("Error toggling starred status:",t)}},qe=async()=>{if(e){Q(!0);try{if(console.log("Deleting image with ID:",e.image_id),(await fetch(`/api/images/${e.image_id}`,{method:"DELETE"})).ok){Y(o=>o?{...o,starred:!o.starred}:null),G(!1);try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.filter(i=>i.image_id!==e.image_id);if(l.length>0){const i=s.findIndex(c=>c.image_id===e.image_id);let r;if(i===s.length-1?r=i-1:r=i,console.log("Navigation target:",{currentIndex:i,targetIndex:r,targetId:l[r]?.image_id}),r>=0&&r<l.length){const c=l[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Navigating to:",c.image_id),y(`/map/${c.image_id}`)):(console.error("Navigation blocked: Invalid image_id format:",c.image_id),y("/explore")):(console.error("Navigation blocked: Invalid image_id:",c?.image_id),y("/explore"))}else l[0]&&l[0].image_id&&l[0].image_id!=="undefined"&&l[0].image_id!=="null"&&l[0].image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(l[0].image_id)?(console.log("Fallback navigation to first item:",l[0].image_id),y(`/map/${l[0].image_id}`)):(console.error("Fallback navigation blocked: Invalid image_id format:",l[0].image_id),y("/explore")):(console.log("No valid remaining items, going to explore page"),y("/explore"))}else console.log("No remaining items, going to explore page"),y("/explore")}else y("/explore")}catch(o){console.error("Failed to navigate to next item:",o),y("/explore")}finally{Q(!1)}}else console.error("Delete failed"),Q(!1)}catch(t){console.error("Delete failed:",t),Q(!1)}}},h=g.useMemo(()=>{if(!e)return null;if(!d&&!v&&!w&&!C&&!j&&!I&&!N&&!k)return e;const t=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),o=!v||e.source===v,f=!w||e.event_type===w,s=!C||e.countries.some(x=>x.r_code===C),l=!j||e.countries.some(x=>x.c_code===j),i=!I||e.image_type===I,r=!N||N==="single"&&(!e.image_count||e.image_count<=1)||N==="multiple"&&e.image_count&&e.image_count>1,c=!k||e.starred===!0,n=t&&o&&f&&s&&l&&i&&r&&c;return!n&&(d||v||w||C||j||I||N||k)?(setTimeout(()=>{Ge()},100),e):n?e:null},[e,d,v,w,C,j,I,N,k]),Ge=g.useCallback(async()=>{P(!0);try{const t=await fetch("/api/images/grouped");if(t.ok){const f=(await t.json()).filter(s=>{const l=!d||s.title?.toLowerCase().includes(d.toLowerCase())||s.generated?.toLowerCase().includes(d.toLowerCase())||s.source?.toLowerCase().includes(d.toLowerCase())||s.event_type?.toLowerCase().includes(d.toLowerCase()),i=!v||s.source===v,r=!w||s.event_type===w,c=!C||s.countries?.some(m=>m.r_code===C),n=!j||s.countries?.some(m=>m.c_code===j),x=!I||s.image_type===I,M=!N||N==="single"&&(!s.image_count||s.image_count<=1)||N==="multiple"&&s.image_count&&s.image_count>1,S=!k||s.starred===!0;return l&&i&&r&&c&&n&&x&&M&&S});if(f.length>0){const s=f[0];s&&s.image_id&&y(`/map/${s.image_id}`)}else y("/explore")}}catch(t){console.error("Failed to navigate to matching image:",t),y("/explore")}finally{P(!1)}},[d,v,w,C,j,I,N,k,y]),Ze=()=>{if(!e)return;if(!e.all_image_ids||e.all_image_ids.length<=1){const s=`/upload?step=1&contribute=true&imageIds=${[e.image_id].join(",")}`;y(s);return}const o=`/upload?step=1&contribute=true&imageIds=${e.all_image_ids.join(",")}`;y(o)},F=(t,o)=>({image:`images/${o}`,caption:t.edited||t.generated||"",metadata:{image_id:t.image_count&&t.image_count>1?t.all_image_ids||[t.image_id]:t.image_id,title:t.title,source:t.source,event_type:t.event_type,image_type:t.image_type,countries:t.countries,starred:t.starred,image_count:t.image_count||1}}),Ke=async t=>{if(e){ee(!0),ae(!1);try{const o=(await ea(async()=>{const{default:r}=await import("./vendor-utils-Db80MiSc.js").then(c=>c.j);return{default:r}},__vite__mapDeps([0,1,2]))).default,f=new o;if(e.image_type==="crisis_map"){const r=f.folder("crisis_maps_dataset"),c=r?.folder("images");if(c)try{const n=e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:[e.image_id],x=n.map(async(m,b)=>{try{const _=await fetch(`/api/images/${m}/file`);if(!_.ok)throw new Error(`Failed to fetch image ${m}`);const L=await _.blob(),U=e.file_key.split(".").pop()||"jpg",$=`0001_${String(b+1).padStart(2,"0")}.${U}`;return c.file($,L),{success:!0,fileName:$,imageId:m}}catch(_){return console.error(`Failed to process image ${m}:`,_),{success:!1,fileName:"",imageId:m}}}),S=(await Promise.all(x)).filter(m=>m.success);if(S.length===0)throw new Error("No images could be processed");if(t==="fine-tuning"){const m=[],b=[],_=[],L=S.map(Qe=>`images/${Qe.fileName}`),U=Math.random(),$={image:L.length===1?L[0]:L,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};U<R/100?m.push($):U<(R+J)/100?b.push($):_.push($),r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m=S.map(_=>`images/${_.fileName}`),b={image:m.length===1?m[0]:m,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(b,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else if(e.image_type==="drone_image"){const r=f.folder("drone_images_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else{const r=f.folder("generic_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}const s=await f.generateAsync({type:"blob"}),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`dataset_${e.image_type}_${e.image_id}_${t}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(l),console.log(`Exported ${e.image_type} dataset with 1 image in ${t} mode`),ae(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{ee(!1)}}};return W?a.jsx(X,{children:a.jsx("div",{className:p.loadingContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4",children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading map details..."})]})})}):re||!e?a.jsx(X,{children:a.jsx("div",{className:p.errorContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Unable to load map"}),a.jsx("div",{children:re||"Map not found"}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})})}):a.jsxs(X,{children:[a.jsxs("div",{className:"max-w-7xl mx-auto",children:[a.jsxs("div",{className:p.tabSelector,children:[a.jsx(aa,{name:"map-details-view",value:oe,onChange:t=>{(t==="mapDetails"||t==="explore")&&(Ce(t),t==="explore"&&y("/explore"))},options:Oe,keySelector:t=>t.key,labelSelector:t=>t.label}),a.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs(T,{name:"reference-examples",variant:k?"primary":"secondary",onClick:()=>Ae(!k),className:"whitespace-nowrap",children:[a.jsx("span",{className:"mr-2",children:k?a.jsx("span",{className:"text-yellow-400",children:"★"}):a.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),a.jsx(T,{name:"export-dataset",variant:"secondary",onClick:()=>Z(!0),children:"Export"})]})]}),a.jsx(ia,{sources:le,types:ce,regions:ge,countries:Se,imageTypes:de,isLoadingFilters:!1}),oe==="mapDetails"?a.jsx("div",{className:"relative",children:h?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:p.gridLayout,children:[a.jsxs(E,{heading:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{children:h.title||"Map Image"}),h.starred&&a.jsx("span",{className:"text-red-500 text-xl",title:"Starred image",children:"★"})]}),headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:[a.jsx("div",{className:p.imageContainer,children:e?.image_count&&e.image_count>1||D.length>1?a.jsxs("div",{className:p.carouselContainer,children:[a.jsx("div",{className:p.carouselImageWrapper,children:V?a.jsxs("div",{className:p.imagePlaceholder,children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading images..."})]}):D[A]?.image_url?a.jsx("img",{src:D[A].image_url,alt:D[A].file_key,className:p.carouselImage}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"})}),a.jsxs("div",{className:p.carouselNavigation,children:[a.jsx(T,{name:"previous-image",variant:"tertiary",size:1,onClick:Ue,disabled:V,className:p.carouselButton,children:a.jsx(se,{className:"w-4 h-4"})}),a.jsx("div",{className:p.carouselIndicators,children:D.map((t,o)=>a.jsx("button",{onClick:()=>Be(o),className:`${p.carouselIndicator} ${o===A?p.carouselIndicatorActive:""}`,disabled:V,children:o+1},o))}),a.jsx(T,{name:"next-image",variant:"tertiary",size:1,onClick:We,disabled:V,className:p.carouselButton,children:a.jsx(ie,{className:"w-4 h-4"})})]}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-carousel",variant:"secondary",size:1,onClick:()=>xe(D[A]),disabled:V||!D[A]?.image_url,children:"View Image"})})]}):a.jsxs("div",{className:p.singleImageContainer,children:[h.image_url?a.jsx("img",{src:h.image_url,alt:h.file_key}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-single",variant:"secondary",size:1,onClick:()=>xe(h),disabled:!h.image_url,children:"View Image"})})]})}),a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs("div",{className:p.metadataTags,children:[h.image_type!=="drone_image"&&a.jsx("span",{className:p.metadataTag,children:le.find(t=>t.s_code===h.source)?.label||h.source}),a.jsx("span",{className:p.metadataTag,children:ce.find(t=>t.t_code===h.event_type)?.label||h.event_type}),a.jsx("span",{className:p.metadataTag,children:de.find(t=>t.image_type===h.image_type)?.label||h.image_type}),h.countries&&h.countries.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.metadataTag,children:ge.find(t=>t.r_code===h.countries[0].r_code)?.label||"Unknown Region"}),a.jsx("span",{className:p.metadataTag,children:h.countries.map(t=>t.label).join(", ")})]}),h.image_count&&h.image_count>1&&a.jsxs("span",{className:p.metadataTag,title:`Multi-upload with ${h.image_count} images`,children:["📷 ",h.image_count]}),(!h.image_count||h.image_count<=1)&&a.jsx("span",{className:p.metadataTag,title:"Single Upload",children:"Single"})]})})]}),a.jsx("div",{className:p.detailsSection,children:h.edited&&h.edited.includes("Description:")||h.generated&&h.generated.includes("Description:")?a.jsx(E,{heading:"AI Generated Content",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:a.jsx("div",{className:p.captionText,children:(h.edited||h.generated||"").split(`
3
- `).map((t,o)=>a.jsx("div",{children:t.startsWith("Description:")||t.startsWith("Analysis:")||t.startsWith("Recommended Actions:")?a.jsx("h4",{className:"font-semibold text-gray-800 mt-4 mb-2",children:t}):t.trim()===""?a.jsx("br",{}):a.jsx("p",{className:"mb-2",children:t})},o))})})}):a.jsx(E,{heading:"Description",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:h.generated?a.jsx("div",{className:p.captionText,children:a.jsx("p",{children:h.edited||h.generated})}):a.jsx("p",{children:"— no caption yet —"})})})})]}),a.jsx("div",{className:"flex items-center justify-center mt-8",children:a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-lg p-4",children:a.jsxs("div",{className:"flex items-center gap-4",children:[De&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"previous-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("previous"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(se,{className:"w-4 h-4"}),a.jsx(se,{className:"w-4 h-4"})]}),a.jsx("span",{className:"font-semibold",children:"Previous"})]})})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"delete",variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:He,title:"Delete","aria-label":"Delete saved image",children:a.jsx(ta,{className:"w-4 h-4"})})}),a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"contribute",onClick:Ze,children:"Contribute"})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"toggle-star",variant:"tertiary",size:1,className:`${e?.starred?"bg-red-100 hover:bg-red-200 text-red-800 border-2 border-red-400":"bg-gray-100 hover:bg-gray-200 text-gray-600 border-2 border-gray-300"} w-16 h-8 rounded-full transition-all duration-200 flex items-center justify-center`,onClick:Ve,title:e?.starred?"Unstar image":"Star image","aria-label":e?.starred?"Unstar image":"Star image",children:a.jsx("span",{className:`text-lg transition-all duration-200 ${e?.starred?"text-red-600":"text-gray-500"}`,children:e?.starred?"★":"☆"})})}),Me&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"next-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("next"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("span",{className:"font-semibold",children:"Next"}),a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(ie,{className:"w-4 h-4"}),a.jsx(ie,{className:"w-4 h-4"})]})]})})})]})})})]}):a.jsxs("div",{className:"text-center py-12",children:[a.jsx("div",{className:"text-xl font-semibold text-gray-600 mb-4",children:"No matches found"}),a.jsx("div",{className:"mt-4",children:a.jsx(T,{name:"clear-filters",variant:"secondary",onClick:ze,children:"Clear Filters"})})]})}):null]}),Fe&&a.jsx("div",{className:p.fullSizeModalOverlay,onClick:()=>G(!1),children:a.jsx("div",{className:p.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:a.jsxs("div",{className:p.ratingWarningContent,children:[a.jsx("h3",{className:p.ratingWarningTitle,children:"Delete Image?"}),a.jsx("p",{className:p.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),a.jsxs("div",{className:p.ratingWarningButtons,children:[a.jsx(T,{name:"confirm-delete",variant:"secondary",onClick:qe,children:"Delete"}),a.jsx(T,{name:"cancel-delete",variant:"tertiary",onClick:()=>G(!1),children:"Cancel"})]})]})})}),me&&a.jsx(na,{isOpen:me,onClose:()=>{Z(!1),ae(!1),ee(!1)},onExport:(t,o)=>{o.includes(e.image_type)&&Ke(t)},filteredCount:1,totalCount:1,hasFilters:!1,crisisMapsCount:e.image_type==="crisis_map"?1:0,droneImagesCount:e.image_type==="drone_image"?1:0,isLoading:Ee,exportSuccess:Re,variant:"single",onNavigateToList:()=>{Z(!1),y("/explore")},onNavigateAndExport:()=>{Z(!1),y("/explore?export=true")}}),a.jsx(Ye,{isOpen:$e,imageUrl:Pe?.image_url||null,preview:null,selectedImageData:null,onClose:Je})]})}export{it as default};
 
 
 
 
py_backend/static/assets/index-jo0G9peP.js DELETED
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-utils-Db80MiSc.js","assets/vendor-DxpCibxB.js","assets/vendor-react-BxsGb6Ph.js"])))=>i.map(i=>d[i]);
2
- import{u as Xe,F as Ye,_ as ea}from"./index-Uy48qW96.js";import{j as a,r as g}from"./vendor-react-BxsGb6Ph.js";import{N as X,n as T,_ as ve,L as aa,z as E,C as se,c as ie,D as ta}from"./vendor-ui-l_DttnRj.js";import{u as sa}from"./useAdmin-B_k2Fdj-.js";import{F as ia,E as na}from"./ExportModal-BtNOxnGZ.js";import{n as oa,a as ra}from"./vendor-DxpCibxB.js";const la="_tabSelector_usssr_1",ca="_imageContainer_usssr_12",da="_imagePlaceholder_usssr_33",ga="_metadataTags_usssr_45",ma="_metadataTag_usssr_45",ua="_captionContainer_usssr_67",pa="_captionText_usssr_74",fa="_gridLayout_usssr_131",ha="_detailsSection_usssr_155",_a="_loadingContainer_usssr_161",xa="_errorContainer_usssr_171",ya="_fullSizeModalOverlay_usssr_205",va="_fullSizeModalContent_usssr_219",wa="_ratingWarningContent_usssr_230",Ca="_ratingWarningTitle_usssr_236",ja="_ratingWarningText_usssr_243",Ia="_ratingWarningButtons_usssr_250",Na="_carouselContainer_usssr_365",ba="_carouselImageWrapper_usssr_370",Sa="_carouselImage_usssr_370",La="_carouselNavigation_usssr_393",Da="_carouselButton_usssr_405",ka="_carouselIndicators_usssr_429",Ma="_carouselIndicator_usssr_429",Ta="_carouselIndicatorActive_usssr_458",Fa="_singleImageContainer_usssr_488",Ea="_viewImageButtonContainer_usssr_494",p={tabSelector:la,imageContainer:ca,imagePlaceholder:da,metadataTags:ga,metadataTag:ma,captionContainer:ua,captionText:pa,gridLayout:fa,detailsSection:ha,loadingContainer:_a,errorContainer:xa,fullSizeModalOverlay:ya,fullSizeModalContent:va,ratingWarningContent:wa,ratingWarningTitle:Ca,ratingWarningText:ja,ratingWarningButtons:Ia,carouselContainer:Na,carouselImageWrapper:ba,carouselImage:Sa,carouselNavigation:La,carouselButton:Da,carouselIndicators:ka,carouselIndicator:Ma,carouselIndicatorActive:Ta,singleImageContainer:Fa,viewImageButtonContainer:Ea};function it(){const{mapId:u}=oa(),y=ra(),{isAuthenticated:ne}=sa();console.log("MapDetailsPage: Current URL:",window.location.href),console.log("MapDetailsPage: Hash:",window.location.hash),console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId length:",u?.length),console.log("MapDetailsPage: mapId value:",JSON.stringify(u));const we=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;if(!u||u==="undefined"||u==="null"||u.trim()===""||!we.test(u))return a.jsx(X,{children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center py-12",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Invalid Map ID"}),a.jsx("div",{children:"The map ID provided is not valid."}),a.jsxs("div",{className:"text-sm text-gray-500 mt-2",children:['Debug Info: mapId = "',u,'" (type: ',typeof u,")"]}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})});const[oe,Ce]=g.useState("mapDetails"),[e,Y]=g.useState(null),[W,P]=g.useState(!0),[re,O]=g.useState(null),[le,je]=g.useState([]),[ce,Ie]=g.useState([]),[de,Ne]=g.useState([]),[ge,be]=g.useState([]),[Se,Le]=g.useState([]),[De,ke]=g.useState(!1),[Me,Te]=g.useState(!1),[B,q]=g.useState(!1),[Fe,G]=g.useState(!1),[me,Z]=g.useState(!1),[Ee,ee]=g.useState(!1),[Re,ae]=g.useState(!1),[Ra,$a]=g.useState("standard"),[R,Pa]=g.useState(80),[J,Aa]=g.useState(10),[za,Oa]=g.useState(10),[Ua,Wa]=g.useState(!0),[Ba,Ja]=g.useState(!0),[K,Q]=g.useState(!1),[$e,ue]=g.useState(!1),[Pe,pe]=g.useState(null),[D,H]=g.useState([]),[A,z]=g.useState(0),[V,fe]=g.useState(!1),{search:d,setSearch:Ha,srcFilter:v,setSrcFilter:Va,catFilter:w,setCatFilter:qa,regionFilter:C,setRegionFilter:Ga,countryFilter:j,setCountryFilter:Za,imageTypeFilter:I,setImageTypeFilter:Ka,uploadTypeFilter:N,setUploadTypeFilter:Qa,showReferenceExamples:k,setShowReferenceExamples:Ae,clearAllFilters:ze}=Xe(),Oe=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],he=g.useCallback(async t=>{if(console.log("fetchMapData called with id:",t),console.log("fetchMapData id type:",typeof t),!t||t==="undefined"||t==="null"||t.trim()===""){console.log("fetchMapData: Invalid ID detected:",t),O("Invalid Map ID"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)){console.log("fetchMapData: Invalid UUID format:",t),O("Invalid Map ID format"),P(!1);return}console.log("fetchMapData: Making API call for id:",t),q(!0),P(!0);try{const f=await fetch(`/api/images/${t}`);if(!f.ok)throw new Error("Map not found");const s=await f.json();if(Y(s),s.all_image_ids&&s.all_image_ids.length>1)await _e(s.all_image_ids);else if(s.image_count&&s.image_count>1){console.log("Multi-upload detected but no all_image_ids, trying grouped endpoint");try{const l=await fetch("/api/images/grouped");if(l.ok){const r=(await l.json()).find(c=>c.all_image_ids&&c.all_image_ids.includes(s.image_id));r&&r.all_image_ids?await _e(r.all_image_ids):(H([s]),z(0))}else H([s]),z(0)}catch(l){console.error("Failed to fetch from grouped endpoint:",l),H([s]),z(0)}}else H([s]),z(0);await te(t)}catch(f){O(f instanceof Error?f.message:"Unknown error occurred")}finally{P(!1),q(!1)}},[]),_e=g.useCallback(async t=>{console.log("fetchAllImages called with imageIds:",t),fe(!0);try{const o=t.map(async s=>{const l=await fetch(`/api/images/${s}`);if(!l.ok)throw new Error(`Failed to fetch image ${s}`);return l.json()}),f=await Promise.all(o);H(f),z(0),console.log("fetchAllImages: Loaded",f.length,"images")}catch(o){console.error("fetchAllImages error:",o),O(o instanceof Error?o.message:"Failed to load all images")}finally{fe(!1)}},[]),Ue=g.useCallback(()=>{D.length>1&&z(t=>t>0?t-1:D.length-1)},[D.length]),We=g.useCallback(()=>{D.length>1&&z(t=>t<D.length-1?t+1:0)},[D.length]),Be=g.useCallback(t=>{t>=0&&t<D.length&&z(t)},[D.length]),xe=g.useCallback(t=>{const o=t||(D.length>0?D[A]:e);o&&(pe(o),ue(!0))},[D,A,e]),Je=g.useCallback(()=>{ue(!1),pe(null)},[]);g.useEffect(()=>{if(console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId value:",u),!u||u==="undefined"||u==="null"||u.trim()===""||u===void 0||u===null){console.log("MapDetailsPage: Invalid mapId, setting error"),O("Map ID is required"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("MapDetailsPage: Invalid UUID format:",u),O("Invalid Map ID format"),P(!1);return}console.log("MapDetailsPage: Fetching data for mapId:",u),he(u)},[u,he]),g.useEffect(()=>{if(!e||W||K)return;if(!u||u==="undefined"||u==="null"||u.trim()===""){console.log("Auto-navigation skipped: Invalid mapId");return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("Auto-navigation skipped: Invalid mapId format");return}(()=>{const f=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),s=!v||e.source===v,l=!w||e.event_type===w,i=!C||e.countries.some(M=>M.r_code===C),r=!j||e.countries.some(M=>M.c_code===j),c=!I||e.image_type===I,n=!k||e.starred===!0,x=f&&s&&l&&i&&r&&c&&n;return console.log("Auto-navigation check:",{mapId:u,search:d,srcFilter:v,catFilter:w,regionFilter:C,countryFilter:j,imageTypeFilter:I,showReferenceExamples:k,matchesSearch:f,matchesSource:s,matchesCategory:l,matchesRegion:i,matchesCountry:r,matchesImageType:c,matchesReferenceExamples:n,matches:x}),x})()||(console.log("Current map does not match filters, looking for first matching item"),fetch("/api/images").then(f=>f.json()).then(f=>{console.log("Auto-navigation: Received images from API:",f.length),console.log("Auto-navigation: First few images:",f.slice(0,3).map(l=>({image_id:l.image_id,title:l.title})));const s=f.find(l=>{const i=!d||l.title?.toLowerCase().includes(d.toLowerCase())||l.generated?.toLowerCase().includes(d.toLowerCase())||l.source?.toLowerCase().includes(d.toLowerCase())||l.event_type?.toLowerCase().includes(d.toLowerCase()),r=!v||l.source===v,c=!w||l.event_type===w,n=!C||l.countries?.some(m=>m.r_code===C),x=!j||l.countries?.some(m=>m.c_code===j),M=!I||l.image_type===I,S=!k||l.starred===!0;return i&&r&&c&&n&&x&&M&&S});console.log("Auto-navigation: Found first matching image:",s?{image_id:s.image_id,title:s.title,source:s.source}:"No matching image found"),s&&s.image_id&&s.image_id!=="undefined"&&s.image_id!=="null"&&s.image_id.trim()!==""&&s.image_id!==u&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s.image_id)?(console.log("Auto-navigating to:",s.image_id),y(`/map/${s.image_id}`)):console.error("Auto-navigation blocked: Invalid image_id format:",s.image_id))}).catch(console.error))},[e,d,v,w,C,j,I,k,u,y,W,K]);const te=async t=>{if(!(!t||t==="undefined"||t==="null"||t.trim()===""))try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.findIndex(i=>i.image_id===t);ke(s.length>1&&l>0),Te(s.length>1&&l<s.length-1)}}catch(o){console.error("Failed to check navigation availability:",o)}},ye=async t=>{if(!B){q(!0);try{const o=await fetch("/api/images/grouped");if(o.ok){const f=await o.json(),s=f.filter(n=>{const x=!d||n.title?.toLowerCase().includes(d.toLowerCase())||n.generated?.toLowerCase().includes(d.toLowerCase())||n.source?.toLowerCase().includes(d.toLowerCase())||n.event_type?.toLowerCase().includes(d.toLowerCase()),M=!v||n.source===v,S=!w||n.event_type===w,m=!C||n.countries?.some($=>$.r_code===C),b=!j||n.countries?.some($=>$.c_code===j),_=!I||n.image_type===I,L=!N||N==="single"&&(!n.image_count||n.image_count<=1)||N==="multiple"&&n.image_count&&n.image_count>1,U=!k||n.starred===!0;return x&&M&&S&&m&&b&&_&&L&&U});if(s.findIndex(n=>n.image_id===u)===-1){const n=f.find(x=>x.image_id===u);n&&s.push(n)}const i=s.findIndex(n=>n.image_id===u);if(i===-1){console.error("Current image not found in filtered list");return}let r;t==="previous"?r=i>0?i-1:s.length-1:r=i<s.length-1?i+1:0;const c=s[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Carousel navigating to:",c.image_id),y(`/map/${c.image_id}`)):console.error("Carousel navigation blocked: Invalid image_id format:",c.image_id))}}catch(o){console.error("Failed to navigate to item:",o)}finally{q(!1)}}};g.useEffect(()=>{e&&u&&!W&&!K&&te(u)},[e,u,d,v,w,C,j,I,N,k,W,K,te]),g.useEffect(()=>{Promise.all([fetch("/api/sources").then(t=>t.json()),fetch("/api/types").then(t=>t.json()),fetch("/api/image-types").then(t=>t.json()),fetch("/api/regions").then(t=>t.json()),fetch("/api/countries").then(t=>t.json())]).then(([t,o,f,s,l])=>{je(t),Ie(o),Ne(f),be(s),Le(l)}).catch(console.error)},[]);const He=async()=>{e&&G(!0)},Ve=async()=>{if(e)try{(await fetch(`/api/images/${e.image_id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({starred:!e.starred})})).ok?Y(o=>o?{...o,starred:!o.starred}:null):console.error("Failed to toggle starred status")}catch(t){console.error("Error toggling starred status:",t)}},qe=async()=>{if(e){Q(!0);try{if(console.log("Deleting image with ID:",e.image_id),(await fetch(`/api/images/${e.image_id}`,{method:"DELETE"})).ok){Y(o=>o?{...o,starred:!o.starred}:null),G(!1);try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.filter(i=>i.image_id!==e.image_id);if(l.length>0){const i=s.findIndex(c=>c.image_id===e.image_id);let r;if(i===s.length-1?r=i-1:r=i,console.log("Navigation target:",{currentIndex:i,targetIndex:r,targetId:l[r]?.image_id}),r>=0&&r<l.length){const c=l[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Navigating to:",c.image_id),y(`/map/${c.image_id}`)):(console.error("Navigation blocked: Invalid image_id format:",c.image_id),y("/explore")):(console.error("Navigation blocked: Invalid image_id:",c?.image_id),y("/explore"))}else l[0]&&l[0].image_id&&l[0].image_id!=="undefined"&&l[0].image_id!=="null"&&l[0].image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(l[0].image_id)?(console.log("Fallback navigation to first item:",l[0].image_id),y(`/map/${l[0].image_id}`)):(console.error("Fallback navigation blocked: Invalid image_id format:",l[0].image_id),y("/explore")):(console.log("No valid remaining items, going to explore page"),y("/explore"))}else console.log("No remaining items, going to explore page"),y("/explore")}else y("/explore")}catch(o){console.error("Failed to navigate to next item:",o),y("/explore")}finally{Q(!1)}}else console.error("Delete failed"),Q(!1)}catch(t){console.error("Delete failed:",t),Q(!1)}}},h=g.useMemo(()=>{if(!e)return null;if(!d&&!v&&!w&&!C&&!j&&!I&&!N&&!k)return e;const t=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),o=!v||e.source===v,f=!w||e.event_type===w,s=!C||e.countries.some(x=>x.r_code===C),l=!j||e.countries.some(x=>x.c_code===j),i=!I||e.image_type===I,r=!N||N==="single"&&(!e.image_count||e.image_count<=1)||N==="multiple"&&e.image_count&&e.image_count>1,c=!k||e.starred===!0,n=t&&o&&f&&s&&l&&i&&r&&c;return!n&&(d||v||w||C||j||I||N||k)?(setTimeout(()=>{Ge()},100),e):n?e:null},[e,d,v,w,C,j,I,N,k]),Ge=g.useCallback(async()=>{P(!0);try{const t=await fetch("/api/images/grouped");if(t.ok){const f=(await t.json()).filter(s=>{const l=!d||s.title?.toLowerCase().includes(d.toLowerCase())||s.generated?.toLowerCase().includes(d.toLowerCase())||s.source?.toLowerCase().includes(d.toLowerCase())||s.event_type?.toLowerCase().includes(d.toLowerCase()),i=!v||s.source===v,r=!w||s.event_type===w,c=!C||s.countries?.some(m=>m.r_code===C),n=!j||s.countries?.some(m=>m.c_code===j),x=!I||s.image_type===I,M=!N||N==="single"&&(!s.image_count||s.image_count<=1)||N==="multiple"&&s.image_count&&s.image_count>1,S=!k||s.starred===!0;return l&&i&&r&&c&&n&&x&&M&&S});if(f.length>0){const s=f[0];s&&s.image_id&&y(`/map/${s.image_id}`)}else y("/explore")}}catch(t){console.error("Failed to navigate to matching image:",t),y("/explore")}finally{P(!1)}},[d,v,w,C,j,I,N,k,y]),Ze=()=>{if(!e)return;if(!e.all_image_ids||e.all_image_ids.length<=1){const s=`/upload?step=1&contribute=true&imageIds=${[e.image_id].join(",")}`;y(s);return}const o=`/upload?step=1&contribute=true&imageIds=${e.all_image_ids.join(",")}`;y(o)},F=(t,o)=>({image:`images/${o}`,caption:t.edited||t.generated||"",metadata:{image_id:t.image_count&&t.image_count>1?t.all_image_ids||[t.image_id]:t.image_id,title:t.title,source:t.source,event_type:t.event_type,image_type:t.image_type,countries:t.countries,starred:t.starred,image_count:t.image_count||1}}),Ke=async t=>{if(e){ee(!0),ae(!1);try{const o=(await ea(async()=>{const{default:r}=await import("./vendor-utils-Db80MiSc.js").then(c=>c.j);return{default:r}},__vite__mapDeps([0,1,2]))).default,f=new o;if(e.image_type==="crisis_map"){const r=f.folder("crisis_maps_dataset"),c=r?.folder("images");if(c)try{const n=e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:[e.image_id],x=n.map(async(m,b)=>{try{const _=await fetch(`/api/images/${m}/file`);if(!_.ok)throw new Error(`Failed to fetch image ${m}`);const L=await _.blob(),U=e.file_key.split(".").pop()||"jpg",$=`0001_${String(b+1).padStart(2,"0")}.${U}`;return c.file($,L),{success:!0,fileName:$,imageId:m}}catch(_){return console.error(`Failed to process image ${m}:`,_),{success:!1,fileName:"",imageId:m}}}),S=(await Promise.all(x)).filter(m=>m.success);if(S.length===0)throw new Error("No images could be processed");if(t==="fine-tuning"){const m=[],b=[],_=[],L=S.map(Qe=>`images/${Qe.fileName}`),U=Math.random(),$={image:L.length===1?L[0]:L,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};U<R/100?m.push($):U<(R+J)/100?b.push($):_.push($),r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m=S.map(_=>`images/${_.fileName}`),b={image:m.length===1?m[0]:m,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(b,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else if(e.image_type==="drone_image"){const r=f.folder("drone_images_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else{const r=f.folder("generic_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}const s=await f.generateAsync({type:"blob"}),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`dataset_${e.image_type}_${e.image_id}_${t}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(l),console.log(`Exported ${e.image_type} dataset with 1 image in ${t} mode`),ae(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{ee(!1)}}};return W?a.jsx(X,{children:a.jsx("div",{className:p.loadingContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4",children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading map details..."})]})})}):re||!e?a.jsx(X,{children:a.jsx("div",{className:p.errorContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Unable to load map"}),a.jsx("div",{children:re||"Map not found"}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})})}):a.jsxs(X,{children:[a.jsxs("div",{className:"max-w-7xl mx-auto",children:[a.jsxs("div",{className:p.tabSelector,children:[a.jsx(aa,{name:"map-details-view",value:oe,onChange:t=>{(t==="mapDetails"||t==="explore")&&(Ce(t),t==="explore"&&y("/explore"))},options:Oe,keySelector:t=>t.key,labelSelector:t=>t.label}),a.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs(T,{name:"reference-examples",variant:k?"primary":"secondary",onClick:()=>Ae(!k),className:"whitespace-nowrap",children:[a.jsx("span",{className:"mr-2",children:k?a.jsx("span",{className:"text-yellow-400",children:"★"}):a.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),a.jsx(T,{name:"export-dataset",variant:"secondary",onClick:()=>Z(!0),children:"Export"})]})]}),a.jsx(ia,{sources:le,types:ce,regions:ge,countries:Se,imageTypes:de,isLoadingFilters:!1}),oe==="mapDetails"?a.jsx("div",{className:"relative",children:h?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:p.gridLayout,children:[a.jsxs(E,{heading:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{children:h.title||"Map Image"}),h.starred&&a.jsx("span",{className:"text-red-500 text-xl",title:"Starred image",children:"★"})]}),headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:[a.jsx("div",{className:p.imageContainer,children:e?.image_count&&e.image_count>1||D.length>1?a.jsxs("div",{className:p.carouselContainer,children:[a.jsx("div",{className:p.carouselImageWrapper,children:V?a.jsxs("div",{className:p.imagePlaceholder,children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading images..."})]}):D[A]?.image_url?a.jsx("img",{src:D[A].image_url,alt:D[A].file_key,className:p.carouselImage}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"})}),a.jsxs("div",{className:p.carouselNavigation,children:[a.jsx(T,{name:"previous-image",variant:"tertiary",size:1,onClick:Ue,disabled:V,className:p.carouselButton,children:a.jsx(se,{className:"w-4 h-4"})}),a.jsx("div",{className:p.carouselIndicators,children:D.map((t,o)=>a.jsx("button",{onClick:()=>Be(o),className:`${p.carouselIndicator} ${o===A?p.carouselIndicatorActive:""}`,disabled:V,children:o+1},o))}),a.jsx(T,{name:"next-image",variant:"tertiary",size:1,onClick:We,disabled:V,className:p.carouselButton,children:a.jsx(ie,{className:"w-4 h-4"})})]}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-carousel",variant:"secondary",size:1,onClick:()=>xe(D[A]),disabled:V||!D[A]?.image_url,children:"View Image"})})]}):a.jsxs("div",{className:p.singleImageContainer,children:[h.image_url?a.jsx("img",{src:h.image_url,alt:h.file_key}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-single",variant:"secondary",size:1,onClick:()=>xe(h),disabled:!h.image_url,children:"View Image"})})]})}),a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs("div",{className:p.metadataTags,children:[h.image_type!=="drone_image"&&a.jsx("span",{className:p.metadataTag,children:le.find(t=>t.s_code===h.source)?.label||h.source}),a.jsx("span",{className:p.metadataTag,children:ce.find(t=>t.t_code===h.event_type)?.label||h.event_type}),a.jsx("span",{className:p.metadataTag,children:de.find(t=>t.image_type===h.image_type)?.label||h.image_type}),h.countries&&h.countries.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.metadataTag,children:ge.find(t=>t.r_code===h.countries[0].r_code)?.label||"Unknown Region"}),a.jsx("span",{className:p.metadataTag,children:h.countries.map(t=>t.label).join(", ")})]}),h.image_count&&h.image_count>1&&a.jsxs("span",{className:p.metadataTag,title:`Multi-upload with ${h.image_count} images`,children:["📷 ",h.image_count]}),(!h.image_count||h.image_count<=1)&&a.jsx("span",{className:p.metadataTag,title:"Single Upload",children:"Single"})]})})]}),a.jsx("div",{className:p.detailsSection,children:h.edited&&h.edited.includes("Description:")||h.generated&&h.generated.includes("Description:")?a.jsx(E,{heading:"AI Generated Content",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:a.jsx("div",{className:p.captionText,children:(h.edited||h.generated||"").split(`
3
- `).map((t,o)=>a.jsx("div",{children:t.startsWith("Description:")||t.startsWith("Analysis:")||t.startsWith("Recommended Actions:")?a.jsx("h4",{className:"font-semibold text-gray-800 mt-4 mb-2",children:t}):t.trim()===""?a.jsx("br",{}):a.jsx("p",{className:"mb-2",children:t})},o))})})}):a.jsx(E,{heading:"Description",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:h.generated?a.jsx("div",{className:p.captionText,children:a.jsx("p",{children:h.edited||h.generated})}):a.jsx("p",{children:"— no caption yet —"})})})})]}),a.jsx("div",{className:"flex items-center justify-center mt-8",children:a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-lg p-4",children:a.jsxs("div",{className:"flex items-center gap-4",children:[De&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"previous-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("previous"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(se,{className:"w-4 h-4"}),a.jsx(se,{className:"w-4 h-4"})]}),a.jsx("span",{className:"font-semibold",children:"Previous"})]})})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"delete",variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:He,title:"Delete","aria-label":"Delete saved image",children:a.jsx(ta,{className:"w-4 h-4"})})}),a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"contribute",onClick:Ze,children:"Contribute"})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"toggle-star",variant:"tertiary",size:1,className:`${e?.starred?"bg-red-100 hover:bg-red-200 text-red-800 border-2 border-red-400":"bg-gray-100 hover:bg-gray-200 text-gray-600 border-2 border-gray-300"} w-16 h-8 rounded-full transition-all duration-200 flex items-center justify-center`,onClick:Ve,title:e?.starred?"Unstar image":"Star image","aria-label":e?.starred?"Unstar image":"Star image",children:a.jsx("span",{className:`text-lg transition-all duration-200 ${e?.starred?"text-red-600":"text-gray-500"}`,children:e?.starred?"★":"☆"})})}),Me&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"next-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("next"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("span",{className:"font-semibold",children:"Next"}),a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(ie,{className:"w-4 h-4"}),a.jsx(ie,{className:"w-4 h-4"})]})]})})})]})})})]}):a.jsxs("div",{className:"text-center py-12",children:[a.jsx("div",{className:"text-xl font-semibold text-gray-600 mb-4",children:"No matches found"}),a.jsx("div",{className:"mt-4",children:a.jsx(T,{name:"clear-filters",variant:"secondary",onClick:ze,children:"Clear Filters"})})]})}):null]}),Fe&&a.jsx("div",{className:p.fullSizeModalOverlay,onClick:()=>G(!1),children:a.jsx("div",{className:p.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:a.jsxs("div",{className:p.ratingWarningContent,children:[a.jsx("h3",{className:p.ratingWarningTitle,children:"Delete Image?"}),a.jsx("p",{className:p.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),a.jsxs("div",{className:p.ratingWarningButtons,children:[a.jsx(T,{name:"confirm-delete",variant:"secondary",onClick:qe,children:"Delete"}),a.jsx(T,{name:"cancel-delete",variant:"tertiary",onClick:()=>G(!1),children:"Cancel"})]})]})})}),me&&a.jsx(na,{isOpen:me,onClose:()=>{Z(!1),ae(!1),ee(!1)},onExport:(t,o)=>{o.includes(e.image_type)&&Ke(t)},filteredCount:1,totalCount:1,hasFilters:!1,crisisMapsCount:e.image_type==="crisis_map"?1:0,droneImagesCount:e.image_type==="drone_image"?1:0,isLoading:Ee,exportSuccess:Re,variant:"single",onNavigateToList:()=>{Z(!1),y("/explore")},onNavigateAndExport:()=>{Z(!1),y("/explore?export=true")}}),a.jsx(Ye,{isOpen:$e,imageUrl:Pe?.image_url||null,preview:null,selectedImageData:null,onClose:Je})]})}export{it as default};
 
 
 
 
py_backend/static/assets/index-om3EFqpn.css DELETED
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.static{position:static}.sticky{position:sticky}.left-1\/2{left:50%}.z-50{z-index:50}.mx-auto{margin-inline:auto}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.min-h-\[60vh\]{min-height:60vh}.min-h-\[400px\]{min-height:400px}.w-full{width:100%}.min-w-\[300px\]{min-width:300px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-none{--tw-border-style:none;border-style:none}.bg-transparent{background-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.object-cover{-o-object-fit:cover;object-fit:cover}.text-center{text-align:center}.text-left{text-align:left}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.opacity-50{opacity:.5}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}*{box-sizing:border-box}@media screen{html{scrollbar-gutter:stable;margin:0;padding:0}}body{line-height:var(--go-ui-line-height-md);color:var(--go-ui-color-text);font-family:var(--go-ui-font-family-sans-serif);font-size:var(--go-ui-font-size-md);font-weight:var(--go-ui-font-weight-normal)}@media screen{body{background-color:var(--go-ui-color-background);margin:0;padding:0}}ul,ol,p{margin:0}@media print{@page{size:portrait A4;margin:10mm 10mm 16mm}body{font-family:Open Sans,sans-serif}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}._dropdownContainer_1six7_3{position:relative}._dropdownMenu_1six7_15{position:absolute;right:0;top:100%;margin-top:.5rem;width:180px;background:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-lg);border:1px solid var(--go-ui-color-separator);z-index:50;animation:_dropdownSlideIn_1six7_1 .15s ease-out}._dropdownContent_1six7_43{padding:var(--go-ui-spacing-xs) 0}@keyframes _dropdownSlideIn_1six7_1{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){._dropdownMenu_1six7_15{width:160px;right:-.25rem}._dropdownItem_1six7_89{padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-xs)}}._uploadContainer_1w5i1_1{margin:0 auto;max-width:var(--go-ui-width-screen-lg);text-align:center;padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md) var(--go-ui-spacing-2xl) var(--go-ui-spacing-md);overflow-x:hidden}._dropZone_1w5i1_9{border:var(--go-ui-width-separator-thick) dashed var(--go-ui-color-gray-40);background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-xl);padding:var(--go-ui-spacing-2xl) var(--go-ui-spacing-lg);display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);transition:all var(--go-ui-duration-transition-medium) ease;max-width:var(--go-ui-width-screen-md);margin:0 auto;min-height:250px;justify-content:center}._dropZone_1w5i1_9:hover{background-color:var(--go-ui-color-gray-30);border-color:var(--go-ui-color-gray-50)}._dropZone_1w5i1_9._hasFile_1w5i1_30{background-color:var(--go-ui-color-white);border-color:var(--go-ui-color-gray-30);min-height:300px;padding:var(--go-ui-spacing-lg)}._dropZoneIcon_1w5i1_37{width:2.5rem;height:2.5rem;color:var(--go-ui-color-red-90)}._dropZoneText_1w5i1_43{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-70);text-align:center}._dropZoneSubtext_1w5i1_49{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-50);margin:var(--go-ui-spacing-md) 0}._filePreview_1w5i1_55{width:100%;max-width:100%;display:flex;flex-direction:column;align-items:center;animation:_fadeIn_1w5i1_1 .3s ease-in-out}._filePreviewImage_1w5i1_64{position:relative;max-width:100%;max-height:20rem;overflow:visible;border-radius:var(--go-ui-border-radius-lg);background-color:var(--go-ui-color-gray-20);display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-medium) ease}._filePreviewImage_1w5i1_64:hover{background-color:var(--go-ui-color-gray-30);transform:translateY(-2px);box-shadow:var(--go-ui-box-shadow-md)}._filePreviewImage_1w5i1_64 img{max-width:100%;max-height:18rem;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-sm);transition:transform var(--go-ui-duration-transition-medium) ease}._filePreviewImage_1w5i1_64 img:hover{transform:scale(1.02)}@keyframes _fadeIn_1w5i1_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._fileName_1w5i1_110{font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-80);margin-top:var(--go-ui-spacing-sm);text-align:center}._fileInfo_1w5i1_118{font-size:var(--go-ui-font-size-xs);color:var(--go-ui-color-gray-60);margin-top:var(--go-ui-spacing-xs);text-align:center}._helpLink_1w5i1_125{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md)}._helpLink_1w5i1_125 a{color:var(--go-ui-color-red-90);font-size:var(--go-ui-font-size-xs);transition:color var(--go-ui-duration-transition-fast) ease;display:flex;align-items:center;gap:var(--go-ui-spacing-2xs)}._helpLink_1w5i1_125 a:hover{color:var(--go-ui-color-red-hover);text-decoration:underline}._loadingContainer_1w5i1_145{display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);margin-top:var(--go-ui-spacing-2xl)}._loadingText_1w5i1_153{color:var(--go-ui-color-gray-60)}._generateButtonContainer_1w5i1_157{display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);margin-top:var(--go-ui-spacing-2xl)}._uploadedMapContainer_1w5i1_165{margin-bottom:var(--go-ui-spacing-lg)}._uploadedMapImage_1w5i1_169{width:100%;max-width:var(--go-ui-width-screen-lg);max-height:20rem;overflow:visible;background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-lg);box-shadow:var(--go-ui-box-shadow-sm);display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-medium) ease}._uploadedMapImage_1w5i1_169:hover{background-color:var(--go-ui-color-gray-30);transform:translateY(-2px);box-shadow:var(--go-ui-box-shadow-md)}._uploadedMapImage_1w5i1_169 img{max-width:100%;max-height:18rem;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-sm);transition:transform var(--go-ui-duration-transition-medium) ease}._uploadedMapImage_1w5i1_169 img:hover{transform:scale(1.02)}._formSection_1w5i1_205{margin-bottom:var(--go-ui-spacing-lg)}._formGrid_1w5i1_209{display:grid;gap:var(--go-ui-spacing-lg);grid-template-columns:1fr;text-align:left}@media (min-width: 1024px){._formGrid_1w5i1_209{grid-template-columns:1fr 1fr}}._titleField_1w5i1_222{grid-column:1 / -1}._ratingSection_1w5i1_226{text-align:left}._ratingDescription_1w5i1_230{color:var(--go-ui-color-gray-70);margin-bottom:var(--go-ui-spacing-lg)}._ratingSlider_1w5i1_235{margin-top:var(--go-ui-spacing-lg);display:flex;align-items:center;gap:var(--go-ui-spacing-sm)}._ratingLabel_1w5i1_242{display:block;font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);text-transform:capitalize;width:5rem;flex-shrink:0}._ratingInput_1w5i1_251{width:100%;accent-color:var(--go-ui-color-red-90)}._ratingValue_1w5i1_256{margin-left:var(--go-ui-spacing-sm);width:2.5rem;text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-70)}._submitSection_1w5i1_266{display:flex;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-2xl);flex-wrap:wrap}._successContainer_1w5i1_275{text-align:center;padding:var(--go-ui-spacing-2xl)}._successHeading_1w5i1_280{color:var(--go-ui-color-green-90);margin-bottom:var(--go-ui-spacing-lg)}._successText_1w5i1_285{color:var(--go-ui-color-gray-700);margin-bottom:var(--go-ui-spacing-xl);font-size:var(--go-ui-font-size-lg)}._successButton_1w5i1_291{display:flex;justify-content:center}._viewFullSizeButton_1w5i1_297{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md);padding-top:var(--go-ui-spacing-md);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._fullSizeModalOverlay_1w5i1_306{position:fixed;inset:0;background-color:#000c;display:flex;justify-content:center;align-items:center;z-index:1000;padding:var(--go-ui-spacing-lg)}._lightModalOverlay_1w5i1_320{position:fixed;inset:0;background-color:#0000004d;display:flex;justify-content:center;align-items:center;z-index:1000;padding:var(--go-ui-spacing-lg)}._fullSizeModalContent_1w5i1_334{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);max-width:95vw;max-height:95vh;overflow:hidden;box-shadow:var(--go-ui-box-shadow-xl);display:flex;flex-direction:column}._fullSizeModalHeader_1w5i1_345{display:flex;justify-content:space-between;align-items:center;padding:var(--go-ui-spacing-lg);border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-gray-10)}._fullSizeModalTitle_1w5i1_354{margin:0;font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-semibold);color:var(--go-ui-color-gray-900)}._fullSizeModalImage_1w5i1_361{flex:1;display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-lg);overflow:auto}._fullSizeModalImage_1w5i1_361 img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-md)}@media (max-width: 768px){._fullSizeModalOverlay_1w5i1_306{padding:var(--go-ui-spacing-sm)}._fullSizeModalContent_1w5i1_334{max-width:100vw;max-height:100vh}._fullSizeModalHeader_1w5i1_345,._fullSizeModalImage_1w5i1_361{padding:var(--go-ui-spacing-md)}}._confirmSection_1w5i1_398{display:flex;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-xl);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._step2Layout_1w5i1_407{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xl)}._topRow_1w5i1_413{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-2xl);align-items:start}._topRow_1w5i1_413._ratingHidden_1w5i1_421{grid-template-columns:1fr}._imageSection_1w5i1_425{position:sticky;top:var(--go-ui-spacing-lg)}._ratingSection_1w5i1_226{display:flex;flex-direction:column}._ratingContent_1w5i1_435{display:flex;flex-direction:column;gap:var(--go-ui-spacing-md)}._bottomRow_1w5i1_441{width:100%}._step2Layout_1w5i1_407{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-2xl);align-items:start}._mapColumn_1w5i1_453{position:sticky;top:var(--go-ui-spacing-lg)}._contentColumn_1w5i1_458{display:flex;flex-direction:column;gap:var(--go-ui-spacing-lg)}._step2bLayout_1w5i1_465{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xl)}._contentColumn_1w5i1_458 ._formGrid_1w5i1_209{display:grid;gap:var(--go-ui-spacing-lg);grid-template-columns:1fr;text-align:left}@media (max-width: 1024px){._step2Layout_1w5i1_407,._topRow_1w5i1_413{grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._topRow_1w5i1_413._ratingHidden_1w5i1_421{grid-template-columns:1fr}._mapColumn_1w5i1_453,._imageSection_1w5i1_425{position:static}}@media (max-width: 768px){._uploadContainer_1w5i1_1{padding:var(--go-ui-spacing-md) var(--go-ui-spacing-sm) var(--go-ui-spacing-xl) var(--go-ui-spacing-sm)}._dropZone_1w5i1_9{padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md);min-height:200px}._dropZone_1w5i1_9._hasFile_1w5i1_30{min-height:250px;padding:var(--go-ui-spacing-md)}._filePreviewImage_1w5i1_64{max-width:100%;max-height:15rem;padding:var(--go-ui-spacing-xs)}._filePreviewImage_1w5i1_64 img{max-height:13rem}._ratingSlider_1w5i1_235{gap:var(--go-ui-spacing-xs)}._ratingLabel_1w5i1_242{width:4rem;font-size:var(--go-ui-font-size-xs)}._ratingValue_1w5i1_256{width:2rem;font-size:var(--go-ui-font-size-xs)}}@media (max-width: 480px){._dropZone_1w5i1_9{padding:var(--go-ui-spacing-md) var(--go-ui-spacing-sm);min-height:180px}._dropZone_1w5i1_9._hasFile_1w5i1_30{min-height:220px}._filePreviewImage_1w5i1_64{max-height:12rem}._filePreviewImage_1w5i1_64 img{max-height:10rem}}._metadataSectionCard_1w5i1_562{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-lg);padding:var(--go-ui-spacing-lg);box-shadow:var(--go-ui-box-shadow-xs)}._droneMetadataSection_1w5i1_571{margin-top:var(--go-ui-spacing-lg);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._droneMetadataHeading_1w5i1_577{font-size:var(--go-ui-font-size-md);font-weight:600;color:var(--go-ui-color-gray-90);margin-bottom:var(--go-ui-spacing-md);text-align:left}._droneMetadataGrid_1w5i1_585{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-md)}._rtkFixContainer_1w5i1_591{display:flex;align-items:center;padding:var(--go-ui-spacing-sm) 0}._rtkFixLabel_1w5i1_597{display:flex;align-items:center;gap:var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-80);cursor:pointer}._rtkFixCheckbox_1w5i1_606{width:1rem;height:1rem;accent-color:var(--go-ui-color-red-90)}@media (max-width: 768px){._droneMetadataGrid_1w5i1_585{grid-template-columns:1fr;gap:var(--go-ui-spacing-sm)}}._confirmButtonContainer_1w5i1_621{margin-top:var(--go-ui-spacing-lg);display:flex;justify-content:center;align-items:center}._ratingWarningContent_1w5i1_629{padding:var(--go-ui-spacing-xl);text-align:center;max-width:500px}._ratingWarningTitle_1w5i1_637{font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-semibold);color:var(--go-ui-color-gray-900);margin-bottom:var(--go-ui-spacing-md)}._ratingWarningText_1w5i1_644{font-size:var(--go-ui-font-size-md);color:var(--go-ui-color-gray-700);line-height:1.6;margin-bottom:var(--go-ui-spacing-xl)}._ratingWarningButtons_1w5i1_651{display:flex;gap:var(--go-ui-spacing-md);justify-content:center;margin-top:var(--go-ui-spacing-lg)}._preprocessingProgress_1w5i1_658{margin-top:var(--go-ui-spacing-lg);text-align:center;padding:var(--go-ui-spacing-lg);background-color:var(--go-ui-color-background-light);border-radius:var(--go-ui-border-radius-md)}._preprocessingProgress_1w5i1_658 p{margin-bottom:var(--go-ui-spacing-md);color:var(--go-ui-color-text);font-weight:var(--go-ui-font-weight-medium)}._cropZoomSlider_1w5i1_673{flex:1;height:.5rem;background-color:var(--go-ui-color-gray-30);border-radius:var(--go-ui-border-radius-lg);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;outline:none}._cropZoomSlider_1w5i1_673::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:1.25rem;height:1.25rem;background-color:var(--go-ui-color-red-90);border-radius:50%;cursor:pointer;border:2px solid var(--go-ui-color-white);box-shadow:var(--go-ui-box-shadow-sm)}._cropZoomSlider_1w5i1_673::-moz-range-thumb{width:1.25rem;height:1.25rem;background-color:var(--go-ui-color-red-90);border-radius:50%;cursor:pointer;border:2px solid var(--go-ui-color-white);box-shadow:var(--go-ui-box-shadow-sm);border:none}._cropZoomSlider_1w5i1_673:focus{outline:none;box-shadow:0 0 0 2px var(--go-ui-color-red-40)}._carouselContainer_1w5i1_711{position:relative;width:100%}._carouselImageWrapper_1w5i1_716{position:relative;width:100%;background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-lg);overflow:hidden;border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow var(--go-ui-duration-transition-medium) ease}._carouselImageWrapper_1w5i1_716:hover{box-shadow:var(--go-ui-box-shadow-md)}._carouselImage_1w5i1_716{width:100%;height:auto;-o-object-fit:contain;object-fit:contain;image-rendering:pixelated;display:block}._carouselNavigation_1w5i1_739{display:flex;align-items:center;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-md);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._carouselButton_1w5i1_751{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-md);padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-fast) ease;min-width:40px;height:40px;display:flex;align-items:center;justify-content:center}._carouselButton_1w5i1_751:hover:not(:disabled){background-color:var(--go-ui-color-gray-20);border-color:var(--go-ui-color-gray-40);transform:translateY(-1px)}._carouselButton_1w5i1_751:disabled{opacity:.5;cursor:not-allowed}._carouselIndicators_1w5i1_775{display:flex;gap:var(--go-ui-spacing-xs);align-items:center}._carouselIndicator_1w5i1_775{background-color:var(--go-ui-color-gray-30);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-sm);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-70);cursor:pointer;transition:all var(--go-ui-duration-transition-fast) ease;min-width:32px;height:32px;display:flex;align-items:center;justify-content:center}._carouselIndicator_1w5i1_775:hover:not(:disabled){background-color:var(--go-ui-color-gray-40);border-color:var(--go-ui-color-gray-50);color:var(--go-ui-color-gray-90)}._carouselIndicatorActive_1w5i1_804{background-color:var(--go-ui-color-red-90);border-color:var(--go-ui-color-red-90);color:var(--go-ui-color-white)}._carouselIndicatorActive_1w5i1_804:hover:not(:disabled){background-color:var(--go-ui-color-red-hover);border-color:var(--go-ui-color-red-hover);color:var(--go-ui-color-white)}._carouselIndicator_1w5i1_775:disabled{opacity:.5;cursor:not-allowed}._imageCounter_1w5i1_821{text-align:center;margin-top:var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-70);background-color:var(--go-ui-color-gray-10);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);border-radius:var(--go-ui-border-radius-sm);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._singleImageContainer_1w5i1_834{position:relative;width:100%}._viewImageButtonContainer_1w5i1_840{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-md);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}@media (max-width: 768px){._carouselNavigation_1w5i1_739{flex-direction:column;gap:var(--go-ui-spacing-sm)}._carouselIndicators_1w5i1_775{order:-1;margin-bottom:var(--go-ui-spacing-sm)}._carouselButton_1w5i1_751{min-width:36px;height:36px}._carouselIndicator_1w5i1_775{min-width:28px;height:28px;font-size:var(--go-ui-font-size-xs)}._imageCounter_1w5i1_821{font-size:var(--go-ui-font-size-xs)}._viewImageButtonContainer_1w5i1_840{margin-top:var(--go-ui-spacing-sm)}}._helpContainer_1wavj_1{margin:0 auto;max-width:var(--go-ui-width-screen-lg);padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md) var(--go-ui-spacing-2xl) var(--go-ui-spacing-md)}._helpSection_1wavj_13{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-xl);padding:var(--go-ui-spacing-2xl);margin-bottom:var(--go-ui-spacing-xl);box-shadow:var(--go-ui-box-shadow-sm);transition:all var(--go-ui-duration-transition-medium) ease;position:relative;overflow:hidden}._helpSection_1wavj_13:hover{box-shadow:var(--go-ui-box-shadow-md);transform:translateY(-2px);border-color:var(--go-ui-color-gray-30)}._sectionHeader_1wavj_49{display:flex;align-items:center;margin-bottom:var(--go-ui-spacing-lg);padding-bottom:var(--go-ui-spacing-md);border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._sectionIcon_1wavj_65{width:2rem;height:2rem;margin-right:var(--go-ui-spacing-md);color:var(--go-ui-color-red-90);background-color:var(--go-ui-color-red-5);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._sectionTitle_1wavj_91{color:var(--go-ui-color-black);font-weight:var(--go-ui-font-weight-semibold);font-size:var(--go-ui-font-size-xl);margin:0}._sectionContent_1wavj_105{color:var(--go-ui-color-gray-700);line-height:1.7;font-size:var(--go-ui-font-size-base);margin-bottom:var(--go-ui-spacing-lg)}._guidelinesList_1wavj_119{list-style:none;padding:0;margin:var(--go-ui-spacing-md) 0}._guidelinesList_1wavj_119 li{position:relative;padding:var(--go-ui-spacing-sm) 0 var(--go-ui-spacing-sm) var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-sm);color:var(--go-ui-color-gray-700);line-height:1.6}._guidelinesList_1wavj_119 li:before{content:"✓";position:absolute;left:0;top:var(--go-ui-spacing-sm);color:var(--go-ui-color-green-70);font-weight:var(--go-ui-font-weight-bold);font-size:var(--go-ui-font-size-sm);background-color:var(--go-ui-color-green-5);border-radius:50%;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center}._buttonContainer_1wavj_181{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-xl)}._featureHighlight_1wavj_193{background:linear-gradient(135deg,var(--go-ui-color-blue-5),var(--go-ui-color-blue-10));border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-blue-20);border-radius:var(--go-ui-border-radius-lg);padding:var(--go-ui-spacing-lg);margin:var(--go-ui-spacing-lg) 0;position:relative}._featureHighlight_1wavj_193:before{content:"💡";position:absolute;top:var(--go-ui-spacing-md);right:var(--go-ui-spacing-md);font-size:1.5rem}._featureHighlightText_1wavj_227{color:var(--go-ui-color-blue-90);font-weight:var(--go-ui-font-weight-medium);margin:0;font-size:var(--go-ui-font-size-sm)}@media (max-width: 768px){._helpSection_1wavj_13{padding:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._sectionHeader_1wavj_49{flex-direction:column;text-align:center;gap:var(--go-ui-spacing-sm)}._sectionIcon_1wavj_65{margin-right:0;margin-bottom:var(--go-ui-spacing-sm)}._actionButton_1wavj_277{padding:var(--go-ui-spacing-sm) var(--go-ui-spacing-lg);font-size:var(--go-ui-font-size-sm)}}
 
 
py_backend/static/assets/useAdmin-BStaIYmd.js DELETED
@@ -1 +0,0 @@
1
- import{r}from"./vendor-react-BxsGb6Ph.js";import{A as o}from"./index-DyXqjI96.js";const i=()=>{const t=r.useContext(o);if(t===void 0)throw new Error("useAdmin must be used within an AdminProvider");return t};export{i as u};
 
 
py_backend/static/assets/useAdmin-B_k2Fdj-.js DELETED
@@ -1 +0,0 @@
1
- import{r}from"./vendor-react-BxsGb6Ph.js";import{A as o}from"./index-Uy48qW96.js";const i=()=>{const t=r.useContext(o);if(t===void 0)throw new Error("useAdmin must be used within an AdminProvider");return t};export{i as u};
 
 
py_backend/static/assets/vendor-DxpCibxB.js DELETED
@@ -1,28 +0,0 @@
1
- import{r as C}from"./vendor-react-BxsGb6Ph.js";var na=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function aa(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var pt={exports:{}},vt={};/**
2
- * @license React
3
- * scheduler.production.min.js
4
- *
5
- * Copyright (c) Facebook, Inc. and its affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var Vt;function zr(){return Vt||(Vt=1,function(e){function t(y,L){var U=y.length;y.push(L);e:for(;0<U;){var H=U-1>>>1,W=y[H];if(0<a(W,L))y[H]=L,y[U]=W,U=H;else break e}}function r(y){return y.length===0?null:y[0]}function n(y){if(y.length===0)return null;var L=y[0],U=y.pop();if(U!==L){y[0]=U;e:for(var H=0,W=y.length,fe=W>>>1;H<fe;){var ue=2*(H+1)-1,ie=y[ue],oe=ue+1,ce=y[oe];if(0>a(ie,U))oe<W&&0>a(ce,ie)?(y[H]=ce,y[oe]=U,H=oe):(y[H]=ie,y[ue]=U,H=ue);else if(oe<W&&0>a(ce,U))y[H]=ce,y[oe]=U,H=oe;else break e}}return L}function a(y,L){var U=y.sortIndex-L.sortIndex;return U!==0?U:y.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var o=Date,c=o.now();e.unstable_now=function(){return o.now()-c}}var s=[],m=[],v=1,f=null,g=3,w=!1,S=!1,R=!1,_=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,F=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(y){for(var L=r(m);L!==null;){if(L.callback===null)n(m);else if(L.startTime<=y)n(m),L.sortIndex=L.expirationTime,t(s,L);else break;L=r(m)}}function re(y){if(R=!1,G(y),!S)if(r(s)!==null)S=!0,Re(Z);else{var L=r(m);L!==null&&Pe(re,L.startTime-y)}}function Z(y,L){S=!1,R&&(R=!1,z(B),B=-1),w=!0;var U=g;try{for(G(L),f=r(s);f!==null&&(!(f.expirationTime>L)||y&&!ne());){var H=f.callback;if(typeof H=="function"){f.callback=null,g=f.priorityLevel;var W=H(f.expirationTime<=L);L=e.unstable_now(),typeof W=="function"?f.callback=W:f===r(s)&&n(s),G(L)}else n(s);f=r(s)}if(f!==null)var fe=!0;else{var ue=r(m);ue!==null&&Pe(re,ue.startTime-L),fe=!1}return fe}finally{f=null,g=U,w=!1}}var me=!1,h=null,B=-1,Q=5,V=-1;function ne(){return!(e.unstable_now()-V<Q)}function ae(){if(h!==null){var y=e.unstable_now();V=y;var L=!0;try{L=h(!0,y)}finally{L?ee():(me=!1,h=null)}}else me=!1}var ee;if(typeof F=="function")ee=function(){F(ae)};else if(typeof MessageChannel<"u"){var ve=new MessageChannel,ge=ve.port2;ve.port1.onmessage=ae,ee=function(){ge.postMessage(null)}}else ee=function(){_(ae,0)};function Re(y){h=y,me||(me=!0,ee())}function Pe(y,L){B=_(function(){y(e.unstable_now())},L)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(y){y.callback=null},e.unstable_continueExecution=function(){S||w||(S=!0,Re(Z))},e.unstable_forceFrameRate=function(y){0>y||125<y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Q=0<y?Math.floor(1e3/y):5},e.unstable_getCurrentPriorityLevel=function(){return g},e.unstable_getFirstCallbackNode=function(){return r(s)},e.unstable_next=function(y){switch(g){case 1:case 2:case 3:var L=3;break;default:L=g}var U=g;g=L;try{return y()}finally{g=U}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(y,L){switch(y){case 1:case 2:case 3:case 4:case 5:break;default:y=3}var U=g;g=y;try{return L()}finally{g=U}},e.unstable_scheduleCallback=function(y,L,U){var H=e.unstable_now();switch(typeof U=="object"&&U!==null?(U=U.delay,U=typeof U=="number"&&0<U?H+U:H):U=H,y){case 1:var W=-1;break;case 2:W=250;break;case 5:W=1073741823;break;case 4:W=1e4;break;default:W=5e3}return W=U+W,y={id:v++,callback:L,priorityLevel:y,startTime:U,expirationTime:W,sortIndex:-1},U>H?(y.sortIndex=U,t(m,y),r(s)===null&&y===r(m)&&(R?(z(B),B=-1):R=!0,Pe(re,U-H))):(y.sortIndex=W,t(s,y),S||w||(S=!0,Re(Z))),y},e.unstable_shouldYield=ne,e.unstable_wrapCallback=function(y){var L=g;return function(){var U=g;g=L;try{return y.apply(this,arguments)}finally{g=U}}}}(vt)),vt}var $t;function ia(){return $t||($t=1,pt.exports=zr()),pt.exports}/**
10
- * @remix-run/router v1.23.0
11
- *
12
- * Copyright (c) Remix Software Inc.
13
- *
14
- * This source code is licensed under the MIT license found in the
15
- * LICENSE.md file in the root directory of this source tree.
16
- *
17
- * @license MIT
18
- */function J(){return J=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},J.apply(this,arguments)}var q;(function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"})(q||(q={}));const Jt="popstate";function oa(e){e===void 0&&(e={});function t(n,a){let{pathname:u,search:o,hash:c}=n.location;return Ge("",{pathname:u,search:o,hash:c},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function r(n,a){return typeof a=="string"?a:qe(a)}return Wr(t,r,null,e)}function N(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function ke(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Hr(){return Math.random().toString(36).substr(2,8)}function Kt(e,t){return{usr:e.state,key:e.key,idx:t}}function Ge(e,t,r,n){return r===void 0&&(r=null),J({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Ce(t):t,{state:r,key:t&&t.key||n||Hr()})}function qe(e){let{pathname:t="/",search:r="",hash:n=""}=e;return r&&r!=="?"&&(t+=r.charAt(0)==="?"?r:"?"+r),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Ce(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function Wr(e,t,r,n){n===void 0&&(n={});let{window:a=document.defaultView,v5Compat:u=!1}=n,o=a.history,c=q.Pop,s=null,m=v();m==null&&(m=0,o.replaceState(J({},o.state,{idx:m}),""));function v(){return(o.state||{idx:null}).idx}function f(){c=q.Pop;let _=v(),z=_==null?null:_-m;m=_,s&&s({action:c,location:R.location,delta:z})}function g(_,z){c=q.Push;let F=Ge(R.location,_,z);m=v()+1;let G=Kt(F,m),re=R.createHref(F);try{o.pushState(G,"",re)}catch(Z){if(Z instanceof DOMException&&Z.name==="DataCloneError")throw Z;a.location.assign(re)}u&&s&&s({action:c,location:R.location,delta:1})}function w(_,z){c=q.Replace;let F=Ge(R.location,_,z);m=v();let G=Kt(F,m),re=R.createHref(F);o.replaceState(G,"",re),u&&s&&s({action:c,location:R.location,delta:0})}function S(_){let z=a.location.origin!=="null"?a.location.origin:a.location.href,F=typeof _=="string"?_:qe(_);return F=F.replace(/ $/,"%20"),N(z,"No window.location.(origin|href) available to create URL for href: "+F),new URL(F,z)}let R={get action(){return c},get location(){return e(a,o)},listen(_){if(s)throw new Error("A history only accepts one active listener");return a.addEventListener(Jt,f),s=_,()=>{a.removeEventListener(Jt,f),s=null}},createHref(_){return t(a,_)},createURL:S,encodeLocation(_){let z=S(_);return{pathname:z.pathname,search:z.search,hash:z.hash}},push:g,replace:w,go(_){return o.go(_)}};return R}var k;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(k||(k={}));const Vr=new Set(["lazy","caseSensitive","path","id","index","children"]);function $r(e){return e.index===!0}function ut(e,t,r,n){return r===void 0&&(r=[]),n===void 0&&(n={}),e.map((a,u)=>{let o=[...r,String(u)],c=typeof a.id=="string"?a.id:o.join("-");if(N(a.index!==!0||!a.children,"Cannot specify children on an index route"),N(!n[c],'Found a route id collision on id "'+c+`". Route id's must be globally unique within Data Router usages`),$r(a)){let s=J({},a,t(a),{id:c});return n[c]=s,s}else{let s=J({},a,t(a),{id:c,children:void 0});return n[c]=s,a.children&&(s.children=ut(a.children,t,o,n)),s}})}function Ue(e,t,r){return r===void 0&&(r="/"),st(e,t,r,!1)}function st(e,t,r,n){let a=typeof t=="string"?Ce(t):t,u=Qe(a.pathname||"/",r);if(u==null)return null;let o=dr(e);Kr(o);let c=null;for(let s=0;c==null&&s<o.length;++s){let m=an(u);c=rn(o[s],m,n)}return c}function Jr(e,t){let{route:r,pathname:n,params:a}=e;return{id:r.id,pathname:n,params:a,data:t[r.id],handle:r.handle}}function dr(e,t,r,n){t===void 0&&(t=[]),r===void 0&&(r=[]),n===void 0&&(n="");let a=(u,o,c)=>{let s={relativePath:c===void 0?u.path||"":c,caseSensitive:u.caseSensitive===!0,childrenIndex:o,route:u};s.relativePath.startsWith("/")&&(N(s.relativePath.startsWith(n),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(n.length));let m=we([n,s.relativePath]),v=r.concat(s);u.children&&u.children.length>0&&(N(u.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+m+'".')),dr(u.children,t,v,m)),!(u.path==null&&!u.index)&&t.push({path:m,score:en(m,u.index),routesMeta:v})};return e.forEach((u,o)=>{var c;if(u.path===""||!((c=u.path)!=null&&c.includes("?")))a(u,o);else for(let s of cr(u.path))a(u,o,s)}),t}function cr(e){let t=e.split("/");if(t.length===0)return[];let[r,...n]=t,a=r.endsWith("?"),u=r.replace(/\?$/,"");if(n.length===0)return a?[u,""]:[u];let o=cr(n.join("/")),c=[];return c.push(...o.map(s=>s===""?u:[u,s].join("/"))),a&&c.push(...o),c.map(s=>e.startsWith("/")&&s===""?"/":s)}function Kr(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:tn(t.routesMeta.map(n=>n.childrenIndex),r.routesMeta.map(n=>n.childrenIndex)))}const Yr=/^:[\w-]+$/,Gr=3,Xr=2,qr=1,Qr=10,Zr=-2,Yt=e=>e==="*";function en(e,t){let r=e.split("/"),n=r.length;return r.some(Yt)&&(n+=Zr),t&&(n+=Xr),r.filter(a=>!Yt(a)).reduce((a,u)=>a+(Yr.test(u)?Gr:u===""?qr:Qr),n)}function tn(e,t){return e.length===t.length&&e.slice(0,-1).every((n,a)=>n===t[a])?e[e.length-1]-t[t.length-1]:0}function rn(e,t,r){r===void 0&&(r=!1);let{routesMeta:n}=e,a={},u="/",o=[];for(let c=0;c<n.length;++c){let s=n[c],m=c===n.length-1,v=u==="/"?t:t.slice(u.length)||"/",f=Gt({path:s.relativePath,caseSensitive:s.caseSensitive,end:m},v),g=s.route;if(!f&&m&&r&&!n[n.length-1].route.index&&(f=Gt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},v)),!f)return null;Object.assign(a,f.params),o.push({params:a,pathname:we([u,f.pathname]),pathnameBase:sn(we([u,f.pathnameBase])),route:g}),f.pathnameBase!=="/"&&(u=we([u,f.pathnameBase]))}return o}function Gt(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[r,n]=nn(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let u=a[0],o=u.replace(/(.)\/+$/,"$1"),c=a.slice(1);return{params:n.reduce((m,v,f)=>{let{paramName:g,isOptional:w}=v;if(g==="*"){let R=c[f]||"";o=u.slice(0,u.length-R.length).replace(/(.)\/+$/,"$1")}const S=c[f];return w&&!S?m[g]=void 0:m[g]=(S||"").replace(/%2F/g,"/"),m},{}),pathname:u,pathnameBase:o,pattern:e}}function nn(e,t,r){t===void 0&&(t=!1),r===void 0&&(r=!0),ke(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],a="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,c,s)=>(n.push({paramName:c,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(n.push({paramName:"*"}),a+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":e!==""&&e!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),n]}function an(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ke(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Qe(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&n!=="/"?null:e.slice(r)||"/"}function on(e,t){t===void 0&&(t="/");let{pathname:r,search:n="",hash:a=""}=typeof e=="string"?Ce(e):e;return{pathname:r?r.startsWith("/")?r:ln(r,t):t,search:un(n),hash:dn(a)}}function ln(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(a=>{a===".."?r.length>1&&r.pop():a!=="."&&r.push(a)}),r.length>1?r.join("/"):"/"}function gt(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+r+"` field. Alternatively you may provide the full path as ")+'a string in <Link to="..."> and the router will parse it for you.'}function fr(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function Dt(e,t){let r=fr(e);return t?r.map((n,a)=>a===r.length-1?n.pathname:n.pathnameBase):r.map(n=>n.pathnameBase)}function xt(e,t,r,n){n===void 0&&(n=!1);let a;typeof e=="string"?a=Ce(e):(a=J({},e),N(!a.pathname||!a.pathname.includes("?"),gt("?","pathname","search",a)),N(!a.pathname||!a.pathname.includes("#"),gt("#","pathname","hash",a)),N(!a.search||!a.search.includes("#"),gt("#","search","hash",a)));let u=e===""||a.pathname==="",o=u?"/":a.pathname,c;if(o==null)c=r;else{let f=t.length-1;if(!n&&o.startsWith("..")){let g=o.split("/");for(;g[0]==="..";)g.shift(),f-=1;a.pathname=g.join("/")}c=f>=0?t[f]:"/"}let s=on(a,c),m=o&&o!=="/"&&o.endsWith("/"),v=(u||o===".")&&r.endsWith("/");return!s.pathname.endsWith("/")&&(m||v)&&(s.pathname+="/"),s}const we=e=>e.join("/").replace(/\/\/+/g,"/"),sn=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),un=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,dn=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class wt{constructor(t,r,n,a){a===void 0&&(a=!1),this.status=t,this.statusText=r||"",this.internal=a,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}}function Xe(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const hr=["post","put","patch","delete"],cn=new Set(hr),fn=["get",...hr],hn=new Set(fn),mn=new Set([301,302,303,307,308]),pn=new Set([307,308]),yt={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},vn={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Je={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},St=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,gn=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),mr="remix-router-transitions";function la(e){const t=e.window?e.window:typeof window<"u"?window:void 0,r=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",n=!r;N(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let a;if(e.mapRouteProperties)a=e.mapRouteProperties;else if(e.detectErrorBoundary){let i=e.detectErrorBoundary;a=l=>({hasErrorBoundary:i(l)})}else a=gn;let u={},o=ut(e.routes,a,void 0,u),c,s=e.basename||"/",m=e.dataStrategy||En,v=e.patchRoutesOnNavigation,f=J({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),g=null,w=new Set,S=null,R=null,_=null,z=e.hydrationData!=null,F=Ue(o,e.history.location,s),G=!1,re=null;if(F==null&&!v){let i=se(404,{pathname:e.history.location.pathname}),{matches:l,route:d}=or(o);F=l,re={[d.id]:i}}F&&!e.hydrationData&&nt(F,o,e.history.location.pathname).active&&(F=null);let Z;if(F)if(F.some(i=>i.route.lazy))Z=!1;else if(!F.some(i=>i.route.loader))Z=!0;else if(f.v7_partialHydration){let i=e.hydrationData?e.hydrationData.loaderData:null,l=e.hydrationData?e.hydrationData.errors:null;if(l){let d=F.findIndex(p=>l[p.route.id]!==void 0);Z=F.slice(0,d+1).every(p=>!Rt(p.route,i,l))}else Z=F.every(d=>!Rt(d.route,i,l))}else Z=e.hydrationData!=null;else if(Z=!1,F=[],f.v7_partialHydration){let i=nt(null,o,e.history.location.pathname);i.active&&i.matches&&(G=!0,F=i.matches)}let me,h={historyAction:e.history.action,location:e.history.location,matches:F,initialized:Z,navigation:yt,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||re,fetchers:new Map,blockers:new Map},B=q.Pop,Q=!1,V,ne=!1,ae=new Map,ee=null,ve=!1,ge=!1,Re=[],Pe=new Set,y=new Map,L=0,U=-1,H=new Map,W=new Set,fe=new Map,ue=new Map,ie=new Set,oe=new Map,ce=new Map,et;function Dr(){if(g=e.history.listen(i=>{let{action:l,location:d,delta:p}=i;if(et){et(),et=void 0;return}ke(ce.size===0||p!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let b=kt({currentLocation:h.location,nextLocation:d,historyAction:l});if(b&&p!=null){let M=new Promise(T=>{et=T});e.history.go(p*-1),rt(b,{state:"blocked",location:d,proceed(){rt(b,{state:"proceeding",proceed:void 0,reset:void 0,location:d}),M.then(()=>e.history.go(p))},reset(){let T=new Map(h.blockers);T.set(b,Je),le({blockers:T})}});return}return Le(l,d)}),r){Nn(t,ae);let i=()=>jn(t,ae);t.addEventListener("pagehide",i),ee=()=>t.removeEventListener("pagehide",i)}return h.initialized||Le(q.Pop,h.location,{initialHydration:!0}),me}function xr(){g&&g(),ee&&ee(),w.clear(),V&&V.abort(),h.fetchers.forEach((i,l)=>tt(l)),h.blockers.forEach((i,l)=>Bt(l))}function Sr(i){return w.add(i),()=>w.delete(i)}function le(i,l){l===void 0&&(l={}),h=J({},h,i);let d=[],p=[];f.v7_fetcherPersist&&h.fetchers.forEach((b,M)=>{b.state==="idle"&&(ie.has(M)?p.push(M):d.push(M))}),ie.forEach(b=>{!h.fetchers.has(b)&&!y.has(b)&&p.push(b)}),[...w].forEach(b=>b(h,{deletedFetchers:p,viewTransitionOpts:l.viewTransitionOpts,flushSync:l.flushSync===!0})),f.v7_fetcherPersist?(d.forEach(b=>h.fetchers.delete(b)),p.forEach(b=>tt(b))):p.forEach(b=>ie.delete(b))}function Ne(i,l,d){var p,b;let{flushSync:M}=d===void 0?{}:d,T=h.actionData!=null&&h.navigation.formMethod!=null&&he(h.navigation.formMethod)&&h.navigation.state==="loading"&&((p=i.state)==null?void 0:p._isRedirect)!==!0,P;l.actionData?Object.keys(l.actionData).length>0?P=l.actionData:P=null:T?P=h.actionData:P=null;let D=l.loaderData?ar(h.loaderData,l.loaderData,l.matches||[],l.errors):h.loaderData,E=h.blockers;E.size>0&&(E=new Map(E),E.forEach((j,te)=>E.set(te,Je)));let x=Q===!0||h.navigation.formMethod!=null&&he(h.navigation.formMethod)&&((b=i.state)==null?void 0:b._isRedirect)!==!0;c&&(o=c,c=void 0),ve||B===q.Pop||(B===q.Push?e.history.push(i,i.state):B===q.Replace&&e.history.replace(i,i.state));let I;if(B===q.Pop){let j=ae.get(h.location.pathname);j&&j.has(i.pathname)?I={currentLocation:h.location,nextLocation:i}:ae.has(i.pathname)&&(I={currentLocation:i,nextLocation:h.location})}else if(ne){let j=ae.get(h.location.pathname);j?j.add(i.pathname):(j=new Set([i.pathname]),ae.set(h.location.pathname,j)),I={currentLocation:h.location,nextLocation:i}}le(J({},l,{actionData:P,loaderData:D,historyAction:B,location:i,initialized:!0,navigation:yt,revalidation:"idle",restoreScrollPosition:Ht(i,l.matches||h.matches),preventScrollReset:x,blockers:E}),{viewTransitionOpts:I,flushSync:M===!0}),B=q.Pop,Q=!1,ne=!1,ve=!1,ge=!1,Re=[]}async function Ut(i,l){if(typeof i=="number"){e.history.go(i);return}let d=Et(h.location,h.matches,s,f.v7_prependBasename,i,f.v7_relativeSplatPath,l?.fromRouteId,l?.relative),{path:p,submission:b,error:M}=Xt(f.v7_normalizeFormMethod,!1,d,l),T=h.location,P=Ge(h.location,p,l&&l.state);P=J({},P,e.history.encodeLocation(P));let D=l&&l.replace!=null?l.replace:void 0,E=q.Push;D===!0?E=q.Replace:D===!1||b!=null&&he(b.formMethod)&&b.formAction===h.location.pathname+h.location.search&&(E=q.Replace);let x=l&&"preventScrollReset"in l?l.preventScrollReset===!0:void 0,I=(l&&l.flushSync)===!0,j=kt({currentLocation:T,nextLocation:P,historyAction:E});if(j){rt(j,{state:"blocked",location:P,proceed(){rt(j,{state:"proceeding",proceed:void 0,reset:void 0,location:P}),Ut(i,l)},reset(){let te=new Map(h.blockers);te.set(j,Je),le({blockers:te})}});return}return await Le(E,P,{submission:b,pendingError:M,preventScrollReset:x,replace:l&&l.replace,enableViewTransition:l&&l.viewTransition,flushSync:I})}function Mr(){if(ct(),le({revalidation:"loading"}),h.navigation.state!=="submitting"){if(h.navigation.state==="idle"){Le(h.historyAction,h.location,{startUninterruptedRevalidation:!0});return}Le(B||h.historyAction,h.navigation.location,{overrideNavigation:h.navigation,enableViewTransition:ne===!0})}}async function Le(i,l,d){V&&V.abort(),V=null,B=i,ve=(d&&d.startUninterruptedRevalidation)===!0,Or(h.location,h.matches),Q=(d&&d.preventScrollReset)===!0,ne=(d&&d.enableViewTransition)===!0;let p=c||o,b=d&&d.overrideNavigation,M=d!=null&&d.initialHydration&&h.matches&&h.matches.length>0&&!G?h.matches:Ue(p,l,s),T=(d&&d.flushSync)===!0;if(M&&h.initialized&&!ge&&Mn(h.location,l)&&!(d&&d.submission&&he(d.submission.formMethod))){Ne(l,{matches:M},{flushSync:T});return}let P=nt(M,p,l.pathname);if(P.active&&P.matches&&(M=P.matches),!M){let{error:$,notFoundMatches:A,route:K}=ft(l.pathname);Ne(l,{matches:A,loaderData:{},errors:{[K.id]:$}},{flushSync:T});return}V=new AbortController;let D=Be(e.history,l,V.signal,d&&d.submission),E;if(d&&d.pendingError)E=[Fe(M).route.id,{type:k.error,error:d.pendingError}];else if(d&&d.submission&&he(d.submission.formMethod)){let $=await Cr(D,l,d.submission,M,P.active,{replace:d.replace,flushSync:T});if($.shortCircuited)return;if($.pendingActionResult){let[A,K]=$.pendingActionResult;if(de(K)&&Xe(K.error)&&K.error.status===404){V=null,Ne(l,{matches:$.matches,loaderData:{},errors:{[A]:K.error}});return}}M=$.matches||M,E=$.pendingActionResult,b=bt(l,d.submission),T=!1,P.active=!1,D=Be(e.history,D.url,D.signal)}let{shortCircuited:x,matches:I,loaderData:j,errors:te}=await Lr(D,l,M,P.active,b,d&&d.submission,d&&d.fetcherSubmission,d&&d.replace,d&&d.initialHydration===!0,T,E);x||(V=null,Ne(l,J({matches:I||M},ir(E),{loaderData:j,errors:te})))}async function Cr(i,l,d,p,b,M){M===void 0&&(M={}),ct();let T=Fn(l,d);if(le({navigation:T},{flushSync:M.flushSync===!0}),b){let E=await at(p,l.pathname,i.signal);if(E.type==="aborted")return{shortCircuited:!0};if(E.type==="error"){let x=Fe(E.partialMatches).route.id;return{matches:E.partialMatches,pendingActionResult:[x,{type:k.error,error:E.error}]}}else if(E.matches)p=E.matches;else{let{notFoundMatches:x,error:I,route:j}=ft(l.pathname);return{matches:x,pendingActionResult:[j.id,{type:k.error,error:I}]}}}let P,D=Ye(p,l);if(!D.route.action&&!D.route.lazy)P={type:k.error,error:se(405,{method:i.method,pathname:l.pathname,routeId:D.route.id})};else if(P=(await He("action",h,i,[D],p,null))[D.route.id],i.signal.aborted)return{shortCircuited:!0};if(Ie(P)){let E;return M&&M.replace!=null?E=M.replace:E=tr(P.response.headers.get("Location"),new URL(i.url),s)===h.location.pathname+h.location.search,await Te(i,P,!0,{submission:d,replace:E}),{shortCircuited:!0}}if(Me(P))throw se(400,{type:"defer-action"});if(de(P)){let E=Fe(p,D.route.id);return(M&&M.replace)!==!0&&(B=q.Push),{matches:p,pendingActionResult:[E.route.id,P]}}return{matches:p,pendingActionResult:[D.route.id,P]}}async function Lr(i,l,d,p,b,M,T,P,D,E,x){let I=b||bt(l,M),j=M||T||sr(I),te=!ve&&(!f.v7_partialHydration||!D);if(p){if(te){let Y=Ft(x);le(J({navigation:I},Y!==void 0?{actionData:Y}:{}),{flushSync:E})}let O=await at(d,l.pathname,i.signal);if(O.type==="aborted")return{shortCircuited:!0};if(O.type==="error"){let Y=Fe(O.partialMatches).route.id;return{matches:O.partialMatches,loaderData:{},errors:{[Y]:O.error}}}else if(O.matches)d=O.matches;else{let{error:Y,notFoundMatches:Oe,route:$e}=ft(l.pathname);return{matches:Oe,loaderData:{},errors:{[$e.id]:Y}}}}let $=c||o,[A,K]=Qt(e.history,h,d,j,l,f.v7_partialHydration&&D===!0,f.v7_skipActionErrorRevalidation,ge,Re,Pe,ie,fe,W,$,s,x);if(ht(O=>!(d&&d.some(Y=>Y.route.id===O))||A&&A.some(Y=>Y.route.id===O)),U=++L,A.length===0&&K.length===0){let O=Ot();return Ne(l,J({matches:d,loaderData:{},errors:x&&de(x[1])?{[x[0]]:x[1].error}:null},ir(x),O?{fetchers:new Map(h.fetchers)}:{}),{flushSync:E}),{shortCircuited:!0}}if(te){let O={};if(!p){O.navigation=I;let Y=Ft(x);Y!==void 0&&(O.actionData=Y)}K.length>0&&(O.fetchers=Tr(K)),le(O,{flushSync:E})}K.forEach(O=>{xe(O.key),O.controller&&y.set(O.key,O.controller)});let je=()=>K.forEach(O=>xe(O.key));V&&V.signal.addEventListener("abort",je);let{loaderResults:We,fetcherResults:be}=await It(h,d,A,K,i);if(i.signal.aborted)return{shortCircuited:!0};V&&V.signal.removeEventListener("abort",je),K.forEach(O=>y.delete(O.key));let pe=lt(We);if(pe)return await Te(i,pe.result,!0,{replace:P}),{shortCircuited:!0};if(pe=lt(be),pe)return W.add(pe.key),await Te(i,pe.result,!0,{replace:P}),{shortCircuited:!0};let{loaderData:mt,errors:Ve}=nr(h,d,We,x,K,be,oe);oe.forEach((O,Y)=>{O.subscribe(Oe=>{(Oe||O.done)&&oe.delete(Y)})}),f.v7_partialHydration&&D&&h.errors&&(Ve=J({},h.errors,Ve));let _e=Ot(),it=At(U),ot=_e||it||K.length>0;return J({matches:d,loaderData:mt,errors:Ve},ot?{fetchers:new Map(h.fetchers)}:{})}function Ft(i){if(i&&!de(i[1]))return{[i[0]]:i[1].data};if(h.actionData)return Object.keys(h.actionData).length===0?null:h.actionData}function Tr(i){return i.forEach(l=>{let d=h.fetchers.get(l.key),p=Ke(void 0,d?d.data:void 0);h.fetchers.set(l.key,p)}),new Map(h.fetchers)}function _r(i,l,d,p){if(n)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");xe(i);let b=(p&&p.flushSync)===!0,M=c||o,T=Et(h.location,h.matches,s,f.v7_prependBasename,d,f.v7_relativeSplatPath,l,p?.relative),P=Ue(M,T,s),D=nt(P,M,T);if(D.active&&D.matches&&(P=D.matches),!P){ye(i,l,se(404,{pathname:T}),{flushSync:b});return}let{path:E,submission:x,error:I}=Xt(f.v7_normalizeFormMethod,!0,T,p);if(I){ye(i,l,I,{flushSync:b});return}let j=Ye(P,E),te=(p&&p.preventScrollReset)===!0;if(x&&he(x.formMethod)){Ur(i,l,E,j,P,D.active,b,te,x);return}fe.set(i,{routeId:l,path:E}),Fr(i,l,E,j,P,D.active,b,te,x)}async function Ur(i,l,d,p,b,M,T,P,D){ct(),fe.delete(i);function E(X){if(!X.route.action&&!X.route.lazy){let Ae=se(405,{method:D.formMethod,pathname:d,routeId:l});return ye(i,l,Ae,{flushSync:T}),!0}return!1}if(!M&&E(p))return;let x=h.fetchers.get(i);De(i,In(D,x),{flushSync:T});let I=new AbortController,j=Be(e.history,d,I.signal,D);if(M){let X=await at(b,new URL(j.url).pathname,j.signal,i);if(X.type==="aborted")return;if(X.type==="error"){ye(i,l,X.error,{flushSync:T});return}else if(X.matches){if(b=X.matches,p=Ye(b,d),E(p))return}else{ye(i,l,se(404,{pathname:d}),{flushSync:T});return}}y.set(i,I);let te=L,A=(await He("action",h,j,[p],b,i))[p.route.id];if(j.signal.aborted){y.get(i)===I&&y.delete(i);return}if(f.v7_fetcherPersist&&ie.has(i)){if(Ie(A)||de(A)){De(i,Se(void 0));return}}else{if(Ie(A))if(y.delete(i),U>te){De(i,Se(void 0));return}else return W.add(i),De(i,Ke(D)),Te(j,A,!1,{fetcherSubmission:D,preventScrollReset:P});if(de(A)){ye(i,l,A.error);return}}if(Me(A))throw se(400,{type:"defer-action"});let K=h.navigation.location||h.location,je=Be(e.history,K,I.signal),We=c||o,be=h.navigation.state!=="idle"?Ue(We,h.navigation.location,s):h.matches;N(be,"Didn't find any matches after fetcher action");let pe=++L;H.set(i,pe);let mt=Ke(D,A.data);h.fetchers.set(i,mt);let[Ve,_e]=Qt(e.history,h,be,D,K,!1,f.v7_skipActionErrorRevalidation,ge,Re,Pe,ie,fe,W,We,s,[p.route.id,A]);_e.filter(X=>X.key!==i).forEach(X=>{let Ae=X.key,Wt=h.fetchers.get(Ae),kr=Ke(void 0,Wt?Wt.data:void 0);h.fetchers.set(Ae,kr),xe(Ae),X.controller&&y.set(Ae,X.controller)}),le({fetchers:new Map(h.fetchers)});let it=()=>_e.forEach(X=>xe(X.key));I.signal.addEventListener("abort",it);let{loaderResults:ot,fetcherResults:O}=await It(h,be,Ve,_e,je);if(I.signal.aborted)return;I.signal.removeEventListener("abort",it),H.delete(i),y.delete(i),_e.forEach(X=>y.delete(X.key));let Y=lt(ot);if(Y)return Te(je,Y.result,!1,{preventScrollReset:P});if(Y=lt(O),Y)return W.add(Y.key),Te(je,Y.result,!1,{preventScrollReset:P});let{loaderData:Oe,errors:$e}=nr(h,be,ot,void 0,_e,O,oe);if(h.fetchers.has(i)){let X=Se(A.data);h.fetchers.set(i,X)}At(pe),h.navigation.state==="loading"&&pe>U?(N(B,"Expected pending action"),V&&V.abort(),Ne(h.navigation.location,{matches:be,loaderData:Oe,errors:$e,fetchers:new Map(h.fetchers)})):(le({errors:$e,loaderData:ar(h.loaderData,Oe,be,$e),fetchers:new Map(h.fetchers)}),ge=!1)}async function Fr(i,l,d,p,b,M,T,P,D){let E=h.fetchers.get(i);De(i,Ke(D,E?E.data:void 0),{flushSync:T});let x=new AbortController,I=Be(e.history,d,x.signal);if(M){let A=await at(b,new URL(I.url).pathname,I.signal,i);if(A.type==="aborted")return;if(A.type==="error"){ye(i,l,A.error,{flushSync:T});return}else if(A.matches)b=A.matches,p=Ye(b,d);else{ye(i,l,se(404,{pathname:d}),{flushSync:T});return}}y.set(i,x);let j=L,$=(await He("loader",h,I,[p],b,i))[p.route.id];if(Me($)&&($=await Mt($,I.signal,!0)||$),y.get(i)===x&&y.delete(i),!I.signal.aborted){if(ie.has(i)){De(i,Se(void 0));return}if(Ie($))if(U>j){De(i,Se(void 0));return}else{W.add(i),await Te(I,$,!1,{preventScrollReset:P});return}if(de($)){ye(i,l,$.error);return}N(!Me($),"Unhandled fetcher deferred data"),De(i,Se($.data))}}async function Te(i,l,d,p){let{submission:b,fetcherSubmission:M,preventScrollReset:T,replace:P}=p===void 0?{}:p;l.response.headers.has("X-Remix-Revalidate")&&(ge=!0);let D=l.response.headers.get("Location");N(D,"Expected a Location header on the redirect Response"),D=tr(D,new URL(i.url),s);let E=Ge(h.location,D,{_isRedirect:!0});if(r){let A=!1;if(l.response.headers.has("X-Remix-Reload-Document"))A=!0;else if(St.test(D)){const K=e.history.createURL(D);A=K.origin!==t.location.origin||Qe(K.pathname,s)==null}if(A){P?t.location.replace(D):t.location.assign(D);return}}V=null;let x=P===!0||l.response.headers.has("X-Remix-Replace")?q.Replace:q.Push,{formMethod:I,formAction:j,formEncType:te}=h.navigation;!b&&!M&&I&&j&&te&&(b=sr(h.navigation));let $=b||M;if(pn.has(l.response.status)&&$&&he($.formMethod))await Le(x,E,{submission:J({},$,{formAction:D}),preventScrollReset:T||Q,enableViewTransition:d?ne:void 0});else{let A=bt(E,b);await Le(x,E,{overrideNavigation:A,fetcherSubmission:M,preventScrollReset:T||Q,enableViewTransition:d?ne:void 0})}}async function He(i,l,d,p,b,M){let T,P={};try{T=await Rn(m,i,l,d,p,b,M,u,a)}catch(D){return p.forEach(E=>{P[E.route.id]={type:k.error,error:D}}),P}for(let[D,E]of Object.entries(T))if(Cn(E)){let x=E.result;P[D]={type:k.redirect,response:xn(x,d,D,b,s,f.v7_relativeSplatPath)}}else P[D]=await Dn(E);return P}async function It(i,l,d,p,b){let M=i.matches,T=He("loader",i,b,d,l,null),P=Promise.all(p.map(async x=>{if(x.matches&&x.match&&x.controller){let j=(await He("loader",i,Be(e.history,x.path,x.controller.signal),[x.match],x.matches,x.key))[x.match.route.id];return{[x.key]:j}}else return Promise.resolve({[x.key]:{type:k.error,error:se(404,{pathname:x.path})}})})),D=await T,E=(await P).reduce((x,I)=>Object.assign(x,I),{});return await Promise.all([_n(l,D,b.signal,M,i.loaderData),Un(l,E,p)]),{loaderResults:D,fetcherResults:E}}function ct(){ge=!0,Re.push(...ht()),fe.forEach((i,l)=>{y.has(l)&&Pe.add(l),xe(l)})}function De(i,l,d){d===void 0&&(d={}),h.fetchers.set(i,l),le({fetchers:new Map(h.fetchers)},{flushSync:(d&&d.flushSync)===!0})}function ye(i,l,d,p){p===void 0&&(p={});let b=Fe(h.matches,l);tt(i),le({errors:{[b.route.id]:d},fetchers:new Map(h.fetchers)},{flushSync:(p&&p.flushSync)===!0})}function Nt(i){return ue.set(i,(ue.get(i)||0)+1),ie.has(i)&&ie.delete(i),h.fetchers.get(i)||vn}function tt(i){let l=h.fetchers.get(i);y.has(i)&&!(l&&l.state==="loading"&&H.has(i))&&xe(i),fe.delete(i),H.delete(i),W.delete(i),f.v7_fetcherPersist&&ie.delete(i),Pe.delete(i),h.fetchers.delete(i)}function Ir(i){let l=(ue.get(i)||0)-1;l<=0?(ue.delete(i),ie.add(i),f.v7_fetcherPersist||tt(i)):ue.set(i,l),le({fetchers:new Map(h.fetchers)})}function xe(i){let l=y.get(i);l&&(l.abort(),y.delete(i))}function jt(i){for(let l of i){let d=Nt(l),p=Se(d.data);h.fetchers.set(l,p)}}function Ot(){let i=[],l=!1;for(let d of W){let p=h.fetchers.get(d);N(p,"Expected fetcher: "+d),p.state==="loading"&&(W.delete(d),i.push(d),l=!0)}return jt(i),l}function At(i){let l=[];for(let[d,p]of H)if(p<i){let b=h.fetchers.get(d);N(b,"Expected fetcher: "+d),b.state==="loading"&&(xe(d),H.delete(d),l.push(d))}return jt(l),l.length>0}function Nr(i,l){let d=h.blockers.get(i)||Je;return ce.get(i)!==l&&ce.set(i,l),d}function Bt(i){h.blockers.delete(i),ce.delete(i)}function rt(i,l){let d=h.blockers.get(i)||Je;N(d.state==="unblocked"&&l.state==="blocked"||d.state==="blocked"&&l.state==="blocked"||d.state==="blocked"&&l.state==="proceeding"||d.state==="blocked"&&l.state==="unblocked"||d.state==="proceeding"&&l.state==="unblocked","Invalid blocker state transition: "+d.state+" -> "+l.state);let p=new Map(h.blockers);p.set(i,l),le({blockers:p})}function kt(i){let{currentLocation:l,nextLocation:d,historyAction:p}=i;if(ce.size===0)return;ce.size>1&&ke(!1,"A router only supports one blocker at a time");let b=Array.from(ce.entries()),[M,T]=b[b.length-1],P=h.blockers.get(M);if(!(P&&P.state==="proceeding")&&T({currentLocation:l,nextLocation:d,historyAction:p}))return M}function ft(i){let l=se(404,{pathname:i}),d=c||o,{matches:p,route:b}=or(d);return ht(),{notFoundMatches:p,route:b,error:l}}function ht(i){let l=[];return oe.forEach((d,p)=>{(!i||i(p))&&(d.cancel(),l.push(p),oe.delete(p))}),l}function jr(i,l,d){if(S=i,_=l,R=d||null,!z&&h.navigation===yt){z=!0;let p=Ht(h.location,h.matches);p!=null&&le({restoreScrollPosition:p})}return()=>{S=null,_=null,R=null}}function zt(i,l){return R&&R(i,l.map(p=>Jr(p,h.loaderData)))||i.key}function Or(i,l){if(S&&_){let d=zt(i,l);S[d]=_()}}function Ht(i,l){if(S){let d=zt(i,l),p=S[d];if(typeof p=="number")return p}return null}function nt(i,l,d){if(v)if(i){if(Object.keys(i[0].params).length>0)return{active:!0,matches:st(l,d,s,!0)}}else return{active:!0,matches:st(l,d,s,!0)||[]};return{active:!1,matches:null}}async function at(i,l,d,p){if(!v)return{type:"success",matches:i};let b=i;for(;;){let M=c==null,T=c||o,P=u;try{await v({signal:d,path:l,matches:b,fetcherKey:p,patch:(x,I)=>{d.aborted||er(x,I,T,P,a)}})}catch(x){return{type:"error",error:x,partialMatches:b}}finally{M&&!d.aborted&&(o=[...o])}if(d.aborted)return{type:"aborted"};let D=Ue(T,l,s);if(D)return{type:"success",matches:D};let E=st(T,l,s,!0);if(!E||b.length===E.length&&b.every((x,I)=>x.route.id===E[I].route.id))return{type:"success",matches:null};b=E}}function Ar(i){u={},c=ut(i,a,void 0,u)}function Br(i,l){let d=c==null;er(i,l,c||o,u,a),d&&(o=[...o],le({}))}return me={get basename(){return s},get future(){return f},get state(){return h},get routes(){return o},get window(){return t},initialize:Dr,subscribe:Sr,enableScrollRestoration:jr,navigate:Ut,fetch:_r,revalidate:Mr,createHref:i=>e.history.createHref(i),encodeLocation:i=>e.history.encodeLocation(i),getFetcher:Nt,deleteFetcher:Ir,dispose:xr,getBlocker:Nr,deleteBlocker:Bt,patchRoutes:Br,_internalFetchControllers:y,_internalActiveDeferreds:oe,_internalSetRoutes:Ar},me}function yn(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function Et(e,t,r,n,a,u,o,c){let s,m;if(o){s=[];for(let f of t)if(s.push(f),f.route.id===o){m=f;break}}else s=t,m=t[t.length-1];let v=xt(a||".",Dt(s,u),Qe(e.pathname,r)||e.pathname,c==="path");if(a==null&&(v.search=e.search,v.hash=e.hash),(a==null||a===""||a===".")&&m){let f=Ct(v.search);if(m.route.index&&!f)v.search=v.search?v.search.replace(/^\?/,"?index&"):"?index";else if(!m.route.index&&f){let g=new URLSearchParams(v.search),w=g.getAll("index");g.delete("index"),w.filter(R=>R).forEach(R=>g.append("index",R));let S=g.toString();v.search=S?"?"+S:""}}return n&&r!=="/"&&(v.pathname=v.pathname==="/"?r:we([r,v.pathname])),qe(v)}function Xt(e,t,r,n){if(!n||!yn(n))return{path:r};if(n.formMethod&&!Tn(n.formMethod))return{path:r,error:se(405,{method:n.formMethod})};let a=()=>({path:r,error:se(400,{type:"invalid-body"})}),u=n.formMethod||"get",o=e?u.toUpperCase():u.toLowerCase(),c=gr(r);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!he(o))return a();let g=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((w,S)=>{let[R,_]=S;return""+w+R+"="+_+`
19
- `},""):String(n.body);return{path:r,submission:{formMethod:o,formAction:c,formEncType:n.formEncType,formData:void 0,json:void 0,text:g}}}else if(n.formEncType==="application/json"){if(!he(o))return a();try{let g=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:o,formAction:c,formEncType:n.formEncType,formData:void 0,json:g,text:void 0}}}catch{return a()}}}N(typeof FormData=="function","FormData is not available in this environment");let s,m;if(n.formData)s=Pt(n.formData),m=n.formData;else if(n.body instanceof FormData)s=Pt(n.body),m=n.body;else if(n.body instanceof URLSearchParams)s=n.body,m=rr(s);else if(n.body==null)s=new URLSearchParams,m=new FormData;else try{s=new URLSearchParams(n.body),m=rr(s)}catch{return a()}let v={formMethod:o,formAction:c,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:m,json:void 0,text:void 0};if(he(v.formMethod))return{path:r,submission:v};let f=Ce(r);return t&&f.search&&Ct(f.search)&&s.append("index",""),f.search="?"+s,{path:qe(f),submission:v}}function qt(e,t,r){r===void 0&&(r=!1);let n=e.findIndex(a=>a.route.id===t);return n>=0?e.slice(0,r?n+1:n):e}function Qt(e,t,r,n,a,u,o,c,s,m,v,f,g,w,S,R){let _=R?de(R[1])?R[1].error:R[1].data:void 0,z=e.createURL(t.location),F=e.createURL(a),G=r;u&&t.errors?G=qt(r,Object.keys(t.errors)[0],!0):R&&de(R[1])&&(G=qt(r,R[0]));let re=R?R[1].statusCode:void 0,Z=o&&re&&re>=400,me=G.filter((B,Q)=>{let{route:V}=B;if(V.lazy)return!0;if(V.loader==null)return!1;if(u)return Rt(V,t.loaderData,t.errors);if(bn(t.loaderData,t.matches[Q],B)||s.some(ee=>ee===B.route.id))return!0;let ne=t.matches[Q],ae=B;return Zt(B,J({currentUrl:z,currentParams:ne.params,nextUrl:F,nextParams:ae.params},n,{actionResult:_,actionStatus:re,defaultShouldRevalidate:Z?!1:c||z.pathname+z.search===F.pathname+F.search||z.search!==F.search||pr(ne,ae)}))}),h=[];return f.forEach((B,Q)=>{if(u||!r.some(ve=>ve.route.id===B.routeId)||v.has(Q))return;let V=Ue(w,B.path,S);if(!V){h.push({key:Q,routeId:B.routeId,path:B.path,matches:null,match:null,controller:null});return}let ne=t.fetchers.get(Q),ae=Ye(V,B.path),ee=!1;g.has(Q)?ee=!1:m.has(Q)?(m.delete(Q),ee=!0):ne&&ne.state!=="idle"&&ne.data===void 0?ee=c:ee=Zt(ae,J({currentUrl:z,currentParams:t.matches[t.matches.length-1].params,nextUrl:F,nextParams:r[r.length-1].params},n,{actionResult:_,actionStatus:re,defaultShouldRevalidate:Z?!1:c})),ee&&h.push({key:Q,routeId:B.routeId,path:B.path,matches:V,match:ae,controller:new AbortController})}),[me,h]}function Rt(e,t,r){if(e.lazy)return!0;if(!e.loader)return!1;let n=t!=null&&t[e.id]!==void 0,a=r!=null&&r[e.id]!==void 0;return!n&&a?!1:typeof e.loader=="function"&&e.loader.hydrate===!0?!0:!n&&!a}function bn(e,t,r){let n=!t||r.route.id!==t.route.id,a=e[r.route.id]===void 0;return n||a}function pr(e,t){let r=e.route.path;return e.pathname!==t.pathname||r!=null&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function Zt(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if(typeof r=="boolean")return r}return t.defaultShouldRevalidate}function er(e,t,r,n,a){var u;let o;if(e){let m=n[e];N(m,"No route found to patch children into: routeId = "+e),m.children||(m.children=[]),o=m.children}else o=r;let c=t.filter(m=>!o.some(v=>vr(m,v))),s=ut(c,a,[e||"_","patch",String(((u=o)==null?void 0:u.length)||"0")],n);o.push(...s)}function vr(e,t){return"id"in e&&"id"in t&&e.id===t.id?!0:e.index===t.index&&e.path===t.path&&e.caseSensitive===t.caseSensitive?(!e.children||e.children.length===0)&&(!t.children||t.children.length===0)?!0:e.children.every((r,n)=>{var a;return(a=t.children)==null?void 0:a.some(u=>vr(r,u))}):!1}async function wn(e,t,r){if(!e.lazy)return;let n=await e.lazy();if(!e.lazy)return;let a=r[e.id];N(a,"No route found in manifest");let u={};for(let o in n){let s=a[o]!==void 0&&o!=="hasErrorBoundary";ke(!s,'Route "'+a.id+'" has a static property "'+o+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+o+'" will be ignored.')),!s&&!Vr.has(o)&&(u[o]=n[o])}Object.assign(a,u),Object.assign(a,J({},t(a),{lazy:void 0}))}async function En(e){let{matches:t}=e,r=t.filter(a=>a.shouldLoad);return(await Promise.all(r.map(a=>a.resolve()))).reduce((a,u,o)=>Object.assign(a,{[r[o].route.id]:u}),{})}async function Rn(e,t,r,n,a,u,o,c,s,m){let v=u.map(w=>w.route.lazy?wn(w.route,s,c):void 0),f=u.map((w,S)=>{let R=v[S],_=a.some(F=>F.route.id===w.route.id);return J({},w,{shouldLoad:_,resolve:async F=>(F&&n.method==="GET"&&(w.route.lazy||w.route.loader)&&(_=!0),_?Pn(t,n,w,R,F,m):Promise.resolve({type:k.data,result:void 0}))})}),g=await e({matches:f,request:n,params:u[0].params,fetcherKey:o,context:m});try{await Promise.all(v)}catch{}return g}async function Pn(e,t,r,n,a,u){let o,c,s=m=>{let v,f=new Promise((S,R)=>v=R);c=()=>v(),t.signal.addEventListener("abort",c);let g=S=>typeof m!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+r.route.id+"]"))):m({request:t,params:r.params,context:u},...S!==void 0?[S]:[]),w=(async()=>{try{return{type:"data",result:await(a?a(R=>g(R)):g())}}catch(S){return{type:"error",result:S}}})();return Promise.race([w,f])};try{let m=r.route[e];if(n)if(m){let v,[f]=await Promise.all([s(m).catch(g=>{v=g}),n]);if(v!==void 0)throw v;o=f}else if(await n,m=r.route[e],m)o=await s(m);else if(e==="action"){let v=new URL(t.url),f=v.pathname+v.search;throw se(405,{method:t.method,pathname:f,routeId:r.route.id})}else return{type:k.data,result:void 0};else if(m)o=await s(m);else{let v=new URL(t.url),f=v.pathname+v.search;throw se(404,{pathname:f})}N(o.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+r.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(m){return{type:k.error,result:m}}finally{c&&t.signal.removeEventListener("abort",c)}return o}async function Dn(e){let{result:t,type:r}=e;if(yr(t)){let f;try{let g=t.headers.get("Content-Type");g&&/\bapplication\/json\b/.test(g)?t.body==null?f=null:f=await t.json():f=await t.text()}catch(g){return{type:k.error,error:g}}return r===k.error?{type:k.error,error:new wt(t.status,t.statusText,f),statusCode:t.status,headers:t.headers}:{type:k.data,data:f,statusCode:t.status,headers:t.headers}}if(r===k.error){if(lr(t)){var n,a;if(t.data instanceof Error){var u,o;return{type:k.error,error:t.data,statusCode:(u=t.init)==null?void 0:u.status,headers:(o=t.init)!=null&&o.headers?new Headers(t.init.headers):void 0}}return{type:k.error,error:new wt(((n=t.init)==null?void 0:n.status)||500,void 0,t.data),statusCode:Xe(t)?t.status:void 0,headers:(a=t.init)!=null&&a.headers?new Headers(t.init.headers):void 0}}return{type:k.error,error:t,statusCode:Xe(t)?t.status:void 0}}if(Ln(t)){var c,s;return{type:k.deferred,deferredData:t,statusCode:(c=t.init)==null?void 0:c.status,headers:((s=t.init)==null?void 0:s.headers)&&new Headers(t.init.headers)}}if(lr(t)){var m,v;return{type:k.data,data:t.data,statusCode:(m=t.init)==null?void 0:m.status,headers:(v=t.init)!=null&&v.headers?new Headers(t.init.headers):void 0}}return{type:k.data,data:t}}function xn(e,t,r,n,a,u){let o=e.headers.get("Location");if(N(o,"Redirects returned/thrown from loaders/actions must have a Location header"),!St.test(o)){let c=n.slice(0,n.findIndex(s=>s.route.id===r)+1);o=Et(new URL(t.url),c,a,!0,o,u),e.headers.set("Location",o)}return e}function tr(e,t,r){if(St.test(e)){let n=e,a=n.startsWith("//")?new URL(t.protocol+n):new URL(n),u=Qe(a.pathname,r)!=null;if(a.origin===t.origin&&u)return a.pathname+a.search+a.hash}return e}function Be(e,t,r,n){let a=e.createURL(gr(t)).toString(),u={signal:r};if(n&&he(n.formMethod)){let{formMethod:o,formEncType:c}=n;u.method=o.toUpperCase(),c==="application/json"?(u.headers=new Headers({"Content-Type":c}),u.body=JSON.stringify(n.json)):c==="text/plain"?u.body=n.text:c==="application/x-www-form-urlencoded"&&n.formData?u.body=Pt(n.formData):u.body=n.formData}return new Request(a,u)}function Pt(e){let t=new URLSearchParams;for(let[r,n]of e.entries())t.append(r,typeof n=="string"?n:n.name);return t}function rr(e){let t=new FormData;for(let[r,n]of e.entries())t.append(r,n);return t}function Sn(e,t,r,n,a){let u={},o=null,c,s=!1,m={},v=r&&de(r[1])?r[1].error:void 0;return e.forEach(f=>{if(!(f.route.id in t))return;let g=f.route.id,w=t[g];if(N(!Ie(w),"Cannot handle redirect results in processLoaderData"),de(w)){let S=w.error;v!==void 0&&(S=v,v=void 0),o=o||{};{let R=Fe(e,g);o[R.route.id]==null&&(o[R.route.id]=S)}u[g]=void 0,s||(s=!0,c=Xe(w.error)?w.error.status:500),w.headers&&(m[g]=w.headers)}else Me(w)?(n.set(g,w.deferredData),u[g]=w.deferredData.data,w.statusCode!=null&&w.statusCode!==200&&!s&&(c=w.statusCode),w.headers&&(m[g]=w.headers)):(u[g]=w.data,w.statusCode&&w.statusCode!==200&&!s&&(c=w.statusCode),w.headers&&(m[g]=w.headers))}),v!==void 0&&r&&(o={[r[0]]:v},u[r[0]]=void 0),{loaderData:u,errors:o,statusCode:c||200,loaderHeaders:m}}function nr(e,t,r,n,a,u,o){let{loaderData:c,errors:s}=Sn(t,r,n,o);return a.forEach(m=>{let{key:v,match:f,controller:g}=m,w=u[v];if(N(w,"Did not find corresponding fetcher result"),!(g&&g.signal.aborted))if(de(w)){let S=Fe(e.matches,f?.route.id);s&&s[S.route.id]||(s=J({},s,{[S.route.id]:w.error})),e.fetchers.delete(v)}else if(Ie(w))N(!1,"Unhandled fetcher revalidation redirect");else if(Me(w))N(!1,"Unhandled fetcher deferred data");else{let S=Se(w.data);e.fetchers.set(v,S)}}),{loaderData:c,errors:s}}function ar(e,t,r,n){let a=J({},t);for(let u of r){let o=u.route.id;if(t.hasOwnProperty(o)?t[o]!==void 0&&(a[o]=t[o]):e[o]!==void 0&&u.route.loader&&(a[o]=e[o]),n&&n.hasOwnProperty(o))break}return a}function ir(e){return e?de(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Fe(e,t){return(t?e.slice(0,e.findIndex(n=>n.route.id===t)+1):[...e]).reverse().find(n=>n.route.hasErrorBoundary===!0)||e[0]}function or(e){let t=e.length===1?e[0]:e.find(r=>r.index||!r.path||r.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function se(e,t){let{pathname:r,routeId:n,method:a,type:u,message:o}=t===void 0?{}:t,c="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(c="Bad Request",a&&r&&n?s="You made a "+a+' request to "'+r+'" but '+('did not provide a `loader` for route "'+n+'", ')+"so there is no way to handle the request.":u==="defer-action"?s="defer() is not supported in actions":u==="invalid-body"&&(s="Unable to encode submission body")):e===403?(c="Forbidden",s='Route "'+n+'" does not match URL "'+r+'"'):e===404?(c="Not Found",s='No route matches URL "'+r+'"'):e===405&&(c="Method Not Allowed",a&&r&&n?s="You made a "+a.toUpperCase()+' request to "'+r+'" but '+('did not provide an `action` for route "'+n+'", ')+"so there is no way to handle the request.":a&&(s='Invalid request method "'+a.toUpperCase()+'"')),new wt(e||500,c,new Error(s),!0)}function lt(e){let t=Object.entries(e);for(let r=t.length-1;r>=0;r--){let[n,a]=t[r];if(Ie(a))return{key:n,result:a}}}function gr(e){let t=typeof e=="string"?Ce(e):e;return qe(J({},t,{hash:""}))}function Mn(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function Cn(e){return yr(e.result)&&mn.has(e.result.status)}function Me(e){return e.type===k.deferred}function de(e){return e.type===k.error}function Ie(e){return(e&&e.type)===k.redirect}function lr(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function Ln(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function yr(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Tn(e){return hn.has(e.toLowerCase())}function he(e){return cn.has(e.toLowerCase())}async function _n(e,t,r,n,a){let u=Object.entries(t);for(let o=0;o<u.length;o++){let[c,s]=u[o],m=e.find(g=>g?.route.id===c);if(!m)continue;let v=n.find(g=>g.route.id===m.route.id),f=v!=null&&!pr(v,m)&&(a&&a[m.route.id])!==void 0;Me(s)&&f&&await Mt(s,r,!1).then(g=>{g&&(t[c]=g)})}}async function Un(e,t,r){for(let n=0;n<r.length;n++){let{key:a,routeId:u,controller:o}=r[n],c=t[a];e.find(m=>m?.route.id===u)&&Me(c)&&(N(o,"Expected an AbortController for revalidating fetcher deferred result"),await Mt(c,o.signal,!0).then(m=>{m&&(t[a]=m)}))}}async function Mt(e,t,r){if(r===void 0&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:k.data,data:e.deferredData.unwrappedData}}catch(a){return{type:k.error,error:a}}return{type:k.data,data:e.deferredData.data}}}function Ct(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Ye(e,t){let r=typeof t=="string"?Ce(t).search:t.search;if(e[e.length-1].route.index&&Ct(r||""))return e[e.length-1];let n=fr(e);return n[n.length-1]}function sr(e){let{formMethod:t,formAction:r,formEncType:n,text:a,formData:u,json:o}=e;if(!(!t||!r||!n)){if(a!=null)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a};if(u!=null)return{formMethod:t,formAction:r,formEncType:n,formData:u,json:void 0,text:void 0};if(o!==void 0)return{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:o,text:void 0}}}function bt(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Fn(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Ke(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function In(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Se(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Nn(e,t){try{let r=e.sessionStorage.getItem(mr);if(r){let n=JSON.parse(r);for(let[a,u]of Object.entries(n||{}))u&&Array.isArray(u)&&t.set(a,new Set(u||[]))}}catch{}}function jn(e,t){if(t.size>0){let r={};for(let[n,a]of t)r[n]=[...a];try{e.sessionStorage.setItem(mr,JSON.stringify(r))}catch(n){ke(!1,"Failed to save applied view transitions in sessionStorage ("+n+").")}}}/**
20
- * React Router v6.30.1
21
- *
22
- * Copyright (c) Remix Software Inc.
23
- *
24
- * This source code is licensed under the MIT license found in the
25
- * LICENSE.md file in the root directory of this source tree.
26
- *
27
- * @license MIT
28
- */function dt(){return dt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},dt.apply(this,arguments)}const Lt=C.createContext(null),On=C.createContext(null),ze=C.createContext(null),Tt=C.createContext(null),Ee=C.createContext({outlet:null,matches:[],isDataRoute:!1}),br=C.createContext(null);function sa(e,t){let{relative:r}=t===void 0?{}:t;Ze()||N(!1);let{basename:n,navigator:a}=C.useContext(ze),{hash:u,pathname:o,search:c}=zn(e,{relative:r}),s=o;return n!=="/"&&(s=o==="/"?n:we([n,o])),a.createHref({pathname:s,search:c,hash:u})}function Ze(){return C.useContext(Tt)!=null}function _t(){return Ze()||N(!1),C.useContext(Tt).location}function wr(e){C.useContext(ze).static||C.useLayoutEffect(e)}function ua(){let{isDataRoute:e}=C.useContext(Ee);return e?qn():An()}function An(){Ze()||N(!1);let e=C.useContext(Lt),{basename:t,future:r,navigator:n}=C.useContext(ze),{matches:a}=C.useContext(Ee),{pathname:u}=_t(),o=JSON.stringify(Dt(a,r.v7_relativeSplatPath)),c=C.useRef(!1);return wr(()=>{c.current=!0}),C.useCallback(function(m,v){if(v===void 0&&(v={}),!c.current)return;if(typeof m=="number"){n.go(m);return}let f=xt(m,JSON.parse(o),u,v.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:we([t,f.pathname])),(v.replace?n.replace:n.push)(f,v.state,v)},[t,n,o,u,e])}const Bn=C.createContext(null);function kn(e){let t=C.useContext(Ee).outlet;return t&&C.createElement(Bn.Provider,{value:e},t)}function da(){let{matches:e}=C.useContext(Ee),t=e[e.length-1];return t?t.params:{}}function zn(e,t){let{relative:r}=t===void 0?{}:t,{future:n}=C.useContext(ze),{matches:a}=C.useContext(Ee),{pathname:u}=_t(),o=JSON.stringify(Dt(a,n.v7_relativeSplatPath));return C.useMemo(()=>xt(e,JSON.parse(o),u,r==="path"),[e,o,u,r])}function ca(e,t,r,n){Ze()||N(!1);let{navigator:a}=C.useContext(ze),{matches:u}=C.useContext(Ee),o=u[u.length-1],c=o?o.params:{};o&&o.pathname;let s=o?o.pathnameBase:"/";o&&o.route;let m=_t(),v;v=m;let f=v.pathname||"/",g=f;if(s!=="/"){let R=s.replace(/^\//,"").split("/");g="/"+f.replace(/^\//,"").split("/").slice(R.length).join("/")}let w=Ue(e,{pathname:g});return Jn(w&&w.map(R=>Object.assign({},R,{params:Object.assign({},c,R.params),pathname:we([s,a.encodeLocation?a.encodeLocation(R.pathname).pathname:R.pathname]),pathnameBase:R.pathnameBase==="/"?s:we([s,a.encodeLocation?a.encodeLocation(R.pathnameBase).pathname:R.pathnameBase])})),u,r,n)}function Hn(){let e=Xn(),t=Xe(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return C.createElement(C.Fragment,null,C.createElement("h2",null,"Unexpected Application Error!"),C.createElement("h3",{style:{fontStyle:"italic"}},t),r?C.createElement("pre",{style:a},r):null,null)}const Wn=C.createElement(Hn,null);class Vn extends C.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,r){return r.location!==t.location||r.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:r.error,location:r.location,revalidation:t.revalidation||r.revalidation}}componentDidCatch(t,r){console.error("React Router caught the following error during render",t,r)}render(){return this.state.error!==void 0?C.createElement(Ee.Provider,{value:this.props.routeContext},C.createElement(br.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function $n(e){let{routeContext:t,match:r,children:n}=e,a=C.useContext(Lt);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),C.createElement(Ee.Provider,{value:t},n)}function Jn(e,t,r,n){var a;if(t===void 0&&(t=[]),r===void 0&&(r=null),n===void 0&&(n=null),e==null){var u;if(!r)return null;if(r.errors)e=r.matches;else if((u=n)!=null&&u.v7_partialHydration&&t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let o=e,c=(a=r)==null?void 0:a.errors;if(c!=null){let v=o.findIndex(f=>f.route.id&&c?.[f.route.id]!==void 0);v>=0||N(!1),o=o.slice(0,Math.min(o.length,v+1))}let s=!1,m=-1;if(r&&n&&n.v7_partialHydration)for(let v=0;v<o.length;v++){let f=o[v];if((f.route.HydrateFallback||f.route.hydrateFallbackElement)&&(m=v),f.route.id){let{loaderData:g,errors:w}=r,S=f.route.loader&&g[f.route.id]===void 0&&(!w||w[f.route.id]===void 0);if(f.route.lazy||S){s=!0,m>=0?o=o.slice(0,m+1):o=[o[0]];break}}}return o.reduceRight((v,f,g)=>{let w,S=!1,R=null,_=null;r&&(w=c&&f.route.id?c[f.route.id]:void 0,R=f.route.errorElement||Wn,s&&(m<0&&g===0?(Qn("route-fallback"),S=!0,_=null):m===g&&(S=!0,_=f.route.hydrateFallbackElement||null)));let z=t.concat(o.slice(0,g+1)),F=()=>{let G;return w?G=R:S?G=_:f.route.Component?G=C.createElement(f.route.Component,null):f.route.element?G=f.route.element:G=v,C.createElement($n,{match:f,routeContext:{outlet:v,matches:z,isDataRoute:r!=null},children:G})};return r&&(f.route.ErrorBoundary||f.route.errorElement||g===0)?C.createElement(Vn,{location:r.location,revalidation:r.revalidation,component:R,error:w,children:F(),routeContext:{outlet:null,matches:z,isDataRoute:!0}}):F()},null)}var Er=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Er||{}),Rr=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Rr||{});function Kn(e){let t=C.useContext(Lt);return t||N(!1),t}function Yn(e){let t=C.useContext(On);return t||N(!1),t}function Gn(e){let t=C.useContext(Ee);return t||N(!1),t}function Pr(e){let t=Gn(),r=t.matches[t.matches.length-1];return r.route.id||N(!1),r.route.id}function Xn(){var e;let t=C.useContext(br),r=Yn(),n=Pr();return t!==void 0?t:(e=r.errors)==null?void 0:e[n]}function qn(){let{router:e}=Kn(Er.UseNavigateStable),t=Pr(Rr.UseNavigateStable),r=C.useRef(!1);return wr(()=>{r.current=!0}),C.useCallback(function(a,u){u===void 0&&(u={}),r.current&&(typeof a=="number"?e.navigate(a):e.navigate(a,dt({fromRouteId:t},u)))},[e,t])}const ur={};function Qn(e,t,r){ur[e]||(ur[e]=!0)}function fa(e,t){e?.v7_startTransition,e?.v7_relativeSplatPath===void 0&&(!t||t.v7_relativeSplatPath),t&&(t.v7_fetcherPersist,t.v7_normalizeFormMethod,t.v7_partialHydration,t.v7_skipActionErrorRevalidation)}function ha(e){return kn(e.context)}function ma(e){let{basename:t="/",children:r=null,location:n,navigationType:a=q.Pop,navigator:u,static:o=!1,future:c}=e;Ze()&&N(!1);let s=t.replace(/^\/*/,"/"),m=C.useMemo(()=>({basename:s,navigator:u,static:o,future:dt({v7_relativeSplatPath:!1},c)}),[s,c,u,o]);typeof n=="string"&&(n=Ce(n));let{pathname:v="/",search:f="",hash:g="",state:w=null,key:S="default"}=n,R=C.useMemo(()=>{let _=Qe(v,s);return _==null?null:{location:{pathname:_,search:f,hash:g,state:w,key:S},navigationType:a}},[s,v,f,g,w,S,a]);return R==null?null:C.createElement(ze.Provider,{value:m},C.createElement(Tt.Provider,{children:r,value:R}))}new Promise(()=>{});function pa(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:C.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}function Zn(e){return typeof e=="number"?Number.isNaN(e):!1}function ea(e){return e==null||Zn(e)}function va(e,t){if(ea(e))return;const r={},n=[];return e.forEach(a=>{const u=t?t(a):JSON.stringify(a);r[u]||(r[u]=!0,n.push(a))}),e.length===n.length?e:n}const ta=["Boolean","Number","String","Function","Array","Date","RegExp","Object","Error","Symbol"];ta.reduce((e,t)=>({...e,[`[object ${t}]`]:t.toLowerCase()}),{});export{Lt as D,wt as E,ze as N,ha as O,ma as R,ua as a,oa as b,la as c,On as d,sa as e,ca as f,aa as g,zn as h,qe as i,na as j,va as k,fa as l,pa as m,da as n,ia as r,Qe as s,_t as u};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
py_backend/static/assets/vendor-react-BxsGb6Ph.js DELETED
The diff for this file is too large to render. See raw diff
 
py_backend/static/assets/vendor-ui-DpEM1HT6.css DELETED
@@ -1 +0,0 @@
1
- :root{--go-ui-font-family-sans-serif: Poppins, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, sans-serif;--go-ui-font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;--go-ui-font-family-mono: SFMono-Regular, Menlo, Monaco, Consolas, monospace;--base-font-size: .875rem;--go-ui-font-size-export: .6875rem;--go-ui-font-size-2xs: calc(var(--base-font-size) * .625);--go-ui-font-size-xs: calc(var(--base-font-size) * .75);--go-ui-font-size-sm: calc(var(--base-font-size) * .875);--go-ui-font-size-md: var(--base-font-size);--go-ui-font-size-lg: calc(var(--base-font-size) * 1.125);--go-ui-font-size-xl: calc(var(--base-font-size) * 1.25);--go-ui-font-size-2xl: calc(var(--base-font-size) * 1.5);--go-ui-font-size-3xl: calc(var(--base-font-size) * 1.875);--go-ui-font-size-4xl: calc(var(--base-font-size) * 2.375);--go-ui-height-icon-multiplier: 1.33em;--go-ui-height-brand-icon: 2.5rem;--go-ui-height-social-icon: 2.5rem;--go-ui-height-key-figure-icon: 3rem;--go-ui-height-status-icon: 2.5rem;--go-ui-height-compact-status-icon: 2rem;--go-ui-line-height-none: 1;--go-ui-line-height-xs: 1.25;--go-ui-line-height-sm: 1.375;--go-ui-line-height-md: 1.5;--go-ui-font-weight-light: 300;--go-ui-font-weight-normal: 400;--go-ui-font-weight-medium: 500;--go-ui-font-weight-semibold: 600;--go-ui-font-weight-bold: 700;--go-ui-width-screen-sm: 640px;--go-ui-width-screen-md: 768px;--go-ui-width-screen-lg: 1024px;--go-ui-width-screen-xl: 1280px;--go-ui-width-screen-2xl: 1536px;--base-spacing: 1rem;--go-ui-spacing-4xs: calc(var(--base-spacing) * .0625);--go-ui-spacing-3xs: calc(var(--base-spacing) * .125);--go-ui-spacing-2xs: calc(var(--base-spacing) * .25);--go-ui-spacing-xs: calc(var(--base-spacing) * .4);--go-ui-spacing-sm: calc(var(--base-spacing) * .625);--go-ui-spacing-md: calc(var(--base-spacing) * 1);--go-ui-spacing-lg: calc(var(--base-spacing) * 1.5);--go-ui-spacing-xl: calc(var(--base-spacing) * 2.25);--go-ui-spacing-2xl: calc(var(--base-spacing) * 3.5);--go-ui-spacing-3xl: calc(var(--base-spacing) * 4.75);--go-ui-spacing-4xl: calc(var(--base-spacing) * 6);--go-ui-spacing-5xl: calc(var(--base-spacing) * 7.25);--go-ui-width-separator-sm: 1pt;--go-ui-width-separator-md: 2pt;--go-ui-width-separator-lg: 4pt;--go-ui-width-separator-xl: 8pt;--go-ui-width-separator-thin: 1pt;--go-ui-width-separator-small: 2pt;--go-ui-width-separator-thick: 4pt;--go-ui-width-separator-medium: 6pt;--go-ui-width-separator-large: 8pt;--go-ui-width-separator-dense: 12pt;--go-ui-width-separator-extra-dense: 14pt;--go-ui-border-radius-none: 0;--go-ui-border-radius-sm: .125rem;--go-ui-border-radius-md: .25rem;--go-ui-border-radius-lg: .5rem;--go-ui-border-radius-xl: .75rem;--go-ui-border-radius-2xl: 1rem;--go-ui-border-radius-3xl: 1.5rem;--go-ui-border-radius-full: 9999px;--go-ui-box-shadow-xs: 0 1pt 2pt rgba(0, 0, 0, .2);--go-ui-box-shadow-sm: 0 1pt 4pt rgba(0, 0, 0, .2);--go-ui-box-shadow-md: 0 1pt 5pt -2pt rgba(0, 0, 0, .375);--go-ui-box-shadow-lg: 0 2pt 8pt -4pt rgba(0, 0, 0, .5);--go-ui-box-shadow-xl: 0 3pt 16pt -6pt rgba(0, 0, 0, .5);--go-ui-box-shadow-2xl: 0 4pt 16pt -6pt rgba(0, 0, 0, 1);--go-ui-box-shadow-inner: inset 0 2pt 4pt 0 rgba(0, 0, 0, .375);--go-ui-box-shadow-none: 0 0 rgba(0,0,0,0);--go-ui-duration-transition-fast: .1s;--go-ui-duration-transition-medium: .2s;--go-ui-duration-transition-slow: .5s;--go-ui-duration-animation-fast: .5s;--go-ui-duration-animation-medium: 1s;--go-ui-duration-animation-slow: 2s;--go-ui-color-orange: #FF8000;--go-ui-color-green: #7FB845;--go-ui-color-blue: #3FA2F7;--go-ui-color-red: #F75C65;--go-ui-color-yellow: #d9b100;--go-ui-color-semantic-yellow: #FFB443;--go-ui-color-black: #000000;--go-ui-color-white: #ffffff;--go-ui-color-gray-10: #FAFAFA;--go-ui-color-gray-20: #F2F2F2;--go-ui-color-gray-30: #E0E0E0;--go-ui-color-gray-40: #C6C6C6;--go-ui-color-gray-50: #A8A8A8;--go-ui-color-gray-60: #8D8D8D;--go-ui-color-gray-70: #6F6F6F;--go-ui-color-gray-80: #525252;--go-ui-color-gray-90: #323232;--go-ui-color-red-10: #FDD6D9;--go-ui-color-red-20: #FCC2C5;--go-ui-color-red-30: #FBADB2;--go-ui-color-red-40: #FA999F;--go-ui-color-red-50: #F9858C;--go-ui-color-red-60: #F87079;--go-ui-color-red-70: #F75C65;--go-ui-color-red-80: #F64752;--go-ui-color-red-90: #F5333F;--go-ui-color-dark-blue-10: #009CDD;--go-ui-color-dark-blue-20: #418FDE;--go-ui-color-dark-blue-30: #236192;--go-ui-color-dark-blue-40: #1B365D;--go-ui-color-blue-10: #E0E3E7;--go-ui-color-blue-20: #CCD2D9;--go-ui-color-blue-30: #AEB7C2;--go-ui-color-blue-40: #99A5B3;--go-ui-color-blue-50: #7D8B9D;--go-ui-color-blue-60: #67788D;--go-ui-color-blue-70: #4D617A;--go-ui-color-blue-80: #344B67;--go-ui-color-blue-90: #011E41;--go-ui-color-primary-red: var(--go-ui-color-red-90);--go-ui-color-primary-blue: var(--go-ui-color-blue-90);--go-ui-color-primary-gray: var(--go-ui-color-gray-90);--go-ui-color-red-hover: #DE2934;--go-ui-color-purple-per: #8648B3;--go-ui-color-orange-per: #FF8654;--go-ui-color-blue-per: #418FDE;--go-ui-color-teal-per: #00B2A2;--go-ui-color-red-per: #DA283D;--go-ui-color-text-black: rgba(0, 0, 0, 1);--go-ui-color-text: rgba(0, 0, 0, .8);--go-ui-color-text-light: rgba(0, 0, 0, .5);--go-ui-color-positive: var(--go-ui-color-green);--go-ui-color-information: var(--go-ui-color-blue);--go-ui-color-warning: var(--go-ui-color-yellow);--go-ui-color-negative: var(--go-ui-color-red);--go-ui-color-separator: rgba(0, 0, 0, .1);--go-ui-color-separator-light: rgba(0, 0, 0, .05);--go-ui-color-background: #f7f7f7;--go-ui-color-foreground: #ffffff;--go-ui-color-element-background: rgba(0, 0, 0, .06);--go-ui-color-readonly-element-background: rgba(0, 0, 0, .03);--go-ui-color-background-overlay: rgba(255, 255, 255, .88);--go-ui-color-background-overlay-dark: rgba(0, 0, 0, .5);--go-ui-color-background-hover: rgba(0, 0, 0, .06);--go-ui-opacity-disabled-element: .5;--go-ui-opacity-chart-point: .8;--go-ui-opacity-message: .8;--go-ui-content-min-height: 13rem;--go-ui-compact-content-min-height: 7rem;--go-ui-width-min-modal: 18rem;--go-ui-height-min-modal: 11rem;--go-ui-width-modal-sm: 32rem;--go-ui-height-modal-sm: 100%;--go-ui-width-modal-md: 42rem;--go-ui-height-modal-md: 100%;--go-ui-width-modal-lg: 64rem;--go-ui-height-modal-lg: 100%;--go-ui-width-modal-xl: 92rem;--go-ui-height-modal-xl: 100%;--go-ui-saturate-0: 0;--go-ui-saturate-50: .5;--go-ui-saturate-100: 1;--go-ui-saturate-150: 1.5;--go-ui-saturate-200: 2;--go-ui-color-hazard-fi: #b7c992;--go-ui-color-map-dot-appeals: #f5333f;--go-ui-color-map-dot-dref: #ff9e00;--go-ui-color-map-dot-fba: #ff6b00;--go-ui-color-map-dot-multiple-types: #4c5d9b;--go-ui-width-content-max: 50rem;--go-ui-page-header-description-width-max: var(--go-ui-width-content-max);--go-ui-page-width-max: 90rem;--mapbox-icon-width: 88px;--go-ui-export-page-margin: 10mm 10mm 16mm 10mm}@media screen and (max-width: 40rem){:root{--go-ui-font-size-2xs: calc(var(--base-font-size) * .625);--go-ui-font-size-xs: calc(var(--base-font-size) * .75);--go-ui-font-size-sm: calc(var(--base-font-size) * .875);--go-ui-font-size-md: calc(var(--base-font-size) * 1);--go-ui-font-size-lg: calc(var(--base-font-size) * 1.125);--go-ui-font-size-xl: calc(var(--base-font-size) * 1.25);--go-ui-font-size-2xl: calc(var(--base-font-size) * 1.4);--go-ui-font-size-3xl: calc(var(--base-font-size) * 1.6);--go-ui-font-size-4xl: calc(var(--base-font-size) * 1.8)}}@media screen and (max-width: 40rem){:root{--go-ui-spacing-4xs: calc(var(--base-spacing) * .0625);--go-ui-spacing-3xs: calc(var(--base-spacing) * .125);--go-ui-spacing-2xs: calc(var(--base-spacing) * .25);--go-ui-spacing-xs: calc(var(--base-spacing) * .4);--go-ui-spacing-sm: calc(var(--base-spacing) * .625);--go-ui-spacing-md: calc(var(--base-spacing) * 1);--go-ui-spacing-lg: calc(var(--base-spacing) * 1.25);--go-ui-spacing-xl: calc(var(--base-spacing) * 1.5625);--go-ui-spacing-2xl: calc(var(--base-spacing) * 1.95);--go-ui-spacing-3xl: calc(var(--base-spacing) * 2.44);--go-ui-spacing-4xl: calc(var(--base-spacing) * 3);--go-ui-spacing-5xl: calc(var(--base-spacing) * 3.8)}}._raw-button_1p3om_1{position:relative;outline-offset:var(--go-ui-width-separator-lg);border:0;background-color:transparent;cursor:pointer;padding:0;color:inherit;font-family:inherit;font-size:inherit}._raw-button_1p3om_1:focus-visible,._raw-button_1p3om_1._focused_1p3om_13{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40);outline-offset:-4px}._button_18a84_1{--color-border: transparent;--color-text: inherit;--color-background: transparent;--font-size: inherit;--border-radius: var(--go-ui-border-radius-full);--text-transform: none;--cursor: default;--padding: var(--go-ui-spacing-3xs) var(--go-ui-spacing-lg);display:inline-flex;position:relative;align-items:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);cursor:default;cursor:var(--cursor);padding:var(--padding);width:-moz-fit-content;width:fit-content;max-width:100%;overflow:hidden;text-transform:none;text-transform:var(--text-transform);line-height:var(--go-ui-line-height-xs);color:inherit;color:var(--color-text);font-family:inherit;font-size:inherit;font-size:var(--font-size);font-weight:var(--go-ui-font-weight-medium)}._button_18a84_1._ellipsized_18a84_29{flex-grow:1}._button_18a84_1._ellipsized_18a84_29 ._children_18a84_32{display:block;min-width:0}._button_18a84_1._ellipsized_18a84_29 ._children_18a84_32 ._overflow-wrapper_18a84_36{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._button_18a84_1._primary_18a84_44 ._children_18a84_32,._button_18a84_1._secondary_18a84_45 ._children_18a84_32{text-align:center}._button_18a84_1._primary_18a84_44._no-spacing_18a84_50,._button_18a84_1._secondary_18a84_45._no-spacing_18a84_50{--padding: 0}._button_18a84_1._primary_18a84_44._condensed-spacing_18a84_54,._button_18a84_1._secondary_18a84_45._condensed-spacing_18a84_54,._button_18a84_1._primary_18a84_44._compact-spacing_18a84_58,._button_18a84_1._secondary_18a84_45._compact-spacing_18a84_58{--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm)}._button_18a84_1._primary_18a84_44._cozy-spacing_18a84_62,._button_18a84_1._secondary_18a84_45._cozy-spacing_18a84_62,._button_18a84_1._primary_18a84_44._default-spacing_18a84_66,._button_18a84_1._secondary_18a84_45._default-spacing_18a84_66{--padding: var(--go-ui-spacing-3xs) var(--go-ui-spacing-md)}._button_18a84_1._primary_18a84_44._comfortable-spacing_18a84_70,._button_18a84_1._secondary_18a84_45._comfortable-spacing_18a84_70{--padding: var(--go-ui-spacing-2xs) var(--go-ui-spacing-lg)}._button_18a84_1._primary_18a84_44._relaxed-spacing_18a84_74,._button_18a84_1._secondary_18a84_45._relaxed-spacing_18a84_74{--padding: var(--go-ui-spacing-xs) var(--go-ui-spacing-xl)}._button_18a84_1._primary_18a84_44._loose-spacing_18a84_78,._button_18a84_1._secondary_18a84_45._loose-spacing_18a84_78{--padding: var(--go-ui-spacing-sm) var(--go-ui-spacing-2xl)}._button_18a84_1._primary_18a84_44{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._button_18a84_1._primary_18a84_44._disabled_18a84_88{filter:saturate(50%)}._button_18a84_1._primary_18a84_44:not(._disabled_18a84_88):hover{--color-background: var(--go-ui-color-red-hover)}._button_18a84_1._secondary_18a84_45{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._button_18a84_1._secondary_18a84_45._disabled_18a84_88{filter:saturate(50%)}._button_18a84_1._secondary_18a84_45:not(._disabled_18a84_88):hover{background-color:var(--go-ui-color-red-hover);color:var(--go-ui-color-white)}._button_18a84_1._tertiary_18a84_116{--color-border: transparent;--color-background: transparent;--color-text: inherit;--padding: 0;--border-radius: unset}._button_18a84_1._tertiary_18a84_116:not(._disabled_18a84_88):hover{--color-text: var(--go-ui-color-primary-red)}._button_18a84_1._tertiary-on-dark_18a84_130{--color-border: transparent;--color-background: transparent;--color-text: var(--go-ui-color-white);--padding: 0;--border-radius: unset}._button_18a84_1._tertiary-on-dark_18a84_130:not(._disabled_18a84_88):hover{opacity:.8}._button_18a84_1._dropdown-item_18a84_144{display:flex;width:100%;text-align:left;--border-radius: unset;--padding: var(--go-ui-spacing-sm) var(--go-ui-spacing-lg)}._button_18a84_1._dropdown-item_18a84_144:hover{background-color:var(--go-ui-color-background-hover)}._button_18a84_1._disabled_18a84_88{opacity:var(--go-ui-opacity-disabled-element);--cursor: not-allowed}._button_18a84_1:not(._disabled_18a84_88){--cursor: pointer}._basic-layout_v9jro_1{display:flex;align-items:flex-start}._basic-layout_v9jro_1._with-wrap_v9jro_5{flex-wrap:wrap}._basic-layout_v9jro_1 ._icons-container_v9jro_9{display:flex;align-items:flex-start}._basic-layout_v9jro_1 ._children-container_v9jro_14{display:flex;flex-grow:1}._basic-layout_v9jro_1 ._actions-container_v9jro_19{display:flex;align-items:flex-start}._basic-layout_v9jro_1:not(._with-wrap_v9jro_5) ._icons-container_v9jro_9{flex-shrink:0}._basic-layout_v9jro_1:not(._with-wrap_v9jro_5) ._actions-container_v9jro_19{flex-shrink:0}._alert_uuuo4_1{display:flex;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-2xl);width:calc(14rem + 16vw);color:var(--go-ui-color-white)}._alert_uuuo4_1 ._icon_uuuo4_8,._alert_uuuo4_1 ._close-icon_uuuo4_12{font-size:var(--go-ui-font-size-2xl)}._alert_uuuo4_1._info_uuuo4_16{background-color:var(--go-ui-color-gray-80)}._alert_uuuo4_1._success_uuuo4_20{background-color:var(--go-ui-color-positive)}._alert_uuuo4_1._danger_uuuo4_24{background-color:var(--go-ui-color-negative)}._alert_uuuo4_1._warning_uuuo4_28{background-color:var(--go-ui-color-warning)}._container_lyve2_1{--num-columns: 2;--max-width: calc(var(--go-ui-page-width-max) * .8);display:flex;flex-direction:column}._container_lyve2_1 ._header_lyve2_8{flex-shrink:0}._container_lyve2_1 ._header_lyve2_8 ._centered-header-description-container_lyve2_11{display:flex;flex-direction:row;justify-content:center}._container_lyve2_1 ._header_lyve2_8 ._centered-header-description-container_lyve2_11 ._centered-description_lyve2_16{max-width:var(--go-ui-page-header-description-width-max);text-align:center}._container_lyve2_1._with-border-and-header-background_lyve2_23{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-md)}._container_lyve2_1._with-border-and-header-background_lyve2_23 ._header_lyve2_8{border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-background)}._container_lyve2_1 ._border_lyve2_33{flex-shrink:0;margin:0;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._container_lyve2_1 ._content_lyve2_39{flex-grow:1}._container_lyve2_1 ._content_lyve2_39._pending-overlaid_lyve2_42{isolation:isolate;position:relative;min-height:6rem}._container_lyve2_1 ._content_lyve2_39._pending-overlaid_lyve2_42 ._message_lyve2_47{z-index:1}._container_lyve2_1 ._footer_lyve2_53{flex-shrink:0}._container_lyve2_1._with-grid-view_lyve2_57>._content_lyve2_39{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / var(--num-columns)),1fr))}._container_lyve2_1._with-grid-view_lyve2_57>._content_lyve2_39 ._message_lyve2_47{grid-column:1 / -1}._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67{--num-columns: 2}@media screen and (max-width: 55rem){._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67{--max-width: 60rem}}@media screen and (max-width: 30rem){._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67>._content_lyve2_39{grid-template-columns:1fr}}._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82{--num-columns: 3}@media screen and (max-width: 55rem){._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82{--max-width: 60rem}}@media screen and (max-width: 30rem){._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82>._content_lyve2_39{grid-template-columns:1fr}}._container_lyve2_1._with-grid-view_lyve2_57._four-columns_lyve2_96{--num-columns: 4}._container_lyve2_1._with-grid-view_lyve2_57._five-columns_lyve2_100{--num-columns: 5}._container_lyve2_1._with-vertical-view_lyve2_105>._content_lyve2_39{display:flex;flex-direction:column}._container_lyve2_1._with-overflow-in-content_lyve2_112>._content_lyve2_39{overflow:auto}._default-message_wu986_1._overlay_wu986_2{position:absolute;top:0;left:0;width:100%;height:100%}._message_176iw_1{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-sm);justify-content:center;opacity:var(--go-ui-opacity-message);background-color:var(--go-ui-color-foreground);padding:var(--go-ui-spacing-md);min-height:var(--go-ui-content-min-height);text-align:center}._message_176iw_1 ._icon_176iw_13{color:var(--go-ui-color-text-light);font-size:var(--go-ui-height-status-icon)}._message_176iw_1 ._icon_176iw_13 ._spinner_176iw_17{font-size:var(--go-ui-height-compact-status-icon)}._message_176iw_1 ._title_176iw_22{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-2xl)}._message_176iw_1._errored_176iw_27 ._title_176iw_22{color:var(--go-ui-color-primary-red)}._message_176iw_1._compact_176iw_33{padding:var(--go-ui-spacing-sm);min-height:var(--go-ui-compact-content-min-height)}._message_176iw_1._compact_176iw_33 ._title_176iw_22{font-size:var(--go-ui-font-size-lg)}._message_176iw_1._compact_176iw_33 ._icon_176iw_13{font-size:var(--go-ui-font-size-2xl)}._message_176iw_1._compact_176iw_33 ._icon_176iw_13 ._spinner_176iw_17{font-size:var(--go-ui-font-size-xl)}._spinner_50bgg_1{display:inline-flex;border-radius:var(--go-ui-border-radius-full);background:var(--go-ui-color-gray-40);padding:.2em;line-height:0;gap:.2em}._spinner_50bgg_1 ._spinner-bounce_50bgg_9{border-radius:50%;background:var(--go-ui-color-white);width:.6em;height:.6em;animation:_spinner-bounce-delay_50bgg_1 var(--go-ui-duration-animation-slow) infinite ease-in-out both}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(1){animation-delay:calc(var(--go-ui-duration-animation-fast))}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(2){animation-delay:calc(var(--go-ui-duration-animation-fast) * 2)}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(3){animation-delay:calc(var(--go-ui-duration-animation-fast) * 3)}@keyframes _spinner-bounce-delay_50bgg_1{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}._filter-bar_16xsj_1{display:flex;flex-direction:column}._grid-with-actions_16xsj_6{display:flex}._grid-with-actions_16xsj_6 ._grid_16xsj_6{display:grid;flex-grow:1;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}._grid-with-actions_16xsj_6 ._actions_16xsj_15{display:flex}@media screen and (max-width: 30rem){._grid-with-actions_16xsj_6{flex-wrap:wrap}}._header_537v1_1{display:flex;flex-direction:column}._heading_1uxwj_1{--font-size: var(--go-ui-font-size-xl);--line-height: var(--go-ui-line-height-sm);margin:0;line-height:var(--line-height);font-size:var(--font-size);font-weight:var(--go-ui-font-weight-semibold)}._heading_1uxwj_1._level-one_1uxwj_9{--font-size: var(--go-ui-font-size-4xl)}@media print{._heading_1uxwj_1._level-one_1uxwj_9{color:var(--go-ui-color-primary-blue)}}._heading_1uxwj_1._level-two_1uxwj_17{--font-size: var(--go-ui-font-size-2xl)}@media print{._heading_1uxwj_1._level-two_1uxwj_17{color:var(--go-ui-color-primary-blue)}}._heading_1uxwj_1._level-three_1uxwj_25{--font-size: var(--go-ui-font-size-xl)}@media print{._heading_1uxwj_1._level-three_1uxwj_25{color:var(--go-ui-color-primary-red)}}._heading_1uxwj_1._level-four_1uxwj_33{--font-size: var(--go-ui-font-size-lg)}._heading_1uxwj_1._level-five_1uxwj_37{--font-size: var(--go-ui-font-size-md)}._heading_1uxwj_1._level-six_1uxwj_41{--font-size: var(--go-ui-font-size-sm)}._heading_1uxwj_1 ._ellipsized-text_1uxwj_45{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._heading_1uxwj_1._ellipsized_1uxwj_45{width:100%;overflow:auto}._alert-container_rcayz_1{isolation:isolate;position:fixed;top:0;left:50%;transform:translate(-50%);z-index:1;padding:var(--go-ui-spacing-2xl) 0;max-height:calc(100vh - 2 * var(--go-ui-spacing-2xl));overflow:auto;scrollbar-width:none}._alert-container_rcayz_1::-webkit-scrollbar{display:none}._alert-container_rcayz_1 ._alert_rcayz_1{margin:var(--go-ui-spacing-sm) 0}._bar-chart_3dbpc_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-sm)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6{display:flex;align-items:center;gap:var(--go-ui-spacing-md)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6._hoverable_3dbpc_11:hover{background-color:var(--go-ui-color-background-hover)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._label_3dbpc_17{width:30%;font-weight:var(--go-ui-font-weight-medium)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._bar-track_3dbpc_22{border-radius:.3rem;background-color:var(--go-ui-color-gray-30);width:60%;height:.6rem}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._bar-track_3dbpc_22 ._bar_3dbpc_1{border-radius:.3rem;background-color:var(--go-ui-color-primary-red);height:100%}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._value_3dbpc_36{width:10%;font-weight:var(--go-ui-font-weight-medium)}._number-output_1blvi_1{display:inline;font-size:inherit}._tooltip-dummy_rbf3f_1{opacity:0;width:0;height:0}._tooltip-content_rbf3f_7{opacity:0;padding:0;animation:_slide-down_rbf3f_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-fast)}._pointer_rbf3f_14{opacity:0;animation:_fade-in_rbf3f_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-medium)}@keyframes _slide-down_rbf3f_1{0%{transform:translateY(-5pt);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _fade-in_rbf3f_1{0%{opacity:0}to{opacity:1}}._popup_cws49_1{position:fixed;border-radius:var(--go-ui-spacing-xs);box-shadow:var(--go-ui-box-shadow-2xl);background-color:var(--go-ui-color-white);max-height:40vh;overflow:auto}._popup_cws49_1._top-orientation_cws49_9{box-shadow:0 -8pt 20pt -5pt #00000080}._pointer_cws49_15{position:fixed;transform:translate(-50%);background-color:transparent;line-height:0;color:var(--go-ui-color-white);font-size:.5rem;pointer-events:none;filter:drop-shadow(0 -1pt 1pt rgba(0,0,0,.1))}._pointer_cws49_15 ._icon_cws49_25{width:2em;height:1em;fill:currentColor}._pointer_cws49_15._top-orientation_cws49_9{transform:translate(-50%) rotate(180deg)}._block-loading_1jl3q_1{display:flex;padding:var(--go-ui-spacing-sm);width:100%;min-height:var(--go-ui-content-min-height)}._block-loading_1jl3q_1 ._spinner_1jl3q_7{font-size:var(--go-ui-font-size-4xl)}._block-loading_1jl3q_1 ._inner_1jl3q_11{display:flex;align-items:center;flex-direction:column;flex-grow:1;justify-content:center;padding:var(--go-ui-spacing-sm);gap:var(--go-ui-spacing-md)}._block-loading_1jl3q_1._with-border_1jl3q_21 ._inner_1jl3q_11{border:var(--go-ui-width-separator-md) dashed var(--go-ui-color-gray-40);border-radius:var(--go-ui-border-radius-xl)}._block-loading_1jl3q_1._compact_1jl3q_28{min-height:var(--go-ui-compact-content-min-height)}._block-loading_1jl3q_1._compact_1jl3q_28 ._spinner_1jl3q_7{font-size:var(--go-ui-font-size-xl)}._overlay_cnygi_1{position:absolute;background-color:var(--go-ui-color-background-overlay);width:100%;height:100%}._overlay_cnygi_1._dark_cnygi_7{background-color:var(--go-ui-color-background-overlay-dark)}._body-overlay_1iouu_1{display:flex;position:fixed;top:0;left:0;align-items:center;justify-content:center;width:100vw;height:100vh}._radio-input_17cft_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._radio-input_17cft_1 ._radio-list-container_17cft_6{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-xs) var(--go-ui-spacing-md);min-height:1em}._radio-input_17cft_1._disabled_17cft_13{opacity:var(--go-ui-opacity-disabled-element);filter:saturate(50%)}._radio-input_17cft_1 ._input-hint_17cft_18{padding:var(--go-ui-spacing-xs);color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-sm)}._input-error_1sxiz_1{display:flex;align-items:center;opacity:0;background-color:var(--go-ui-color-red);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-md);animation:_slide-down_1sxiz_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-fast);color:var(--go-ui-color-white);gap:var(--go-ui-spacing-sm)}._pointer_1sxiz_14{opacity:0;animation:_fade-in_1sxiz_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-medium);color:var(--go-ui-color-red)}@keyframes _slide-down_1sxiz_1{0%{transform:translateY(-5pt);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _fade-in_1sxiz_1{0%{opacity:0}to{opacity:1}}._input-label_3lsx4_1{display:flex;padding:0 var(--go-ui-spacing-2xs);color:var(--go-ui-color-gray-70);gap:var(--go-ui-spacing-xs)}._input-label_3lsx4_1._disabled_3lsx4_7{color:var(--go-ui-color-gray-40)}._input-label_3lsx4_1 ._required_3lsx4_11{color:var(--go-ui-color-primary-red)}._radio_1uudv_1{--cursor: default;cursor:default;cursor:var(--cursor)}._radio_1uudv_1 ._icon_1uudv_5{transition:var(--go-ui-duration-transition-medium) color ease-in-out;font-size:var(--go-ui-height-icon-multiplier)}._radio_1uudv_1 ._content_1uudv_10{flex-direction:column;gap:0;line-height:var(--go-ui-line-height-sm)}._radio_1uudv_1 ._description_1uudv_16{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._radio_1uudv_1 ._input_1uudv_21{position:absolute;opacity:0;margin:0;padding:0;width:0;height:0;pointer-events:none}._radio_1uudv_1 ._input_1uudv_21:focus-visible+div{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40);outline-offset:1px;border-radius:50%}._radio_1uudv_1._active_1uudv_37 ._icon_1uudv_5{color:var(--go-ui-color-primary-red)}._radio_1uudv_1._disabled_1uudv_43{opacity:var(--go-ui-opacity-disabled-element)}._radio_1uudv_1:not(._disabled_1uudv_43):focus ._icon_1uudv_5,._radio_1uudv_1:not(._disabled_1uudv_43):hover ._icon_1uudv_5{color:var(--go-ui-color-primary-red)}._radio_1uudv_1:not(._disabled_1uudv_43):not(._read-only_1uudv_55){--cursor: pointer}._boolean-output_kg1uq_1{color:inherit}._breadcrumbs_c7c54_1{display:flex;align-items:center;flex-wrap:wrap}._breadcrumbs_c7c54_1 ._item_c7c54_6{display:flex}._breadcrumbs_c7c54_1 ._item_c7c54_6:not(:last-child){color:var(--go-ui-color-gray-70)}._breadcrumbs_c7c54_1 ._item_c7c54_6:last-child{color:var(--go-ui-color-black)}._breadcrumbs_c7c54_1 ._separator_c7c54_18{display:flex;justify-content:center;color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-xl)}._chart-axes_8lppt_1 ._y-axis-label-container_8lppt_2{transform:rotate(-90deg)}._chart-axes_8lppt_1 ._y-axis-label-container_8lppt_2 ._y-axis-label_8lppt_2{display:flex;justify-content:center;width:100%;height:100%}._chart-axes_8lppt_1 ._y-axis-tick-text_8lppt_13{display:flex;align-items:center;justify-content:flex-end;padding:0 var(--go-ui-spacing-2xs);text-align:right;word-break:break-word;font-size:var(--go-ui-font-size-xs)}._chart-axes_8lppt_1 ._x-axis-tick_8lppt_23 ._x-axis-tick-text_8lppt_24{transition:var(--go-ui-duration-transition-medium) ease-in-out transform;padding:var(--go-ui-spacing-2xs) 0;text-align:center;word-break:break-word;font-size:var(--go-ui-font-size-xs)}@media screen and (max-width: 30rem){._chart-axes_8lppt_1 ._x-axis-tick_8lppt_23 ._x-axis-tick-text_8lppt_24{transform:rotate(-30deg) translate(-10%) translateY(20%);padding:0;font-size:var(--go-ui-font-size-2xs)}}._chart-axes_8lppt_1 ._x-axis-grid-line_8lppt_40,._chart-axes_8lppt_1 ._y-axis-grid-line_8lppt_41{stroke:var(--go-ui-color-gray-60);stroke-dasharray:4 4;stroke-opacity:.5}._chart-axes_8lppt_1 ._x-axis-grid-line_8lppt_40._hovered_8lppt_46,._chart-axes_8lppt_1 ._y-axis-grid-line_8lppt_41._hovered_8lppt_46{stroke-opacity:1}._chart-axes_8lppt_1 ._bound-rect_8lppt_51{fill:var(--go-ui-color-gray-60);fill-opacity:0;transition:fill-opacity var(--go-ui-duration-transition-slow) ease-in-out}._chart-axes_8lppt_1 ._bound-rect_8lppt_51:hover{fill-opacity:.2}._chart-container_z2i5d_1{width:100%;height:16rem}._chart-container_z2i5d_1 ._svg_z2i5d_5{width:100%;height:100%}._chip_3wch9_1{--color-border: transparent;--color-text: inherit;--color-background: transparent;--border-radius: var(--go-ui-border-radius-full);--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-4xs) var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm);display:flex;align-items:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);padding:var(--padding);color:inherit;color:var(--color-text);gap:var(--go-ui-spacing-3xs)}._chip_3wch9_1._no-delete-icon_3wch9_17{--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm)}._chip_3wch9_1._primary_3wch9_21{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._chip_3wch9_1._secondary_3wch9_27{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._chip_3wch9_1._tertiary_3wch9_33{--color-border: var(--go-ui-color-gray-40);--color-background: var(--go-ui-color-gray-30);--color-text: inherit}._chip_3wch9_1 ._close-icon_3wch9_39{font-size:var(--go-ui-font-size-sm)}._button_1vbet_1{--color-border: transparent;--color-text: transparent;--color-background: transparent;--font-size: var(--go-ui-height-icon-multiplier);--border-radius: var(--go-ui-border-radius-md);--text-transform: none;--cursor: default;--spacing: var(--go-ui-spacing-2xs);--padding: var(--go-ui-spacing-2xs);display:flex;position:relative;align-items:center;justify-content:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);cursor:default;cursor:var(--cursor);padding:var(--padding);width:-moz-fit-content;width:fit-content;max-width:100%;overflow:hidden;text-transform:none;text-transform:var(--text-transform);color:transparent;color:var(--color-text);font-family:inherit;font-size:var(--font-size);font-weight:var(--go-ui-font-weight-normal);gap:var(--spacing)}._button_1vbet_1._round_1vbet_31{--border-radius: 50%}._button_1vbet_1._primary_1vbet_34{--border-color: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._button_1vbet_1._primary_1vbet_34:disabled{--border-color: var(--go-ui-color-gray-40);--color-background: var(--go-ui-color-gray-40)}._button_1vbet_1._primary_1vbet_34:not(:disabled):hover{--color-background: var(--go-ui-color-red-hover)}._button_1vbet_1._secondary_1vbet_51{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._button_1vbet_1._secondary_1vbet_51:disabled{--color-text: var(--go-ui-color-gray-40);--color-border: var(--go-ui-color-gray-40)}._button_1vbet_1._secondary_1vbet_51:not(:disabled):hover{--color-text: var(--go-ui-color-white);--color-background: var(--go-ui-color-red-hover)}._button_1vbet_1._tertiary_1vbet_69{--color-background: transparent;--color-text: inherit}._button_1vbet_1._tertiary_1vbet_69:disabled{--color-text: var(--go-ui-color-gray-40)}._button_1vbet_1._tertiary_1vbet_69:not(:disabled):hover{--color-background: var(--go-ui-color-gray-20);--color-text: var(--go-ui-color-primary-red)}._button_1vbet_1:disabled{--cursor: not-allowed}._button_1vbet_1:not(:disabled){--cursor: pointer}._checkbox_12g7n_1{display:flex;align-items:flex-start;cursor:pointer;gap:var(--go-ui-spacing-sm)}._checkbox_12g7n_1._with-background_12g7n_7{background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-sm)}._checkbox_12g7n_1 ._checkmark-container_12g7n_12{position:relative;flex-shrink:0;line-height:0;font-size:var(--go-ui-height-icon-multiplier)}._checkbox_12g7n_1 ._checkmark-container_12g7n_12 ._input_12g7n_18{position:absolute;opacity:0;margin:0;padding:0;width:0;height:0;pointer-events:none}._checkbox_12g7n_1 ._checkmark-container_12g7n_12 ._input_12g7n_18:focus-visible+svg{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40)}._checkbox_12g7n_1 ._content_12g7n_33{flex-direction:column;flex-grow:1;line-height:var(--go-ui-line-height-sm);gap:0}._checkbox_12g7n_1 ._description_12g7n_40{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-xs)}._checkbox_12g7n_1._checked_12g7n_45 ._checkmark_12g7n_12{color:var(--go-ui-color-primary-red)}._checkbox_12g7n_1:focus ._checkmark_12g7n_12,._checkbox_12g7n_1:hover ._checkmark_12g7n_12{color:var(--go-ui-color-primary-red)}._checkbox_12g7n_1._disabled-checkbox_12g7n_58{display:flex;align-items:flex-start;cursor:not-allowed;gap:var(--go-ui-spacing-sm);color:var(--go-ui-color-gray-40)}._checkbox_12g7n_1._disabled-checkbox_12g7n_58 ._checkmark_12g7n_12{color:var(--go-ui-color-gray-40)}._checklist_nwqu8_1{--spacing: var(--go-ui-spacing-md);display:flex;flex-direction:column;gap:var(--spacing)}._checklist_nwqu8_1._vertical_nwqu8_7 ._checklist-container_nwqu8_8{display:flex;flex-direction:column;gap:var(--spacing)}._checklist_nwqu8_1._horizontal_nwqu8_15 ._checklist-container_nwqu8_8{display:grid;grid-gap:var(--spacing);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}._input-hint_1p19h_1{display:inline-block;padding:0 var(--go-ui-spacing-2xs);color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-sm)}._overlay_1iffn_1{overflow:auto;animation:_fade-in_1iffn_1 var(--go-ui-duration-transition-medium) ease-in forwards}._overlay_1iffn_1 ._modal-container_1iffn_5{display:block;width:calc(100% - var(--go-ui-spacing-md) * 2);max-height:calc(100% - var(--go-ui-spacing-md) * 2);overflow:auto;animation:_slide-down_1iffn_1 var(--go-ui-duration-transition-medium) ease-in forwards}._overlay_1iffn_1 ._modal-container_1iffn_5._size-sm_1iffn_12{max-width:var(--go-ui-width-modal-sm)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-md_1iffn_16{max-width:var(--go-ui-width-modal-md)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-lg_1iffn_20,._overlay_1iffn_1 ._modal-container_1iffn_5._size-xl_1iffn_24{max-width:var(--go-ui-width-modal-lg)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-full_1iffn_28{width:calc(100vw - var(--go-ui-spacing-md) * 2);height:calc(100vh - var(--go-ui-spacing-md) * 2)}._overlay_1iffn_1 ._modal-container_1iffn_5._page-width_1iffn_33{max-width:var(--go-ui-page-width-max);height:calc(100vh - var(--go-ui-spacing-md) * 2)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-auto_1iffn_38{max-width:-moz-fit-content;max-width:fit-content}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-lg);box-shadow:var(--go-ui-box-shadow-2xl);background-color:var(--go-ui-color-white);width:100%;min-width:var(--go-ui-width-min-modal);height:100%;min-height:var(--go-ui-height-min-modal);overflow:auto}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5 ._close-icon_1iffn_53{font-size:var(--go-ui-height-icon-multiplier)}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5 ._content_1iffn_57{flex-grow:1;overflow:auto}@keyframes _fade-in_1iffn_1{0%{opacity:0}to{opacity:1}}@keyframes _slide-down_1iffn_1{0%{transform:translateY(-5pt)}to{transform:translateY(0)}}._input-container_1b4m7_1{position:relative}._input-container_1b4m7_1 ._input-section_1b4m7_4{align-items:center;transition:var(--go-ui-duration-transition-medium) var(--go-ui-color-gray-10) ease-in-out;border-bottom:var(--go-ui-width-separator-thin) solid transparent;border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-element-background);padding:0 var(--go-ui-spacing-sm)}._input-container_1b4m7_1 ._input-section_1b4m7_4 ._input_1b4m7_1{padding:var(--go-ui-spacing-xs) 0}._input-container_1b4m7_1._disabled_1b4m7_17{opacity:var(--go-ui-opacity-disabled-element)}._input-container_1b4m7_1._disabled_1b4m7_17 ._input-section_1b4m7_4{cursor:not-allowed}._input-container_1b4m7_1._errored_1b4m7_25 ._input-section_1b4m7_4{border-color:var(--go-ui-color-red)}._input-container_1b4m7_1._general_1b4m7_31 ._input-section_1b4m7_4{border-radius:0;border-bottom-color:var(--go-ui-color-separator)}._input-container_1b4m7_1._read-only_1b4m7_38 ._input-section_1b4m7_4{background-color:var(--go-ui-color-readonly-element-background)}._input-container_1b4m7_1:not(._read-only_1b4m7_38):not(._disabled_1b4m7_17) ._input-section_1b4m7_4:hover,._input-container_1b4m7_1:not(._read-only_1b4m7_38):not(._disabled_1b4m7_17) ._input-section_1b4m7_4:focus-within{border-bottom-color:var(--go-ui-color-primary-red)}._input-container_1b4m7_1 ._input-hint_1b4m7_53{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._input-container_1b4m7_1 ._input-error_1b4m7_58{position:absolute;min-width:10rem}._input-container_1b4m7_1:not(._disabled_1b4m7_17):not(._read-only_1b4m7_38):hover:enabled ._input-section_1b4m7_4{border-bottom-color:var(--go-ui-color-primary-red)}._raw-input_8rtzt_1{margin:0;margin:initial;outline:medium none invert;outline:initial;border:medium none currentColor;border:initial;background-color:transparent;background-color:initial;padding:0;padding:initial;width:100%;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}._raw-input_8rtzt_1:disabled{cursor:not-allowed}._date-output_4jzjo_1{display:inline}._date-range_k6lnj_1{display:flex;gap:var(--go-ui-spacing-md);flex-wrap:wrap}._dropdown-menu_16hml_1{align-items:center}._dropdown-menu_16hml_1 ._icons_16hml_4,._dropdown-menu_16hml_1 ._content_16hml_5,._dropdown-menu_16hml_1 ._actions_16hml_6{pointer-events:none}._dropdown-menu_16hml_1 ._dropdown-icon_16hml_10{margin-left:-.3em;font-size:var(--go-ui-height-icon-multiplier)}._dropdown-content_16hml_16{display:flex;flex-direction:column;padding:var(--go-ui-spacing-sm) 0}._expandable-container_17290_1{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-foreground)}._expandable-container_17290_1 ._header_17290_5{background-color:var(--go-ui-color-foreground)}._expandable-container_17290_1 ._icon_17290_9{display:flex;font-size:var(--go-ui-height-icon-multiplier)}._expandable-container_17290_1:hover ._icon_17290_9{animation:_wiggle_17290_1 var(--go-ui-duration-transition-medium) ease-out}@keyframes _wiggle_17290_1{0%{transform:translateY(0)}50%{transform:translateY(-.1rem)}to{transform:translateY(0)}}._grid_1n8b5_1{--num-columns: 2;--max-width: calc(var(--go-ui-page-width-max) * .8);display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / 2),1fr));grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / var(--num-columns)),1fr));position:relative;min-height:var(--go-ui-content-min-height)}._grid_1n8b5_1 ._message_1n8b5_10{grid-column:-1 / 1}._grid_1n8b5_1._compact_1n8b5_14{min-height:0;min-height:initial}._grid_1n8b5_1._compact_1n8b5_14._pending_1n8b5_17{min-height:var(--go-ui-compact-content-min-height)}._grid_1n8b5_1._two-columns_1n8b5_22{--num-columns: 2}@media screen and (max-width: 55rem){._grid_1n8b5_1._two-columns_1n8b5_22{--max-width: 60rem}}._grid_1n8b5_1._three-columns_1n8b5_31{--num-columns: 3}@media screen and (max-width: 55rem){._grid_1n8b5_1._three-columns_1n8b5_31{--max-width: 60rem}}._grid_1n8b5_1._four-columns_1n8b5_39{--num-columns: 4}._grid_1n8b5_1._five-columns_1n8b5_43{--num-columns: 5}._html-output_3s7du_1 p{margin:var(--go-ui-spacing-xs)}._html-output_3s7du_1 iframe{width:100%}._image_yrvu8_1{display:flex;flex-direction:column;margin:0}._image_yrvu8_1 ._img-element_yrvu8_6{background-color:var(--go-ui-color-background);width:100%;height:auto;-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}._image_yrvu8_1._expandable_yrvu8_14{cursor:pointer}._image_yrvu8_1 ._caption_yrvu8_18{text-align:center}._expanded-modal_yrvu8_23 ._content_yrvu8_24{display:flex}._expanded-modal_yrvu8_23 ._content_yrvu8_24 ._img-element_yrvu8_6{margin:0;background-color:var(--go-ui-color-background);width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center}._input-section_1cptl_1{display:grid;grid-gap:var(--go-ui-spacing-md);grid-template-columns:1fr 2fr;background-color:var(--go-ui-color-white)}._input-section_1cptl_1 ._header_1cptl_7 ._heading-container_1cptl_8 ._heading_1cptl_8{flex-grow:initial}@media screen and (max-width: 60rem){._input-section_1cptl_1{grid-template-columns:1fr}}._input-section_1cptl_1._with-compact-title-section_1cptl_19{grid-template-columns:1fr 3fr}._input-section_1cptl_1._with-padding_1cptl_23{padding:var(--go-ui-spacing-lg)}._input-section_1cptl_1 ._asterisk_1cptl_27{color:var(--go-ui-color-primary-red)}._input-section_1cptl_1 ._description_1cptl_31{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._input-section_1cptl_1 ._content-section_1cptl_37{display:grid;grid-gap:var(--go-ui-spacing-sm);align-items:start}._input-section_1cptl_1 ._content-section_1cptl_37._one-column_1cptl_42{grid-template-columns:1fr}._input-section_1cptl_1 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}@media screen and (max-width: 30rem){._input-section_1cptl_1 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._input-section_1cptl_1 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr))}._input-section_1cptl_1 ._content-section_1cptl_37._four-column_1cptl_58{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}._input-section_1cptl_1._without-title-section_1cptl_63{grid-template-columns:1fr}._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fill,minmax(28rem,1fr))}@media screen and (max-width: 70rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}}@media screen and (max-width: 30rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fill,minmax(22rem,1fr))}@media screen and (max-width: 30rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._info-popup_i3rna_1 ._label_i3rna_2{display:inline-flex;align-items:center;gap:var(--go-ui-spacing-xs)}._info-popup_i3rna_1 ._label_i3rna_2 ._icon_i3rna_7{display:inline-flex;font-size:var(--go-ui-height-icon-multiplier)}._dropdown-container_i3rna_15{padding:0;min-width:min(20rem,100vw);max-width:25rem}._dropdown-container_i3rna_15 ._content_i3rna_20{display:flex;flex-direction:column;white-space:pre-wrap;gap:var(--go-ui-spacing-xs);font-size:var(--go-ui-font-size-sm)}._key-figure_1owjn_1{display:flex;position:relative;flex-direction:column;padding:var(--go-ui-spacing-md);gap:var(--go-ui-spacing-xs)}._key-figure_1owjn_1 ._icon-section_1owjn_8{display:flex}._key-figure_1owjn_1 ._icon-section_1owjn_8 ._icon_1owjn_8{display:flex;align-items:center;flex-grow:1;justify-content:flex-start;color:var(--go-ui-color-primary-red);font-size:var(--go-ui-height-key-figure-icon)}._key-figure_1owjn_1 ._icon-section_1owjn_8 ._info_1owjn_20{flex-shrink:0}._key-figure_1owjn_1 ._info-section-without-icon_1owjn_25{position:absolute;top:0;right:0}._key-figure_1owjn_1 ._value_1owjn_31{font-size:var(--go-ui-font-size-3xl);font-weight:var(--go-ui-font-weight-medium)}._key-figure_1owjn_1 ._description_1owjn_36{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._key-figure_1owjn_1._with-icon_1owjn_41 ._value_1owjn_31{font-size:var(--go-ui-font-size-4xl)}._progress-wrapper_x340w_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xs);color:var(--go-ui-color-primary-red)}._progress-wrapper_x340w_1 ._title_x340w_7{color:var(--go-ui-color-text)}._progress-wrapper_x340w_1 ._total_x340w_11{display:flex;flex-shrink:0;border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-separator);height:.5rem}._progress-wrapper_x340w_1 ._total_x340w_11 ._progress_x340w_1{transition:var(--go-ui-duration-transition-medium) width ease-in-out;border-radius:var(--go-ui-border-radius-md)}._legend_77ox6_1{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-lg)}._legend_77ox6_1 ._legend-items_77ox6_6{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-md)}._legend-element_1a9ic_1{display:flex;align-items:center;gap:var(--go-ui-spacing-xs);font-size:var(--go-ui-font-size-sm)}._legend-element_1a9ic_1 ._color_1a9ic_7{flex-shrink:0;border-radius:.4em;width:.8em;height:.8em}._legend-element_1a9ic_1 ._icon-container_1a9ic_14{display:flex;align-items:center;justify-content:center;border-radius:50%;padding:var(--go-ui-spacing-2xs);width:1.2rem;height:1.2rem}._legend-element_1a9ic_1 ._icon-container_1a9ic_14 ._icon_1a9ic_14{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center}._legend-element_1a9ic_1 ._label_1a9ic_31{font-size:1em}._list_1whuj_1{position:relative;min-height:var(--go-ui-content-min-height)}._list_1whuj_1._compact_1whuj_5{min-height:0;min-height:initial}._list_1whuj_1._compact_1whuj_5._pending_1whuj_8{min-height:var(--go-ui-compact-content-min-height)}._option_1kpl9_1{display:flex;align-items:center;padding:var(--go-ui-spacing-sm) var(--go-ui-spacing-md);overflow:auto}._option_1kpl9_1._active_1kpl9_7{color:var(--go-ui-color-primary-red)}._option_1kpl9_1 ._icon_1kpl9_11{display:flex;align-items:center;flex-shrink:0}._option_1kpl9_1 ._label_1kpl9_17{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._popup_poyjv_1{padding:var(--go-ui-spacing-sm) 0}._popup_poyjv_1 ._list_poyjv_4{display:flex;flex-direction:column;overflow:auto}._popup_poyjv_1 ._list_poyjv_4 ._list-item_poyjv_9{flex-shrink:0}._popup_poyjv_1 ._info-message_poyjv_14{padding:var(--go-ui-spacing-sm);text-align:center;color:var(--go-ui-color-text-light)}._icon_poyjv_21{font-size:var(--go-ui-height-icon-multiplier)}._generic-option_zv1n8_1{display:flex;gap:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);text-align:left}._generic-option_zv1n8_1:hover{background-color:var(--go-ui-color-gray-20)}._navigation-tab-list_19mw3_1{display:flex;position:relative}._navigation-tab-list_19mw3_1._primary_19mw3_5{overflow-x:auto}._navigation-tab-list_19mw3_1._primary_19mw3_5 ._content_19mw3_8{display:flex}._navigation-tab-list_19mw3_1._primary_19mw3_5 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._primary_19mw3_5 ._end-dummy-content_19mw3_13{align-self:flex-end;flex-grow:1;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._navigation-tab-list_19mw3_1._secondary_19mw3_20{display:flex;overflow-x:auto}._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._content_19mw3_8{display:flex;border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-element-background)}._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._end-dummy-content_19mw3_13{flex-grow:1}._navigation-tab-list_19mw3_1._tertiary_19mw3_36{justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto}._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._content_19mw3_8{display:flex;flex-wrap:wrap;justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-md)}._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._end-dummy-content_19mw3_13{display:none}._navigation-tab-list_19mw3_1._step_19mw3_56{overflow-x:auto}._navigation-tab-list_19mw3_1._step_19mw3_56 ._content_19mw3_8{display:flex}._navigation-tab-list_19mw3_1._step_19mw3_56 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._step_19mw3_56 ._end-dummy-content_19mw3_13{align-self:flex-end;flex-grow:1}._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._content_19mw3_8{display:flex;flex-direction:column}._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._end-dummy-content_19mw3_13{display:none}._page-container_1cfro_1 ._content_1cfro_2{margin:0 auto;padding:var(--go-ui-spacing-lg);width:100%}@media screen{._page-container_1cfro_1 ._content_1cfro_2{max-width:var(--go-ui-page-width-max)}}._page-header_1r8r3_1{padding:var(--go-ui-spacing-lg) 0}._page-header_1r8r3_1 ._container_1r8r3_4{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xl)}._page-header_1r8r3_1 ._container_1r8r3_4 ._breadcrumbs-container_1r8r3_9{flex-shrink:initial}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-lg)}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13 ._heading_1r8r3_19{text-align:center}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13 ._description_1r8r3_23{max-width:var(--go-ui-page-header-description-width-max);text-align:center}._pager_83zz4_1 ._page-list_83zz4_2{display:flex;gap:var(--go-ui-spacing-xs);align-items:center}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;line-height:1}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7._active_83zz4_15{border-radius:50%;background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7._compact_83zz4_21{font-size:var(--go-ui-font-size-xs);font-weight:var(--go-ui-font-weight-medium)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7:disabled{opacity:var(--go-ui-opacity-disabled-element)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7 ._icon_83zz4_30{font-size:var(--go-ui-font-size-2xl)}._top-banner_1w8lu_1{background-color:var(--go-ui-color-negative);padding:var(--go-ui-spacing-md);text-align:center;color:var(--go-ui-color-white);font-weight:var(--go-ui-font-weight-medium)}._warning_1w8lu_9{background-color:var(--go-ui-color-warning)}._positive_1w8lu_13{background-color:var(--go-ui-color-positive)}._information_1w8lu_17{background-color:var(--go-ui-color-information)}._pie-chart_pyr7m_1{display:flex;align-items:center;flex-wrap:wrap;gap:var(--go-ui-spacing-md)}._pie-chart_pyr7m_1 ._legend_pyr7m_7{display:flex;flex-direction:column;flex-grow:1;justify-content:center}._pie-chart_pyr7m_1 ._legend_pyr7m_7 ._legend-item_pyr7m_13{font-size:var(--go-ui-font-size-xs)}._text-output_10oza_1{display:flex;flex-wrap:wrap;gap:0 var(--go-ui-spacing-sm)}._text-output_10oza_1._with-background_10oza_6{background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-sm)}._text-output_10oza_1 ._label_10oza_11._with-colon_10oza_12:after{content:":"}._text-output_10oza_1 ._value_10oza_17._text-type_10oza_18{text-align:justify;white-space:pre-wrap}._text-output_10oza_1 ._strong_10oza_24{font-weight:var(--go-ui-font-weight-semibold)}._file-input_tu4re_1 ._input_tu4re_2{visibility:hidden;width:0;height:0}._raw-input_145mq_1{margin:0;outline:0;border:0;background-color:transparent;padding:0;width:100%;color:inherit;font-family:inherit;font-size:inherit}._reduced-list-display_1czue_1{display:inline-block}._reduced-list-label_1czue_5{padding:0;-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-blue-90);font-weight:var(--go-ui-font-weight-medium)}._reduced-list-label_1czue_5:hover,._reduced-list-label_1czue_5:focus{opacity:1;color:var(--go-ui-color-primary-red)}._option-container_2k92q_1{display:flex;overflow:auto}._option-container_2k92q_1 ._option_2k92q_1{flex-grow:1}._option-container_2k92q_1._active_2k92q_9{color:var(--go-ui-color-primary-red)}._option-container_2k92q_1._active_2k92q_9 ._icon_2k92q_12{opacity:1}._option_11p37_1{display:flex;gap:var(--go-ui-spacing-sm);overflow:auto}._option_11p37_1 ._icon_11p37_6{display:flex;align-items:center;flex-shrink:0;opacity:0;font-size:var(--go-ui-height-icon-multiplier)}._option_11p37_1 ._label_11p37_14{display:flex;flex-direction:column;flex-grow:1;overflow:auto}._option_11p37_1 ._label_11p37_14 ._overflow-container_11p37_20{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._option_11p37_1 ._label_11p37_14 ._overflow-container_11p37_20._description_11p37_25{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._segment-input_bykt7_1{width:-moz-fit-content;width:fit-content}._segment-input_bykt7_1 ._segment-list_bykt7_4{flex-wrap:nowrap;border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-background);padding:0;width:-moz-fit-content;width:fit-content;gap:0}._segment-input_bykt7_1 ._segment_bykt7_1{border-radius:var(--go-ui-border-radius-full);padding:var(--go-ui-spacing-3xs) var(--go-ui-spacing-md)}._segment-input_bykt7_1 ._segment_bykt7_1._active_bykt7_18{background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._segment-input_bykt7_1._secondary-variant_bykt7_24 ._segment_bykt7_1._active_bykt7_18{background-color:var(--go-ui-color-blue-90);color:var(--go-ui-color-white)}._stacked-bar-chart_gqsj2_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6{display:flex}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6{display:flex;align-items:baseline;justify-content:center;gap:var(--go-ui-spacing-2xs)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6 ._value_gqsj2_15{font-weight:var(--go-ui-font-weight-semibold)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6 ._percentage_gqsj2_19{font-size:var(--go-ui-font-size-sm)}._stacked-bar-chart_gqsj2_1 ._track_gqsj2_25{--height: 1rem;display:flex;border-radius:.5rem;border-radius:calc(.5 * var(--height));background-color:var(--go-ui-color-gray-50);height:1rem;height:var(--height);overflow:hidden}._stacked-bar-chart_gqsj2_1 ._track_gqsj2_25 ._bar_gqsj2_6{height:100%}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-md)}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43{display:flex;align-items:baseline;gap:var(--go-ui-spacing-2xs)}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43 ._color-dot_gqsj2_48{flex-shrink:0;border-radius:.3rem;width:.6rem;height:.6rem}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43 ._label_gqsj2_38{padding:0 var(--go-ui-spacing-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--go-ui-font-size-sm)}._switch_1bdw6_1 ._checkmark-container_1bdw6_2{--width: var(--go-ui-font-size-4xl)}._switch_1bdw6_1._with-inverted-view_1bdw6_6{flex-direction:row-reverse}._switch-icon_w9df3_1{--gap: .05em;--border-width: var(--go-ui-width-separator-sm);--knob-diameter: calc(1em - 2 * var(--gap) - 2 * var(--border-width));--background-color: var(--go-ui-color-gray-50);--border-color: var(--go-ui-color-gray-30);--knob-color: var(--go-ui-color-white);display:flex;align-items:center;transition:var(--go-ui-duration-transition-medium) background-color ease-in-out;border:var(--border-width) solid var(--border-color);border-radius:.5em;background-color:var(--background-color);padding:.05em;padding:var(--gap);width:calc(1em + var(--knob-diameter));height:1em}._switch-icon_w9df3_1 ._knob_w9df3_19{transition:var(--go-ui-duration-transition-medium) transform ease-in-out,var(--go-ui-duration-transition-medium) background-color ease-in-out;border-radius:calc((1em - var(--gap) * 2) / 2);border-radius:calc(calc(1em - var(--gap) * 2) / 2);background-color:var(--knob-color);width:var(--knob-diameter);height:var(--knob-diameter)}._switch-icon_w9df3_1._on_w9df3_27{background-color:var(--go-ui-color-primary-red)}._switch-icon_w9df3_1._on_w9df3_27 ._knob_w9df3_19{transform:translate(100%)}._table_nilhy_1{display:flex;position:relative;flex-direction:column;min-height:var(--go-ui-content-min-height);overflow-x:auto}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8{display:flex;flex-direction:column;overflow-x:auto}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13{position:relative;z-index:0;border-collapse:separate;border-spacing:0;font-size:inherit}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13 ._header-row_nilhy_23 ._header-element_nilhy_24{position:sticky;top:0;z-index:1}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13 ._header-row_nilhy_23 ._header-element_nilhy_24 ._header-component_nilhy_29{padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm)}._table_nilhy_1 ._message_nilhy_38._pending_nilhy_39{position:absolute;top:0;left:0;width:100%;height:100%}._row_1829z_1 ._cell_1829z_2{padding:var(--go-ui-spacing-sm);overflow:hidden;word-break:break-word}._row_1829z_1:hover ._cell_1829z_2{background-color:var(--go-ui-color-background-hover)}._td_1k4cn_1{border-bottom:var(--go-ui-width-separator-sm) solid var(--go-ui-color-separator)}._th_cdv41_1{border-bottom:var(--go-ui-width-separator-sm) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-white);overflow:hidden;vertical-align:bottom;text-align:left}._th_cdv41_1 ._resize-handle_cdv41_8{position:absolute;top:0;right:0;z-index:1;border-right:var(--go-ui-width-separator-sm) solid transparent;cursor:col-resize;width:var(--go-ui-width-separator-lg);height:calc(100% - var(--go-ui-spacing-sm))}._th_cdv41_1:hover ._resize-handle_cdv41_8{border-right-color:var(--go-ui-color-gray-30)}._th_cdv41_1:hover ._resize-handle_cdv41_8:hover{border-right-color:var(--go-ui-color-gray-50)}._header-cell_vn24d_1{display:flex;align-items:center;color:var(--go-ui-color-text-black);font-weight:var(--go-ui-font-weight-semibold);gap:var(--go-ui-spacing-2xs)}._header-cell_vn24d_1 ._sort-button_vn24d_8{flex-shrink:0}._header-cell_vn24d_1 ._icon_vn24d_12{flex-shrink:0;font-size:var(--go-ui-height-icon-multiplier)}._header-cell_vn24d_1 ._info-popup-icon_vn24d_17{flex-shrink:0}._table-actions_171sq_1{display:flex;justify-content:flex-end;gap:var(--go-ui-spacing-sm)}._table-actions_171sq_1 ._more-icon_171sq_6{font-size:var(--go-ui-height-icon-multiplier)}._tab_12kk2_1{--border-color: var(--go-ui-color-gray-30);--border-width: var(--go-ui-width-separator-thin);display:inline-flex;align-items:stretch;border-radius:0;-webkit-text-decoration:none;text-decoration:none;color:var(--go-ui-color-black);font-weight:var(--go-ui-font-weight-medium)}._tab_12kk2_1 ._dummy_12kk2_12{flex-grow:1;border-bottom:var(--border-width) solid var(--border-color);width:var(--go-ui-spacing-xs)}._tab_12kk2_1 ._children-wrapper_12kk2_18{display:flex;align-items:center;flex-grow:1;border:var(--border-width) solid transparent;text-align:center}._tab_12kk2_1._vertical-compact_12kk2_26 ._children-wrapper_12kk2_18,._tab_12kk2_1._vertical_12kk2_26 ._children-wrapper_12kk2_18{display:flex;gap:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-md) 0;text-align:left}._tab_12kk2_1._vertical-compact_12kk2_26._active_12kk2_35,._tab_12kk2_1._vertical_12kk2_26._active_12kk2_35{-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-primary-red)}._tab_12kk2_1._vertical-compact_12kk2_26 ._children-wrapper_12kk2_18{padding:0}._tab_12kk2_1._primary_12kk2_48{position:relative;font-size:var(--go-ui-font-size-lg)}._tab_12kk2_1._primary_12kk2_48 ._children-wrapper_12kk2_18{border-bottom-color:var(--border-color);background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-md) var(--go-ui-spacing-lg)}._tab_12kk2_1._primary_12kk2_48._active_12kk2_35{color:var(--go-ui-color-primary-red)}._tab_12kk2_1._primary_12kk2_48._active_12kk2_35 ._children-wrapper_12kk2_18{border-color:var(--border-color);border-bottom-color:transparent;background-color:var(--go-ui-color-white)}._tab_12kk2_1._primary_12kk2_48:not(._active_12kk2_35) ._active-border_12kk2_69{display:none}._tab_12kk2_1._step_12kk2_75{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-md);transition:var(--go-ui-duration-transition-medium) color,background-color ease-in-out;padding:var(--go-ui-spacing-md) 0;text-transform:uppercase;color:var(--go-ui-color-gray-70)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85{display:flex;align-items:center;align-self:stretch}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90{flex-shrink:0;transition:var(--go-ui-duration-transition-slow) border-color ease-in-out;border:var(--border-width) solid transparent;border-radius:50%;background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-2xs)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90 ._inner-circle_12kk2_98{display:flex;align-items:center;justify-content:center;transition:var(--go-ui-duration-transition-slow) background-color ease-in-out;border-radius:50%;background-color:var(--go-ui-color-gray-60);width:1rem;height:1rem}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90 ._inner-circle_12kk2_98 ._icon_12kk2_108{color:var(--go-ui-color-white);font-size:var(--go-ui-height-icon-multiplier)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._progress-bar-end_12kk2_115,._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._progress-bar-start_12kk2_116{flex-grow:1;background-color:var(--go-ui-color-separator);height:var(--go-ui-width-separator-thin)}._tab_12kk2_1._step_12kk2_75 ._children-wrapper_12kk2_18{padding:0 var(--go-ui-spacing-lg)}._tab_12kk2_1._step_12kk2_75._errored_12kk2_128 ._children-wrapper_12kk2_18{-webkit-text-decoration:underline wavy var(--go-ui-color-primary-red);text-decoration:underline wavy var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75:hover{color:var(--go-ui-color-black)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35{color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._step-circle_12kk2_90{border-color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._step-circle_12kk2_90 ._inner-circle_12kk2_98{background-color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._progress-bar-start_12kk2_116,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._step-circle_12kk2_90 ._inner-circle_12kk2_98,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._progress-bar-end_12kk2_115,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._progress-bar-start_12kk2_116{background-color:var(--go-ui-color-primary-blue)}._tab_12kk2_1._step_12kk2_75:first-child ._visual-elements_12kk2_85 ._progress-bar-start_12kk2_116{background-color:transparent}._tab_12kk2_1._step_12kk2_75:last-child ._visual-elements_12kk2_85 ._progress-bar-end_12kk2_115{background-color:transparent}._tab_12kk2_1._secondary_12kk2_183{border-radius:var(--go-ui-border-radius-full);padding:var(--go-ui-spacing-md) var(--go-ui-spacing-xl)}._tab_12kk2_1._secondary_12kk2_183._active_12kk2_35{background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._tab_12kk2_1._tertiary_12kk2_193:hover,._tab_12kk2_1._tertiary_12kk2_193._active_12kk2_35{-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-primary-red)}._tab_12kk2_1._disabled_12kk2_205{pointer-events:none;opacity:var(--go-ui-opacity-disabled-element)}._tab-list_1d752_1{display:flex;position:relative}._tab-list_1d752_1._primary_1d752_5{overflow-x:auto}._tab-list_1d752_1._primary_1d752_5 ._content_1d752_8{display:flex}._tab-list_1d752_1._primary_1d752_5 ._start-dummy-content_1d752_12,._tab-list_1d752_1._primary_1d752_5 ._end-dummy-content_1d752_13{align-self:flex-end;flex-grow:1;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._tab-list_1d752_1._secondary_1d752_20{display:flex;overflow-x:auto}._tab-list_1d752_1._secondary_1d752_20 ._content_1d752_8{display:flex;border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-element-background)}._tab-list_1d752_1._secondary_1d752_20 ._start-dummy-content_1d752_12,._tab-list_1d752_1._secondary_1d752_20 ._end-dummy-content_1d752_13{flex-grow:1}._tab-list_1d752_1._tertiary_1d752_36{justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto}._tab-list_1d752_1._tertiary_1d752_36 ._content_1d752_8{display:flex;flex-wrap:wrap;justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto;gap:var(--go-ui-spacing-md)}._tab-list_1d752_1._tertiary_1d752_36 ._start-dummy-content_1d752_12,._tab-list_1d752_1._tertiary_1d752_36 ._end-dummy-content_1d752_13{display:none}._tab-list_1d752_1._step_1d752_56{overflow-x:auto}._tab-list_1d752_1._step_1d752_56 ._content_1d752_8{display:flex}._tab-list_1d752_1._step_1d752_56 ._start-dummy-content_1d752_12,._tab-list_1d752_1._step_1d752_56 ._end-dummy-content_1d752_13{align-self:flex-end;flex-grow:1}._tab-list_1d752_1._vertical-compact_1d752_70 ._content_1d752_8,._tab-list_1d752_1._vertical_1d752_70 ._content_1d752_8{display:flex;flex-direction:column}._tab-list_1d752_1._vertical-compact_1d752_70 ._start-dummy-content_1d752_12,._tab-list_1d752_1._vertical_1d752_70 ._start-dummy-content_1d752_12,._tab-list_1d752_1._vertical-compact_1d752_70 ._end-dummy-content_1d752_13,._tab-list_1d752_1._vertical_1d752_70 ._end-dummy-content_1d752_13{display:none}._tab-list_1d752_1._vertical-compact_1d752_70 ._content_1d752_8{gap:var(--go-ui-spacing-xs)}._timeline-chart_1mks7_1{flex-grow:1;height:100%;--path-stroke-width: 1pt}._timeline-chart_1mks7_1 ._y-axis-tick-text_1mks7_6{text-anchor:middle;font-size:var(--go-ui-font-size-xs)}._timeline-chart_1mks7_1 ._x-axis-tick-text_1mks7_11{text-anchor:middle;transition:var(--go-ui-duration-transition-medium) ease-in-out transform;font-size:var(--go-ui-font-size-xs)}@media screen and (max-width: 30rem){._timeline-chart_1mks7_1 ._x-axis-tick-text_1mks7_11{transform:rotate(-30deg)}}._timeline-chart_1mks7_1 ._x-axis-grid-line_1mks7_21,._timeline-chart_1mks7_1 ._y-axis-grid-line_1mks7_22{stroke:var(--go-ui-color-gray-60);stroke-dasharray:4 4;stroke-opacity:.2;transition:var(--go-ui-duration-transition-medium) ease-in-out stroke-opacity}._timeline-chart_1mks7_1 ._x-axis-grid-line_1mks7_21._hovered_1mks7_28,._timeline-chart_1mks7_1 ._y-axis-grid-line_1mks7_22._hovered_1mks7_28{stroke-opacity:1}._timeline-chart_1mks7_1 ._rect_1mks7_33{transition:var(--go-ui-duration-transition-medium) ease-in-out fill-opacity;cursor:pointer;fill-opacity:0;fill:var(--go-ui-color-white)}._chart-point_aqsix_1{--point-radius: 4pt;--point-hover-radius: 5pt;--point-outline-radius: 7pt;--point-stroke-width: 2pt}._chart-point_aqsix_1 ._point_aqsix_7{r:var(--point-radius);stroke:currentColor;stroke-width:var(--point-stroke-width);fill:var(--go-ui-color-white);transition:var(--go-ui-duration-transition-medium) ease-in-out r,var(--go-ui-duration-transition-medium) ease-in-out fill}._chart-point_aqsix_1 ._point_aqsix_7._active_aqsix_14,._chart-point_aqsix_1 ._point_aqsix_7._hovered_aqsix_18{fill:currentColor}._chart-point_aqsix_1 ._point-outline_aqsix_23{r:var(--point-radius);stroke:currentColor;stroke-width:var(--point-stroke-width);fill:var(--go-ui-color-white);transition:var(--go-ui-duration-transition-medium) ease-in-out r}._chart-point_aqsix_1 ._point-outline_aqsix_23._active_aqsix_14{r:var(--point-outline-radius)}._chart-point_aqsix_1._hoverable_aqsix_35:hover ._point_aqsix_7{fill:currentColor}._title_1rjpr_1{color:inherit,}._expansion-indicator-cell-container_1rjpr_5,._timeline-cell-container_1rjpr_9{position:relative}._date-column_1rjpr_13{width:0%;min-width:7rem}._expand-button_1bf2c_1 ._icon_1bf2c_2{font-size:var(--go-ui-height-icon-multiplier)}._expansion-indicator_jys9u_1{display:flex;position:absolute;inset:0;align-items:center;flex-direction:column;width:100%;overflow:auto}._expansion-indicator_jys9u_1 ._end-border_jys9u_13,._expansion-indicator_jys9u_1 ._start-border_jys9u_14{flex-grow:1;background-color:var(--go-ui-color-separator);width:var(--go-ui-width-separator-thin)}._expansion-indicator_jys9u_1 ._indicator_jys9u_20{flex-shrink:0;border-radius:50%;background-color:var(--go-ui-color-primary-red);width:.8rem;height:.8rem}._expansion-indicator_jys9u_1._start_jys9u_14 ._start-border_jys9u_14,._expansion-indicator_jys9u_1._end_jys9u_13 ._end-border_jys9u_13,._expansion-indicator_jys9u_1._single_jys9u_40 ._end-border_jys9u_13,._expansion-indicator_jys9u_1._single_jys9u_40 ._start-border_jys9u_14{background-color:transparent}._timeline-header_1sebe_1 ._title_1sebe_2{display:flex;flex-grow:1;justify-content:space-between}._timeline-item_1g3u0_1{position:absolute;top:0;left:var(--go-ui-spacing-sm);width:calc(100% - 2 * var(--go-ui-spacing-sm));height:100%}._timeline-item_1g3u0_1 ._timeline-progress_1g3u0_8{position:absolute;top:50%;transform:translateY(-50%);border-radius:.25em;background-color:var(--go-ui-color-primary-red);height:.5rem}._timeline-item_1g3u0_1 ._today-marker_1g3u0_17{position:absolute;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-primary-blue);height:100%}._timeline-item_1g3u0_1 ._start-date-marker_1g3u0_23{position:absolute;left:0;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-separator);height:100%}._timeline-item_1g3u0_1 ._end-date-marker_1g3u0_30{position:absolute;right:0;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-separator);height:100%}
 
 
py_backend/static/assets/vendor-ui-l_DttnRj.js DELETED
The diff for this file is too large to render. See raw diff
 
py_backend/static/assets/AdminPage-C_7rpuzO.js → py—backend/static/AdminPage-Ba_QXeaN.js RENAMED
@@ -1,4 +1,4 @@
1
- import{r as d,j as a}from"./vendor-react-BxsGb6Ph.js";import{u as we}from"./useAdmin-BStaIYmd.js";import{N as B,R as Fe,O as h,z as f,n as t,f as S}from"./vendor-ui-l_DttnRj.js";import"./vendor-DxpCibxB.js";import"./index-DyXqjI96.js";const ke="_adminContainer_j11pf_5",Te="_adminHeader_j11pf_13",Ae="_adminSection_j11pf_20",Pe="_modelSelectionArea_j11pf_29",Ie="_modelSelectionRow_j11pf_36",$e="_modelsTable_j11pf_89",Le="_promptSubsection_j11pf_97",Ee="_promptSubsectionTitle_j11pf_109",Be="_modelCode_j11pf_152",Oe="_modelId_j11pf_157",Re="_modelActions_j11pf_163",De="_addModelButtonContainer_j11pf_169",Ue="_addModelForm_j11pf_177",ze="_addModelFormTitle_j11pf_185",He="_addModelFormGrid_j11pf_193",Ge="_addModelFormField_j11pf_206",Ve="_addModelFormCheckbox_j11pf_250",Je="_addModelFormActions_j11pf_268",Ke="_modalOverlay_j11pf_277",We="_modalContent_j11pf_291",qe="_modalBody_j11pf_302",Ye="_modalTitle_j11pf_312",Qe="_modalText_j11pf_320",Xe="_modalTextLeft_j11pf_332",Ze="_modalButtons_j11pf_355",ea="_modalForm_j11pf_363",aa="_formField_j11pf_372",la="_formLabel_j11pf_376",sa="_formInput_j11pf_385",oa="_textarea_j11pf_407",l={adminContainer:ke,adminHeader:Te,adminSection:Ae,modelSelectionArea:Pe,modelSelectionRow:Ie,modelsTable:$e,promptSubsection:Le,promptSubsectionTitle:Ee,modelCode:Be,modelId:Oe,modelActions:Re,addModelButtonContainer:De,addModelForm:Ue,addModelFormTitle:ze,addModelFormGrid:He,addModelFormField:Ge,addModelFormCheckbox:Ve,addModelFormActions:Je,modalOverlay:Ke,modalContent:We,modalBody:qe,modalTitle:Ye,modalText:Qe,modalTextLeft:Xe,modalButtons:Ze,modalForm:ea,formField:aa,formLabel:la,formInput:sa,textarea:oa},w="selectedVlmModel";function ca(){const{isAuthenticated:F,isLoading:X,login:Z,logout:ee}=we(),[k,O]=d.useState(""),[R,u]=d.useState(""),[D,U]=d.useState(!1),[z,H]=d.useState([]),[ae,b]=d.useState(""),[G,le]=d.useState([]),[se,oe]=d.useState([]),[te,y]=d.useState(!1),[de,N]=d.useState(!1),[ie,T]=d.useState(null),[C,A]=d.useState(null),[n,r]=d.useState({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1}),[V,P]=d.useState(!1),[ne,I]=d.useState(!1),[$,L]=d.useState(null),[o,c]=d.useState({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1}),[re,M]=d.useState(!1),[ce,E]=d.useState(!1),[me,p]=d.useState(!1),[J,K]=d.useState(""),[he,pe]=d.useState(""),[_e,_]=d.useState(""),[ue,j]=d.useState(""),x=d.useCallback(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{console.log("Models data received:",e),H(e.models||[]);const s=localStorage.getItem(w);if(e.models&&e.models.length>0)if(s==="random")b("random");else if(s&&e.models.find(i=>i.m_code===s&&i.is_available))b(s);else{const i=e.models.find(m=>m.is_available)||e.models[0];b(i.m_code),localStorage.setItem(w,i.m_code)}}).catch(()=>{})},[]),v=d.useCallback(()=>{console.log("=== fetchPrompts called ==="),fetch("/api/prompts").then(e=>e.json()).then(e=>{console.log("Prompts data received:",e),le(e||[]),console.log("State update triggered with:",e||[])}).catch(e=>{console.error("Error fetching prompts:",e)})},[]),W=d.useCallback(()=>{fetch("/api/image-types").then(e=>e.json()).then(e=>{console.log("Image types data received:",e),oe(e||[])}).catch(()=>{})},[]);d.useEffect(()=>{F&&(x(),v(),W())},[F,x,v,W]);const q=e=>{A(e),r({p_code:e.p_code,label:e.label||"",metadata_instructions:e.metadata_instructions||"",image_type:e.image_type||"crisis_map",is_active:e.is_active||!1}),y(!0)},je=async()=>{try{if(!C){alert("No prompt selected for editing");return}const e=await fetch(`/api/prompts/${C.p_code}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({label:n.label,metadata_instructions:n.metadata_instructions,image_type:n.image_type,is_active:n.is_active})});if(e.ok)v(),y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to update prompt: ${s.error||"Unknown error"}`)}}catch{alert("Error updating prompt")}},Y=async(e,s)=>{try{const i=await fetch(`/api/prompts/${e}/toggle-active?image_type=${s}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(i.ok)v();else{const m=await i.json();alert(`Failed to toggle prompt active status: ${m.detail||"Unknown error"}`)}}catch{alert("Error toggling prompt active status")}},Q=e=>{T(e),r({p_code:"",label:"",metadata_instructions:"",image_type:e,is_active:!1}),N(!0)},xe=async()=>{try{const e=await fetch("/api/prompts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(e.ok)v(),N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to create prompt: ${s.detail||"Unknown error"}`)}}catch{alert("Error creating prompt")}},ve=async(e,s)=>{try{const i=await fetch(`/api/models/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({is_available:!s})});if(i.ok)H(m=>m.map(g=>g.m_code===e?{...g,is_available:!s}:g));else{const m=await i.json();alert(`Failed to toggle model availability: ${m.error||"Unknown error"}`)}}catch{alert("Error toggling model availability")}},ge=e=>{b(e),e==="random"?localStorage.setItem(w,"random"):localStorage.setItem(w,e)},fe=async()=>{try{const e=await fetch("/api/admin/models",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("adminToken")}`},body:JSON.stringify(o)});if(e.ok){const s=`
2
  Model "${o.label}" added successfully!
3
 
4
  ⚠️ IMPORTANT: Model will NOT work until you complete these steps:
@@ -42,4 +42,4 @@ Raw data:
42
  ${JSON.stringify(e,null,2)}`:s=`Prompts Response:
43
 
44
  Unexpected data type: ${typeof e}
45
- Value: ${e}`,_(s),j(i),p(!0)}).catch(e=>{console.error("Schemas Error:",e);const s=`Failed to fetch prompts: ${e.message||"Unknown error"}`;_(s),j("Schemas Error"),p(!0)})},children:"View Schemas"})]})})]})]}),re&&a.jsx("div",{className:l.modalOverlay,onClick:()=>M(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Delete Model"}),a.jsxs("p",{className:l.modalText,children:["Are you sure you want to delete model ",a.jsx("span",{className:l.modelCode,children:J}),"? This action cannot be undone."]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-delete",variant:"tertiary",onClick:()=>M(!1),children:"Cancel"}),a.jsx(t,{name:"confirm-delete",variant:"secondary",onClick:Ce,children:"Delete"})]})]})})}),ce&&a.jsx("div",{className:l.modalOverlay,onClick:()=>E(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Model Added Successfully!"}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:he}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-setup-instructions",variant:"secondary",onClick:()=>E(!1),children:"Got it!"})})]})})}),me&&a.jsx("div",{className:l.modalOverlay,onClick:()=>p(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:ue}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:a.jsx("div",{className:"whitespace-pre-wrap font-mono text-sm leading-relaxed",children:_e})}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-test-results",variant:"secondary",onClick:()=>p(!1),children:"Close"})})]})})}),te&&a.jsx("div",{className:l.modalOverlay,onClick:()=>y(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Edit Prompt: ",C?.p_code]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:C?.p_code,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(S,{name:"prompt-image-type",value:n.image_type,onChange:e=>r(s=>({...s,image_type:e||"crisis_map"})),options:se,keySelector:e=>e.image_type,labelSelector:e=>e.label})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-edit-prompt",variant:"tertiary",onClick:()=>{y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-prompt",variant:"primary",onClick:je,children:"Save Changes"})]})]})})}),de&&a.jsx("div",{className:l.modalOverlay,onClick:()=>N(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Add New ",ie==="crisis_map"?"Crisis Map":"Drone Image"," Prompt"]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:n.p_code,onChange:e=>r(s=>({...s,p_code:e||""})),placeholder:"e.g., CUSTOM_CRISIS_MAP_001",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),placeholder:"Enter prompt description...",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(h,{name:"prompt-image-type",value:n.image_type,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),placeholder:"Enter metadata extraction instructions...",className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-add-prompt",variant:"tertiary",onClick:()=>{N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-new-prompt",variant:"primary",onClick:xe,disabled:!n.p_code||!n.label,children:"Create Prompt"})]})]})})})]}):a.jsx(B,{children:a.jsxs("div",{className:"mx-auto max-w-md px-4 sm:px-6 lg:px-8 py-6 sm:py-10",children:[a.jsx("div",{className:"text-center mb-8",children:a.jsx(Fe,{level:2,children:"Admin Login"})}),a.jsxs("form",{onSubmit:Me,className:"space-y-6",children:[a.jsxs("div",{children:[a.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 mb-2",children:"Password"}),a.jsx(h,{id:"password",name:"password",type:"password",value:k,onChange:e=>O(e||""),placeholder:"Enter admin password",required:!0,className:"w-full"})]}),R&&a.jsx("div",{className:"bg-ifrcRed/10 border border-ifrcRed/20 rounded-md p-3",children:a.jsx("p",{className:"text-sm text-ifrcRed font-medium",children:R})}),a.jsx("div",{className:"flex justify-center",children:a.jsx(f,{withInternalPadding:!0,className:"p-2",children:a.jsx(t,{name:"login",type:"submit",variant:"primary",size:2,disabled:D,children:D?"Logging in...":"Login"})})})]})]})})}export{ca as default};
 
1
+ import{r as d,j as a,N as B,F as we,O as h,z as f,n as t,G as S}from"./index-oPRJTRcN.js";import{u as Fe}from"./useAdmin-DytkUHQc.js";const ke="_adminContainer_j11pf_5",Te="_adminHeader_j11pf_13",Ae="_adminSection_j11pf_20",Pe="_modelSelectionArea_j11pf_29",Ie="_modelSelectionRow_j11pf_36",$e="_modelsTable_j11pf_89",Le="_promptSubsection_j11pf_97",Ee="_promptSubsectionTitle_j11pf_109",Be="_modelCode_j11pf_152",Oe="_modelId_j11pf_157",Re="_modelActions_j11pf_163",De="_addModelButtonContainer_j11pf_169",Ue="_addModelForm_j11pf_177",ze="_addModelFormTitle_j11pf_185",He="_addModelFormGrid_j11pf_193",Ge="_addModelFormField_j11pf_206",Ve="_addModelFormCheckbox_j11pf_250",Je="_addModelFormActions_j11pf_268",Ke="_modalOverlay_j11pf_277",We="_modalContent_j11pf_291",qe="_modalBody_j11pf_302",Ye="_modalTitle_j11pf_312",Qe="_modalText_j11pf_320",Xe="_modalTextLeft_j11pf_332",Ze="_modalButtons_j11pf_355",ea="_modalForm_j11pf_363",aa="_formField_j11pf_372",la="_formLabel_j11pf_376",sa="_formInput_j11pf_385",oa="_textarea_j11pf_407",l={adminContainer:ke,adminHeader:Te,adminSection:Ae,modelSelectionArea:Pe,modelSelectionRow:Ie,modelsTable:$e,promptSubsection:Le,promptSubsectionTitle:Ee,modelCode:Be,modelId:Oe,modelActions:Re,addModelButtonContainer:De,addModelForm:Ue,addModelFormTitle:ze,addModelFormGrid:He,addModelFormField:Ge,addModelFormCheckbox:Ve,addModelFormActions:Je,modalOverlay:Ke,modalContent:We,modalBody:qe,modalTitle:Ye,modalText:Qe,modalTextLeft:Xe,modalButtons:Ze,modalForm:ea,formField:aa,formLabel:la,formInput:sa,textarea:oa},w="selectedVlmModel";function ia(){const{isAuthenticated:F,isLoading:X,login:Z,logout:ee}=Fe(),[k,O]=d.useState(""),[R,u]=d.useState(""),[D,U]=d.useState(!1),[z,H]=d.useState([]),[ae,b]=d.useState(""),[G,le]=d.useState([]),[se,oe]=d.useState([]),[te,y]=d.useState(!1),[de,N]=d.useState(!1),[ie,T]=d.useState(null),[C,A]=d.useState(null),[n,r]=d.useState({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1}),[V,P]=d.useState(!1),[ne,I]=d.useState(!1),[$,L]=d.useState(null),[o,c]=d.useState({m_code:"",label:"",model_type:"custom",provider:"huggingface",model_id:"",is_available:!1}),[re,M]=d.useState(!1),[ce,E]=d.useState(!1),[me,p]=d.useState(!1),[J,K]=d.useState(""),[he,pe]=d.useState(""),[_e,_]=d.useState(""),[ue,j]=d.useState(""),x=d.useCallback(()=>{fetch("/api/models").then(e=>e.json()).then(e=>{console.log("Models data received:",e),H(e.models||[]);const s=localStorage.getItem(w);if(e.models&&e.models.length>0)if(s==="random")b("random");else if(s&&e.models.find(i=>i.m_code===s&&i.is_available))b(s);else{const i=e.models.find(m=>m.is_available)||e.models[0];b(i.m_code),localStorage.setItem(w,i.m_code)}}).catch(()=>{})},[]),v=d.useCallback(()=>{console.log("=== fetchPrompts called ==="),fetch("/api/prompts").then(e=>e.json()).then(e=>{console.log("Prompts data received:",e),le(e||[]),console.log("State update triggered with:",e||[])}).catch(e=>{console.error("Error fetching prompts:",e)})},[]),W=d.useCallback(()=>{fetch("/api/image-types").then(e=>e.json()).then(e=>{console.log("Image types data received:",e),oe(e||[])}).catch(()=>{})},[]);d.useEffect(()=>{F&&(x(),v(),W())},[F,x,v,W]);const q=e=>{A(e),r({p_code:e.p_code,label:e.label||"",metadata_instructions:e.metadata_instructions||"",image_type:e.image_type||"crisis_map",is_active:e.is_active||!1}),y(!0)},je=async()=>{try{if(!C){alert("No prompt selected for editing");return}const e=await fetch(`/api/prompts/${C.p_code}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({label:n.label,metadata_instructions:n.metadata_instructions,image_type:n.image_type,is_active:n.is_active})});if(e.ok)v(),y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to update prompt: ${s.error||"Unknown error"}`)}}catch{alert("Error updating prompt")}},Y=async(e,s)=>{try{const i=await fetch(`/api/prompts/${e}/toggle-active?image_type=${s}`,{method:"POST",headers:{"Content-Type":"application/json"}});if(i.ok)v();else{const m=await i.json();alert(`Failed to toggle prompt active status: ${m.detail||"Unknown error"}`)}}catch{alert("Error toggling prompt active status")}},Q=e=>{T(e),r({p_code:"",label:"",metadata_instructions:"",image_type:e,is_active:!1}),N(!0)},xe=async()=>{try{const e=await fetch("/api/prompts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(e.ok)v(),N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1});else{const s=await e.json();alert(`Failed to create prompt: ${s.detail||"Unknown error"}`)}}catch{alert("Error creating prompt")}},ve=async(e,s)=>{try{const i=await fetch(`/api/models/${e}/toggle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({is_available:!s})});if(i.ok)H(m=>m.map(g=>g.m_code===e?{...g,is_available:!s}:g));else{const m=await i.json();alert(`Failed to toggle model availability: ${m.error||"Unknown error"}`)}}catch{alert("Error toggling model availability")}},ge=e=>{b(e),e==="random"?localStorage.setItem(w,"random"):localStorage.setItem(w,e)},fe=async()=>{try{const e=await fetch("/api/admin/models",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("adminToken")}`},body:JSON.stringify(o)});if(e.ok){const s=`
2
  Model "${o.label}" added successfully!
3
 
4
  ⚠️ IMPORTANT: Model will NOT work until you complete these steps:
 
42
  ${JSON.stringify(e,null,2)}`:s=`Prompts Response:
43
 
44
  Unexpected data type: ${typeof e}
45
+ Value: ${e}`,_(s),j(i),p(!0)}).catch(e=>{console.error("Schemas Error:",e);const s=`Failed to fetch prompts: ${e.message||"Unknown error"}`;_(s),j("Schemas Error"),p(!0)})},children:"View Schemas"})]})})]})]}),re&&a.jsx("div",{className:l.modalOverlay,onClick:()=>M(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Delete Model"}),a.jsxs("p",{className:l.modalText,children:["Are you sure you want to delete model ",a.jsx("span",{className:l.modelCode,children:J}),"? This action cannot be undone."]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-delete",variant:"tertiary",onClick:()=>M(!1),children:"Cancel"}),a.jsx(t,{name:"confirm-delete",variant:"secondary",onClick:Ce,children:"Delete"})]})]})})}),ce&&a.jsx("div",{className:l.modalOverlay,onClick:()=>E(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:"Model Added Successfully!"}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:he}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-setup-instructions",variant:"secondary",onClick:()=>E(!1),children:"Got it!"})})]})})}),me&&a.jsx("div",{className:l.modalOverlay,onClick:()=>p(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsx("h3",{className:l.modalTitle,children:ue}),a.jsx("div",{className:`${l.modalText} ${l.modalTextLeft}`,children:a.jsx("div",{className:"whitespace-pre-wrap font-mono text-sm leading-relaxed",children:_e})}),a.jsx("div",{className:l.modalButtons,children:a.jsx(t,{name:"close-test-results",variant:"secondary",onClick:()=>p(!1),children:"Close"})})]})})}),te&&a.jsx("div",{className:l.modalOverlay,onClick:()=>y(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Edit Prompt: ",C?.p_code]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:C?.p_code,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(S,{name:"prompt-image-type",value:n.image_type,onChange:e=>r(s=>({...s,image_type:e||"crisis_map"})),options:se,keySelector:e=>e.image_type,labelSelector:e=>e.label})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-edit-prompt",variant:"tertiary",onClick:()=>{y(!1),A(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-prompt",variant:"primary",onClick:je,children:"Save Changes"})]})]})})}),de&&a.jsx("div",{className:l.modalOverlay,onClick:()=>N(!1),children:a.jsx("div",{className:l.modalContent,onClick:e=>e.stopPropagation(),children:a.jsxs("div",{className:l.modalBody,children:[a.jsxs("h3",{className:l.modalTitle,children:["Add New ",ie==="crisis_map"?"Crisis Map":"Drone Image"," Prompt"]}),a.jsxs("div",{className:l.modalForm,children:[a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Code:"}),a.jsx(h,{name:"prompt-code",value:n.p_code,onChange:e=>r(s=>({...s,p_code:e||""})),placeholder:"e.g., CUSTOM_CRISIS_MAP_001",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Label:"}),a.jsx(h,{name:"prompt-label",value:n.label,onChange:e=>r(s=>({...s,label:e||""})),placeholder:"Enter prompt description...",className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Image Type:"}),a.jsx(h,{name:"prompt-image-type",value:n.image_type,onChange:()=>{},disabled:!0,className:l.formInput})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Active Status:"}),a.jsxs("div",{className:l.addModelFormCheckbox,children:[a.jsx("input",{type:"checkbox",checked:n.is_active,onChange:e=>r(s=>({...s,is_active:e.target.checked}))}),a.jsx("span",{children:"Active for this image type"})]})]}),a.jsxs("div",{className:l.formField,children:[a.jsx("label",{className:l.formLabel,children:"Metadata Instructions:"}),a.jsx("textarea",{name:"prompt-instructions",value:n.metadata_instructions,onChange:e=>r(s=>({...s,metadata_instructions:e.target.value})),placeholder:"Enter metadata extraction instructions...",className:`${l.formInput} ${l.textarea}`,rows:8})]})]}),a.jsxs("div",{className:l.modalButtons,children:[a.jsx(t,{name:"cancel-add-prompt",variant:"tertiary",onClick:()=>{N(!1),T(null),r({p_code:"",label:"",metadata_instructions:"",image_type:"crisis_map",is_active:!1})},children:"Cancel"}),a.jsx(t,{name:"save-new-prompt",variant:"primary",onClick:xe,disabled:!n.p_code||!n.label,children:"Create Prompt"})]})]})})})]}):a.jsx(B,{children:a.jsxs("div",{className:"mx-auto max-w-md px-4 sm:px-6 lg:px-8 py-6 sm:py-10",children:[a.jsx("div",{className:"text-center mb-8",children:a.jsx(we,{level:2,children:"Admin Login"})}),a.jsxs("form",{onSubmit:Me,className:"space-y-6",children:[a.jsxs("div",{children:[a.jsx("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 mb-2",children:"Password"}),a.jsx(h,{id:"password",name:"password",type:"password",value:k,onChange:e=>O(e||""),placeholder:"Enter admin password",required:!0,className:"w-full"})]}),R&&a.jsx("div",{className:"bg-ifrcRed/10 border border-ifrcRed/20 rounded-md p-3",children:a.jsx("p",{className:"text-sm text-ifrcRed font-medium",children:R})}),a.jsx("div",{className:"flex justify-center",children:a.jsx(f,{withInternalPadding:!0,className:"p-2",children:a.jsx(t,{name:"login",type:"submit",variant:"primary",size:2,disabled:D,children:D?"Logging in...":"Login"})})})]})]})})}export{ia as default};
{py_backend/static/assets → py—backend/static}/AdminPage-VgSjQ50W.css RENAMED
File without changes
{py_backend/static/assets → py—backend/static}/ExportModal-BoB3JpqO.css RENAMED
File without changes
py—backend/static/ExportModal-CrJtybXx.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{r as n,j as e,M as P,P as W,o as F,S as A,x as H,z as b,n as v,O as V,G as z,T as G,_ as O,L as q}from"./index-oPRJTRcN.js";const R=({title:c,titleId:i,...r})=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":i},r),c?n.createElement("title",{id:i},c):null,n.createElement("g",{clipPath:"url(#checkbox-indeterminate-line_svg__a)"},n.createElement("path",{d:"M4 3h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Zm1 2v14h14V5H5Zm2 6h10v2H7v-2Z"})),n.createElement("defs",null,n.createElement("clipPath",{id:"checkbox-indeterminate-line_svg__a"},n.createElement("path",{d:"M0 0h24v24H0z"})))),$=({title:c,titleId:i,...r})=>n.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":i},r),c?n.createElement("title",{id:i},c):null,n.createElement("g",{clipPath:"url(#filter-line_svg__a)"},n.createElement("path",{d:"M9 13.5 4 6H3V4h18v2h-1l-5 7.5V22H9v-8.5ZM6.404 6 11 12.894V20h2v-7.106L17.596 6H6.404Z"})),n.createElement("defs",null,n.createElement("clipPath",{id:"filter-line_svg__a"},n.createElement("path",{d:"M0 0h24v24H0z"}))));function D(c){const{className:i,indeterminate:r,value:j}=c;return e.jsxs(e.Fragment,{children:[r&&e.jsx(R,{className:i}),j&&!r&&e.jsx(P,{className:i}),!j&&!r&&e.jsx(W,{className:i})]})}const U="_checkbox_12g7n_1",Z="_with-background_12g7n_7",Y="_checkmark-container_12g7n_12",J="_input_12g7n_18",K="_content_12g7n_33",Q="_description_12g7n_40",X="_checked_12g7n_45",L="_checkmark_12g7n_12",ee="_disabled-checkbox_12g7n_58",m={checkbox:U,withBackground:Z,checkmarkContainer:Y,input:J,content:K,description:Q,checked:X,checkmark:L,disabledCheckbox:ee};function B(c){const{className:i,checkmark:r=D,checkmarkClassName:j,checkmarkContainerClassName:I,disabled:t,error:p,indeterminate:N,inputClassName:E,invertedLogic:d=!1,label:y,labelContainerClassName:_,name:w,onChange:f,readOnly:h,tooltip:k,value:x,description:u,withBackground:T,...S}=c,M=n.useCallback(s=>{const o=s.currentTarget.checked;f(d?!o:o,w)},[w,f,d]),C=d?!x:x,g=F(m.checkbox,i,!N&&C&&m.checked,T&&m.withBackground,t&&m.disabledCheckbox,h&&m.readOnly);return e.jsxs("label",{className:g,title:k,children:[e.jsxs("div",{className:F(m.checkmarkContainer,I),children:[e.jsx("input",{onChange:M,className:F(m.input,E),type:"checkbox",checked:C??!1,disabled:t||h,readOnly:h,...S}),e.jsx(r,{className:F(m.checkmark,j),value:C??!1,indeterminate:N,"aria-hidden":"true"})]}),(y||u)&&e.jsxs("div",{className:m.content,children:[y&&e.jsx("div",{className:_,children:y}),u&&e.jsx("div",{className:m.description,children:u})]}),p&&e.jsx(A,{children:p})]})}function _e({sources:c,types:i,regions:r,countries:j,imageTypes:I,isLoadingFilters:t=!1}){const[p,N]=n.useState(!1),{search:E,setSearch:d,srcFilter:y,setSrcFilter:_,catFilter:w,setCatFilter:f,regionFilter:h,setRegionFilter:k,countryFilter:x,setCountryFilter:u,imageTypeFilter:T,setImageTypeFilter:S,uploadTypeFilter:M,setUploadTypeFilter:C,showReferenceExamples:g,setShowReferenceExamples:s,clearAllFilters:o}=H();return e.jsxs("div",{className:"mb-6 space-y-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-4",children:[e.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(v,{name:"toggle-filters",variant:"secondary",onClick:()=>N(!p),className:"whitespace-nowrap",title:p?"Hide Filters":"Show Filters",children:e.jsx($,{className:"w-4 h-4"})})}),e.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:e.jsx(V,{name:"search",placeholder:"Search examples...",value:E,onChange:a=>d(a||"")})}),e.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:e.jsx(v,{name:"clear-filters",variant:"secondary",onClick:o,children:"Clear Filters"})})]}),p&&e.jsx("div",{className:"bg-white/20 backdrop-blur-sm rounded-md p-4",children:e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(z,{name:"source",placeholder:t?"Loading...":"All Sources",options:c,value:y||null,onChange:a=>_(a||""),keySelector:a=>a.s_code,labelSelector:a=>a.label,required:!1,disabled:t})}),e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(z,{name:"category",placeholder:t?"Loading...":"All Categories",options:i,value:w||null,onChange:a=>f(a||""),keySelector:a=>a.t_code,labelSelector:a=>a.label,required:!1,disabled:t})}),e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(z,{name:"region",placeholder:t?"Loading...":"All Regions",options:r,value:h||null,onChange:a=>k(a||""),keySelector:a=>a.r_code,labelSelector:a=>a.label,required:!1,disabled:t})}),e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(G,{name:"country",placeholder:t?"Loading...":"All Countries",options:j,value:x?[x]:[],onChange:a=>u(a[0]||""),keySelector:a=>a.c_code,labelSelector:a=>a.label,disabled:t})}),e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(z,{name:"imageType",placeholder:t?"Loading...":"All Image Types",options:I,value:T||null,onChange:a=>S(a||""),keySelector:a=>a.image_type,labelSelector:a=>a.label,required:!1,disabled:t})}),e.jsx(b,{withInternalPadding:!0,className:"p-2",children:e.jsx(z,{name:"uploadType",placeholder:"All Upload Types",options:[{key:"single",label:"Single Upload"},{key:"multiple",label:"Multiple Upload"}],value:M||null,onChange:a=>C(a||""),keySelector:a=>a.key,labelSelector:a=>a.label,required:!1,disabled:!1})})]})})]})}const ae="_fullSizeModalOverlay_cyz3b_1",le="_fullSizeModalContent_cyz3b_29",te="_ratingWarningContent_cyz3b_53",se="_ratingWarningTitle_cyz3b_65",ne="_exportModeSection_cyz3b_133",ie="_splitConfigSection_cyz3b_143",re="_splitConfigTitle_cyz3b_153",ce="_splitInputsContainer_cyz3b_167",oe="_splitInputGroup_cyz3b_183",de="_splitInputLabel_cyz3b_197",me="_splitInput_cyz3b_167",pe="_splitTotal_cyz3b_247",he="_splitTotalError_cyz3b_261",xe="_checkboxesContainer_cyz3b_271",ue="_ratingWarningButtons_cyz3b_289",ge="_singleExportMessage_cyz3b_309",be="_navigateButtonContainer_cyz3b_333",ve="_loadingOverlay_cyz3b_349",l={fullSizeModalOverlay:ae,fullSizeModalContent:le,ratingWarningContent:te,ratingWarningTitle:se,exportModeSection:ne,splitConfigSection:ie,splitConfigTitle:re,splitInputsContainer:ce,splitInputGroup:oe,splitInputLabel:de,splitInput:me,splitTotal:pe,splitTotalError:he,checkboxesContainer:xe,ratingWarningButtons:ue,singleExportMessage:ge,navigateButtonContainer:be,loadingOverlay:ve};function fe({isOpen:c,onClose:i,onExport:r,crisisMapsCount:j,droneImagesCount:I,isLoading:t=!1,exportSuccess:p=!1,variant:N="bulk",onNavigateAndExport:E}){const[d,y]=n.useState("standard"),[_,w]=n.useState(80),[f,h]=n.useState(10),[k,x]=n.useState(10),[u,T]=n.useState(!0),[S,M]=n.useState(!0),C=()=>{if(N==="single"){r(d,["crisis_map","drone_image"]);return}if(!u&&!S){alert("Please select at least one image type to export.");return}const s=[];u&&s.push("crisis_map"),S&&s.push("drone_image"),r(d,s)},g=()=>{i()};return c?N==="single"?e.jsx("div",{className:l.fullSizeModalOverlay,onClick:g,children:e.jsxs("div",{className:l.fullSizeModalContent,onClick:s=>s.stopPropagation(),children:[t&&e.jsx("div",{className:l.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(O,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),p&&e.jsx("div",{className:l.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(v,{name:"close-export-success",onClick:g,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:l.ratingWarningContent,children:[e.jsx("h3",{className:l.ratingWarningTitle,children:"Export Single Item"}),e.jsxs("div",{className:l.singleExportMessage,children:[e.jsx("p",{children:"This only exports the 1 item currently on display."}),e.jsx("p",{children:'You may export the entire dataset from the "list view" here:'})]}),e.jsx("div",{className:l.navigateButtonContainer,children:e.jsx(v,{name:"navigate-to-list",variant:"secondary",onClick:E,children:"Navigate to List View"})}),e.jsxs("div",{className:l.ratingWarningButtons,children:[e.jsx(v,{name:"continue-export",onClick:C,disabled:t,children:t?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(O,{className:"text-white"}),"Exporting..."]}):"Continue"}),e.jsx(v,{name:"cancel-export",variant:"tertiary",onClick:g,disabled:t,children:"Cancel"})]})]})]})}):e.jsx("div",{className:l.fullSizeModalOverlay,onClick:g,children:e.jsxs("div",{className:l.fullSizeModalContent,onClick:s=>s.stopPropagation(),children:[t&&e.jsx("div",{className:l.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx(O,{className:"text-ifrcRed"}),e.jsx("div",{className:"text-lg font-medium",children:"Exporting..."}),e.jsx("div",{className:"text-sm text-gray-600",children:"This might take a few seconds"})]})}),p&&e.jsx("div",{className:l.loadingOverlay,children:e.jsxs("div",{className:"flex flex-col items-center gap-4",children:[e.jsx("div",{className:"text-lg font-medium",children:"Export Successful!"}),e.jsx("div",{className:"text-sm text-gray-600",children:"Your dataset has been downloaded"}),e.jsx(v,{name:"close-export-success",onClick:g,className:"mt-4",children:"Close"})]})}),e.jsxs("div",{className:l.ratingWarningContent,children:[e.jsx("h3",{className:l.ratingWarningTitle,children:"Export Dataset"}),e.jsx("div",{className:l.exportModeSection,children:e.jsx(q,{name:"export-mode",value:d,onChange:s=>{(s==="standard"||s==="fine-tuning")&&y(s)},options:[{key:"standard",label:"Standard"},{key:"fine-tuning",label:"Fine-tuning"}],keySelector:s=>s.key,labelSelector:s=>s.label,disabled:t})}),d==="fine-tuning"&&e.jsxs("div",{className:l.splitConfigSection,children:[e.jsx("div",{className:l.splitConfigTitle,children:"Dataset Split Configuration"}),e.jsxs("div",{className:l.splitInputsContainer,children:[e.jsxs("div",{className:l.splitInputGroup,children:[e.jsx("label",{htmlFor:"train-split",className:l.splitInputLabel,children:"Train (%)"}),e.jsx("input",{id:"train-split",type:"number",min:"0",max:"100",value:_,onChange:s=>{const o=parseInt(s.target.value)||0,a=100-o;a>=0&&(w(o),f+k>a&&(h(Math.floor(a/2)),x(a-Math.floor(a/2))))},className:l.splitInput,disabled:t})]}),e.jsxs("div",{className:l.splitInputGroup,children:[e.jsx("label",{htmlFor:"test-split",className:l.splitInputLabel,children:"Test (%)"}),e.jsx("input",{id:"test-split",type:"number",min:"0",max:"100",value:f,onChange:s=>{const o=parseInt(s.target.value)||0,a=100-_-o;a>=0&&(h(o),x(a))},className:l.splitInput,disabled:t})]}),e.jsxs("div",{className:l.splitInputGroup,children:[e.jsx("label",{htmlFor:"val-split",className:l.splitInputLabel,children:"Val (%)"}),e.jsx("input",{id:"val-split",type:"number",min:"0",max:"100",value:k,onChange:s=>{const o=parseInt(s.target.value)||0,a=100-_-o;a>=0&&(x(o),h(a))},className:l.splitInput,disabled:t})]})]}),_+f+k!==100&&e.jsx("div",{className:l.splitTotal,children:e.jsx("span",{className:l.splitTotalError,children:"Must equal 100%"})})]}),e.jsxs("div",{className:l.checkboxesContainer,children:[e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(B,{name:"crisis-maps",label:`Crisis Maps (${j} images)`,value:u,onChange:s=>T(s),disabled:t})}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsx(B,{name:"drone-images",label:`Drone Images (${I} images)`,value:S,onChange:s=>M(s),disabled:t})})]}),e.jsxs("div",{className:l.ratingWarningButtons,children:[e.jsx(v,{name:"confirm-export",onClick:C,disabled:t,children:t?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(O,{className:"text-white"}),"Exporting..."]}):"Export Selected"}),e.jsx(v,{name:"cancel-export",variant:"tertiary",onClick:g,disabled:t,children:"Cancel"})]})]})]})}):null}export{fe as E,_e as F};
py—backend/static/index-B1uKTNcW.css ADDED
@@ -0,0 +1 @@
 
 
1
+ ._title_1rjpr_1{color:inherit,}._expansion-indicator-cell-container_1rjpr_5,._timeline-cell-container_1rjpr_9{position:relative}._date-column_1rjpr_13{width:0%;min-width:7rem}._expand-button_1bf2c_1 ._icon_1bf2c_2{font-size:var(--go-ui-height-icon-multiplier)}._expansion-indicator_jys9u_1{display:flex;position:absolute;inset:0;align-items:center;flex-direction:column;width:100%;overflow:auto}._expansion-indicator_jys9u_1 ._end-border_jys9u_13,._expansion-indicator_jys9u_1 ._start-border_jys9u_14{flex-grow:1;background-color:var(--go-ui-color-separator);width:var(--go-ui-width-separator-thin)}._expansion-indicator_jys9u_1 ._indicator_jys9u_20{flex-shrink:0;border-radius:50%;background-color:var(--go-ui-color-primary-red);width:.8rem;height:.8rem}._expansion-indicator_jys9u_1._start_jys9u_14 ._start-border_jys9u_14,._expansion-indicator_jys9u_1._end_jys9u_13 ._end-border_jys9u_13,._expansion-indicator_jys9u_1._single_jys9u_40 ._end-border_jys9u_13,._expansion-indicator_jys9u_1._single_jys9u_40 ._start-border_jys9u_14{background-color:transparent}._timeline-header_1sebe_1 ._title_1sebe_2{display:flex;flex-grow:1;justify-content:space-between}._timeline-item_1g3u0_1{position:absolute;top:0;left:var(--go-ui-spacing-sm);width:calc(100% - 2 * var(--go-ui-spacing-sm));height:100%}._timeline-item_1g3u0_1 ._timeline-progress_1g3u0_8{position:absolute;top:50%;transform:translateY(-50%);border-radius:.25em;background-color:var(--go-ui-color-primary-red);height:.5rem}._timeline-item_1g3u0_1 ._today-marker_1g3u0_17{position:absolute;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-primary-blue);height:100%}._timeline-item_1g3u0_1 ._start-date-marker_1g3u0_23{position:absolute;left:0;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-separator);height:100%}._timeline-item_1g3u0_1 ._end-date-marker_1g3u0_30{position:absolute;right:0;border-left:var(--go-ui-width-separator-sm) dashed var(--go-ui-color-separator);height:100%}._tabSelector_vlxoe_1{display:flex;justify-content:center;margin:var(--go-ui-spacing-xl) 0}._summaryStats_vlxoe_7{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._progressSection_vlxoe_14{margin-top:var(--go-ui-spacing-lg);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._progressLabel_vlxoe_20{display:flex;justify-content:space-between;margin-bottom:var(--go-ui-spacing-sm);color:var(--go-ui-color-text);font-weight:var(--go-ui-font-weight-medium)}._chartGrid_vlxoe_28{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-xl)}._chartSection_vlxoe_34{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._chartContainer_vlxoe_40{display:flex;justify-content:center;align-items:center;min-height:300px;background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-lg)}._tableContainer_vlxoe_51,._modelPerformance_vlxoe_59{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);overflow:hidden;box-shadow:var(--go-ui-box-shadow-sm)}._loadingContainer_vlxoe_67{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--go-ui-color-gray-60);font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-medium)}._errorContainer_vlxoe_77{display:flex;align-items:center;justify-content:center;min-height:400px;color:var(--go-ui-color-negative);font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-medium)}@media (min-width: 1024px){._chartSection_vlxoe_34{grid-template-columns:1fr 1fr}}._userInteractionCards_vlxoe_96{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._userInteractionCard_vlxoe_96{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-xl);text-align:center;box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow .2s ease-in-out}._userInteractionCard_vlxoe_96:hover{box-shadow:var(--go-ui-box-shadow-md)}._userInteractionCardValue_vlxoe_116{font-size:var(--go-ui-font-size-2xl);font-weight:var(--go-ui-font-weight-bold);color:var(--go-ui-color-text);margin-bottom:var(--go-ui-spacing-sm)}._userInteractionCardLabel_vlxoe_123{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-text-secondary);margin-bottom:var(--go-ui-spacing-md);font-weight:var(--go-ui-font-weight-medium)}._userInteractionCardButton_vlxoe_130{width:100%}._userInteractionCard_vlxoe_96 ._chartContainer_vlxoe_40{min-height:200px;background-color:transparent;border:none;padding:var(--go-ui-spacing-md);margin-bottom:var(--go-ui-spacing-lg)}._userInteractionCard_vlxoe_96:nth-child(3) ._chartContainer_vlxoe_40{width:110%;margin-left:-5%}._summaryStatsCards_vlxoe_148{display:grid;grid-template-columns:1fr;gap:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._summaryStatsCard_vlxoe_148{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);padding:var(--go-ui-spacing-xl);text-align:center;box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow .2s ease-in-out}._summaryStatsCard_vlxoe_148:hover{box-shadow:var(--go-ui-box-shadow-md)}._summaryStatsCardValue_vlxoe_169{font-size:var(--go-ui-font-size-2xl);font-weight:var(--go-ui-font-weight-bold);color:var(--go-ui-color-text);margin-bottom:var(--go-ui-spacing-sm)}._summaryStatsCardLabel_vlxoe_176{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-text-secondary)}@media (min-width: 768px){._userInteractionCards_vlxoe_96{grid-template-columns:repeat(3,1fr)}._summaryStatsCards_vlxoe_148{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){._summaryStats_vlxoe_7{grid-template-columns:1fr;gap:var(--go-ui-spacing-md)}._chartContainer_vlxoe_40{min-height:250px;padding:var(--go-ui-spacing-md)}._tabSelector_vlxoe_1{margin:var(--go-ui-spacing-lg) 0}}
py—backend/static/index-B3hZqJuM.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jszip.min-DHOAM-1s.js","assets/index-oPRJTRcN.js","assets/index-DkIjYZRi.css"])))=>i.map(i=>d[i]);
2
+ import{H as Xe,v as Ye,j as a,N as X,n as T,r as g,x as ea,_ as ve,L as aa,z as E,I as se,J as ie,D as ta,K as sa,B as ia}from"./index-oPRJTRcN.js";import{u as na}from"./useAdmin-DytkUHQc.js";import{F as oa,E as ra}from"./ExportModal-CrJtybXx.js";const la="_tabSelector_usssr_1",ca="_imageContainer_usssr_12",da="_imagePlaceholder_usssr_33",ga="_metadataTags_usssr_45",ma="_metadataTag_usssr_45",ua="_captionContainer_usssr_67",pa="_captionText_usssr_74",fa="_gridLayout_usssr_131",ha="_detailsSection_usssr_155",_a="_loadingContainer_usssr_161",xa="_errorContainer_usssr_171",ya="_fullSizeModalOverlay_usssr_205",va="_fullSizeModalContent_usssr_219",wa="_ratingWarningContent_usssr_230",Ca="_ratingWarningTitle_usssr_236",ja="_ratingWarningText_usssr_243",Ia="_ratingWarningButtons_usssr_250",Na="_carouselContainer_usssr_365",ba="_carouselImageWrapper_usssr_370",Sa="_carouselImage_usssr_370",La="_carouselNavigation_usssr_393",Da="_carouselButton_usssr_405",ka="_carouselIndicators_usssr_429",Ma="_carouselIndicator_usssr_429",Ta="_carouselIndicatorActive_usssr_458",Fa="_singleImageContainer_usssr_488",Ea="_viewImageButtonContainer_usssr_494",p={tabSelector:la,imageContainer:ca,imagePlaceholder:da,metadataTags:ga,metadataTag:ma,captionContainer:ua,captionText:pa,gridLayout:fa,detailsSection:ha,loadingContainer:_a,errorContainer:xa,fullSizeModalOverlay:ya,fullSizeModalContent:va,ratingWarningContent:wa,ratingWarningTitle:Ca,ratingWarningText:ja,ratingWarningButtons:Ia,carouselContainer:Na,carouselImageWrapper:ba,carouselImage:Sa,carouselNavigation:La,carouselButton:Da,carouselIndicators:ka,carouselIndicator:Ma,carouselIndicatorActive:Ta,singleImageContainer:Fa,viewImageButtonContainer:Ea};function at(){const{mapId:u}=Xe(),y=Ye(),{isAuthenticated:ne}=na();console.log("MapDetailsPage: Current URL:",window.location.href),console.log("MapDetailsPage: Hash:",window.location.hash),console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId length:",u?.length),console.log("MapDetailsPage: mapId value:",JSON.stringify(u));const we=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;if(!u||u==="undefined"||u==="null"||u.trim()===""||!we.test(u))return a.jsx(X,{children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center py-12",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Invalid Map ID"}),a.jsx("div",{children:"The map ID provided is not valid."}),a.jsxs("div",{className:"text-sm text-gray-500 mt-2",children:['Debug Info: mapId = "',u,'" (type: ',typeof u,")"]}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})});const[oe,Ce]=g.useState("mapDetails"),[e,Y]=g.useState(null),[W,P]=g.useState(!0),[re,O]=g.useState(null),[le,je]=g.useState([]),[ce,Ie]=g.useState([]),[de,Ne]=g.useState([]),[ge,be]=g.useState([]),[Se,Le]=g.useState([]),[De,ke]=g.useState(!1),[Me,Te]=g.useState(!1),[B,q]=g.useState(!1),[Fe,G]=g.useState(!1),[me,K]=g.useState(!1),[Ee,ee]=g.useState(!1),[Re,ae]=g.useState(!1),[Ra,$a]=g.useState("standard"),[R,Pa]=g.useState(80),[J,Aa]=g.useState(10),[za,Oa]=g.useState(10),[Ua,Wa]=g.useState(!0),[Ba,Ja]=g.useState(!0),[Z,Q]=g.useState(!1),[$e,ue]=g.useState(!1),[Pe,pe]=g.useState(null),[D,H]=g.useState([]),[A,z]=g.useState(0),[V,fe]=g.useState(!1),{search:d,setSearch:Ha,srcFilter:v,setSrcFilter:Va,catFilter:w,setCatFilter:qa,regionFilter:C,setRegionFilter:Ga,countryFilter:j,setCountryFilter:Ka,imageTypeFilter:I,setImageTypeFilter:Za,uploadTypeFilter:N,setUploadTypeFilter:Qa,showReferenceExamples:k,setShowReferenceExamples:Ae,clearAllFilters:ze}=ea(),Oe=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],he=g.useCallback(async t=>{if(console.log("fetchMapData called with id:",t),console.log("fetchMapData id type:",typeof t),!t||t==="undefined"||t==="null"||t.trim()===""){console.log("fetchMapData: Invalid ID detected:",t),O("Invalid Map ID"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)){console.log("fetchMapData: Invalid UUID format:",t),O("Invalid Map ID format"),P(!1);return}console.log("fetchMapData: Making API call for id:",t),q(!0),P(!0);try{const f=await fetch(`/api/images/${t}`);if(!f.ok)throw new Error("Map not found");const s=await f.json();if(Y(s),s.all_image_ids&&s.all_image_ids.length>1)await _e(s.all_image_ids);else if(s.image_count&&s.image_count>1){console.log("Multi-upload detected but no all_image_ids, trying grouped endpoint");try{const l=await fetch("/api/images/grouped");if(l.ok){const r=(await l.json()).find(c=>c.all_image_ids&&c.all_image_ids.includes(s.image_id));r&&r.all_image_ids?await _e(r.all_image_ids):(H([s]),z(0))}else H([s]),z(0)}catch(l){console.error("Failed to fetch from grouped endpoint:",l),H([s]),z(0)}}else H([s]),z(0);await te(t)}catch(f){O(f instanceof Error?f.message:"Unknown error occurred")}finally{P(!1),q(!1)}},[]),_e=g.useCallback(async t=>{console.log("fetchAllImages called with imageIds:",t),fe(!0);try{const o=t.map(async s=>{const l=await fetch(`/api/images/${s}`);if(!l.ok)throw new Error(`Failed to fetch image ${s}`);return l.json()}),f=await Promise.all(o);H(f),z(0),console.log("fetchAllImages: Loaded",f.length,"images")}catch(o){console.error("fetchAllImages error:",o),O(o instanceof Error?o.message:"Failed to load all images")}finally{fe(!1)}},[]),Ue=g.useCallback(()=>{D.length>1&&z(t=>t>0?t-1:D.length-1)},[D.length]),We=g.useCallback(()=>{D.length>1&&z(t=>t<D.length-1?t+1:0)},[D.length]),Be=g.useCallback(t=>{t>=0&&t<D.length&&z(t)},[D.length]),xe=g.useCallback(t=>{const o=t||(D.length>0?D[A]:e);o&&(pe(o),ue(!0))},[D,A,e]),Je=g.useCallback(()=>{ue(!1),pe(null)},[]);g.useEffect(()=>{if(console.log("MapDetailsPage: mapId from useParams:",u),console.log("MapDetailsPage: mapId type:",typeof u),console.log("MapDetailsPage: mapId value:",u),!u||u==="undefined"||u==="null"||u.trim()===""||u===void 0||u===null){console.log("MapDetailsPage: Invalid mapId, setting error"),O("Map ID is required"),P(!1);return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("MapDetailsPage: Invalid UUID format:",u),O("Invalid Map ID format"),P(!1);return}console.log("MapDetailsPage: Fetching data for mapId:",u),he(u)},[u,he]),g.useEffect(()=>{if(!e||W||Z)return;if(!u||u==="undefined"||u==="null"||u.trim()===""){console.log("Auto-navigation skipped: Invalid mapId");return}if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(u)){console.log("Auto-navigation skipped: Invalid mapId format");return}(()=>{const f=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),s=!v||e.source===v,l=!w||e.event_type===w,i=!C||e.countries.some(M=>M.r_code===C),r=!j||e.countries.some(M=>M.c_code===j),c=!I||e.image_type===I,n=!k||e.starred===!0,x=f&&s&&l&&i&&r&&c&&n;return console.log("Auto-navigation check:",{mapId:u,search:d,srcFilter:v,catFilter:w,regionFilter:C,countryFilter:j,imageTypeFilter:I,showReferenceExamples:k,matchesSearch:f,matchesSource:s,matchesCategory:l,matchesRegion:i,matchesCountry:r,matchesImageType:c,matchesReferenceExamples:n,matches:x}),x})()||(console.log("Current map does not match filters, looking for first matching item"),fetch("/api/images").then(f=>f.json()).then(f=>{console.log("Auto-navigation: Received images from API:",f.length),console.log("Auto-navigation: First few images:",f.slice(0,3).map(l=>({image_id:l.image_id,title:l.title})));const s=f.find(l=>{const i=!d||l.title?.toLowerCase().includes(d.toLowerCase())||l.generated?.toLowerCase().includes(d.toLowerCase())||l.source?.toLowerCase().includes(d.toLowerCase())||l.event_type?.toLowerCase().includes(d.toLowerCase()),r=!v||l.source===v,c=!w||l.event_type===w,n=!C||l.countries?.some(m=>m.r_code===C),x=!j||l.countries?.some(m=>m.c_code===j),M=!I||l.image_type===I,S=!k||l.starred===!0;return i&&r&&c&&n&&x&&M&&S});console.log("Auto-navigation: Found first matching image:",s?{image_id:s.image_id,title:s.title,source:s.source}:"No matching image found"),s&&s.image_id&&s.image_id!=="undefined"&&s.image_id!=="null"&&s.image_id.trim()!==""&&s.image_id!==u&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s.image_id)?(console.log("Auto-navigating to:",s.image_id),y(`/map/${s.image_id}`)):console.error("Auto-navigation blocked: Invalid image_id format:",s.image_id))}).catch(console.error))},[e,d,v,w,C,j,I,k,u,y,W,Z]);const te=async t=>{if(!(!t||t==="undefined"||t==="null"||t.trim()===""))try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.findIndex(i=>i.image_id===t);ke(s.length>1&&l>0),Te(s.length>1&&l<s.length-1)}}catch(o){console.error("Failed to check navigation availability:",o)}},ye=async t=>{if(!B){q(!0);try{const o=await fetch("/api/images/grouped");if(o.ok){const f=await o.json(),s=f.filter(n=>{const x=!d||n.title?.toLowerCase().includes(d.toLowerCase())||n.generated?.toLowerCase().includes(d.toLowerCase())||n.source?.toLowerCase().includes(d.toLowerCase())||n.event_type?.toLowerCase().includes(d.toLowerCase()),M=!v||n.source===v,S=!w||n.event_type===w,m=!C||n.countries?.some($=>$.r_code===C),b=!j||n.countries?.some($=>$.c_code===j),_=!I||n.image_type===I,L=!N||N==="single"&&(!n.image_count||n.image_count<=1)||N==="multiple"&&n.image_count&&n.image_count>1,U=!k||n.starred===!0;return x&&M&&S&&m&&b&&_&&L&&U});if(s.findIndex(n=>n.image_id===u)===-1){const n=f.find(x=>x.image_id===u);n&&s.push(n)}const i=s.findIndex(n=>n.image_id===u);if(i===-1){console.error("Current image not found in filtered list");return}let r;t==="previous"?r=i>0?i-1:s.length-1:r=i<s.length-1?i+1:0;const c=s[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""&&(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Carousel navigating to:",c.image_id),y(`/map/${c.image_id}`)):console.error("Carousel navigation blocked: Invalid image_id format:",c.image_id))}}catch(o){console.error("Failed to navigate to item:",o)}finally{q(!1)}}};g.useEffect(()=>{e&&u&&!W&&!Z&&te(u)},[e,u,d,v,w,C,j,I,N,k,W,Z,te]),g.useEffect(()=>{Promise.all([fetch("/api/sources").then(t=>t.json()),fetch("/api/types").then(t=>t.json()),fetch("/api/image-types").then(t=>t.json()),fetch("/api/regions").then(t=>t.json()),fetch("/api/countries").then(t=>t.json())]).then(([t,o,f,s,l])=>{je(t),Ie(o),Ne(f),be(s),Le(l)}).catch(console.error)},[]);const He=async()=>{e&&G(!0)},Ve=async()=>{if(e)try{(await fetch(`/api/images/${e.image_id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({starred:!e.starred})})).ok?Y(o=>o?{...o,starred:!o.starred}:null):console.error("Failed to toggle starred status")}catch(t){console.error("Error toggling starred status:",t)}},qe=async()=>{if(e){Q(!0);try{if(console.log("Deleting image with ID:",e.image_id),(await fetch(`/api/images/${e.image_id}`,{method:"DELETE"})).ok){Y(o=>o?{...o,starred:!o.starred}:null),G(!1);try{const o=await fetch("/api/images/grouped");if(o.ok){const s=(await o.json()).filter(i=>{const r=!d||i.title?.toLowerCase().includes(d.toLowerCase())||i.generated?.toLowerCase().includes(d.toLowerCase())||i.source?.toLowerCase().includes(d.toLowerCase())||i.event_type?.toLowerCase().includes(d.toLowerCase()),c=!v||i.source===v,n=!w||i.event_type===w,x=!C||i.countries?.some(_=>_.r_code===C),M=!j||i.countries?.some(_=>_.c_code===j),S=!I||i.image_type===I,m=!N||N==="single"&&(!i.image_count||i.image_count<=1)||N==="multiple"&&i.image_count&&i.image_count>1,b=!k||i.starred===!0;return r&&c&&n&&x&&M&&S&&m&&b}),l=s.filter(i=>i.image_id!==e.image_id);if(l.length>0){const i=s.findIndex(c=>c.image_id===e.image_id);let r;if(i===s.length-1?r=i-1:r=i,console.log("Navigation target:",{currentIndex:i,targetIndex:r,targetId:l[r]?.image_id}),r>=0&&r<l.length){const c=l[r];c&&c.image_id&&c.image_id!=="undefined"&&c.image_id!=="null"&&c.image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(c.image_id)?(console.log("Navigating to:",c.image_id),y(`/map/${c.image_id}`)):(console.error("Navigation blocked: Invalid image_id format:",c.image_id),y("/explore")):(console.error("Navigation blocked: Invalid image_id:",c?.image_id),y("/explore"))}else l[0]&&l[0].image_id&&l[0].image_id!=="undefined"&&l[0].image_id!=="null"&&l[0].image_id.trim()!==""?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(l[0].image_id)?(console.log("Fallback navigation to first item:",l[0].image_id),y(`/map/${l[0].image_id}`)):(console.error("Fallback navigation blocked: Invalid image_id format:",l[0].image_id),y("/explore")):(console.log("No valid remaining items, going to explore page"),y("/explore"))}else console.log("No remaining items, going to explore page"),y("/explore")}else y("/explore")}catch(o){console.error("Failed to navigate to next item:",o),y("/explore")}finally{Q(!1)}}else console.error("Delete failed"),Q(!1)}catch(t){console.error("Delete failed:",t),Q(!1)}}},h=g.useMemo(()=>{if(!e)return null;if(!d&&!v&&!w&&!C&&!j&&!I&&!N&&!k)return e;const t=!d||e.title?.toLowerCase().includes(d.toLowerCase())||e.generated?.toLowerCase().includes(d.toLowerCase())||e.source?.toLowerCase().includes(d.toLowerCase())||e.event_type?.toLowerCase().includes(d.toLowerCase()),o=!v||e.source===v,f=!w||e.event_type===w,s=!C||e.countries.some(x=>x.r_code===C),l=!j||e.countries.some(x=>x.c_code===j),i=!I||e.image_type===I,r=!N||N==="single"&&(!e.image_count||e.image_count<=1)||N==="multiple"&&e.image_count&&e.image_count>1,c=!k||e.starred===!0,n=t&&o&&f&&s&&l&&i&&r&&c;return!n&&(d||v||w||C||j||I||N||k)?(setTimeout(()=>{Ge()},100),e):n?e:null},[e,d,v,w,C,j,I,N,k]),Ge=g.useCallback(async()=>{P(!0);try{const t=await fetch("/api/images/grouped");if(t.ok){const f=(await t.json()).filter(s=>{const l=!d||s.title?.toLowerCase().includes(d.toLowerCase())||s.generated?.toLowerCase().includes(d.toLowerCase())||s.source?.toLowerCase().includes(d.toLowerCase())||s.event_type?.toLowerCase().includes(d.toLowerCase()),i=!v||s.source===v,r=!w||s.event_type===w,c=!C||s.countries?.some(m=>m.r_code===C),n=!j||s.countries?.some(m=>m.c_code===j),x=!I||s.image_type===I,M=!N||N==="single"&&(!s.image_count||s.image_count<=1)||N==="multiple"&&s.image_count&&s.image_count>1,S=!k||s.starred===!0;return l&&i&&r&&c&&n&&x&&M&&S});if(f.length>0){const s=f[0];s&&s.image_id&&y(`/map/${s.image_id}`)}else y("/explore")}}catch(t){console.error("Failed to navigate to matching image:",t),y("/explore")}finally{P(!1)}},[d,v,w,C,j,I,N,k,y]),Ke=()=>{if(!e)return;if(!e.all_image_ids||e.all_image_ids.length<=1){const s=`/upload?step=1&contribute=true&imageIds=${[e.image_id].join(",")}`;y(s);return}const o=`/upload?step=1&contribute=true&imageIds=${e.all_image_ids.join(",")}`;y(o)},F=(t,o)=>({image:`images/${o}`,caption:t.edited||t.generated||"",metadata:{image_id:t.image_count&&t.image_count>1?t.all_image_ids||[t.image_id]:t.image_id,title:t.title,source:t.source,event_type:t.event_type,image_type:t.image_type,countries:t.countries,starred:t.starred,image_count:t.image_count||1}}),Ze=async t=>{if(e){ee(!0),ae(!1);try{const o=(await ia(async()=>{const{default:r}=await import("./jszip.min-DHOAM-1s.js").then(c=>c.j);return{default:r}},__vite__mapDeps([0,1,2]))).default,f=new o;if(e.image_type==="crisis_map"){const r=f.folder("crisis_maps_dataset"),c=r?.folder("images");if(c)try{const n=e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:[e.image_id],x=n.map(async(m,b)=>{try{const _=await fetch(`/api/images/${m}/file`);if(!_.ok)throw new Error(`Failed to fetch image ${m}`);const L=await _.blob(),U=e.file_key.split(".").pop()||"jpg",$=`0001_${String(b+1).padStart(2,"0")}.${U}`;return c.file($,L),{success:!0,fileName:$,imageId:m}}catch(_){return console.error(`Failed to process image ${m}:`,_),{success:!1,fileName:"",imageId:m}}}),S=(await Promise.all(x)).filter(m=>m.success);if(S.length===0)throw new Error("No images could be processed");if(t==="fine-tuning"){const m=[],b=[],_=[],L=S.map(Qe=>`images/${Qe.fileName}`),U=Math.random(),$={image:L.length===1?L[0]:L,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};U<R/100?m.push($):U<(R+J)/100?b.push($):_.push($),r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m=S.map(_=>`images/${_.fileName}`),b={image:m.length===1?m[0]:m,caption:e.edited||e.generated||"",metadata:{image_id:n,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(b,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else if(e.image_type==="drone_image"){const r=f.folder("drone_images_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}else{const r=f.folder("generic_dataset"),c=r?.folder("images");if(c)try{const n=await fetch(`/api/images/${e.image_id}/file`);if(!n.ok)throw new Error(`Failed to fetch image ${e.image_id}`);const x=await n.blob(),S=`0001.${e.file_key.split(".").pop()||"jpg"}`;if(c.file(S,x),t==="fine-tuning"){const m=[],b=[],_=[];if(String(e?.image_type)==="crisis_map"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}else if(String(e?.image_type)==="drone_image"){const L=Math.random();L<R/100?m.push(F(e,"0001")):L<(R+J)/100?b.push(F(e,"0001")):_.push(F(e,"0001"))}r&&(r.file("train.jsonl",JSON.stringify(m,null,2)),r.file("test.jsonl",JSON.stringify(b,null,2)),r.file("val.jsonl",JSON.stringify(_,null,2)))}else{const m={image:`images/${S}`,caption:e.edited||e.generated||"",metadata:{image_id:e.image_count&&e.image_count>1?e.all_image_ids||[e.image_id]:e.image_id,title:e.title,source:e.source,event_type:e.event_type,image_type:e.image_type,countries:e.countries,starred:e.starred,image_count:e.image_count||1}};r&&r.file("0001.json",JSON.stringify(m,null,2))}}catch(n){throw console.error(`Failed to process image ${e.image_id}:`,n),n}}const s=await f.generateAsync({type:"blob"}),l=URL.createObjectURL(s),i=document.createElement("a");i.href=l,i.download=`dataset_${e.image_type}_${e.image_id}_${t}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(l),console.log(`Exported ${e.image_type} dataset with 1 image in ${t} mode`),ae(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{ee(!1)}}};return W?a.jsx(X,{children:a.jsx("div",{className:p.loadingContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4",children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading map details..."})]})})}):re||!e?a.jsx(X,{children:a.jsx("div",{className:p.errorContainer,children:a.jsxs("div",{className:"flex flex-col items-center gap-4 text-center",children:[a.jsx("div",{className:"text-4xl",children:"⚠️"}),a.jsx("div",{className:"text-xl font-semibold",children:"Unable to load map"}),a.jsx("div",{children:re||"Map not found"}),a.jsx(T,{name:"back-to-explore",variant:"secondary",onClick:()=>y("/explore"),children:"Return to Explore"})]})})}):a.jsxs(X,{children:[a.jsxs("div",{className:"max-w-7xl mx-auto",children:[a.jsxs("div",{className:p.tabSelector,children:[a.jsx(aa,{name:"map-details-view",value:oe,onChange:t=>{(t==="mapDetails"||t==="explore")&&(Ce(t),t==="explore"&&y("/explore"))},options:Oe,keySelector:t=>t.key,labelSelector:t=>t.label}),a.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs(T,{name:"reference-examples",variant:k?"primary":"secondary",onClick:()=>Ae(!k),className:"whitespace-nowrap",children:[a.jsx("span",{className:"mr-2",children:k?a.jsx("span",{className:"text-yellow-400",children:"★"}):a.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),a.jsx(T,{name:"export-dataset",variant:"secondary",onClick:()=>K(!0),children:"Export"})]})]}),a.jsx(oa,{sources:le,types:ce,regions:ge,countries:Se,imageTypes:de,isLoadingFilters:!1}),oe==="mapDetails"?a.jsx("div",{className:"relative",children:h?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:p.gridLayout,children:[a.jsxs(E,{heading:a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{children:h.title||"Map Image"}),h.starred&&a.jsx("span",{className:"text-red-500 text-xl",title:"Starred image",children:"★"})]}),headingLevel:2,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:[a.jsx("div",{className:p.imageContainer,children:e?.image_count&&e.image_count>1||D.length>1?a.jsxs("div",{className:p.carouselContainer,children:[a.jsx("div",{className:p.carouselImageWrapper,children:V?a.jsxs("div",{className:p.imagePlaceholder,children:[a.jsx(ve,{className:"text-ifrcRed"}),a.jsx("div",{children:"Loading images..."})]}):D[A]?.image_url?a.jsx("img",{src:D[A].image_url,alt:D[A].file_key,className:p.carouselImage}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"})}),a.jsxs("div",{className:p.carouselNavigation,children:[a.jsx(T,{name:"previous-image",variant:"tertiary",size:1,onClick:Ue,disabled:V,className:p.carouselButton,children:a.jsx(se,{className:"w-4 h-4"})}),a.jsx("div",{className:p.carouselIndicators,children:D.map((t,o)=>a.jsx("button",{onClick:()=>Be(o),className:`${p.carouselIndicator} ${o===A?p.carouselIndicatorActive:""}`,disabled:V,children:o+1},o))}),a.jsx(T,{name:"next-image",variant:"tertiary",size:1,onClick:We,disabled:V,className:p.carouselButton,children:a.jsx(ie,{className:"w-4 h-4"})})]}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-carousel",variant:"secondary",size:1,onClick:()=>xe(D[A]),disabled:V||!D[A]?.image_url,children:"View Image"})})]}):a.jsxs("div",{className:p.singleImageContainer,children:[h.image_url?a.jsx("img",{src:h.image_url,alt:h.file_key}):a.jsx("div",{className:p.imagePlaceholder,children:"No image available"}),a.jsx("div",{className:p.viewImageButtonContainer,children:a.jsx(T,{name:"view-full-size-single",variant:"secondary",size:1,onClick:()=>xe(h),disabled:!h.image_url,children:"View Image"})})]})}),a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:a.jsxs("div",{className:p.metadataTags,children:[h.image_type!=="drone_image"&&a.jsx("span",{className:p.metadataTag,children:le.find(t=>t.s_code===h.source)?.label||h.source}),a.jsx("span",{className:p.metadataTag,children:ce.find(t=>t.t_code===h.event_type)?.label||h.event_type}),a.jsx("span",{className:p.metadataTag,children:de.find(t=>t.image_type===h.image_type)?.label||h.image_type}),h.countries&&h.countries.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:p.metadataTag,children:ge.find(t=>t.r_code===h.countries[0].r_code)?.label||"Unknown Region"}),a.jsx("span",{className:p.metadataTag,children:h.countries.map(t=>t.label).join(", ")})]}),h.image_count&&h.image_count>1&&a.jsxs("span",{className:p.metadataTag,title:`Multi-upload with ${h.image_count} images`,children:["📷 ",h.image_count]}),(!h.image_count||h.image_count<=1)&&a.jsx("span",{className:p.metadataTag,title:"Single Upload",children:"Single"})]})})]}),a.jsx("div",{className:p.detailsSection,children:h.edited&&h.edited.includes("Description:")||h.generated&&h.generated.includes("Description:")?a.jsx(E,{heading:"AI Generated Content",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:a.jsx("div",{className:p.captionText,children:(h.edited||h.generated||"").split(`
3
+ `).map((t,o)=>a.jsx("div",{children:t.startsWith("Description:")||t.startsWith("Analysis:")||t.startsWith("Recommended Actions:")?a.jsx("h4",{className:"font-semibold text-gray-800 mt-4 mb-2",children:t}):t.trim()===""?a.jsx("br",{}):a.jsx("p",{className:"mb-2",children:t})},o))})})}):a.jsx(E,{heading:"Description",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,spacing:"comfortable",children:a.jsx("div",{className:p.captionContainer,children:h.generated?a.jsx("div",{className:p.captionText,children:a.jsx("p",{children:h.edited||h.generated})}):a.jsx("p",{children:"— no caption yet —"})})})})]}),a.jsx("div",{className:"flex items-center justify-center mt-8",children:a.jsx(E,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-lg p-4",children:a.jsxs("div",{className:"flex items-center gap-4",children:[De&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"previous-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("previous"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(se,{className:"w-4 h-4"}),a.jsx(se,{className:"w-4 h-4"})]}),a.jsx("span",{className:"font-semibold",children:"Previous"})]})})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"delete",variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:He,title:"Delete","aria-label":"Delete saved image",children:a.jsx(ta,{className:"w-4 h-4"})})}),a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"contribute",onClick:Ke,children:"Contribute"})}),ne&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"toggle-star",variant:"tertiary",size:1,className:`${e?.starred?"bg-red-100 hover:bg-red-200 text-red-800 border-2 border-red-400":"bg-gray-100 hover:bg-gray-200 text-gray-600 border-2 border-gray-300"} w-16 h-8 rounded-full transition-all duration-200 flex items-center justify-center`,onClick:Ve,title:e?.starred?"Unstar image":"Star image","aria-label":e?.starred?"Unstar image":"Star image",children:a.jsx("span",{className:`text-lg transition-all duration-200 ${e?.starred?"text-red-600":"text-gray-500"}`,children:e?.starred?"★":"☆"})})}),Me&&a.jsx(E,{withInternalPadding:!0,className:"rounded-md p-2",children:a.jsx(T,{name:"next-item",variant:"tertiary",size:1,className:`bg-white/90 hover:bg-white shadow-lg border border-gray-200 ${B?"opacity-50 cursor-not-allowed":"hover:scale-110"}`,onClick:()=>ye("next"),disabled:B,children:a.jsxs("div",{className:"flex items-center gap-1",children:[a.jsx("span",{className:"font-semibold",children:"Next"}),a.jsxs("div",{className:"flex -space-x-1",children:[a.jsx(ie,{className:"w-4 h-4"}),a.jsx(ie,{className:"w-4 h-4"})]})]})})})]})})})]}):a.jsxs("div",{className:"text-center py-12",children:[a.jsx("div",{className:"text-xl font-semibold text-gray-600 mb-4",children:"No matches found"}),a.jsx("div",{className:"mt-4",children:a.jsx(T,{name:"clear-filters",variant:"secondary",onClick:ze,children:"Clear Filters"})})]})}):null]}),Fe&&a.jsx("div",{className:p.fullSizeModalOverlay,onClick:()=>G(!1),children:a.jsx("div",{className:p.fullSizeModalContent,onClick:t=>t.stopPropagation(),children:a.jsxs("div",{className:p.ratingWarningContent,children:[a.jsx("h3",{className:p.ratingWarningTitle,children:"Delete Image?"}),a.jsx("p",{className:p.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),a.jsxs("div",{className:p.ratingWarningButtons,children:[a.jsx(T,{name:"confirm-delete",variant:"secondary",onClick:qe,children:"Delete"}),a.jsx(T,{name:"cancel-delete",variant:"tertiary",onClick:()=>G(!1),children:"Cancel"})]})]})})}),me&&a.jsx(ra,{isOpen:me,onClose:()=>{K(!1),ae(!1),ee(!1)},onExport:(t,o)=>{o.includes(e.image_type)&&Ze(t)},filteredCount:1,totalCount:1,hasFilters:!1,crisisMapsCount:e.image_type==="crisis_map"?1:0,droneImagesCount:e.image_type==="drone_image"?1:0,isLoading:Ee,exportSuccess:Re,variant:"single",onNavigateToList:()=>{K(!1),y("/explore")},onNavigateAndExport:()=>{K(!1),y("/explore?export=true")}}),a.jsx(sa,{isOpen:$e,imageUrl:Pe?.image_url||null,preview:null,selectedImageData:null,onClose:Je})]})}export{at as default};
py—backend/static/index-B5YX0VGQ.js ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jszip.min-DHOAM-1s.js","assets/index-oPRJTRcN.js","assets/index-DkIjYZRi.css"])))=>i.map(i=>d[i]);
2
+ import{v as Se,w as Te,r as m,x as Ie,j as t,N as Ee,_ as ie,L as be,z as Z,n as D,D as Ce,B as $e}from"./index-oPRJTRcN.js";import{u as Pe}from"./useAdmin-DytkUHQc.js";import{F as Fe,E as De}from"./ExportModal-CrJtybXx.js";const ke="_tabSelector_o9y1f_1",Le="_metadataTags_o9y1f_8",Oe="_metadataTag_o9y1f_8",Me="_metadataTagSource_o9y1f_32",Re="_metadataTagType_o9y1f_43",Je="_mapItem_o9y1f_54",We="_mapItemImage_o9y1f_72",ze="_mapItemContent_o9y1f_92",Ue="_mapItemTitle_o9y1f_97",Ae="_mapItemMetadata_o9y1f_105",Be="_fullSizeModalOverlay_o9y1f_134",He="_fullSizeModalContent_o9y1f_148",Ve="_ratingWarningContent_o9y1f_159",Ge="_ratingWarningTitle_o9y1f_165",Ze="_ratingWarningText_o9y1f_172",qe="_ratingWarningButtons_o9y1f_179",g={tabSelector:ke,metadataTags:Le,metadataTag:Oe,metadataTagSource:Me,metadataTagType:Re,mapItem:Je,mapItemImage:We,mapItemContent:ze,mapItemTitle:Ue,mapItemMetadata:Ae,fullSizeModalOverlay:Be,fullSizeModalContent:He,ratingWarningContent:Ve,ratingWarningTitle:Ge,ratingWarningText:Ze,ratingWarningButtons:qe};function Ye(){const k=Se(),q=Te(),{isAuthenticated:ne}=Pe(),[K,oe]=m.useState("explore"),[_,L]=m.useState([]),{search:y,srcFilter:E,catFilter:b,regionFilter:C,countryFilter:$,imageTypeFilter:P,uploadTypeFilter:F,showReferenceExamples:j,setShowReferenceExamples:le}=Ie(),[J,re]=m.useState([]),[W,ce]=m.useState([]),[Q,me]=m.useState([]),[ge,de]=m.useState([]),[X,pe]=m.useState([]),[ue,Y]=m.useState(!0),[z,ee]=m.useState(!0),[fe,U]=m.useState(!1),[he,A]=m.useState(!1),[_e,B]=m.useState(!1),[xe,O]=m.useState(!1),[M,te]=m.useState(""),[H,ae]=m.useState(!1),ye=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],se=()=>{ee(!0),fetch("/api/images/grouped").then(e=>e.ok?e.json():(console.error("ExplorePage: Grouped endpoint failed, trying legacy endpoint"),fetch("/api/captions/legacy").then(s=>s.ok?s.json():(console.error("ExplorePage: Legacy endpoint failed, trying regular images endpoint"),fetch("/api/images").then(o=>{if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`);return o.json()}))))).then(e=>{if(console.log("ExplorePage: API response data:",e),Array.isArray(e)){const s=e.filter(o=>{const f=o.generated&&o.model,u=o.image_id&&o.image_id!=="undefined"&&o.image_id!=="null";return u||console.error("ExplorePage: Item missing valid image_id:",o),f&&u});console.log("ExplorePage: Filtered images with captions:",s.length),L(s)}else console.error("ExplorePage: API response is not an array:",e),L([])}).catch(()=>{L([])}).finally(()=>{ee(!1)})};m.useEffect(()=>{se()},[]),m.useEffect(()=>{const e=()=>{document.hidden||se()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[]),m.useEffect(()=>{new URLSearchParams(q.search).get("export")==="true"&&(U(!0),k("/explore",{replace:!0}))},[q.search,k,y,E,b,C,$,P,j]),m.useEffect(()=>{Y(!0),Promise.all([fetch("/api/sources").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/regions").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/countries").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()}),fetch("/api/image-types").then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}: ${e.statusText}`);return e.json()})]).then(([e,s,o,f,u])=>{re(e),ce(s),me(o),de(f),pe(u)}).catch(()=>{}).finally(()=>{Y(!1)})},[]);const v=m.useMemo(()=>_.filter(e=>{const s=!y||e.title?.toLowerCase().includes(y.toLowerCase())||e.generated?.toLowerCase().includes(y.toLowerCase())||e.source?.toLowerCase().includes(y.toLowerCase())||e.event_type?.toLowerCase().includes(y.toLowerCase()),o=!E||e.source&&e.source.split(", ").some(x=>x.trim()===E),f=!b||e.event_type&&e.event_type.split(", ").some(x=>x.trim()===b),u=!C||e.countries.some(x=>x.r_code===C),N=!$||e.countries.some(x=>x.c_code===$),V=!P||e.image_type===P,R=!F||F==="single"&&(!e.image_count||e.image_count<=1)||F==="multiple"&&e.image_count&&e.image_count>1,w=!j||e.starred===!0;return s&&o&&f&&u&&N&&V&&R&&w}),[_,y,E,b,C,$,P,F,j]),je=async(e,s="fine-tuning")=>{if(e.length===0){alert("No images to export");return}A(!0),B(!1);try{const o=(await $e(async()=>{const{default:i}=await import("./jszip.min-DHOAM-1s.js").then(S=>S.j);return{default:i}},__vite__mapDeps([0,1,2]))).default,f=new o,u=e.filter(i=>i.image_type==="crisis_map"),N=e.filter(i=>i.image_type==="drone_image");if(u.length>0){const i=f.folder("crisis_maps_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of u)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}if(N.length>0){const i=f.folder("drone_images_dataset"),S=i?.folder("images");if(S){let T=1;for(const a of N)try{const h=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],G=h.map(async(n,p)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const r=await l.blob(),c=a.file_key.split(".").pop()||"jpg",d=`${String(T).padStart(4,"0")}_${String(p+1).padStart(2,"0")}.${c}`;return S.file(d,r),{success:!0,fileName:d,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),I=(await Promise.all(G)).filter(n=>n.success);if(I.length>0){if(s==="fine-tuning"){const n=I.map(r=>`images/${r.fileName}`),p=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};if(!i)continue;if(p<.8){const r=i.file("train.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("train.jsonl",JSON.stringify(c,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(p<.9){const r=i.file("test.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("test.jsonl",JSON.stringify(c,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const r=i.file("val.jsonl");if(r){const c=await r.async("string").then(d=>JSON.parse(d||"[]")).catch(()=>[]);c.push(l),i.file("val.jsonl",JSON.stringify(c,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=I.map(l=>`images/${l.fileName}`),p={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:h,title:a.title,source:a.source,event_type:a.event_type,image_type:a.image_type,countries:a.countries,starred:a.starred,image_count:a.image_count||1}};i&&i.file(`${String(T).padStart(4,"0")}.json`,JSON.stringify(p,null,2))}T++}}catch(h){console.error(`Failed to process caption ${a.image_id}:`,h)}}}const V=await f.generateAsync({type:"blob"}),R=URL.createObjectURL(V),w=document.createElement("a");w.href=R,w.download=`datasets_${s}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(w),w.click(),document.body.removeChild(w),URL.revokeObjectURL(R);const x=(u.length||0)+(N.length||0);console.log(`Exported ${s} datasets with ${x} total images:`),u.length>0&&console.log(`- Crisis maps: ${u.length} images`),N.length>0&&console.log(`- Drone images: ${N.length} images`),B(!0)}catch(o){console.error("Export failed:",o),alert("Failed to export dataset. Please try again.")}finally{A(!1)}},ve=e=>{te(e),O(!0)},Ne=async()=>{if(M){ae(!0);try{console.log("Deleting image with ID:",M),(await fetch(`/api/images/${M}`,{method:"DELETE"})).ok?(L(s=>s.filter(o=>o.image_id!==M)),O(!1),te("")):(console.error("Delete failed"),alert("Failed to delete image. Please try again."))}catch(e){console.error("Delete failed:",e),alert("Failed to delete image. Please try again.")}finally{ae(!1)}}};return t.jsxs(Ee,{children:[z?t.jsx("div",{className:"flex flex-col items-center justify-center min-h-[60vh]",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}):t.jsxs("div",{className:"max-w-7xl mx-auto",children:[t.jsxs("div",{className:g.tabSelector,children:[t.jsx(be,{name:"explore-view",value:K,onChange:e=>{(e==="explore"||e==="mapDetails")&&(oe(e),e==="mapDetails"&&_.length>0&&(_[0]?.image_id&&_[0].image_id!=="undefined"&&_[0].image_id!=="null"?k(`/map/${_[0].image_id}`):console.error("Invalid image_id for navigation:",_[0]?.image_id)))},options:ye,keySelector:e=>e.key,labelSelector:e=>e.label}),t.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(D,{name:"reference-examples",variant:j?"primary":"secondary",onClick:()=>le(!j),className:"whitespace-nowrap",children:[t.jsx("span",{className:"mr-2",children:j?t.jsx("span",{className:"text-yellow-400",children:"★"}):t.jsx("span",{className:"text-yellow-400",children:"☆"})}),"Reference Examples"]})}),t.jsx(D,{name:"export-dataset",variant:"secondary",onClick:()=>U(!0),children:"Export"})]})]}),K==="explore"?t.jsxs("div",{className:"space-y-6",children:[t.jsx("div",{className:"mb-6 space-y-4",children:t.jsx("div",{className:"flex flex-wrap items-center gap-4",children:t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:t.jsx(Fe,{sources:J,types:W,regions:Q,countries:ge,imageTypes:X,isLoadingFilters:ue})})})}),t.jsxs("div",{className:"space-y-4",children:[t.jsx("div",{className:"flex justify-between items-center",children:t.jsxs("p",{className:"text-sm text-gray-600",children:[v.length," of ",_.length," examples"]})}),z&&t.jsx("div",{className:"text-center py-12",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(ie,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}),!z&&t.jsxs("div",{className:"space-y-4",children:[v.map(e=>t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:`${g.mapItem} flex-1`,onClick:()=>{console.log("ExplorePage: Clicking on image with ID:",e.image_id),console.log("ExplorePage: Image data:",e),e.image_id&&e.image_id!=="undefined"&&e.image_id!=="null"?(console.log("ExplorePage: Navigating to:",`/map/${e.image_id}`),console.log("ExplorePage: Full navigation URL:",`/#/map/${e.image_id}`),k(`/map/${e.image_id}`)):(console.error("Invalid image_id for navigation:",e.image_id),console.error("Full item data:",JSON.stringify(e,null,2)),alert(`Cannot navigate: Invalid image ID (${e.image_id})`))},children:[t.jsx("div",{className:g.mapItemImage,style:{width:"120px",height:"80px"},children:e.image_url?t.jsxs(t.Fragment,{children:[console.log("ExplorePage: Rendering image with URL:",e.image_url),t.jsx("img",{src:e.image_url,alt:e.file_key,onError:s=>{console.error("ExplorePage: Image failed to load:",e.image_url);const o=s.target;o.style.display="none",o.parentElement.innerHTML="Img"},onLoad:()=>console.log("ExplorePage: Image loaded successfully:",e.image_url)})]}):t.jsxs(t.Fragment,{children:[console.log("ExplorePage: No image_url provided for item:",e),"'Img'"]})}),t.jsxs("div",{className:g.mapItemContent,children:[t.jsx("h3",{className:g.mapItemTitle,children:t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{children:e.title||"Untitled"}),e.starred&&t.jsx("span",{className:"text-red-500 text-lg",title:"Starred image",children:"★"})]})}),t.jsx("div",{className:g.mapItemMetadata,children:t.jsxs("div",{className:g.metadataTags,children:[e.image_type!=="drone_image"&&t.jsx("span",{className:g.metadataTagSource,children:e.source&&e.source.includes(", ")?e.source.split(", ").map(s=>J.find(o=>o.s_code===s.trim())?.label||s.trim()).join(", "):J.find(s=>s.s_code===e.source)?.label||e.source}),t.jsx("span",{className:g.metadataTagType,children:e.event_type&&e.event_type.includes(", ")?e.event_type.split(", ").map(s=>W.find(o=>o.t_code===s.trim())?.label||s.trim()).join(", "):W.find(s=>s.t_code===e.event_type)?.label||e.event_type}),t.jsx("span",{className:g.metadataTag,children:X.find(s=>s.image_type===e.image_type)?.label||e.image_type}),e.image_count&&e.image_count>1&&t.jsxs("span",{className:g.metadataTag,title:`Multi-upload with ${e.image_count} images`,children:["📷 ",e.image_count]}),(!e.image_count||e.image_count<=1)&&t.jsx("span",{className:g.metadataTag,title:"Single Upload",children:"Single"}),e.countries&&e.countries.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:g.metadataTag,children:Q.find(s=>s.r_code===e.countries[0].r_code)?.label||"Unknown Region"}),t.jsx("span",{className:g.metadataTag,children:e.countries.map(s=>s.label).join(", ")})]})]})})]})]}),ne&&t.jsx(Z,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(D,{name:`delete-${e.image_id}`,variant:"tertiary",size:1,className:"bg-red-50 hover:bg-red-100 text-red-700 border border-red-200 hover:border-red-300",onClick:()=>ve(e.image_id),title:"Delete","aria-label":"Delete saved image",children:t.jsx(Ce,{className:"w-4 h-4"})})})]},e.image_id)),!v.length&&t.jsx("div",{className:"text-center py-12",children:t.jsx("p",{className:"text-gray-500",children:"No examples found."})})]})]})]}):t.jsx("div",{className:"space-y-6",children:t.jsxs("div",{className:"text-center py-12",children:[t.jsx("p",{className:"text-gray-500",children:"Map Details view coming soon..."}),t.jsx("p",{className:"text-sm text-gray-400 mt-2",children:"This will show detailed information about individual maps"})]})})]}),xe&&t.jsx("div",{className:g.fullSizeModalOverlay,onClick:()=>O(!1),children:t.jsx("div",{className:g.fullSizeModalContent,onClick:e=>e.stopPropagation(),children:t.jsxs("div",{className:g.ratingWarningContent,children:[t.jsx("h3",{className:g.ratingWarningTitle,children:"Delete Image?"}),t.jsx("p",{className:g.ratingWarningText,children:"This action cannot be undone. Are you sure you want to delete this saved image and all related data?"}),t.jsxs("div",{className:g.ratingWarningButtons,children:[t.jsx(D,{name:"confirm-delete",variant:"secondary",onClick:Ne,disabled:H,children:H?"Deleting...":"Delete"}),t.jsx(D,{name:"cancel-delete",variant:"tertiary",onClick:()=>O(!1),disabled:H,children:"Cancel"})]})]})})}),t.jsx(De,{isOpen:fe,onClose:()=>{U(!1),B(!1),A(!1)},onExport:(e,s)=>{const o=v.filter(f=>s.includes(f.image_type));je(o,e)},filteredCount:v.length,totalCount:_.length,hasFilters:!!(y||E||b||C||$||P||F||j),crisisMapsCount:v.filter(e=>e.image_type==="crisis_map").length,droneImagesCount:v.filter(e=>e.image_type==="drone_image").length,isLoading:he,exportSuccess:_e})]})}export{Ye as default};
{py_backend/static/assets → py—backend/static}/index-BzPMJFRS.css RENAMED
File without changes
py—backend/static/index-CLLTwnqd.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{r as s,y as nt,t as ht,a as q,c as gt,j as e,o as N,b as se,R as st,z,g as rt,d as ft,m as vt,e as pt,n as Z,A as xt,f as _t,h as Ct,i as yt,k as he,l as bt,p as ye,q as jt,s as Nt,E as wt,C as St,U as Mt,Q as It,u as Dt,N as je,_ as Et,L as Tt}from"./index-oPRJTRcN.js";const kt=({title:m,titleId:a,...h})=>s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":a},h),m?s.createElement("title",{id:a},m):null,s.createElement("g",{clipPath:"url(#arrow-drop-down-line_svg__a)"},s.createElement("path",{d:"m12 15-4.243-4.243 1.415-1.414L12 12.172l2.828-2.83 1.415 1.415L12 15Z"})),s.createElement("defs",null,s.createElement("clipPath",{id:"arrow-drop-down-line_svg__a"},s.createElement("path",{d:"M0 0h24v24H0z"})))),Lt=({title:m,titleId:a,...h})=>s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":a},h),m?s.createElement("title",{id:a},m):null,s.createElement("g",{clipPath:"url(#arrow-drop-up-line_svg__a)"},s.createElement("path",{d:"m12 11.828-2.828 2.829-1.415-1.414L12 9l4.243 4.243-1.415 1.414L12 11.828Z"})),s.createElement("defs",null,s.createElement("clipPath",{id:"arrow-drop-up-line_svg__a"},s.createElement("path",{d:"M0 0h24v24H0z"})))),Pt=({title:m,titleId:a,...h})=>s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":a},h),m?s.createElement("title",{id:a},m):null,s.createElement("g",{clipPath:"url(#information-line_svg__a)"},s.createElement("path",{d:"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10Zm0-2a8 8 0 1 0 0-16.001A8 8 0 0 0 12 20ZM11 7h2v2h-2V7Zm0 4h2v6h-2v-6Z"})),s.createElement("defs",null,s.createElement("clipPath",{id:"information-line_svg__a"},s.createElement("path",{d:"M0 0h24v24H0z"})))),Rt=({title:m,titleId:a,...h})=>s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 24 24",fill:"currentColor",width:"1em",height:"1em","aria-labelledby":a},h),m?s.createElement("title",{id:a},m):null,s.createElement("path",{fillRule:"evenodd",d:"m15.063 12 .937.938-4 4-4-4L8.938 12 12 15.063 15.063 12Z",clipRule:"evenodd"}),s.createElement("mask",{id:"table-sorting-line_svg__a",width:8,height:5,x:8,y:12,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},s.createElement("path",{fillRule:"evenodd",d:"m15.063 12 .937.938-4 4-4-4L8.938 12 12 15.063 15.063 12Z",clipRule:"evenodd"})),s.createElement("g",{mask:"url(#table-sorting-line_svg__a)"},s.createElement("path",{d:"M-24-22h72v72h-72z"})),s.createElement("path",{fillRule:"evenodd",d:"M8.938 11 8 10.062l4-4 4 4-.938.938L12 7.937 8.937 11Z",clipRule:"evenodd"}),s.createElement("mask",{id:"table-sorting-line_svg__b",width:8,height:5,x:8,y:6,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},s.createElement("path",{fillRule:"evenodd",d:"M8.938 11 8 10.062l4-4 4 4-.938.938L12 7.937 8.937 11Z",clipRule:"evenodd"})),s.createElement("g",{mask:"url(#table-sorting-line_svg__b)"},s.createElement("path",{d:"M48 45h-72v-72h72z"}))),$t="_number-output_1blvi_1",Bt={numberOutput:$t};function we(m){const{className:a,invalidText:h=nt,separatorHidden:r,compact:f,currency:g,value:b,tooltip:_,unit:y,prefix:x,suffix:w,maximumFractionDigits:C=1}=m,{currentLanguage:j}=s.useContext(ht),v=s.useMemo(()=>{if(q(b))return h;const S=gt(b,{currency:g,compact:f,separatorHidden:r,maximumFractionDigits:C,unit:y,language:j});return e.jsxs(e.Fragment,{children:[x,S,w]})},[h,b,f,r,g,y,C,x,j,w]);return e.jsx("div",{className:N(Bt.numberOutput,a),title:se(_)?String(_):void 0,children:v})}const At="_tooltip-dummy_rbf3f_1",Ft="_tooltip-content_rbf3f_7",Ot="_pointer_rbf3f_14",Ne={tooltipDummy:At,tooltipContent:Ft,pointer:Ot};function Ht(m){const{className:a,title:h,description:r,preferredWidth:f}=m,[g,b]=s.useState(!1),[_,y]=s.useState(!1),x=s.useRef(),w=s.useRef(null);return s.useEffect(()=>{const C=()=>{y(!0)},j=()=>{y(!1)};if(q(w.current))return;const{current:{parentNode:v}}=w;if(!q(v))return x.current=v,v.addEventListener("mouseover",C),v.addEventListener("mouseout",j),b(!0),()=>{v.removeEventListener("mouseover",C),v.removeEventListener("mouseout",j)}},[]),e.jsxs(e.Fragment,{children:[!g&&e.jsx("div",{className:Ne.tooltipDummy,ref:w}),_&&e.jsx(st,{className:N(Ne.tooltipContent,a),parentRef:x,pointerClassName:Ne.pointer,preferredWidth:f,children:e.jsx(z,{heading:h,withInternalPadding:!0,contentViewType:"vertical",children:r})})]})}function $(m){return m.id}const Vt="common",zt={booleanYesLabel:"Yes",booleanNoLabel:"No"},Ut={namespace:Vt,strings:zt},Wt="_boolean-output_kg1uq_1",Qt={booleanOutput:Wt};function Zt(m){const{className:a,invalidText:h,value:r}=m,f=rt(Ut);let g;return r===!0?g=f.booleanYesLabel:r===!1?g=f.booleanNoLabel:g=h,e.jsx("div",{className:N(Qt.booleanOutput,a),children:g})}const qt="_date-output_4jzjo_1",Gt={dateOutput:qt};function Yt(m){const{value:a,format:h,className:r,invalidText:f}=m,g=s.useMemo(()=>ft(a,h),[a,h]);return e.jsx("div",{className:N(Gt.dateOutput,r),children:g??f})}const Kt="_dropdown-menu_16hml_1",Xt="_icons_16hml_4",Jt="_content_16hml_5",ea="_actions_16hml_6",ta="_dropdown-icon_16hml_10",aa="_dropdown-content_16hml_16",le={dropdownMenu:Kt,icons:Xt,content:Jt,actions:ea,dropdownIcon:ta,dropdownContent:aa};function na(m){const a=s.useRef(null),{className:h,popupClassName:r,children:f,label:g,activeClassName:b,icons:_,variant:y="secondary",actions:x,withoutDropdownIcon:w,componentRef:C,elementRef:j=a,persistent:v,preferredPopupWidth:S}=m,p=s.useRef(null),[k,I]=s.useState(!1);s.useEffect(()=>{C&&(C.current={setShowDropdown:I})},[C,I]);const R=s.useCallback(()=>{I(re=>!re)},[I]),T=s.useCallback((re,ae)=>{ae||re&&v||I(!1)},[I,v]);vt(k,T,p,j);const G=s.useMemo(()=>({setShowDropdown:I}),[I]),U=!!x||!w;return e.jsxs(pt.Provider,{value:G,children:[e.jsx(Z,{name:void 0,className:N(le.dropdownMenu,k&&b,h),elementRef:j,onClick:R,variant:y,actionsContainerClassName:le.actions,iconsContainerClassName:le.icons,childrenContainerClassName:le.content,actions:U?e.jsxs(e.Fragment,{children:[x,!w&&(k?e.jsx(xt,{className:le.dropdownIcon}):e.jsx(_t,{className:le.dropdownIcon}))]}):void 0,icons:_,children:g}),k&&e.jsx(st,{elementRef:p,className:N(le.dropdownContent,r),parentRef:j,preferredWidth:S,children:f})]})}const sa="_info-popup_i3rna_1",ra="_label_i3rna_2",ia="_icon_i3rna_7",oa="_dropdown-container_i3rna_15",la="_content_i3rna_20",ge={infoPopup:sa,label:ra,icon:ia,dropdownContainer:oa,content:la};function ca(m){const{className:a,icon:h=e.jsx(Pt,{}),infoLabel:r,title:f,description:g,withoutIcon:b,popupClassName:_,descriptionClassName:y}=m;return e.jsx(na,{label:e.jsxs("div",{className:ge.label,children:[r,!b&&h&&e.jsx("div",{className:ge.icon,children:h})]}),popupClassName:N(ge.dropdownContainer,_),className:N(ge.infoPopup,a),variant:"tertiary",withoutDropdownIcon:!0,children:e.jsx(z,{heading:f,childrenContainerClassName:N(y,ge.content),withInternalPadding:!0,children:g})})}const da="_progress-wrapper_x340w_1",ua="_title_x340w_7",ma="_total_x340w_11",ha="_progress_x340w_1",fe={progressWrapper:da,title:ua,total:ma,progress:ha};function Ye(m){const{className:a,title:h,description:r,totalValue:f,value:g,showPercentageInTitle:b,children:_,color:y="var(--go-ui-color-primary-red)"}=m,x=se(g)?g:0,w=se(f)?f:0;let C;return w===0?C=0:C=x/w*100,e.jsxs("div",{className:N(fe.progressWrapper,a),children:[(h||b)&&e.jsxs("div",{className:fe.title,children:[h,b&&e.jsx(we,{value:C,suffix:"%"})]}),e.jsx("div",{className:fe.total,children:e.jsx("div",{className:fe.progress,style:{width:`${C}%`,backgroundColor:y}})}),r&&e.jsx("div",{className:fe.description,children:r}),_]})}const ga="_legend-element_1a9ic_1",fa="_color_1a9ic_7",va="_icon-container_1a9ic_14",pa="_icon_1a9ic_14",xa="_label_1a9ic_31",ve={legendElement:ga,color:fa,iconContainer:va,icon:pa,label:xa};function _a(m){const{className:a,colorClassName:h,iconClassName:r,color:f,label:g,iconSrc:b}=m;return e.jsxs("div",{className:N(ve.legendElement,a),children:[b?e.jsx("div",{style:{backgroundColor:f},className:ve.iconContainer,children:e.jsx("img",{className:N(ve.icon,r),src:b,alt:""})}):e.jsx("div",{style:{backgroundColor:f},className:N(ve.color,h)}),e.jsx("div",{className:ve.label,children:g})]})}const Ca="_text-output_10oza_1",ya="_with-background_10oza_6",ba="_label_10oza_11",ja="_with-colon_10oza_12",Na="_value_10oza_17",wa="_text-type_10oza_18",Sa="_strong_10oza_24",ee={textOutput:Ca,withBackground:ya,label:ba,withColon:ja,value:Na,textType:wa,strong:Sa};function Ke(m){const{className:a,label:h,icon:r,description:f,labelClassName:g,descriptionClassName:b,valueClassName:_,strongLabel:y,strongValue:x,strongDescription:w,withoutLabelColon:C,withBackground:j,invalidText:v=nt,...S}=m,{value:p}=m;let k=v;return S.valueType==="number"?k=e.jsx(we,{...S,invalidText:v}):S.valueType==="date"?k=e.jsx(Yt,{...S,invalidText:v}):S.valueType==="boolean"?k=e.jsx(Zt,{...S,invalidText:v}):p instanceof Date||(k=p||v),e.jsxs("div",{className:N(ee.textOutput,j&&ee.withBackground,a),children:[r,h&&e.jsx("div",{className:N(ee.label,y&&ee.strong,g,!C&&ee.withColon),children:h}),e.jsx("div",{className:N(ee.value,x&&ee.strong,S.valueType==="text"&&ee.textType,_),children:k}),f&&e.jsx("div",{className:N(ee.description,w&&ee.strong,b),children:f})]})}const Ma="_pie-chart_pyr7m_1",Ia="_legend_pyr7m_7",Da="_legend-item_pyr7m_13",pe={pieChart:Ma,legend:Ia,legendItem:Da},Ea=70,Ta=40;function Xe(m,a=1){return Math.round(m*10**a)/10**a}function Je(m,a){const h=(a-90)*Math.PI/180;return{x:Xe(m+m*Math.cos(h)),y:Xe(m+m*Math.sin(h))}}function ka(m,a,h){let r=h;const f=r-a===360;f&&(r-=1);const g=Je(m,a),b=Je(m,r),_=r-a<=180?0:1,y=["M",g.x,g.y,"A",m,m,0,_,1,b.x,b.y];return f?y.push("Z"):y.push("L",m,m,"L",g.x,g.y,"Z"),y.join(" ")}function xe(m){const{className:a,data:h,valueSelector:r,labelSelector:f,keySelector:g,colorSelector:b,colors:_,pieRadius:y=Ea,chartPadding:x=Ta,legendClassName:w,showPercentageInLegend:C}=m,j=Ct(h?.map(p=>r(p))),v=q(j)||j===0?1:j,S=s.useMemo(()=>{let p=0;const k=h?.map(I=>{const R=r(I);if(q(R))return;const T=360*(R/v);return p+=T,{key:g(I),value:R,label:f(I),startAngle:p-T,percentage:yt(R,v),endAngle:p,datum:I}}).filter(se)??[];return b?k.map(({datum:I,...R})=>({...R,color:b(I)})):k.map(({datum:I,...R},T)=>({...R,color:_[T%_.length]}))},[h,g,r,f,v,b,_]);return e.jsxs("div",{className:N(pe.pieChart,a),children:[e.jsx("svg",{className:pe.svg,style:{width:`${x+y*2}px`,height:`${x+y*2}px`},children:e.jsx("g",{style:{transform:`translate(${x/2}px, ${x/2}px)`},children:S.map(p=>e.jsx("path",{className:pe.path,d:ka(y,p.startAngle,p.endAngle),fill:p.color,children:e.jsx(Ht,{description:e.jsx(Ke,{label:p.label,value:p.value})})},p.key))})}),e.jsx("div",{className:N(pe.legend,w),children:S.map(p=>e.jsx(_a,{className:pe.legendItem,label:C?e.jsx(Ke,{label:p.label,value:p.percentage,valueType:"number",prefix:"(",suffix:"%)",withoutLabelColon:!0}):p.label,color:p.color},p.key))})]})}const La="_td_1k4cn_1",Pa={td:La};function Ra(m){const{className:a,children:h,...r}=m;return e.jsx("td",{className:N(a,Pa.td),...r,children:h})}function it(m){const{className:a,children:h,...r}=m;return e.jsx("tr",{className:a,...r,children:h})}const $a="_row_1829z_1",Ba="_cell_1829z_2",et={row:$a,cell:Ba};function Aa(m){const{data:a,keySelector:h,columns:r,rowClassName:f,cellClassName:g,rowModifier:b}=m;return e.jsx(e.Fragment,{children:a?.map((_,y)=>{const x=h(_,y),w=r.map(v=>{const{id:S,cellRenderer:p,cellRendererClassName:k,cellRendererParams:I,cellContainerClassName:R}=v,T=I(x,_,y,a),G=e.jsx(p,{className:k,...T,name:S});return e.jsx(Ra,{className:N(et.cell,R,typeof g=="function"?g(x,_,S):g),children:G},S)}),C=e.jsx(it,{className:N(et.row,typeof f=="function"?f(x,_):f),children:w});let j=C;return b&&(j=b({rowKey:x,row:C,cells:w,columns:r,datum:_})),e.jsx(s.Fragment,{children:j},x)})})}const Fa="_th_cdv41_1",Oa="_resize-handle_cdv41_8",tt={th:Fa,resizeHandle:Oa};function Ha(m){const{className:a,children:h,onResize:r,onResizeComplete:f,name:g,...b}=m,_=s.useRef(null),y=s.useRef(),x=s.useRef(),w=s.useRef(),C=s.useCallback(v=>{var S;if(se(y.current)&&_.current&&r){v.preventDefault(),v.stopPropagation();const p=v.clientX-y.current;if(se(x.current)){const k=x.current+p;w.current=k,r(k,g)}else x.current=(S=_.current)==null?void 0:S.offsetWidth}},[r,g]),j=s.useCallback(v=>{var S;v.preventDefault(),y.current=v.clientX,x.current=(S=_.current)==null?void 0:S.offsetWidth,window.addEventListener("mousemove",C,!0)},[C]);return s.useEffect(()=>{const v=()=>{y.current=void 0,x.current=void 0,f&&se(w.current)&&f(w.current,g),window.removeEventListener("mousemove",C,!0)};return window.addEventListener("mouseup",v,!0),()=>{window.removeEventListener("mouseup",v,!0),window.removeEventListener("mousemove",C,!0)}},[C,g,f]),e.jsxs("th",{ref:_,className:N(a,tt.th),...b,children:[r&&e.jsx("div",{role:"presentation",className:tt.resizeHandle,onMouseDown:j}),h]})}const Va="_table_nilhy_1",za="_table-overflow-wrapper_nilhy_8",Ua="_table-element_nilhy_13",Wa="_header-row_nilhy_23",Qa="_header-element_nilhy_24",Za="_header-component_nilhy_29",ce={table:Va,tableOverflowWrapper:za,tableElement:Ua,headerRow:Wa,headerElement:Qa,headerComponent:Za};function qa(m,a){return a??m.columnWidth??wt}function B(m){const{data:a,keySelector:h,columns:r,caption:f,className:g,captionClassName:b,headerRowClassName:_,headerCellClassName:y,rowClassName:x,cellClassName:w,rowModifier:C,fixedColumnWidth:j,resizableColumn:v,headersHidden:S,pending:p,filtered:k,errored:I=!1}=m,R=s.useRef(null),[T]=he.useState(()=>bt()),[G,U]=he.useState({});s.useEffect(()=>{U(W=>{if(q(R.current))return W;const E=R.current.getBoundingClientRect(),{width:O}=E;let A=r.map(M=>({id:M.id,stretch:!!M.columnStretch,width:qa(M,W[M.id])}));const X=ye(A.filter(M=>M.stretch).map(M=>M.width)),ne=ye(A.filter(M=>!M.stretch).map(M=>M.width)),Y=(O-ne)/X;return Y>1&&(A=A.map(M=>({...M,width:M.stretch?M.width*Y:M.width}))),jt(A,M=>M.id,M=>M.width)})},[r]);const re=he.useCallback((W,E)=>{const O=document.getElementById(`${T}-${E}`),A=Math.max(W,80);if(q(O)||(O.style.width=`${A}px`,!j))return;const X=document.getElementById(T);if(q(X))return;const ne=ye(r.map(Y=>Y.id===E?A:G[Y.id]));X.style.width=`${ne}px`},[T,G,r,j]),ae=he.useCallback((W,E)=>{se(E)&&U(O=>({...O,[E]:Math.max(W,80)}))},[U]),be=he.useMemo(()=>ye(r.map(W=>G[W.id])),[G,r]),K=q(a)||a.length===0||Object.keys(G).length===0;return e.jsxs("div",{ref:R,className:N(ce.table,g),children:[!K&&e.jsx("div",{className:ce.tableOverflowWrapper,children:e.jsxs("table",{className:ce.tableElement,style:j?{width:`${be}px`}:void 0,id:T,children:[f&&e.jsx("caption",{className:b,children:f}),e.jsx("colgroup",{children:r.map(W=>{const{id:E,columnClassName:O}=W,A=G[E],X=j?{width:`${A}px`}:void 0;return e.jsx("col",{id:`${T}-${E}`,style:X,className:N(ce.column,O)},E)})}),!S&&e.jsx("thead",{children:e.jsx(it,{className:N(ce.headerRow,_),children:r.map((W,E)=>{const{id:O,title:A,headerCellRenderer:X,headerCellRendererClassName:ne,headerCellRendererParams:Y,headerContainerClassName:M}=W,ie=e.jsx(X,{...Y,name:O,title:A,index:E,className:N(ne,ce.headerComponent)});return e.jsx(Ha,{scope:"col",name:O,onResize:v?re:void 0,onResizeComplete:v?ae:void 0,className:N(ce.headerElement,typeof y=="function"?y(O):y,M),children:ie},O)})})}),e.jsx("tbody",{children:e.jsx(Aa,{data:a,keySelector:h,columns:r,rowClassName:x,cellClassName:w,rowModifier:C})})]})}),e.jsx(Nt,{filtered:k,empty:K,errored:I,pending:p,overlayPending:!0})]})}function Ga(m){const{className:a,value:h}=m;return q(h)?null:e.jsx("div",{className:a,children:h})}const Ya="common",Ka={sortTableButtonTitle:"Sort Table"},Xa={namespace:Ya,strings:Ka},Ja="_header-cell_vn24d_1",en="_sort-button_vn24d_8",tn="_icon_vn24d_12",an="_info-popup-icon_vn24d_17",de={headerCell:Ja,sortButton:en,icon:tn,infoPopupIcon:an};function ot(m){const{className:a,titleClassName:h,title:r,name:f,sortable:g,defaultSortDirection:b="asc",infoTitle:_,infoDescription:y}=m,{sorting:x,setSorting:w}=s.useContext(St),C=rt(Xa),j=x?.name===f?x.direction:void 0,v=s.useRef(null),S=s.useCallback(()=>{if(q(w))return;let p;q(j)?p=b:j==="asc"?p="dsc":j==="dsc"&&(p="asc"),w(p?{name:f,direction:p}:void 0)},[f,w,j,b]);return e.jsxs("div",{ref:v,className:N(a,de.headerCell),children:[g&&e.jsxs(Z,{name:void 0,variant:"tertiary",onClick:S,title:C.sortTableButtonTitle,className:de.sortButton,children:[q(j)&&e.jsx(Rt,{className:de.icon}),j==="asc"&&e.jsx(Lt,{className:de.icon}),j==="dsc"&&e.jsx(kt,{className:de.icon})]}),e.jsx("div",{className:N(h,de.title),children:r}),_&&y&&e.jsx(ca,{className:de.infoPopupIcon,title:_,description:y})]})}const at={};function Q(m,a,h,r){return{id:m,title:a,columnClassName:r?.columnClassName,headerCellRenderer:ot,headerCellRendererClassName:r?.headerCellRendererClassName,headerContainerClassName:r?.headerContainerClassName,headerCellRendererParams:{sortable:r?.sortable,infoTitle:r?.headerInfoTitle,infoDescription:r?.headerInfoDescription},cellRendererClassName:r?.cellRendererClassName,cellContainerClassName:r?.cellContainerClassName,cellRenderer:Ga,cellRendererParams:(f,g)=>({value:h(g)||"--"}),valueSelector:h,valueComparator:(f,g)=>Mt(h(f),h(g)),columnWidth:r?.columnWidth,columnStretch:r?.columnStretch,columnStyle:r?.columnStyle}}function D(m,a,h,r){return{id:m,title:a,columnClassName:r?.columnClassName,headerCellRenderer:ot,headerCellRendererClassName:N(at.numberCellHeader,r?.headerCellRendererClassName),headerContainerClassName:r?.headerContainerClassName,headerCellRendererParams:{sortable:r?.sortable,infoTitle:r?.headerInfoTitle,infoDescription:r?.headerInfoDescription},cellRendererClassName:N(at.numberCell,r?.cellRendererClassName),cellContainerClassName:r?.cellContainerClassName,cellRenderer:we,cellRendererParams:(f,g)=>({value:h(g),suffix:r?.suffix,maximumFractionDigits:r?.maximumFractionDigits,invalidText:"--"}),valueSelector:h,valueComparator:(f,g)=>It(h(f),h(g)),columnWidth:r?.columnWidth,columnStretch:r?.columnStretch,columnStyle:r?.columnStyle}}const nn="_tabSelector_vlxoe_1",sn="_progressSection_vlxoe_14",rn="_progressLabel_vlxoe_20",on="_chartGrid_vlxoe_28",ln="_chartContainer_vlxoe_40",cn="_tableContainer_vlxoe_51",dn="_modelPerformance_vlxoe_59",un="_loadingContainer_vlxoe_67",mn="_errorContainer_vlxoe_77",hn="_userInteractionCards_vlxoe_96",gn="_userInteractionCard_vlxoe_96",fn="_userInteractionCardValue_vlxoe_116",vn="_userInteractionCardLabel_vlxoe_123",pn="_userInteractionCardButton_vlxoe_130",xn="_summaryStatsCards_vlxoe_148",_n="_summaryStatsCard_vlxoe_148",Cn="_summaryStatsCardValue_vlxoe_169",yn="_summaryStatsCardLabel_vlxoe_176",c={tabSelector:nn,progressSection:sn,progressLabel:rn,chartGrid:on,chartContainer:ln,tableContainer:cn,modelPerformance:dn,loadingContainer:un,errorContainer:mn,userInteractionCards:hn,userInteractionCard:gn,userInteractionCardValue:fn,userInteractionCardLabel:vn,userInteractionCardButton:pn,summaryStatsCards:xn,summaryStatsCard:_n,summaryStatsCardValue:Cn,summaryStatsCardLabel:yn};function jn(){const[m]=Dt(),[a,h]=s.useState(null),[r,f]=s.useState(!0),[g,b]=s.useState("crisis_maps"),[_,y]=s.useState([]),[x,w]=s.useState([]),[C,j]=s.useState([]),[v,S]=s.useState([]),[p,k]=s.useState(!1),[I,R]=s.useState(!1),[T,G]=s.useState(!1),[U,re]=s.useState(!1),[ae,be]=s.useState(!1),[K,W]=s.useState(!1),E=t=>{k(t==="editTime"),R(t==="percentage"),G(t==="delete"),re(t==="regions"),be(t==="sources"),W(t==="types")},O=[{key:"crisis_maps",label:"Crisis Maps"},{key:"drone_images",label:"Drone Images"}],A=s.useCallback((t,l)=>{if(!t||!l)return 0;const i=t.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(u=>u.length>0),n=l.toLowerCase().replace(/[^\w\s]/g,"").split(/\s+/).filter(u=>u.length>0);if(i.length===0&&n.length===0)return 1;if(i.length===0||n.length===0)return 0;const o=new Set(i),d=new Set(n),P=new Set([...o].filter(u=>d.has(u))),F=new Set([...o,...d]);return P.size/F.size},[]),X=s.useCallback(async()=>{f(!0);try{const l=await(await fetch("/api/images")).json(),i={},n=l.filter(u=>u.image_type==="crisis_map"),o=l.filter(u=>u.image_type==="drone_image"),d={totalCaptions:l.length,sources:{},types:{},regions:{},models:{},modelEditTimes:i,percentageModified:0,modelPercentageData:{},totalDeleteCount:0,deleteRate:0,crisisMaps:n,droneImages:o};l.forEach(u=>{if(u.source&&(d.sources[u.source]=(d.sources[u.source]||0)+1),u.event_type&&(d.types[u.event_type]=(d.types[u.event_type]||0)+1),u.countries&&u.countries.forEach(L=>{L.r_code&&(d.regions[L.r_code]=(d.regions[L.r_code]||0)+1)}),u.model){const L=u.model,V=d.models[L]||={count:0,avgAccuracy:0,avgContext:0,avgUsability:0,totalScore:0,deleteCount:0};if(V.count++,u.accuracy!=null&&(V.avgAccuracy+=u.accuracy),u.context!=null&&(V.avgContext+=u.context),u.usability!=null&&(V.avgUsability+=u.usability),u.created_at&&u.updated_at){const te=new Date(u.created_at).getTime(),Ce=new Date(u.updated_at).getTime()-te;Ce>0&&(i[L]||(i[L]=[]),i[L].push(Ce))}}}),_.forEach(u=>{u.s_code&&!d.sources[u.s_code]&&(d.sources[u.s_code]=0)}),x.forEach(u=>{u.t_code&&!d.types[u.t_code]&&(d.types[u.t_code]=0)}),C.forEach(u=>{u.r_code&&!d.regions[u.r_code]&&(d.regions[u.r_code]=0)}),["GPT-4","Claude","Gemini","Llama","Other"].forEach(u=>{d.models[u]||(d.models[u]={count:0,avgAccuracy:0,avgContext:0,avgUsability:0,totalScore:0,deleteCount:0})}),Object.values(d.models).forEach(u=>{u.count>0&&(u.avgAccuracy=Math.round(u.avgAccuracy/u.count),u.avgContext=Math.round(u.avgContext/u.count),u.avgUsability=Math.round(u.avgUsability/u.count),u.totalScore=Math.round((u.avgAccuracy+u.avgContext+u.avgUsability)/3))});const F=l.filter(u=>u.generated&&u.edited);if(F.length>0){const L=[...F.map(oe=>A(oe.generated,oe.edited))].sort((oe,Ce)=>oe-Ce),V=Math.floor(L.length/2),te=L.length%2===0?(L[V-1]+L[V])/2:L[V];d.percentageModified=Math.round((1-te)*100)}const H={};l.forEach(u=>{if(u.model&&u.generated&&u.edited){const L=A(u.generated,u.edited),V=Math.round((1-L)*100);H[u.model]||(H[u.model]=[]),H[u.model].push(V)}}),d.modelPercentageData=H;try{const u=await fetch("/api/models");if(u.ok){const L=await u.json();if(L.models){L.models.forEach(te=>{d.models[te.m_code]&&(d.models[te.m_code].deleteCount=te.delete_count||0)});const V=L.models.reduce((te,oe)=>te+(oe.delete_count||0),0);d.totalDeleteCount=V,d.deleteRate=V>0?Math.round(V/(V+l.length)*100):0}}}catch(u){console.log("Could not fetch model delete counts:",u)}h(d)}catch{h(null)}finally{f(!1)}},[_,x,C,A]),ne=s.useCallback(async()=>{try{const[t,l,i,n]=await Promise.all([fetch("/api/sources"),fetch("/api/types"),fetch("/api/regions"),fetch("/api/models")]),o=await t.json(),d=await l.json(),P=await i.json(),F=await n.json();y(o),w(d),j(P),S(F.models||[])}catch(t){console.log("Could not fetch lookup data:",t)}},[]);s.useEffect(()=>{const t=m.get("view");(t==="crisis_maps"||t==="drone_images")&&b(t)},[m]),s.useEffect(()=>{ne()},[ne]),s.useEffect(()=>{_.length>0&&x.length>0&&C.length>0&&v.length>0&&X()},[_,x,C,v,X]);const Y=s.useCallback(t=>{const l=_.find(i=>i.s_code===t);return l?l.label:t},[_]),M=s.useCallback(t=>{if(t.length===0)return 0;const l=[...t].sort((n,o)=>n-o),i=Math.floor(l.length/2);return l.length%2===0?Math.round((l[i-1]+l[i])/2):l[i]},[]),ie=s.useCallback(t=>{const l=Math.floor(t/1e3),i=Math.floor(l/60),n=Math.floor(i/60);return n>0?`${n}h ${i%60}m`:i>0?`${i}m ${l%60}s`:`${l}s`},[]),_e=s.useCallback(t=>{const l=x.find(i=>i.t_code===t);return l?l.label:t},[x]),J=s.useCallback(t=>{const l=v.find(i=>i.m_code===t);return l?l.label:t},[v]),Se=s.useMemo(()=>a?Object.entries(a.modelEditTimes||{}).filter(([,t])=>t.length>0).sort(([,t],[,l])=>M(l)-M(t)).map(([t,l],i)=>({id:i+1,name:J(t),count:l.length,avgEditTime:M(l),minEditTime:Math.min(...l),maxEditTime:Math.max(...l)})):[],[a,M,J]),Me=s.useMemo(()=>a?Object.entries(a.modelPercentageData||{}).filter(([,t])=>t.length>0).sort(([,t],[,l])=>{const i=[...t].sort((H,u)=>H-u),n=[...l].sort((H,u)=>H-u),o=Math.floor(i.length/2),d=Math.floor(n.length/2),P=i.length%2===0?(i[o-1]+i[o])/2:i[o];return(n.length%2===0?(n[d-1]+n[d])/2:n[d])-P}).map(([t,l],i)=>{const n=[...l].sort((P,F)=>P-F),o=Math.floor(n.length/2),d=n.length%2===0?Math.round((n[o-1]+n[o])/2):n[o];return{id:i+1,name:J(t),count:l.length,avgPercentageModified:d,minPercentageModified:Math.min(...l),maxPercentageModified:Math.max(...l)}}):[],[a,J]),Ie=s.useMemo(()=>a?Object.entries(a.models).filter(([,t])=>t.count>0).map(([t,l],i)=>{const n=[l.avgAccuracy,l.avgContext,l.avgUsability],o=n.reduce((F,H)=>F+H,0)/n.length,d=n.reduce((F,H)=>F+Math.pow(H-o,2),0)/n.length,P=Math.round(100-Math.sqrt(d));return{id:i+1,name:J(t),consistency:Math.max(0,P),avgScore:Math.round(o),count:l.count}}).sort((t,l)=>l.consistency-t.consistency):[],[a,J]),De=s.useMemo(()=>[Q("name","Region",t=>t.name),D("count","Count",t=>t.count),D("percentage","% of Total",t=>t.percentage,{suffix:"%",maximumFractionDigits:0})],[]),Ee=s.useMemo(()=>[Q("name","Type",t=>t.name),D("count","Count",t=>t.count),D("percentage","% of Total",t=>t.percentage,{suffix:"%",maximumFractionDigits:0})],[]),lt=s.useMemo(()=>[Q("name","Source",t=>t.name),D("count","Count",t=>t.count),D("percentage","% of Total",t=>t.percentage,{suffix:"%",maximumFractionDigits:0})],[]),Te=s.useMemo(()=>[Q("name","Model",t=>t.name),D("count","Count",t=>t.count),D("accuracy","Accuracy",t=>t.accuracy,{suffix:"%",maximumFractionDigits:0}),D("context","Context",t=>t.context,{suffix:"%",maximumFractionDigits:0}),D("usability","Usability",t=>t.usability,{suffix:"%",maximumFractionDigits:0}),D("totalScore","Total Score",t=>t.totalScore,{suffix:"%",maximumFractionDigits:0})],[]),ke=s.useMemo(()=>[Q("name","Model",t=>t.name),D("count","Count",t=>t.count),Q("avgEditTime","Median Edit Time",t=>ie(t.avgEditTime)),Q("minEditTime","Min Edit Time",t=>ie(t.minEditTime)),Q("maxEditTime","Max Edit Time",t=>ie(t.maxEditTime))],[]),Le=s.useMemo(()=>[Q("name","Model",t=>t.name),D("count","Count",t=>t.count),D("avgPercentageModified","Median % Modified",t=>t.avgPercentageModified,{suffix:"%",maximumFractionDigits:0}),D("minPercentageModified","Min % Modified",t=>t.minPercentageModified,{suffix:"%",maximumFractionDigits:0}),D("maxPercentageModified","Max % Modified",t=>t.maxPercentageModified,{suffix:"%",maximumFractionDigits:0})],[]),Pe=s.useMemo(()=>[Q("name","Model",t=>t.name),D("count","Total Count",t=>t.count),D("deleteCount","Delete Count",t=>t.deleteCount),D("deleteRate","Delete Rate",t=>t.deleteRate,{suffix:"%",maximumFractionDigits:1})],[]),ct=s.useMemo(()=>[Q("source","Source",t=>t.source),D("avgQuality","Average Quality",t=>t.avgQuality,{suffix:"%",maximumFractionDigits:0}),D("count","Count",t=>t.count)],[]),Re=s.useMemo(()=>[Q("eventType","Event Type",t=>t.eventType),D("avgQuality","Average Quality",t=>t.avgQuality,{suffix:"%",maximumFractionDigits:0}),D("count","Count",t=>t.count)],[]),$e=s.useMemo(()=>[Q("name","Model",t=>t.name),D("consistency","Consistency",t=>t.consistency,{suffix:"%",maximumFractionDigits:0}),D("avgScore","Average Score",t=>t.avgScore,{suffix:"%",maximumFractionDigits:0}),D("count","Count",t=>t.count)],[]),ue=s.useCallback(t=>a?t==="crisis_map"?a.crisisMaps.length:t==="drone_image"?a.droneImages.length:0:0,[a]),Be=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.countries&&n.countries.forEach(o=>{o.r_code&&(i[o.r_code]=(i[o.r_code]||0)+1)})}),Object.entries(i).filter(([,n])=>n>0).map(([n,o])=>({name:C.find(d=>d.r_code===n)?.label||n,value:o}))},[a,C]),Ae=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};l.forEach(o=>{o.countries&&o.countries.forEach(d=>{d.r_code&&(i[d.r_code]=(i[d.r_code]||0)+1)})});const n=C.reduce((o,d)=>(d.r_code&&(o[d.r_code]={name:d.label,count:i[d.r_code]||0}),o),{});return Object.entries(n).sort(([,o],[,d])=>d.count-o.count).map(([,{name:o,count:d}],P)=>({id:P+1,name:o,count:d,percentage:l.length>0?Math.round(d/l.length*100):0}))},[a,C]),dt=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.source&&(i[n.source]=(i[n.source]||0)+1)}),Object.entries(i).filter(([,n])=>n>0).map(([n,o])=>({name:_.find(d=>d.s_code===n)?.label||n,value:o}))},[a,_]),ut=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.source&&(i[n.source]=(i[n.source]||0)+1)}),Object.entries(i).sort(([,n],[,o])=>o-n).map(([n,o],d)=>({id:d+1,name:Y(n),count:o,percentage:l.length>0?Math.round(o/l.length*100):0}))},[a,Y]),Fe=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.event_type&&(i[n.event_type]=(i[n.event_type]||0)+1)}),Object.entries(i).filter(([,n])=>n>0).map(([n,o])=>({name:x.find(d=>d.t_code===n)?.label||n,value:o}))},[a,x]),Oe=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.event_type&&(i[n.event_type]=(i[n.event_type]||0)+1)}),Object.entries(i).sort(([,n],[,o])=>o-n).map(([n,o],d)=>({id:d+1,name:_e(n),count:o,percentage:l.length>0?Math.round(o/l.length*100):0}))},[a,_e]),He=s.useCallback(t=>{if(!a)return"No data available";const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i=new Set;l.forEach(d=>{d.model&&i.add(d.model)}),console.log(`Debug ${t}:`,{totalImages:l.length,usedModels:Array.from(i),availableEditTimes:Object.keys(a.modelEditTimes),modelEditTimesData:a.modelEditTimes});const o=Object.entries(a.modelEditTimes).filter(([d])=>i.has(d)).flatMap(([,d])=>d);return o.length===0?"No data available":ie(M(o))},[a,ie,M]),Ve=s.useCallback(()=>{if(!a)return"No data available";const t=a.totalCaptions||0,l=a.percentageModified||0;return t>0?Math.round(l/t*100):0},[a]),ze=s.useCallback(()=>a&&a.deleteRate>=0?`${a.deleteRate}%`:"No data available",[a]),Ue=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i=new Set;return l.forEach(o=>{o.model&&i.add(o.model)}),Se.filter(o=>{const d=v.find(P=>P.label===o.name)?.m_code;return d&&i.has(d)})},[a,Se,v]),We=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i=new Set;return l.forEach(o=>{o.model&&i.add(o.model)}),Me.filter(o=>{const d=v.find(P=>P.label===o.name)?.m_code;return d&&i.has(d)})},[a,Me,v]),Qe=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.model&&(i[n.model]||(i[n.model]={count:0,deleteCount:0}),i[n.model].count++)}),Object.entries(i).map(([n,o],d)=>{const F=a.models?.[n]?.deleteCount||0,H=o.count>0?Math.round(F/o.count*100*10)/10:0;return{id:d+1,name:J(n),count:o.count,deleteCount:F,deleteRate:H}}).sort((n,o)=>o.count-n.count)},[a,J]),Ze=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.model&&(i[n.model]||(i[n.model]={count:0,totalAccuracy:0,totalContext:0,totalUsability:0}),i[n.model].count++,n.accuracy!=null&&(i[n.model].totalAccuracy+=n.accuracy),n.context!=null&&(i[n.model].totalContext+=n.context),n.usability!=null&&(i[n.model].totalUsability+=n.usability))}),Object.entries(i).map(([n,o],d)=>({id:d+1,name:J(n),count:o.count,accuracy:o.count>0?Math.round(o.totalAccuracy/o.count):0,context:o.count>0?Math.round(o.totalContext/o.count):0,usability:o.count>0?Math.round(o.totalUsability/o.count):0,totalScore:o.count>0?Math.round((o.totalAccuracy+o.totalContext+o.totalUsability)/(3*o.count)):0})).sort((n,o)=>o.totalScore-n.totalScore)},[a,J]),mt=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.source&&(i[n.source]||(i[n.source]={total:0,count:0,totalImages:0}),i[n.source].totalImages+=1,n.accuracy!=null&&(i[n.source].total+=n.accuracy,i[n.source].count+=1))}),Object.entries(i).map(([n,o],d)=>({id:d+1,source:Y(n),avgQuality:o.count>0?Math.round(o.total/o.count):0,count:o.totalImages}))},[a,Y]),qe=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i={};return l.forEach(n=>{n.event_type&&(i[n.event_type]||(i[n.event_type]={total:0,count:0,totalImages:0}),i[n.event_type].totalImages+=1,n.accuracy!=null&&(i[n.event_type].total+=n.accuracy,i[n.event_type].count+=1))}),Object.entries(i).map(([n,o],d)=>({id:d+1,eventType:_e(n),avgQuality:o.count>0?Math.round(o.total/o.count):0,count:o.totalImages}))},[a,_e]),Ge=s.useCallback(t=>{if(!a)return[];const l=t==="crisis_map"?a.crisisMaps:a.droneImages,i=new Set;return l.forEach(o=>{o.model&&i.add(o.model)}),Ie.filter(o=>{const d=v.find(P=>P.label===o.name)?.m_code;return d&&i.has(d)})},[a,Ie,v]);if(r)return e.jsx(je,{children:e.jsx("div",{className:c.loadingContainer,children:e.jsx(Et,{})})});if(!a)return e.jsx(je,{children:e.jsx("div",{className:c.errorContainer,children:e.jsx("div",{className:"text-red-500",children:"Failed to load analytics data. Please try again."})})});const me=["#F5333F","#F64752","#F75C65","#F87079","#F9858C","#FA999F","#FBADB2","#FCC2C5"];return e.jsx(je,{children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsx("div",{className:c.tabSelector,children:e.jsx(Tt,{name:"analytics-view",value:g,onChange:t=>{(t==="crisis_maps"||t==="drone_images")&&b(t)},options:O,keySelector:t=>t.key,labelSelector:t=>t.label})}),g==="crisis_maps"?e.jsxs("div",{className:c.chartGrid,children:[e.jsxs(z,{heading:"Summary Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.summaryStatsCards,children:[e.jsxs("div",{className:c.summaryStatsCard,children:[e.jsx("div",{className:c.summaryStatsCardValue,children:ue("crisis_map")}),e.jsx("div",{className:c.summaryStatsCardLabel,children:"Total Crisis Maps"})]}),e.jsxs("div",{className:c.summaryStatsCard,children:[e.jsx("div",{className:c.summaryStatsCardValue,children:"2000"}),e.jsx("div",{className:c.summaryStatsCardLabel,children:"Target Amount"})]})]}),e.jsxs("div",{className:c.progressSection,children:[e.jsxs("div",{className:c.progressLabel,children:[e.jsx("span",{children:"Progress towards target"}),e.jsxs("span",{children:[Math.round(ue("crisis_map")/2e3*100),"%"]})]}),e.jsx(Ye,{value:ue("crisis_map"),totalValue:2e3})]})]}),e.jsxs(z,{heading:"Distribution Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.userInteractionCards,children:[e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardLabel,children:"Regions Distribution"}),e.jsx("div",{className:c.chartContainer,children:e.jsx(xe,{data:Be("crisis_map"),valueSelector:t=>t.value,labelSelector:t=>t.name,keySelector:t=>t.name,colors:me,showPercentageInLegend:!0})}),e.jsx(Z,{name:"view-regions-details",variant:U?"primary":"secondary",onClick:()=>E(U?"none":"regions"),className:c.userInteractionCardButton,children:U?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardLabel,children:"Sources Distribution"}),e.jsx("div",{className:c.chartContainer,children:e.jsx(xe,{data:dt("crisis_map"),valueSelector:t=>t.value,labelSelector:t=>t.name,keySelector:t=>t.name,colors:me,showPercentageInLegend:!0})}),e.jsx(Z,{name:"view-sources-details",variant:ae?"primary":"secondary",onClick:()=>E(ae?"none":"sources"),className:c.userInteractionCardButton,children:ae?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardLabel,children:"Types Distribution"}),e.jsx("div",{className:c.chartContainer,children:e.jsx(xe,{data:Fe("crisis_map"),valueSelector:t=>t.value,labelSelector:t=>t.name,keySelector:t=>t.name,colors:me,showPercentageInLegend:!0})}),e.jsx(Z,{name:"view-types-details",variant:K?"primary":"secondary",onClick:()=>E(K?"none":"types"),className:c.userInteractionCardButton,children:K?"Hide Details":"View Details"})]})]}),U&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ae("crisis_map"),columns:De,keySelector:$,filtered:!1,pending:!1})}),ae&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:ut("crisis_map"),columns:lt,keySelector:$,filtered:!1,pending:!1})}),K&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Oe("crisis_map"),columns:Ee,keySelector:$,filtered:!1,pending:!1})})]}),e.jsxs(z,{heading:"User Interaction Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.userInteractionCards,children:[e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:He("crisis_map")}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Median Edit Time"}),e.jsx(Z,{name:"view-edit-time-details",variant:p?"primary":"secondary",onClick:()=>E(p?"none":"editTime"),className:c.userInteractionCardButton,children:p?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:Ve()}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Median % Modified"}),e.jsx(Z,{name:"view-percentage-details",variant:I?"primary":"secondary",onClick:()=>E(I?"none":"percentage"),className:c.userInteractionCardButton,children:I?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:ze()}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Delete Rate"}),e.jsx(Z,{name:"view-delete-details",variant:T?"primary":"secondary",onClick:()=>E(T?"none":"delete"),className:c.userInteractionCardButton,children:T?"Hide Details":"View Details"})]})]}),p&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ue("crisis_map"),columns:ke,keySelector:$,filtered:!1,pending:!1})}),I&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:We("crisis_map"),columns:Le,keySelector:$,filtered:!1,pending:!1})}),T&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Qe("crisis_map"),columns:Pe,keySelector:$,filtered:!1,pending:!1})})]}),e.jsx(z,{heading:"Model Performance",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ze("crisis_map"),columns:Te,keySelector:$,filtered:!1,pending:!1})})}),e.jsx(z,{heading:"Quality-Source Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.tableContainer,children:e.jsx(B,{data:mt("crisis_map"),columns:ct,keySelector:$,filtered:!1,pending:!1})})}),e.jsx(z,{heading:"Quality-Event Type Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.tableContainer,children:e.jsx(B,{data:qe("crisis_map"),columns:Re,keySelector:$,filtered:!1,pending:!1})})}),e.jsx(z,{heading:"Model Consistency Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.tableContainer,children:e.jsx(B,{data:Ge("crisis_map"),columns:$e,keySelector:$,filtered:!1,pending:!1})})})]}):e.jsxs("div",{className:c.chartGrid,children:[e.jsxs(z,{heading:"Summary Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.summaryStatsCards,children:[e.jsxs("div",{className:c.summaryStatsCard,children:[e.jsx("div",{className:c.summaryStatsCardValue,children:ue("drone_image")}),e.jsx("div",{className:c.summaryStatsCardLabel,children:"Total Drone Images"})]}),e.jsxs("div",{className:c.summaryStatsCard,children:[e.jsx("div",{className:c.summaryStatsCardValue,children:"2000"}),e.jsx("div",{className:c.summaryStatsCardLabel,children:"Target Amount"})]})]}),e.jsxs("div",{className:c.progressSection,children:[e.jsxs("div",{className:c.progressLabel,children:[e.jsx("span",{children:"Progress towards target"}),e.jsxs("span",{children:[Math.round(ue("drone_image")/2e3*100),"%"]})]}),e.jsx(Ye,{value:ue("drone_image"),totalValue:2e3})]})]}),e.jsxs(z,{heading:"Distribution Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.userInteractionCards,children:[e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardLabel,children:"Regions Distribution"}),e.jsx("div",{className:c.chartContainer,children:e.jsx(xe,{data:Be("drone_image"),valueSelector:t=>t.value,labelSelector:t=>t.name,keySelector:t=>t.name,colors:me,showPercentageInLegend:!0})}),e.jsx(Z,{name:"view-regions-details",variant:U?"primary":"secondary",onClick:()=>E(U?"none":"regions"),className:c.userInteractionCardButton,children:U?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardLabel,children:"Types Distribution"}),e.jsx("div",{className:c.chartContainer,children:e.jsx(xe,{data:Fe("drone_image"),valueSelector:t=>t.value,labelSelector:t=>t.name,keySelector:t=>t.name,colors:me,showPercentageInLegend:!0})}),e.jsx(Z,{name:"view-types-details",variant:K?"primary":"secondary",onClick:()=>E(K?"none":"types"),className:c.userInteractionCardButton,children:K?"Hide Details":"View Details"})]})]}),U&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ae("drone_image"),columns:De,keySelector:$,filtered:!1,pending:!1})}),K&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Oe("drone_image"),columns:Ee,keySelector:$,filtered:!1,pending:!1})})]}),e.jsxs(z,{heading:"User Interaction Statistics",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:[e.jsxs("div",{className:c.userInteractionCards,children:[e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:He("drone_image")}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Median Edit Time"}),e.jsx(Z,{name:"view-edit-time-details",variant:p?"primary":"secondary",onClick:()=>E(p?"none":"editTime"),className:c.userInteractionCardButton,children:p?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:Ve()}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Median % Modified"}),e.jsx(Z,{name:"view-percentage-details",variant:I?"primary":"secondary",onClick:()=>E(I?"none":"percentage"),className:c.userInteractionCardButton,children:I?"Hide Details":"View Details"})]}),e.jsxs("div",{className:c.userInteractionCard,children:[e.jsx("div",{className:c.userInteractionCardValue,children:ze()}),e.jsx("div",{className:c.userInteractionCardLabel,children:"Delete Rate"}),e.jsx(Z,{name:"view-delete-details",variant:T?"primary":"secondary",onClick:()=>E(T?"none":"delete"),className:c.userInteractionCardButton,children:T?"Hide Details":"View Details"})]})]}),p&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ue("drone_image"),columns:ke,keySelector:$,filtered:!1,pending:!1})}),I&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:We("drone_image"),columns:Le,keySelector:$,filtered:!1,pending:!1})}),T&&e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Qe("drone_image"),columns:Pe,keySelector:$,filtered:!1,pending:!1})})]}),e.jsx(z,{heading:"Model Performance",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.modelPerformance,children:e.jsx(B,{data:Ze("drone_image"),columns:Te,keySelector:$,filtered:!1,pending:!1})})}),e.jsx(z,{heading:"Quality-Event Type Correlation",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.tableContainer,children:e.jsx(B,{data:qe("drone_image"),columns:Re,keySelector:$,filtered:!1,pending:!1})})}),e.jsx(z,{heading:"Model Consistency Analysis",headingLevel:3,withHeaderBorder:!0,withInternalPadding:!0,children:e.jsx("div",{className:c.tableContainer,children:e.jsx(B,{data:Ge("drone_image"),columns:$e,keySelector:$,filtered:!1,pending:!1})})})]})]})})}export{jn as default};
py—backend/static/index-DkIjYZRi.css ADDED
@@ -0,0 +1 @@
 
 
1
+ :root{--go-ui-font-family-sans-serif: Poppins, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, sans-serif;--go-ui-font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;--go-ui-font-family-mono: SFMono-Regular, Menlo, Monaco, Consolas, monospace;--base-font-size: .875rem;--go-ui-font-size-export: .6875rem;--go-ui-font-size-2xs: calc(var(--base-font-size) * .625);--go-ui-font-size-xs: calc(var(--base-font-size) * .75);--go-ui-font-size-sm: calc(var(--base-font-size) * .875);--go-ui-font-size-md: var(--base-font-size);--go-ui-font-size-lg: calc(var(--base-font-size) * 1.125);--go-ui-font-size-xl: calc(var(--base-font-size) * 1.25);--go-ui-font-size-2xl: calc(var(--base-font-size) * 1.5);--go-ui-font-size-3xl: calc(var(--base-font-size) * 1.875);--go-ui-font-size-4xl: calc(var(--base-font-size) * 2.375);--go-ui-height-icon-multiplier: 1.33em;--go-ui-height-brand-icon: 2.5rem;--go-ui-height-social-icon: 2.5rem;--go-ui-height-key-figure-icon: 3rem;--go-ui-height-status-icon: 2.5rem;--go-ui-height-compact-status-icon: 2rem;--go-ui-line-height-none: 1;--go-ui-line-height-xs: 1.25;--go-ui-line-height-sm: 1.375;--go-ui-line-height-md: 1.5;--go-ui-font-weight-light: 300;--go-ui-font-weight-normal: 400;--go-ui-font-weight-medium: 500;--go-ui-font-weight-semibold: 600;--go-ui-font-weight-bold: 700;--go-ui-width-screen-sm: 640px;--go-ui-width-screen-md: 768px;--go-ui-width-screen-lg: 1024px;--go-ui-width-screen-xl: 1280px;--go-ui-width-screen-2xl: 1536px;--base-spacing: 1rem;--go-ui-spacing-4xs: calc(var(--base-spacing) * .0625);--go-ui-spacing-3xs: calc(var(--base-spacing) * .125);--go-ui-spacing-2xs: calc(var(--base-spacing) * .25);--go-ui-spacing-xs: calc(var(--base-spacing) * .4);--go-ui-spacing-sm: calc(var(--base-spacing) * .625);--go-ui-spacing-md: calc(var(--base-spacing) * 1);--go-ui-spacing-lg: calc(var(--base-spacing) * 1.5);--go-ui-spacing-xl: calc(var(--base-spacing) * 2.25);--go-ui-spacing-2xl: calc(var(--base-spacing) * 3.5);--go-ui-spacing-3xl: calc(var(--base-spacing) * 4.75);--go-ui-spacing-4xl: calc(var(--base-spacing) * 6);--go-ui-spacing-5xl: calc(var(--base-spacing) * 7.25);--go-ui-width-separator-sm: 1pt;--go-ui-width-separator-md: 2pt;--go-ui-width-separator-lg: 4pt;--go-ui-width-separator-xl: 8pt;--go-ui-width-separator-thin: 1pt;--go-ui-width-separator-small: 2pt;--go-ui-width-separator-thick: 4pt;--go-ui-width-separator-medium: 6pt;--go-ui-width-separator-large: 8pt;--go-ui-width-separator-dense: 12pt;--go-ui-width-separator-extra-dense: 14pt;--go-ui-border-radius-none: 0;--go-ui-border-radius-sm: .125rem;--go-ui-border-radius-md: .25rem;--go-ui-border-radius-lg: .5rem;--go-ui-border-radius-xl: .75rem;--go-ui-border-radius-2xl: 1rem;--go-ui-border-radius-3xl: 1.5rem;--go-ui-border-radius-full: 9999px;--go-ui-box-shadow-xs: 0 1pt 2pt rgba(0, 0, 0, .2);--go-ui-box-shadow-sm: 0 1pt 4pt rgba(0, 0, 0, .2);--go-ui-box-shadow-md: 0 1pt 5pt -2pt rgba(0, 0, 0, .375);--go-ui-box-shadow-lg: 0 2pt 8pt -4pt rgba(0, 0, 0, .5);--go-ui-box-shadow-xl: 0 3pt 16pt -6pt rgba(0, 0, 0, .5);--go-ui-box-shadow-2xl: 0 4pt 16pt -6pt rgba(0, 0, 0, 1);--go-ui-box-shadow-inner: inset 0 2pt 4pt 0 rgba(0, 0, 0, .375);--go-ui-box-shadow-none: 0 0 rgba(0,0,0,0);--go-ui-duration-transition-fast: .1s;--go-ui-duration-transition-medium: .2s;--go-ui-duration-transition-slow: .5s;--go-ui-duration-animation-fast: .5s;--go-ui-duration-animation-medium: 1s;--go-ui-duration-animation-slow: 2s;--go-ui-color-orange: #FF8000;--go-ui-color-green: #7FB845;--go-ui-color-blue: #3FA2F7;--go-ui-color-red: #F75C65;--go-ui-color-yellow: #d9b100;--go-ui-color-semantic-yellow: #FFB443;--go-ui-color-black: #000000;--go-ui-color-white: #ffffff;--go-ui-color-gray-10: #FAFAFA;--go-ui-color-gray-20: #F2F2F2;--go-ui-color-gray-30: #E0E0E0;--go-ui-color-gray-40: #C6C6C6;--go-ui-color-gray-50: #A8A8A8;--go-ui-color-gray-60: #8D8D8D;--go-ui-color-gray-70: #6F6F6F;--go-ui-color-gray-80: #525252;--go-ui-color-gray-90: #323232;--go-ui-color-red-10: #FDD6D9;--go-ui-color-red-20: #FCC2C5;--go-ui-color-red-30: #FBADB2;--go-ui-color-red-40: #FA999F;--go-ui-color-red-50: #F9858C;--go-ui-color-red-60: #F87079;--go-ui-color-red-70: #F75C65;--go-ui-color-red-80: #F64752;--go-ui-color-red-90: #F5333F;--go-ui-color-dark-blue-10: #009CDD;--go-ui-color-dark-blue-20: #418FDE;--go-ui-color-dark-blue-30: #236192;--go-ui-color-dark-blue-40: #1B365D;--go-ui-color-blue-10: #E0E3E7;--go-ui-color-blue-20: #CCD2D9;--go-ui-color-blue-30: #AEB7C2;--go-ui-color-blue-40: #99A5B3;--go-ui-color-blue-50: #7D8B9D;--go-ui-color-blue-60: #67788D;--go-ui-color-blue-70: #4D617A;--go-ui-color-blue-80: #344B67;--go-ui-color-blue-90: #011E41;--go-ui-color-primary-red: var(--go-ui-color-red-90);--go-ui-color-primary-blue: var(--go-ui-color-blue-90);--go-ui-color-primary-gray: var(--go-ui-color-gray-90);--go-ui-color-red-hover: #DE2934;--go-ui-color-purple-per: #8648B3;--go-ui-color-orange-per: #FF8654;--go-ui-color-blue-per: #418FDE;--go-ui-color-teal-per: #00B2A2;--go-ui-color-red-per: #DA283D;--go-ui-color-text-black: rgba(0, 0, 0, 1);--go-ui-color-text: rgba(0, 0, 0, .8);--go-ui-color-text-light: rgba(0, 0, 0, .5);--go-ui-color-positive: var(--go-ui-color-green);--go-ui-color-information: var(--go-ui-color-blue);--go-ui-color-warning: var(--go-ui-color-yellow);--go-ui-color-negative: var(--go-ui-color-red);--go-ui-color-separator: rgba(0, 0, 0, .1);--go-ui-color-separator-light: rgba(0, 0, 0, .05);--go-ui-color-background: #f7f7f7;--go-ui-color-foreground: #ffffff;--go-ui-color-element-background: rgba(0, 0, 0, .06);--go-ui-color-readonly-element-background: rgba(0, 0, 0, .03);--go-ui-color-background-overlay: rgba(255, 255, 255, .88);--go-ui-color-background-overlay-dark: rgba(0, 0, 0, .5);--go-ui-color-background-hover: rgba(0, 0, 0, .06);--go-ui-opacity-disabled-element: .5;--go-ui-opacity-chart-point: .8;--go-ui-opacity-message: .8;--go-ui-content-min-height: 13rem;--go-ui-compact-content-min-height: 7rem;--go-ui-width-min-modal: 18rem;--go-ui-height-min-modal: 11rem;--go-ui-width-modal-sm: 32rem;--go-ui-height-modal-sm: 100%;--go-ui-width-modal-md: 42rem;--go-ui-height-modal-md: 100%;--go-ui-width-modal-lg: 64rem;--go-ui-height-modal-lg: 100%;--go-ui-width-modal-xl: 92rem;--go-ui-height-modal-xl: 100%;--go-ui-saturate-0: 0;--go-ui-saturate-50: .5;--go-ui-saturate-100: 1;--go-ui-saturate-150: 1.5;--go-ui-saturate-200: 2;--go-ui-color-hazard-fi: #b7c992;--go-ui-color-map-dot-appeals: #f5333f;--go-ui-color-map-dot-dref: #ff9e00;--go-ui-color-map-dot-fba: #ff6b00;--go-ui-color-map-dot-multiple-types: #4c5d9b;--go-ui-width-content-max: 50rem;--go-ui-page-header-description-width-max: var(--go-ui-width-content-max);--go-ui-page-width-max: 90rem;--mapbox-icon-width: 88px;--go-ui-export-page-margin: 10mm 10mm 16mm 10mm}@media screen and (max-width: 40rem){:root{--go-ui-font-size-2xs: calc(var(--base-font-size) * .625);--go-ui-font-size-xs: calc(var(--base-font-size) * .75);--go-ui-font-size-sm: calc(var(--base-font-size) * .875);--go-ui-font-size-md: calc(var(--base-font-size) * 1);--go-ui-font-size-lg: calc(var(--base-font-size) * 1.125);--go-ui-font-size-xl: calc(var(--base-font-size) * 1.25);--go-ui-font-size-2xl: calc(var(--base-font-size) * 1.4);--go-ui-font-size-3xl: calc(var(--base-font-size) * 1.6);--go-ui-font-size-4xl: calc(var(--base-font-size) * 1.8)}}@media screen and (max-width: 40rem){:root{--go-ui-spacing-4xs: calc(var(--base-spacing) * .0625);--go-ui-spacing-3xs: calc(var(--base-spacing) * .125);--go-ui-spacing-2xs: calc(var(--base-spacing) * .25);--go-ui-spacing-xs: calc(var(--base-spacing) * .4);--go-ui-spacing-sm: calc(var(--base-spacing) * .625);--go-ui-spacing-md: calc(var(--base-spacing) * 1);--go-ui-spacing-lg: calc(var(--base-spacing) * 1.25);--go-ui-spacing-xl: calc(var(--base-spacing) * 1.5625);--go-ui-spacing-2xl: calc(var(--base-spacing) * 1.95);--go-ui-spacing-3xl: calc(var(--base-spacing) * 2.44);--go-ui-spacing-4xl: calc(var(--base-spacing) * 3);--go-ui-spacing-5xl: calc(var(--base-spacing) * 3.8)}}/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.relative{position:relative}.static{position:static}.sticky{position:sticky}.left-1\/2{left:50%}.z-50{z-index:50}.mx-auto{margin-inline:auto}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.min-h-\[60vh\]{min-height:60vh}.min-h-\[400px\]{min-height:400px}.w-full{width:100%}.min-w-\[300px\]{min-width:300px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-none{--tw-border-style:none;border-style:none}.bg-transparent{background-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.object-cover{-o-object-fit:cover;object-fit:cover}.text-center{text-align:center}.text-left{text-align:left}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.opacity-50{opacity:.5}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}}*{box-sizing:border-box}@media screen{html{scrollbar-gutter:stable;margin:0;padding:0}}body{line-height:var(--go-ui-line-height-md);color:var(--go-ui-color-text);font-family:var(--go-ui-font-family-sans-serif);font-size:var(--go-ui-font-size-md);font-weight:var(--go-ui-font-weight-normal)}@media screen{body{background-color:var(--go-ui-color-background);margin:0;padding:0}}ul,ol,p{margin:0}@media print{@page{size:portrait A4;margin:10mm 10mm 16mm}body{font-family:Open Sans,sans-serif}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}._raw-button_1p3om_1{position:relative;outline-offset:var(--go-ui-width-separator-lg);border:0;background-color:transparent;cursor:pointer;padding:0;color:inherit;font-family:inherit;font-size:inherit}._raw-button_1p3om_1:focus-visible,._raw-button_1p3om_1._focused_1p3om_13{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40);outline-offset:-4px}._button_18a84_1{--color-border: transparent;--color-text: inherit;--color-background: transparent;--font-size: inherit;--border-radius: var(--go-ui-border-radius-full);--text-transform: none;--cursor: default;--padding: var(--go-ui-spacing-3xs) var(--go-ui-spacing-lg);display:inline-flex;position:relative;align-items:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);cursor:default;cursor:var(--cursor);padding:var(--padding);width:-moz-fit-content;width:fit-content;max-width:100%;overflow:hidden;text-transform:none;text-transform:var(--text-transform);line-height:var(--go-ui-line-height-xs);color:inherit;color:var(--color-text);font-family:inherit;font-size:inherit;font-size:var(--font-size);font-weight:var(--go-ui-font-weight-medium)}._button_18a84_1._ellipsized_18a84_29{flex-grow:1}._button_18a84_1._ellipsized_18a84_29 ._children_18a84_32{display:block;min-width:0}._button_18a84_1._ellipsized_18a84_29 ._children_18a84_32 ._overflow-wrapper_18a84_36{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._button_18a84_1._primary_18a84_44 ._children_18a84_32,._button_18a84_1._secondary_18a84_45 ._children_18a84_32{text-align:center}._button_18a84_1._primary_18a84_44._no-spacing_18a84_50,._button_18a84_1._secondary_18a84_45._no-spacing_18a84_50{--padding: 0}._button_18a84_1._primary_18a84_44._condensed-spacing_18a84_54,._button_18a84_1._secondary_18a84_45._condensed-spacing_18a84_54,._button_18a84_1._primary_18a84_44._compact-spacing_18a84_58,._button_18a84_1._secondary_18a84_45._compact-spacing_18a84_58{--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm)}._button_18a84_1._primary_18a84_44._cozy-spacing_18a84_62,._button_18a84_1._secondary_18a84_45._cozy-spacing_18a84_62,._button_18a84_1._primary_18a84_44._default-spacing_18a84_66,._button_18a84_1._secondary_18a84_45._default-spacing_18a84_66{--padding: var(--go-ui-spacing-3xs) var(--go-ui-spacing-md)}._button_18a84_1._primary_18a84_44._comfortable-spacing_18a84_70,._button_18a84_1._secondary_18a84_45._comfortable-spacing_18a84_70{--padding: var(--go-ui-spacing-2xs) var(--go-ui-spacing-lg)}._button_18a84_1._primary_18a84_44._relaxed-spacing_18a84_74,._button_18a84_1._secondary_18a84_45._relaxed-spacing_18a84_74{--padding: var(--go-ui-spacing-xs) var(--go-ui-spacing-xl)}._button_18a84_1._primary_18a84_44._loose-spacing_18a84_78,._button_18a84_1._secondary_18a84_45._loose-spacing_18a84_78{--padding: var(--go-ui-spacing-sm) var(--go-ui-spacing-2xl)}._button_18a84_1._primary_18a84_44{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._button_18a84_1._primary_18a84_44._disabled_18a84_88{filter:saturate(50%)}._button_18a84_1._primary_18a84_44:not(._disabled_18a84_88):hover{--color-background: var(--go-ui-color-red-hover)}._button_18a84_1._secondary_18a84_45{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._button_18a84_1._secondary_18a84_45._disabled_18a84_88{filter:saturate(50%)}._button_18a84_1._secondary_18a84_45:not(._disabled_18a84_88):hover{background-color:var(--go-ui-color-red-hover);color:var(--go-ui-color-white)}._button_18a84_1._tertiary_18a84_116{--color-border: transparent;--color-background: transparent;--color-text: inherit;--padding: 0;--border-radius: unset}._button_18a84_1._tertiary_18a84_116:not(._disabled_18a84_88):hover{--color-text: var(--go-ui-color-primary-red)}._button_18a84_1._tertiary-on-dark_18a84_130{--color-border: transparent;--color-background: transparent;--color-text: var(--go-ui-color-white);--padding: 0;--border-radius: unset}._button_18a84_1._tertiary-on-dark_18a84_130:not(._disabled_18a84_88):hover{opacity:.8}._button_18a84_1._dropdown-item_18a84_144{display:flex;width:100%;text-align:left;--border-radius: unset;--padding: var(--go-ui-spacing-sm) var(--go-ui-spacing-lg)}._button_18a84_1._dropdown-item_18a84_144:hover{background-color:var(--go-ui-color-background-hover)}._button_18a84_1._disabled_18a84_88{opacity:var(--go-ui-opacity-disabled-element);--cursor: not-allowed}._button_18a84_1:not(._disabled_18a84_88){--cursor: pointer}._basic-layout_v9jro_1{display:flex;align-items:flex-start}._basic-layout_v9jro_1._with-wrap_v9jro_5{flex-wrap:wrap}._basic-layout_v9jro_1 ._icons-container_v9jro_9{display:flex;align-items:flex-start}._basic-layout_v9jro_1 ._children-container_v9jro_14{display:flex;flex-grow:1}._basic-layout_v9jro_1 ._actions-container_v9jro_19{display:flex;align-items:flex-start}._basic-layout_v9jro_1:not(._with-wrap_v9jro_5) ._icons-container_v9jro_9{flex-shrink:0}._basic-layout_v9jro_1:not(._with-wrap_v9jro_5) ._actions-container_v9jro_19{flex-shrink:0}._alert_uuuo4_1{display:flex;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-2xl);width:calc(14rem + 16vw);color:var(--go-ui-color-white)}._alert_uuuo4_1 ._icon_uuuo4_8,._alert_uuuo4_1 ._close-icon_uuuo4_12{font-size:var(--go-ui-font-size-2xl)}._alert_uuuo4_1._info_uuuo4_16{background-color:var(--go-ui-color-gray-80)}._alert_uuuo4_1._success_uuuo4_20{background-color:var(--go-ui-color-positive)}._alert_uuuo4_1._danger_uuuo4_24{background-color:var(--go-ui-color-negative)}._alert_uuuo4_1._warning_uuuo4_28{background-color:var(--go-ui-color-warning)}._container_lyve2_1{--num-columns: 2;--max-width: calc(var(--go-ui-page-width-max) * .8);display:flex;flex-direction:column}._container_lyve2_1 ._header_lyve2_8{flex-shrink:0}._container_lyve2_1 ._header_lyve2_8 ._centered-header-description-container_lyve2_11{display:flex;flex-direction:row;justify-content:center}._container_lyve2_1 ._header_lyve2_8 ._centered-header-description-container_lyve2_11 ._centered-description_lyve2_16{max-width:var(--go-ui-page-header-description-width-max);text-align:center}._container_lyve2_1._with-border-and-header-background_lyve2_23{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-md)}._container_lyve2_1._with-border-and-header-background_lyve2_23 ._header_lyve2_8{border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-background)}._container_lyve2_1 ._border_lyve2_33{flex-shrink:0;margin:0;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._container_lyve2_1 ._content_lyve2_39{flex-grow:1}._container_lyve2_1 ._content_lyve2_39._pending-overlaid_lyve2_42{isolation:isolate;position:relative;min-height:6rem}._container_lyve2_1 ._content_lyve2_39._pending-overlaid_lyve2_42 ._message_lyve2_47{z-index:1}._container_lyve2_1 ._footer_lyve2_53{flex-shrink:0}._container_lyve2_1._with-grid-view_lyve2_57>._content_lyve2_39{display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / var(--num-columns)),1fr))}._container_lyve2_1._with-grid-view_lyve2_57>._content_lyve2_39 ._message_lyve2_47{grid-column:1 / -1}._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67{--num-columns: 2}@media screen and (max-width: 55rem){._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67{--max-width: 60rem}}@media screen and (max-width: 30rem){._container_lyve2_1._with-grid-view_lyve2_57._two-columns_lyve2_67>._content_lyve2_39{grid-template-columns:1fr}}._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82{--num-columns: 3}@media screen and (max-width: 55rem){._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82{--max-width: 60rem}}@media screen and (max-width: 30rem){._container_lyve2_1._with-grid-view_lyve2_57._three-columns_lyve2_82>._content_lyve2_39{grid-template-columns:1fr}}._container_lyve2_1._with-grid-view_lyve2_57._four-columns_lyve2_96{--num-columns: 4}._container_lyve2_1._with-grid-view_lyve2_57._five-columns_lyve2_100{--num-columns: 5}._container_lyve2_1._with-vertical-view_lyve2_105>._content_lyve2_39{display:flex;flex-direction:column}._container_lyve2_1._with-overflow-in-content_lyve2_112>._content_lyve2_39{overflow:auto}._default-message_wu986_1._overlay_wu986_2{position:absolute;top:0;left:0;width:100%;height:100%}._message_176iw_1{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-sm);justify-content:center;opacity:var(--go-ui-opacity-message);background-color:var(--go-ui-color-foreground);padding:var(--go-ui-spacing-md);min-height:var(--go-ui-content-min-height);text-align:center}._message_176iw_1 ._icon_176iw_13{color:var(--go-ui-color-text-light);font-size:var(--go-ui-height-status-icon)}._message_176iw_1 ._icon_176iw_13 ._spinner_176iw_17{font-size:var(--go-ui-height-compact-status-icon)}._message_176iw_1 ._title_176iw_22{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-2xl)}._message_176iw_1._errored_176iw_27 ._title_176iw_22{color:var(--go-ui-color-primary-red)}._message_176iw_1._compact_176iw_33{padding:var(--go-ui-spacing-sm);min-height:var(--go-ui-compact-content-min-height)}._message_176iw_1._compact_176iw_33 ._title_176iw_22{font-size:var(--go-ui-font-size-lg)}._message_176iw_1._compact_176iw_33 ._icon_176iw_13{font-size:var(--go-ui-font-size-2xl)}._message_176iw_1._compact_176iw_33 ._icon_176iw_13 ._spinner_176iw_17{font-size:var(--go-ui-font-size-xl)}._spinner_50bgg_1{display:inline-flex;border-radius:var(--go-ui-border-radius-full);background:var(--go-ui-color-gray-40);padding:.2em;line-height:0;gap:.2em}._spinner_50bgg_1 ._spinner-bounce_50bgg_9{border-radius:50%;background:var(--go-ui-color-white);width:.6em;height:.6em;animation:_spinner-bounce-delay_50bgg_1 var(--go-ui-duration-animation-slow) infinite ease-in-out both}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(1){animation-delay:calc(var(--go-ui-duration-animation-fast))}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(2){animation-delay:calc(var(--go-ui-duration-animation-fast) * 2)}._spinner_50bgg_1 ._spinner-bounce_50bgg_9:nth-child(3){animation-delay:calc(var(--go-ui-duration-animation-fast) * 3)}@keyframes _spinner-bounce-delay_50bgg_1{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}._filter-bar_16xsj_1{display:flex;flex-direction:column}._grid-with-actions_16xsj_6{display:flex}._grid-with-actions_16xsj_6 ._grid_16xsj_6{display:grid;flex-grow:1;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}._grid-with-actions_16xsj_6 ._actions_16xsj_15{display:flex}@media screen and (max-width: 30rem){._grid-with-actions_16xsj_6{flex-wrap:wrap}}._header_537v1_1{display:flex;flex-direction:column}._heading_1uxwj_1{--font-size: var(--go-ui-font-size-xl);--line-height: var(--go-ui-line-height-sm);margin:0;line-height:var(--line-height);font-size:var(--font-size);font-weight:var(--go-ui-font-weight-semibold)}._heading_1uxwj_1._level-one_1uxwj_9{--font-size: var(--go-ui-font-size-4xl)}@media print{._heading_1uxwj_1._level-one_1uxwj_9{color:var(--go-ui-color-primary-blue)}}._heading_1uxwj_1._level-two_1uxwj_17{--font-size: var(--go-ui-font-size-2xl)}@media print{._heading_1uxwj_1._level-two_1uxwj_17{color:var(--go-ui-color-primary-blue)}}._heading_1uxwj_1._level-three_1uxwj_25{--font-size: var(--go-ui-font-size-xl)}@media print{._heading_1uxwj_1._level-three_1uxwj_25{color:var(--go-ui-color-primary-red)}}._heading_1uxwj_1._level-four_1uxwj_33{--font-size: var(--go-ui-font-size-lg)}._heading_1uxwj_1._level-five_1uxwj_37{--font-size: var(--go-ui-font-size-md)}._heading_1uxwj_1._level-six_1uxwj_41{--font-size: var(--go-ui-font-size-sm)}._heading_1uxwj_1 ._ellipsized-text_1uxwj_45{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._heading_1uxwj_1._ellipsized_1uxwj_45{width:100%;overflow:auto}._alert-container_rcayz_1{isolation:isolate;position:fixed;top:0;left:50%;transform:translate(-50%);z-index:1;padding:var(--go-ui-spacing-2xl) 0;max-height:calc(100vh - 2 * var(--go-ui-spacing-2xl));overflow:auto;scrollbar-width:none}._alert-container_rcayz_1::-webkit-scrollbar{display:none}._alert-container_rcayz_1 ._alert_rcayz_1{margin:var(--go-ui-spacing-sm) 0}._bar-chart_3dbpc_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-sm)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6{display:flex;align-items:center;gap:var(--go-ui-spacing-md)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6._hoverable_3dbpc_11:hover{background-color:var(--go-ui-color-background-hover)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._label_3dbpc_17{width:30%;font-weight:var(--go-ui-font-weight-medium)}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._bar-track_3dbpc_22{border-radius:.3rem;background-color:var(--go-ui-color-gray-30);width:60%;height:.6rem}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._bar-track_3dbpc_22 ._bar_3dbpc_1{border-radius:.3rem;background-color:var(--go-ui-color-primary-red);height:100%}._bar-chart_3dbpc_1 ._bar-row_3dbpc_6 ._value_3dbpc_36{width:10%;font-weight:var(--go-ui-font-weight-medium)}._number-output_1blvi_1{display:inline;font-size:inherit}._tooltip-dummy_rbf3f_1{opacity:0;width:0;height:0}._tooltip-content_rbf3f_7{opacity:0;padding:0;animation:_slide-down_rbf3f_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-fast)}._pointer_rbf3f_14{opacity:0;animation:_fade-in_rbf3f_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-medium)}@keyframes _slide-down_rbf3f_1{0%{transform:translateY(-5pt);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _fade-in_rbf3f_1{0%{opacity:0}to{opacity:1}}._popup_cws49_1{position:fixed;border-radius:var(--go-ui-spacing-xs);box-shadow:var(--go-ui-box-shadow-2xl);background-color:var(--go-ui-color-white);max-height:40vh;overflow:auto}._popup_cws49_1._top-orientation_cws49_9{box-shadow:0 -8pt 20pt -5pt #00000080}._pointer_cws49_15{position:fixed;transform:translate(-50%);background-color:transparent;line-height:0;color:var(--go-ui-color-white);font-size:.5rem;pointer-events:none;filter:drop-shadow(0 -1pt 1pt rgba(0,0,0,.1))}._pointer_cws49_15 ._icon_cws49_25{width:2em;height:1em;fill:currentColor}._pointer_cws49_15._top-orientation_cws49_9{transform:translate(-50%) rotate(180deg)}._block-loading_1jl3q_1{display:flex;padding:var(--go-ui-spacing-sm);width:100%;min-height:var(--go-ui-content-min-height)}._block-loading_1jl3q_1 ._spinner_1jl3q_7{font-size:var(--go-ui-font-size-4xl)}._block-loading_1jl3q_1 ._inner_1jl3q_11{display:flex;align-items:center;flex-direction:column;flex-grow:1;justify-content:center;padding:var(--go-ui-spacing-sm);gap:var(--go-ui-spacing-md)}._block-loading_1jl3q_1._with-border_1jl3q_21 ._inner_1jl3q_11{border:var(--go-ui-width-separator-md) dashed var(--go-ui-color-gray-40);border-radius:var(--go-ui-border-radius-xl)}._block-loading_1jl3q_1._compact_1jl3q_28{min-height:var(--go-ui-compact-content-min-height)}._block-loading_1jl3q_1._compact_1jl3q_28 ._spinner_1jl3q_7{font-size:var(--go-ui-font-size-xl)}._overlay_cnygi_1{position:absolute;background-color:var(--go-ui-color-background-overlay);width:100%;height:100%}._overlay_cnygi_1._dark_cnygi_7{background-color:var(--go-ui-color-background-overlay-dark)}._body-overlay_1iouu_1{display:flex;position:fixed;top:0;left:0;align-items:center;justify-content:center;width:100vw;height:100vh}._radio-input_17cft_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._radio-input_17cft_1 ._radio-list-container_17cft_6{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-xs) var(--go-ui-spacing-md);min-height:1em}._radio-input_17cft_1._disabled_17cft_13{opacity:var(--go-ui-opacity-disabled-element);filter:saturate(50%)}._radio-input_17cft_1 ._input-hint_17cft_18{padding:var(--go-ui-spacing-xs);color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-sm)}._input-error_1sxiz_1{display:flex;align-items:center;opacity:0;background-color:var(--go-ui-color-red);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-md);animation:_slide-down_1sxiz_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-fast);color:var(--go-ui-color-white);gap:var(--go-ui-spacing-sm)}._pointer_1sxiz_14{opacity:0;animation:_fade-in_1sxiz_1 var(--go-ui-duration-transition-medium) ease-in forwards;animation-delay:var(--go-ui-duration-transition-medium);color:var(--go-ui-color-red)}@keyframes _slide-down_1sxiz_1{0%{transform:translateY(-5pt);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes _fade-in_1sxiz_1{0%{opacity:0}to{opacity:1}}._input-label_3lsx4_1{display:flex;padding:0 var(--go-ui-spacing-2xs);color:var(--go-ui-color-gray-70);gap:var(--go-ui-spacing-xs)}._input-label_3lsx4_1._disabled_3lsx4_7{color:var(--go-ui-color-gray-40)}._input-label_3lsx4_1 ._required_3lsx4_11{color:var(--go-ui-color-primary-red)}._radio_1uudv_1{--cursor: default;cursor:default;cursor:var(--cursor)}._radio_1uudv_1 ._icon_1uudv_5{transition:var(--go-ui-duration-transition-medium) color ease-in-out;font-size:var(--go-ui-height-icon-multiplier)}._radio_1uudv_1 ._content_1uudv_10{flex-direction:column;gap:0;line-height:var(--go-ui-line-height-sm)}._radio_1uudv_1 ._description_1uudv_16{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._radio_1uudv_1 ._input_1uudv_21{position:absolute;opacity:0;margin:0;padding:0;width:0;height:0;pointer-events:none}._radio_1uudv_1 ._input_1uudv_21:focus-visible+div{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40);outline-offset:1px;border-radius:50%}._radio_1uudv_1._active_1uudv_37 ._icon_1uudv_5{color:var(--go-ui-color-primary-red)}._radio_1uudv_1._disabled_1uudv_43{opacity:var(--go-ui-opacity-disabled-element)}._radio_1uudv_1:not(._disabled_1uudv_43):focus ._icon_1uudv_5,._radio_1uudv_1:not(._disabled_1uudv_43):hover ._icon_1uudv_5{color:var(--go-ui-color-primary-red)}._radio_1uudv_1:not(._disabled_1uudv_43):not(._read-only_1uudv_55){--cursor: pointer}._boolean-output_kg1uq_1{color:inherit}._breadcrumbs_c7c54_1{display:flex;align-items:center;flex-wrap:wrap}._breadcrumbs_c7c54_1 ._item_c7c54_6{display:flex}._breadcrumbs_c7c54_1 ._item_c7c54_6:not(:last-child){color:var(--go-ui-color-gray-70)}._breadcrumbs_c7c54_1 ._item_c7c54_6:last-child{color:var(--go-ui-color-black)}._breadcrumbs_c7c54_1 ._separator_c7c54_18{display:flex;justify-content:center;color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-xl)}._chart-axes_8lppt_1 ._y-axis-label-container_8lppt_2{transform:rotate(-90deg)}._chart-axes_8lppt_1 ._y-axis-label-container_8lppt_2 ._y-axis-label_8lppt_2{display:flex;justify-content:center;width:100%;height:100%}._chart-axes_8lppt_1 ._y-axis-tick-text_8lppt_13{display:flex;align-items:center;justify-content:flex-end;padding:0 var(--go-ui-spacing-2xs);text-align:right;word-break:break-word;font-size:var(--go-ui-font-size-xs)}._chart-axes_8lppt_1 ._x-axis-tick_8lppt_23 ._x-axis-tick-text_8lppt_24{transition:var(--go-ui-duration-transition-medium) ease-in-out transform;padding:var(--go-ui-spacing-2xs) 0;text-align:center;word-break:break-word;font-size:var(--go-ui-font-size-xs)}@media screen and (max-width: 30rem){._chart-axes_8lppt_1 ._x-axis-tick_8lppt_23 ._x-axis-tick-text_8lppt_24{transform:rotate(-30deg) translate(-10%) translateY(20%);padding:0;font-size:var(--go-ui-font-size-2xs)}}._chart-axes_8lppt_1 ._x-axis-grid-line_8lppt_40,._chart-axes_8lppt_1 ._y-axis-grid-line_8lppt_41{stroke:var(--go-ui-color-gray-60);stroke-dasharray:4 4;stroke-opacity:.5}._chart-axes_8lppt_1 ._x-axis-grid-line_8lppt_40._hovered_8lppt_46,._chart-axes_8lppt_1 ._y-axis-grid-line_8lppt_41._hovered_8lppt_46{stroke-opacity:1}._chart-axes_8lppt_1 ._bound-rect_8lppt_51{fill:var(--go-ui-color-gray-60);fill-opacity:0;transition:fill-opacity var(--go-ui-duration-transition-slow) ease-in-out}._chart-axes_8lppt_1 ._bound-rect_8lppt_51:hover{fill-opacity:.2}._chart-container_z2i5d_1{width:100%;height:16rem}._chart-container_z2i5d_1 ._svg_z2i5d_5{width:100%;height:100%}._chip_3wch9_1{--color-border: transparent;--color-text: inherit;--color-background: transparent;--border-radius: var(--go-ui-border-radius-full);--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-4xs) var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm);display:flex;align-items:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);padding:var(--padding);color:inherit;color:var(--color-text);gap:var(--go-ui-spacing-3xs)}._chip_3wch9_1._no-delete-icon_3wch9_17{--padding: var(--go-ui-spacing-4xs) var(--go-ui-spacing-sm)}._chip_3wch9_1._primary_3wch9_21{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._chip_3wch9_1._secondary_3wch9_27{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._chip_3wch9_1._tertiary_3wch9_33{--color-border: var(--go-ui-color-gray-40);--color-background: var(--go-ui-color-gray-30);--color-text: inherit}._chip_3wch9_1 ._close-icon_3wch9_39{font-size:var(--go-ui-font-size-sm)}._button_1vbet_1{--color-border: transparent;--color-text: transparent;--color-background: transparent;--font-size: var(--go-ui-height-icon-multiplier);--border-radius: var(--go-ui-border-radius-md);--text-transform: none;--cursor: default;--spacing: var(--go-ui-spacing-2xs);--padding: var(--go-ui-spacing-2xs);display:flex;position:relative;align-items:center;justify-content:center;border:var(--go-ui-width-separator-sm) solid transparent;border:var(--go-ui-width-separator-sm) solid var(--color-border);border-radius:var(--border-radius);background-color:transparent;background-color:var(--color-background);cursor:default;cursor:var(--cursor);padding:var(--padding);width:-moz-fit-content;width:fit-content;max-width:100%;overflow:hidden;text-transform:none;text-transform:var(--text-transform);color:transparent;color:var(--color-text);font-family:inherit;font-size:var(--font-size);font-weight:var(--go-ui-font-weight-normal);gap:var(--spacing)}._button_1vbet_1._round_1vbet_31{--border-radius: 50%}._button_1vbet_1._primary_1vbet_34{--border-color: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-primary-red);--color-text: var(--go-ui-color-white)}._button_1vbet_1._primary_1vbet_34:disabled{--border-color: var(--go-ui-color-gray-40);--color-background: var(--go-ui-color-gray-40)}._button_1vbet_1._primary_1vbet_34:not(:disabled):hover{--color-background: var(--go-ui-color-red-hover)}._button_1vbet_1._secondary_1vbet_51{--color-border: var(--go-ui-color-primary-red);--color-background: var(--go-ui-color-white);--color-text: var(--go-ui-color-primary-red)}._button_1vbet_1._secondary_1vbet_51:disabled{--color-text: var(--go-ui-color-gray-40);--color-border: var(--go-ui-color-gray-40)}._button_1vbet_1._secondary_1vbet_51:not(:disabled):hover{--color-text: var(--go-ui-color-white);--color-background: var(--go-ui-color-red-hover)}._button_1vbet_1._tertiary_1vbet_69{--color-background: transparent;--color-text: inherit}._button_1vbet_1._tertiary_1vbet_69:disabled{--color-text: var(--go-ui-color-gray-40)}._button_1vbet_1._tertiary_1vbet_69:not(:disabled):hover{--color-background: var(--go-ui-color-gray-20);--color-text: var(--go-ui-color-primary-red)}._button_1vbet_1:disabled{--cursor: not-allowed}._button_1vbet_1:not(:disabled){--cursor: pointer}._checkbox_12g7n_1{display:flex;align-items:flex-start;cursor:pointer;gap:var(--go-ui-spacing-sm)}._checkbox_12g7n_1._with-background_12g7n_7{background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-sm)}._checkbox_12g7n_1 ._checkmark-container_12g7n_12{position:relative;flex-shrink:0;line-height:0;font-size:var(--go-ui-height-icon-multiplier)}._checkbox_12g7n_1 ._checkmark-container_12g7n_12 ._input_12g7n_18{position:absolute;opacity:0;margin:0;padding:0;width:0;height:0;pointer-events:none}._checkbox_12g7n_1 ._checkmark-container_12g7n_12 ._input_12g7n_18:focus-visible+svg{outline:var(--go-ui-width-separator-thin) dashed var(--go-ui-color-gray-40)}._checkbox_12g7n_1 ._content_12g7n_33{flex-direction:column;flex-grow:1;line-height:var(--go-ui-line-height-sm);gap:0}._checkbox_12g7n_1 ._description_12g7n_40{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-xs)}._checkbox_12g7n_1._checked_12g7n_45 ._checkmark_12g7n_12{color:var(--go-ui-color-primary-red)}._checkbox_12g7n_1:focus ._checkmark_12g7n_12,._checkbox_12g7n_1:hover ._checkmark_12g7n_12{color:var(--go-ui-color-primary-red)}._checkbox_12g7n_1._disabled-checkbox_12g7n_58{display:flex;align-items:flex-start;cursor:not-allowed;gap:var(--go-ui-spacing-sm);color:var(--go-ui-color-gray-40)}._checkbox_12g7n_1._disabled-checkbox_12g7n_58 ._checkmark_12g7n_12{color:var(--go-ui-color-gray-40)}._checklist_nwqu8_1{--spacing: var(--go-ui-spacing-md);display:flex;flex-direction:column;gap:var(--spacing)}._checklist_nwqu8_1._vertical_nwqu8_7 ._checklist-container_nwqu8_8{display:flex;flex-direction:column;gap:var(--spacing)}._checklist_nwqu8_1._horizontal_nwqu8_15 ._checklist-container_nwqu8_8{display:grid;grid-gap:var(--spacing);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}._input-hint_1p19h_1{display:inline-block;padding:0 var(--go-ui-spacing-2xs);color:var(--go-ui-color-gray-70);font-size:var(--go-ui-font-size-sm)}._overlay_1iffn_1{overflow:auto;animation:_fade-in_1iffn_1 var(--go-ui-duration-transition-medium) ease-in forwards}._overlay_1iffn_1 ._modal-container_1iffn_5{display:block;width:calc(100% - var(--go-ui-spacing-md) * 2);max-height:calc(100% - var(--go-ui-spacing-md) * 2);overflow:auto;animation:_slide-down_1iffn_1 var(--go-ui-duration-transition-medium) ease-in forwards}._overlay_1iffn_1 ._modal-container_1iffn_5._size-sm_1iffn_12{max-width:var(--go-ui-width-modal-sm)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-md_1iffn_16{max-width:var(--go-ui-width-modal-md)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-lg_1iffn_20,._overlay_1iffn_1 ._modal-container_1iffn_5._size-xl_1iffn_24{max-width:var(--go-ui-width-modal-lg)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-full_1iffn_28{width:calc(100vw - var(--go-ui-spacing-md) * 2);height:calc(100vh - var(--go-ui-spacing-md) * 2)}._overlay_1iffn_1 ._modal-container_1iffn_5._page-width_1iffn_33{max-width:var(--go-ui-page-width-max);height:calc(100vh - var(--go-ui-spacing-md) * 2)}._overlay_1iffn_1 ._modal-container_1iffn_5._size-auto_1iffn_38{max-width:-moz-fit-content;max-width:fit-content}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-lg);box-shadow:var(--go-ui-box-shadow-2xl);background-color:var(--go-ui-color-white);width:100%;min-width:var(--go-ui-width-min-modal);height:100%;min-height:var(--go-ui-height-min-modal);overflow:auto}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5 ._close-icon_1iffn_53{font-size:var(--go-ui-height-icon-multiplier)}._overlay_1iffn_1 ._modal-container_1iffn_5 ._modal_1iffn_5 ._content_1iffn_57{flex-grow:1;overflow:auto}@keyframes _fade-in_1iffn_1{0%{opacity:0}to{opacity:1}}@keyframes _slide-down_1iffn_1{0%{transform:translateY(-5pt)}to{transform:translateY(0)}}._input-container_1b4m7_1{position:relative}._input-container_1b4m7_1 ._input-section_1b4m7_4{align-items:center;transition:var(--go-ui-duration-transition-medium) var(--go-ui-color-gray-10) ease-in-out;border-bottom:var(--go-ui-width-separator-thin) solid transparent;border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-element-background);padding:0 var(--go-ui-spacing-sm)}._input-container_1b4m7_1 ._input-section_1b4m7_4 ._input_1b4m7_1{padding:var(--go-ui-spacing-xs) 0}._input-container_1b4m7_1._disabled_1b4m7_17{opacity:var(--go-ui-opacity-disabled-element)}._input-container_1b4m7_1._disabled_1b4m7_17 ._input-section_1b4m7_4{cursor:not-allowed}._input-container_1b4m7_1._errored_1b4m7_25 ._input-section_1b4m7_4{border-color:var(--go-ui-color-red)}._input-container_1b4m7_1._general_1b4m7_31 ._input-section_1b4m7_4{border-radius:0;border-bottom-color:var(--go-ui-color-separator)}._input-container_1b4m7_1._read-only_1b4m7_38 ._input-section_1b4m7_4{background-color:var(--go-ui-color-readonly-element-background)}._input-container_1b4m7_1:not(._read-only_1b4m7_38):not(._disabled_1b4m7_17) ._input-section_1b4m7_4:hover,._input-container_1b4m7_1:not(._read-only_1b4m7_38):not(._disabled_1b4m7_17) ._input-section_1b4m7_4:focus-within{border-bottom-color:var(--go-ui-color-primary-red)}._input-container_1b4m7_1 ._input-hint_1b4m7_53{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._input-container_1b4m7_1 ._input-error_1b4m7_58{position:absolute;min-width:10rem}._input-container_1b4m7_1:not(._disabled_1b4m7_17):not(._read-only_1b4m7_38):hover:enabled ._input-section_1b4m7_4{border-bottom-color:var(--go-ui-color-primary-red)}._raw-input_8rtzt_1{margin:0;margin:initial;outline:medium none invert;outline:initial;border:medium none currentColor;border:initial;background-color:transparent;background-color:initial;padding:0;padding:initial;width:100%;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit}._raw-input_8rtzt_1:disabled{cursor:not-allowed}._date-output_4jzjo_1{display:inline}._date-range_k6lnj_1{display:flex;gap:var(--go-ui-spacing-md);flex-wrap:wrap}._dropdown-menu_16hml_1{align-items:center}._dropdown-menu_16hml_1 ._icons_16hml_4,._dropdown-menu_16hml_1 ._content_16hml_5,._dropdown-menu_16hml_1 ._actions_16hml_6{pointer-events:none}._dropdown-menu_16hml_1 ._dropdown-icon_16hml_10{margin-left:-.3em;font-size:var(--go-ui-height-icon-multiplier)}._dropdown-content_16hml_16{display:flex;flex-direction:column;padding:var(--go-ui-spacing-sm) 0}._expandable-container_17290_1{border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-foreground)}._expandable-container_17290_1 ._header_17290_5{background-color:var(--go-ui-color-foreground)}._expandable-container_17290_1 ._icon_17290_9{display:flex;font-size:var(--go-ui-height-icon-multiplier)}._expandable-container_17290_1:hover ._icon_17290_9{animation:_wiggle_17290_1 var(--go-ui-duration-transition-medium) ease-out}@keyframes _wiggle_17290_1{0%{transform:translateY(0)}50%{transform:translateY(-.1rem)}to{transform:translateY(0)}}._grid_1n8b5_1{--num-columns: 2;--max-width: calc(var(--go-ui-page-width-max) * .8);display:grid;grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / 2),1fr));grid-template-columns:repeat(auto-fill,minmax(calc(var(--max-width) / var(--num-columns)),1fr));position:relative;min-height:var(--go-ui-content-min-height)}._grid_1n8b5_1 ._message_1n8b5_10{grid-column:-1 / 1}._grid_1n8b5_1._compact_1n8b5_14{min-height:0;min-height:initial}._grid_1n8b5_1._compact_1n8b5_14._pending_1n8b5_17{min-height:var(--go-ui-compact-content-min-height)}._grid_1n8b5_1._two-columns_1n8b5_22{--num-columns: 2}@media screen and (max-width: 55rem){._grid_1n8b5_1._two-columns_1n8b5_22{--max-width: 60rem}}._grid_1n8b5_1._three-columns_1n8b5_31{--num-columns: 3}@media screen and (max-width: 55rem){._grid_1n8b5_1._three-columns_1n8b5_31{--max-width: 60rem}}._grid_1n8b5_1._four-columns_1n8b5_39{--num-columns: 4}._grid_1n8b5_1._five-columns_1n8b5_43{--num-columns: 5}._html-output_3s7du_1 p{margin:var(--go-ui-spacing-xs)}._html-output_3s7du_1 iframe{width:100%}._image_yrvu8_1{display:flex;flex-direction:column;margin:0}._image_yrvu8_1 ._img-element_yrvu8_6{background-color:var(--go-ui-color-background);width:100%;height:auto;-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}._image_yrvu8_1._expandable_yrvu8_14{cursor:pointer}._image_yrvu8_1 ._caption_yrvu8_18{text-align:center}._expanded-modal_yrvu8_23 ._content_yrvu8_24{display:flex}._expanded-modal_yrvu8_23 ._content_yrvu8_24 ._img-element_yrvu8_6{margin:0;background-color:var(--go-ui-color-background);width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center}._input-section_1cptl_1{display:grid;grid-gap:var(--go-ui-spacing-md);grid-template-columns:1fr 2fr;background-color:var(--go-ui-color-white)}._input-section_1cptl_1 ._header_1cptl_7 ._heading-container_1cptl_8 ._heading_1cptl_8{flex-grow:initial}@media screen and (max-width: 60rem){._input-section_1cptl_1{grid-template-columns:1fr}}._input-section_1cptl_1._with-compact-title-section_1cptl_19{grid-template-columns:1fr 3fr}._input-section_1cptl_1._with-padding_1cptl_23{padding:var(--go-ui-spacing-lg)}._input-section_1cptl_1 ._asterisk_1cptl_27{color:var(--go-ui-color-primary-red)}._input-section_1cptl_1 ._description_1cptl_31{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._input-section_1cptl_1 ._content-section_1cptl_37{display:grid;grid-gap:var(--go-ui-spacing-sm);align-items:start}._input-section_1cptl_1 ._content-section_1cptl_37._one-column_1cptl_42{grid-template-columns:1fr}._input-section_1cptl_1 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}@media screen and (max-width: 30rem){._input-section_1cptl_1 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._input-section_1cptl_1 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr))}._input-section_1cptl_1 ._content-section_1cptl_37._four-column_1cptl_58{grid-template-columns:repeat(auto-fill,minmax(12rem,1fr))}._input-section_1cptl_1._without-title-section_1cptl_63{grid-template-columns:1fr}._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fill,minmax(28rem,1fr))}@media screen and (max-width: 70rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}}@media screen and (max-width: 30rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._two-column_1cptl_46{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fill,minmax(22rem,1fr))}@media screen and (max-width: 30rem){._input-section_1cptl_1._without-title-section_1cptl_63 ._content-section_1cptl_37._three-column_1cptl_54{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}}._info-popup_i3rna_1 ._label_i3rna_2{display:inline-flex;align-items:center;gap:var(--go-ui-spacing-xs)}._info-popup_i3rna_1 ._label_i3rna_2 ._icon_i3rna_7{display:inline-flex;font-size:var(--go-ui-height-icon-multiplier)}._dropdown-container_i3rna_15{padding:0;min-width:min(20rem,100vw);max-width:25rem}._dropdown-container_i3rna_15 ._content_i3rna_20{display:flex;flex-direction:column;white-space:pre-wrap;gap:var(--go-ui-spacing-xs);font-size:var(--go-ui-font-size-sm)}._key-figure_1owjn_1{display:flex;position:relative;flex-direction:column;padding:var(--go-ui-spacing-md);gap:var(--go-ui-spacing-xs)}._key-figure_1owjn_1 ._icon-section_1owjn_8{display:flex}._key-figure_1owjn_1 ._icon-section_1owjn_8 ._icon_1owjn_8{display:flex;align-items:center;flex-grow:1;justify-content:flex-start;color:var(--go-ui-color-primary-red);font-size:var(--go-ui-height-key-figure-icon)}._key-figure_1owjn_1 ._icon-section_1owjn_8 ._info_1owjn_20{flex-shrink:0}._key-figure_1owjn_1 ._info-section-without-icon_1owjn_25{position:absolute;top:0;right:0}._key-figure_1owjn_1 ._value_1owjn_31{font-size:var(--go-ui-font-size-3xl);font-weight:var(--go-ui-font-weight-medium)}._key-figure_1owjn_1 ._description_1owjn_36{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._key-figure_1owjn_1._with-icon_1owjn_41 ._value_1owjn_31{font-size:var(--go-ui-font-size-4xl)}._progress-wrapper_x340w_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xs);color:var(--go-ui-color-primary-red)}._progress-wrapper_x340w_1 ._title_x340w_7{color:var(--go-ui-color-text)}._progress-wrapper_x340w_1 ._total_x340w_11{display:flex;flex-shrink:0;border-radius:var(--go-ui-border-radius-md);background-color:var(--go-ui-color-separator);height:.5rem}._progress-wrapper_x340w_1 ._total_x340w_11 ._progress_x340w_1{transition:var(--go-ui-duration-transition-medium) width ease-in-out;border-radius:var(--go-ui-border-radius-md)}._legend_77ox6_1{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-lg)}._legend_77ox6_1 ._legend-items_77ox6_6{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-md)}._legend-element_1a9ic_1{display:flex;align-items:center;gap:var(--go-ui-spacing-xs);font-size:var(--go-ui-font-size-sm)}._legend-element_1a9ic_1 ._color_1a9ic_7{flex-shrink:0;border-radius:.4em;width:.8em;height:.8em}._legend-element_1a9ic_1 ._icon-container_1a9ic_14{display:flex;align-items:center;justify-content:center;border-radius:50%;padding:var(--go-ui-spacing-2xs);width:1.2rem;height:1.2rem}._legend-element_1a9ic_1 ._icon-container_1a9ic_14 ._icon_1a9ic_14{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center center;object-position:center center}._legend-element_1a9ic_1 ._label_1a9ic_31{font-size:1em}._list_1whuj_1{position:relative;min-height:var(--go-ui-content-min-height)}._list_1whuj_1._compact_1whuj_5{min-height:0;min-height:initial}._list_1whuj_1._compact_1whuj_5._pending_1whuj_8{min-height:var(--go-ui-compact-content-min-height)}._option_1kpl9_1{display:flex;align-items:center;padding:var(--go-ui-spacing-sm) var(--go-ui-spacing-md);overflow:auto}._option_1kpl9_1._active_1kpl9_7{color:var(--go-ui-color-primary-red)}._option_1kpl9_1 ._icon_1kpl9_11{display:flex;align-items:center;flex-shrink:0}._option_1kpl9_1 ._label_1kpl9_17{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._popup_poyjv_1{padding:var(--go-ui-spacing-sm) 0}._popup_poyjv_1 ._list_poyjv_4{display:flex;flex-direction:column;overflow:auto}._popup_poyjv_1 ._list_poyjv_4 ._list-item_poyjv_9{flex-shrink:0}._popup_poyjv_1 ._info-message_poyjv_14{padding:var(--go-ui-spacing-sm);text-align:center;color:var(--go-ui-color-text-light)}._icon_poyjv_21{font-size:var(--go-ui-height-icon-multiplier)}._generic-option_zv1n8_1{display:flex;gap:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);text-align:left}._generic-option_zv1n8_1:hover{background-color:var(--go-ui-color-gray-20)}._navigation-tab-list_19mw3_1{display:flex;position:relative}._navigation-tab-list_19mw3_1._primary_19mw3_5{overflow-x:auto}._navigation-tab-list_19mw3_1._primary_19mw3_5 ._content_19mw3_8{display:flex}._navigation-tab-list_19mw3_1._primary_19mw3_5 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._primary_19mw3_5 ._end-dummy-content_19mw3_13{align-self:flex-end;flex-grow:1;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._navigation-tab-list_19mw3_1._secondary_19mw3_20{display:flex;overflow-x:auto}._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._content_19mw3_8{display:flex;border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-element-background)}._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._secondary_19mw3_20 ._end-dummy-content_19mw3_13{flex-grow:1}._navigation-tab-list_19mw3_1._tertiary_19mw3_36{justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto}._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._content_19mw3_8{display:flex;flex-wrap:wrap;justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto;gap:var(--go-ui-spacing-sm) var(--go-ui-spacing-md)}._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._tertiary_19mw3_36 ._end-dummy-content_19mw3_13{display:none}._navigation-tab-list_19mw3_1._step_19mw3_56{overflow-x:auto}._navigation-tab-list_19mw3_1._step_19mw3_56 ._content_19mw3_8{display:flex}._navigation-tab-list_19mw3_1._step_19mw3_56 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._step_19mw3_56 ._end-dummy-content_19mw3_13{align-self:flex-end;flex-grow:1}._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._content_19mw3_8{display:flex;flex-direction:column}._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._start-dummy-content_19mw3_12,._navigation-tab-list_19mw3_1._vertical_19mw3_70 ._end-dummy-content_19mw3_13{display:none}._page-container_1cfro_1 ._content_1cfro_2{margin:0 auto;padding:var(--go-ui-spacing-lg);width:100%}@media screen{._page-container_1cfro_1 ._content_1cfro_2{max-width:var(--go-ui-page-width-max)}}._page-header_1r8r3_1{padding:var(--go-ui-spacing-lg) 0}._page-header_1r8r3_1 ._container_1r8r3_4{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xl)}._page-header_1r8r3_1 ._container_1r8r3_4 ._breadcrumbs-container_1r8r3_9{flex-shrink:initial}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-lg)}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13 ._heading_1r8r3_19{text-align:center}._page-header_1r8r3_1 ._container_1r8r3_4 ._header_1r8r3_13 ._description_1r8r3_23{max-width:var(--go-ui-page-header-description-width-max);text-align:center}._pager_83zz4_1 ._page-list_83zz4_2{display:flex;gap:var(--go-ui-spacing-xs);align-items:center}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;line-height:1}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7._active_83zz4_15{border-radius:50%;background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7._compact_83zz4_21{font-size:var(--go-ui-font-size-xs);font-weight:var(--go-ui-font-weight-medium)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7:disabled{opacity:var(--go-ui-opacity-disabled-element)}._pager_83zz4_1 ._page-list_83zz4_2 ._page-button_83zz4_7 ._icon_83zz4_30{font-size:var(--go-ui-font-size-2xl)}._top-banner_1w8lu_1{background-color:var(--go-ui-color-negative);padding:var(--go-ui-spacing-md);text-align:center;color:var(--go-ui-color-white);font-weight:var(--go-ui-font-weight-medium)}._warning_1w8lu_9{background-color:var(--go-ui-color-warning)}._positive_1w8lu_13{background-color:var(--go-ui-color-positive)}._information_1w8lu_17{background-color:var(--go-ui-color-information)}._pie-chart_pyr7m_1{display:flex;align-items:center;flex-wrap:wrap;gap:var(--go-ui-spacing-md)}._pie-chart_pyr7m_1 ._legend_pyr7m_7{display:flex;flex-direction:column;flex-grow:1;justify-content:center}._pie-chart_pyr7m_1 ._legend_pyr7m_7 ._legend-item_pyr7m_13{font-size:var(--go-ui-font-size-xs)}._text-output_10oza_1{display:flex;flex-wrap:wrap;gap:0 var(--go-ui-spacing-sm)}._text-output_10oza_1._with-background_10oza_6{background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-sm)}._text-output_10oza_1 ._label_10oza_11._with-colon_10oza_12:after{content:":"}._text-output_10oza_1 ._value_10oza_17._text-type_10oza_18{text-align:justify;white-space:pre-wrap}._text-output_10oza_1 ._strong_10oza_24{font-weight:var(--go-ui-font-weight-semibold)}._file-input_tu4re_1 ._input_tu4re_2{visibility:hidden;width:0;height:0}._raw-input_145mq_1{margin:0;outline:0;border:0;background-color:transparent;padding:0;width:100%;color:inherit;font-family:inherit;font-size:inherit}._reduced-list-display_1czue_1{display:inline-block}._reduced-list-label_1czue_5{padding:0;-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-blue-90);font-weight:var(--go-ui-font-weight-medium)}._reduced-list-label_1czue_5:hover,._reduced-list-label_1czue_5:focus{opacity:1;color:var(--go-ui-color-primary-red)}._option-container_2k92q_1{display:flex;overflow:auto}._option-container_2k92q_1 ._option_2k92q_1{flex-grow:1}._option-container_2k92q_1._active_2k92q_9{color:var(--go-ui-color-primary-red)}._option-container_2k92q_1._active_2k92q_9 ._icon_2k92q_12{opacity:1}._option_11p37_1{display:flex;gap:var(--go-ui-spacing-sm);overflow:auto}._option_11p37_1 ._icon_11p37_6{display:flex;align-items:center;flex-shrink:0;opacity:0;font-size:var(--go-ui-height-icon-multiplier)}._option_11p37_1 ._label_11p37_14{display:flex;flex-direction:column;flex-grow:1;overflow:auto}._option_11p37_1 ._label_11p37_14 ._overflow-container_11p37_20{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._option_11p37_1 ._label_11p37_14 ._overflow-container_11p37_20._description_11p37_25{color:var(--go-ui-color-text-light);font-size:var(--go-ui-font-size-sm)}._segment-input_bykt7_1{width:-moz-fit-content;width:fit-content}._segment-input_bykt7_1 ._segment-list_bykt7_4{flex-wrap:nowrap;border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-background);padding:0;width:-moz-fit-content;width:fit-content;gap:0}._segment-input_bykt7_1 ._segment_bykt7_1{border-radius:var(--go-ui-border-radius-full);padding:var(--go-ui-spacing-3xs) var(--go-ui-spacing-md)}._segment-input_bykt7_1 ._segment_bykt7_1._active_bykt7_18{background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._segment-input_bykt7_1._secondary-variant_bykt7_24 ._segment_bykt7_1._active_bykt7_18{background-color:var(--go-ui-color-blue-90);color:var(--go-ui-color-white)}._stacked-bar-chart_gqsj2_1{display:flex;flex-direction:column;gap:var(--go-ui-spacing-xs)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6{display:flex}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6{display:flex;align-items:baseline;justify-content:center;gap:var(--go-ui-spacing-2xs)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6 ._value_gqsj2_15{font-weight:var(--go-ui-font-weight-semibold)}._stacked-bar-chart_gqsj2_1 ._bar-info-container_gqsj2_6 ._bar-info_gqsj2_6 ._percentage_gqsj2_19{font-size:var(--go-ui-font-size-sm)}._stacked-bar-chart_gqsj2_1 ._track_gqsj2_25{--height: 1rem;display:flex;border-radius:.5rem;border-radius:calc(.5 * var(--height));background-color:var(--go-ui-color-gray-50);height:1rem;height:var(--height);overflow:hidden}._stacked-bar-chart_gqsj2_1 ._track_gqsj2_25 ._bar_gqsj2_6{height:100%}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38{display:flex;flex-wrap:wrap;gap:var(--go-ui-spacing-md)}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43{display:flex;align-items:baseline;gap:var(--go-ui-spacing-2xs)}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43 ._color-dot_gqsj2_48{flex-shrink:0;border-radius:.3rem;width:.6rem;height:.6rem}._stacked-bar-chart_gqsj2_1 ._label-list_gqsj2_38 ._label-container_gqsj2_43 ._label_gqsj2_38{padding:0 var(--go-ui-spacing-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--go-ui-font-size-sm)}._switch_1bdw6_1 ._checkmark-container_1bdw6_2{--width: var(--go-ui-font-size-4xl)}._switch_1bdw6_1._with-inverted-view_1bdw6_6{flex-direction:row-reverse}._switch-icon_w9df3_1{--gap: .05em;--border-width: var(--go-ui-width-separator-sm);--knob-diameter: calc(1em - 2 * var(--gap) - 2 * var(--border-width));--background-color: var(--go-ui-color-gray-50);--border-color: var(--go-ui-color-gray-30);--knob-color: var(--go-ui-color-white);display:flex;align-items:center;transition:var(--go-ui-duration-transition-medium) background-color ease-in-out;border:var(--border-width) solid var(--border-color);border-radius:.5em;background-color:var(--background-color);padding:.05em;padding:var(--gap);width:calc(1em + var(--knob-diameter));height:1em}._switch-icon_w9df3_1 ._knob_w9df3_19{transition:var(--go-ui-duration-transition-medium) transform ease-in-out,var(--go-ui-duration-transition-medium) background-color ease-in-out;border-radius:calc((1em - var(--gap) * 2) / 2);border-radius:calc(calc(1em - var(--gap) * 2) / 2);background-color:var(--knob-color);width:var(--knob-diameter);height:var(--knob-diameter)}._switch-icon_w9df3_1._on_w9df3_27{background-color:var(--go-ui-color-primary-red)}._switch-icon_w9df3_1._on_w9df3_27 ._knob_w9df3_19{transform:translate(100%)}._table_nilhy_1{display:flex;position:relative;flex-direction:column;min-height:var(--go-ui-content-min-height);overflow-x:auto}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8{display:flex;flex-direction:column;overflow-x:auto}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13{position:relative;z-index:0;border-collapse:separate;border-spacing:0;font-size:inherit}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13 ._header-row_nilhy_23 ._header-element_nilhy_24{position:sticky;top:0;z-index:1}._table_nilhy_1 ._table-overflow-wrapper_nilhy_8 ._table-element_nilhy_13 ._header-row_nilhy_23 ._header-element_nilhy_24 ._header-component_nilhy_29{padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm)}._table_nilhy_1 ._message_nilhy_38._pending_nilhy_39{position:absolute;top:0;left:0;width:100%;height:100%}._row_1829z_1 ._cell_1829z_2{padding:var(--go-ui-spacing-sm);overflow:hidden;word-break:break-word}._row_1829z_1:hover ._cell_1829z_2{background-color:var(--go-ui-color-background-hover)}._td_1k4cn_1{border-bottom:var(--go-ui-width-separator-sm) solid var(--go-ui-color-separator)}._th_cdv41_1{border-bottom:var(--go-ui-width-separator-sm) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-white);overflow:hidden;vertical-align:bottom;text-align:left}._th_cdv41_1 ._resize-handle_cdv41_8{position:absolute;top:0;right:0;z-index:1;border-right:var(--go-ui-width-separator-sm) solid transparent;cursor:col-resize;width:var(--go-ui-width-separator-lg);height:calc(100% - var(--go-ui-spacing-sm))}._th_cdv41_1:hover ._resize-handle_cdv41_8{border-right-color:var(--go-ui-color-gray-30)}._th_cdv41_1:hover ._resize-handle_cdv41_8:hover{border-right-color:var(--go-ui-color-gray-50)}._header-cell_vn24d_1{display:flex;align-items:center;color:var(--go-ui-color-text-black);font-weight:var(--go-ui-font-weight-semibold);gap:var(--go-ui-spacing-2xs)}._header-cell_vn24d_1 ._sort-button_vn24d_8{flex-shrink:0}._header-cell_vn24d_1 ._icon_vn24d_12{flex-shrink:0;font-size:var(--go-ui-height-icon-multiplier)}._header-cell_vn24d_1 ._info-popup-icon_vn24d_17{flex-shrink:0}._table-actions_171sq_1{display:flex;justify-content:flex-end;gap:var(--go-ui-spacing-sm)}._table-actions_171sq_1 ._more-icon_171sq_6{font-size:var(--go-ui-height-icon-multiplier)}._tab_12kk2_1{--border-color: var(--go-ui-color-gray-30);--border-width: var(--go-ui-width-separator-thin);display:inline-flex;align-items:stretch;border-radius:0;-webkit-text-decoration:none;text-decoration:none;color:var(--go-ui-color-black);font-weight:var(--go-ui-font-weight-medium)}._tab_12kk2_1 ._dummy_12kk2_12{flex-grow:1;border-bottom:var(--border-width) solid var(--border-color);width:var(--go-ui-spacing-xs)}._tab_12kk2_1 ._children-wrapper_12kk2_18{display:flex;align-items:center;flex-grow:1;border:var(--border-width) solid transparent;text-align:center}._tab_12kk2_1._vertical-compact_12kk2_26 ._children-wrapper_12kk2_18,._tab_12kk2_1._vertical_12kk2_26 ._children-wrapper_12kk2_18{display:flex;gap:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-md) 0;text-align:left}._tab_12kk2_1._vertical-compact_12kk2_26._active_12kk2_35,._tab_12kk2_1._vertical_12kk2_26._active_12kk2_35{-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-primary-red)}._tab_12kk2_1._vertical-compact_12kk2_26 ._children-wrapper_12kk2_18{padding:0}._tab_12kk2_1._primary_12kk2_48{position:relative;font-size:var(--go-ui-font-size-lg)}._tab_12kk2_1._primary_12kk2_48 ._children-wrapper_12kk2_18{border-bottom-color:var(--border-color);background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-md) var(--go-ui-spacing-lg)}._tab_12kk2_1._primary_12kk2_48._active_12kk2_35{color:var(--go-ui-color-primary-red)}._tab_12kk2_1._primary_12kk2_48._active_12kk2_35 ._children-wrapper_12kk2_18{border-color:var(--border-color);border-bottom-color:transparent;background-color:var(--go-ui-color-white)}._tab_12kk2_1._primary_12kk2_48:not(._active_12kk2_35) ._active-border_12kk2_69{display:none}._tab_12kk2_1._step_12kk2_75{display:flex;align-items:center;flex-direction:column;gap:var(--go-ui-spacing-md);transition:var(--go-ui-duration-transition-medium) color,background-color ease-in-out;padding:var(--go-ui-spacing-md) 0;text-transform:uppercase;color:var(--go-ui-color-gray-70)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85{display:flex;align-items:center;align-self:stretch}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90{flex-shrink:0;transition:var(--go-ui-duration-transition-slow) border-color ease-in-out;border:var(--border-width) solid transparent;border-radius:50%;background-color:var(--go-ui-color-background);padding:var(--go-ui-spacing-2xs)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90 ._inner-circle_12kk2_98{display:flex;align-items:center;justify-content:center;transition:var(--go-ui-duration-transition-slow) background-color ease-in-out;border-radius:50%;background-color:var(--go-ui-color-gray-60);width:1rem;height:1rem}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._step-circle_12kk2_90 ._inner-circle_12kk2_98 ._icon_12kk2_108{color:var(--go-ui-color-white);font-size:var(--go-ui-height-icon-multiplier)}._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._progress-bar-end_12kk2_115,._tab_12kk2_1._step_12kk2_75 ._visual-elements_12kk2_85 ._progress-bar-start_12kk2_116{flex-grow:1;background-color:var(--go-ui-color-separator);height:var(--go-ui-width-separator-thin)}._tab_12kk2_1._step_12kk2_75 ._children-wrapper_12kk2_18{padding:0 var(--go-ui-spacing-lg)}._tab_12kk2_1._step_12kk2_75._errored_12kk2_128 ._children-wrapper_12kk2_18{-webkit-text-decoration:underline wavy var(--go-ui-color-primary-red);text-decoration:underline wavy var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75:hover{color:var(--go-ui-color-black)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35{color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._step-circle_12kk2_90{border-color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._step-circle_12kk2_90 ._inner-circle_12kk2_98{background-color:var(--go-ui-color-primary-red)}._tab_12kk2_1._step_12kk2_75._active_12kk2_35 ._progress-bar-start_12kk2_116,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._step-circle_12kk2_90 ._inner-circle_12kk2_98,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._progress-bar-end_12kk2_115,._tab_12kk2_1._step_12kk2_75._completed_12kk2_154 ._progress-bar-start_12kk2_116{background-color:var(--go-ui-color-primary-blue)}._tab_12kk2_1._step_12kk2_75:first-child ._visual-elements_12kk2_85 ._progress-bar-start_12kk2_116{background-color:transparent}._tab_12kk2_1._step_12kk2_75:last-child ._visual-elements_12kk2_85 ._progress-bar-end_12kk2_115{background-color:transparent}._tab_12kk2_1._secondary_12kk2_183{border-radius:var(--go-ui-border-radius-full);padding:var(--go-ui-spacing-md) var(--go-ui-spacing-xl)}._tab_12kk2_1._secondary_12kk2_183._active_12kk2_35{background-color:var(--go-ui-color-primary-red);color:var(--go-ui-color-white)}._tab_12kk2_1._tertiary_12kk2_193:hover,._tab_12kk2_1._tertiary_12kk2_193._active_12kk2_35{-webkit-text-decoration:underline;text-decoration:underline;color:var(--go-ui-color-primary-red)}._tab_12kk2_1._disabled_12kk2_205{pointer-events:none;opacity:var(--go-ui-opacity-disabled-element)}._tab-list_1d752_1{display:flex;position:relative}._tab-list_1d752_1._primary_1d752_5{overflow-x:auto}._tab-list_1d752_1._primary_1d752_5 ._content_1d752_8{display:flex}._tab-list_1d752_1._primary_1d752_5 ._start-dummy-content_1d752_12,._tab-list_1d752_1._primary_1d752_5 ._end-dummy-content_1d752_13{align-self:flex-end;flex-grow:1;border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._tab-list_1d752_1._secondary_1d752_20{display:flex;overflow-x:auto}._tab-list_1d752_1._secondary_1d752_20 ._content_1d752_8{display:flex;border-radius:var(--go-ui-border-radius-full);background-color:var(--go-ui-color-element-background)}._tab-list_1d752_1._secondary_1d752_20 ._start-dummy-content_1d752_12,._tab-list_1d752_1._secondary_1d752_20 ._end-dummy-content_1d752_13{flex-grow:1}._tab-list_1d752_1._tertiary_1d752_36{justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto}._tab-list_1d752_1._tertiary_1d752_36 ._content_1d752_8{display:flex;flex-wrap:wrap;justify-content:flex-start;width:-moz-fit-content;width:fit-content;overflow-x:auto;gap:var(--go-ui-spacing-md)}._tab-list_1d752_1._tertiary_1d752_36 ._start-dummy-content_1d752_12,._tab-list_1d752_1._tertiary_1d752_36 ._end-dummy-content_1d752_13{display:none}._tab-list_1d752_1._step_1d752_56{overflow-x:auto}._tab-list_1d752_1._step_1d752_56 ._content_1d752_8{display:flex}._tab-list_1d752_1._step_1d752_56 ._start-dummy-content_1d752_12,._tab-list_1d752_1._step_1d752_56 ._end-dummy-content_1d752_13{align-self:flex-end;flex-grow:1}._tab-list_1d752_1._vertical-compact_1d752_70 ._content_1d752_8,._tab-list_1d752_1._vertical_1d752_70 ._content_1d752_8{display:flex;flex-direction:column}._tab-list_1d752_1._vertical-compact_1d752_70 ._start-dummy-content_1d752_12,._tab-list_1d752_1._vertical_1d752_70 ._start-dummy-content_1d752_12,._tab-list_1d752_1._vertical-compact_1d752_70 ._end-dummy-content_1d752_13,._tab-list_1d752_1._vertical_1d752_70 ._end-dummy-content_1d752_13{display:none}._tab-list_1d752_1._vertical-compact_1d752_70 ._content_1d752_8{gap:var(--go-ui-spacing-xs)}._timeline-chart_1mks7_1{flex-grow:1;height:100%;--path-stroke-width: 1pt}._timeline-chart_1mks7_1 ._y-axis-tick-text_1mks7_6{text-anchor:middle;font-size:var(--go-ui-font-size-xs)}._timeline-chart_1mks7_1 ._x-axis-tick-text_1mks7_11{text-anchor:middle;transition:var(--go-ui-duration-transition-medium) ease-in-out transform;font-size:var(--go-ui-font-size-xs)}@media screen and (max-width: 30rem){._timeline-chart_1mks7_1 ._x-axis-tick-text_1mks7_11{transform:rotate(-30deg)}}._timeline-chart_1mks7_1 ._x-axis-grid-line_1mks7_21,._timeline-chart_1mks7_1 ._y-axis-grid-line_1mks7_22{stroke:var(--go-ui-color-gray-60);stroke-dasharray:4 4;stroke-opacity:.2;transition:var(--go-ui-duration-transition-medium) ease-in-out stroke-opacity}._timeline-chart_1mks7_1 ._x-axis-grid-line_1mks7_21._hovered_1mks7_28,._timeline-chart_1mks7_1 ._y-axis-grid-line_1mks7_22._hovered_1mks7_28{stroke-opacity:1}._timeline-chart_1mks7_1 ._rect_1mks7_33{transition:var(--go-ui-duration-transition-medium) ease-in-out fill-opacity;cursor:pointer;fill-opacity:0;fill:var(--go-ui-color-white)}._chart-point_aqsix_1{--point-radius: 4pt;--point-hover-radius: 5pt;--point-outline-radius: 7pt;--point-stroke-width: 2pt}._chart-point_aqsix_1 ._point_aqsix_7{r:var(--point-radius);stroke:currentColor;stroke-width:var(--point-stroke-width);fill:var(--go-ui-color-white);transition:var(--go-ui-duration-transition-medium) ease-in-out r,var(--go-ui-duration-transition-medium) ease-in-out fill}._chart-point_aqsix_1 ._point_aqsix_7._active_aqsix_14,._chart-point_aqsix_1 ._point_aqsix_7._hovered_aqsix_18{fill:currentColor}._chart-point_aqsix_1 ._point-outline_aqsix_23{r:var(--point-radius);stroke:currentColor;stroke-width:var(--point-stroke-width);fill:var(--go-ui-color-white);transition:var(--go-ui-duration-transition-medium) ease-in-out r}._chart-point_aqsix_1 ._point-outline_aqsix_23._active_aqsix_14{r:var(--point-outline-radius)}._chart-point_aqsix_1._hoverable_aqsix_35:hover ._point_aqsix_7{fill:currentColor}._dropdownContainer_1six7_3{position:relative}._dropdownMenu_1six7_15{position:absolute;right:0;top:100%;margin-top:.5rem;width:180px;background:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-lg);border:1px solid var(--go-ui-color-separator);z-index:50;animation:_dropdownSlideIn_1six7_1 .15s ease-out}._dropdownContent_1six7_43{padding:var(--go-ui-spacing-xs) 0}@keyframes _dropdownSlideIn_1six7_1{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){._dropdownMenu_1six7_15{width:160px;right:-.25rem}._dropdownItem_1six7_89{padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-xs)}}._uploadContainer_1w5i1_1{margin:0 auto;max-width:var(--go-ui-width-screen-lg);text-align:center;padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md) var(--go-ui-spacing-2xl) var(--go-ui-spacing-md);overflow-x:hidden}._dropZone_1w5i1_9{border:var(--go-ui-width-separator-thick) dashed var(--go-ui-color-gray-40);background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-xl);padding:var(--go-ui-spacing-2xl) var(--go-ui-spacing-lg);display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);transition:all var(--go-ui-duration-transition-medium) ease;max-width:var(--go-ui-width-screen-md);margin:0 auto;min-height:250px;justify-content:center}._dropZone_1w5i1_9:hover{background-color:var(--go-ui-color-gray-30);border-color:var(--go-ui-color-gray-50)}._dropZone_1w5i1_9._hasFile_1w5i1_30{background-color:var(--go-ui-color-white);border-color:var(--go-ui-color-gray-30);min-height:300px;padding:var(--go-ui-spacing-lg)}._dropZoneIcon_1w5i1_37{width:2.5rem;height:2.5rem;color:var(--go-ui-color-red-90)}._dropZoneText_1w5i1_43{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-70);text-align:center}._dropZoneSubtext_1w5i1_49{font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-50);margin:var(--go-ui-spacing-md) 0}._filePreview_1w5i1_55{width:100%;max-width:100%;display:flex;flex-direction:column;align-items:center;animation:_fadeIn_1w5i1_1 .3s ease-in-out}._filePreviewImage_1w5i1_64{position:relative;max-width:100%;max-height:20rem;overflow:visible;border-radius:var(--go-ui-border-radius-lg);background-color:var(--go-ui-color-gray-20);display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-medium) ease}._filePreviewImage_1w5i1_64:hover{background-color:var(--go-ui-color-gray-30);transform:translateY(-2px);box-shadow:var(--go-ui-box-shadow-md)}._filePreviewImage_1w5i1_64 img{max-width:100%;max-height:18rem;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-sm);transition:transform var(--go-ui-duration-transition-medium) ease}._filePreviewImage_1w5i1_64 img:hover{transform:scale(1.02)}@keyframes _fadeIn_1w5i1_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}._fileName_1w5i1_110{font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-80);margin-top:var(--go-ui-spacing-sm);text-align:center}._fileInfo_1w5i1_118{font-size:var(--go-ui-font-size-xs);color:var(--go-ui-color-gray-60);margin-top:var(--go-ui-spacing-xs);text-align:center}._helpLink_1w5i1_125{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md)}._helpLink_1w5i1_125 a{color:var(--go-ui-color-red-90);font-size:var(--go-ui-font-size-xs);transition:color var(--go-ui-duration-transition-fast) ease;display:flex;align-items:center;gap:var(--go-ui-spacing-2xs)}._helpLink_1w5i1_125 a:hover{color:var(--go-ui-color-red-hover);text-decoration:underline}._loadingContainer_1w5i1_145{display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);margin-top:var(--go-ui-spacing-2xl)}._loadingText_1w5i1_153{color:var(--go-ui-color-gray-60)}._generateButtonContainer_1w5i1_157{display:flex;flex-direction:column;align-items:center;gap:var(--go-ui-spacing-lg);margin-top:var(--go-ui-spacing-2xl)}._uploadedMapContainer_1w5i1_165{margin-bottom:var(--go-ui-spacing-lg)}._uploadedMapImage_1w5i1_169{width:100%;max-width:var(--go-ui-width-screen-lg);max-height:20rem;overflow:visible;background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-lg);box-shadow:var(--go-ui-box-shadow-sm);display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-medium) ease}._uploadedMapImage_1w5i1_169:hover{background-color:var(--go-ui-color-gray-30);transform:translateY(-2px);box-shadow:var(--go-ui-box-shadow-md)}._uploadedMapImage_1w5i1_169 img{max-width:100%;max-height:18rem;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-sm);transition:transform var(--go-ui-duration-transition-medium) ease}._uploadedMapImage_1w5i1_169 img:hover{transform:scale(1.02)}._formSection_1w5i1_205{margin-bottom:var(--go-ui-spacing-lg)}._formGrid_1w5i1_209{display:grid;gap:var(--go-ui-spacing-lg);grid-template-columns:1fr;text-align:left}@media (min-width: 1024px){._formGrid_1w5i1_209{grid-template-columns:1fr 1fr}}._titleField_1w5i1_222{grid-column:1 / -1}._ratingSection_1w5i1_226{text-align:left}._ratingDescription_1w5i1_230{color:var(--go-ui-color-gray-70);margin-bottom:var(--go-ui-spacing-lg)}._ratingSlider_1w5i1_235{margin-top:var(--go-ui-spacing-lg);display:flex;align-items:center;gap:var(--go-ui-spacing-sm)}._ratingLabel_1w5i1_242{display:block;font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);text-transform:capitalize;width:5rem;flex-shrink:0}._ratingInput_1w5i1_251{width:100%;accent-color:var(--go-ui-color-red-90)}._ratingValue_1w5i1_256{margin-left:var(--go-ui-spacing-sm);width:2.5rem;text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-70)}._submitSection_1w5i1_266{display:flex;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-2xl);flex-wrap:wrap}._successContainer_1w5i1_275{text-align:center;padding:var(--go-ui-spacing-2xl)}._successHeading_1w5i1_280{color:var(--go-ui-color-green-90);margin-bottom:var(--go-ui-spacing-lg)}._successText_1w5i1_285{color:var(--go-ui-color-gray-700);margin-bottom:var(--go-ui-spacing-xl);font-size:var(--go-ui-font-size-lg)}._successButton_1w5i1_291{display:flex;justify-content:center}._viewFullSizeButton_1w5i1_297{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md);padding-top:var(--go-ui-spacing-md);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._fullSizeModalOverlay_1w5i1_306{position:fixed;inset:0;background-color:#000c;display:flex;justify-content:center;align-items:center;z-index:1000;padding:var(--go-ui-spacing-lg)}._lightModalOverlay_1w5i1_320{position:fixed;inset:0;background-color:#0000004d;display:flex;justify-content:center;align-items:center;z-index:1000;padding:var(--go-ui-spacing-lg)}._fullSizeModalContent_1w5i1_334{background-color:var(--go-ui-color-white);border-radius:var(--go-ui-border-radius-lg);max-width:95vw;max-height:95vh;overflow:hidden;box-shadow:var(--go-ui-box-shadow-xl);display:flex;flex-direction:column}._fullSizeModalHeader_1w5i1_345{display:flex;justify-content:space-between;align-items:center;padding:var(--go-ui-spacing-lg);border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);background-color:var(--go-ui-color-gray-10)}._fullSizeModalTitle_1w5i1_354{margin:0;font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-semibold);color:var(--go-ui-color-gray-900)}._fullSizeModalImage_1w5i1_361{flex:1;display:flex;justify-content:center;align-items:center;padding:var(--go-ui-spacing-lg);overflow:auto}._fullSizeModalImage_1w5i1_361 img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;border-radius:var(--go-ui-border-radius-md);box-shadow:var(--go-ui-box-shadow-md)}@media (max-width: 768px){._fullSizeModalOverlay_1w5i1_306{padding:var(--go-ui-spacing-sm)}._fullSizeModalContent_1w5i1_334{max-width:100vw;max-height:100vh}._fullSizeModalHeader_1w5i1_345,._fullSizeModalImage_1w5i1_361{padding:var(--go-ui-spacing-md)}}._confirmSection_1w5i1_398{display:flex;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-xl);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._step2Layout_1w5i1_407{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xl)}._topRow_1w5i1_413{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-2xl);align-items:start}._topRow_1w5i1_413._ratingHidden_1w5i1_421{grid-template-columns:1fr}._imageSection_1w5i1_425{position:sticky;top:var(--go-ui-spacing-lg)}._ratingSection_1w5i1_226{display:flex;flex-direction:column}._ratingContent_1w5i1_435{display:flex;flex-direction:column;gap:var(--go-ui-spacing-md)}._bottomRow_1w5i1_441{width:100%}._step2Layout_1w5i1_407{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-2xl);align-items:start}._mapColumn_1w5i1_453{position:sticky;top:var(--go-ui-spacing-lg)}._contentColumn_1w5i1_458{display:flex;flex-direction:column;gap:var(--go-ui-spacing-lg)}._step2bLayout_1w5i1_465{display:flex;flex-direction:column;gap:var(--go-ui-spacing-2xl)}._contentColumn_1w5i1_458 ._formGrid_1w5i1_209{display:grid;gap:var(--go-ui-spacing-lg);grid-template-columns:1fr;text-align:left}@media (max-width: 1024px){._step2Layout_1w5i1_407,._topRow_1w5i1_413{grid-template-columns:1fr;gap:var(--go-ui-spacing-lg)}._topRow_1w5i1_413._ratingHidden_1w5i1_421{grid-template-columns:1fr}._mapColumn_1w5i1_453,._imageSection_1w5i1_425{position:static}}@media (max-width: 768px){._uploadContainer_1w5i1_1{padding:var(--go-ui-spacing-md) var(--go-ui-spacing-sm) var(--go-ui-spacing-xl) var(--go-ui-spacing-sm)}._dropZone_1w5i1_9{padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md);min-height:200px}._dropZone_1w5i1_9._hasFile_1w5i1_30{min-height:250px;padding:var(--go-ui-spacing-md)}._filePreviewImage_1w5i1_64{max-width:100%;max-height:15rem;padding:var(--go-ui-spacing-xs)}._filePreviewImage_1w5i1_64 img{max-height:13rem}._ratingSlider_1w5i1_235{gap:var(--go-ui-spacing-xs)}._ratingLabel_1w5i1_242{width:4rem;font-size:var(--go-ui-font-size-xs)}._ratingValue_1w5i1_256{width:2rem;font-size:var(--go-ui-font-size-xs)}}@media (max-width: 480px){._dropZone_1w5i1_9{padding:var(--go-ui-spacing-md) var(--go-ui-spacing-sm);min-height:180px}._dropZone_1w5i1_9._hasFile_1w5i1_30{min-height:220px}._filePreviewImage_1w5i1_64{max-height:12rem}._filePreviewImage_1w5i1_64 img{max-height:10rem}}._metadataSectionCard_1w5i1_562{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-lg);padding:var(--go-ui-spacing-lg);box-shadow:var(--go-ui-box-shadow-xs)}._droneMetadataSection_1w5i1_571{margin-top:var(--go-ui-spacing-lg);padding-top:var(--go-ui-spacing-lg);border-top:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._droneMetadataHeading_1w5i1_577{font-size:var(--go-ui-font-size-md);font-weight:600;color:var(--go-ui-color-gray-90);margin-bottom:var(--go-ui-spacing-md);text-align:left}._droneMetadataGrid_1w5i1_585{display:grid;grid-template-columns:1fr 1fr;gap:var(--go-ui-spacing-md)}._rtkFixContainer_1w5i1_591{display:flex;align-items:center;padding:var(--go-ui-spacing-sm) 0}._rtkFixLabel_1w5i1_597{display:flex;align-items:center;gap:var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);color:var(--go-ui-color-gray-80);cursor:pointer}._rtkFixCheckbox_1w5i1_606{width:1rem;height:1rem;accent-color:var(--go-ui-color-red-90)}@media (max-width: 768px){._droneMetadataGrid_1w5i1_585{grid-template-columns:1fr;gap:var(--go-ui-spacing-sm)}}._confirmButtonContainer_1w5i1_621{margin-top:var(--go-ui-spacing-lg);display:flex;justify-content:center;align-items:center}._ratingWarningContent_1w5i1_629{padding:var(--go-ui-spacing-xl);text-align:center;max-width:500px}._ratingWarningTitle_1w5i1_637{font-size:var(--go-ui-font-size-lg);font-weight:var(--go-ui-font-weight-semibold);color:var(--go-ui-color-gray-900);margin-bottom:var(--go-ui-spacing-md)}._ratingWarningText_1w5i1_644{font-size:var(--go-ui-font-size-md);color:var(--go-ui-color-gray-700);line-height:1.6;margin-bottom:var(--go-ui-spacing-xl)}._ratingWarningButtons_1w5i1_651{display:flex;gap:var(--go-ui-spacing-md);justify-content:center;margin-top:var(--go-ui-spacing-lg)}._preprocessingProgress_1w5i1_658{margin-top:var(--go-ui-spacing-lg);text-align:center;padding:var(--go-ui-spacing-lg);background-color:var(--go-ui-color-background-light);border-radius:var(--go-ui-border-radius-md)}._preprocessingProgress_1w5i1_658 p{margin-bottom:var(--go-ui-spacing-md);color:var(--go-ui-color-text);font-weight:var(--go-ui-font-weight-medium)}._cropZoomSlider_1w5i1_673{flex:1;height:.5rem;background-color:var(--go-ui-color-gray-30);border-radius:var(--go-ui-border-radius-lg);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;outline:none}._cropZoomSlider_1w5i1_673::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:1.25rem;height:1.25rem;background-color:var(--go-ui-color-red-90);border-radius:50%;cursor:pointer;border:2px solid var(--go-ui-color-white);box-shadow:var(--go-ui-box-shadow-sm)}._cropZoomSlider_1w5i1_673::-moz-range-thumb{width:1.25rem;height:1.25rem;background-color:var(--go-ui-color-red-90);border-radius:50%;cursor:pointer;border:2px solid var(--go-ui-color-white);box-shadow:var(--go-ui-box-shadow-sm);border:none}._cropZoomSlider_1w5i1_673:focus{outline:none;box-shadow:0 0 0 2px var(--go-ui-color-red-40)}._carouselContainer_1w5i1_711{position:relative;width:100%}._carouselImageWrapper_1w5i1_716{position:relative;width:100%;background-color:var(--go-ui-color-gray-20);border-radius:var(--go-ui-border-radius-lg);overflow:hidden;border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);box-shadow:var(--go-ui-box-shadow-sm);transition:box-shadow var(--go-ui-duration-transition-medium) ease}._carouselImageWrapper_1w5i1_716:hover{box-shadow:var(--go-ui-box-shadow-md)}._carouselImage_1w5i1_716{width:100%;height:auto;-o-object-fit:contain;object-fit:contain;image-rendering:pixelated;display:block}._carouselNavigation_1w5i1_739{display:flex;align-items:center;justify-content:center;gap:var(--go-ui-spacing-md);margin-top:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-md);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._carouselButton_1w5i1_751{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-md);padding:var(--go-ui-spacing-sm);transition:all var(--go-ui-duration-transition-fast) ease;min-width:40px;height:40px;display:flex;align-items:center;justify-content:center}._carouselButton_1w5i1_751:hover:not(:disabled){background-color:var(--go-ui-color-gray-20);border-color:var(--go-ui-color-gray-40);transform:translateY(-1px)}._carouselButton_1w5i1_751:disabled{opacity:.5;cursor:not-allowed}._carouselIndicators_1w5i1_775{display:flex;gap:var(--go-ui-spacing-xs);align-items:center}._carouselIndicator_1w5i1_775{background-color:var(--go-ui-color-gray-30);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-sm);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-70);cursor:pointer;transition:all var(--go-ui-duration-transition-fast) ease;min-width:32px;height:32px;display:flex;align-items:center;justify-content:center}._carouselIndicator_1w5i1_775:hover:not(:disabled){background-color:var(--go-ui-color-gray-40);border-color:var(--go-ui-color-gray-50);color:var(--go-ui-color-gray-90)}._carouselIndicatorActive_1w5i1_804{background-color:var(--go-ui-color-red-90);border-color:var(--go-ui-color-red-90);color:var(--go-ui-color-white)}._carouselIndicatorActive_1w5i1_804:hover:not(:disabled){background-color:var(--go-ui-color-red-hover);border-color:var(--go-ui-color-red-hover);color:var(--go-ui-color-white)}._carouselIndicator_1w5i1_775:disabled{opacity:.5;cursor:not-allowed}._imageCounter_1w5i1_821{text-align:center;margin-top:var(--go-ui-spacing-sm);font-size:var(--go-ui-font-size-sm);font-weight:var(--go-ui-font-weight-medium);color:var(--go-ui-color-gray-70);background-color:var(--go-ui-color-gray-10);padding:var(--go-ui-spacing-xs) var(--go-ui-spacing-sm);border-radius:var(--go-ui-border-radius-sm);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._singleImageContainer_1w5i1_834{position:relative;width:100%}._viewImageButtonContainer_1w5i1_840{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-md);padding:var(--go-ui-spacing-sm);background-color:var(--go-ui-color-gray-10);border-radius:var(--go-ui-border-radius-md);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}@media (max-width: 768px){._carouselNavigation_1w5i1_739{flex-direction:column;gap:var(--go-ui-spacing-sm)}._carouselIndicators_1w5i1_775{order:-1;margin-bottom:var(--go-ui-spacing-sm)}._carouselButton_1w5i1_751{min-width:36px;height:36px}._carouselIndicator_1w5i1_775{min-width:28px;height:28px;font-size:var(--go-ui-font-size-xs)}._imageCounter_1w5i1_821{font-size:var(--go-ui-font-size-xs)}._viewImageButtonContainer_1w5i1_840{margin-top:var(--go-ui-spacing-sm)}}._helpContainer_1wavj_1{margin:0 auto;max-width:var(--go-ui-width-screen-lg);padding:var(--go-ui-spacing-lg) var(--go-ui-spacing-md) var(--go-ui-spacing-2xl) var(--go-ui-spacing-md)}._helpSection_1wavj_13{background-color:var(--go-ui-color-white);border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator);border-radius:var(--go-ui-border-radius-xl);padding:var(--go-ui-spacing-2xl);margin-bottom:var(--go-ui-spacing-xl);box-shadow:var(--go-ui-box-shadow-sm);transition:all var(--go-ui-duration-transition-medium) ease;position:relative;overflow:hidden}._helpSection_1wavj_13:hover{box-shadow:var(--go-ui-box-shadow-md);transform:translateY(-2px);border-color:var(--go-ui-color-gray-30)}._sectionHeader_1wavj_49{display:flex;align-items:center;margin-bottom:var(--go-ui-spacing-lg);padding-bottom:var(--go-ui-spacing-md);border-bottom:var(--go-ui-width-separator-thin) solid var(--go-ui-color-separator)}._sectionIcon_1wavj_65{width:2rem;height:2rem;margin-right:var(--go-ui-spacing-md);color:var(--go-ui-color-red-90);background-color:var(--go-ui-color-red-5);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}._sectionTitle_1wavj_91{color:var(--go-ui-color-black);font-weight:var(--go-ui-font-weight-semibold);font-size:var(--go-ui-font-size-xl);margin:0}._sectionContent_1wavj_105{color:var(--go-ui-color-gray-700);line-height:1.7;font-size:var(--go-ui-font-size-base);margin-bottom:var(--go-ui-spacing-lg)}._guidelinesList_1wavj_119{list-style:none;padding:0;margin:var(--go-ui-spacing-md) 0}._guidelinesList_1wavj_119 li{position:relative;padding:var(--go-ui-spacing-sm) 0 var(--go-ui-spacing-sm) var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-sm);color:var(--go-ui-color-gray-700);line-height:1.6}._guidelinesList_1wavj_119 li:before{content:"✓";position:absolute;left:0;top:var(--go-ui-spacing-sm);color:var(--go-ui-color-green-70);font-weight:var(--go-ui-font-weight-bold);font-size:var(--go-ui-font-size-sm);background-color:var(--go-ui-color-green-5);border-radius:50%;width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center}._buttonContainer_1wavj_181{display:flex;justify-content:center;margin-top:var(--go-ui-spacing-xl)}._featureHighlight_1wavj_193{background:linear-gradient(135deg,var(--go-ui-color-blue-5),var(--go-ui-color-blue-10));border:var(--go-ui-width-separator-thin) solid var(--go-ui-color-blue-20);border-radius:var(--go-ui-border-radius-lg);padding:var(--go-ui-spacing-lg);margin:var(--go-ui-spacing-lg) 0;position:relative}._featureHighlight_1wavj_193:before{content:"💡";position:absolute;top:var(--go-ui-spacing-md);right:var(--go-ui-spacing-md);font-size:1.5rem}._featureHighlightText_1wavj_227{color:var(--go-ui-color-blue-90);font-weight:var(--go-ui-font-weight-medium);margin:0;font-size:var(--go-ui-font-size-sm)}@media (max-width: 768px){._helpSection_1wavj_13{padding:var(--go-ui-spacing-lg);margin-bottom:var(--go-ui-spacing-lg)}._sectionHeader_1wavj_49{flex-direction:column;text-align:center;gap:var(--go-ui-spacing-sm)}._sectionIcon_1wavj_65{margin-right:0;margin-bottom:var(--go-ui-spacing-sm)}._actionButton_1wavj_277{padding:var(--go-ui-spacing-sm) var(--go-ui-spacing-lg);font-size:var(--go-ui-font-size-sm)}}
py—backend/static/index-oPRJTRcN.js ADDED
The diff for this file is too large to render. See raw diff
 
{py_backend/static/assets → py—backend/static}/index-tDgjKyWF.css RENAMED
File without changes
{py_backend → py—backend}/static/index.html RENAMED
@@ -42,12 +42,8 @@
42
  });
43
  }
44
  </script>
45
- <script type="module" crossorigin src="/assets/index-DyXqjI96.js"></script>
46
- <link rel="modulepreload" crossorigin href="/assets/vendor-DxpCibxB.js">
47
- <link rel="modulepreload" crossorigin href="/assets/vendor-react-BxsGb6Ph.js">
48
- <link rel="modulepreload" crossorigin href="/assets/vendor-ui-l_DttnRj.js">
49
- <link rel="stylesheet" crossorigin href="/assets/vendor-ui-DpEM1HT6.css">
50
- <link rel="stylesheet" crossorigin href="/assets/index-om3EFqpn.css">
51
  </head>
52
  <body>
53
  <div id="root"></div>
 
42
  });
43
  }
44
  </script>
45
+ <script type="module" crossorigin src="/assets/index-oPRJTRcN.js"></script>
46
+ <link rel="stylesheet" crossorigin href="/assets/index-DkIjYZRi.css">
 
 
 
 
47
  </head>
48
  <body>
49
  <div id="root"></div>
py_backend/static/assets/vendor-utils-Db80MiSc.js → py—backend/static/jszip.min-DHOAM-1s.js RENAMED
@@ -1,4 +1,4 @@
1
- import{j as bt,g as It}from"./vendor-DxpCibxB.js";function vt(yt){throw new Error('Could not dynamically require "'+yt+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var kt={exports:{}};/*!
2
 
3
  JSZip v3.10.1 - A JavaScript class for generating and reading zip files
4
  <http://stuartk.com/jszip>
 
1
+ import{W as bt,X as It}from"./index-oPRJTRcN.js";function vt(yt){throw new Error('Could not dynamically require "'+yt+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var kt={exports:{}};/*!
2
 
3
  JSZip v3.10.1 - A JavaScript class for generating and reading zip files
4
  <http://stuartk.com/jszip>
{py_backend → py—backend}/static/manifest.json RENAMED
File without changes
{py_backend → py—backend}/static/sw.js RENAMED
File without changes
py—backend/static/useAdmin-DytkUHQc.js ADDED
@@ -0,0 +1 @@
 
 
1
+ import{r,V as e}from"./index-oPRJTRcN.js";const o=()=>{const t=r.useContext(e);if(t===void 0)throw new Error("useAdmin must be used within an AdminProvider");return t};export{o as u};
{py_backend → py—backend}/static/vite.svg RENAMED
File without changes