1 line
No EOL
17 KiB
JavaScript
1 line
No EOL
17 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2561],{586:(e,s,t)=>{Promise.resolve().then(t.bind(t,1084))},1084:(e,s,t)=>{"use strict";t.d(s,{default:()=>d});var l=t(5155),n=t(2115),r=t(2177);function a(e){let[s,t]=(0,n.useState)([]),[l,r]=(0,n.useState)(!1),[a,i]=(0,n.useState)("");return(0,n.useEffect)(()=>{let s=!0;return r(!0),fetch("/api/options/".concat(e).concat(e.includes("?")?"&":"?","q=").concat(encodeURIComponent(a)),{cache:"no-store"}).then(e=>e.json()).then(e=>{var l;s&&t(null!=(l=null==e?void 0:e.data)?l:[])}).catch(()=>{s&&t([])}).finally(()=>{s&&r(!1)}),()=>{s=!1}},[e,a]),{opts:s,loading:l,setQ:i}}function i(e){let{label:s,name:t,register:r,options:a,loading:i,onQuery:o,placeholder:c="—",required:d}=e,[p,u]=(0,n.useState)("");(0,n.useEffect)(()=>{null==o||o(p)},[p,o]);let m=(0,n.useMemo)(()=>{if(!p)return a;let e=p.toLowerCase();return a.filter(s=>s.label.toLowerCase().includes(e))},[a,p]);return(0,l.jsxs)("div",{children:[(0,l.jsxs)("label",{className:"block text-sm mb-1",children:[s,d?" *":""]}),(0,l.jsx)("input",{className:"w-full border rounded px-2 py-1 mb-1",placeholder:"Type to filter…",value:p,onChange:e=>u(e.target.value)}),(0,l.jsxs)("select",{className:"w-full border rounded px-2 py-1",...r(t,{required:d}),children:[(0,l.jsxs)("option",{value:"",children:[c,i?" (loading…)":""]}),m.map(e=>(0,l.jsx)("option",{value:e.id,children:e.label},e.id))]})]})}function o(e){let{label:s,required:t,onFile:r,maxMB:a=25,accept:i="image/*",initialPreview:o}=e,[c,d]=(0,n.useState)(null),[p,u]=(0,n.useState)(null!=o?o:null),[m,x]=(0,n.useState)("");return(0,l.jsxs)("div",{children:[(0,l.jsxs)("label",{className:"block text-sm mb-1",children:[s,t?" *":""]}),(0,l.jsxs)("div",{className:"flex items-center gap-3 mb-1",children:[(0,l.jsxs)("label",{className:"inline-block px-2 py-1 border rounded cursor-pointer",children:["Choose File",(0,l.jsx)("input",{type:"file",accept:i,onChange:function(e){var s,t;let l=null!=(t=null==(s=e.target.files)?void 0:s[0])?t:null;d(l),x(l?l.name:""),r(l),l?u(URL.createObjectURL(l)):u(null)},className:"sr-only"})]}),(0,l.jsx)("span",{className:"text-xs text-muted-foreground",children:c?"Selected: ".concat(m):"No file selected"})]}),(0,l.jsxs)("p",{className:"text-xs text-muted-foreground mb-2",children:["Max ",a," MB. JPG/PNG/WebP recommended."]}),p&&(0,l.jsx)("img",{src:p,alt:"preview",className:"block w-full max-w-[420px] rounded border"}),t&&!c&&(0,l.jsx)("p",{className:"text-xs text-red-500 mt-1",children:"This image is required."})]})}function c(e){let{label:s,name:t,register:n}=e;return(0,l.jsxs)("label",{className:"flex items-center gap-1 text-sm",children:[(0,l.jsx)("input",{type:"checkbox",...n(t)})," ",s]})}function d(e){let{initialTarget:s}=e,[t,d]=(0,n.useState)(null!=s?s:"settings_fiber"),[p,u]=(0,n.useState)(null),[m,x]=(0,n.useState)(null),g=a("material"),b=a("material_coating"),h=a("material_color"),y=a("material_opacity"),j=a("laser_software"),f=a("laser_source?target=".concat(t)),_=a("lens?target=".concat(t)),N=a("repeater-choices?target=".concat(t,"&group=fill_settings&field=type")),v=a("repeater-choices?target=".concat(t,"&group=raster_settings&field=type")),w=a("repeater-choices?target=".concat(t,"&group=raster_settings&field=dither")),{register:k,handleSubmit:S,control:q,reset:C,formState:{isSubmitting:Q}}=(0,r.mN)({defaultValues:{setting_title:"",uploader:"",setting_notes:"",mat:"",mat_coat:"",mat_color:"",mat_opacity:"",mat_thickness:"",source:"",lens:"",focus:"",laser_soft:"",repeat_all:"",fill_settings:[],line_settings:[],raster_settings:[]}}),P=(0,r.jz)({control:q,name:"fill_settings"}),F=(0,r.jz)({control:q,name:"line_settings"}),z=(0,r.jz)({control:q,name:"raster_settings"}),A="settings_co2gan"===t,R="settings_fiber"===t;function O(e){return""===e||null==e?null:Number(e)}let T=e=>!!e;async function I(e){var s,l,n,r,a,i,o;if(!p)return void alert("Result Photo is required.");let c={target:t,setting_title:e.setting_title,uploader:e.uploader,setting_notes:e.setting_notes||"",mat:e.mat||null,mat_coat:e.mat_coat||null,mat_color:e.mat_color||null,mat_opacity:e.mat_opacity||null,mat_thickness:O(e.mat_thickness),source:e.source||null,lens:e.lens||null,focus:O(e.focus),fill_settings:(e.fill_settings||[]).map(e=>({name:e.name||"",power:O(e.power),speed:O(e.speed),interval:O(e.interval),pass:O(e.pass),type:e.type||"",frequency:O(e.frequency),pulse:O(e.pulse),angle:O(e.angle),auto:T(e.auto),increment:O(e.increment),cross:T(e.cross),flood:T(e.flood),air:T(e.air)})),line_settings:(e.line_settings||[]).map(e=>({name:e.name||"",power:O(e.power),speed:O(e.speed),perf:T(e.perf),cut:e.cut||"",skip:e.skip||"",pass:O(e.pass),air:T(e.air),frequency:O(e.frequency),pulse:O(e.pulse),wobble:T(e.wobble),step:O(e.step),size:O(e.size)})),raster_settings:(e.raster_settings||[]).map(e=>({name:e.name||"",power:O(e.power),speed:O(e.speed),type:e.type||"",dither:e.dither||"",halftone_cell:O(e.halftone_cell),halftone_angle:O(e.halftone_angle),inversion:T(e.inversion),interval:O(e.interval),dot:O(e.dot),pass:O(e.pass),air:T(e.air),frequency:O(e.frequency),pulse:O(e.pulse),cross:T(e.cross)}))};R&&(c.laser_soft=e.laser_soft||null,c.repeat_all=O(e.repeat_all));let d=new FormData;d.append("payload",JSON.stringify(c)),p&&d.append("photo",p,p.name),m&&d.append("screen",m,m.name);let g=await fetch("/api/submit/settings",{method:"POST",body:d}),b={};try{b=await g.json()}catch(e){}if(!g.ok){let e=(null==b?void 0:b.error)||"Submission failed";alert("Submission failed: ".concat(e));return}let h=null!=(o=null!=(i=null!=(a=null!=(r=null!=(n=null==b?void 0:b.id)?n:null==b?void 0:b.submission_id)?r:null==b||null==(s=b.data)?void 0:s.id)?a:null==b||null==(l=b.data)?void 0:l.submission_id)?i:null==b?void 0:b.itemId)?o:"(unknown)";C(),u(null),x(null),alert("Submitted! ID: ".concat(h))}return(0,l.jsxs)("div",{className:"max-w-4xl mx-auto space-y-4",children:[(0,l.jsxs)("div",{className:"flex flex-wrap gap-3 items-end",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Target"}),(0,l.jsxs)("select",{className:"border rounded px-2 py-1",value:t,onChange:e=>d(e.target.value),children:[(0,l.jsx)("option",{value:"settings_fiber",children:"Fiber"}),(0,l.jsx)("option",{value:"settings_co2gan",children:"CO₂ Gantry"}),(0,l.jsx)("option",{value:"settings_co2gal",children:"CO₂ Galvo"}),(0,l.jsx)("option",{value:"settings_uv",children:"UV"})]})]}),R&&(0,l.jsx)("div",{className:"flex-1 min-w-[220px]",children:(0,l.jsx)(i,{label:"Software",name:"laser_soft",register:k,options:j.opts,loading:j.loading,onQuery:j.setQ,required:!0})})]}),(0,l.jsxs)("form",{onSubmit:S(I),className:"space-y-4",children:[(0,l.jsxs)("div",{className:"grid md:grid-cols-2 gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Title *"}),(0,l.jsx)("input",{className:"w-full border rounded px-2 py-1",...k("setting_title",{required:!0})})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Uploader *"}),(0,l.jsx)("input",{className:"w-full border rounded px-2 py-1",...k("uploader",{required:!0})})]})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Notes"}),(0,l.jsx)("textarea",{rows:4,className:"w-full border rounded px-2 py-1",...k("setting_notes")})]}),(0,l.jsxs)("div",{className:"grid md:grid-cols-2 gap-6",children:[(0,l.jsx)(o,{label:"Result Photo",required:!0,onFile:u}),(0,l.jsx)(o,{label:"Settings Screenshot (optional)",onFile:x})]}),(0,l.jsxs)("div",{className:"grid md:grid-cols-2 gap-3",children:[(0,l.jsx)(i,{label:"Material",name:"mat",register:k,options:g.opts,loading:g.loading,onQuery:g.setQ,required:!0}),(0,l.jsx)(i,{label:"Coating",name:"mat_coat",register:k,options:b.opts,loading:b.loading,onQuery:b.setQ,required:!0}),(0,l.jsx)(i,{label:"Color",name:"mat_color",register:k,options:h.opts,loading:h.loading,onQuery:h.setQ,required:!0}),(0,l.jsx)(i,{label:"Opacity",name:"mat_opacity",register:k,options:y.opts,loading:y.loading,onQuery:y.setQ,required:!0}),(0,l.jsx)(i,{label:"Laser Source",name:"source",register:k,options:f.opts,loading:f.loading,onQuery:f.setQ,required:!0}),(0,l.jsx)(i,{label:"Lens",name:"lens",register:k,options:_.opts,loading:_.loading,onQuery:_.setQ,required:!0})]}),(0,l.jsxs)("div",{className:"grid md:grid-cols-3 gap-3",children:[(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Material Thickness (mm)"}),(0,l.jsx)("input",{type:"number",step:"0.01",className:"w-full border rounded px-2 py-1",...k("mat_thickness")})]}),(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Focus (mm) *"}),(0,l.jsx)("input",{type:"number",min:-10,max:10,step:"1",className:"w-full border rounded px-2 py-1",...k("focus",{required:!0})}),(0,l.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:"0 = in focus. Negative = focus closer. Positive = focus further."})]}),R&&(0,l.jsxs)("div",{children:[(0,l.jsx)("label",{className:"block text-sm mb-1",children:"Repeat All *"}),(0,l.jsx)("input",{type:"number",step:"1",className:"w-full border rounded px-2 py-1",...k("repeat_all",{required:!0})})]})]}),(0,l.jsxs)("fieldset",{className:"border rounded p-3 space-y-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("legend",{className:"font-semibold",children:"Fill Settings"}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded",onClick:()=>P.append({}),children:"+ Add"})]}),P.fields.map((e,s)=>(0,l.jsxs)("div",{className:"grid md:grid-cols-4 gap-2",children:[(0,l.jsx)("input",{placeholder:"Name",className:"border rounded px-2 py-1 md:col-span-2",...k("fill_settings.".concat(s,".name"))}),(0,l.jsx)(i,{label:"Type",name:"fill_settings.".concat(s,".type"),register:k,options:N.opts,loading:N.loading,onQuery:N.setQ,placeholder:"Select type"}),!A&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{placeholder:"Frequency (kHz)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".frequency"))}),(0,l.jsx)("input",{placeholder:"Pulse (ns)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".pulse"))})]}),(0,l.jsx)("input",{placeholder:"Power (%)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".power"))}),(0,l.jsx)("input",{placeholder:"Speed (mm/s)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".speed"))}),(0,l.jsx)("input",{placeholder:"Interval (mm)",type:"number",step:"0.001",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".interval"))}),(0,l.jsx)("input",{placeholder:"Pass",type:"number",step:"1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".pass"))}),!A&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{placeholder:"Angle (\xb0)",type:"number",step:"1",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".angle"))}),(0,l.jsx)("input",{placeholder:"Increment",type:"number",step:"0.001",className:"border rounded px-2 py-1",...k("fill_settings.".concat(s,".increment"))}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(c,{label:"Auto",name:"fill_settings.".concat(s,".auto"),register:k}),(0,l.jsx)(c,{label:"Cross",name:"fill_settings.".concat(s,".cross"),register:k})]})]}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(c,{label:"Flood",name:"fill_settings.".concat(s,".flood"),register:k}),(0,l.jsx)(c,{label:"Air",name:"fill_settings.".concat(s,".air"),register:k})]}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded md:col-span-4",onClick:()=>P.remove(s),children:"Remove"})]},e.id))]}),(0,l.jsxs)("fieldset",{className:"border rounded p-3 space-y-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("legend",{className:"font-semibold",children:"Line Settings"}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded",onClick:()=>F.append({}),children:"+ Add"})]}),F.fields.map((e,s)=>(0,l.jsxs)("div",{className:"grid md:grid-cols-4 gap-2",children:[(0,l.jsx)("input",{placeholder:"Name",className:"border rounded px-2 py-1 md:col-span-2",...k("line_settings.".concat(s,".name"))}),!A&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{placeholder:"Frequency (kHz)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".frequency"))}),(0,l.jsx)("input",{placeholder:"Pulse (ns)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".pulse"))})]}),(0,l.jsx)("input",{placeholder:"Power (%)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".power"))}),(0,l.jsx)("input",{placeholder:"Speed (mm/s)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".speed"))}),(0,l.jsx)("input",{placeholder:"Perf",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".perf"))}),(0,l.jsx)("input",{placeholder:"Cut",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".cut"))}),(0,l.jsx)("input",{placeholder:"Skip",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".skip"))}),(0,l.jsx)("input",{placeholder:"Pass",type:"number",step:"1",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".pass"))}),!A&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{placeholder:"Step",type:"number",step:"0.001",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".step"))}),(0,l.jsx)("input",{placeholder:"Size",type:"number",step:"0.001",className:"border rounded px-2 py-1",...k("line_settings.".concat(s,".size"))}),(0,l.jsx)(c,{label:"Wobble",name:"line_settings.".concat(s,".wobble"),register:k})]}),(0,l.jsx)(c,{label:"Air",name:"line_settings.".concat(s,".air"),register:k}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded md:col-span-4",onClick:()=>F.remove(s),children:"Remove"})]},e.id))]}),(0,l.jsxs)("fieldset",{className:"border rounded p-3 space-y-2",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("legend",{className:"font-semibold",children:"Raster Settings"}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded",onClick:()=>z.append({}),children:"+ Add"})]}),z.fields.map((e,s)=>(0,l.jsxs)("div",{className:"grid md:grid-cols-4 gap-2",children:[(0,l.jsx)("input",{placeholder:"Name",className:"border rounded px-2 py-1 md:col-span-2",...k("raster_settings.".concat(s,".name"))}),!A&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{placeholder:"Frequency (kHz)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".frequency"))}),(0,l.jsx)("input",{placeholder:"Pulse (ns)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".pulse"))})]}),(0,l.jsx)(i,{label:"Type",name:"raster_settings.".concat(s,".type"),register:k,options:v.opts,loading:v.loading,onQuery:v.setQ,placeholder:"Select type"}),(0,l.jsx)(i,{label:"Dither",name:"raster_settings.".concat(s,".dither"),register:k,options:w.opts,loading:w.loading,onQuery:w.setQ,placeholder:"Select dither"}),(0,l.jsx)("input",{placeholder:"Power (%)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".power"))}),(0,l.jsx)("input",{placeholder:"Speed (mm/s)",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".speed"))}),(0,l.jsx)("input",{placeholder:"Halftone Cell",type:"number",step:"1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".halftone_cell"))}),(0,l.jsx)("input",{placeholder:"Halftone Angle",type:"number",step:"1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".halftone_angle"))}),(0,l.jsx)("input",{placeholder:"Interval (mm)",type:"number",step:"0.001",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".interval"))}),(0,l.jsx)("input",{placeholder:"Dot",type:"number",step:"0.1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".dot"))}),(0,l.jsx)("input",{placeholder:"Pass",type:"number",step:"1",className:"border rounded px-2 py-1",...k("raster_settings.".concat(s,".pass"))}),!A&&(0,l.jsx)(c,{label:"Cross",name:"raster_settings.".concat(s,".cross"),register:k}),(0,l.jsxs)("div",{className:"flex items-center gap-3",children:[(0,l.jsx)(c,{label:"Inversion",name:"raster_settings.".concat(s,".inversion"),register:k}),(0,l.jsx)(c,{label:"Air",name:"raster_settings.".concat(s,".air"),register:k})]}),(0,l.jsx)("button",{type:"button",className:"px-2 py-1 border rounded md:col-span-4",onClick:()=>z.remove(s),children:"Remove"})]},e.id))]}),(0,l.jsx)("button",{disabled:Q,className:"px-3 py-2 border rounded bg-accent text-background hover:opacity-90 disabled:opacity-50",children:Q?"Submitting…":"Submit Settings"})]})]})}}},e=>{var s=s=>e(e.s=s);e.O(0,[2177,8441,1684,7358],()=>s(586)),_N_E=e.O()}]); |