1import{r as l,j as a}from"./react-vendor-N5TEtgU9.js";import{j as A,h as F,i as P,aK as q,a8 as I,$ as b,B as j,X as M,L as R}from"./index-CefG7aBd.js";import{u as S}from"./i18n-vendor-CSxDejkk.js";import{C as E}from"./camera-DwsjWaKk.js";import{U as B}from"./upload-DtONMEdh.js";import{C as $}from"./clipboard-Dy0_SEnS.js";import"./query-vendor-qf5k-6U3.js";import"./supabase-vendor-CrWRCqME.js";import"./locale-en-CUyC166T.js";/** 2 * @license lucide-react v0.462.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const H=A("ScanFace",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 9h.01",key:"x1ddxp"}]]),Z=({onAnalyze:U,isLoading:u})=>{const[N,c]=l.useState(!1),[d,p]=l.useState(null),[m,h]=l.useState(!1),[n,w]=l.useState("screenshot"),{user:x}=F(),{toast:i}=P(),{t}=S(),D=[{id:"screenshot",label:t("imageUploader.types.screenshot"),icon:E},{id:"photo",label:t("imageUploader.types.photo"),icon:H},{id:"qrcode",label:t("imageUploader.types.qrcode"),icon:q},{id:"document",label:t("imageUploader.types.document"),icon:I}],g=l.useCallback(e=>{e.preventDefault(),e.stopPropagation(),e.type==="dragenter"||e.type==="dragover"?c(!0):e.type==="dragleave"&&c(!1)},[]),f=async e=>{if(!e.type.startsWith("image/")){i({title:t("imageUploader.toast.invalidType"),description:t("imageUploader.toast.invalidTypeDesc"),variant:"destructive"});return}if(e.size>5*1024*1024){i({title:t("imageUploader.toast.tooLarge"),description:t("imageUploader.toast.tooLargeDesc"),variant:"destructive"});return}const r=new FileReader;r.onload=s=>{var o;return p((o=s.target)==null?void 0:o.result)},r.readAsDataURL(e)},k=async e=>{if(!e.type.startsWith("image/")){i({title:t("imageUploader.toast.invalidClipboard"),description:t("imageUploader.toast.invalidClipboardDesc"),variant:"destructive"});return}if(e.size>5*1024*1024){i({title:t("imageUploader.toast.clipboardTooLarge"),description:t("imageUploader.toast.clipboardTooLargeDesc"),variant:"destructive"});return}const r=new FileReader;r.onload=s=>{var o;p((o=s.target)==null?void 0:o.result),i({title:t("imageUploader.toast.pasted"),description:t("imageUploader.toast.pastedDesc")})},r.readAsDataURL(e)};l.useEffect(()=>{const e=async r=>{var o;const s=(o=r.clipboardData)==null?void 0:o.items;if(s){for(const v of s)if(v.type.startsWith("image/")){r.preventDefault();const y=v.getAsFile();y&&await k(y);break}}};return document.addEventListener("paste",e),()=>document.removeEventListener("paste",e)},[]);const C=l.useCallback(e=>{e.preventDefault(),e.stopPropagation(),c(!1),e.dataTransfer.files&&e.dataTransfer.files[0]&&f(e.dataTransfer.files[0])},[]),T=e=>{e.target.files&&e.target.files[0]&&f(e.target.files[0])},L=async()=>{if(d){if(!x){i({title:t("imageUploader.toast.signIn"),description:t("imageUploader.toast.signInDesc"),variant:"destructive"});return}h(!0);try{U(d,n)}catch(e){console.error("Analyze error:",e),i({title:t("imageUploader.toast.failed"),description:t("imageUploader.toast.failedDesc"),variant:"destructive"})}finally{h(!1)}}},z=()=>{p(null)};return a.jsxs("div",{className:"bg-gradient-card rounded-2xl border border-border p-6 md:p-8 shadow-deep animate-fade-in",children:[a.jsxs("div",{className:"mb-6",children:[a.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[a.jsx(b,{className:"w-6 h-6 text-primary"}),a.jsx("h2",{className:"font-display text-2xl font-bold",children:t("imageUploader.title")})]}),a.jsx("p",{className:"text-muted-foreground",children:t("imageUploader.subtitle")})]}),a.jsx("div",{className:"flex flex-wrap gap-2 mb-4",children:D.map(({id:e,label:r,icon:s})=>a.jsxs("button",{onClick:()=>w(e),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-xs transition-colors ${n===e?"bg-primary text-primary-foreground":"bg-secondary text-muted-foreground hover:text-foreground"}`,children:[a.jsx(s,{className:"w-3.5 h-3.5"}),r]},e))}),d?a.jsxs("div",{className:"space-y-4",children:[a.jsxs("div",{className:"relative rounded-lg overflow-hidden bg-secondary/30",children:[a.jsx("img",{src:d,alt:"Preview",className:"w-full h-48 object-contain"}),a.jsx(j,{variant:"ghost",size:"icon","aria-label":"Remove image",title:"Remove image",className:"absolute top-2 right-2 bg-background/80 hover:bg-background",onClick:z,children:a.jsx(M,{className:"w-4 h-4"})})]}),a.jsx(j,{onClick:L,disabled:u||m,className:"w-full h-12 text-base font-semibold bg-gradient-primary hover:opacity-90 transition-opacity glow-primary",children:m||u?a.jsxs(a.Fragment,{children:[a.jsx(R,{className:"w-5 h-5 mr-2 animate-spin"}
6),t(m?"imageUploader.uploading":"imageUploader.analyzing")]}):a.jsxs(a.Fragment,{children:[a.jsx(b,{className:"w-5 h-5 mr-2"}),t(`imageUploader.analyze.${n==="qrcode"?"qrcode":n==="document"?"document":n==="photo"?"photo":"screenshot"}`)]})})]}):a.jsxs("div",{className:`relative border-2 border-dashed rounded-xl p-8 transition-colors ${N?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onDragEnter:g,onDragLeave:g,onDragOver:g,onDrop:C,children:[a.jsx("input",{type:"file",accept:"image/*",onChange:T,className:"absolute inset-0 w-full h-full opacity-0 cursor-pointer"}),a.jsxs("div",{className:"text-center",children:[a.jsx(B,{className:"w-10 h-10 text-muted-foreground mx-auto mb-3"}),a.jsx("p",{className:"text-sm font-medium mb-1",children:t("imageUploader.dropTitle")}),a.jsx("p",{className:"text-xs text-muted-foreground mb-3",children:t("imageUploader.dropHint")}),a.jsxs("div",{className:"flex items-center justify-center gap-2 text-xs text-primary",children:[a.jsx($,{className:"w-3.5 h-3.5"}),a.jsxs("span",{children:[t("imageUploader.pastePromptBefore")," ",a.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-xs font-mono",children:t("imageUploader.pastePromptKey")})," ",t("imageUploader.pastePromptAfter")]})]})]})]}),!x&&a.jsx("p",{className:"text-xs text-muted-foreground text-center mt-4",children:t("imageUploader.signInHint")})]})};export{Z 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.