PageSourceSearch

https://dotartgenerator.com/_next/static/chunks/ced592c011be30e3.js

js dotartgenerator.com collected 2026-10-04 13:25:00 UTC 46,259 bytes, 5 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,8790,e=>{"use strict";var t=e.i(40580),a=e.i(46352),r=e.i(97084),o=e.i(47133);function n(e){let o,n,l,i,s,c,d=(0,a.c)(15),{type:h,data:m}=e;if(d[0]!==m||d[1]!==h){let e,t={"@context":"https://schema.org","@type":h,...m};o=r.default,d[6]!==h?(e=h.toLowerCase(),d[6]=h,d[7]=e):e=d[7],l=`structured-data-${e}`,i="application/ld+json",n=JSON.stringify(t),d[0]=m,d[1]=h,d[2]=o,d[3]=n,d[4]=l,d[5]=i}else o=d[2],n=d[3],l=d[4],i=d[5];return d[8]!==n?(s={__html:n},d[8]=n,d[9]=s):s=d[9],d[10]!==o||d[11]!==l||d[12]!==i||d[13]!==s?(c=(0,t.jsx)(o,{id:l,type:i,dangerouslySetInnerHTML:s}),d[10]=o,d[11]=l,d[12]=i,d[13]=s,d[14]=c):c=d[14],c}function l(){let e,r=(0,a.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)(n,{type:"WebApplication",data:{name:o.siteConfig.name,description:o.siteConfig.description,url:o.siteConfig.url,applicationCategory:"DesignApplication",operatingSystem:"Web Browser",offers:{"@type":"Offer",price:"0",priceCurrency:"USD"},featureList:["Image to Halftone Dot Art Conversion","Roy Lichtenstein Style Pop Art","Adjustable Dot Size and Colors","Multiple Export Formats (PNG, SVG)","Real-time Preview","Browser-based Processing"]}}),r[0]=e):e=r[0],e}function i(){let e,r=(0,a.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)(n,{type:"WebSite",data:{name:o.siteConfig.name,url:o.siteConfig.url,description:o.siteConfig.description}}),r[0]=e):e=r[0],e}function s(){let e,r,l=(0,a.c)(2);return l[0]===Symbol.for("react.memo_cache_sentinel")?(e={"@type":"ImageObject",url:`${o.siteConfig.url}/logo.png`,width:512,height:512},l[0]=e):e=l[0],l[1]===Symbol.for("react.memo_cache_sentinel")?(r=(0,t.jsx)(n,{type:"Organization",data:{"@type":"Organization",name:o.siteConfig.name,alternateName:"Halftone Pop Art Generator",url:o.siteConfig.url,logo:e,description:o.siteConfig.description,contactPoint:[{"@type":"ContactPoint",contactType:"Customer Support",email:"[email protected]",availableLanguage:["English"]}],knowsAbout:["Dot Art","Halftone Art","Pop Art","Roy Lichtenstein Style","Retro Art","Generative Art","Image Processing","Algorithmic Art","Web Workers","Digital Art"]}}),l[1]=r):r=l[1],r}function c(){let e,r=(0,a.c)(1);return r[0]===Symbol.for("react.memo_cache_sentinel")?(e=(0,t.jsx)(n,{type:"HowTo",data:{name:"How to Create Halftone Dot Art from Photos",description:"Step-by-step guide to transform any photo into Roy Lichtenstein-style halftone pop art.",totalTime:"PT5M",estimatedCost:{"@type":"MonetaryAmount",currency:"USD",value:"0"},tool:[{"@type":"HowToTool",name:"Web Browser"},{"@type":"HowToTool",name:"Image File"}],step:[{"@type":"HowToStep",name:"Upload Image",text:"Upload your image in PNG, JPG, JPEG, or WebP format. Drag and drop or click to select.",url:o.siteConfig.url},{"@type":"HowToStep",name:"Adjust Halftone Settings",text:"Fine-tune dot size, colors, and contrast to create your perfect pop art style.",url:o.siteConfig.url},{"@type":"HowToStep",name:"Generate Dot Art",text:"Click generate and instantly see your photo transformed into halftone pop art.",url:o.siteConfig.url},{"@type":"HowToStep",name:"Download Your Art",text:"Export as PNG for prints or SVG for scalable vector graphics. Ready to use!",url:o.siteConfig.url}]}}),r[0]=e):e=r[0],e}function d(e){let r,o,l=(0,a.c)(4),{items:i}=e;return l[0]!==i?(r=i.map(h),l[0]=i,l[1]=r):r=l[1],l[2]!==r?(o=(0,t.jsx)(n,{type:"BreadcrumbList",data:{itemListElement:r}}),l[2]=r,l[3]=o):o=l[3],o}function h(e,t){return{"@type":"ListItem",position:t+1,name:e.name,item:e.url}}function m(){let e,r,l=(0,a.c)(2);l[0]===Symbol.for("react.memo_cache_sentinel")?(e=[{name:"Home",url:o.siteConfig.url},{name:"Tips",url:`${o.siteConfig.url}/tips`},{name:"How It Works",url:`${o.siteConfig.url}/how-it-works`},{name:"About",url:`${o.siteConfig.url}/about`},{name:"Dot Art Generator",url:o.siteConfig.url}],l[0]=e):e=l[0];let i=e;return l[1]===Symbol.for("react.memo_cache_sentinel")?(r=(0,t.jsx)(n,{type:"ItemList",data:{"@type":"ItemList",name:"Main Navigation",description:"Primary navigation menu for Dot Art Generator",itemListElement:i.map(u)}}),l[1]=r):r=l[1],r}function u(e,t){return{"@type":"SiteNavigationElement",position:t+1,name:e.name,url:e.url}}e.s(["BreadcrumbListSchema",()=>d,"HowToSchema",()=>c,"OrganizationSchema",()=>s,"SiteNavigationSchema",()=>m,"StructuredData",()=>n,"WebApplicationSchema",()=>l,"WebSiteSchema",()=>i])},27493,e=>{e.v({className:"bangers_1001c22f-module__5mEwqa__className",variable:"bangers_1001c22f-module__5mEwqa__variable"})},6295,e=>{e.v({className:"archivo_black_52e2cb6-module__Tx5LYG__className",variable:"archivo_black_52e2cb6-module__Tx5LYG__variable"})},12710,e=>{"use strict";var t=e.i(58166);e.s(["ChevronDown",()=>t.default])},14704,e=>{"use strict";var t=e.i(40580),a=e.i(46352),r=e.i(27493);let o={className:r.default.className,style:{fontFamily:"'Bangers', 'Bangers Fallback'",fontWeight:400,fontStyle:"normal"}};null!=r.default.variable&&(o.variable=r.default.variable);var n=e.i(6295);let l={className:n.default.className,style:{fontFamily:"'Archivo Black', 'Archivo Black Fallback'",fontWeight:400,fontStyle:"normal"}};null!=n.default.variable&&(l.variable=n.default.variable);var i=e.i(28856),s=e.i(12710);let c=[{q:"What is dot art and halftone art?",a:"Dot art (also called halftone art) is a Pop Art technique that creates images using patterns of dots, famously used by Roy Lichtenstein. Our generator converts your photos into this iconic comic book style instantly."},{q:"How do I create Roy Lichtenstein style pop art?",a:"Simply upload your photo, and our dot art generator automatically applies the halftone effect. Adjust the dot size and colors to match the classic Roy Lichtenstein pop art aesthetic. No design skills needed!"},{q:"Is this dot art generator really free?",a:"Yes! 100% free forever. No signup, no credit card, no watermarks. Create unlimited halftone art and pop art designs. We believe art tools should be accessible to everyone."},{q:"Can I use halftone art for commercial projects?",a:"Absolutely! You own the dot art you create. Use it for business cards, posters, t-shirts, social media, or any commercial project. No attribution required."},{q:"What file formats can I export my dot art?",a:"Export your halftone art as PNG (perfect for social media and prints) or SVG (scalable vector for professional design work). Both formats are high quality and ready to use."},{q:"Do I need design skills to make pop art?",a:"Not at all! Our dot art generator is designed for everyone. Just upload a photo and get instant Roy Lichtenstein-style results. Beginners and pros both love how easy it is."},{q:"How is this different from other pop art generators?",a:"Our halftone generator processes everything in your browser - your images never leave your device. Plus, we offer true Lichtenstein-style dot patterns with customizable colors and sizes. And it's completely free."},{q:"Can I create dot art from any photo?",a:"Yes! Upload portrait photos, landscapes, logos, or any image. Our generator works best with high-contrast photos, but you can experiment with any picture to create unique halftone pop art."}];function d(){let e,r,n,d,h,m,u=(0,a.c)(8),[p,x]=(0,i.useState)(null);return u[0]===Symbol.for("react.memo_cache_sentinel")?(e={background:"#FFF8E7"},u[0]=e):e=u[0],u[1]===Symbol.for("react.memo_cache_sentinel")?(r=(0,t.jsx)("div",{className:"absolute inset-0 opacity-[0.04]",style:{backgroundImage:"radial-gradient(circle, #111 1px, transparent 1px)",backgroundSize:"20px 20px"}}),u[1]=r):r=u[1],u[2]===Symbol.for("react.memo_cache_sentinel")?(n=(0,t.jsx)("div",{className:"inline-block relative mb-6",children:(0,t.jsx)("div",{className:"px-6 py-2 bg-[#0074D9] border-4 border-[#111] transform rotate-[-1deg]",style:{boxShadow:"4px 4px 0px 0px #111"}
1,children:(0,t.jsx)("span",{className:"font-[family-name:var(--font-archivo)] text-white text-xs font-bold uppercase tracking-wider",children:"★ QUESTIONS? ★"})})}),u[2]=n):n=u[2],u[3]===Symbol.for("react.memo_cache_sentinel")?(d=(0,t.jsxs)("div",{className:"text-center mb-12",children:[n,(0,t.jsx)("h2",{className:"font-[family-name:var(--font-bangers)] text-4xl md:text-5xl lg:text-6xl text-[#111] uppercase mb-4",style:{textShadow:"3px 3px 0px #FFDC00"},children:"Dot Art FAQ"}),(0,t.jsx)("p",{className:"font-[family-name:var(--font-archivo)] text-base md:text-lg text-[#111]/70 max-w-2xl mx-auto",children:"Everything you need to know about creating halftone pop art"})]}),u[3]=d):d=u[3],u[4]!==p?(h=c.map((e,a)=>(0,t.jsxs)("div",{className:"bg-white border-4 border-[#111]",style:{boxShadow:"6px 6px 0px 0px #111"},children:[(0,t.jsxs)("button",{onClick:()=>x(p===a?null:a),className:"w-full px-6 py-4 flex items-center justify-between text-left hover:bg-[#FFF8E7] transition-colors",children:[(0,t.jsx)("span",{className:"font-[family-name:var(--font-bangers)] text-lg md:text-xl text-[#111] uppercase pr-4",children:e.q}),(0,t.jsx)(s.ChevronDown,{className:`w-6 h-6 text-[#111] shrink-0 transition-transform ${p===a?"rotate-180":""}`})]}),p===a&&(0,t.jsx)("div",{className:"px-6 pb-6 pt-2 border-t-4 border-[#111]",children:(0,t.jsx)("p",{className:"font-[family-name:var(--font-archivo)] text-base text-[#111]/80 leading-relaxed",children:e.a})})]},a)),u[4]=p,u[5]=h):h=u[5],u[6]!==h?(m=(0,t.jsxs)("section",{className:`${o.variable} ${l.variable} py-16 md:py-24 relative overflow-hidden`,style:e,children:[r,(0,t.jsxs)("div",{className:"container mx-auto max-w-4xl px-4 relative z-10",children:[d,(0,t.jsx)("div",{className:"space-y-4",children:h})]})]}),u[6]=h,u[7]=m):m=u[7],m}e.s(["default",()=>d],14704)},80103,e=>{"use strict";var t,a,r=e.i(40580),o=e.i(46352),n=e.i(28856),l=((t={}).THRESHOLD="Threshold",t.RANDOM="Random (Noise)",t.FLOYD_STEINBERG="Floyd-Steinberg",t.ATKINSON="Atkinson",t.STUCKI="Stucki",t.SIERRA_LITE="Sierra Lite",t.BAYER_4x4="Bayer 4x4",t.BAYER_8x8="Bayer 8x8",t.HALFTONE="Halftone",t),i=((a={}).SQUARE="Square",a.CIRCLE="Circle",a.DIAMOND="Diamond",a.TRIANGLE="Triangle",a.CROSS="Cross",a.PLUS="Plus",a.HEART="Heart",a.STAR="Star",a.ASCII="ASCII",a);let s={pixelSize:6,contrast:1.1,brightness:0,ditherMethod:"Floyd-Steinberg",dotShape:"Circle",inverted:!1,foregroundColor:"#111827",backgroundColor:"#f3f4f6",transparentBackground:!1,inkBleed:0,outputWidth:1024,outputHeight:1024,gap:1,showText:!1,text:"DOT ART\nGENERATOR",fontFamily:"Space Mono",textSize:48,textX:24,textY:24,textDark:!0};var c=e.i(26463),d=e.i(83206);let h=(0,d.default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);var m=e.i(82896);let u=(0,d.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),p=(0,d.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]),x=(0,d.default)("diamond",[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z",key:"1f1r0c"}]]),f=(0,d.default)("triangle",[["path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"14u9p9"}]]);var g=e.i(12409);let b=(0,d.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);var y=e.i(28638);let v=(0,d.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]),w=(0,d.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}
1]]),S=[{shape:i.CIRCLE,icon:u,label:"Circle"},{shape:i.SQUARE,icon:p,label:"Square"},{shape:i.DIAMOND,icon:x,label:"Diamond"},{shape:i.TRIANGLE,icon:f,label:"Triangle"},{shape:i.CROSS,icon:g.X,label:"Cross"},{shape:i.PLUS,icon:b,label:"Plus"},{shape:i.HEART,icon:y.Heart,label:"Heart"},{shape:i.STAR,icon:v,label:"Star"},{shape:i.ASCII,icon:w,label:"ASCII"}];function _(e){let t,a,n,l,i,s,d,u,p,x,f,g,b,y,v,w=(0,o.c)(27),{dotShape:_,onDotShapeChange:j,onUploadClick:N,onReset:C,onDownload:k,isProcessing:T}=e;return w[0]===Symbol.for("react.memo_cache_sentinel")?(t={boxShadow:"2px 2px 0px 0px rgba(0,0,0,0.5)"},a=(0,r.jsx)(c.Upload,{className:"h-4 w-4"}),n=(0,r.jsx)("span",{className:"hidden sm:inline",children:"Load Image"}),w[0]=t,w[1]=a,w[2]=n):(t=w[0],a=w[1],n=w[2]),w[3]!==N?(l=(0,r.jsxs)("button",{onClick:N,className:"flex items-center gap-2 bg-[#0074D9] border-2 border-[#0074D9] px-4 py-2 text-xs font-bold uppercase text-white hover:bg-[#005fa3] transition-colors",style:t,children:[a,n]}),w[3]=N,w[4]=l):l=w[4],w[5]===Symbol.for("react.memo_cache_sentinel")?(i=(0,r.jsx)(h,{className:"h-4 w-4"}),s=(0,r.jsx)("span",{className:"hidden sm:inline",children:"Reset"}),w[5]=i,w[6]=s):(i=w[5],s=w[6]),w[7]!==C?(d=(0,r.jsxs)("button",{onClick:C,className:"flex items-center gap-2 bg-[#333] border-2 border-[#444] px-3 py-2 text-xs font-bold uppercase text-white/80 hover:bg-[#444] transition-colors",children:[i,s]}),w[7]=C,w[8]=d):d=w[8],w[9]!==l||w[10]!==d?(u=(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[l,d]}),w[9]=l,w[10]=d,w[11]=u):u=w[11],w[12]!==_||w[13]!==j?(p=S.map(e=>{let{shape:t,icon:a,label:o}=e;return(0,r.jsx)("button",{onClick:()=>j(t),title:o,className:`flex items-center justify-center w-9 h-9 rounded transition-all ${_===t?"bg-[#FF4136] text-white shadow-md":"text-white/50 hover:bg-[#333] hover:text-white"}`,children:(0,r.jsx)(a,{className:"h-5 w-5"})},o)}),w[12]=_,w[13]=j,w[14]=p):p=w[14],w[15]!==p?(x=(0,r.jsx)("div",{className:"flex items-center gap-1 bg-[#222] rounded p-1",children:p}),w[15]=p,w[16]=x):x=w[16],w[17]===Symbol.for("react.memo_cache_sentinel")?(f={boxShadow:"2px 2px 0px 0px rgba(0,0,0,0.5)"},g=(0,r.jsx)(m.Download,{className:"h-4 w-4"}),b=(0,r.jsx)("span",{className:"hidden sm:inline",children:"Download"}),w[17]=f,w[18]=g,w[19]=b):(f=w[17],g=w[18],b=w[19]),w[20]!==T||w[21]!==k?(y=(0,r.jsxs)("button",{onClick:k,disabled:T,className:"flex items-center gap-2 bg-[#FFDC00] border-2 border-[#111] px-4 py-2 text-xs font-bold uppercase text-[#111] hover:bg-[#e6c700] transition-colors disabled:opacity-50",style:f,children:[g,b]}),w[20]=T,w[21]=k,w[22]=y):y=w[22],w[23]!==x||w[24]!==y||w[25]!==u?(v=(0,r.jsxs)("div",{className:"flex items-center justify-between h-14 px-4 bg-[#111] border-b-4 border-[#111]",children:[u,x,y]}),w[23]=x,w[24]=y,w[25]=u,w[26]=v):v=w[26],v}var j=e.i(12710),N=e.i(87912),C=e.i(21085);let k=(0,d.default)("sliders-vertical",[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]]),T=(0,d.default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),D=(0,d.default)("type",[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]]);function A(e){let t,a,l,i,s,c,d=(0,o.c)(17),{title:h,icon:m,children:u,defaultOpen:p}=e,[x,f]=(0,n.useState)(void 0===p||p);return d[0]!==x?(t=()=>f(!x),d[0]=x,d[1]=t):t=d[1],d[2]!==m||d[3]!==h?(a=(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[m,h]}),d[2]=m,d[3]=h,d[4]=a):a=d[4],d[5]!==x?(l=x?(0,r.jsx)(j.ChevronDown,{className:"h-4 w-4"}):(0,r.jsx)(N.ChevronRight,{className:"h-4 w-4"}
1),d[5]=x,d[6]=l):l=d[6],d[7]!==t||d[8]!==a||d[9]!==l?(i=(0,r.jsxs)("button",{onClick:t,className:"flex items-center justify-between w-full px-4 py-3 text-xs font-bold text-white/70 uppercase tracking-wide hover:bg-white/5",children:[a,l]}),d[7]=t,d[8]=a,d[9]=l,d[10]=i):i=d[10],d[11]!==u||d[12]!==x?(s=x&&(0,r.jsx)("div",{className:"px-4 pb-4 space-y-3",children:u}),d[11]=u,d[12]=x,d[13]=s):s=d[13],d[14]!==i||d[15]!==s?(c=(0,r.jsxs)("div",{className:"border-b border-white/10",children:[i,s]}),d[14]=i,d[15]=s,d[16]=c):c=d[16],c}function I(e){let t,a,n,l,i,s,c=(0,o.c)(18),{label:d,value:h,min:m,max:u,step:p,onChange:x}=e;return c[0]!==d?(t=(0,r.jsx)("span",{children:d}),c[0]=d,c[1]=t):t=c[1],c[2]!==h?(a=(0,r.jsx)("span",{className:"text-[#FFDC00]",children:h}),c[2]=h,c[3]=a):a=c[3],c[4]!==t||c[5]!==a?(n=(0,r.jsxs)("div",{className:"flex justify-between text-[10px] text-white/50 mb-1",children:[t,a]}),c[4]=t,c[5]=a,c[6]=n):n=c[6],c[7]!==x?(l=e=>x(parseFloat(e.target.value)),c[7]=x,c[8]=l):l=c[8],c[9]!==u||c[10]!==m||c[11]!==p||c[12]!==l||c[13]!==h?(i=(0,r.jsx)("input",{type:"range",min:m,max:u,step:p,value:h,onChange:l,className:"w-full h-1.5 appearance-none bg-[#333] rounded cursor-pointer accent-[#0074D9]"}),c[9]=u,c[10]=m,c[11]=p,c[12]=l,c[13]=h,c[14]=i):i=c[14],c[15]!==n||c[16]!==i?(s=(0,r.jsxs)("div",{children:[n,i]}),c[15]=n,c[16]=i,c[17]=s):s=c[17],s}function R(e){let t,a,n,i,s,c,d,h,m,u,p,x,f,g,b,y,v,w,S,_,j,N,R,F,E,L,z,H,P,B,O,W,G,U,q,$=(0,o.c)(89),{settings:Y,updateSettings:X}=e;$[0]===Symbol.for("react.memo_cache_sentinel")?(t=(0,r.jsx)("div",{className:"px-4 py-3 bg-[#111] border-b border-white/10",children:(0,r.jsxs)("h2",{className:"font-bold text-sm text-white flex items-center gap-2",children:[(0,r.jsx)(C.Settings,{className:"h-4 w-4"}),"Properties"]})}),$[0]=t):t=$[0],$[1]===Symbol.for("react.memo_cache_sentinel")?(a=(0,r.jsx)(k,{className:"h-3 w-3"}),$[1]=a):a=$[1],$[2]!==X?(n=e=>X({outputWidth:parseInt(e.target.value)||512}),$[2]=X,$[3]=n):n=$[3],$[4]!==Y.outputWidth||$[5]!==n?(i=(0,r.jsxs)("label",{className:"text-[10px] text-white/50",children:["Width",(0,r.jsx)("input",{type:"number",value:Y.outputWidth,onChange:n,className:"mt-1 w-full bg-[#222] border border-white/10 px-2 py-1.5 text-xs text-white rounded"})]}),$[4]=Y.outputWidth,$[5]=n,$[6]=i):i=$[6],$[7]!==X?(s=e=>X({outputHeight:parseInt(e.target.value)||512}),$[7]=X,$[8]=s):s=$[8],$[9]!==Y.outputHeight||$[10]!==s?(c=(0,r.jsxs)("label",{className:"text-[10px] text-white/50",children:["Height",(0,r.jsx)("input",{type:"number",value:Y.outputHeight,onChange:s,className:"mt-1 w-full bg-[#222] border border-white/10 px-2 py-1.5 text-xs text-white rounded"})]}),$[9]=Y.outputHeight,$[10]=s,$[11]=c):c=$[11],$[12]!==i||$[13]!==c?(d=(0,r.jsx)(A,{title:"Canvas",icon:a,children:(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[i,c]})}),$[12]=i,$[13]=c,$[14]=d):d=$[14],$[15]===Symbol.for("react.memo_cache_sentinel")?(h=(0,r.jsx)(k,{className:"h-3 w-3"}),$[15]=h):h=$[15],$[16]!==X?(m=e=>X({pixelSize:e}),$[16]=X,$[17]=m):m=$[17],$[18]!==Y.pixelSize||$[19]!==m?(u=(0,r.jsx)(I,{label:"Pixel Size",value:Y.pixelSize,min:2,max:24,step:1,onChange:m}),$[18]=Y.pixelSize,$[19]=m,$[20]=u):u=$[20],$[21]!==X?(p=e=>X({gap:e}),$[21]=X,$[22]=p):p=$[22],$[23]!==Y.gap||$[24]!==p?(x=(0,r.jsx)(I,{label:"Gap",value:Y.gap,min:0,max:6,step:1,onChange:p}),$[23]=Y.gap,$[24]=p,$[25]=x):x=$[25],$[26]!==X?(f=e=>X({contrast:e}),$[26]=X,$[27]=f):f=$[27],$[28]!==Y.contrast||$[29]!==f?(g=(0,r.jsx)(I,{label:"Contrast",value:Y.contrast,min:.2,max:3,step:.1,onChange:f}),$[28]=Y.contrast,$[29]=f,$[30]=g):g=$[30],$[31]!==X?(b=e=>X({brightness:e}),$[31]=X,$[32]=b):b=$[32],$[33]!==Y.brightness||$[34]!==b?(y=(0,r.jsx)(I,{label:"Brightness",value:Y.brightness,min:-1,max:1,step:.1,onChange:b}),$[33]=Y.brightness,$[34]=b,$[35]=y):y=$[35];let Q=Y.ditherMethod;return $[36]!==X?(v=e=>X({ditherMethod:e.target.value}),$[36]=X,$[37]=v):v=$[37],$[38]===Symbol.for("react.memo_cache_sentinel")?(w=Object.values(l).map(M),$[38]=w):w=$[38],$[39]!==Y.ditherMethod||$[40]!==v?(S=(0,r.jsxs)("label",{className:"block text-[10px] text-white/50",children:["Dither Method",(0,r.jsx)("select",{value:Q,onChange:v,className:"mt-1 w-full bg-[#222] border border-white/10 px-2 py-1.5 text-xs text-white rounded",children:w})]}),$[39]=Y.ditherMethod,$[40]=v,$[41]=S):S=$[41],$[42]!==u||$[43]!==x||$[44]!==g||$[45]!==y||$[46]!==S?(_=(0,r.jsxs)(A,{title:"Adjustments",icon:h,children:[u,x,g,y,S]}),$[42]=u,$[43]=x,$[44]=g,$[45]=y,$[46]=S,$[47]=_):_=$[47],$[48]===Symbol.for("react.memo_cache_sentinel")?(j=(0,r.jsx)(T,{className:"h-3 w-3"}),$[48]=j):j=$[48],$[49]!==X?(N=e=>X({foregroundColor:e.target.value}),$[49]=X,$[50]=N):N=$[50],$[51]!==Y.foregroundColor||$[52]!==N?(R=(0,r.jsxs)("label",{className:"text-[10px] text-white/50",children:["Foreground",(0,r.jsx)("input",{type:"color",value:Y.foregroundColor,onChange:N,className:"mt-1 w-full h-8 bg-transparent border border-white/10 rounded cursor-pointer"})]}),$[51]=Y.foregroundColor,$[52]=N,$[53]=R):R=$[53],$[54]!==X?(F=e=>X({backgroundColor:e.target.value}),$[54]=X,$[55]=F):F=$[55],$[56]!==Y.backgroundColor||$[57]!==F?(E=(0,r.jsxs)("label",{className:"text-[10px] text-white/50",children:["Backgroun
1d",(0,r.jsx)("input",{type:"color",value:Y.backgroundColor,onChange:F,className:"mt-1 w-full h-8 bg-transparent border border-white/10 rounded cursor-pointer"})]}),$[56]=Y.backgroundColor,$[57]=F,$[58]=E):E=$[58],$[59]!==R||$[60]!==E?(L=(0,r.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[R,E]}),$[59]=R,$[60]=E,$[61]=L):L=$[61],$[62]!==X?(z=e=>X({transparentBackground:e.target.checked}),$[62]=X,$[63]=z):z=$[63],$[64]!==Y.transparentBackground||$[65]!==z?(H=(0,r.jsxs)("label",{className:"flex items-center gap-2 text-[10px] text-white/50 cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:Y.transparentBackground,onChange:z,className:"accent-[#FF4136]"}),"Transparent Background"]}),$[64]=Y.transparentBackground,$[65]=z,$[66]=H):H=$[66],$[67]!==L||$[68]!==H?(P=(0,r.jsxs)(A,{title:"Colors",icon:j,children:[L,H]}),$[67]=L,$[68]=H,$[69]=P):P=$[69],$[70]===Symbol.for("react.memo_cache_sentinel")?(B=(0,r.jsx)(D,{className:"h-3 w-3"}),$[70]=B):B=$[70],$[71]!==X?(O=e=>X({showText:e.target.checked}),$[71]=X,$[72]=O):O=$[72],$[73]!==Y.showText||$[74]!==O?(W=(0,r.jsxs)("label",{className:"flex items-center gap-2 text-[10px] text-white/50 cursor-pointer",children:[(0,r.jsx)("input",{type:"checkbox",checked:Y.showText,onChange:O,className:"accent-[#FF4136]"}),"Enable Text"]}),$[73]=Y.showText,$[74]=O,$[75]=W):W=$[75],$[76]!==Y.showText||$[77]!==Y.text||$[78]!==Y.textSize||$[79]!==X?(G=Y.showText&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("textarea",{value:Y.text,onChange:e=>X({text:e.target.value}),className:"w-full bg-[#222] border border-white/10 p-2 text-xs text-white rounded resize-none",rows:2,placeholder:"Enter text..."}),(0,r.jsx)(I,{label:"Size",value:Y.textSize,min:8,max:200,step:1,onChange:e=>X({textSize:e})})]}),$[76]=Y.showText,$[77]=Y.text,$[78]=Y.textSize,$[79]=X,$[80]=G):G=$[80],$[81]!==W||$[82]!==G?(U=(0,r.jsxs)(A,{title:"Text Overlay",icon:B,defaultOpen:!1,children:[W,G]}),$[81]=W,$[82]=G,$[83]=U):U=$[83],$[84]!==_||$[85]!==P||$[86]!==U||$[87]!==d?(q=(0,r.jsxs)("div",{className:"w-64 bg-[#1a1a1a] border-l-4 border-[#111] overflow-y-auto h-full",children:[t,d,_,P,U]}),$[84]=_,$[85]=P,$[86]=U,$[87]=d,$[88]=q):q=$[88],q}function M(e){return(0,r.jsx)("option",{value:e,children:e},e)}let F=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]],E=[[0,32,8,40,2,34,10,42],[48,16,56,24,50,18,58,26],[12,44,4,36,14,46,6,38],[60,28,52,20,62,30,54,22],[3,35,11,43,1,33,9,41],[51,19,59,27,49,17,57,25],[15,47,7,39,13,45,5,37],[63,31,55,23,61,29,53,21]];function L(e,t,a,r,o,n){if(t<0||t>=o||a<0||a>=n)return;let l=(a*o+t)*4;e[l]+=r,e[l+1]+=r,e[l+2]+=r}function z(e){let t,a,l,i,s,c,d,h,m,u,p,x,f,g,b,y,v,w,S,_,j=(0,o.c)(34),{originalSrc:N,processedSrc:C}
1=e,[k,T]=(0,n.useState)(50),[D,A]=(0,n.useState)(!1),I=(0,n.useRef)(null);j[0]===Symbol.for("react.memo_cache_sentinel")?(t=e=>{if(!I.current)return;let t=I.current.getBoundingClientRect();T(Math.max(0,Math.min(e-t.left,t.width))/t.width*100)},j[0]=t):t=j[0];let R=t;j[1]!==D?(a=e=>D&&R(e.clientX),j[1]=D,j[2]=a):a=j[2],j[3]===Symbol.for("react.memo_cache_sentinel")?(l=()=>A(!1),i=()=>A(!1),j[3]=l,j[4]=i):(l=j[3],i=j[4]),j[5]!==D?(s=e=>D&&e.touches[0]&&R(e.touches[0].clientX),j[5]=D,j[6]=s):s=j[6],j[7]===Symbol.for("react.memo_cache_sentinel")?(c=()=>A(!1),d=e=>R(e.clientX),j[7]=c,j[8]=d):(c=j[7],d=j[8]),j[9]!==N?(h=(0,r.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-[#f8f8f8] p-4",children:(0,r.jsx)("img",{src:N,alt:"Original",className:"max-w-full max-h-full object-contain"})}),j[9]=N,j[10]=h):h=j[10],j[11]===Symbol.for("react.memo_cache_sentinel")?(m=(0,r.jsx)("div",{className:"absolute top-4 right-4 bg-[#111] text-white px-2 py-1 text-xs font-bold z-20",children:"ORIGINAL"}),j[11]=m):m=j[11];let M=`inset(0 ${100-k}% 0 0)`;j[12]!==M?(u={clipPath:M},j[12]=M,j[13]=u):u=j[13],j[14]===Symbol.for("react.memo_cache_sentinel")?(p={imageRendering:"pixelated"},j[14]=p):p=j[14],j[15]!==C?(x=(0,r.jsx)("img",{src:C,alt:"Dot Art",className:"max-w-full max-h-full object-contain",style:p}),j[15]=C,j[16]=x):x=j[16],j[17]!==u||j[18]!==x?(f=(0,r.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-[#f8f8f8] p-4",style:u,children:x}),j[17]=u,j[18]=x,j[19]=f):f=j[19],j[20]===Symbol.for("react.memo_cache_sentinel")?(g=(0,r.jsx)("div",{className:"absolute top-4 left-4 bg-[#FF4136] text-white px-2 py-1 text-xs font-bold z-20",children:"DOT ART"}),j[20]=g):g=j[20];let F=`${k}%`;return j[21]!==F?(b={left:F,transform:"translateX(-50%)",boxShadow:"0 0 0 2px #FF4136"},j[21]=F,j[22]=b):b=j[22],j[23]===Symbol.for("react.memo_cache_sentinel")?(y=()=>A(!0),v=()=>A(!0),j[23]=y,j[24]=v):(y=j[23],v=j[24]),j[25]===Symbol.for("react.memo_cache_sentinel")?(w=(0,r.jsx)("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-10 h-10 bg-white border-4 border-[#FF4136] rounded-full flex items-center justify-center shadow-lg",children:(0,r.jsx)("span",{className:"text-[#FF4136] font-bold",children:"⇔"})}),j[25]=w):w=j[25],j[26]!==b?(S=(0,r.jsx)("div",{className:"absolute top-0 bottom-0 w-1 bg-white z-30 cursor-ew-resize",style:b,onMouseDown:y,onTouchStart:v,children:w}),j[26]=b,j[27]=S):S=j[27],j[28]!==f||j[29]!==a||j[30]!==S||j[31]!==s||j[32]!==h?(_=(0,r.jsxs)("div",{ref:I,className:"absolute inset-0 select-none cursor-ew-resize",onMouseMove:a,onMouseUp:l,onMouseLeave:i,onTouchMove:s,onTouchEnd:c,onClick:d,children:[h,m,f,g,S]}),j[28]=f,j[29]=a,j[30]=S,j[31]=s,j[32]=h,j[33]=_):_=j[33],_}var H=e.i(19455),P=e.i(76639),B=e.i(47133),O=e.i(79254),W=e.i(82525),G=e.i(14726),U=e.i(80153);function q(e){let t,a,l,i,s,c,d,h,m,u,p,x,f,g,b,y=(0,o.c)(20),{open:v,onOpenChange:w}
1=e,[S,_]=(0,n.useState)(!1),j=`${B.siteConfig.url}/#generator`;y[0]===Symbol.for("react.memo_cache_sentinel")?(t={label:"X",description:"Fast updates",render:(0,r.jsx)(U.XShareButton,{url:j,title:"Create free dot art with Dot Art Generator",className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-black text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.XIcon,{size:34,round:!0})})},y[0]=t):t=y[0],y[1]===Symbol.for("react.memo_cache_sentinel")?(a={label:"Facebook",description:"Share with friends",render:(0,r.jsx)(U.FacebookShareButton,{url:j,hashtag:"#DotArtGenerator",className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#1877F2] text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.FacebookIcon,{size:34,round:!0})})},y[1]=a):a=y[1],y[2]===Symbol.for("react.memo_cache_sentinel")?(l={label:"LinkedIn",description:"Professional network",render:(0,r.jsx)(U.LinkedinShareButton,{url:j,title:"Create free dot art with Dot Art Generator",summary:"Turn any image into retro halftone pop art with this free online tool.",source:"Dot Art Generator",className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#0A66C2] text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.LinkedinIcon,{size:34,round:!0})})},y[2]=l):l=y[2],y[3]===Symbol.for("react.memo_cache_sentinel")?(i={label:"Reddit",description:"Community discussion",render:(0,r.jsx)(U.RedditShareButton,{url:j,title:"Create free dot art with Dot Art Generator",className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#FF4500] text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.RedditIcon,{size:34,round:!0})})},y[3]=i):i=y[3],y[4]===Symbol.for("react.memo_cache_sentinel")?(s={label:"Telegram",description:"Quick message",render:(0,r.jsx)(U.TelegramShareButton,{url:j,title:"Create free dot art with Dot Art Generator",className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#229ED9] text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.TelegramIcon,{size:34,round:!0})})},y[4]=s):s=y[4],y[5]===Symbol.for("react.memo_cache_sentinel")?(c={label:"WhatsApp",description:"Direct share",render:(0,r.jsx)(U.WhatsappShareButton,{url:j,title:`Create free dot art with Dot Art Generator
2
3${j}`,className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#25D366] text-white transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.WhatsappIcon,{size:34,round:!0})})},y[5]=c):c=y[5],y[6]===Symbol.for("react.memo_cache_sentinel")?(d=[t,a,l,i,s,c,{label:"Email",description:"Send by email",render:(0,r.jsx)(U.EmailShareButton,{url:j,subject:"Create free dot art with Dot Art Generator",body:`Turn any image into retro halftone pop art with this free online tool.
4
5${j}`,className:"group inline-flex h-20 w-full items-center justify-center rounded-none border-2 border-[#111] bg-[#FFDC00] text-[#111] transition-transform duration-200 hover:-translate-y-1 hover:shadow-[0_10px_0_0_rgba(17,17,17,1)] focus:outline-none focus-visible:ring-2 focus-visible:ring-[#111] [&_svg]:block [&_svg]:mx-auto",children:(0,r.jsx)(U.EmailIcon,{size:34,round:!0})})}],y[6]=d):d=y[6];let N=d;y[7]===Symbol.for("react.memo_cache_sentinel")?(h=async()=>{try{await navigator.clipboard.writeText(j),_(!0),window.setTimeout(()=>_(!1),1800)}catch(e){console.error("Failed to copy link:",e)}},y[7]=h):h=y[7];let C=h;return y[8]===Symbol.for("react.memo_cache_sentinel")?(m=(0,r.jsx)("div",{className:"absolute inset-0 opacity-[0.05] pointer-events-none",style:{backgroundImage:"radial-gradient(circle, #111 1px, transparent 1px)",backgroundSize:"14px 14px"}}),y[8]=m):m=y[8],y[9]===Symbol.for("react.memo_cache_sentinel")?(u=(0,r.jsxs)(P.DialogHeader,{className:"text-left mb-6",children:[(0,r.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 bg-[#FF4136] border-2 border-[#111] mb-4 w-fit",children:[(0,r.jsx)(G.Share2,{className:"h-4 w-4 text-white"}
5),(0,r.jsx)("span",{className:"font-[family-name:var(--font-archivo)] text-xs font-bold text-white uppercase tracking-wider",children:"SHARE YOUR RESULT"})]}),(0,r.jsx)(P.DialogTitle,{className:"font-[family-name:var(--font-bangers)] text-4xl uppercase text-[#111] leading-none",children:"Share Your Dot Art"}),(0,r.jsx)(P.DialogDescription,{className:"font-[family-name:var(--font-archivo)] text-sm md:text-base text-[#111]/70",children:"Post it to a social platform or copy the link to share the tool with friends."})]}),y[9]=u):u=y[9],y[10]===Symbol.for("react.memo_cache_sentinel")?(p=(0,r.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:N.map($)}),y[10]=p):p=y[10],y[11]!==S?(x=(0,r.jsx)(H.Button,{variant:"outline",className:"w-full border-2 border-[#111] bg-white text-[#111] transition-all duration-200 hover:-translate-y-1 hover:bg-[#FFDC00] hover:shadow-[0_10px_0_0_rgba(17,17,17,1)]",onClick:C,children:S?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(O.Check,{className:"h-4 w-4 mr-2"}),"Link Copied"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(W.Copy,{className:"h-4 w-4 mr-2"}),"Copy Link"]})}),y[11]=S,y[12]=x):x=y[12],y[13]===Symbol.for("react.memo_cache_sentinel")?(f=(0,r.jsx)(P.DialogClose,{asChild:!0,children:(0,r.jsx)(H.Button,{variant:"outline",className:"w-full border-2 border-[#111] bg-[#FF4136] text-white transition-all duration-200 hover:-translate-y-1 hover:bg-[#d93630] hover:shadow-[0_10px_0_0_rgba(17,17,17,1)]",children:"Close"})}),y[13]=f):f=y[13],y[14]!==x?(g=(0,r.jsxs)(P.DialogContent,{className:"max-w-[min(92vw,42rem)] border-4 border-[#111] bg-[#FFF8E7] p-0 shadow-[10px_10px_0_0_rgba(17,17,17,1)]",showCloseButton:!0,children:[m,(0,r.jsxs)("div",{className:"relative z-10 p-6 md:p-8",children:[u,p,(0,r.jsx)("div",{className:"mt-6 pt-6 border-t-2 border-[#111]/15",children:(0,r.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[x,f]})})]})]}),y[14]=x,y[15]=g):g=y[15],y[16]!==w||y[17]!==v||y[18]!==g?(b=(0,r.jsx)(P.Dialog,{open:v,onOpenChange:w,children:g}),y[16]=w,y[17]=v,y[18]=g,y[19]=b):b=y[19],b}function $(e){return(0,r.jsxs)("div",{className:"space-y-2",children:[e.render,(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"font-[family-name:var(--font-archivo)] text-sm font-bold uppercase tracking-wide text-[#111]",children:e.label}),(0,r.jsx)("p",{className:"font-[family-name:var(--font-archivo)] text-xs text-[#111]/60",children:e.description})]})]},e.label)}let Y="dot_art_lab_settings_v1";function X(){let e,t,a,c,d,h,m,u,p,x,f,g,b,y,v,w,S,j,N,C,k,T,D,A,I,M,H,P,B,O,W,G,U,$,X=(0,o.c)(61),[V,J]=(0,n.use
5State)(Q),[K,Z]=(0,n.useState)(null),[ee,et]=(0,n.useState)(!1),[ea,er]=(0,n.useState)(!1),[eo,en]=(0,n.useState)(""),[el,ei]=(0,n.useState)(!1),es=(0,n.useRef)(null),ec=(0,n.useRef)(null),ed=(0,n.useRef)(null);X[0]===Symbol.for("react.memo_cache_sentinel")?(e=()=>{let e=window.localStorage.getItem(Y);if(e)try{let t=JSON.parse(e);J({...s,...t})}catch{J(s)}},t=[],X[0]=e,X[1]=t):(e=X[0],t=X[1]),(0,n.useEffect)(e,t),X[2]!==V?(a=()=>{let e=setTimeout(()=>{window.localStorage.setItem(Y,JSON.stringify(V))},400);return()=>clearTimeout(e)},c=[V],X[2]=V,X[3]=a,X[4]=c):(a=X[3],c=X[4]),(0,n.useEffect)(a,c),X[5]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{let e=new Image;e.src="/dot-art-demo.png",e.onload=()=>Z(e)},h=[],X[5]=d,X[6]=h):(d=X[5],h=X[6]),(0,n.useEffect)(d,h),X[7]!==V||X[8]!==K?(m=()=>{if(!K||!es.current||!ec.current)return;et(!0);let e=setTimeout(()=>{let e=es.current,t=e.getContext("2d");t&&(e.width=K.width,e.height=K.height,t.drawImage(K,0,0),function(e,t,a){let r,o,n,s,c=t.getContext("2d");if(!c)return;let d=Math.max(1,Math.floor(a.outputWidth/a.pixelSize)),h=Math.max(1,Math.floor(a.outputHeight/a.pixelSize)),m=document.createElement("canvas");m.width=d,m.height=h;let u=m.getContext("2d");if(!u)return;u.fillStyle="#ffffff",u.fillRect(0,0,d,h);let p=e.width,x=e.height;if(p/x>d/h?(o=h,s=0,n=(d-(r=h/x*p))/2):(r=d,n=0,s=(h-(o=d/p*x))/2),u.imageSmoothingEnabled=!0,u.imageSmoothingQuality="high",u.drawImage(e,n,s,r,o),a.showText&&a.text){let e=1/a.pixelSize,t=Math.max(1,Math.round(a.textSize*e)),r=a.textX*e,o=a.textY*e,n=a.fontFamily.includes(" ")?`"${a.fontFamily}"`:a.fontFamily;u.font=`bold ${t}px ${n}, sans-serif`,u.fillStyle=a.textDark?"#000000":"#ffffff",u.textBaseline="top";let l=a.text.split("\n"),i=1.2*t;l.forEach((e,t)=>{u.fillText(e,r,o+t*i)})}let f=u.getImageData(0,0,d,h).data,g=f.length;for(let e=0;e<g;e+=4){let t=.299*f[e]+.587*f[e+1]+.114*f[e+2];t+=255*a.brightness,t=Math.max(0,Math.min(255,t=(t-128)*a.contrast+128)),f[e]=t,f[e+1]=t,f[e+2]=t}let b=new Uint8Array(d*h);if(a.ditherMethod===l.HALFTONE)for(let e=0;e<g;e+=4)b[e/4]=255-f[e];else if(a.ditherMethod===l.THRESHOLD)for(let e=0;e<g;e+=4)b[e/4]=+(f[e]<128);else if(a.ditherMethod===l.RANDOM)for(let e=0;e<g;e+=4)b[e/4]=+(f[e]<255*Math.random());else if(a.ditherMethod===l.BAYER_4x4)for(let e=0;e<h;e++)for(let t=0;t<d;t++){let a=(e*d+t)*4,r=F[e%4][t%4]/16*255;b[e*d+t]=+(f[a]<r)}else if(a.ditherMethod===l.BAYER_8x8)for(let e=0;e<h;e++)for(let t=0;t<d;t++){let a=(e*d+t)*4,r=E[e%8][t%8]/64*255;b[e*d+t]=+(f[a]<r)}else for(let e=0;e<h;e++)for(let t=0;t<d;t++){let r=f[(e*d+t)*4],o=r<128?0:255;b[e*d+t]=+(0===o);let n=r-o;if(a.ditherMethod===l.FLOYD_STEINBERG)L(f,t+1,e,7/16*n,d,h),L(f,t-1,e+1,3/16*n,d,h),L(f,t,e+1,5/16*n,d,h),L(f,t+1,e+1,1/16*n,d,h);else if(a.ditherMethod===l.ATKINSON){let a=n/8;L(f,t+1,e,a,d,h),L(f,t+2,e,a,d,h),L(f,t-1,e+1,a,d,h),L(f,t,e+1,a,d,h),L(f,t+1,e+1,a,d,h),L(f,t,e+2,a,d,h)}else a.ditherMethod===l.SIERRA_LITE?(L(f,t+1,e,.5*n,d,h),L(f,t-1,e+1,1/4*n,d,h),L(f,t,e+1,1/4*n,d,h)):a.ditherMethod===l.STUCKI&&(L(f,t+1,e,.19047619047619047*n,d,h),L(f,t+2,e,.09523809523809523*n,d,h),L(f,t-2,e+1,.047619047619047616*n,d,h),L(f,t-1,e+1,.09523809523809523*n,d,h),L(f,t,e+1,.19047619047619047*n,d,h),L(f,t+1,e+1,.09523809523809523*n,d,h),L(f,t+2,e+1,.047619047619047616*n,d,h),L(f,t-2,e+2,.023809523809523808*n,d,h),L(f,t-1,e+2,.047619047619047616*n,d,h),L(f,t,e+2,.09523809523809523*n,d,h),L(f,t+1,e+2,.047619047619047616*n,d,h),L(f,t+2,e+2,.023809523809523808*n,d,h))}let y=document.createElement("canvas");y.width=a.outputWidth,y.height=a.outputHeight;let v=y.getContext("2d");if(!v)return;v.fillStyle="#000000",v.strokeStyle="#000000";let w=a.pixelSize-a.gap,S=a.ditherMethod===l.HALFTONE;for(let e=0;e<h;e++)for(let t=0;t<d;t++){let r=b[e*d+t];if(0===r)continue;let o=t*a.pixelSize,n=e*a.pixelSize,l=o+a.pixelSize/2,s=n+a.pixelSize/2,c=w;if(S){if(r<10)continue;c=r/255*w}c<.4||function(e,t,a,r,o,n){switch(t){case i.SQUARE:e.fillRect(a-o/2,r-o/2,o,o);break;case i.CIRCLE:e.beginPath(),e.arc(a,r,o/2,0,2*Math.PI),e.fill();break;case i.DIAMOND:e.save(),e.translate(a,r),e.rotate(Math.PI/4),e.fillRect(-o/2,-o/2,o,o),e.restore(
5);break;case i.TRIANGLE:{e.beginPath();let t=Math.sqrt(3)/2*o;e.moveTo(a,r-t/2),e.lineTo(a-o/2,r+t/2),e.lineTo(a+o/2,r+t/2),e.closePath(),e.fill();break}case i.CROSS:e.save(),e.translate(a,r),e.rotate(Math.PI/4);let l=o/3;e.fillRect(-o/2,-l/2,o,l),e.fillRect(-l/2,-o/2,l,o),e.restore();break;case i.PLUS:{let t=o/3;e.fillRect(a-o/2,r-t/2,o,t),e.fillRect(a-t/2,r-o/2,t,o);break}case i.HEART:{let t=.3*o;e.save(),e.translate(a,r-.1*o),e.beginPath(),e.moveTo(0,t),e.bezierCurveTo(0,0,-o/2,0,-o/2,t),e.bezierCurveTo(-o/2,(o+t)/2,0,(o+t)/2+o/3,0,o),e.bezierCurveTo(0,(o+t)/2+o/3,o/2,(o+t)/2,o/2,t),e.bezierCurveTo(o/2,0,0,0,0,t),e.fill(),e.restore();break}case i.STAR:!function(e,t,a,r,o,n){let l=Math.PI/2*3,i=t,s=a,c=Math.PI/5;e.beginPath(),e.moveTo(t,a-o);for(let r=0;r<5;r++)i=t+Math.cos(l)*o,s=a+Math.sin(l)*o,e.lineTo(i,s),l+=c,i=t+Math.cos(l)*n,s=a+Math.sin(l)*n,e.lineTo(i,s),l+=c;e.lineTo(t,a-o),e.closePath(),e.fill()}(e,a,r,5,o/2,o/4);break;case i.ASCII:var s;e.font=`${Math.floor(o)}px monospace`,e.textAlign="center",e.textBaseline="middle",e.fillText((s=n)<50?".":s<100?":":s<150?"+":s<200?"#":"@",a,r)}}(v,a.dotShape,l,s,c,r)}if(a.inkBleed>0){let e=document.createElement("canvas");e.width=a.outputWidth,e.height=a.outputHeight;let t=e.getContext("2d");if(t){t.imageSmoothingEnabled=!0,t.imageSmoothingQuality="high",t.filter=`blur(${a.inkBleed}px)`,t.drawImage(y,0,0),t.filter="none";let r=t.getImageData(0,0,a.outputWidth,a.outputHeight),o=r.data;for(let e=0;e<o.length;e+=4){let t=o[e+3];if(t<=150)o[e+3]=0;else if(t>=170)o[e+3]=255,o[e]=0,o[e+1]=0,o[e+2]=0;else{let a=(t-150)/20*255;o[e+3]=a,o[e]=0,o[e+1]=0,o[e+2]=0}}t.putImageData(r,0,0),v.clearRect(0,0,a.outputWidth,a.outputHeight),v.drawImage(e,0,0)}}else{let e=v.getImageData(0,0,a.outputWidth,a.outputHeight),t=e.data;for(let e=0;e<t.length;e+=4)t[e+3]<128?t[e+3]=0:(t[e+3]=255,t[e]=0,t[e+1]=0,t[e+2]=0);v.putImageData(e,0,0)}t.width=a.outputWidth,t.height=a.outputHeight,a.transparentBackground?c.clearRect(0,0,t.width,t.height):(c.fillStyle=a.inverted?a.foregroundColor:a.backgroundColor,c.fillRect(0,0,t.width,t.height));let _=a.inverted?a.backgroundColor:a.foregroundColor,j=document.createElement("canvas");j.width=a.outputWidth,j.height=a.outputHeight;let N=j.getContext("2d");N&&(N.drawImage(y,0,0),N.globalCompositeOperation="source-in",N.fillStyle=_,N.fillRect(0,0,a.outputWidth,a.outputHeight)),c.imageSmoothingEnabled=a.inkBleed>0,c.imageSmoothingQuality="high",c.drawImage(j,0,0)}(e,ec.current,V),en(ec.current.toDataURL("image/png")),et(!1))},30);return()=>clearTimeout(e)},u=[K,V],X[7]=V,X[8]=K,X[9]=m,X[10]=u):(m=X[9],u=X[10]),(0,n.useEffect)(m,u),X[11]===Symbol.for("react.memo_cache_sentinel")?(p=e=>{J(t=>({...t,...e}))},X[11]=p):p=X[11];let eh=p;X[12]===Symbol.for("react.memo_cache_sentinel")?(x=e=>{let t=new FileReader;t.onload=e=>{let t=new Image;t.onload=()=>Z(t),t.src=e.target?.result},t.readAsDataURL(e)},X[12]=x):x=X[12];let em=x;X[13]===Symbol.for("react.memo_cache_sentinel")?(f=e=>{e.preventDefault(),e.stopPropagation(),er("dragenter"===e.type||"dragover"===e.type)},X[13]=f):f=X[13];let eu=f;X[14]===Symbol.for("react.memo_cache_sentinel")?(g=e=>{e.preventDefault(),e.stopPropagation(),er(!1),e.dataTransfer.files?.[0]&&em(e.dataTransfer.files[0])},X[14]=g):g=X[14];let ep=g;X[15]===Symbol.for("react.memo_cache_sentinel")?(b=()=>{if(!ec.current)return;let e=document.createElement("a");e.download=`dot-art-${Date.now()}.png`,e.href=ec.current.toDataURL("image/png"),e.click(),window.setTimeout(()=>ei(!0),250)},X[15]=b):b=X[15];let ex=b;X[16]===Symbol.for("react.memo_cache_sentinel")?(y=()=>{J(s);let e=new Image;e.src="/dot-art-demo.png",e.onload=()=>Z(e)},X[16]=y):y=X[16];let ef=y;X[17]===Symbol.for("react.memo_cache_sentinel")?(v={boxShadow:"8px 8px 0px 0px #111"},X[17]=v):v=X[17],X[18]===Symbol.for("react.memo_cache_sentinel")?(w=(0,r.jsx)("input",{ref:ed,type:"file",accept:"image/*",className:"hidden",onChange:e=>e.target.files?.[0]&&em(e.target.files[0])}),S=(0,r.jsx)("canvas",{ref:es,className:"hidden"}),j=(0,r.jsx)("canvas",{ref:ec,className:"hidden"}),X[18]=w,X[19]=S,X[20]=j):(w=X[18],S=X[19],j=X[20]),X[21]===Symbol.for("react.memo_cache_sentinel")?(N=e=>eh({dotShape:e}),C=()=>ed.current?.click(),X[21]=N,X[22]=C):(N=X[21],C=X[22]),X[23]!==ee||X[24]!==V.dotShape?(k=(0,r.jsx)(_,{dotShape:V.dotShape,onDotShapeChange:N,onUploadClick:C,onReset:ef,onDownload:ex,isProcessing:ee}),X[23]=ee,X[24]=V.dotShape,X[25]=k):k=X[25],X[26]===Symbol.for("react.memo_cache_sentinel")?(T={background:"#2a2a2a",backgroundImage:"radial-gradient(circle, rgba(255,255,255,0.03) 1px, transparent 1px)",backgroundSize:"12px 12px"},X[26]=T):T=X[26],X[27]!==V.outputHeight||X[28]!==V.outputWidth?(D=(0,r.jsxs)("span",{className:"text-[10px] text-white/40 uppercase tracking-wide",children:[V.outputWidth," × ",V.outputHeight,"px"]}),X[27]=V.outputHeight,X[28]=V.outputWidth,X[29]=D):D=X[29];let eg=`text-[10px] font-bold uppercase ${ee?"text-[#FF4136]":"text-[#2ECC40]"}`,eb=ee?"● Processing":"● Ready";return X[30]!==eg||X[31]!==eb?(A=(0,r.jsx)("span",{className:eg,children:eb}),X[30]=eg,X[31]=eb,X[32]=A):A=X[32],X[33]!==D||X[34]!==A?(I=(0,r.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 bg-[#222] border-b border-white/10",children:[D,A]}),X[33]=D,X[34]=A,X[35]=I):I=X[35],X[36]!==ea?(M=ea&&(0,r.jsx)("div",{className:"absolute inset-4 z-20 border-2 border-dashed border-[#0074D9] bg-[#0074D9]/10 flex items-center justify-center rounded",children:(0,r.jsx)("span",{className:"text-[#0074D9] font-bold text-lg",children:"Drop image to load"})}
5),X[36]=ea,X[37]=M):M=X[37],X[38]!==eo||X[39]!==K?(H=K&&eo?(0,r.jsx)(z,{originalSrc:K.src,processedSrc:eo}):(0,r.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,r.jsx)("span",{className:"text-white/20",children:"Loading..."})}),X[38]=eo,X[39]=K,X[40]=H):H=X[40],X[41]!==ee?(P=ee&&(0,r.jsx)("div",{className:"absolute inset-0 bg-black/60 flex items-center justify-center z-10",children:(0,r.jsx)("div",{className:"text-white font-bold animate-pulse",children:"Processing..."})}),X[41]=ee,X[42]=P):P=X[42],X[43]!==M||X[44]!==H||X[45]!==P?(B=(0,r.jsxs)("div",{className:"absolute inset-0 top-9",children:[M,H,P]}),X[43]=M,X[44]=H,X[45]=P,X[46]=B):B=X[46],X[47]!==I||X[48]!==B?(O=(0,r.jsxs)("div",{className:"flex-1 relative overflow-hidden",onDragEnter:eu,onDragLeave:eu,onDragOver:eu,onDrop:ep,style:T,children:[I,B]}),X[47]=I,X[48]=B,X[49]=O):O=X[49],X[50]!==V?(W=(0,r.jsx)(R,{settings:V,updateSettings:eh}),X[50]=V,X[51]=W):W=X[51],X[52]!==O||X[53]!==W?(G=(0,r.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[O,W]}),X[52]=O,X[53]=W,X[54]=G):G=X[54],X[55]!==el?(U=(0,r.jsx)(q,{open:el,onOpenChange:ei}),X[55]=el,X[56]=U):U=X[56],X[57]!==k||X[58]!==G||X[59]!==U?($=(0,r.jsxs)("div",{className:"flex flex-col h-[85vh] min-h-[600px] border-4 border-[#111] bg-[#1a1a1a]",style:v,suppressHydrationWarning:!0,children:[w,S,j,k,G,U]}),X[57]=k,X[58]=G,X[59]=U,X[60]=$):$=X[60],$}function Q(){return s}e.s(["DotArtLab",()=>X],80103)}]);

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.