Spaces:
Running
Running
File size: 19,876 Bytes
58ee1e6 |
1 2 3 |
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/jszip.min-zGid42TK.js","assets/index-w0OOMPwN.js","assets/index-cCOeofBN.css"])))=>i.map(i=>d[i]);
import{j as t,z as b,n as w,v as Fe,w as De,x as Oe,B as Le,r,D as Me,N as Re,_ as me,L as Je,F as ze,G as We}from"./index-w0OOMPwN.js";import{u as Ue}from"./useAdmin-avReXN15.js";import{F as Be,E as He}from"./ExportModal-C5df6JIW.js";const Ve="_paginatorContainer_1l5ti_1",Ae="_paginationControls_1l5ti_19",ge={paginatorContainer:Ve,paginationControls:Ae};function Ge({currentPage:N,totalPages:u,onPageChange:$,className:z=""}){if(u<=1)return null;const f=(()=>{const h=[];if(u<=5)for(let p=1;p<=u;p++)h.push(p);else{let p=Math.max(1,N-2);const _=Math.min(u,p+5-1);_===u&&(p=Math.max(1,_-5+1));for(let y=p;y<=_;y++)h.push(y)}return h})();return t.jsx("div",{className:`${ge.paginatorContainer} ${z}`,children:t.jsxs("div",{className:ge.paginationControls,children:[t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(w,{name:"prev-page",variant:"tertiary",size:1,onClick:()=>$(Math.max(1,N-1)),disabled:N===1,title:"Previous page",children:[t.jsx(Fe,{className:"w-4 h-4"}),t.jsx("span",{className:"hidden sm:inline",children:"Previous"})]})}),t.jsxs("div",{className:"flex items-center gap-1",children:[f[0]>1&&t.jsxs(t.Fragment,{children:[t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(w,{name:"page-1",variant:"tertiary",size:1,onClick:()=>$(1),children:"1"})}),f[0]>2&&t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx("span",{className:"px-2 text-gray-500",children:"..."})})]}),f.map(h=>t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(w,{name:`page-${h}`,variant:N===h?"primary":"tertiary",size:1,onClick:()=>$(h),children:h})},h)),f[f.length-1]<u&&t.jsxs(t.Fragment,{children:[f[f.length-1]<u-1&&t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx("span",{className:"px-2 text-gray-500",children:"..."})}),t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(w,{name:`page-${u}`,variant:"tertiary",size:1,onClick:()=>$(u),children:u})})]})]}),t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(w,{name:"next-page",variant:"tertiary",size:1,onClick:()=>$(Math.min(u,N+1)),disabled:N===u,title:"Next page",children:[t.jsx("span",{className:"hidden sm:inline",children:"Next"}),t.jsx(De,{className:"w-4 h-4"})]})})]})})}const Ze="_tabSelector_o9y1f_1",qe="_metadataTags_o9y1f_8",Ke="_metadataTag_o9y1f_8",Qe="_metadataTagSource_o9y1f_32",Xe="_metadataTagType_o9y1f_43",Ye="_mapItem_o9y1f_54",et="_mapItemImage_o9y1f_72",tt="_mapItemContent_o9y1f_92",at="_mapItemTitle_o9y1f_97",st="_mapItemMetadata_o9y1f_105",it="_fullSizeModalOverlay_o9y1f_134",nt="_fullSizeModalContent_o9y1f_148",lt="_ratingWarningContent_o9y1f_159",rt="_ratingWarningTitle_o9y1f_165",ot="_ratingWarningText_o9y1f_172",ct="_ratingWarningButtons_o9y1f_179",m={tabSelector:Ze,metadataTags:qe,metadataTag:Ke,metadataTagSource:Qe,metadataTagType:Xe,mapItem:Ye,mapItemImage:et,mapItemContent:tt,mapItemTitle:at,mapItemMetadata:st,fullSizeModalOverlay:it,fullSizeModalContent:nt,ratingWarningContent:lt,ratingWarningTitle:rt,ratingWarningText:ot,ratingWarningButtons:ct};function pt(){const N=Oe(),u=Le(),{isAuthenticated:$}=Ue(),[z,Y]=r.useState("explore"),[f,h]=r.useState([]),{search:S,srcFilter:p,catFilter:_,regionFilter:y,countryFilter:E,imageTypeFilter:I,uploadTypeFilter:k,showReferenceExamples:T,setShowReferenceExamples:pe}=Me(),[V,ue]=r.useState([]),[A,fe]=r.useState([]),[ee,he]=r.useState([]),[xe,_e]=r.useState([]),[te,ye]=r.useState([]),[je,ae]=r.useState(!0),[W,se]=r.useState(!0),[Ne,G]=r.useState(!1),[ve,Z]=r.useState(!1),[be,q]=r.useState(!1),[we,U]=r.useState(!1),[B,ie]=r.useState(""),[K,ne]=r.useState(!1),[L,le]=r.useState(1),[M]=r.useState(10),[Q,re]=r.useState(0),[Se,oe]=r.useState(0),Te=[{key:"explore",label:"List"},{key:"mapDetails",label:"Carousel"}],H=r.useCallback(()=>{se(!0);const e=new URLSearchParams({page:L.toString(),limit:M.toString()});S&&e.append("search",S),p&&e.append("source",p),_&&e.append("event_type",_),y&&e.append("region",y),E&&e.append("country",E),I&&e.append("image_type",I),k&&e.append("upload_type",k),T&&e.append("starred_only","true"),fetch(`/api/images/grouped?${e.toString()}`).then(s=>s.ok?s.json():(console.error("ExplorePage: Grouped endpoint failed, trying legacy endpoint"),fetch("/api/captions/legacy").then(c=>c.ok?c.json():(console.error("ExplorePage: Legacy endpoint failed, trying regular images endpoint"),fetch("/api/images").then(j=>{if(!j.ok)throw new Error(`HTTP ${j.status}: ${j.statusText}`);return j.json()}))))).then(s=>{console.log("ExplorePage: Fetched captions:",s),h(s)}).catch(s=>{console.error("ExplorePage: Error fetching captions:",s),h([])}).finally(()=>{se(!1)})},[L,S,p,_,y,E,I,k,T,M]),ce=r.useCallback(()=>{const e=new URLSearchParams;S&&e.append("search",S),p&&e.append("source",p),_&&e.append("event_type",_),y&&e.append("region",y),E&&e.append("country",E),I&&e.append("image_type",I),k&&e.append("upload_type",k),T&&e.append("starred_only","true"),fetch(`/api/images/grouped/count?${e.toString()}`).then(s=>s.ok?s.json():(console.error("ExplorePage: Count endpoint failed"),{total_count:0})).then(s=>{console.log("ExplorePage: Total count:",s.total_count),re(s.total_count),oe(Math.ceil(s.total_count/M))}).catch(s=>{console.error("ExplorePage: Error fetching total count:",s),re(0),oe(0)})},[S,p,_,y,E,I,k,T,M]);r.useEffect(()=>{H(),ce()},[H,ce]),r.useEffect(()=>{L!==1&&le(1)},[L]),r.useEffect(()=>{const e=()=>{document.hidden||H()};return document.addEventListener("visibilitychange",e),()=>{document.removeEventListener("visibilitychange",e)}},[H]),r.useEffect(()=>{new URLSearchParams(u.search).get("export")==="true"&&(G(!0),N("/explore",{replace:!0}))},[u.search,N,S,p,_,y,E,I,T]),r.useEffect(()=>{ae(!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,c,j,P])=>{ue(e),fe(s),he(c),_e(j),ye(P)}).catch(()=>{}).finally(()=>{ae(!1)})},[]);const C=f,Ee=async(e,s="fine-tuning")=>{if(e.length===0){alert("No images to export");return}Z(!0),q(!1);try{const c=(await We(async()=>{const{default:i}=await import("./jszip.min-zGid42TK.js").then(F=>F.j);return{default:i}},__vite__mapDeps([0,1,2]))).default,j=new c,P=e.filter(i=>i.image_type==="crisis_map"),R=e.filter(i=>i.image_type==="drone_image");if(P.length>0){const i=j.folder("crisis_maps_dataset"),F=i?.folder("images");if(F){let D=1;for(const a of P)try{const v=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],X=v.map(async(n,x)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const o=await l.blob(),d=a.file_key.split(".").pop()||"jpg",g=`${String(D).padStart(4,"0")}_${String(x+1).padStart(2,"0")}.${d}`;return F.file(g,o),{success:!0,fileName:g,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),O=(await Promise.all(X)).filter(n=>n.success);if(O.length>0){if(s==="fine-tuning"){const n=O.map(o=>`images/${o.fileName}`),x=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:v,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(x<.8){const o=i.file("train.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("train.jsonl",JSON.stringify(d,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(x<.9){const o=i.file("test.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("test.jsonl",JSON.stringify(d,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const o=i.file("val.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("val.jsonl",JSON.stringify(d,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=O.map(l=>`images/${l.fileName}`),x={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:v,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(D).padStart(4,"0")}.json`,JSON.stringify(x,null,2))}D++}}catch(v){console.error(`Failed to process caption ${a.image_id}:`,v)}}}if(R.length>0){const i=j.folder("drone_images_dataset"),F=i?.folder("images");if(F){let D=1;for(const a of R)try{const v=a.image_count&&a.image_count>1?a.all_image_ids||[a.image_id]:[a.image_id],X=v.map(async(n,x)=>{try{const l=await fetch(`/api/images/${n}/file`);if(!l.ok)throw new Error(`Failed to fetch image ${n}`);const o=await l.blob(),d=a.file_key.split(".").pop()||"jpg",g=`${String(D).padStart(4,"0")}_${String(x+1).padStart(2,"0")}.${d}`;return F.file(g,o),{success:!0,fileName:g,imageId:n}}catch(l){return console.error(`Failed to process image ${n}:`,l),{success:!1,fileName:"",imageId:n}}}),O=(await Promise.all(X)).filter(n=>n.success);if(O.length>0){if(s==="fine-tuning"){const n=O.map(o=>`images/${o.fileName}`),x=Math.random(),l={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:v,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(x<.8){const o=i.file("train.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("train.jsonl",JSON.stringify(d,null,2))}else i.file("train.jsonl",JSON.stringify([l],null,2))}else if(x<.9){const o=i.file("test.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("test.jsonl",JSON.stringify(d,null,2))}else i.file("test.jsonl",JSON.stringify([l],null,2))}else{const o=i.file("val.jsonl");if(o){const d=await o.async("string").then(g=>JSON.parse(g||"[]")).catch(()=>[]);d.push(l),i.file("val.jsonl",JSON.stringify(d,null,2))}else i.file("val.jsonl",JSON.stringify([l],null,2))}}else{const n=O.map(l=>`images/${l.fileName}`),x={image:n.length===1?n[0]:n,caption:a.edited||a.generated||"",metadata:{image_id:v,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(D).padStart(4,"0")}.json`,JSON.stringify(x,null,2))}D++}}catch(v){console.error(`Failed to process caption ${a.image_id}:`,v)}}}const $e=await j.generateAsync({type:"blob"}),de=URL.createObjectURL($e),J=document.createElement("a");J.href=de,J.download=`datasets_${s}_${new Date().toISOString().split("T")[0]}.zip`,document.body.appendChild(J),J.click(),document.body.removeChild(J),URL.revokeObjectURL(de);const ke=(P.length||0)+(R.length||0);console.log(`Exported ${s} datasets with ${ke} total images:`),P.length>0&&console.log(`- Crisis maps: ${P.length} images`),R.length>0&&console.log(`- Drone images: ${R.length} images`),q(!0)}catch(c){console.error("Export failed:",c),alert("Failed to export dataset. Please try again.")}finally{Z(!1)}},Ie=e=>{ie(e),U(!0)},Ce=async()=>{if(B){ne(!0);try{console.log("Deleting image with ID:",B),(await fetch(`/api/images/${B}`,{method:"DELETE"})).ok?(h(s=>s.filter(c=>c.image_id!==B)),U(!1),ie("")):(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{ne(!1)}}};return t.jsxs(Re,{children:[W?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(me,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}):t.jsxs("div",{className:"max-w-7xl mx-auto",children:[t.jsxs("div",{className:m.tabSelector,children:[t.jsx(Je,{name:"explore-view",value:z,onChange:e=>{(e==="explore"||e==="mapDetails")&&(Y(e),e==="mapDetails"&&f.length>0&&(f[0]?.image_id&&f[0].image_id!=="undefined"&&f[0].image_id!=="null"?N(`/map/${f[0].image_id}`):console.error("Invalid image_id for navigation:",f[0]?.image_id)))},options:Te,keySelector:e=>e.key,labelSelector:e=>e.label}),t.jsxs("div",{className:"flex items-center gap-2 ml-auto",children:[t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsxs(w,{name:"reference-examples",variant:T?"primary":"secondary",onClick:()=>pe(!T),className:"whitespace-nowrap",children:[t.jsx("span",{className:"mr-2",children:T?t.jsx("span",{className:"text-yellow-400",children:"β
"}):t.jsx("span",{className:"text-yellow-400",children:"β"})}),"Reference Examples"]})}),t.jsx(w,{name:"export-dataset",variant:"secondary",onClick:()=>G(!0),children:"Export"})]})]}),z==="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(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2 flex-1 min-w-[300px]",children:t.jsx(Be,{sources:V,types:A,regions:ee,countries:xe,imageTypes:te,isLoadingFilters:je})})})}),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:[C.length," of ",Q," examples"]})}),W&&t.jsx("div",{className:"text-center py-12",children:t.jsxs("div",{className:"flex flex-col items-center gap-4",children:[t.jsx(me,{className:"text-ifrcRed"}),t.jsx("div",{children:"Loading examples..."})]})}),!W&&t.jsxs("div",{className:"space-y-4",children:[C.map(e=>t.jsxs("div",{className:"flex items-center gap-4",children:[t.jsxs("div",{className:`${m.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}`),N(`/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:m.mapItemImage,style:{width:"120px",height:"80px"},children:e.thumbnail_url?t.jsxs(t.Fragment,{children:[console.log("ExplorePage: Using thumbnail for fast loading:",e.thumbnail_url),t.jsx("img",{src:e.thumbnail_url,alt:e.file_key,onError:s=>{console.error("ExplorePage: Thumbnail failed to load, falling back to original:",e.thumbnail_url);const c=s.target;e.image_url?c.src=e.image_url:(c.style.display="none",c.parentElement.innerHTML="Img")},onLoad:()=>console.log("ExplorePage: Thumbnail loaded successfully:",e.thumbnail_url)})]}):e.image_url?t.jsxs(t.Fragment,{children:[console.log("ExplorePage: No thumbnail available, using original image:",e.image_url),t.jsx("img",{src:e.image_url,alt:e.file_key,onError:s=>{console.error("ExplorePage: Original image failed to load:",e.image_url);const c=s.target;c.style.display="none",c.parentElement.innerHTML="Img"},onLoad:()=>console.log("ExplorePage: Original image loaded successfully:",e.image_url)})]}):t.jsxs(t.Fragment,{children:[console.log("ExplorePage: No image_url or thumbnail provided for item:",e),"'Img'"]})}),t.jsxs("div",{className:m.mapItemContent,children:[t.jsx("h3",{className:m.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:m.mapItemMetadata,children:t.jsxs("div",{className:m.metadataTags,children:[e.image_type!=="drone_image"&&t.jsx("span",{className:m.metadataTagSource,children:e.source&&e.source.includes(", ")?e.source.split(", ").map(s=>V.find(c=>c.s_code===s.trim())?.label||s.trim()).join(", "):V.find(s=>s.s_code===e.source)?.label||e.source}),t.jsx("span",{className:m.metadataTagType,children:e.event_type&&e.event_type.includes(", ")?e.event_type.split(", ").map(s=>A.find(c=>c.t_code===s.trim())?.label||s.trim()).join(", "):A.find(s=>s.t_code===e.event_type)?.label||e.event_type}),t.jsx("span",{className:m.metadataTag,children:te.find(s=>s.image_type===e.image_type)?.label||e.image_type}),e.image_count&&e.image_count>1&&t.jsxs("span",{className:m.metadataTag,title:`Multi-upload with ${e.image_count} images`,children:["π· ",e.image_count]}),(!e.image_count||e.image_count<=1)&&t.jsx("span",{className:m.metadataTag,title:"Single Upload",children:"Single"}),e.countries&&e.countries.length>0&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:m.metadataTag,children:ee.find(s=>s.r_code===e.countries[0].r_code)?.label||"Unknown Region"}),t.jsx("span",{className:m.metadataTag,children:e.countries.map(s=>s.label).join(", ")})]})]})})]})]}),$&&t.jsx(b,{withInternalPadding:!0,className:"bg-white/20 backdrop-blur-sm rounded-md p-2",children:t.jsx(w,{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:()=>Ie(e.image_id),title:"Delete","aria-label":"Delete saved image",children:t.jsx(ze,{className:"w-4 h-4"})})})]},e.image_id)),!C.length&&t.jsx("div",{className:"text-center py-12",children:t.jsx("p",{className:"text-gray-500",children:"No examples found."})}),!W&&C.length>0&&t.jsx(Ge,{currentPage:L,totalPages:Se,totalItems:Q,itemsPerPage:M,onPageChange:le})]})]})]}):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"})]})})]}),we&&t.jsx("div",{className:m.fullSizeModalOverlay,onClick:()=>U(!1),children:t.jsx("div",{className:m.fullSizeModalContent,onClick:e=>e.stopPropagation(),children:t.jsxs("div",{className:m.ratingWarningContent,children:[t.jsx("h3",{className:m.ratingWarningTitle,children:"Delete Image?"}),t.jsx("p",{className:m.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:m.ratingWarningButtons,children:[t.jsx(w,{name:"confirm-delete",variant:"secondary",onClick:Ce,disabled:K,children:K?"Deleting...":"Delete"}),t.jsx(w,{name:"cancel-delete",variant:"tertiary",onClick:()=>U(!1),disabled:K,children:"Cancel"})]})]})})}),t.jsx(He,{isOpen:Ne,onClose:()=>{G(!1),q(!1),Z(!1)},onExport:(e,s)=>{const c=C.filter(j=>s.includes(j.image_type));Ee(c,e)},filteredCount:C.length,totalCount:Q,hasFilters:!!(S||p||_||y||E||I||k||T),crisisMapsCount:C.filter(e=>e.image_type==="crisis_map").length,droneImagesCount:C.filter(e=>e.image_type==="drone_image").length,isLoading:ve,exportSuccess:be})]})}export{pt as default};
|