1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[61],{71376:function(e,t,a){Promise.resolve().then(a.bind(a,16456)),Promise.resolve().then(a.bind(a,92194)),Promise.resolve().then(a.bind(a,13454)),Promise.resolve().then(a.bind(a,22549))},92194:function(e,t,a){"use strict";a.d(t,{CallToActionSection:function(){return i}});var r=a(57437),n=a(12381),s=a(42586),l=a(20769);function i(){(0,s.useLocale)();let e=(0,s.useTranslations)("body.CallToAction"),{setShowTest:t}=(0,l.$)();return(0,r.jsx)("section",{className:"py-16 bg-white dark:bg-black",children:(0,r.jsxs)("div",{className:"container mx-auto px-4 text-center",children:[(0,r.jsx)("h2",{className:"mb-8 text-3xl font-bold text-center text-gray-900 dark:text-white",children:e("title")}),(0,r.jsx)("p",{className:"text-xl mb-8 max-w-2xl mx-auto",children:e("content")}),(0,r.jsx)(n.z,{size:"lg",className:"text-white px-8",onClick:()=>{let e=document.getElementById("hero");null==e||e.scrollIntoView({behavior:"smooth"}),t(!0)},children:e("buttonText")})]})})}},13454:function(e,t,a){"use strict";a.d(t,{default:function(){return er}});var r=a(57437),n=a(2265),s=a(77598),l=a(15863),i=a(17689),o=a(22252),d=a(70112),c=a(93448);let m=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,c.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",a),...n})});m.displayName="Card";let u=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,c.cn)("flex flex-col space-y-1.5 p-6",a),...n})});u.displayName="CardHeader";let x=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("h3",{ref:t,className:(0,c.cn)("text-2xl font-semibold leading-none tracking-tight",a),...n})});x.displayName="CardTitle",n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("p",{ref:t,className:(0,c.cn)("text-sm text-muted-foreground",a),...n})}).displayName="CardDescription";let p=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,c.cn)("p-6 pt-0",a),...n})});p.displayName="CardContent",n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,c.cn)("flex items-center p-6 pt-0",a),...n})}).displayName="CardFooter";let f=(0,a(90535).j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),h=n.forwardRef((e,t)=>{let{className:a,variant:n,...s}=e;return(0,r.jsx)("div",{ref:t,role:"alert",className:(0,c.cn)(f({variant:n}),a),...s})});h.displayName="Alert";let g=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("h5",{ref:t,className:(0,c.cn)("mb-1 font-medium leading-none tracking-tight",a),...n})});g.displayName="AlertTitle";let b=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{ref:t,className:(0,c.cn)("text-sm [&_p]:leading-relaxed",a),...n})});b.displayName="AlertDescription";let j=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("div",{className:"relative w-full overflow-auto",children:(0,r.jsx)("table",{ref:t,className:(0,c.cn)("w-full caption-bottom text-sm",a),...n})})});j.displayName="Table";let v=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("thead",{ref:t,className:(0,c.cn)("[&_tr]:border-b",a),...n})});v.displayName="TableHeader";let N=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("tbody",{ref:t,className:(0,c.cn)("[&_tr:last-child]:border-0",a),...n})});N.displayName="TableBody",n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("tfoot",{ref:t,className:(0,c.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",a),...n})}).displayName="TableFooter";let w=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("tr",{ref:t,className:(0,c.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",a),...n})});w.displayName="TableRow";let y=n.forwardRef((e,t)=>
1{let{className:a,...n}=e;return(0,r.jsx)("th",{ref:t,className:(0,c.cn)("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",a),...n})});y.displayName="TableHead";let S=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("td",{ref:t,className:(0,c.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",a),...n})});S.displayName="TableCell",n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)("caption",{ref:t,className:(0,c.cn)("mt-4 text-sm text-muted-foreground",a),...n})}).displayName="TableCaption";var k=a(1264),R=a(40875),P=a(22135),_=a(30401);let C=k.fC;k.ZA;let F=k.B4,D=n.forwardRef((e,t)=>{let{className:a,children:n,...s}=e;return(0,r.jsxs)(k.xz,{ref:t,className:(0,c.cn)("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...s,children:[n,(0,r.jsx)(k.JO,{asChild:!0,children:(0,r.jsx)(R.Z,{className:"h-4 w-4 opacity-50"})})]})});D.displayName=k.xz.displayName;let T=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)(k.u_,{ref:t,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",a),...n,children:(0,r.jsx)(P.Z,{className:"h-4 w-4"})})});T.displayName=k.u_.displayName;let I=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)(k.$G,{ref:t,className:(0,c.cn)("flex cursor-default items-center justify-center py-1",a),...n,children:(0,r.jsx)(R.Z,{className:"h-4 w-4"})})});I.displayName=k.$G.displayName;let G=n.forwardRef((e,t)=>{let{className:a,children:n,position:s="popper",...l}=e;return(0,r.jsx)(k.h_,{children:(0,r.jsxs)(k.VY,{ref:t,className:(0,c.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===s&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:s,...l,children:[(0,r.jsx)(T,{}),(0,r.jsx)(k.l_,{className:(0,c.cn)("p-1","popper"===s&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:n}),(0,r.jsx)(I,{})]})})});G.displayName=k.VY.displayName,n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)(k.__,{ref:t,className:(0,c.cn)("py-1.5 pl-8 pr-2 text-sm font-semibold",a),...n})}).displayName=k.__.displayName;let M=n.forwardRef((e,t)=>{let{className:a,children:n,...s}=e;return(0,r.jsxs)(k.ck,{ref:t,className:(0,c.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...s,children:[(0,r.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,r.jsx)(k.wU,{children:(0,r.jsx)(_.Z,{className:"h-4 w-4"})})}),(0,r.jsx)(k.eT,{children:n})]})});M.displayName=k.ck.displayName,n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)(k.Z0,{ref:t,className:(0,c.cn)("-mx-1 my-1 h-px bg-muted",a),...n})}).displayName=k.Z0.displayName;var z=a(30166),E=a(33145),A=a(45802),L=a(43391),O=a(12381);function U(e){let{src:t,alt:a}
1=e,[s,l]=(0,n.useState)(1);return(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("div",{className:"overflow-hidden rounded-lg border",children:(0,r.jsx)("div",{style:{transform:"scale(".concat(s,")"),transformOrigin:"top left",transition:"transform 0.2s"},children:(0,r.jsx)(E.default,{src:t||"/placeholder.svg",alt:a,width:800,height:600,className:"w-full object-cover"})})}),(0,r.jsxs)("div",{className:"absolute bottom-4 right-4 flex gap-2",children:[(0,r.jsx)(O.z,{onClick:()=>l(e=>Math.max(e-.1,.5)),size:"sm",variant:"secondary",children:(0,r.jsx)(A.Z,{className:"w-4 h-4"})}),(0,r.jsx)(O.z,{onClick:()=>l(e=>Math.min(e+.1,3)),size:"sm",variant:"secondary",children:(0,r.jsx)(L.Z,{className:"w-4 h-4"})})]})]})}var H=a(89520);a(21005);var Y=a(3410);let Z=Y.zt,V=Y.fC,B=Y.xz,X=n.forwardRef((e,t)=>{let{className:a,sideOffset:n=4,...s}=e;return(0,r.jsx)(Y.VY,{ref:t,sideOffset:n,className:(0,c.cn)("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...s})});X.displayName=Y.VY.displayName;var J=a(46738),W=a(74808),$=a.n(W);let q=(0,z.default)(()=>Promise.all([a.e(641),a.e(212),a.e(134)]).then(a.bind(a,76134)),{loadableGenerated:{webpack:()=>[76134]},ssr:!1}),K=["Make","Model","Software","DateTime","DateTimeOriginal","DateTimeDigitized","ModifyDate","MeteringMode","ExposureProgram","ExposureBiasValue"],Q=["FileSource","SceneType"],ee=["GPSLatitude","GPSAltitude","GPSDateStamp"],et=e=>{if(!e)return null;try{let[t,a]=e.split(" ");if(!t)return null;let[r,n,s]=t.split(":").map(e=>parseInt(e)),[l,i,o]=a?a.split(":").map(e=>parseInt(e)):[0,0,0];if(!r||!n||!s)return null;let d=new Date(r,n-1,s,l||0,i||0,o||0);return isNaN(d.getTime())?null:d}catch(e){return console.error("Date parsing error:",e),null}},ea=e=>e.getFullYear()+":"+String(e.getMonth()+1).padStart(2,"0")+":"+String(e.getDate()).padStart(2,"0")+" "+String(e.getHours()).padStart(2,"0")+":"+String(e.getMinutes()).padStart(2,"0")+":"+String(e.getSeconds()).padStart(2,"0");function er(){let[e,t]=(0,n.useState)(null),[a,c]=(0,n.useState)(null),[f,k]=(0,n.useState)(null),[R,P]=(0,n.useState)(""),_=async e=>{try{let a=new FileReader;a.onload=e=>{var a;let r=null===(a=e.target)||void 0===a?void 0:a.result;P(r);let n=J.load(r);t(n),console.log("EXIFæ°æ® (piexifjs):",n);let s=new Image;s.src=r,s.onload=function(){$().getData(s,function(){let e=$().getAllTags(s);console.log("EXIFæ°æ® (exif-js):",e),c(e),k(e.thumbnail||null)})}},a.readAsDataURL(e)}catch(e){console.error("读åEXIFä¿¡æ¯å¤±è´¥:",e)}},T=(a,r,n)=>{e&&(console.log("Updating EXIF value:",{category:a,tag:r,value:n}),console.log("Current exifData:",e),t(e=>{let t={...e,[a]:{...e[a],[r]:n}};return console.log("Updated exifData:",t),t}))}
1,[I,z]=(0,n.useState)(null),[E,A]=(0,n.useState)(null),[L,O]=(0,n.useState)(!1),[Y,W]=(0,n.useState)([]),[er,en]=(0,n.useState)({}),es=(0,n.useRef)(null),el=(0,n.useCallback)(async e=>{let a=e[0];if(a){O(!0),A(null),es.current=a;try{let e=URL.createObjectURL(a);z(e),await _(a)}catch(e){A(e.message||"Failed to read image metadata"),t(null)}finally{O(!1)}}},[]),{getRootProps:ei,getInputProps:eo,isDragActive:ed}=(0,s.uI)({onDrop:el,accept:{"image/jpeg":[".jpg",".jpeg"]},multiple:!1}),ec=(e,t)=>{if(void 0===t)return"N/A";switch(e){case"ExposureTime":return"string"==typeof t&&t.includes("/")?"".concat(t," sec"):"1/".concat(Math.round(1/Number(t))," sec");case"FNumber":return"f/".concat(t);case"FocalLength":return"".concat(t);case"FocalLengthIn35mmFilm":return"".concat(t,"mm (35mm equivalent)");case"GPSLatitude":case"GPSLongitude":return"number"==typeof t?t.toFixed(6):t;case"ISO":return"ISO ".concat(t);case"WhiteBalance":return 0===Number(t)?"Auto":"Manual";case"Flash":return 0===t?"No Flash":"Flash Fired";case"ExposureProgram":return["Not defined","Manual","Normal program","Aperture priority","Shutter priority","Creative program","Action program","Portrait mode","Landscape mode"][Number(t)]||"Unknown (".concat(t,")");case"MeteringMode":return["Unknown","Average","Center-weighted average","Spot","Multi-spot","Pattern","Partial"][Number(t)]||"Unknown (".concat(t,")");case"Orientation":return["Horizontal (normal)","Mirror horizontal","Rotate 180","Mirror vertical","Mirror horizontal and rotate 270 CW","Rotate 90 CW","Mirror horizontal and rotate 90 CW","Rotate 270 CW"][Number(t)-1]||"Unknown (".concat(t,")");default:return t.toString()}},em=e=>{let t,r,n;if(!a)return;switch(e){case"csv":let s=Object.keys(a).join(","),l=Object.values(a).map(e=>'"'.concat(e,'"')).join(",");t="".concat(s,"\n").concat(l),r="exif_data.csv",n="text/csv";break;case"json":t=JSON.stringify(a,null,2),r="exif_data.json",n="application/json";break;case"xml":t='<?xml version="1.0" encoding="UTF-8"?>\n<exif>\n'.concat(Object.entries(a).map(e=>{let[t,a]=e;return" <".concat(t,">").concat(a,"</").concat(t,">")}).join("\n"),"\n</exif>"),r="exif_data.xml",n="application/xml";break;case"txt":t=Object.entries(a).map(e=>{let[t,a]=e;return"".concat(t,": ").concat(a)}).join("\n"),r="exif_data.txt",n="text/plain"}let i=new Blob([t],{type:n}),o=URL.createObjectURL(i),d=document.createElement("a");d.href=o,d.download=r,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(o)},eu=async(e,t)=>{if(es.current)try{let a,r;let n=await fetch(URL.createObjectURL(es.current)),s=await n.blob(),l=await new Promise((e,t)=>{let a=new Image;a.onload=()=>e(a),a.onerror=t,a.src=URL.createObjectURL(s)}),i=document.createElement("canvas");i.width=l.width,i.height=l.height;let o=i.getContext("2d");switch(null==o||o.drawImage(l,0,0,l.width,l.height),e){case"jpeg":a="image/jpeg",r="image.jpg";break;case"png":a="image/png",r="image.png";break;case"tiff":a="image/tiff",r="image.tiff";break;case"webp":a="image/webp",r="image.webp"}i.toBlob(e=>{if(e){let a=URL.createObjectURL(e),n=document.createElement("a");n.href=a,n.download=t?"".concat(r.split(".")[0],"_without_exif.").concat(r.split(".")[1]):r,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(a)}},a,"jpeg"===e?.95:void 0)}catch(e){console.error("Error processing image:",e),A("Failed to process and download the image. Please try again.")}};return(0,r.jsxs)("div",{className:"min-h-screen bg-gradient-to-b dark:from-gray-900 via-gray-800 to-gray-900 text-white p-4 sm:p-6 md:p-8 lg:p-16",children:[(0,r.jsx)("style",{children:"\n .react-datepicker {\n font-family: inherit;\n font-size: 14px;\n background-color: white;\n color: black;\n border-radius: 8px;\n border: 1px solid #ccc;\n width: 280px;\n }\n \n .react-datepicker__input-container input {\n width: 100%;\n padding: 8px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 14px;\n color: black;\n background: white;\n }\n\n .react-datepicker__header {\n background-color: white;\n border-bottom: none;\n padding: 8px 0;\n }\n\n .react-datepicker__day {\n width: 2rem;\n line-height: 2rem;\n margin: 0.1rem;\n }\n\n .react-datepicker__day--selected {\n background-color: #2196f3;\n border-radius: 50%;\n }\n\n .react-datepicker__time-container {\n width: 100%;\n border-left: none;\n }\n\n .react-datepicker__time-container .react-datepicker__time {\n background: white;\n }\n\n .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\n width: 100%;\n margin: 0;\n }\n\n .react-datepicker__time-list-item {\n height: 32px !important;\n line-height: 32px !important;\n padding: 0 !important;\n text-align: center;\n }\n\n .react-datepicker__time-list-item--selected {\n background-color: #2196f3 !important;\n }\n\n .react-datepicker__navigation {\n top: 8px;\n }\n\n .react-datepicker__current-month {\n font-size: 1rem;\n margin-bottom: 8px;\n }\n\n .react-datepicker__day-name {\n width: 2rem;\n line-height: 2rem;\n margin: 0.1rem;\n }\n\n @media (max-width: 640px) {\n .react-datepicker-popper {\n position: fixed !important;\n top: 50% !important;\n left: 50% !important;\n transform: translate(-50%, -50%) !important;\n margin: 0 !important;\n }\n \n .react-datepicker__portal {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n \n .react-datepicker {\n position: relative !important;\n margin: 0;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n }\n }\n"}),(0,r.jsxs)("div",{className:"max-w-7xl mx-auto",children:[(0,r.jsxs)("div",{className:"text-center mb-20 relative py-12",children:[(0,r.jsx)("h1",{className:"text-5xl sm:text-6xl md:text-7xl font-extrabold mb-4 bg-clip-text text-transparent bg-gradient-to-r from-blue-400 via-blue-600 to-blue-800 tracking-tight",children:"Unveil Image Secrets"}),(0,r.jsx)("p",{className:"text-xl sm:text-2xl text-gray-500 max-w-3xl mx-auto leading-relaxed",children:"Decode EXIF data and reveal the hidden stories behind every pixel"}),(0,r.jsx)("div",{className:"mt-8 flex justify-center",children:(0,r.jsx)("div",{className:"w-32 h-1 bg-gradient-to-r from-blue-400 to-blue-600 rounded-full"})})]}),(0,r.jsx)("div",{className:"max-w-7xl mx-auto mt-8",children:(0,r.jsxs)("div",{className:"".concat(I?"flex flex-col lg:grid lg:grid-cols-2":""," gap-4 sm:gap-6 md:gap-8"),children:[(0,r.jsxs)("div",{className:"space-y-4 sm:sp
1ace-y-6 ".concat(I?"":"w-full max-w-6xl mx-auto"),children:[(0,r.jsxs)(m,{className:"w-full",children:[(0,r.jsx)(u,{children:(0,r.jsx)(x,{children:"Upload Image"})}),(0,r.jsxs)(p,{className:"space-y-4",children:[(0,r.jsxs)("div",{...ei(),className:"border-2 border-dashed rounded-lg p-12 sm:p-16 md:p-20 text-center cursor-pointer ".concat(ed?"border-primary bg-primary/5":"border-muted"," ").concat(L?"pointer-events-none opacity-50":""),children:[(0,r.jsx)("input",{...eo()}),(0,r.jsxs)("div",{className:"flex flex-col items-center",children:[L?(0,r.jsx)(l.Z,{className:"h-12 w-12 mb-4 animate-spin"}):(0,r.jsx)(i.Z,{className:"h-12 w-12 mb-4 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-lg mb-2",children:ed?"Drop the image here":"Drag & drop an image here"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"(JPEG)"})]})]}),I&&(0,r.jsx)("div",{className:"rounded-lg overflow-hidden border",children:(0,r.jsx)(U,{src:I||"/placeholder.svg",alt:"Uploaded image"})})]})]}),I&&e&&(0,r.jsx)(r.Fragment,{children:(null==e?void 0:e.GPSLatitude)&&(null==e?void 0:e.GPSLongitude)&&(0,r.jsxs)(m,{children:[(0,r.jsx)(u,{children:(0,r.jsx)(x,{className:"text-lg sm:text-xl",children:"Location Map"})}),(0,r.jsx)(p,{children:(0,r.jsx)("div",{className:"h-[200px] sm:h-[300px]",children:(0,r.jsx)(q,{latitude:e.GPSLatitude,longitude:e.GPSLongitude})})})]})})]}),I&&e&&(0,r.jsxs)("div",{className:"space-y-4 sm:space-y-6",children:[E&&(0,r.jsxs)(h,{variant:"destructive",children:[(0,r.jsx)(o.Z,{className:"h-4 w-4"}),(0,r.jsx)(g,{children:"Error"}),(0,r.jsx)(b,{children:E})]}),f&&(0,r.jsxs)(m,{className:"mb-4",children:[(0,r.jsx)(u,{children:(0,r.jsx)(x,{className:"text-lg sm:text-xl",children:"Thumbnail Information"})}),(0,r.jsx)(p,{children:(0,r.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[(0,r.jsx)("div",{className:"space-y-4",children:(0,r.jsx)("div",{className:"rounded-lg overflow-hidden border bg-gray-100 dark:bg-gray-800",children:(0,r.jsx)("div",{className:"aspect-square relative",children:(0,r.jsx)(U,{src:I||"/placeholder.svg",alt:"Thumbnail"})})})}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-medium",children:"Compression: "}),(0,r.jsx)("span",{className:"text-muted-foreground",children:String(f.Compression||"N/A")})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-medium",children:"Resolution: "}),(0,r.jsxs)("span",{className:"text-muted-foreground",children:[String(f.XResolution||"N/A")," x ",String(f.YResolution||"N/A")]})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-medium",children:"Resolution Unit: "}),(0,r.jsx)("span",{className:"text-muted-foreground",children:String(f.ResolutionUnit||"N/A")})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-medium",children:"JPEG IF Offset: "}),(0,r.jsx)("span",{className:"text-muted-foreground",children:String(f.JpegIFOffset||"N/A")})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:"font-medium",children:"JPEG IF Byte Count: "}),(0,r.jsx)("span",{className:"text-muted-foreground",children:String(f.JpegIFByteCount||"N/A")})]})]})]})})]}),(0,r.jsxs)(m,{children:[(0,r.jsx)(u,{children:(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(x,{className:"text-lg sm:text-xl",children:"EXIF Information"}),(0,r.jsx)(Z,{delayDuration:0,children:(0,r.jsxs)(V,{defaultOpen:!0,children:[(0,r.jsx)(B,{children:(0,r.jsx)(d.Z,{className:"h-4 w-4 text-muted-foreground"})}),(0,r.jsxs)(X,{className:"max-w-xs",children:[(0,r.jsx)("p",{children:"1. Export file contains current image information."}),(0,r.jsx)("p",{children:"2. Fields with input boxes are editable. Use the Save button to download the image with updated EXIF information."})]})]})})]}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsxs)(C,{onValueChange:e=>{["csv","json","xml","txt"].includes(e)?em(e):"without_exif"===e?eu("jpeg",!0):eu(e,!1)},children:[(0,r.jsx)(D,{className:"w-[130px]",children:(0,r.jsx)(F,{placeholder:"Export"})}),(0,r.jsxs)(G,{children:[(0,r.jsx)(M,{value:"csv",children:"CSV"}),(0,r.jsx)(M,{value:"json",children:"JSON"}),(0,r.jsx)(M,{value:"xml",children:"XML"}),(0,r.jsx)(M,{value:"txt",children:"TXT"}),(0,r.jsx)(M,{value:"jpeg",children:"JPEG"}),(0,r.jsx)(M,{value:"png",children:"PNG"}),(0,r.jsx)(M,{value:"tiff",children:"TIFF"}),(0,r.jsx)(M,{value:"webp",children:"WebP"})]})]}),(0,r.jsx)("button",{onClick:()=>{try{if(!R||!e)return;let t=J.dump(e),a=J.insert(t,R),r=document.createElement("a");r.href=a,r.download="modified_image.jpg",r.click()}catch(e){console.error("ä¿åEXIFä¿¡æ¯å¤±è´¥:",e)}},className:"bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded",children:"Save"})]})]})}),(0,r.jsx)(p,{children:(0,r.jsx)("div",{className:"overflow-x-auto -mx-4 sm:-mx-6",children:(0,r.jsxs)(j,{className:"min-w-full",children:[(0,r.jsx)(v,{children:(0,r.jsxs)(w,{children:[(0,r.jsx)(y,{className:"w-1/3",children:"Field"}),(0,r.jsx)(y,{className:"w-1/3",children:"Value"})]})}),(0,r.jsxs)(N,{children:[Object.entries(J.ImageIFD).sort((t,a)=>{var r,n;
1let[s,l]=t,[i,o]=a,d=!!(null==e?void 0:null===(r=e["0th"])||void 0===r?void 0:r[l]);return!!(null==e?void 0:null===(n=e["0th"])||void 0===n?void 0:n[o])===d?0:d?-1:1}).map(t=>{var a,n,s;let[l,i]=t;return console.log("Rendering field:",{tagName:l,tag:i,editable:K.includes(l)}),(0,r.jsxs)(w,{children:[(0,r.jsx)(S,{className:"font-medium",children:l}),(0,r.jsx)(S,{children:K.includes(l)?"DateTime"===l?(0,r.jsx)(H.ZP,{selected:et(String((null==e?void 0:null===(a=e["0th"])||void 0===a?void 0:a[i])||"")),onChange:e=>{e&&T("0th",i,ea(e))},showTimeSelect:!0,timeFormat:"HH:mm:ss",timeIntervals:1,dateFormat:"yyyy:MM:dd HH:mm:ss",className:"w-full border rounded p-1 bg-white text-black",placeholderText:"YYYY:MM:DD HH:mm:ss",popperClassName:"z-50",wrapperClassName:"z-50",portalId:"root-portal"}):(0,r.jsx)("div",{className:"flex items-center space-x-2",children:(0,r.jsx)("input",{type:"text",value:String((null==e?void 0:null===(n=e["0th"])||void 0===n?void 0:n[i])||""),onChange:e=>{console.log("Input change:",{tag:i,value:e.target.value}),T("0th",i,e.target.value)},className:"w-full border rounded p-1 dark:bg-gray-800"})}):(0,r.jsx)("span",{children:ec(l,null==e?void 0:null===(s=e["0th"])||void 0===s?void 0:s[i])})})]},"0th-".concat(i))}),Object.entries(J.ExifIFD).filter(e=>{let[t]=e;return!Q.includes(t)}).sort((t,a)=>{var r,n;let[s,l]=t,[i,o]=a,d=!!(null==e?void 0:null===(r=e.Exif)||void 0===r?void 0:r[l]);return!!(null==e?void 0:null===(n=e.Exif)||void 0===n?void 0:n[o])===d?0:d?-1:1}).map(t=>{var a;let[n,s]=t,l=null==e?void 0:null===(a=e.Exif)||void 0===a?void 0:a[s],i=l,o=n;return("DateTimeOriginal"===n||"DateTimeDigitized"===n?(o="DateTimeOriginal"===n?"Original Date Time":"Digitized Date Time",i=String(l||"")):i=ec(n,l),K.includes(n)||l)?(0,r.jsxs)(w,{children:[(0,r.jsx)(S,{className:"font-medium",children:o}),(0,r.jsx)(S,{children:K.includes(n)?n.includes("DateTime")?(0,r.jsx)(H.ZP,{selected:et(String(i)),onChange:e=>{e&&T("Exif",String(s),ea(e))},showTimeSelect:!0,timeFormat:"HH:mm:ss",timeIntervals:1,dateFormat:"yyyy:MM:dd HH:mm:ss",className:"w-full border rounded p-1 bg-white text-black",placeholderText:"YYYY:MM:DD HH:mm:ss",popperClassName:"z-50",wrapperClassName:"z-50",portalId:"root-portal"}):(0,r.jsx)("input",{type:"text",value:String(i||""),onChange:e=>T("Exif",String(s),e.target.value),className:"w-full border rounded p-1",placeholder:n.includes("DateTime")?"YYYY:MM:DD HH:mm:ss":""}):(0,r.jsx)("span",{children:i||"N/A"})})]},"Exif-".concat(s)):null}).filter(Boolean),Object.entries(J.GPSIFD).sort((t,a)=>{var r,n;let[s,l]=t,[i,o]=a,d=!!(null==e?void 0:null===(r=e.GPS)||void 0===r?void 0:r[l]);return!!(null==e?void 0:null===(n=e.GPS)||void 0===n?void 0:n[o])===d?0:d?-1:1}).map(t=>{var a;let[n,s]=t,l=null==e?void 0:null===(a=e.GPS)||void 0===a?void 0:a[s],i=l,o=n;switch(n){case"GPSLatitude":if(o="GPS Location (Lat, Long)",Array.isArray(l)&&3===l.length){let t=l[0][0]/l[0][1],a=l[1][0]/l[1][1],r=l[2][0]/l[2][1],n=e.GPS[String(J.GPSIFD.GPSLatitudeRef)];i="".concat((t+a/60+r/3600).toFixed(6),"\xb0 ").concat(n)}break;case"GPSAltitude":if(o="GPS Altitude (meters)",Array.isArray(l)&&2===l.length){let t=e.GPS[String(J.GPSIFD.GPSAltitudeRef)],a=l[0]/l[1]*(1===t?-1:1);i="".concat(a.toFixed(1)," meters")}break;case"GPSDateStamp":o="GPS Date & Time";let d=e.GPS[String(J.GPSIFD.GPSTimeStamp)];if(d&&Array.isArray(d)&&3===d.length){let e=Math.floor(d[0][0]/d[0][1]),t=Math.floor(d[1][0]/d[1][1]),a=Math.floor(d[2][0]/d[2][1]),[r,n,s]=l.split(":").map(Number);i=ea(new Date(r,n-1,s,e,t,a))}}return ee.includes(n)?(0,r.jsxs)(w,{children:[(0,r.jsx)(S,{className:"font-medium",children:o}),(0,r.jsx)(S,{children:"GPSDateStamp"===n?(0,r.jsx)(H.ZP,{selected:et(String(i)),onChange:e=>{if(e){let t=e.getFullYear()+":"+String(e.getMonth()+1).padStart(2,"0")+":"+String(e.getDate()).padStart(2,"0");T("GPS",String(s),t);let a=[[e.getHours(),1],[e.getMinutes(),1],[e.getSeconds(),1]];T("GPS",String(J.GPSIFD.GPSTimeStamp),a)}},showTimeSelect:!0,timeFormat:"HH:mm:ss",timeIntervals:1,dateFormat:"yyyy:MM:dd HH:mm:ss",className:"w-full border rounded p-1 bg-white text-black",placeholderText:"YYYY:MM:DD HH:mm:ss",popperClassName:"z-50",wrapperClassName:"z-50",portalId:"root-portal"}):(0,r.jsx)("input",{type:"text",value:String(i||""),onChange:e=>T("GPS",String(s),e.target.value),className:"w-full border rounded p-1"})})]},"GPS-".concat(s)):null}
1).filter(Boolean),(!e||!e["0th"]&&!e.Exif&&!e.GPS&&!e["1st"])&&(0,r.jsx)(w,{children:(0,r.jsx)(S,{colSpan:3,className:"text-center py-4",children:"No EXIF data found in this image or image not yet loaded"})})]})]})})})]})]})]})})]})]})}},22549:function(e,t,a){"use strict";a.d(t,{Accordion:function(){return o},AccordionContent:function(){return m},AccordionItem:function(){return d},AccordionTrigger:function(){return c}});var r=a(57437),n=a(2265),s=a(13134),l=a(40875),i=a(93448);let o=s.fC,d=n.forwardRef((e,t)=>{let{className:a,...n}=e;return(0,r.jsx)(s.ck,{ref:t,className:(0,i.cn)("border-b",a),...n})});d.displayName="AccordionItem";let c=n.forwardRef((e,t)=>{let{className:a,children:n,...o}=e;return(0,r.jsx)(s.h4,{className:"flex",children:(0,r.jsxs)(s.xz,{ref:t,className:(0,i.cn)("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",a),...o,children:[n,(0,r.jsx)(l.Z,{className:"h-4 w-4 shrink-0 transition-transform duration-200"})]})})});c.displayName=s.xz.displayName;let m=n.forwardRef((e,t)=>{let{className:a,children:n,...l}=e;return(0,r.jsx)(s.VY,{ref:t,className:"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...l,children:(0,r.jsx)("div",{className:(0,i.cn)("pb-4 pt-0",a),children:n})})});m.displayName=s.VY.displayName},12381:function(e,t,a){"use strict";a.d(t,{z:function(){return d}});var r=a(57437),n=a(2265),s=a(37053),l=a(90535),i=a(93448);let o=(0,l.j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-teal-500 text-white hover:bg-teal-600",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),d=n.forwardRef((e,t)=>{let{className:a,variant:n,size:l,asChild:d=!1,...c}=e,m=d?s.g7:"button";return(0,r.jsx)(m,{className:(0,i.cn)(o({variant:n,size:l,className:a})),ref:t,...c})});d.displayName="Button"},93448:function(e,t,a){"use strict";a.d(t,{cn:function(){return s}});var r=a(61994),n=a(53335);function s(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,n.m6)((0,r.W)(t))}},20769:function(e,t,a){"use strict";a.d(t,{$:function(){return r}});let r=(0,a(59625).Ue)(e=>({showTest:!1,setShowTest:t=>e({showTest:t})}))}},function(e){e.O(0,[360,282,333,137,878,56,306,50,971,117,744],function(){return e(e.s=71376)}),_N_E=e.O()}]);
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.