PrintModal-B58GdOE3.js 94 KB

12
  1. import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{C as t,T as n,a as r,k as i,w as a,x as o}from"./client-MyvT0tak.js";import{t as s}from"./react-dom-hYJuSgam.js";import{n as c}from"./QueryClientProvider-DByECIjl.js";import{t as l}from"./useQuery-CHOG_Fbw.js";import{t as u}from"./useMutation-DV_sh4Ji.js";import{t as d}from"./useQueries-I13RYbcG.js";import{t as f}from"./arrow-down-NKOFnG0e.js";import{t as p}from"./arrow-up-BYKIR4jk.js";import{t as m}from"./calendar-fnehoRRe.js";import{t as h}from"./check-CmOZjnRY.js";import{a as g,i as _,r as v}from"./info-B6WpRbKo.js";import{n as y}from"./ToastContext-rCh90cji.js";import{t as b}from"./clock-D1BCwXiD.js";import{t as x}from"./code-BpDMyr9e.js";import{t as S}from"./flame-CmPkOZXB.js";import{t as C}from"./layers-D9uYCGiE.js";import{t as ee}from"./loader-circle-BCaavitk.js";import{t as w}from"./palette-DH9M_2VI.js";import{t as te}from"./pencil-CJhZIy2i.js";import{t as T}from"./printer-DVnGPNXE.js";import{t as ne}from"./refresh-cw-Cc3nUvvK.js";import{t as re}from"./rotate-ccw-D6ngM6D9.js";import{t as ie}from"./settings-B42ebiIY.js";import{t as E}from"./square-check-big-BOK92gVL.js";import{t as D}from"./square-04JHJPkl.js";import{t as O}from"./triangle-alert-BhEYJSeb.js";import{t as k}from"./users-C6Hl6V_F.js";import{t as ae}from"./wand-sparkles-Ct01WoXr.js";import{t as A}from"./x-cqdAcs9R.js";import{n as oe}from"./AuthContext-Db9wjW6t.js";import{n as j,t as se}from"./Card-D08KwdrO.js";import{t as ce}from"./Button-Dk615dwb.js";import{t as le}from"./ConfirmModal-HpxKA3FP.js";import{_ as ue,d as de,g as fe,m as pe,o as M,p as N,r as P,v as me,y as he}from"./date-G9KUauqz.js";import{A as F,E as ge,G as I,M as _e,O as ve,S as ye,_ as be,f as xe,h as Se,j as L,k as Ce,l as R,m as we,o as Te,p as z,s as Ee,t as De,u as Oe,z as ke}from"./amsHelpers-m0tbln8b.js";import{i as Ae,n as je}from"./colors-D_-ITfUn.js";import{n as Me}from"./currency-LmqFrzn3.js";import{n as Ne,t as Pe}from"./useUiSettings-QPurze9x.js";import{t as Fe}from"./NumberInput-Dpt1IWQn.js";import{o as Ie,s as Le}from"./printer-bKYa4pK8.js";import{t as B}from"./FilamentSwatch-CjUd2OuH.js";var Re=t(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),V=t(`hand`,[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`,key:`1fvzgz`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`,key:`1kc0my`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`,key:`10h0bg`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`,key:`1s1gnw`}]]),ze=t(`list-ordered`,[[`path`,{d:`M11 5h10`,key:`1cz7ny`}],[`path`,{d:`M11 12h10`,key:`1438ji`}],[`path`,{d:`M11 19h10`,key:`11t30w`}],[`path`,{d:`M4 4h1v5`,key:`10yrso`}],[`path`,{d:`M4 9h2`,key:`r1h2o0`}],[`path`,{d:`M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02`,key:`xtkcd5`}]]),Be=t(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),Ve=t(`thumbs-up`,[[`path`,{d:`M7 10v12`,key:`1qc93n`}],[`path`,{d:`M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z`,key:`emmmcr`}]]),H=e(i(),1);function He(e){if(!e)return null;let t=[e.brand,e.material,e.subtype].filter(Boolean);return t.length>0?t.join(` `):null}function Ue(e,t){let n=[],r=e?.ams_extruder_map,i=I(e?.ams,e?.vt_tray).rack,a=!!e?.nozzles?.[1]?.nozzle_diameter||r&&Object.keys(r).length>0||(e?.vt_tray?.length??0)>1&&!i;e?.ams?.forEach(e=>{let i=ge(e.id);e.tray.forEach(a=>{if(a.tray_type){let o=Ce(a.tray_color),s=ye(e.id,a.id,!1,e.ams_type),c=t?.get(s);n.push({type:a.tray_type,color:o,colorName:c?.color_name?.trim()||Ae(o,a.tray_sub_brands,a.tray_info_idx),amsId:e.id,trayId:a.id,isHt:i,isExternal:!1,label:be(e.id,a.id,i,!1,e.ams_type),globalTrayId:s,trayInfoIdx:a.tray_info_idx||``,traySubBrands:a.tray_sub_brands||``,spoolName:He(c)??void 0,extraColors:c?.extra_colors??void 0,effectType:c?.effect_type??void 0,spoolSubtype:c?.subtype??void 0,extruderId:r?.[String(e.id)],remain:a.remain??-1})}})});for(let r of e?.vt_tray??[])if(r.tray_type){let o=Ce(r.tray_color),s=r.id??254,c=(e?.vt_tray?.length??0)>1&&!i,l=t?.get(s);n.push({type:r.tray_type,color:o,colorName:l?.color_name?.trim()||Ae(o,r.tray_sub_brands,r.tray_info_idx),amsId:-1,trayId:ke(s),isHt:!1,isExternal:!0,label:i?_e(s):c?s===254?`Ext-L`:`Ext-R`:`External`,globalTrayId:s,trayInfoIdx:r.tray_info_idx||``,traySubBrands:r.tray_sub_brands||``,spoolName:He(l)??void 0,extraColors:l?.extra_colors??void 0,effectType:l?.effect_type??void 0,spoolSubtype:l?.subtype??void 0,extruderId:a?255-s:void 0,remain:r.remain??-1})}return n}function U(e,t,n,r){let i=Ue(t);if(i.length!==0)return qe(Ke(e,i,{},n,r,t?.fila_switch?.installed===!0))}function We(e,t){return(0,H.useMemo)(()=>Ue(e,t),[e,t])}function Ge(e,t){let n=F(t);return!n||F(e)===n||R(e,t)}function Ke(e,t,n,r,i,a=!1){if(!e?.filaments||e.filaments.length===0)return[];let o=new Set(Object.values(n));return e.filaments.map(e=>{let s=e.slot_id||0;if(s>0&&n[s]!==void 0){let r=n[s],i=t.find(e=>e.globalTrayId===r);if(i){let t=z(i.type,e.type),n=Ge(i.color,e.color),r;return r=t&&n?`match`:t?`type_only`:`mismatch`,{...e,loaded:i,hasFilament:!0,typeMatch:t,colorMatch:n,status:r,isManual:!0}}}let c=e.tray_info_idx||``,l=t.filter(e=>!o.has(e.globalTrayId));e.nozzle_id!=null&&!a&&(l=l.filter(t=>t.extruderId===e.nozzle_id)),r&&(l=[...l].sort((e,t)=>Oe(L(e,i),L(t,i))));let u,d,f,p;if(c){let t=l.filter(e=>e.trayInfoIdx===c);t.length===1?u=t[0]:t.length>1&&(r&&t.sort((e,t)=>Oe(L(e,i),L(t,i))),d=t.find(t=>z(t.type,e.type)&&F(t.color)===F(e.color)),d||(f=Se(t.filter(t=>z(t.type,e.type)),e.color,e=>e.color)),!d&&!f&&(p=t.find(t=>z(t.type,e.type))))}!u&&!d&&!f&&!p&&(d=l.find(t=>z(t.type,e.type)&&F(t.color)===F(e.color)),d||(f=Se(l.filter(t=>z(t.type,e.type)),e.color,e=>e.color)),!d&&!f&&(p=l.find(t=>z(t.type,e.type))));let m=u||d||f||p||void 0;m&&o.add(m.globalTrayId);let h=!!m,g=h,_=h&&Ge(m.color,e.color),v;return v=h?_?`match`:`type_only`:`mismatch`,{...e,loaded:m,hasFilament:h,typeMatch:g,colorMatch:_,status:v,isManual:!1}})}function qe(e){if(e.length===0)return;let t=Math.max(...e.map(e=>e.slot_id||0));if(t<=0)return;let n=Array(t).fill(-1);return e.forEach(e=>{e.slot_id&&e.slot_id>0&&(n[e.slot_id-1]=e.loaded?.globalTrayId??-1)}),n}function Je(e,t,n,r,i,a){let o=We(t,a),s=t?.fila_switch?.installed===!0,c=(0,H.useMemo)(()=>Ke(e,o,n,r,i,s),[e,o,n,r,s,i]);return{loadedFilaments:o,filamentComparison:c,amsMapping:(0,H.useMemo)(()=>o.length===0?void 0:qe(c),[c,o.length]),hasTypeMismatch:c.some(e=>e.status===`mismatch`),hasColorMismatch:c.some(e=>e.status===`type_only`)}}function Ye(e,t,n,r,i){if(!e||e.length===0)return{exactMatches:0,typeOnlyMatches:0,missingTypes:0,totalSlots:0,status:`full`};let a=0,o=0,s=0,c=new Set(Object.values(n));for(let l of e){let e=l.slot_id||0;if(e>0&&n[e]!==void 0){let r=n[e],i=t.find(e=>e.globalTrayId===r);if(i){let e=z(i.type,l.type),t=F(i.color)===F(l.color)||R(i.color,l.color);e&&t?a++:e?o++:s++;continue}}let u=t.filter(e=>!c.has(e.globalTrayId));if(l.nozzle_id!=null){let e=u.filter(e=>e.extruderId===l.nozzle_id);e.length>0&&(u=e)}r&&(u=[...u].sort((e,t)=>Oe(L(e,i),L(t,i))));let d=u.find(e=>z(e.type,l.type)&&F(e.color)===F(l.color)),f=d?void 0:Se(u.filter(e=>z(e.type,l.type)),l.color,e=>e.color),p=d||f?void 0:u.find(e=>z(e.type,l.type)),m=d??f??p;m&&c.add(m.globalTrayId),d||f?a++:p?o++:s++}let l=e.length,u=`full`;return s>0?u=`missing`:o>0&&(u=`partial`),{exactMatches:a,typeOnlyMatches:o,missingTypes:s,totalSlots:l,status:u}}function Xe(e,t,n,r,i){if(!e?.filaments||e.filaments.length===0)return;let a=Ue(t);if(a.length===0)return;let o=new Set(Object.values(n)),s=[];for(let t of e.filaments){let e=t.slot_id||0;if(e>0&&n[e]!==void 0){s.push({slot_id:e,globalTrayId:n[e]});continue}let c=a.filter(e=>!o.has(e.globalTrayId));if(t.nozzle_id!=null){let e=c.filter(e=>e.extruderId===t.nozzle_id);e.length>0&&(c=e)}r&&(c=[...c].sort((e,t)=>Oe(L(e,i),L(t,i))));let l=c.find(e=>z(e.type,t.type)&&F(e.color)===F(t.color)),u=l?void 0:Se(c.filter(e=>z(e.type,t.type)),t.color,e=>e.color),d=l||u?void 0:c.find(e=>z(e.type,t.type)),f=l??u??d;f&&o.add(f.globalTrayId),s.push({slot_id:e,globalTrayId:f?.globalTrayId??-1})}let c=Math.max(...s.map(e=>e.slot_id||0));if(c<=0)return;let l=Array(c).fill(-1);return s.forEach(e=>{e.slot_id&&e.slot_id>0&&(l[e.slot_id-1]=e.globalTrayId)}),l}var Ze={useDefault:!0,manualMappings:{},autoConfigured:!1};function Qe(e,t,n,i,a,o,s,c,l){let u=d({queries:e.map(t=>({queryKey:[`printer-status`,t],queryFn:()=>r.getPrinterStatus(t),enabled:e.length>0,staleTime:5e3}))}),f=(0,H.useMemo)(()=>e.map((e,r)=>{let o=u[r],d=o?.data,f=t?.find(t=>t.id===e)?.name||`Printer ${e}`,p=Ue(d),m=a[e]||Ze,h=c?.get(e),g=xe(s,d?.ams_filament_backup),_=U(n,d,g,h),v=l!=null&&e===l,y=m.useDefault?v?i:{}:m.manualMappings,b=Xe(n,d,y,g,h),x=Ye(n?.filaments,p,y,g,h);return{printerId:e,printerName:f,status:d,isLoading:o?.isLoading??!1,loadedFilaments:p,autoMapping:_,finalMapping:b,matchStatus:x.status,exactMatches:x.exactMatches,typeOnlyMatches:x.typeOnlyMatches,missingTypes:x.missingTypes,totalSlots:x.totalSlots,config:m,inventoryByTrayId:h}}),[e,u,t,n,a,i,s,c,l]),p=u.some(e=>e.isLoading),m=(e,t)=>{o(n=>({...n,[e]:{...n[e]||Ze,...t}}))},h=e=>{let t=f.find(t=>t.printerId===e);if(!t||!t.status||!n?.filaments)return;let r=U(n,t.status,xe(s,t.status?.ams_filament_backup),c?.get(e));if(!r)return;let i={};r.forEach((e,t)=>{e!==-1&&(i[t+1]=e)}),m(e,{useDefault:!1,manualMappings:i,autoConfigured:!0})};return{printerResults:f,isLoading:p,perPrinterConfigs:a,updatePrinterConfig:m,autoConfigureAll:()=>{for(let t of e)h(t)},autoConfigurePrinter:h,getFinalMapping:e=>f.find(t=>t.printerId===e)?.finalMapping,allPrintersReady:f.every(e=>e.matchStatus!==`missing`)}}function $e(e){let t=e.trim().split(/\s+/);return t.length<=1?e.trim():t.slice(1).join(` `)}function et(){let{data:e}=l({queryKey:[`builtin-filaments`],queryFn:()=>r.getBuiltinFilaments(),staleTime:300*1e3}),{data:t}=l({queryKey:[`filament-id-map`],queryFn:()=>r.getFilamentIdMap(),staleTime:300*1e3});return(0,H.useMemo)(()=>{let n={};for(let t of e||[])t.filament_id&&(n[t.filament_id]=t.name);for(let[e,r]of Object.entries(t||{}))e&&r&&(n[e]=r);return n},[e,t])}function tt(e,t,n){return $e(e&&n[e]||t)}function nt(e){let t=et(),n=(0,H.useMemo)(()=>(e||[]).map(e=>{let n=e.tray_info_idx&&t[e.tray_info_idx]||e.type;return{resolvedName:n,materialHint:$e(n),color:e.color}}),[e,t]),i=d({queries:n.map(({color:e,materialHint:t})=>({queryKey:[`color-by-material`,e,t],queryFn:()=>r.getColorByMaterial(e,t),enabled:!!e,staleTime:300*1e3}))});return n.map(({resolvedName:e,color:t},n)=>({resolvedName:e,colorLabel:(i[n]?.data?.color_name??null)||Ae(t)}))}var W=`/img/bed`,rt={"cool plate":{icon:`${W}/bed_cool.png`,label:`Cool Plate`},"pc plate":{icon:`${W}/bed_cool.png`,label:`Cool Plate`},"cool plate (supertack)":{icon:`${W}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"supertack plate":{icon:`${W}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"bambu cool plate supertack":{icon:`${W}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"engineering plate":{icon:`${W}/bed_engineering.png`,label:`Engineering Plate`},"high temp plate":{icon:`${W}/bed_high_templ.png`,label:`High Temp Plate`},"textured pei plate":{icon:`${W}/bed_pei.png`,label:`Textured PEI Plate`},"pei plate":{icon:`${W}/bed_pei.png`,label:`PEI Plate`},"smooth pei plate":{icon:`${W}/bed_pei_cool.png`,label:`Smooth PEI Plate`}};function it(e){return e?rt[e.trim().toLowerCase()]??null:null}function at(e,t){if(t==null)return;let n=e?.slicer_ams_mapping;if(!(!n||typeof n!=`object`)&&n.printer_id===t&&!(!Array.isArray(n.mapping)||n.mapping.length===0))return n.mapping}var ot=e(s(),1),G=a(),st=`w-3 h-3`,ct=8;function lt({value:e,options:t,placeholder:n,placeholderOption:r,onChange:i,disabled:a=!1,ariaLabel:o,title:s,className:c=``,exactMatchLabel:l}){let[u,d]=(0,H.useState)(!1),[f,p]=(0,H.useState)(0),[m,_]=(0,H.useState)(null),v=(0,H.useRef)(null),y=(0,H.useRef)(null),b=[{...r??{},value:``,label:n},...t],x=Math.max(0,b.findIndex(t=>t.value===e)),S=b[x],C=(0,H.useCallback)(()=>{let e=v.current;if(!e)return;let t=e.getBoundingClientRect(),n=window.innerHeight-t.bottom,r=Math.min(y.current?.scrollHeight??0,240),i=n<r+8&&t.top>n,a=document.documentElement.clientWidth||window.innerWidth,o=a-2*ct,s=Math.min(t.width,o),c=y.current;c&&(c.style.minWidth=`${s}px`);let l=c?.offsetWidth??s;_({top:i?Math.max(8,t.top-r-4):t.bottom+4,left:Math.max(ct,Math.min(t.left,a-ct-l)),minWidth:s,maxWidth:o})},[]);(0,H.useLayoutEffect)(()=>{u&&C()},[u,C]),(0,H.useEffect)(()=>{if(!u)return;let e=e=>{let t=e.target;v.current?.contains(t)||y.current?.contains(t)||d(!1)},t=e=>{e.key===`Escape`&&(e.stopPropagation(),d(!1),v.current?.focus())},n=()=>C();return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t,!0),window.addEventListener(`scroll`,n,!0),window.addEventListener(`resize`,n),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t,!0),window.removeEventListener(`scroll`,n,!0),window.removeEventListener(`resize`,n)}},[u,C]);let ee=e=>{i(b[e].value),d(!1),v.current?.focus()},w=e=>{p(e),d(!0)},te=e=>{if(!a){if(!u){(e.key===`ArrowDown`||e.key===`ArrowUp`||e.key===`Enter`||e.key===` `)&&(e.preventDefault(),w(x));return}e.key===`ArrowDown`?(e.preventDefault(),p(e=>Math.min(b.length-1,e+1))):e.key===`ArrowUp`?(e.preventDefault(),p(e=>Math.max(0,e-1))):e.key===`Home`?(e.preventDefault(),p(0)):e.key===`End`?(e.preventDefault(),p(b.length-1)):e.key===`Enter`||e.key===` `?(e.preventDefault(),ee(f)):e.key===`Tab`&&d(!1)}},T=`slot-picker-${o.replace(/\W+/g,`-`)}`,ne=e=>e.rgba?(0,G.jsx)(B,{rgba:e.rgba,extraColors:e.extraColors,effectType:e.effectType,subtype:e.subtype,className:st,effectSize:`table`}):null;return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`button`,{ref:v,type:`button`,role:`combobox`,"aria-label":o,"aria-haspopup":`listbox`,"aria-expanded":u,"aria-controls":u?T:void 0,"aria-activedescendant":u?`${T}-${f}`:void 0,disabled:a,title:s,onClick:()=>u?d(!1):w(x),onKeyDown:te,className:`flex-1 min-w-0 flex items-center gap-1.5 px-2 py-1 rounded border text-xs bg-bambu-dark-secondary text-left focus:outline-none focus:ring-1 focus:ring-bambu-green disabled:opacity-50 ${c}`,children:[ne(S),(0,G.jsxs)(`span`,{className:`flex-1 min-w-0 truncate`,children:[S.label,S.meta?(0,G.jsx)(`span`,{className:`text-bambu-gray`,children:S.meta}):null]}),(0,G.jsx)(g,{className:`w-3 h-3 shrink-0 opacity-70`})]}),u&&(0,ot.createPortal)((0,G.jsx)(`div`,{ref:y,id:T,role:`listbox`,"aria-label":o,className:`fixed z-[60] max-h-60 overflow-y-auto rounded-lg border border-bambu-dark-tertiary bg-bambu-dark-secondary p-1 shadow-xl`,style:{top:m?.top??-9999,left:m?.left??-9999,width:`max-content`,minWidth:m?.minWidth,maxWidth:m?.maxWidth,visibility:m?`visible`:`hidden`},children:b.map((e,t)=>(0,G.jsxs)(`button`,{id:`${T}-${t}`,type:`button`,role:`option`,"data-value":e.value,"aria-selected":t===x,onMouseEnter:()=>p(t),onClick:()=>ee(t),className:`w-full flex items-center gap-1.5 text-left px-2 py-1.5 rounded-md text-xs ${t===x?`bg-bambu-green/15 text-bambu-green`:t===f?`bg-bambu-dark text-white`:`text-white`}`,children:[ne(e),(0,G.jsxs)(`span`,{className:`flex-1 min-w-0 truncate`,title:e.label,children:[e.label,e.meta?(0,G.jsx)(`span`,{className:`text-bambu-gray`,children:e.meta}):null]}),e.hex?(0,G.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] uppercase text-bambu-gray`,children:e.hex}):null,e.exactMatch?(0,G.jsx)(`span`,{title:l,className:`shrink-0 text-bambu-green`,children:(0,G.jsx)(h,{className:`w-3 h-3`})}):null]},e.key??`${e.value}-${t}`))}),document.body)]})}function ut(e){if(!e)return null;let t=e.trim().replace(/^#/,``);return/^[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/.test(t)?`#${(t.length===8&&t.substring(6,8).toLowerCase()!==`ff`?t:t.substring(0,6)).toUpperCase()}`:null}var dt=Array.from({length:6},(e,t)=>t+1),ft=0;function pt(e){let t=new Map,n;for(let r of e??[]){if(r.id===ft){n=r;continue}let e=r.id-15;e>=1&&e<=6&&t.set(e,r)}let r=dt.filter(e=>!t.has(e));return r.length===1&&n&&(n.nozzle_diameter||n.nozzle_type)&&t.set(r[0],n),t}function mt(e,t){if(!e||!e.nozzle_diameter&&!e.nozzle_type)return!1;let n=Number.parseFloat(e.nozzle_diameter),r=Number.parseFloat(t.nozzle_diameter);if(!Number.isFinite(n)||!Number.isFinite(r)||Math.abs(n-r)>.005)return!1;let i=(t.volume_type||``).trim().toLowerCase();if(i&&e.nozzle_type){let t=e.nozzle_type.toUpperCase().startsWith(`HH`);if(i.startsWith(`high flow`)!==t)return!1}return!0}function ht(e,t,n){let r=pt(e);return dt.map(e=>{let i=r.get(e),a=mt(i,t),o;return a||(o=i?n(`printModal.rackWrongNozzle`,{has:`${i.nozzle_diameter||`?`} ${i.nozzle_type||``}`.trim(),needs:`${t.nozzle_diameter} ${t.volume_type}`.trim()}):n(`printModal.rackEmptyPosition`)),{position:e,diameter:i?.nozzle_diameter??``,nozzleType:i?.nozzle_type??``,filamentColor:i?.filament_color??``,eligible:a,reason:o}})}function gt(e,t,n={}){let r=pt(e),i={},a=new Set,o=[...t.keys()].filter(e=>t.get(e).on_rack).sort((e,t)=>e-t);for(let e of o){let o=n[e];if(o!=null){if(a.has(o)||!mt(r.get(o),t.get(e)))return null;i[e]=o,a.add(o)}}for(let e of o){if(i[e]!=null)continue;let n=t.get(e),o=dt.filter(e=>!a.has(e)&&mt(r.get(e),n));if(o.length===0)return null;let s=K(n.filament_color),c=(s?o.find(e=>K(r.get(e)?.filament_color)===s):void 0)??o[0];i[e]=c,a.add(c)}return i}function K(e){return(e??``).trim().replace(/^#/,``).slice(0,6).toUpperCase()}function _t({printerId:e,filamentReqs:t,manualMappings:i,onManualMappingChange:a,onEstimatedCostChange:o,budgetAvailable:s,quantity:u=1,currencySymbol:d,defaultCostPerKg:f,defaultExpanded:p=!1,forceColorMatch:m,onForceColorMatchChange:v,plateLabel:y,archiveAmsMapping:b,nozzleRackChoice:x,onNozzleRackChoiceChange:S}){let{t:C}=n(),ee=c(),[te,T]=(0,H.useState)(!1),[re,ie]=(0,H.useState)(p),[E,D]=(0,H.useState)(!1),k=(0,H.useRef)([]);(0,H.useEffect)(()=>{D(!1),k.current=[]},[b,y,e]);let ae=()=>{if(!b||!t?.filaments)return;if(E){let e={...i};for(let t of k.current)delete e[t];a(e),k.current=[],D(!1);return}let e={...i},n=[];for(let r of t.filaments){let t=r.slot_id-1;r.slot_id>0&&t>=0&&t<b.length&&b[t]>=0&&(e[r.slot_id]=b[t],n.push(r.slot_id))}a(e),k.current=n,D(!0)},{data:A}=l({queryKey:[`printer-status`,e],queryFn:()=>r.getPrinterStatus(e),enabled:!!e}),{data:oe}=Ne(),{data:j}=l({queryKey:[`printer-inventory-remain`,e],queryFn:()=>r.getInventoryRemain(e),enabled:!!e,staleTime:30*1e3,refetchOnMount:`always`}),se=(0,H.useMemo)(()=>{if(!j?.inventory_remain_g)return;let e=new Map;return Object.entries(j.inventory_remain_g).forEach(([t,n])=>{let r=Number(t);Number.isNaN(r)||e.set(r,n)}),e},[j]),ce=(0,H.useMemo)(()=>{let e=j?.slot_materials;if(!e?.length)return;let t=new Map;return e.forEach(e=>{e.spool&&t.set(e.global_tray_id,e.spool)}),t.size>0?t:void 0},[j]),{loadedFilaments:le,filamentComparison:ue,hasTypeMismatch:de,hasColorMismatch:fe}=Je(t,A,i,xe(oe?.prefer_lowest_filament,A?.ams_filament_backup),se,ce),pe=nt(t?.filaments),M=(0,H.useMemo)(()=>{let e=new Map;for(let t of j?.slot_materials??[])e.set(t.global_tray_id,t.cost_per_kg??null);return e},[j]),N=(0,H.useMemo)(()=>{let e=new Map;for(let t of j?.slot_materials??[])e.set(t.global_tray_id,Math.max(0,Math.round(t.remaining_g)));return e},[j]),P=(0,H.useMemo)(()=>{let e=0;for(let t of ue){let n=t.loaded?.globalTrayId;if(n==null)continue;let r=M.get(n)??null??f;r>0&&(e+=t.used_grams/1e3*r)}return e},[ue,M,f]),me=(0,H.useRef)(o);(0,H.useEffect)(()=>{me.current=o},[o]),(0,H.useEffect)(()=>{me.current?.(P>0?P:null)},[P]);let he=(0,H.useMemo)(()=>Array.from(M.values()).some(e=>e!=null&&e>0),[M]),ge=P*Math.max(1,u),I=s!=null&&ge>s,_e=t?.filaments&&t.filaments.length>0,ve=t?.filaments?.some(e=>e.nozzle_id!=null)??!1,ye=(0,H.useMemo)(()=>{let e=new Map;for(let n of t?.filaments??[])n.group_id!=null&&n.group&&e.set(n.group_id,n.group);return e},[t]),be=(A?.nozzle_rack?.some(e=>e.id>=16)??!1)&&[...ye.values()].some(e=>e.on_rack),Se=(0,H.useMemo)(()=>be?gt(A?.nozzle_rack,ye,x??{})??x??{}:{},[be,A?.nozzle_rack,ye,x]),L=(e,t)=>{S&&S({...Se,[e]:t})},Ce=A?.fila_switch?.installed===!0,R=A?.ams_switch_inlet,we=e=>Ce&&R?.[String(e)]||null,Te=(0,H.useMemo)(()=>{if(!Ce)return null;let e=new Set;for(let t of ue){if(!t.loaded||t.loaded.isExternal)return null;let n=we(t.loaded.amsId);if(!n)return null;e.add(n)}return ue.length<2||e.size!==1?null:[...e][0]},[Ce,R,ue]);if(!_e||!A)return null;let z=de?`#f97316`:fe?`#facc15`:`#00ae42`,Ee=(e,t)=>{if(e>0)if(t===``){let t={...i};delete t[e],a(t)}else a({...i,[e]:parseInt(t,10)})};return(0,G.jsxs)(`div`,{className:`mb-4`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>ie(!re),className:`flex items-center gap-2 text-sm text-bambu-gray hover:text-white transition-colors w-full`,children:[(0,G.jsx)(Re,{className:`w-4 h-4`,fill:z,stroke:`none`}),(0,G.jsx)(`span`,{children:y?`${C(`printModal.filamentMapping`)} — ${y}`:C(`printModal.filamentMapping`)}),de?(0,G.jsxs)(`span`,{className:`text-xs text-orange-700 dark:text-orange-400`,children:[`(`,C(`printModal.statusTypeNotFound`),`)`]}):fe?(0,G.jsxs)(`span`,{className:`text-xs text-yellow-700 dark:text-yellow-400`,children:[`(`,C(`printModal.statusColorMismatch`),`)`]}):(0,G.jsxs)(`span`,{className:`text-xs text-bambu-green`,children:[`(`,C(`printModal.statusReady`),`)`]}),re?(0,G.jsx)(_,{className:`w-4 h-4 ml-auto`}):(0,G.jsx)(g,{className:`w-4 h-4 ml-auto`})]}),re&&(0,G.jsxs)(`div`,{className:`mt-2 bg-bambu-dark rounded-lg p-3 space-y-2`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,G.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:C(`printModal.clickToChangeSlot`)}),(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[b&&(0,G.jsxs)(`button`,{type:`button`,onClick:ae,title:C(`printModal.useArchiveMappingTooltip`),className:`flex items-center gap-1 px-2 py-0.5 text-xs rounded border transition-colors ${E?`border-bambu-green bg-bambu-green/10 text-bambu-green`:`border-bambu-gray/30 hover:border-bambu-gray hover:bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,children:[(0,G.jsx)(h,{className:`w-3 h-3`}),(0,G.jsx)(`span`,{children:C(`printModal.useArchiveMapping`)})]}),(0,G.jsxs)(`button`,{type:`button`,onClick:async()=>{T(!0);try{await r.refreshPrinterStatus(e),await new Promise(e=>setTimeout(e,500)),await ee.refetchQueries({queryKey:[`printer-status`,e]})}finally{T(!1)}},className:`flex items-center gap-1 px-2 py-0.5 text-xs rounded border border-bambu-gray/30 hover:border-bambu-gray hover:bg-bambu-dark-tertiary transition-colors text-bambu-gray hover:text-white`,disabled:te,children:[(0,G.jsx)(ne,{className:`w-3 h-3 ${te?`animate-spin`:``}`}),(0,G.jsx)(`span`,{children:C(`printModal.reRead`)})]})]})]}),Te&&(0,G.jsxs)(`div`,{className:`flex items-start gap-1.5 rounded border border-yellow-500/40 bg-yellow-500/10 px-2 py-1.5 text-xs text-yellow-700 dark:text-yellow-400`,children:[(0,G.jsx)(O,{className:`w-3 h-3 mt-0.5 shrink-0`}),(0,G.jsx)(`span`,{children:C(`printModal.ftsSameInletHint`,{inlet:Te})})]}),ue.map((e,t)=>{let n=e.slot_id??0,r=n>0&&v!=null,{resolvedName:i,colorLabel:a}=pe[t]??{resolvedName:e.type,colorLabel:Ae(e.color)},[o,s]=je({name:a,hex:e.color},{name:e.loaded?.colorName,hex:e.loaded?.color});return(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`div`,{className:`grid items-center gap-2 text-xs grid-cols-[16px_minmax(0,1fr)_16px] ${be?`sm:grid-cols-[16px_minmax(210px,1.4fr)_auto_2fr_16px]`:`sm:grid-cols-[16px_minmax(70px,1fr)_auto_2fr_16px]`}`,children:[(0,G.jsx)(`span`,{title:C(`printModal.requiredTooltip`,{name:i,color:o}),children:(0,G.jsx)(Re,{className:`w-3 h-3`,fill:e.color,stroke:e.color})}),(0,G.jsxs)(`span`,{className:`text-white flex items-center gap-1 min-w-0 col-span-2 sm:col-span-1`,children:[be&&e.group_id!=null&&e.group?e.group.on_rack?(0,G.jsx)(`select`,{value:Se[e.group_id]??``,onChange:t=>L(e.group_id,Number(t.target.value)),disabled:!S,title:C(`printModal.rackPositionTooltip`),"aria-label":C(`printModal.rackPosition`),className:`shrink-0 bg-bambu-dark-tertiary text-white text-[10px] font-bold rounded px-1 py-0.5 border border-bambu-dark-tertiary focus:border-bambu-green outline-none disabled:opacity-60`,children:ht(A?.nozzle_rack,e.group,C).map(e=>(0,G.jsxs)(`option`,{value:e.position,disabled:!e.eligible,title:e.reason,children:[`R`,e.position,e.diameter?` · ${e.diameter}`:``]},e.position))}):(0,G.jsx)(`span`,{className:`inline-flex items-center justify-center w-3.5 h-3.5 rounded text-[9px] font-bold leading-none bg-bambu-gray/20 text-bambu-gray shrink-0`,title:C(`printModal.leftNozzleTooltip`),children:C(`printModal.leftNozzle`)}):ve&&e.nozzle_id!=null?(0,G.jsx)(`span`,{className:`inline-flex items-center justify-center w-3.5 h-3.5 rounded text-[9px] font-bold leading-none bg-bambu-gray/20 text-bambu-gray shrink-0`,title:e.nozzle_id===1?C(`printModal.leftNozzleTooltip`):C(`printModal.rightNozzleTooltip`),children:e.nozzle_id===1?C(`printModal.leftNozzle`):C(`printModal.rightNozzle`)}):null,(0,G.jsx)(`span`,{className:`truncate min-w-0`,title:i,children:i}),(0,G.jsxs)(`span`,{className:`text-bambu-gray shrink-0 whitespace-nowrap`,children:[`(`,e.used_grams,`g)`]})]}),(0,G.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,G.jsx)(lt,{value:e.loaded?.globalTrayId==null?``:String(e.loaded.globalTrayId),onChange:e=>Ee(n,e),placeholder:`-- ${C(`printModal.selectSlot`)} --`,ariaLabel:C(`printModal.slotForFilament`,{name:i}),exactMatchLabel:C(`printModal.exactColorMatch`),className:`${e.status===`match`?`border-bambu-green/50 text-bambu-green`:e.status===`type_only`?`border-yellow-500 dark:border-yellow-400/50 text-yellow-700 dark:text-yellow-400`:`border-orange-500 dark:border-orange-400/50 text-orange-700 dark:text-orange-400`} ${e.isManual?`ring-1 ring-blue-400/50`:``}`,title:e.isManual?C(`printModal.manuallySelected`):C(`printModal.autoMatched`),options:le.map(t=>{let n=N.get(t.globalTrayId),r=n==null?``:C(`printModal.slotRemainingShort`,{grams:n,defaultValue:` - ${n}g left`}),i=we(t.amsId),a=i==null?``:` [${De[i]}]`;return{value:String(t.globalTrayId),label:`${t.label}: ${t.spoolName||t.traySubBrands||t.type} (${t.colorName})`,meta:`${r}${a}`,rgba:t.color,extraColors:t.extraColors,effectType:t.effectType,subtype:t.spoolSubtype,hex:ut(t.color),exactMatch:F(e.color)!==``&&F(t.color)===F(e.color)}})}),e.status===`match`?(0,G.jsx)(h,{className:`w-3 h-3 text-bambu-green`}):e.status===`type_only`?(0,G.jsx)(`span`,{title:o&&s?C(`printModal.sameTypeDifferentColorDetail`,{required:o,loaded:s}):C(`printModal.sameTypeDifferentColor`),children:(0,G.jsx)(O,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`})}):(0,G.jsx)(`span`,{title:C(`printModal.filamentTypeNotLoaded`),children:(0,G.jsx)(O,{className:`w-3 h-3 text-orange-600 dark:text-orange-400`})})]}),r&&(0,G.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs text-bambu-gray cursor-pointer select-none pl-5`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:m?.[n]??!1,onChange:e=>v(n,e.target.checked),className:`accent-bambu-green w-3 h-3`}),(0,G.jsx)(w,{className:`w-3 h-3`}),C(`printModal.forceColorMatch`)]})]},t)}),(0,G.jsxs)(`div`,{className:`text-xs text-bambu-gray`,children:[C(`printModal.totalCost`),` `,(0,G.jsx)(`span`,{className:`text-white`,children:P>0||he?`${d}${P.toFixed(2)}`:`N/A`}),u>1&&P>0&&(0,G.jsx)(`span`,{className:`ml-2`,children:C(`printModal.totalCostForQuantity`,`total: {{cost}}`,{cost:`${d}${ge.toFixed(2)}`})})]}),I&&(0,G.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:C(`printModal.insufficientBudget`,`Insufficient budget for this cost center.`)}),de&&(0,G.jsx)(`p`,{className:`text-xs text-orange-700 dark:text-orange-400 mt-2`,children:C(`printModal.requiredTypeNotInPrinter`)})]})]})}function vt({filamentReqs:e,availableFilaments:t,overrides:r,onChange:i,forceColorMatch:a,onForceColorMatchChange:o,plateLabel:s,showHint:c=!0}){let{t:l}=n(),u=nt(e?.filaments),d=(0,H.useMemo)(()=>{let e={};for(let n of t){let t=Ee(n.type);e[t]||(e[t]=[]),e[t].push(n)}return e},[t]),f=e?.filaments;if(!f||f.length===0||t.length===0)return null;let p=(e,t)=>{if(t===``){let t={...r};delete t[e],i(t)}else{let[n,a]=t.split(`|`);i({...r,[e]:{type:n,color:a}})}};return(0,G.jsxs)(`div`,{className:`mb-4`,children:[(0,G.jsx)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray mb-2`,children:(0,G.jsx)(`span`,{children:s?`${l(`printModal.filamentOverride`)} — ${s}`:l(`printModal.filamentOverride`)})}),c&&(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:l(`printModal.filamentOverrideHint`)}),(0,G.jsx)(`div`,{className:`bg-bambu-dark rounded-lg p-3 space-y-2`,children:f.map((e,t)=>{let n=r[e.slot_id],i=!!n,s=d[Ee(e.type)]||[],c=e.nozzle_id==null?s:s.filter(t=>t.extruder_id==null||t.extruder_id===e.nozzle_id),{resolvedName:f,colorLabel:m}=u[t]??{resolvedName:e.type,colorLabel:Ae(e.color)};return(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsxs)(`div`,{className:`grid items-center gap-2 text-xs grid-cols-[16px_minmax(0,1fr)_20px] sm:grid-cols-[16px_minmax(70px,1fr)_auto_2fr_20px]`,children:[(0,G.jsx)(`span`,{title:`${l(`printModal.originalFilament`)}: ${f} - ${m}`,children:(0,G.jsx)(Re,{className:`w-3 h-3`,fill:e.color,stroke:e.color})}),(0,G.jsxs)(`span`,{className:`text-white truncate col-span-2 sm:col-span-1`,children:[f,` `,(0,G.jsxs)(`span`,{className:`text-bambu-gray`,children:[`(`,e.used_grams,`g)`]})]}),(0,G.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,G.jsx)(lt,{value:i?`${n.type}|${n.color}`:``,onChange:t=>p(e.slot_id,t),placeholder:`${l(`printModal.originalFilament`)}: ${f} (${m})`,placeholderOption:{rgba:e.color,hex:ut(e.color)},disabled:c.length===0,ariaLabel:l(`printModal.overrideForFilament`,{name:f}),exactMatchLabel:l(`printModal.exactColorMatch`),className:i?`border-blue-500/50 dark:border-blue-400/50 text-blue-700 dark:text-blue-400`:`border-bambu-gray/30 text-bambu-gray`,options:c.map((t,n)=>({value:`${t.type}|${t.color}`,key:`${t.type}-${t.color}-${t.tray_sub_brands}-${n}`,label:`${t.tray_sub_brands||t.type} (${Ae(t.color,t.tray_sub_brands,t.tray_info_idx)})`,rgba:t.color,hex:ut(t.color),exactMatch:F(e.color)!==``&&F(t.color)===F(e.color)}))}),i?(0,G.jsx)(`button`,{type:`button`,onClick:()=>p(e.slot_id,``),className:`text-bambu-gray hover:text-white transition-colors`,title:l(`printModal.resetToOriginal`),children:(0,G.jsx)(re,{className:`w-3 h-3`})}):(0,G.jsx)(`span`,{className:`w-3`})]}),(0,G.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs text-bambu-gray cursor-pointer select-none pl-5`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:a?.[e.slot_id]??!1,onChange:t=>o?.(e.slot_id,t.target.checked),className:`accent-bambu-green w-3 h-3`}),(0,G.jsx)(w,{className:`w-3 h-3`}),l(`printModal.forceColorMatch`)]})]},e.slot_id)})})]})}function yt({plates:e,isMultiPlate:t,selectedPlates:r,onToggle:i,onSelectAll:a,onDeselectAll:s,multiSelect:c,quantities:l,onQuantityChange:u}){let{t:d}=n(),f=(0,H.useRef)(null),p=(0,H.useRef)(!1),m=t&&e.length>1;(0,H.useEffect)(()=>{p.current||!m||!f.current||(p.current=!0,f.current.scrollIntoView?.({block:`nearest`}))},[m,r]);let g=e.find(e=>r.has(e.index))?.index;if(!t||e.length<=1)return null;let _=r.size===e.length,v=!!l&&!!u,y=v?e.reduce((e,t)=>r.has(t.index)?e+(l[t.index]??1):e,0):0;return(0,G.jsxs)(`div`,{className:`mb-4`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,G.jsx)(C,{className:`w-4 h-4 text-bambu-gray`}),(0,G.jsxs)(`span`,{className:`text-sm text-bambu-gray`,children:[`Select Plate`,c?`s`:``,` to Print`]}),r.size===0&&(0,G.jsxs)(`span`,{className:`text-xs text-orange-700 dark:text-orange-400 flex items-center gap-1`,children:[(0,G.jsx)(O,{className:`w-3 h-3`}),`Selection required`]}),c&&a&&s&&(0,G.jsx)(`button`,{type:`button`,onClick:_?s:a,className:`ml-auto text-xs px-2 py-0.5 rounded-full border transition-colors ${_?`border-bambu-green bg-bambu-green/10 text-bambu-green`:`border-bambu-dark-tertiary text-bambu-gray hover:border-bambu-gray`}`,children:_?d(`queue.deselectAll`):d(`queue.selectAllPlates`,{count:e.length})})]}),(0,G.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:e.map(e=>{let t=r.has(e.index);return(0,G.jsxs)(`div`,{ref:e.index===g?f:void 0,className:`flex items-center gap-2 p-2 rounded-lg border transition-colors ${t?`border-bambu-green bg-bambu-green/10`:`border-bambu-dark-tertiary bg-bambu-dark hover:border-bambu-gray`}`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>i(e.index),className:`flex items-center gap-2 text-left min-w-0 flex-1`,children:[c&&(t?(0,G.jsx)(E,{className:`w-4 h-4 text-bambu-green flex-shrink-0`}):(0,G.jsx)(D,{className:`w-4 h-4 text-bambu-gray flex-shrink-0`})),e.has_thumbnail&&e.thumbnail_url!=null?(0,G.jsx)(`img`,{src:o(e.thumbnail_url),alt:`Plate ${e.index}`,className:`w-10 h-10 rounded object-cover bg-bambu-dark-tertiary`}):(0,G.jsx)(`div`,{className:`w-10 h-10 rounded bg-bambu-dark-tertiary flex items-center justify-center`,children:(0,G.jsx)(C,{className:`w-5 h-5 text-bambu-gray`})}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,G.jsx)(`p`,{className:`text-sm text-white font-medium truncate`,children:e.name||`Plate ${e.index}`}),(0,G.jsxs)(`p`,{className:`text-xs text-bambu-gray truncate`,children:[e.objects.length>0?e.objects.slice(0,3).join(`, `)+(e.objects.length>3?`...`:``):`${e.filaments.length} filament${e.filaments.length===1?``:`s`}`,e.print_time_seconds==null?``:` • ${M(e.print_time_seconds)}`]}),(()=>{let t=it(e.bed_type);return t?(0,G.jsxs)(`p`,{className:`text-xs text-bambu-gray flex items-center gap-1 mt-0.5 truncate`,title:t.label,children:[(0,G.jsx)(`img`,{src:t.icon,alt:``,className:`w-3.5 h-3.5 object-contain flex-shrink-0`}),(0,G.jsx)(`span`,{className:`truncate`,children:t.label})]}):null})()]}),!c&&t&&(0,G.jsx)(h,{className:`w-4 h-4 text-bambu-green flex-shrink-0`})]}),v&&t&&(0,G.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[(0,G.jsx)(`span`,{className:`text-xs text-bambu-gray`,"aria-hidden":`true`,children:`×`}),(0,G.jsx)(Fe,{min:1,max:999,value:l[e.index]??1,"aria-label":d(`queue.plateQuantityLabel`,{plate:e.name||d(`queue.plateNumber`,{index:e.index})}),onChange:t=>u(e.index,t),fallback:1,className:`w-14 px-1.5 py-1 text-sm bg-bambu-dark border border-bambu-dark-tertiary rounded text-white text-center focus:outline-none focus:ring-1 focus:ring-bambu-green`})]})]},e.index)})}),v&&y>r.size&&(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray mt-2`,children:d(`queue.plateQuantityTotal`,{count:y})})]})}var q=new Set([`IDLE`,`FINISH`,`FAILED`]);function bt({printerResult:e,filamentReqs:t,onUpdateConfig:n}){let i=c(),{data:a}=Ne(),[o,s]=(0,H.useState)(!1),l=(t,r)=>{if(t<=0)return;let i={...e.config.manualMappings};r===``?delete i[t]:i[t]=parseInt(r,10),n({useDefault:!1,manualMappings:i,autoConfigured:!1})},u=async()=>{s(!0);try{await r.refreshPrinterStatus(e.printerId),await new Promise(e=>setTimeout(e,500)),await i.refetchQueries({queryKey:[`printer-status`,e.printerId]})}finally{s(!1)}},d=t.map(t=>{let n=t.slot_id||0,r=e.config.manualMappings[n],i,o=!1;if(r!==void 0)i=e.loadedFilaments.find(e=>e.globalTrayId===r),o=!0;else{let n=new Set(Object.values(e.config.manualMappings));i=Te(t,e.loadedFilaments,n,xe(a?.prefer_lowest_filament,e.status?.ams_filament_backup),e.inventoryByTrayId)}let s=`mismatch`;if(i){let e=z(i.type,t.type),n=F(i.color)===F(t.color)||R(i.color,t.color);e&&n?s=`match`:e&&(s=`type_only`)}return{req:t,loaded:i,status:s,isManual:o}});return(0,G.jsxs)(`div`,{className:`mt-2 bg-bambu-dark rounded-lg p-3 space-y-2`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,G.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Custom slot mapping`}),(0,G.jsxs)(`button`,{type:`button`,onClick:u,className:`flex items-center gap-1 px-2 py-0.5 text-xs rounded border border-bambu-gray/30 hover:border-bambu-gray hover:bg-bambu-dark-tertiary transition-colors text-bambu-gray hover:text-white`,disabled:o,children:[(0,G.jsx)(ne,{className:`w-3 h-3 ${o?`animate-spin`:``}`}),(0,G.jsx)(`span`,{children:`Re-read`})]})]}),d.map(({req:t,loaded:n,status:r,isManual:i},a)=>(0,G.jsxs)(`div`,{className:`grid items-center gap-2 text-xs grid-cols-[16px_minmax(0,1fr)_16px] sm:grid-cols-[16px_minmax(70px,1fr)_auto_2fr_16px]`,children:[(0,G.jsx)(`span`,{title:`Required: ${t.type} - ${Ae(t.color)}`,children:(0,G.jsx)(Re,{className:`w-3 h-3`,fill:t.color,stroke:t.color})}),(0,G.jsxs)(`span`,{className:`text-white flex items-center gap-1 min-w-0 col-span-2 sm:col-span-1`,children:[(0,G.jsx)(`span`,{className:`truncate min-w-0`,title:t.type,children:t.type}),(0,G.jsxs)(`span`,{className:`text-bambu-gray shrink-0 whitespace-nowrap`,children:[`(`,t.used_grams,`g)`]})]}),(0,G.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,G.jsxs)(`select`,{value:n?.globalTrayId??``,onChange:e=>l(t.slot_id||0,e.target.value),className:`flex-1 min-w-0 px-2 py-1 rounded border text-xs bg-bambu-dark-secondary focus:outline-none focus:ring-1 focus:ring-bambu-green ${r===`match`?`border-bambu-green/50 text-bambu-green`:r===`type_only`?`border-yellow-500 dark:border-yellow-400/50 text-yellow-700 dark:text-yellow-400`:`border-orange-500 dark:border-orange-400/50 text-orange-700 dark:text-orange-400`} ${i?`ring-1 ring-blue-400/50`:``}`,title:i?`Manually selected`:`Auto-matched`,children:[(0,G.jsx)(`option`,{value:``,className:`bg-bambu-dark text-bambu-gray`,children:`-- Select slot --`}),we(e.loadedFilaments,t.nozzle_id).map(e=>(0,G.jsxs)(`option`,{value:e.globalTrayId,className:`bg-bambu-dark text-white`,children:[e.label,`: `,e.traySubBrands||e.type,` (`,e.colorName,`)`]},e.globalTrayId))]}),r===`match`?(0,G.jsx)(h,{className:`w-3 h-3 text-bambu-green`}):r===`type_only`?(0,G.jsx)(`span`,{title:`Same type, different color`,children:(0,G.jsx)(O,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`})}):(0,G.jsx)(`span`,{title:`Filament type not loaded`,children:(0,G.jsx)(O,{className:`w-3 h-3 text-orange-600 dark:text-orange-400`})})]},a))]})}function xt({printers:e,selectedPrinterIds:t,onMultiSelect:n,isLoading:i=!1,allowMultiple:a=!1,showInactive:o=!1,disableBusy:s=!1,printerMappingResults:c,filamentReqs:l,onAutoConfigurePrinter:u,onUpdatePrinterConfig:f,assignmentMode:p=`printer`,onAssignmentModeChange:m,targetModel:g,onTargetModelChange:_,targetLocation:y,onTargetLocationChange:b,slicedForModel:x}){let[S,C]=(0,H.useState)(!1),w=o?e:e.filter(e=>e.is_active),te=d({queries:w.map(e=>({queryKey:[`printerStatus`,e.id],queryFn:()=>r.getPrinterStatus(e.id),staleTime:5e3}))}),re=(0,H.useMemo)(()=>{let e=new Map;return w.forEach((t,n)=>{let r=te[n];r?.data&&e.set(t.id,r.data)}),e},[w,te]),ie=e=>{let t=re.get(e);return t?!t.connected||!q.has(t.state??``):!1},E=e=>{let t=re.get(e);if(!t)return null;if(!t.connected)return`Offline`;let n=t.state;return n?n===`RUNNING`?t.stg_cur_name||`Printing`:n===`PREPARE`?`Preparing`:n===`PAUSE`?`Paused`:n===`IDLE`?`Idle`:n===`FINISH`?`Finished`:n===`FAILED`?`Failed`:n:null},D=(0,H.useMemo)(()=>{if(p!==`printer`||!x||S)return w;let e=w.filter(e=>e.model===x);return e.length>0?e:w},[w,p,x,S]),A=w.length-D.length,oe=(0,H.useMemo)(()=>{let e=w.map(e=>e.model).filter(e=>!!e);return[...new Set(e)].sort()},[w]),j=(0,H.useMemo)(()=>{if(!g)return[];let e=w.filter(e=>e.model===g&&e.location).map(e=>e.location).filter(e=>!!e);return[...new Set(e)].sort()},[w,g]),se=m&&_&&oe.length>0,ce=a&&t.length>1&&c&&l?.filaments&&l.filaments.length>0&&u&&f;if(i)return(0,G.jsx)(`div`,{className:`flex justify-center py-8`,children:(0,G.jsx)(ee,{className:`w-6 h-6 text-bambu-green animate-spin`})});if(D.length===0)return(0,G.jsxs)(`div`,{className:`flex items-center gap-2 text-red-700 dark:text-red-400 text-sm mb-4`,children:[(0,G.jsx)(v,{className:`w-4 h-4`}),`No `,o?``:`active `,`printers available`]});let le=e=>{s&&ie(e)||(a?t.includes(e)?n(t.filter(t=>t!==e)):n([...t,e]):n([e]))},ue=()=>{n((s?D.filter(e=>!ie(e.id)):D).map(e=>e.id))},de=()=>{n([])},fe=(e,t,n)=>{n.stopPropagation(),!(!u||!f)&&(t?u(e):f(e,{useDefault:!0,manualMappings:{},autoConfigured:!1}))},pe=e=>t.includes(e),M=t.length,N=e=>c?.find(t=>t.printerId===e);return(0,G.jsxs)(`div`,{className:`space-y-2 mb-6`,children:[se&&(0,G.jsxs)(`div`,{className:`flex gap-2 mb-4`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{m(`printer`),_(null)},className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-lg border transition-colors ${p===`printer`?`border-bambu-green bg-bambu-green/10 text-white`:`border-bambu-dark-tertiary bg-bambu-dark text-bambu-gray hover:border-bambu-gray`}`,children:[(0,G.jsx)(T,{className:`w-4 h-4`}),(0,G.jsx)(`span`,{className:`text-sm`,children:`Specific Printer`})]}),(0,G.jsxs)(`button`,{type:`button`,onClick:()=>{m(`model`),n([]),_(x&&oe.includes(x)?x:null)},className:`flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-lg border transition-colors ${p===`model`?`border-bambu-green bg-bambu-green/10 text-white`:`border-bambu-dark-tertiary bg-bambu-dark text-bambu-gray hover:border-bambu-gray`}`,children:[(0,G.jsx)(k,{className:`w-4 h-4`}),(0,G.jsxs)(`span`,{className:`text-sm`,children:[`Any `,(p===`model`?g:null)||x||`Model`]})]})]}),p===`model`&&se&&(0,G.jsxs)(`div`,{className:`space-y-3 mb-4`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:[`Target Model`,x&&(0,G.jsxs)(`span`,{className:`ml-2 text-bambu-gray/70`,children:[`(sliced for `,x,`)`]})]}),(0,G.jsxs)(`select`,{value:g||``,onChange:e=>{_(e.target.value||null),b&&b(null)},className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,children:[(0,G.jsx)(`option`,{value:``,children:`Select a model...`}),oe.map(e=>{let t=Ie(x,e);return(0,G.jsxs)(`option`,{value:e,disabled:!t,children:[e,t?``:` — incompatible with ${x} G-code`]},e)})]})]}),x&&g&&g!==x&&(Ie(x,g)?(0,G.jsxs)(`div`,{className:`p-3 bg-yellow-50 dark:bg-yellow-500/10 border border-yellow-300 dark:border-yellow-500/30 rounded-lg flex items-center gap-2`,children:[(0,G.jsx)(O,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,G.jsxs)(`span`,{className:`text-sm text-yellow-700 dark:text-yellow-400`,children:[`File was sliced for `,x,`, but will be dispatched to a `,g,` printer`]})]}):(0,G.jsxs)(`div`,{className:`p-3 bg-red-50 dark:bg-red-500/10 border border-red-300 dark:border-red-500/30 rounded-lg flex items-center gap-2`,children:[(0,G.jsx)(v,{className:`w-4 h-4 text-red-600 dark:text-red-400 flex-shrink-0`}),(0,G.jsxs)(`span`,{className:`text-sm text-red-700 dark:text-red-400`,children:[`File was sliced for `,x,` and cannot be dispatched to `,g,` printers — select a compatible model`]})]})),g&&j.length>0&&b&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:`Location Filter (optional)`}),(0,G.jsxs)(`select`,{value:y||``,onChange:e=>b(e.target.value||null),className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,children:[(0,G.jsx)(`option`,{value:``,children:`Any location`}),j.map(e=>(0,G.jsx)(`option`,{value:e,children:e},e))]})]}),g&&(0,G.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[`Scheduler will assign to first available idle `,g,` printer`,y?` in ${y}`:``]})]}),p===`printer`&&a&&D.length>1&&(0,G.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-bambu-gray mb-2`,children:[(0,G.jsx)(`span`,{children:M===0?`Select printers`:`${M} printer${M===1?``:`s`} selected`}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[M<D.length&&(0,G.jsx)(`button`,{type:`button`,onClick:ue,className:`text-bambu-green hover:text-bambu-green/80 transition-colors`,children:`Select all`}),M>0&&(0,G.jsx)(`button`,{type:`button`,onClick:de,className:`text-bambu-gray hover:text-white transition-colors`,children:`Clear`})]})]}),p===`printer`&&D.map(e=>{let t=pe(e.id),n=N(e.id),r=n&&!n.config.useDefault,i=ie(e.id),o=s&&i,c=E(e.id);return(0,G.jsxs)(`div`,{children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>le(e.id),disabled:o,className:`w-full flex items-center gap-3 p-3 rounded-lg border transition-colors ${o?`border-bambu-dark-tertiary bg-bambu-dark opacity-50 cursor-not-allowed`:t?`border-bambu-green bg-bambu-green/10`:`border-bambu-dark-tertiary bg-bambu-dark hover:border-bambu-gray`} ${e.is_active?``:`opacity-60`}`,children:[(0,G.jsx)(`div`,{className:`p-2 rounded-lg ${o?`bg-bambu-dark-tertiary`:t?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,G.jsx)(T,{className:`w-5 h-5 ${o?`text-bambu-gray/50`:t?`text-bambu-green`:`text-bambu-gray`}`})}),(0,G.jsxs)(`div`,{className:`text-left flex-1`,children:[(0,G.jsxs)(`p`,{className:`font-medium ${o?`text-bambu-gray`:`text-white`}`,children:[e.name,!e.is_active&&(0,G.jsx)(`span`,{className:`text-bambu-gray text-xs ml-2`,children:`(inactive)`})]}),(0,G.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[e.model||`Unknown model`,` • `,e.ip_address]})]}),c&&(0,G.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${i?`bg-yellow-100 dark:bg-yellow-500/20 text-yellow-700 dark:text-yellow-400`:`bg-bambu-green/20 text-bambu-green`}`,children:c}),a&&(0,G.jsx)(`div`,{className:`w-5 h-5 rounded border-2 flex items-center justify-center transition-colors ${o?`border-bambu-gray/30`:t?`bg-bambu-green border-bambu-green`:`border-bambu-gray/50`}`,children:t&&(0,G.jsx)(h,{className:`w-3 h-3 text-white`})})]}),t&&ce&&n&&(0,G.jsxs)(`div`,{className:`ml-4 mt-2 mb-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,onClick:e=>e.stopPropagation(),children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:r,onChange:t=>fe(e.id,t.target.checked,t),className:`w-3.5 h-3.5 rounded border-bambu-gray/30 bg-bambu-dark-secondary text-bambu-green focus:ring-bambu-green focus:ring-offset-0`}),(0,G.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Custom mapping`})]}),(0,G.jsxs)(`span`,{className:`text-xs ml-2 ${n.matchStatus===`full`?`text-bambu-green`:n.matchStatus===`partial`?`text-yellow-700 dark:text-yellow-400`:`text-orange-700 dark:text-orange-400`}`,children:[`(`,n.exactMatches,`/`,n.totalSlots,` matched)`]}),n.isLoading&&(0,G.jsx)(ne,{className:`w-3 h-3 text-bambu-gray animate-spin`}),r&&(0,G.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),u(e.id)},className:`ml-auto flex items-center gap-1 px-2 py-0.5 text-xs rounded border border-bambu-gray/30 hover:border-bambu-gray hover:bg-bambu-dark-tertiary transition-colors text-bambu-gray hover:text-white`,children:[(0,G.jsx)(ae,{className:`w-3 h-3`}),`Auto`]})]}),r&&(0,G.jsx)(bt,{printerResult:n,filamentReqs:l.filaments,onUpdateConfig:t=>f(e.id,t)})]})]},e.id)}),p===`printer`&&A>0&&!S&&(0,G.jsxs)(`button`,{type:`button`,onClick:()=>C(!0),className:`text-xs text-bambu-gray hover:text-white transition-colors mt-2 flex items-center gap-1`,children:[(0,G.jsx)(O,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`}),A,` other printer`,A>1?`s`:``,` hidden (different model) —`,(0,G.jsx)(`span`,{className:`underline`,children:`show all`})]}),p===`printer`&&S&&x&&(0,G.jsx)(`button`,{type:`button`,onClick:()=>C(!1),className:`text-xs text-bambu-gray hover:text-white transition-colors mt-2`,children:(0,G.jsxs)(`span`,{className:`underline`,children:[`Show only `,x,` printers`]})}),p===`printer`&&M===0&&(0,G.jsxs)(`p`,{className:`text-xs text-orange-700 dark:text-orange-400 mt-1 flex items-center gap-1`,children:[(0,G.jsx)(v,{className:`w-3 h-3`}),`Select at least one printer`]}),p===`model`&&!g&&(0,G.jsxs)(`p`,{className:`text-xs text-orange-700 dark:text-orange-400 mt-1 flex items-center gap-1`,children:[(0,G.jsx)(v,{className:`w-3 h-3`}),`Select a target printer model`]})]})}var St=[`off`,`auto`,`on`],Ct={off:`bg-red-500 text-white`,auto:`bg-blue-500 text-white`,on:`bg-bambu-green text-white`},wt=`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`,J=[`off`,`on`];function Tt({options:e,onChange:t,defaultExpanded:r=!1,showDualNozzleOptions:i=!1}){let{t:a}=n(),[o,s]=(0,H.useState)(r),c=[{key:`bed_levelling`,label:a(`settings.defaultBedLevelling`),desc:a(`settings.defaultBedLevellingDesc`),tristate:!0},{key:`flow_cali`,label:a(`settings.defaultFlowCali`),desc:a(`settings.defaultFlowCaliDesc`),tristate:!0},{key:`vibration_cali`,label:a(`settings.defaultVibrationCali`),desc:a(`settings.defaultVibrationCaliDesc`)},{key:`layer_inspect`,label:a(`settings.defaultLayerInspect`),desc:a(`settings.defaultLayerInspectDesc`)},{key:`timelapse`,label:a(`settings.defaultTimelapse`),desc:a(`settings.defaultTimelapseDesc`)},{key:`nozzle_offset_cali`,label:a(`settings.defaultNozzleOffsetCali`),desc:a(`settings.defaultNozzleOffsetCaliDesc`),dualNozzleOnly:!0,tristate:!0},{key:`confirm_outcome`,label:a(`settings.defaultConfirmOutcome`),desc:a(`settings.defaultConfirmOutcomeDesc`)}].filter(e=>!e.dualNozzleOnly||i),l=(n,r)=>{t({...e,[n]:r})},u=(n,r)=>{t({...e,[n]:r})},d=n=>{t({...e,preheat_override:n,...n===`off`?{preheat_chamber_target_override:null}:{}})},f=n=>{if(n===``){t({...e,preheat_chamber_target_override:null});return}let r=parseInt(n,10);Number.isNaN(r)||t({...e,preheat_chamber_target_override:Math.max(0,Math.min(65,r))})};return(0,G.jsxs)(`div`,{className:`mb-4`,children:[(0,G.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),className:`flex items-center gap-2 text-sm text-bambu-gray hover:text-white transition-colors w-full`,children:[(0,G.jsx)(ie,{className:`w-4 h-4`}),(0,G.jsx)(`span`,{children:a(`queue.bulkEdit.printOptions`)}),o?(0,G.jsx)(_,{className:`w-4 h-4 ml-auto`}):(0,G.jsx)(g,{className:`w-4 h-4 ml-auto`})]}),o&&(0,G.jsxs)(`div`,{className:`mt-2 bg-bambu-dark rounded-lg p-3 space-y-2`,children:[c.map(({key:t,label:n,desc:r,tristate:i})=>i?(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`text-sm text-white`,children:n}),(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:r})]}),(0,G.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:St.map(n=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>u(t,n),className:`px-2.5 py-1 text-xs rounded transition-colors ${e[t]===n?Ct[n]:`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,children:a(`settings.calibrationMode_${n}`)},n))})]},t):(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`span`,{className:`text-sm text-white`,children:n}),(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:r})]}),(0,G.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:J.map(n=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>l(t,n===`on`),className:`px-2.5 py-1 text-xs rounded transition-colors ${(e[t]?`on`:`off`)===n?Ct[n]:`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,children:a(`settings.calibrationMode_${n}`)},n))})]},t)),(0,G.jsxs)(`div`,{className:`pt-2 mt-1 border-t border-bambu-dark-tertiary/60`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,G.jsx)(S,{className:`w-3.5 h-3.5 text-amber-600 dark:text-amber-400`}),(0,G.jsx)(`span`,{className:`text-sm text-white`,children:a(`settings.preheatTitle`,`Preheat & Heat Soak`)})]}),(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:a(`settings.preheatPerItemDesc`,`Heat the bed and chamber before this print starts. Defaults to the global Settings → Workflow toggle.`)}),(0,G.jsx)(`div`,{className:`flex gap-1.5 mb-2`,children:[`inherit`,`on`,`off`].map(t=>(0,G.jsx)(`button`,{type:`button`,onClick:()=>d(t),className:`flex-1 px-2 py-1.5 text-xs rounded transition-colors ${e.preheat_override===t?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,children:a(`settings.preheatOverride_${t}`,t===`inherit`?`Inherit`:t===`on`?`On`:`Off`)},t))}),e.preheat_override!==`off`&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`label`,{className:`text-xs text-bambu-gray flex-1`,children:a(`settings.preheatTargetOverride`,`Chamber target override (°C, blank = filament default)`)}),(0,G.jsx)(`input`,{type:`number`,min:0,max:65,step:1,value:e.preheat_chamber_target_override??``,onChange:e=>f(e.target.value),placeholder:`—`,className:`w-16 px-2 py-1 bg-bambu-dark-tertiary border border-bambu-dark-tertiary rounded text-white text-xs text-right focus:outline-none focus:border-bambu-green`})]}),e.preheat_override!==`off`&&(0,G.jsx)(`p`,{className:`text-[11px] text-bambu-gray mt-1`,children:a(`settings.preheatTargetOverrideHelp`,`0 heats the bed and runs the soak without the chamber. Leave blank and a print with no chamber requirement skips preheat entirely.`)})]})]})]})}function Et({options:e,onChange:t,dateFormat:r=`system`,timeFormat:i=`system`,canControlPrinter:a=!0,showStagger:o=!1,printerCount:s=0,hasGcodeSnippets:c=!1,needsReview:l=!1}){let{t:u}=n(),[d,f]=(0,H.useState)(``),[p,h]=(0,H.useState)(``),[g,_]=(0,H.useState)(!0),[v,y]=(0,H.useState)(!0),S=(0,H.useRef)(null),ee=(0,H.useRef)(!1);(0,H.useEffect)(()=>{if(e.scheduleType!==`scheduled`){ee.current=!1;return}if(!ee.current){ee.current=!0;let n;e.scheduledTime?(n=new Date(e.scheduledTime),isNaN(n.getTime())&&(n=new Date,n.setHours(n.getHours()+1,0,0,0))):(n=new Date,n.setHours(n.getHours()+1,0,0,0),t({...e,scheduledTime:he(n)})),f(P(n,r)),h(de(n,i)),_(!0),y(!0)}},[e.scheduleType,e.scheduledTime,r,i,t,e]);let w=n=>{t({...e,scheduleType:n,requireManualStart:n===`queue`&&e.requireManualStart})},te=(n,i)=>{let a=fe(n,r),o=ue(i);_(!!a),y(!!o),a&&o&&(a.setHours(o.hours,o.minutes,0,0),a>new Date&&t({...e,scheduledTime:he(a)}))},T=e=>{f(e),te(e,p)},ne=e=>{h(e),te(d,e)};return(0,G.jsxs)(`div`,{className:`space-y-4`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-2`,children:u(`printModal.whenToPrint`)}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex-1 px-2 py-2 rounded-lg border text-sm flex items-center justify-center gap-1.5 transition-colors ${e.scheduleType===`asap`?`bg-bambu-green border-bambu-green text-white`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,onClick:()=>w(`asap`),children:[(0,G.jsx)(b,{className:`w-4 h-4`}),u(`printModal.asap`)]}),(0,G.jsxs)(`button`,{type:`button`,className:`flex-1 px-2 py-2 rounded-lg border text-sm flex items-center justify-center gap-1.5 transition-colors ${e.scheduleType===`queue`?`bg-bambu-green border-bambu-green text-white`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,onClick:()=>w(`queue`),children:[(0,G.jsx)(ze,{className:`w-4 h-4`}),u(`printModal.queue`)]}),(0,G.jsxs)(`button`,{type:`button`,className:`flex-1 px-2 py-2 rounded-lg border text-sm flex items-center justify-center gap-1.5 transition-colors ${e.scheduleType===`scheduled`?`bg-bambu-green border-bambu-green text-white`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,onClick:()=>w(`scheduled`),children:[(0,G.jsx)(m,{className:`w-4 h-4`}),u(`printModal.schedule`)]})]})]}),e.scheduleType===`scheduled`&&(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:u(`printModal.dateTime`)}),(0,G.jsxs)(`div`,{className:`flex gap-2`,children:[(0,G.jsxs)(`div`,{className:`flex-1 relative`,children:[(0,G.jsx)(`input`,{type:`text`,className:`w-full px-3 py-2 pr-10 bg-bambu-dark border rounded-lg text-white focus:outline-none ${g?`border-bambu-dark-tertiary focus:border-bambu-green`:`border-red-500`}`,value:d,onChange:e=>T(e.target.value),placeholder:N(r)}),(0,G.jsx)(`button`,{type:`button`,onClick:()=>{S.current?.showPicker()},className:`absolute right-2 top-1/2 -translate-y-1/2 text-bambu-gray hover:text-white`,title:u(`printModal.openCalendar`),children:(0,G.jsx)(m,{className:`w-4 h-4`})}),(0,G.jsx)(`input`,{ref:S,type:`datetime-local`,className:`absolute top-0 left-0 w-0 h-0 opacity-0 pointer-events-none`,value:e.scheduledTime,onChange:n=>{let a=n.target.value;if(a){let n=new Date(a);isNaN(n.getTime())||(f(P(n,r)),h(de(n,i)),_(!0),y(!0),t({...e,scheduledTime:a}))}},tabIndex:-1})]}),(0,G.jsx)(`div`,{className:`w-32`,children:(0,G.jsx)(`input`,{type:`text`,className:`w-full px-3 py-2 bg-bambu-dark border rounded-lg text-white focus:outline-none ${v?`border-bambu-dark-tertiary focus:border-bambu-green`:`border-red-500`}`,value:p,onChange:e=>ne(e.target.value),placeholder:pe(i)})})]}),(!g||!v)&&(0,G.jsx)(`p`,{className:`mt-1 text-xs text-red-700 dark:text-red-400`,children:u(`printModal.invalidDateTime`)})]}),l&&(0,G.jsxs)(`p`,{className:`flex items-start gap-1.5 text-sm text-bambu-gray`,children:[(0,G.jsx)(V,{className:`w-3.5 h-3.5 mt-0.5 flex-shrink-0`}),u(`printModal.awaitingReviewNote`)]}),!l&&e.scheduleType===`queue`&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`input`,{type:`checkbox`,id:`requireManualStart`,checked:e.requireManualStart,onChange:n=>t({...e,requireManualStart:n.target.checked}),className:`rounded border-bambu-dark-tertiary bg-bambu-dark text-bambu-green focus:ring-bambu-green`}),(0,G.jsxs)(`label`,{htmlFor:`requireManualStart`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,G.jsx)(V,{className:`w-3.5 h-3.5`}),u(`printModal.requireManualStart`)]})]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`input`,{type:`checkbox`,id:`requirePrevious`,checked:e.requirePreviousSuccess,onChange:n=>t({...e,requirePreviousSuccess:n.target.checked}),className:`rounded border-bambu-dark-tertiary bg-bambu-dark text-bambu-green focus:ring-bambu-green`}),(0,G.jsx)(`label`,{htmlFor:`requirePrevious`,className:`text-sm text-bambu-gray`,children:u(`printModal.requirePreviousSuccess`)})]}),(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`input`,{type:`checkbox`,id:`autoOffAfter`,checked:e.autoOffAfter,onChange:n=>t({...e,autoOffAfter:n.target.checked}),disabled:!a,className:`rounded border-bambu-dark-tertiary bg-bambu-dark text-bambu-green focus:ring-bambu-green disabled:opacity-50`}),(0,G.jsxs)(`label`,{htmlFor:`autoOffAfter`,className:`text-sm flex items-center gap-1 ${a?`text-bambu-gray`:`text-bambu-gray/50`}`,children:[(0,G.jsx)(Be,{className:`w-3.5 h-3.5`}),u(`printModal.autoOffAfter`)]})]}),c&&(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`input`,{type:`checkbox`,id:`gcodeInjection`,checked:e.gcodeInjection,onChange:n=>t({...e,gcodeInjection:n.target.checked}),className:`rounded border-bambu-dark-tertiary bg-bambu-dark text-bambu-green focus:ring-bambu-green`}),(0,G.jsxs)(`label`,{htmlFor:`gcodeInjection`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,G.jsx)(x,{className:`w-3.5 h-3.5`}),u(`printModal.gcodeInjection`,`Inject auto-print G-code`)]})]}),o&&e.scheduleType!==`queue`&&(0,G.jsxs)(`div`,{className:`space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(`input`,{type:`checkbox`,id:`staggerEnabled`,checked:e.staggerEnabled,onChange:n=>t({...e,staggerEnabled:n.target.checked}),className:`rounded border-bambu-dark-tertiary bg-bambu-dark text-bambu-green focus:ring-bambu-green`}),(0,G.jsxs)(`label`,{htmlFor:`staggerEnabled`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,G.jsx)(C,{className:`w-3.5 h-3.5`}),u(`printModal.staggerPrinterStarts`,`Stagger printer starts`)]})]}),e.staggerEnabled&&(0,G.jsxs)(`div`,{className:`ml-6 space-y-3`,children:[(0,G.jsxs)(`div`,{className:`flex gap-3`,children:[(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:u(`printModal.staggerGroupSize`,`Group size`)}),(0,G.jsx)(Fe,{min:1,max:s,value:e.staggerGroupSize,onChange:n=>t({...e,staggerGroupSize:n}),fallback:1,className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white text-sm focus:outline-none focus:border-bambu-green`})]}),(0,G.jsxs)(`div`,{className:`flex-1`,children:[(0,G.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:u(`printModal.staggerInterval`,`Interval (min)`)}),(0,G.jsx)(Fe,{min:1,max:60,value:e.staggerIntervalMinutes,onChange:n=>t({...e,staggerIntervalMinutes:n}),fallback:1,className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white text-sm focus:outline-none focus:border-bambu-green`})]})]}),s>0&&(()=>{let t=Math.ceil(s/e.staggerGroupSize),n=s%e.staggerGroupSize,r=(t-1)*e.staggerIntervalMinutes;return(0,G.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[u(`printModal.staggerPreview`,`{{printers}} printers → {{groups}} groups of {{size}}, starting every {{interval}} min`,{printers:s,groups:t,size:e.staggerGroupSize,interval:e.staggerIntervalMinutes}),n!==0&&e.staggerGroupSize<s?` (${u(`printModal.staggerLastGroup`,`last group: {{count}}`,{count:n})})`:``,t>1?` (${u(`printModal.staggerTotal`,`total: {{minutes}} min`,{minutes:r})})`:``]})})()]})]}),(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:e.scheduleType===`asap`?u(`printModal.helpAsap`):e.scheduleType===`scheduled`?u(`printModal.helpSchedule`):u(`printModal.helpQueue`)})]})}function Dt({candidates:e,onReorder:t,plateByFile:i,onPlateChange:a,readOnly:o=!1,readOnlyNote:s}){let{t:c}=n(),l=d({queries:o?[]:e.map(e=>({queryKey:[`library-file-plates`,e.id],queryFn:()=>r.getLibraryFilePlates(e.id),staleTime:6e4}))}),u=(0,H.useMemo)(()=>{let t={};return e.forEach((e,n)=>{let r=l[n]?.data;r?.is_multi_plate&&r.plates.length>1&&(t[e.id]=r.plates.map(e=>({index:e.index,name:e.name})))}),t},[e,l]);(0,H.useEffect)(()=>{if(!o)for(let[e,t]of Object.entries(u)){let n=Number(e);i[n]==null&&t.length>0&&a(n,t[0].index)}},[u,i,a,o]);let m=(n,r)=>{if(r<0||r>=e.length)return;let i=[...e],[a]=i.splice(n,1);i.splice(r,0,a),t(i)};return(0,G.jsxs)(`div`,{className:`mb-4`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,G.jsx)(T,{className:`w-4 h-4 text-bambu-gray`}),(0,G.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:c(`printModal.variants.title`)})]}),(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:o?s??c(`printModal.variants.help`):c(`printModal.variants.help`)}),(0,G.jsx)(`div`,{className:`space-y-2`,children:e.map((t,n)=>{let r=u[t.id],s=t.sliced_for_model;return(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded border border-bambu-dark-tertiary p-2`,children:[(0,G.jsxs)(`span`,{className:`text-xs font-mono text-bambu-gray w-5 shrink-0`,children:[n+1,`.`]}),(0,G.jsx)(`span`,{className:`px-2 py-0.5 rounded-full bg-bambu-green/10 text-bambu-green text-xs shrink-0`,children:s||c(`printModal.variants.unknownModel`)}),(0,G.jsx)(`span`,{className:`text-sm text-white truncate min-w-0 flex-1`,title:t.filename,children:t.filename}),r&&(0,G.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-bambu-gray shrink-0`,children:[(0,G.jsx)(C,{className:`w-3 h-3`}),(0,G.jsx)(`select`,{className:`bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded px-1 py-0.5 text-xs text-white`,value:i[t.id]??r[0].index,onChange:e=>a(t.id,Number(e.target.value)),"aria-label":c(`printModal.variants.plateFor`,{filename:t.filename}),children:r.map(e=>(0,G.jsx)(`option`,{value:e.index,children:e.name||c(`printModal.plateN`,{n:e.index})},e.index))})]}),!o&&(0,G.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,G.jsx)(`button`,{type:`button`,onClick:()=>m(n,n-1),disabled:n===0,className:`p-1 rounded text-bambu-gray hover:text-white disabled:opacity-30`,"aria-label":c(`printModal.variants.moveUp`),children:(0,G.jsx)(p,{className:`w-3.5 h-3.5`})}),(0,G.jsx)(`button`,{type:`button`,onClick:()=>m(n,n+1),disabled:n===e.length-1,className:`p-1 rounded text-bambu-gray hover:text-white disabled:opacity-30`,"aria-label":c(`printModal.variants.moveDown`),children:(0,G.jsx)(f,{className:`w-3.5 h-3.5`})})]})]},t.id)})})]})}function Ot({costCenters:e,selectedCostCenterId:t,onChange:r}){let{t:i}=n();if(e.length===0)return null;let a=e.find(e=>e.id===t);return(0,G.jsxs)(`div`,{className:`space-y-1`,children:[(0,G.jsx)(`label`,{htmlFor:`printCostCenter`,className:`text-sm text-bambu-gray`,children:i(`printModal.costCenter`,`Cost center`)}),(0,G.jsx)(`select`,{id:`printCostCenter`,value:t??``,onChange:e=>r(e.target.value?Number(e.target.value):null),className:`w-full px-3 py-2 text-sm bg-bambu-dark border border-bambu-dark-tertiary rounded text-white focus:outline-none focus:ring-1 focus:ring-bambu-green`,children:e.map(e=>(0,G.jsxs)(`option`,{value:e.id,children:[e.name,e.is_private?` (${i(`printModal.personalDefault`,`Personal`)})`:``]},e.id))}),a?.budget_mode===`none`&&(0,G.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`printModal.unlimitedNoBudget`,`Unlimited – no budget limit is set.`)})]})}var Y={bed_levelling:`auto`,flow_cali:`auto`,vibration_cali:!0,layer_inspect:!1,timelapse:!1,nozzle_offset_cali:`auto`,confirm_outcome:!1,preheat_override:`inherit`,preheat_chamber_target_override:null},kt={scheduleType:`asap`,scheduledTime:``,requireManualStart:!1,requirePreviousSuccess:!1,autoOffAfter:!1,gcodeInjection:!1,staggerEnabled:!1,staggerGroupSize:2,staggerIntervalMinutes:5};function At(e,t){let n=e=>(e||``).replace(`#`,``).toLowerCase().slice(0,6);return(e.type||``).toUpperCase()===(t.type||``).toUpperCase()&&n(e.color)===n(t.color)}function jt(e,t){let n=e=>{let n=t[e.slot_id];return!!n&&!At(n,e)};return!e?.filaments||!e.filaments.some(n)?e:{...e,filaments:e.filaments.map(e=>n(e)?{...e,type:t[e.slot_id].type,color:t[e.slot_id].color,tray_info_idx:``}:e)}}function X({mode:e,archiveId:t,libraryFileId:i,archiveName:a,queueItem:o,initialSelectedPrinterIds:s,preselectPlateId:f,onClose:p,onSuccess:m,projectId:h,cleanupLibraryAfterDispatch:g,variantFiles:_}){let{t:b}=n(),x=c(),{showToast:S}=y(),{hasPermission:w,hasAnyPermission:ne,user:re}=oe(),ie=!ne(`queue:start_unreviewed`,`queue:update_all`),E=!!i&&!t,D=e===`edit-queue-item`,k=e===`create`&&(_?.length??0)>1,ae=e===`edit-queue-item`&&(o?.variants?.length??0)>1?o.variants.map(e=>({id:e.library_file_id,filename:e.filename,sliced_for_model:e.target_model})):[],ue=ae.length>0,[de,fe]=(0,H.useState)(_??[]),[pe,M]=(0,H.useState)({}),[N,P]=(0,H.useState)(()=>e===`edit-queue-item`&&o?.printer_id?[o.printer_id]:s?.length?s:[]),[F,ge]=(0,H.useState)(()=>e===`edit-queue-item`&&o?.plate_id!=null?new Set([o.plate_id]):e===`create`&&!k&&f!=null?new Set([f]):new Set),I=F.size===1?[...F][0]:null,[_e,ye]=(0,H.useState)(1),[be,Se]=(0,H.useState)({}),[L,Ce]=(0,H.useState)(()=>e===`edit-queue-item`&&o?{bed_levelling:o.bed_levelling??Y.bed_levelling,flow_cali:o.flow_cali??Y.flow_cali,vibration_cali:o.vibration_cali??Y.vibration_cali,layer_inspect:o.layer_inspect??Y.layer_inspect,timelapse:o.timelapse??Y.timelapse,nozzle_offset_cali:o.nozzle_offset_cali??Y.nozzle_offset_cali,confirm_outcome:o.confirm_outcome??Y.confirm_outcome,preheat_override:o.preheat_override??Y.preheat_override,preheat_chamber_target_override:o.preheat_chamber_target_override??Y.preheat_chamber_target_override}:Y),[R,we]=(0,H.useState)(()=>{if(e===`edit-queue-item`&&o){let e=`queue`;o.scheduled_time&&!ve(o.scheduled_time)&&(e=`scheduled`);let t=``;return o.scheduled_time&&!ve(o.scheduled_time)&&(t=he(me(o.scheduled_time)??new Date)),{scheduleType:e,scheduledTime:t,requireManualStart:o.manual_start,requirePreviousSuccess:o.require_previous_success,autoOffAfter:o.auto_off_after,gcodeInjection:o.gcode_injection??!1,staggerEnabled:!1,staggerGroupSize:kt.staggerGroupSize,staggerIntervalMinutes:kt.staggerIntervalMinutes}}return kt}),[Te,Ee]=(0,H.useState)(()=>{if(e===`edit-queue-item`&&o?.ams_mapping&&Array.isArray(o.ams_mapping)){let e={};return o.ams_mapping.forEach((t,n)=>{t!==-1&&(e[n+1]=t)}),e}return{}}),[De,Oe]=(0,H.useState)(()=>e===`edit-queue-item`?o?.printer_id??null:null),[ke,je]=(0,H.useState)({}),[B,Re]=(0,H.useState)(()=>k||e===`edit-queue-item`&&o?.target_model?`model`:`printer`),[V,ze]=(0,H.useState)(()=>e===`edit-queue-item`&&o?.target_model?o.target_model:null),[Be,He]=(0,H.useState)(()=>e===`edit-queue-item`&&o?.target_location?o.target_location:null),[U,We]=(0,H.useState)(()=>e===`edit-queue-item`?o?.cost_center_id??null:null),[Ge,Ye]=(0,H.useState)(o?.estimated_cost??null),[Xe,Ze]=(0,H.useState)({}),[$e,nt]=(0,H.useState)(()=>{if(e===`edit-queue-item`&&o?.filament_overrides){let e={};for(let t of o.filament_overrides)e[t.slot_id]={type:t.type,color:t.color};return e}return{}}),[W,rt]=(0,H.useState)(()=>{if(e===`edit-queue-item`&&o?.filament_overrides){let e={};for(let t of o.filament_overrides)e[t.slot_id]=t.force_color_match===!0;return e}return{}}),[ot]=(0,H.useState)(()=>e===`edit-queue-item`&&o?.printer_id?[o.printer_id]:[]),[st]=(0,H.useState)(()=>e===`edit-queue-item`&&o?o.plate_id:null),[ct,lt]=(0,H.useState)(!1),[ut,dt]=(0,H.useState)({current:0,total:0}),[ft,pt]=(0,H.useState)(null),[mt,ht]=(0,H.useState)(new Set),gt=N.length,K=N.length>0?N[0]:null,{data:q}=Ne(),bt=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!q||bt.current||e===`edit-queue-item`||(bt.current=!0,Ce({bed_levelling:q.default_bed_levelling??Y.bed_levelling,flow_cali:q.default_flow_cali??Y.flow_cali,vibration_cali:q.default_vibration_cali??Y.vibration_cali,layer_inspect:q.default_layer_inspect??Y.layer_inspect,timelapse:q.default_timelapse??Y.timelapse,nozzle_offset_cali:q.default_nozzle_offset_cali??Y.nozzle_offset_cali,confirm_outcome:q.default_confirm_outcome??Y.confirm_outcome,preheat_override:Y.preheat_override,preheat_chamber_target_override:Y.preheat_chamber_target_override}))},[q,e]);let St=(0,H.useRef)(!1);(0,H.useEffect)(()=>{!q||St.current||e===`edit-queue-item`||(St.current=!0,we(e=>({...e,staggerGroupSize:q.stagger_group_size??e.staggerGroupSize,staggerIntervalMinutes:q.stagger_interval_minutes??e.staggerIntervalMinutes})))},[q,e]);let Ct=Me(q?.currency||`USD`),wt=q?.default_filament_cost??0,J=q?.billing_enabled===!0,{data:X,isLoading:Mt}=l({queryKey:[`printers`],queryFn:r.getPrinters}),{data:Nt,isLoading:Pt}=l({queryKey:[`finance`,`cost-centers`,`mine`],queryFn:r.getMyCostCenters,enabled:!!re&&J}),Ft=(0,H.useMemo)(()=>(Nt||[]).filter(e=>e.can_print&&e.is_active),[Nt]),It=(0,H.useMemo)(()=>Ft.find(e=>e.id===U)??null,[Ft,U]);(0,H.useEffect)(()=>{if(Ft.length===0||U!=null&&Ft.some(e=>e.id===U))return;let e=Ft.find(e=>e.is_private);We(e?.id??Ft[0].id)},[Ft,U]);let Lt=d({queries:N.map(e=>({queryKey:[`printer-inventory-remain`,e],queryFn:()=>r.getInventoryRemain(e),staleTime:30*1e3,refetchOnMount:`always`,enabled:N.length>0}))}),Rt=(0,H.useMemo)(()=>{let e=new Map;return N.forEach((t,n)=>{let r=Lt[n]?.data?.inventory_remain_g;if(!r)return;let i=new Map;Object.entries(r).forEach(([e,t])=>{let n=Number(e);Number.isNaN(n)||i.set(n,t)}),e.set(t,i)}),e},[N,Lt]),zt=(0,H.useMemo)(()=>{let e=new Map;return N.forEach((t,n)=>{let r=Lt[n]?.data?.slot_materials;if(!r)return;let i=new Map;r.forEach(e=>i.set(e.global_tray_id,e)),e.set(t,i)}),e},[N,Lt]),{data:Bt,isError:Vt}=l({queryKey:[`archive`,t],queryFn:()=>r.getArchive(t),enabled:!!t&&!E}),{data:Ht,isError:Ut}=l({queryKey:[`library-file`,i],queryFn:()=>r.getLibraryFile(i),enabled:E&&!!i}),Z=Bt?.sliced_for_model||Ht?.sliced_for_model||null,Wt=!!t&&!E&&!Bt&&!Vt||E&&!Ht&&!Ut,Gt=(0,H.useMemo)(()=>E?void 0:at(Bt?.extra_data,K),[E,Bt?.extra_data,K]),{data:Kt,isError:qt}=l({queryKey:[`archive-plates`,t],queryFn:()=>r.getArchivePlates(t),enabled:!!t&&!E,retry:!1}),{data:Jt}=l({queryKey:[`library-file-plates`,i],queryFn:()=>r.getLibraryFilePlates(i),enabled:E&&!!i}),Yt=E?Jt:Kt,{data:Xt,isError:Zt}=l({queryKey:[`archive-filaments`,t,I],queryFn:()=>r.getArchiveFilamentRequirements(t,I??void 0),enabled:!!t&&!E&&(I!==null||!Yt?.is_multi_plate),retry:!1}),{data:Qt}=l({queryKey:[`library-file-filaments`,i,I],queryFn:()=>r.getLibraryFileFilamentRequirements(i,I??void 0),enabled:E&&!!i&&(I!==null||!Yt?.is_multi_plate)}),$t=!E&&(qt||Zt),en=E?Qt:Xt,tn=(0,H.useMemo)(()=>jt(en,$e),[en,$e]),nn=et(),{data:rn}=l({queryKey:[`available-filaments`,V,Be],queryFn:()=>r.getAvailableFilaments(V,Be??void 0),enabled:B===`model`&&!!V}),an=(0,H.useMemo)(()=>Array.from(new Set(de.map(e=>e.sliced_for_model).filter(e=>!!e))),[de]),on=d({queries:k?an.map(e=>({queryKey:[`available-filaments`,e,Be],queryFn:()=>r.getAvailableFilaments(e,Be??void 0)})):[]}),sn=(0,H.useMemo)(()=>{let e=new Set,t=[];for(let n of on)for(let r of n.data??[]){let n=`${r.type}|${r.color}|${r.tray_info_idx}`;e.has(n)||(e.add(n),t.push(r))}return t},[on]),cn=k?sn:rn,{data:ln,isLoading:un}=l({queryKey:[`printer-status`,K],queryFn:()=>r.getPrinterStatus(K),enabled:!!K}),dn=xe(q?.prefer_lowest_filament,ln?.ams_filament_backup),fn=async()=>{if(R.scheduleType!==`asap`||B!==`printer`||N.length===0)return!1;try{return(await Promise.all(N.map(e=>x.fetchQuery({queryKey:[`printer-status`,e],queryFn:()=>r.getPrinterStatus(e),staleTime:0})))).some(e=>!Le(e))}catch{return!0}},{amsMapping:pn}=Je(tn,ln,Te,dn,K?Rt.get(K):void 0),mn=(0,H.useMemo)(()=>[...F].sort((e,t)=>e-t),[F]),Q=F.size>1,hn=d({queries:(Q?mn:[]).map(e=>({queryKey:E?[`library-file-filaments`,i,e]:[`archive-filaments`,t,e],queryFn:()=>E?r.getLibraryFileFilamentRequirements(i,e):r.getArchiveFilamentRequirements(t,e),enabled:E?!!i:!!t,retry:!1}))}),gn=hn.some(e=>e.isPending),_n=hn.some(e=>e.isError),vn=(0,H.useMemo)(()=>{let e=new Map;return mn.forEach((t,n)=>{let r=hn[n]?.data;r&&e.set(t,r)}),e},[mn,hn.map(e=>e.dataUpdatedAt).join(`|`)]),yn=(0,H.useMemo)(()=>{let e=new Map;for(let[t,n]of vn)e.set(t,jt(n,$e)??n);return e},[vn,$e]),[bn,xn]=(0,H.useState)({}),[Sn,Cn]=(0,H.useState)(()=>{if(e===`edit-queue-item`&&o?.nozzle_rack_choice){let e={};for(let[t,n]of Object.entries(o.nozzle_rack_choice)){let r=Number(t);Number.isInteger(r)&&Number.isInteger(n)&&(e[r]=n)}return e}return{}}),[wn,Tn]=(0,H.useState)({}),En=(0,H.useMemo)(()=>{let e=new Map;if(!Q||!K||N.length!==1)return e;let t=Ue(ln),n=ln?.fila_switch?.installed===!0,r=Rt.get(K);for(let i of mn){let a=yn.get(i);if(!a)continue;let o=Ke(a,t,bn[i]??{},dn,r,n);e.set(i,qe(o))}return e},[Q,K,ln,Rt,mn,yn,bn,dn,N.length]),Dn=Qe(N,X,tn,Te,ke,je,q?.prefer_lowest_filament,Rt,De);(0,H.useEffect)(()=>{let e=Yt?.plates;e?.length&&ge(t=>{let n=[...t].filter(t=>e.some(e=>e.index===t));return n.length>0&&n.length===t.size?t:new Set(n.length>0?n:[e[0].index])})},[Yt,F.size]),(0,H.useEffect)(()=>{if(!k||!i)return;let e=pe[i];e!=null&&ge(t=>t.size===1&&t.has(e)?t:new Set([e]))},[k,i,pe]);let On=(0,H.useRef)(!1);(0,H.useEffect)(()=>{if(e===`edit-queue-item`)return;if(N.length>0){On.current=!0;return}let t=X?.filter(e=>e.is_active)||[],n=q?.default_printer_id,r=n!=null&&!k&&B===`printer`&&!Wt?t.find(e=>e.id===n&&(!Z||e.model===Z)):void 0;r&&!On.current?(On.current=!0,P([r.id])):t.length===1&&P([t[0].id])},[e,X,N.length,q?.default_printer_id,k,B,Z,Wt]),(0,H.useEffect)(()=>{if(e===`edit-queue-item`){let e=JSON.stringify(N.sort())!==JSON.stringify(ot.sort());(e||I!==st)&&(Ee({}),xn({}),je({}),ht(new Set)),e&&(Cn({}),Tn({}))}else Ee({}),xn({}),je({}),ht(new Set)},[e,N,I,ot,st]);let[kn,An]=(0,H.useState)(V),[jn,Mn]=(0,H.useState)(I);(0,H.useEffect)(()=>{let t=V!==null&&V!==kn,n=I!==jn;!t&&!n||(t&&An(V),n&&Mn(I),!(t&&!n&&kn===null)&&(e!==`edit-queue-item`||kn!==null)&&(nt({}),rt({})))},[V,I,kn,jn,e]),(0,H.useEffect)(()=>{B!==`model`||V||!Z||X?.some(e=>e.is_active&&e.model===Z)&&ze(Z)},[B,V,Z,X]),(0,H.useEffect)(()=>{if(!q?.per_printer_mapping_expanded||N.length<=1)return;let e=N.filter(e=>{if(mt.has(e))return!1;let t=Dn.printerResults.find(t=>t.printerId===e);return t&&t.status&&!t.isLoading});e.length>0&&(ht(t=>{let n=new Set(t);return e.forEach(e=>n.add(e)),n}),e.forEach(e=>{Dn.autoConfigurePrinter(e)}))},[q?.per_printer_mapping_expanded,N,mt,Dn]),(0,H.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!ct&&p()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[p,ct]);let Nn=Yt?.is_multi_plate??!1,$=Yt?.plates??[],Pn=!k&&Nn&&$.length>1?$.filter(e=>F.has(e.index)).map(e=>{let t=b(`printModal.plateN`,`Plate {{n}}`,{n:e.index}),n=e.name?.trim();return n&&n!==t?`${t} – ${n}`:t}).join(`, `):``,Fn=(0,H.useMemo)(()=>{if(!ft||ft.length===0)return``;let e=ft.map(e=>e.pooled?b(`printModal.insufficientFilamentLinePooled`,{printer:e.printerName,slot:e.slotLabel,required:Math.round(e.requiredGrams),remaining:Math.round(e.remainingGrams)}):b(`printModal.insufficientFilamentLine`,{printer:e.printerName,slot:e.slotLabel,required:Math.round(e.requiredGrams),remaining:Math.round(e.remainingGrams)}));return[b(`printModal.insufficientFilamentMessage`),...e].join(`
  2. `)},[ft,b]),In=u({mutationFn:e=>r.addToQueue(e)}),Ln=u({mutationFn:e=>r.updateQueueItem(o.id,e)}),Rn=(e,t)=>Q?t===null||N.length!==1?void 0:En.get(t):N.length>1||De!==null&&De!==e?Dn.getFinalMapping(e):pn,zn=(t,n,r)=>{if(!(e!==`edit-queue-item`||!Array.isArray(o?.ams_mapping))&&!(t!==o.printer_id||n!==st))return o.ams_mapping[r-1]},Bn=e=>N.length>1?Dn.printerResults.find(t=>t.printerId===e)?.status:ln,Vn=(e,t,n)=>{if(!n)return!1;let r=Q?t==null?void 0:yn.get(t)?.filaments:tn?.filaments;if(!r)return!1;let i=Ue(Bn(e));return r.some(r=>{let a=r.slot_id??0,o=a>0?n[a-1]:void 0;if(o==null||o<0||zn(e,t,a)===o)return!1;let s=i.find(e=>e.globalTrayId===o);return!!s?.type&&!!r.type&&!z(s.type,r.type)})},Hn=ie||(R.scheduleType===`queue`?R.requireManualStart:R.scheduleType===`scheduled`&&!!o?.manual_start),Un=async(n,s)=>{if(n?.preventDefault(),J&&It==null){S(b(`printModal.noPrintableCostCenters`),`error`);return}if(!s?.skipFilamentCheck&&!q?.disable_filament_warnings&&!D&&B===`printer`){let e=[],t=Q?mn.map(e=>({plateId:e,reqs:vn.get(e)?.filaments??[]})):[{plateId:I,reqs:en?.filaments??[]}];if(t.some(e=>e.reqs.length>0)&&zt.size>0)for(let n of N){let r=N.length>1?Dn.printerResults.find(e=>e.printerId===n)?.status:ln,i=Ue(r),a=new Map(i.map(e=>[e.globalTrayId,e.label])),o=zt.get(n),s=X?.find(e=>e.id===n)?.name??`Printer ${n}`;if(!o||o.size===0)continue;let c=new Map;for(let e of t){let t=Rn(n,e.plateId);t&&e.reqs.forEach(e=>{if(!e.slot_id||e.slot_id<=0)return;let n=t[e.slot_id-1];!Number.isFinite(n)||n<0||c.set(n,(c.get(n)??0)+e.used_grams)})}let l=r?.ams_filament_backup===!0,u=e=>`${e.material_key}#${e.extruder}`,d=new Map,f=new Map,p=new Map;if(l){o.forEach(e=>{let t=u(e);d.set(t,(d.get(t)??0)+e.remaining_g),f.set(t,(f.get(t)??0)+1)});for(let[e,t]of c){let n=o.get(e);if(!n)continue;let r=u(n);p.set(r,(p.get(r)??0)+t)}}for(let[t,r]of c){let i=o.get(t);if(!i)continue;let c=a.get(t)??`Tray ${t}`;if(l){let t=u(i),r=d.get(t)??0,a=p.get(t)??0;if(r>=a)continue;e.push({printerId:n,printerName:s,slotLabel:c,requiredGrams:a,remainingGrams:r,pooled:(f.get(t)??1)>1});continue}i.remaining_g>=r||e.push({printerId:n,printerName:s,slotLabel:c,requiredGrams:r,remainingGrams:i.remaining_g})}}if(e.length>0){pt(e);return}}if(B===`printer`&&N.length===0){S(`Please select at least one printer`,`error`);return}if(!k&&B===`model`&&!V){S(`Please select a target printer model`,`error`);return}if(!k&&B===`model`&&!Ie(Z,V)){S(`File was sliced for ${Z} and cannot be dispatched to ${V} printers`,`error`);return}lt(!0);let c=F.size>1?$.filter(e=>F.has(e.index)):[null],l=B===`model`?c.length:N.length*c.length;dt({current:0,total:l});let u={success:0,failed:0,errors:[]},d=new Map((e===`edit-queue-item`?o?.filament_overrides??[]:[]).map(e=>[e.slot_id,e])),f=(e,t,n)=>{let r=d.get(e);return r?.tray_info_idx&&At(r,{type:t,color:n})?{tray_info_idx:r.tray_info_idx}:{}},_=e=>{let t=[];if(e?.filaments)for(let n of e.filaments){let e=$e[n.slot_id],r=W[n.slot_id]??!1,i=e?.type??n.type,a=e?.color??n.color;if(e||r){let o=f(n.slot_id,i,a),s=Ae(a,tt(o.tray_info_idx??(e?void 0:n.tray_info_idx),i,nn));t.push({slot_id:n.slot_id,type:i,color:a,color_name:s,...o,force_color_match:r})}}else for(let[e,{type:n,color:r}]of Object.entries($e)){let i=parseInt(e,10),a=W[i]??!1,o=f(i,n,r),s=Ae(r,tt(o.tray_info_idx,n,nn));t.push({slot_id:i,type:n,color:r,color_name:s,...o,force_color_match:a})}return t.length>0?t:void 0},v=_(en),y=e=>Q&&e!==null?_(vn.get(e)):v,C=(e,t,n)=>{if(N.length!==1)return;let r=(Q?t==null?void 0:bn[t]:De===null||De===e?Te:void 0)?.[n];if(r!=null)return d.get(n)?.force_color_match===!0&&zn(e,t,n)===r?void 0:r},ee=(e,t)=>{let n=e==null?[]:Ue(Bn(e)),r=N.length===1,i=y(t)?.flatMap(i=>{let a=!!$e[i.slot_id];if(!a&&!(i.force_color_match&&r))return[];let o=i.force_color_match&&e!=null?C(e,t,i.slot_id):void 0;if(o==null)return[i];let s=n.find(e=>e.globalTrayId===o);return s?[{slot_id:i.slot_id,type:s.type,color:s.color,color_name:s.colorName,...s.trayInfoIdx?{tray_info_idx:s.trayInfoIdx}:{},force_color_match:!0}]:a?[{...i,force_color_match:!1}]:[]});return i&&i.length>0?i:void 0};if(k){try{await r.addToQueue({variants:de.map(e=>({library_file_id:e.id,plate_id:pe[e.id]??null,filament_overrides:v})),target_location:Be,require_previous_success:R.requirePreviousSuccess,auto_off_after:R.autoOffAfter,gcode_injection:R.gcodeInjection,manual_start:ie||R.scheduleType===`queue`&&R.requireManualStart,scheduled_time:R.scheduleType===`scheduled`&&R.scheduledTime?new Date(R.scheduledTime).toISOString():void 0,quantity:_e,...L,project_id:h??void 0}),S(b(`printModal.variants.queued`,{count:de.length}),`success`),x.invalidateQueries({queryKey:[`queue`]}),m?.(),p()}catch(e){S(e instanceof Error?e.message:String(e),`error`)}finally{lt(!1)}return}let w=c.map((e,t)=>{let n=e?e.index:I;return{plate_id:n,plate_name:e&&e.name||null,quantity_target:Jn(n),sort_order:t}}),te=w.reduce((e,t)=>e+t.quantity_target,0),T=e===`create`&&(c.length>1||te>1)&&(B===`model`||N.length===1),ne=null;if(T)try{let e=(a||``).replace(/\.gcode\.3mf$/i,``).replace(/\.3mf$/i,``),n=c.length>1?`${e||`Batch`} · ${c.length} plates`:`${e||`Batch`} ×${te}`;ne=(await r.createBatch({name:n,archive_id:E?void 0:t,library_file_id:E?i:void 0,plates:w})).id}catch{ne=null}let re=0,O=(e,t=1)=>{R.scheduleType===`asap`&&(e.insert_at_top=!0,e.insert_position=re+1,re+=t)},ae=e=>{let t=e!=null&&Q?wn[e]:Sn;return t&&Object.keys(t).length>0?t:void 0},A=(e,n)=>{let r=n===void 0?I:n,a=r!=null&&Q?Xe[r]??null:Ge;return{printer_id:B===`printer`?e:null,target_model:B===`model`?V:null,target_location:B===`model`?Be:null,filament_overrides:B===`model`?y(r):ee(e,r),archive_id:E?void 0:t,library_file_id:E?i:void 0,require_previous_success:R.requirePreviousSuccess,auto_off_after:R.autoOffAfter,gcode_injection:R.gcodeInjection,manual_start:ie||R.scheduleType===`queue`&&R.requireManualStart,skip_filament_check:e!=null&&s?.acknowledgedPrinters?.includes(e)||e!=null&&Vn(e,r,Rn(e,r))?!0:void 0,ams_mapping:e?Rn(e,r):void 0,nozzle_rack_choice:e?ae(r):void 0,plate_id:r,scheduled_time:R.scheduleType===`scheduled`&&R.scheduledTime?new Date(R.scheduledTime).toISOString():void 0,...L,project_id:h??void 0,cost_center_id:J?U:void 0,estimated_cost:J&&U!=null?a:void 0,batch_id:ne??void 0,cleanup_library_after_dispatch:g}};if(B===`model`){let t=0;for(let n of c){t++,dt({current:t,total:l});let r=n?n.index:I;try{if(e===`edit-queue-item`&&!n){let e={printer_id:null,target_model:V,target_location:Be,filament_overrides:v||null,require_previous_success:R.requirePreviousSuccess,auto_off_after:R.autoOffAfter,gcode_injection:R.gcodeInjection,manual_start:Hn,ams_mapping:void 0,plate_id:r,scheduled_time:R.scheduleType===`scheduled`&&R.scheduledTime?new Date(R.scheduledTime).toISOString():null,...L,cost_center_id:J?U:void 0,estimated_cost:J&&U!=null?Ge:void 0};await Ln.mutateAsync(e)}else{let e=A(null,r),t=Jn(r);t>1&&(e.quantity=t),O(e,t),await In.mutateAsync(e)}u.success++}catch(e){u.failed++;let t=n?n.name||`Plate ${n.index}`:``;u.errors.push(t?`${t}: ${e.message}`:e.message)}}}else{let e=R.staggerEnabled&&!D&&N.length>1,t=e?R.scheduleType===`scheduled`&&R.scheduledTime?new Date(R.scheduledTime).getTime():Date.now():0,n=0;for(let r of c){let i=r?r.index:I;for(let a=0;a<N.length;a++){let o=N[a];n++,dt({current:n,total:l});try{if(D&&n===1){let e=Rn(o,i),t={printer_id:o,target_model:null,target_location:null,filament_overrides:ee(o,i)??null,require_previous_success:R.requirePreviousSuccess,auto_off_after:R.autoOffAfter,gcode_injection:R.gcodeInjection,manual_start:Hn,ams_mapping:e,skip_filament_check:Vn(o,i,e)?!0:void 0,nozzle_rack_choice:ae(i)??null,plate_id:i,scheduled_time:R.scheduleType===`scheduled`&&R.scheduledTime?new Date(R.scheduledTime).toISOString():null,...L,cost_center_id:J?U:void 0,estimated_cost:J&&U!=null?i!=null&&Q?Xe[i]??null:Ge:void 0};await Ln.mutateAsync(t)}else{let n=A(o,i),r=Jn(i);if(r>1&&(n.quantity=r),O(n,r),e){let e=Math.floor(a/R.staggerGroupSize);if(e>0){let r=e*R.staggerIntervalMinutes*6e4;n.scheduled_time=new Date(t+r).toISOString()}}await In.mutateAsync(n)}u.success++}catch(e){u.failed++;let t=X?.find(e=>e.id===o)?.name||`Printer ${o}`,n=r?r.name||`Plate ${r.index}`:``,i=n?`${t} (${n})`:t;u.errors.push(`${i}: ${e.message}`)}}}}if(lt(!1),u.failed===0){if(D)e===`edit-queue-item`&&S(`Queue item updated`);else if(u.success===1){let e=await fn();S(e?b(`queue.printQueuedWillStartWhenIdle`):B===`model`?`Queued for any ${V}`:b(`queue.printQueued`))}else{let e=await fn();S(e?b(`queue.printQueuedWillStartWhenIdle`):b(`queue.itemsQueued`,{count:u.success}))}x.invalidateQueries({queryKey:[`queue`]}),m?.(),p()}else u.success===0?S(`Failed: ${u.errors[0]}`,`error`):(S(`${u.success} succeeded, ${u.failed} failed`,`error`),x.invalidateQueries({queryKey:[`queue`]}))},Wn=ct||Ln.isPending,Gn=(0,H.useMemo)(()=>!(Wn||J&&(Pt||It==null)||B===`printer`&&N.length===0||!k&&B===`model`&&!V||!k&&B===`model`&&!Ie(Z,V)||Nn&&F.size===0||gn||_n||B===`printer`&&N.length===1&&un),[N.length,B,V,Z,Nn,F.size,Wn,gn,_n,un,k,J,Pt,It]),Kn=B===`printer`&&N.length>1?1:_e,qn=e===`create`&&!k&&Nn&&$.length>1,Jn=e=>!qn||e==null?Kn:B===`printer`&&N.length>1?1:Math.max(1,be[e]??1);(0,H.useEffect)(()=>{e===`create`&&R.gcodeInjection&&!Pe(q)&&we(e=>({...e,gcodeInjection:!1}))},[e,q,R.gcodeInjection]);let Yn=D?{title:b(`queue.editQueueItem`),icon:te,submitText:b(`common.save`),submitIcon:te,loadingText:ut.total>1?b(`queue.savingProgress`,{current:ut.current,total:ut.total}):b(`common.saving`)}:{title:b(`common.print`),icon:T,submitText:b(`common.print`),submitIcon:T,loadingText:ut.total>1?b(`queue.addingProgress`,{current:ut.current,total:ut.total}):b(`queue.adding`)},Xn=Yn.icon,Zn=Yn.submitIcon,Qn=K&&F.size<=1&&(E||!Nn||I!==null);(0,H.useEffect)(()=>{(!Qn||$t||N.length!==1)&&Ye(null)},[$t,N.length,Qn]);let $n=!!K&&Q&&N.length===1,er=B===`model`&&(k||!!V)&&!!cn&&cn.length>0,tr=(0,H.useMemo)(()=>new Set([`H2D`,`H2DPRO`,`H2C`,`X2D`]),[]),nr=(0,H.useMemo)(()=>B===`model`?V?tr.has(V.toUpperCase().replace(/[\s-]/g,``)):!1:!X||N.length===0?!1:N.some(e=>X.find(t=>t.id===e)?.nozzle_count===2),[B,V,X,N,tr]);return(0,G.jsxs)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:ct?void 0:p,children:[(0,G.jsx)(se,{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto`,onClick:e=>e.stopPropagation(),children:(0,G.jsxs)(j,{className:`p-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,G.jsx)(Xn,{className:`w-5 h-5 text-bambu-green`}),(0,G.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:Yn.title})]}),(0,G.jsx)(ce,{variant:`ghost`,size:`sm`,onClick:p,disabled:ct,children:(0,G.jsx)(A,{className:`w-5 h-5`})})]}),(0,G.jsxs)(`form`,{onSubmit:Un,className:`p-4 space-y-4`,children:[(0,G.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[(0,G.jsx)(`span`,{className:`block text-bambu-gray mb-1`,children:`Print Job`}),(0,G.jsx)(`span`,{className:`text-white font-medium truncate block`,children:a})]}),(()=>{if(!$.length)return null;let e=it((I==null?$[0]:$.find(e=>e.index===I))?.bed_type);return e?(0,G.jsxs)(`p`,{className:`flex items-center gap-1.5 text-xs text-bambu-gray -mt-2`,title:e.label,children:[(0,G.jsx)(`img`,{src:e.icon,alt:``,className:`w-4 h-4 object-contain flex-shrink-0`}),(0,G.jsx)(`span`,{className:`truncate`,children:e.label})]}):null})(),!k&&(0,G.jsx)(yt,{plates:$,isMultiPlate:Nn,selectedPlates:F,onToggle:e=>{ge(t=>{let n=new Set(t);return D?(n.clear(),n.add(e)):n.has(e)?n.delete(e):n.add(e),n})},onSelectAll:D?void 0:()=>ge(new Set($.map(e=>e.index))),onDeselectAll:D?void 0:()=>ge(new Set),multiSelect:!D,quantities:qn?be:void 0,onQuantityChange:qn?(e,t)=>Se(n=>({...n,[e]:t})):void 0}),k&&(0,G.jsx)(Dt,{candidates:de,onReorder:fe,plateByFile:pe,onPlateChange:(e,t)=>M(n=>({...n,[e]:t}))}),ue&&(0,G.jsx)(Dt,{candidates:ae,readOnly:!0,readOnlyNote:b(`printModal.variants.editNote`),onReorder:()=>{},plateByFile:{},onPlateChange:()=>{}}),!k&&!ue&&!s?.length&&(0,G.jsx)(xt,{printers:X||[],selectedPrinterIds:N,onMultiSelect:P,isLoading:Mt,allowMultiple:!0,showInactive:e===`edit-queue-item`,disableBusy:!1,printerMappingResults:Dn.printerResults,filamentReqs:Q?void 0:tn,onAutoConfigurePrinter:Dn.autoConfigurePrinter,onUpdatePrinterConfig:Dn.updatePrinterConfig,assignmentMode:B,onAssignmentModeChange:Re,targetModel:V,onTargetModelChange:ze,targetLocation:Be,onTargetLocationChange:He,slicedForModel:Z}),er&&!Q&&en&&(0,G.jsx)(vt,{filamentReqs:en,availableFilaments:cn,overrides:$e,onChange:nt,forceColorMatch:W,onForceColorMatchChange:(e,t)=>rt(n=>({...n,[e]:t}))}),er&&Q&&mn.map((e,t)=>{let n=$.find(t=>t.index===e),r=vn.get(e);return r?(0,G.jsx)(vt,{plateLabel:n?.name||b(`printModal.plateN`,`Plate {{n}}`,{n:e}),showHint:t===0,filamentReqs:r,availableFilaments:rn,overrides:$e,onChange:nt,forceColorMatch:W,onForceColorMatchChange:(e,t)=>rt(n=>({...n,[e]:t}))},e):null}),Z&&B===`printer`&&N.length===1&&(()=>{let e=X?.find(e=>e.id===N[0]);return e&&e.model&&Z!==e.model?(0,G.jsxs)(`div`,{className:`p-3 mb-2 bg-yellow-50 dark:bg-yellow-500/10 border border-yellow-300 dark:border-yellow-500/30 rounded-lg flex items-center gap-2`,children:[(0,G.jsx)(O,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,G.jsxs)(`span`,{className:`text-sm text-yellow-700 dark:text-yellow-400`,children:[`File was sliced for `,Z,`, but printing on `,e.model]})]}):null})(),$t&&(0,G.jsxs)(`div`,{className:`flex items-start gap-2 p-3 mb-2 bg-orange-50 dark:bg-orange-500/10 border border-orange-300 dark:border-orange-500/30 rounded-lg text-sm`,children:[(0,G.jsx)(v,{className:`w-4 h-4 text-orange-600 dark:text-orange-400 mt-0.5 flex-shrink-0`}),(0,G.jsx)(`p`,{className:`text-orange-700 dark:text-orange-400`,children:`Archive data unavailable. The source file may have been deleted. Filament mapping is disabled.`})]}),_n&&(0,G.jsxs)(`div`,{className:`flex items-start gap-2 p-3 mb-2 bg-orange-50 dark:bg-orange-500/10 border border-orange-300 dark:border-orange-500/30 rounded-lg text-sm`,children:[(0,G.jsx)(v,{className:`w-4 h-4 text-orange-600 dark:text-orange-400 mt-0.5 flex-shrink-0`}),(0,G.jsx)(`p`,{className:`text-orange-700 dark:text-orange-400`,children:b(`printModal.plateFilamentsUnreadable`,`The filaments of a selected plate could not be read, so it can't be mapped. Deselect it to queue the others.`)})]}),Qn&&!$t&&N.length===1&&(0,G.jsx)(_t,{printerId:K,filamentReqs:tn,manualMappings:Te,onManualMappingChange:e=>{Oe(K),Ee(e)},onEstimatedCostChange:Ye,budgetAvailable:J?It?.budget_available??null:null,quantity:Kn,defaultExpanded:!!s?.length||(q?.per_printer_mapping_expanded??!1),currencySymbol:Ct,defaultCostPerKg:wt,forceColorMatch:W,onForceColorMatchChange:(e,t)=>rt(n=>({...n,[e]:t})),archiveAmsMapping:Gt,nozzleRackChoice:Sn,onNozzleRackChoiceChange:Cn}),$n&&!$t&&mn.map(e=>{let t=$.find(t=>t.index===e),n=yn.get(e);return n?(0,G.jsx)(_t,{printerId:K,plateLabel:t?.name||b(`printModal.plateN`,`Plate {{n}}`,{n:e}),filamentReqs:n,manualMappings:bn[e]??{},onManualMappingChange:t=>xn(n=>({...n,[e]:t})),onEstimatedCostChange:t=>Ze(n=>({...n,[e]:t})),budgetAvailable:J?It?.budget_available??null:null,quantity:Jn(e),defaultExpanded:!1,currencySymbol:Ct,defaultCostPerKg:wt,forceColorMatch:W,onForceColorMatchChange:(e,t)=>rt(n=>({...n,[e]:t})),archiveAmsMapping:Gt,nozzleRackChoice:wn[e]??{},onNozzleRackChoiceChange:t=>Tn(n=>({...n,[e]:t}))},e):null}),(e===`create`||gt>0||B===`model`&&V)&&(0,G.jsx)(Tt,{options:L,onChange:Ce,defaultExpanded:!!s?.length,showDualNozzleOptions:nr}),J&&Ft.length>0&&(0,G.jsx)(Ot,{costCenters:Ft,selectedCostCenterId:U,onChange:We}),J&&!Pt&&Ft.length===0&&(0,G.jsxs)(`div`,{role:`alert`,className:`p-3 bg-yellow-100 dark:bg-yellow-500/20 border border-yellow-500/50 rounded-lg text-sm text-yellow-800 dark:text-yellow-300 flex items-start gap-2`,children:[(0,G.jsx)(O,{className:`w-4 h-4 mt-0.5 shrink-0`}),b(`printModal.noPrintableCostCenters`)]}),e!==`edit-queue-item`&&!qn&&(B===`model`||N.length<=1)&&(0,G.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,G.jsx)(`label`,{htmlFor:`printQuantity`,className:`text-sm text-bambu-gray whitespace-nowrap`,children:b(`queue.quantity`,`Quantity`)}),(0,G.jsx)(Fe,{id:`printQuantity`,min:1,max:999,value:_e,onChange:ye,fallback:1,className:`w-20 px-2 py-1 text-sm bg-bambu-dark border border-bambu-dark-tertiary rounded text-white focus:outline-none focus:ring-1 focus:ring-bambu-green`}),_e>1&&(0,G.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:b(`queue.quantityHint`,`Creates {{count}} queue items`,{count:_e})})]}),(0,G.jsx)(Et,{options:R,onChange:we,dateFormat:q?.date_format||`system`,timeFormat:q?.time_format||`system`,canControlPrinter:w(`printers:control`),showStagger:!D&&B===`printer`&&N.length>1,printerCount:N.length,hasGcodeSnippets:Pe(q),needsReview:ie}),(0,G.jsxs)(`button`,{type:`button`,"aria-pressed":L.confirm_outcome,title:b(`printModal.askForOutcomeTitle`),onClick:()=>Ce(e=>({...e,confirm_outcome:!e.confirm_outcome})),className:`inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border text-sm transition-colors ${L.confirm_outcome?`bg-bambu-green/20 border-bambu-green text-bambu-green`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,children:[(0,G.jsx)(Ve,{className:`w-4 h-4`}),b(`printModal.askForOutcome`)]}),Ln.isError&&(0,G.jsx)(`div`,{className:`mb-4 p-3 bg-red-100 dark:bg-red-500/20 border border-red-500/50 rounded-lg text-sm text-red-700 dark:text-red-400`,children:Ln.error?.message||`Failed to complete operation`}),B===`printer`&&N.length===1&&un&&(0,G.jsxs)(`div`,{className:`mb-4 p-3 bg-blue-100 dark:bg-blue-500/20 border border-blue-500/50 rounded-lg text-sm text-blue-700 dark:text-blue-400 flex items-center gap-2`,children:[(0,G.jsx)(ee,{className:`w-4 h-4 animate-spin`}),b(`printModal.waitingForAmsStatus`,{printer:X?.find(e=>e.id===K)?.name??``})]}),Pn&&(0,G.jsxs)(`p`,{className:`flex items-center gap-1.5 text-sm text-bambu-gray min-w-0`,title:Pn,"data-testid":`selected-plates-summary`,children:[(0,G.jsx)(C,{className:`w-4 h-4 flex-shrink-0`}),(0,G.jsx)(`span`,{className:`truncate`,children:Pn})]}),(0,G.jsxs)(`div`,{className:`flex gap-3 pt-2`,children:[(0,G.jsx)(ce,{type:`button`,variant:`secondary`,onClick:p,className:`flex-1`,disabled:ct,children:`Cancel`}),(0,G.jsx)(ce,{type:`submit`,disabled:!Gn,className:`flex-1`,children:Wn?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ee,{className:`w-4 h-4 animate-spin`}),Yn.loadingText]}):(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(Zn,{className:`w-4 h-4`}),Yn.submitText]})})]})]})]})}),ft&&ft.length>0&&(0,G.jsx)(le,{title:b(`printModal.insufficientFilamentTitle`),message:Fn,confirmText:b(`printModal.printAnyway`),cancelText:b(`common.cancel`),variant:`warning`,onConfirm:()=>{let e=[...new Set(ft.map(e=>e.printerId))];pt(null),Un(void 0,{skipFilamentCheck:!0,acknowledgedPrinters:e})},onCancel:()=>pt(null)})]})}export{it as a,Ue as c,ze as d,V as f,wt as i,Ve as l,St as n,tt as o,Re as p,Ct as r,et as s,X as t,Be as u};