1import{a as z,r as l,j as e}from"./index-ySeiRI4v.js";const W=async()=>z.get("searcher/stats/"),Z=async h=>z.get("searcher/search/",{params:h});function Q(){const[h,F]=l.useState([]),[N,_]=l.useState({count:0,last_sync:"Never"}),[$,g]=l.useState("online"),[B,v]=l.useState("Django DB Ready"),[x,M]=l.useState(()=>new URLSearchParams(window.location.search).get("search")||""),[m,T]=l.useState(!1),[f,y]=l.useState(!1),[u,b]=l.useState(!0),[j,O]=l.useState("date-desc"),[d,S]=l.useState(""),[o,k]=l.useState(""),[t,r]=l.useState("all"),[i,p]=l.useState(null),E=async()=>{try{const a=await(await W()).data;_({count:a.count||0,last_sync:a.last_sync||"Never"}),g("online"),v("Django DB Ready")}catch(s){console.error(s),g("offline"),v("DB Error")}},D=l.useCallback(async()=>{const s=new URLSearchParams({q:x,case:m?"true":"false",sort:j,type:t,folders_only:f?"true":"false",files_only:u?"true":"false",start_date:d,end_date:o});try{const c=(await Z(s)).data;F(c.files||[])}catch(a){console.error("Search error:",a)}},[m,o,u,f,x,j,d,t]);l.useEffect(()=>{E()},[]),l.useEffect(()=>{const s=setTimeout(()=>{D()},200);return()=>clearTimeout(s)},[x,m,f,u,j,d,o,t,D]);const L=s=>{s.preventDefault(),S(""),k("")},P=(s,a)=>a?"ext-badge ext-folder":s==="pdf"?"ext-badge ext-pdf":["xls","xlsx","csv"].includes(s)?"ext-badge ext-xls":["doc","docx","gdoc","rtf"].includes(s)?"ext-badge ext-doc":["png","jpg","jpeg","gif","svg","webp"].includes(s)?"ext-badge ext-img":["zip","tar","gz","rar","7z"].includes(s)?"ext-badge ext-zip":"ext-badge ext-other",R=(s,a)=>a?{icon:"fa-solid fa-folder-open",color:"#f59e0b"}:s==="pdf"?{icon:"fa-solid fa-file-pdf",color:"#ef4444"}:["xls","xlsx","csv"].includes(s)?{icon:"fa-solid fa-file-excel",color:"#10b981"}:["doc","docx","gdoc"].includes(s)?{icon:"fa-solid fa-file-word",color:"#3b82f6"}:["png","jpg","jpeg","gif","svg","webp"].includes(s)?{icon:"fa-solid fa-file-image",color:"#8b5cf6"}:["zip","tar","gz","rar","7z"].includes(s)?{icon:"fa-solid fa-file-zipper",color:"#ec4899"}:{icon:"fa-solid fa-file-lines",color:"#94a3b8"},w=s=>{if(!s||s===0)return"0 Bytes";const a=1024,c=["Bytes","KB","MB","GB"],n=Math.floor(Math.log(s)/Math.log(a));return parseFloat((s/Math.pow(a,n)).toFixed(1))+" "+c[n]},C=s=>{if(!s)return"-";try{const a=new Date(s),c=a.getFullYear(),n=String(a.getMonth()+1).padStart(2,"0"),A=String(a.getDate()).padStart(2,"0"),I=String(a.getHours()).padStart(2,"0"),G=String(a.getMinutes()).padStart(2,"0");return`${c}-${n}-${A} ${I}:${G}`}catch{return s}};return e.jsx("div",{className:"google-drive-scope",children:e.jsxs("div",{className:"app-container",children:[e.jsxs("aside",{className:"sidebar",children:[e.jsxs("div",{className:"logo-section",children:[e.jsx("div",{className:"logo-icon",children:e.jsx("i",{className:"fa-solid fa-circle-nodes"})}),e.jsx("span",{className:"logo-title",children:"G-Drive Searcher"})]}),e.jsx("nav",{children:e.jsx("ul",{className:"nav-menu",children:e.jsxs("li",{className:"nav-item active",children:[e.jsx("i",{className:"fa-solid fa-magnifying-glass"}),e.jsx("span",{children:"Search Files"})]})})}),e.jsx("div",{className:"sidebar-footer",children:e.jsxs("div",{className:"db-status-card",children:[e.jsxs("div",{className:"status-row",children:[e.jsx("span",{className:`status-dot ${$}`}),e.jsx("span",{children:B})]}),e.jsxs("div",{className:"stat-row",children:[e.jsx("span",{children:"Total Index:"}),e.jsx("span",{className:"stat-value",children:N.count.toLocaleString()})]}),e.jsxs("div",{className:"stat-row",children:[e.jsx("span",{children:"Last Sync:"}),e.jsx("span",{className:"stat-value",children:N.last_sync})]})]})})]}),e.jsxs("main",{className:"main-content",children:[e.jsx("header",{className:"top-bar",children:e.jsx("h1",{className:"top-bar-title",children:"Search Indexed Files"})}),e.jsxs("section",{className:"tab-panel active",children:[e.jsxs("div",{className:"search-controls",children:[e.jsx("div",{className:"search-bar-row",children:e.jsxs("div",{className:"search-input-wrapper",children:[e.jsx("i",{className:"fa-solid fa-magnifying-glass"}),e.jsx("input",{type:"text",className:"search-input",placeholder:"Type filename substring (e.g. 23456789 or document)...",value:x,onChange:s=>M(s.target.value),autoComplete:"off"})]})}),e.jsxs("div",{className:"filters-row",children:[e.jsxs("div",{className:"filter-options",children:[e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:m,onChange:s=>T(s.target.checked)}),e.jsx("span",{children:"Case Sensitive"})]}),e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:f,onChange:s=>{y(s.target.checked),s.target.checked&&b(!1)}}),e.jsx("span",{children:"Folders Only"})]}),e.jsxs("label",{className:"checkbox-label",children:[e.jsx("input",{type:"checkbox",checked:u,onChange:s=>{b(s.target.checked),s.target.checked&&y(!1)}}),e.jsx("span",{children:"Files Only"})]}),e.jsx("div",{className:"select-wrapper",children:e.jsxs("select",{className:"select-input",value:j,onChange:s=>O(s.target.value),children:[e.jsx("option",{value:"name-asc",children:"Name (A-Z)"}),e.jsx("option",{value:"name-desc",children:"Name (Z-A)"}),e.jsx("option",{value:"date-desc",children:"Modified Date (Newest)"}),e.jsx("option",{value:"date-asc",children:"Modified Date (Oldest)"}),e.jsx("option",{value:"size-desc",children:"Size (Largest)"}),e.jsx("option",{value:"size-asc",children:"Size (Smallest)"})]})}),e.jsxs("div",{className:"date-input-group",children:[e.jsx("i",{className:"fa-solid fa-calendar-days",style:{color:"var(--text-muted)",fontSize:"0.85rem",marginLeft:"4px"}}),e.jsx("input",{type:"date",className:"date-input",title:"Start Date",value:d,onChange:s=>S(s.target.value)}),e.jsx("span",{className:"date-separator",children:"to"}),e.jsx("input",{type:"date",className:"date-input",title:"End Date",value:o,onChange:s=>k(s.target.value)}),(d||o)&&e.jsx("button",{onClick:L,className:"btn-copy",style:{position:"static",fontSize:"0.75rem",padding:"4px 6px",marginLeft:"4px"},title:"Clear Dates",children:e.jsx("i",{className:"fa-solid fa-xmark"})})]})]}),e.jsxs("div",{className:"tag-filters",children:[e.jsx("button",{className:`tag-btn ${t==="all"?"active":""}`,onClick:()=>r("all"),children:"All Types"}),e.jsxs("button",{className:`tag-btn ${t==="folders"?"active":""}`,onClick:()=>r("folders"),children:[e.jsx("i",{className:"fa-solid fa-folder"})," Folders"]}),e.jsxs("button",{className:`tag-btn ${t==="pdf"?"active":""}`,onClick:()=>r("pdf"),children:[e.jsx("i",{className:"fa-solid fa-file-pdf"})," PDF"]}),e.jsxs("button",{className:`tag-btn ${t==="xls"?"active":""}`,onClick:()=>r("xls"),children:[e.jsx("i",{className:"fa-solid fa-file-excel"})," Excel/CSV"]}),e.jsxs("button",{className:`tag-btn ${t==="doc"?"active":""}`,onClick:()=>r("doc"),children:[e.jsx("i",{className:"fa-solid fa-file-word"})," Word/Docs"]}),e.jsxs("button",{className:`tag-btn ${t==="img"?"active":""}`,onClick:()=>r("img"),children:[e.jsx("i",{className:"fa-solid fa-file-image"})," Images"]}),e.jsxs("button",{className:`tag-btn ${t==="zip"?"active":""}`,onClick:()=>r("zip"),children:[e.jsx("i",{className:"fa-solid fa-file-zipper"})," Zip"]}
1)]})]})]}),e.jsx("div",{className:"results-section",children:e.jsxs("table",{className:"results-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"File / Folder Name"}),e.jsx("th",{children:"Path"}),e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Modified Date"}),e.jsx("th",{children:"Size"}),e.jsx("th",{children:"Action"})]})}),e.jsx("tbody",{children:h.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:6,children:e.jsxs("div",{className:"no-results",children:[e.jsx("i",{className:"fa-solid fa-magnifying-glass-minus"}),e.jsx("p",{children:"No matching files or folders found."})]})})}):h.map(s=>{const a=s.mime_type==="application/vnd.google-apps.folder",c=s.extension||"",n=R(c,a);return e.jsxs("tr",{children:[e.jsx("td",{children:e.jsxs("div",{className:"file-name-cell",children:[e.jsx("div",{className:"file-icon",style:{backgroundColor:`${n.color}1c`,color:n.color},children:e.jsx("i",{className:n.icon})}),e.jsx("span",{style:{cursor:"pointer",textDecoration:"none"},onClick:()=>p(s),children:s.name})]})}),e.jsx("td",{children:e.jsx("div",{className:"file-path",title:s.path||"/",children:s.path||"/"})}),e.jsx("td",{children:e.jsx("span",{className:P(c,a),children:a?"folder":c||"file"})}),e.jsx("td",{children:e.jsx("span",{className:"file-date",children:C(s.modified_date)})}),e.jsx("td",{children:e.jsx("span",{className:"file-size",children:a?"-":w(s.size)})}),e.jsx("td",{children:s.url?e.jsxs("a",{href:s.url,className:"open-link",target:"_blank",rel:"noopener noreferrer",children:["Open ",e.jsx("i",{className:"fa-solid fa-arrow-up-right-from-square",style:{fontSize:"0.75rem"}})]}):e.jsx("span",{style:{color:"var(--text-muted)",fontSize:"0.85rem"},children:"-"})})]},s.id)})})]})})]})]}),i&&e.jsx("div",{className:"modal",style:{display:"flex"},children:e.jsxs("div",{className:"modal-content",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("h3",{className:"modal-title",children:"File Details"}),e.jsx("button",{className:"modal-close",onClick:()=>p(null),children:e.jsx("i",{className:"fa-solid fa-xmark"})})]}),e.jsxs("div",{className:"modal-body",children:[e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Name"}),e.jsx("div",{className:"detail-value",style:{fontWeight:600},children:i.name})]}),e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Path"}),e.jsx("div",{className:"detail-value",children:i.path||"/"})]}),e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Type"}),e.jsx("div",{className:"detail-value",children:i.mime_type})]}),e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Size"}),e.jsx("div",{className:"detail-value",children:i.mime_type==="application/vnd.google-apps.folder"?"-":w(i.size)})]}),e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Modified Date"}),e.jsx("div",{className:"detail-value",children:C(i.modified_date)})]}),e.jsxs("div",{className:"detail-row",children:[e.jsx("div",{className:"detail-label",children:"Drive ID"}),e.jsx("div",{className:"detail-value mono",children:i.id})]}),i.url&&e.jsxs("div",{className:"detail-row",style:{borderBottom:"none",marginTop:"8px"},children:[e.jsx("div",{className:"detail-label",children:"Web View Link"}),e.jsx("div",{className:"detail-value",children:e.jsxs("a",{href:i.url,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--accent-primary)",textDecoration:"none",fontWeight:500},children:["Open in Google Drive ",e.jsx("i",{className:"fa-solid fa-external-link-alt",style:{fontSize:"0.75rem"}})]})})]})]}),e.jsx("div",{style:{display:"flex",justifyContent:"flex-end"},children:e.jsx("button",{className:"btn btn-secondary",onClick:()=>p(null),children:"Done"})})]})})]})})}export{Q as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.