PrintModal-C8OrNcYI.js 101 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 ne}from"./printer-DVnGPNXE.js";import{t as re}from"./refresh-cw-Cc3nUvvK.js";import{t as T}from"./rotate-ccw-D6ngM6D9.js";import{t as ie}from"./settings-B42ebiIY.js";import{t as ae}from"./square-check-big-BOK92gVL.js";import{t as E}from"./square-04JHJPkl.js";import{t as D}from"./triangle-alert-BhEYJSeb.js";import{t as oe}from"./users-C6Hl6V_F.js";import{t as O}from"./wand-sparkles-Ct01WoXr.js";import{t as k}from"./x-cqdAcs9R.js";import{n as se}from"./AuthContext-Db9wjW6t.js";import{n as ce,t as le}from"./Card-D08KwdrO.js";import{t as ue}from"./Button-Dk615dwb.js";import{t as de}from"./ConfirmModal-HpxKA3FP.js";import{_ as A,d as j,g as M,m as N,o as P,p as fe,r as F,v as pe,y as me}from"./date-G9KUauqz.js";import{A as I,E as he,G as ge,M as _e,O as ve,S as ye,_ as be,f as xe,h as Se,j as Ce,k as we,l as Te,m as Ee,o as De,p as L,s as Oe,t as ke,u as R,z as Ae}from"./amsHelpers-m0tbln8b.js";import{i as je,n as Me}from"./colors-D_-ITfUn.js";import{n as Ne}from"./currency-LmqFrzn3.js";import{n as Pe,t as Fe}from"./useUiSettings-QPurze9x.js";import{t as Ie}from"./NumberInput-Dpt1IWQn.js";import{o as Le,s as Re}from"./printer-bKYa4pK8.js";import{t as ze}from"./FilamentSwatch-CjUd2OuH.js";var Be=t(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Ve=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`}]]),z=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`}]]),He=t(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),Ue=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`}]]),B=e(i(),1);function V(e){if(!e)return null;let t=[e.brand,e.material,e.subtype].filter(Boolean);return t.length>0?t.join(` `):null}function We(e,t){let n=[],r=e?.ams_extruder_map,i=ge(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=he(e.id);e.tray.forEach(a=>{if(a.tray_type){let o=we(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()||je(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:V(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=we(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()||je(o,r.tray_sub_brands,r.tray_info_idx),amsId:-1,trayId:Ae(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:V(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 Ge(e,t,n,r){let i=We(t);if(i.length!==0)return Je(qe(e,i,{},n,r,t?.fila_switch?.installed===!0))}function H(e,t){return(0,B.useMemo)(()=>We(e,t),[e,t])}function Ke(e,t){let n=I(t);return!n||I(e)===n||Te(e,t)}function qe(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=L(i.type,e.type),n=Ke(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)=>R(Ce(e,i),Ce(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)=>R(Ce(e,i),Ce(t,i))),d=t.find(t=>L(t.type,e.type)&&I(t.color)===I(e.color)),d||(f=Se(t.filter(t=>L(t.type,e.type)),e.color,e=>e.color)),!d&&!f&&(p=t.find(t=>L(t.type,e.type))))}!u&&!d&&!f&&!p&&(d=l.find(t=>L(t.type,e.type)&&I(t.color)===I(e.color)),d||(f=Se(l.filter(t=>L(t.type,e.type)),e.color,e=>e.color)),!d&&!f&&(p=l.find(t=>L(t.type,e.type))));let m=u||d||f||p||void 0;m&&o.add(m.globalTrayId);let h=!!m,g=h,_=h&&Ke(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 Je(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 Ye(e,t,n,r,i,a){let o=H(t,a),s=t?.fila_switch?.installed===!0,c=(0,B.useMemo)(()=>qe(e,o,n,r,i,s),[e,o,n,r,s,i]);return{loadedFilaments:o,filamentComparison:c,amsMapping:(0,B.useMemo)(()=>o.length===0?void 0:Je(c),[c,o.length]),hasTypeMismatch:c.some(e=>e.status===`mismatch`),hasColorMismatch:c.some(e=>e.status===`type_only`)}}function Xe(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=L(i.type,l.type),t=I(i.color)===I(l.color)||Te(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)=>R(Ce(e,i),Ce(t,i))));let d=u.find(e=>L(e.type,l.type)&&I(e.color)===I(l.color)),f=d?void 0:Se(u.filter(e=>L(e.type,l.type)),l.color,e=>e.color),p=d||f?void 0:u.find(e=>L(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 Ze(e,t,n,r,i){if(!e?.filaments||e.filaments.length===0)return;let a=We(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)=>R(Ce(e,i),Ce(t,i))));let l=c.find(e=>L(e.type,t.type)&&I(e.color)===I(t.color)),u=l?void 0:Se(c.filter(e=>L(e.type,t.type)),t.color,e=>e.color),d=l||u?void 0:c.find(e=>L(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 Qe={useDefault:!0,manualMappings:{},autoConfigured:!1};function $e(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,B.useMemo)(()=>e.map((e,r)=>{let o=u[r],d=o?.data,f=t?.find(t=>t.id===e)?.name||`Printer ${e}`,p=We(d),m=a[e]||Qe,h=c?.get(e),g=xe(s,d?.ams_filament_backup),_=Ge(n,d,g,h),v=l!=null&&e===l,y=m.useDefault?v?i:{}:m.manualMappings,b=Ze(n,d,y,g,h),x=Xe(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]||Qe,...t}}))},h=e=>{let t=f.find(t=>t.printerId===e);if(!t||!t.status||!n?.filaments)return;let r=Ge(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 et(e){let t=e.trim().split(/\s+/);return t.length<=1?e.trim():t.slice(1).join(` `)}function tt(){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,B.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 nt(e,t,n){return et(e&&n[e]||t)}function rt(e){let t=tt(),n=(0,B.useMemo)(()=>(e||[]).map(e=>{let n=e.tray_info_idx&&t[e.tray_info_idx]||e.type;return{resolvedName:n,materialHint:et(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)||je(t)}))}var U=`/img/bed`,it={"cool plate":{icon:`${U}/bed_cool.png`,label:`Cool Plate`},"pc plate":{icon:`${U}/bed_cool.png`,label:`Cool Plate`},"cool plate (supertack)":{icon:`${U}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"supertack plate":{icon:`${U}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"bambu cool plate supertack":{icon:`${U}/bed_cool_supertack.png`,label:`Cool Plate SuperTack`},"engineering plate":{icon:`${U}/bed_engineering.png`,label:`Engineering Plate`},"high temp plate":{icon:`${U}/bed_high_templ.png`,label:`High Temp Plate`},"textured pei plate":{icon:`${U}/bed_pei.png`,label:`Textured PEI Plate`},"pei plate":{icon:`${U}/bed_pei.png`,label:`PEI Plate`},"smooth pei plate":{icon:`${U}/bed_pei_cool.png`,label:`Smooth PEI Plate`}};function at(e){return e?it[e.trim().toLowerCase()]??null:null}function ot(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 st=e(s(),1),W=a(),ct=`w-3 h-3`,lt=8;function ut({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,B.useState)(!1),[f,p]=(0,B.useState)(0),[m,_]=(0,B.useState)(null),v=(0,B.useRef)(null),y=(0,B.useRef)(null),b=[{...r??{},value:``,label:n},...t],x=Math.max(0,b.findIndex(t=>t.value===e)),S=b[x],C=(0,B.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*lt,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(lt,Math.min(t.left,a-lt-l)),minWidth:s,maxWidth:o})},[]);(0,B.useLayoutEffect)(()=>{u&&C()},[u,C]),(0,B.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)}},ne=`slot-picker-${o.replace(/\W+/g,`-`)}`,re=e=>e.rgba?(0,W.jsx)(ze,{rgba:e.rgba,extraColors:e.extraColors,effectType:e.effectType,subtype:e.subtype,className:ct,effectSize:`table`}):null;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{ref:v,type:`button`,role:`combobox`,"aria-label":o,"aria-haspopup":`listbox`,"aria-expanded":u,"aria-controls":u?ne:void 0,"aria-activedescendant":u?`${ne}-${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:[re(S),(0,W.jsxs)(`span`,{className:`flex-1 min-w-0 truncate`,children:[S.label,S.meta?(0,W.jsx)(`span`,{className:`text-bambu-gray`,children:S.meta}):null]}),(0,W.jsx)(g,{className:`w-3 h-3 shrink-0 opacity-70`})]}),u&&(0,st.createPortal)((0,W.jsx)(`div`,{ref:y,id:ne,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,W.jsxs)(`button`,{id:`${ne}-${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:[re(e),(0,W.jsxs)(`span`,{className:`flex-1 min-w-0 truncate`,title:e.label,children:[e.label,e.meta?(0,W.jsx)(`span`,{className:`text-bambu-gray`,children:e.meta}):null]}),e.hex?(0,W.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] uppercase text-bambu-gray`,children:e.hex}):null,e.exactMatch?(0,W.jsx)(`span`,{title:l,className:`shrink-0 text-bambu-green`,children:(0,W.jsx)(h,{className:`w-3 h-3`})}):null]},e.key??`${e.value}-${t}`))}),document.body)]})}function dt(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 ft=Array.from({length:6},(e,t)=>t+1),G=0;function pt(e){let t=new Map,n;for(let r of e??[]){if(r.id===G){n=r;continue}let e=r.id-15;e>=1&&e<=6&&t.set(e,r)}let r=ft.filter(e=>!t.has(e));return r.length===1&&n&&(n.nozzle_diameter||n.nozzle_type)&&t.set(r[0],n),t}function K(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 mt(e,t,n){let r=pt(e);return ft.map(e=>{let i=r.get(e),a=K(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 ht(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)||!K(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=ft.filter(e=>!a.has(e)&&K(r.get(e),n));if(o.length===0)return null;let s=gt(n.filament_color),c=(s?o.find(e=>gt(r.get(e)?.filament_color)===s):void 0)??o[0];i[e]=c,a.add(c)}return i}function gt(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,ne]=(0,B.useState)(!1),[T,ie]=(0,B.useState)(p),[ae,E]=(0,B.useState)(!1),oe=(0,B.useRef)([]);(0,B.useEffect)(()=>{E(!1),oe.current=[]},[b,y,e]);let O=()=>{if(!b||!t?.filaments)return;if(ae){let e={...i};for(let t of oe.current)delete e[t];a(e),oe.current=[],E(!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),oe.current=n,E(!0)},{data:k}=l({queryKey:[`printer-status`,e],queryFn:()=>r.getPrinterStatus(e),enabled:!!e}),{data:se}=Pe(),{data:ce}=l({queryKey:[`printer-inventory-remain`,e],queryFn:()=>r.getInventoryRemain(e),enabled:!!e,staleTime:30*1e3,refetchOnMount:`always`}),le=(0,B.useMemo)(()=>{if(!ce?.inventory_remain_g)return;let e=new Map;return Object.entries(ce.inventory_remain_g).forEach(([t,n])=>{let r=Number(t);Number.isNaN(r)||e.set(r,n)}),e},[ce]),ue=(0,B.useMemo)(()=>{let e=ce?.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},[ce]),{loadedFilaments:de,filamentComparison:A,hasTypeMismatch:j,hasColorMismatch:M}=Ye(t,k,i,xe(se?.prefer_lowest_filament,k?.ams_filament_backup),le,ue),N=rt(t?.filaments),P=(0,B.useMemo)(()=>{let e=new Map;for(let t of ce?.slot_materials??[])e.set(t.global_tray_id,t.cost_per_kg??null);return e},[ce]),fe=(0,B.useMemo)(()=>{let e=new Map;for(let t of ce?.slot_materials??[])e.set(t.global_tray_id,Math.max(0,Math.round(t.remaining_g)));return e},[ce]),F=(0,B.useMemo)(()=>{let e=0;for(let t of A){let n=t.loaded?.globalTrayId;if(n==null)continue;let r=P.get(n)??null??f;r>0&&(e+=t.used_grams/1e3*r)}return e},[A,P,f]),pe=(0,B.useRef)(o);(0,B.useEffect)(()=>{pe.current=o},[o]),(0,B.useEffect)(()=>{pe.current?.(F>0?F:null)},[F]);let me=(0,B.useMemo)(()=>Array.from(P.values()).some(e=>e!=null&&e>0),[P]),he=F*Math.max(1,u),ge=s!=null&&he>s,_e=t?.filaments&&t.filaments.length>0,ve=t?.filaments?.some(e=>e.nozzle_id!=null)??!1,ye=(0,B.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=(k?.nozzle_rack?.some(e=>e.id>=16)??!1)&&[...ye.values()].some(e=>e.on_rack),Se=(0,B.useMemo)(()=>be?ht(k?.nozzle_rack,ye,x??{})??x??{}:{},[be,k?.nozzle_rack,ye,x]),Ce=(e,t)=>{S&&S({...Se,[e]:t})},we=k?.fila_switch?.installed===!0,Te=k?.ams_switch_inlet,Ee=e=>we&&Te?.[String(e)]||null,De=(0,B.useMemo)(()=>{if(!we)return null;let e=new Set;for(let t of A){if(!t.loaded||t.loaded.isExternal)return null;let n=Ee(t.loaded.amsId);if(!n)return null;e.add(n)}return A.length<2||e.size!==1?null:[...e][0]},[we,Te,A]);if(!_e||!k)return null;let L=j?`#f97316`:M?`#facc15`:`#00ae42`,Oe=(e,t)=>{if(e>0)if(t===``){let t={...i};delete t[e],a(t)}else a({...i,[e]:parseInt(t,10)})};return(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>ie(!T),className:`flex items-center gap-2 text-sm text-bambu-gray hover:text-white transition-colors w-full`,children:[(0,W.jsx)(Be,{className:`w-4 h-4`,fill:L,stroke:`none`}),(0,W.jsx)(`span`,{children:y?`${C(`printModal.filamentMapping`)} — ${y}`:C(`printModal.filamentMapping`)}),j?(0,W.jsxs)(`span`,{className:`text-xs text-orange-700 dark:text-orange-400`,children:[`(`,C(`printModal.statusTypeNotFound`),`)`]}):M?(0,W.jsxs)(`span`,{className:`text-xs text-yellow-700 dark:text-yellow-400`,children:[`(`,C(`printModal.statusColorMismatch`),`)`]}):(0,W.jsxs)(`span`,{className:`text-xs text-bambu-green`,children:[`(`,C(`printModal.statusReady`),`)`]}),T?(0,W.jsx)(_,{className:`w-4 h-4 ml-auto`}):(0,W.jsx)(g,{className:`w-4 h-4 ml-auto`})]}),T&&(0,W.jsxs)(`div`,{className:`mt-2 bg-bambu-dark rounded-lg p-3 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:C(`printModal.clickToChangeSlot`)}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[b&&(0,W.jsxs)(`button`,{type:`button`,onClick:O,title:C(`printModal.useArchiveMappingTooltip`),className:`flex items-center gap-1 px-2 py-0.5 text-xs rounded border transition-colors ${ae?`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,W.jsx)(h,{className:`w-3 h-3`}),(0,W.jsx)(`span`,{children:C(`printModal.useArchiveMapping`)})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:async()=>{ne(!0);try{await r.refreshPrinterStatus(e),await new Promise(e=>setTimeout(e,500)),await ee.refetchQueries({queryKey:[`printer-status`,e]})}finally{ne(!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,W.jsx)(re,{className:`w-3 h-3 ${te?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:C(`printModal.reRead`)})]})]})]}),De&&(0,W.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,W.jsx)(D,{className:`w-3 h-3 mt-0.5 shrink-0`}),(0,W.jsx)(`span`,{children:C(`printModal.ftsSameInletHint`,{inlet:De})})]}),A.map((e,t)=>{let n=e.slot_id??0,r=n>0&&v!=null,{resolvedName:i,colorLabel:a}=N[t]??{resolvedName:e.type,colorLabel:je(e.color)},[o,s]=Me({name:a,hex:e.color},{name:e.loaded?.colorName,hex:e.loaded?.color});return(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.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,W.jsx)(`span`,{title:C(`printModal.requiredTooltip`,{name:i,color:o}),children:(0,W.jsx)(Be,{className:`w-3 h-3`,fill:e.color,stroke:e.color})}),(0,W.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,W.jsx)(`select`,{value:Se[e.group_id]??``,onChange:t=>Ce(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:mt(k?.nozzle_rack,e.group,C).map(e=>(0,W.jsxs)(`option`,{value:e.position,disabled:!e.eligible,title:e.reason,children:[`R`,e.position,e.diameter?` · ${e.diameter}`:``]},e.position))}):(0,W.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,W.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,W.jsx)(`span`,{className:`truncate min-w-0`,title:i,children:i}),(0,W.jsxs)(`span`,{className:`text-bambu-gray shrink-0 whitespace-nowrap`,children:[`(`,e.used_grams,`g)`]})]}),(0,W.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,W.jsx)(ut,{value:e.loaded?.globalTrayId==null?``:String(e.loaded.globalTrayId),onChange:e=>Oe(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:de.map(t=>{let n=fe.get(t.globalTrayId),r=n==null?``:C(`printModal.slotRemainingShort`,{grams:n,defaultValue:` - ${n}g left`}),i=Ee(t.amsId),a=i==null?``:` [${ke[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:dt(t.color),exactMatch:I(e.color)!==``&&I(t.color)===I(e.color)}})}),e.status===`match`?(0,W.jsx)(h,{className:`w-3 h-3 text-bambu-green`}):e.status===`type_only`?(0,W.jsx)(`span`,{title:o&&s?C(`printModal.sameTypeDifferentColorDetail`,{required:o,loaded:s}):C(`printModal.sameTypeDifferentColor`),children:(0,W.jsx)(D,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`})}):(0,W.jsx)(`span`,{title:C(`printModal.filamentTypeNotLoaded`),children:(0,W.jsx)(D,{className:`w-3 h-3 text-orange-600 dark:text-orange-400`})})]}),r&&(0,W.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs text-bambu-gray cursor-pointer select-none pl-5`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:m?.[n]??!1,onChange:e=>v(n,e.target.checked),className:`accent-bambu-green w-3 h-3`}),(0,W.jsx)(w,{className:`w-3 h-3`}),C(`printModal.forceColorMatch`)]})]},t)}),(0,W.jsxs)(`div`,{className:`text-xs text-bambu-gray`,children:[C(`printModal.totalCost`),` `,(0,W.jsx)(`span`,{className:`text-white`,children:F>0||me?`${d}${F.toFixed(2)}`:`N/A`}),u>1&&F>0&&(0,W.jsx)(`span`,{className:`ml-2`,children:C(`printModal.totalCostForQuantity`,`total: {{cost}}`,{cost:`${d}${he.toFixed(2)}`})})]}),ge&&(0,W.jsx)(`p`,{className:`text-xs text-red-400 mt-2`,children:C(`printModal.insufficientBudget`,`Insufficient budget for this cost center.`)}),j&&(0,W.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=rt(e?.filaments),d=(0,B.useMemo)(()=>{let e={};for(let n of t){let t=Oe(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,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray mb-2`,children:(0,W.jsx)(`span`,{children:s?`${l(`printModal.filamentOverride`)} — ${s}`:l(`printModal.filamentOverride`)})}),c&&(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:l(`printModal.filamentOverrideHint`)}),(0,W.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[Oe(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:je(e.color)};return(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.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,W.jsx)(`span`,{title:`${l(`printModal.originalFilament`)}: ${f} - ${m}`,children:(0,W.jsx)(Be,{className:`w-3 h-3`,fill:e.color,stroke:e.color})}),(0,W.jsxs)(`span`,{className:`text-white truncate col-span-2 sm:col-span-1`,children:[f,` `,(0,W.jsxs)(`span`,{className:`text-bambu-gray`,children:[`(`,e.used_grams,`g)`]})]}),(0,W.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,W.jsx)(ut,{value:i?`${n.type}|${n.color}`:``,onChange:t=>p(e.slot_id,t),placeholder:`${l(`printModal.originalFilament`)}: ${f} (${m})`,placeholderOption:{rgba:e.color,hex:dt(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} (${je(t.color,t.tray_sub_brands,t.tray_info_idx)})`,rgba:t.color,hex:dt(t.color),exactMatch:I(e.color)!==``&&I(t.color)===I(e.color)}))}),i?(0,W.jsx)(`button`,{type:`button`,onClick:()=>p(e.slot_id,``),className:`text-bambu-gray hover:text-white transition-colors`,title:l(`printModal.resetToOriginal`),children:(0,W.jsx)(T,{className:`w-3 h-3`})}):(0,W.jsx)(`span`,{className:`w-3`})]}),(0,W.jsxs)(`label`,{className:`inline-flex items-center gap-1.5 text-xs text-bambu-gray cursor-pointer select-none pl-5`,children:[(0,W.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,W.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,B.useRef)(null),p=(0,B.useRef)(!1),m=t&&e.length>1;(0,B.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,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,W.jsx)(C,{className:`w-4 h-4 text-bambu-gray`}),(0,W.jsxs)(`span`,{className:`text-sm text-bambu-gray`,children:[`Select Plate`,c?`s`:``,` to Print`]}),r.size===0&&(0,W.jsxs)(`span`,{className:`text-xs text-orange-700 dark:text-orange-400 flex items-center gap-1`,children:[(0,W.jsx)(D,{className:`w-3 h-3`}),`Selection required`]}),c&&a&&s&&(0,W.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,W.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:e.map(e=>{let t=r.has(e.index);return(0,W.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,W.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,W.jsx)(ae,{className:`w-4 h-4 text-bambu-green flex-shrink-0`}):(0,W.jsx)(E,{className:`w-4 h-4 text-bambu-gray flex-shrink-0`})),e.has_thumbnail&&e.thumbnail_url!=null?(0,W.jsx)(`img`,{src:o(e.thumbnail_url),alt:`Plate ${e.index}`,className:`w-10 h-10 rounded object-cover bg-bambu-dark-tertiary`}):(0,W.jsx)(`div`,{className:`w-10 h-10 rounded bg-bambu-dark-tertiary flex items-center justify-center`,children:(0,W.jsx)(C,{className:`w-5 h-5 text-bambu-gray`})}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm text-white font-medium truncate`,children:e.name||`Plate ${e.index}`}),(0,W.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?``:` • ${P(e.print_time_seconds)}`]}),(()=>{let t=at(e.bed_type);return t?(0,W.jsxs)(`p`,{className:`text-xs text-bambu-gray flex items-center gap-1 mt-0.5 truncate`,title:t.label,children:[(0,W.jsx)(`img`,{src:t.icon,alt:``,className:`w-3.5 h-3.5 object-contain flex-shrink-0`}),(0,W.jsx)(`span`,{className:`truncate`,children:t.label})]}):null})()]}),!c&&t&&(0,W.jsx)(h,{className:`w-4 h-4 text-bambu-green flex-shrink-0`})]}),v&&t&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[(0,W.jsx)(`span`,{className:`text-xs text-bambu-gray`,"aria-hidden":`true`,children:`×`}),(0,W.jsx)(Ie,{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,W.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}=Pe(),[o,s]=(0,B.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=De(t,e.loadedFilaments,n,xe(a?.prefer_lowest_filament,e.status?.ams_filament_backup),e.inventoryByTrayId)}let s=`mismatch`;if(i){let e=L(i.type,t.type),n=I(i.color)===I(t.color)||Te(i.color,t.color);e&&n?s=`match`:e&&(s=`type_only`)}return{req:t,loaded:i,status:s,isManual:o}});return(0,W.jsxs)(`div`,{className:`mt-2 bg-bambu-dark rounded-lg p-3 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Custom slot mapping`}),(0,W.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,W.jsx)(re,{className:`w-3 h-3 ${o?`animate-spin`:``}`}),(0,W.jsx)(`span`,{children:`Re-read`})]})]}),d.map(({req:t,loaded:n,status:r,isManual:i},a)=>(0,W.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,W.jsx)(`span`,{title:`Required: ${t.type} - ${je(t.color)}`,children:(0,W.jsx)(Be,{className:`w-3 h-3`,fill:t.color,stroke:t.color})}),(0,W.jsxs)(`span`,{className:`text-white flex items-center gap-1 min-w-0 col-span-2 sm:col-span-1`,children:[(0,W.jsx)(`span`,{className:`truncate min-w-0`,title:t.type,children:t.type}),(0,W.jsxs)(`span`,{className:`text-bambu-gray shrink-0 whitespace-nowrap`,children:[`(`,t.used_grams,`g)`]})]}),(0,W.jsx)(`span`,{className:`text-bambu-gray`,children:`→`}),(0,W.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,W.jsx)(`option`,{value:``,className:`bg-bambu-dark text-bambu-gray`,children:`-- Select slot --`}),Ee(e.loadedFilaments,t.nozzle_id).map(e=>(0,W.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,W.jsx)(h,{className:`w-3 h-3 text-bambu-green`}):r===`type_only`?(0,W.jsx)(`span`,{title:`Same type, different color`,children:(0,W.jsx)(D,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`})}):(0,W.jsx)(`span`,{title:`Filament type not loaded`,children:(0,W.jsx)(D,{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,B.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}))}),T=(0,B.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=T.get(e);return t?!t.connected||!q.has(t.state??``):!1},ae=e=>{let t=T.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},E=(0,B.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]),k=w.length-E.length,se=(0,B.useMemo)(()=>{let e=w.map(e=>e.model).filter(e=>!!e);return[...new Set(e)].sort()},[w]),ce=(0,B.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]),le=m&&_&&se.length>0,ue=a&&t.length>1&&c&&l?.filaments&&l.filaments.length>0&&u&&f;if(i)return(0,W.jsx)(`div`,{className:`flex justify-center py-8`,children:(0,W.jsx)(ee,{className:`w-6 h-6 text-bambu-green animate-spin`})});if(E.length===0)return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-red-700 dark:text-red-400 text-sm mb-4`,children:[(0,W.jsx)(v,{className:`w-4 h-4`}),`No `,o?``:`active `,`printers available`]});let de=e=>{s&&ie(e)||(a?t.includes(e)?n(t.filter(t=>t!==e)):n([...t,e]):n([e]))},A=()=>{n((s?E.filter(e=>!ie(e.id)):E).map(e=>e.id))},j=()=>{n([])},M=(e,t,n)=>{n.stopPropagation(),!(!u||!f)&&(t?u(e):f(e,{useDefault:!0,manualMappings:{},autoConfigured:!1}))},N=e=>t.includes(e),P=t.length,fe=e=>c?.find(t=>t.printerId===e);return(0,W.jsxs)(`div`,{className:`space-y-2 mb-6`,children:[le&&(0,W.jsxs)(`div`,{className:`flex gap-2 mb-4`,children:[(0,W.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,W.jsx)(ne,{className:`w-4 h-4`}),(0,W.jsx)(`span`,{className:`text-sm`,children:`Specific Printer`})]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{m(`model`),n([]),_(x&&se.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,W.jsx)(oe,{className:`w-4 h-4`}),(0,W.jsxs)(`span`,{className:`text-sm`,children:[`Any `,(p===`model`?g:null)||x||`Model`]})]})]}),p===`model`&&le&&(0,W.jsxs)(`div`,{className:`space-y-3 mb-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:[`Target Model`,x&&(0,W.jsxs)(`span`,{className:`ml-2 text-bambu-gray/70`,children:[`(sliced for `,x,`)`]})]}),(0,W.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,W.jsx)(`option`,{value:``,children:`Select a model...`}),se.map(e=>{let t=Le(x,e);return(0,W.jsxs)(`option`,{value:e,disabled:!t,children:[e,t?``:` — incompatible with ${x} G-code`]},e)})]})]}),x&&g&&g!==x&&(Le(x,g)?(0,W.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,W.jsx)(D,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,W.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,W.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,W.jsx)(v,{className:`w-4 h-4 text-red-600 dark:text-red-400 flex-shrink-0`}),(0,W.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&&ce.length>0&&b&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:`Location Filter (optional)`}),(0,W.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,W.jsx)(`option`,{value:``,children:`Any location`}),ce.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]})]}),g&&(0,W.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[`Scheduler will assign to first available idle `,g,` printer`,y?` in ${y}`:``]})]}),p===`printer`&&a&&E.length>1&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-bambu-gray mb-2`,children:[(0,W.jsx)(`span`,{children:P===0?`Select printers`:`${P} printer${P===1?``:`s`} selected`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[P<E.length&&(0,W.jsx)(`button`,{type:`button`,onClick:A,className:`text-bambu-green hover:text-bambu-green/80 transition-colors`,children:`Select all`}),P>0&&(0,W.jsx)(`button`,{type:`button`,onClick:j,className:`text-bambu-gray hover:text-white transition-colors`,children:`Clear`})]})]}),p===`printer`&&E.map(e=>{let t=N(e.id),n=fe(e.id),r=n&&!n.config.useDefault,i=ie(e.id),o=s&&i,c=ae(e.id);return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>de(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,W.jsx)(`div`,{className:`p-2 rounded-lg ${o?`bg-bambu-dark-tertiary`:t?`bg-bambu-green/20`:`bg-bambu-dark-tertiary`}`,children:(0,W.jsx)(ne,{className:`w-5 h-5 ${o?`text-bambu-gray/50`:t?`text-bambu-green`:`text-bambu-gray`}`})}),(0,W.jsxs)(`div`,{className:`text-left flex-1`,children:[(0,W.jsxs)(`p`,{className:`font-medium ${o?`text-bambu-gray`:`text-white`}`,children:[e.name,!e.is_active&&(0,W.jsx)(`span`,{className:`text-bambu-gray text-xs ml-2`,children:`(inactive)`})]}),(0,W.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[e.model||`Unknown model`,` • `,e.ip_address]})]}),c&&(0,W.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,W.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,W.jsx)(h,{className:`w-3 h-3 text-white`})})]}),t&&ue&&n&&(0,W.jsxs)(`div`,{className:`ml-4 mt-2 mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:r,onChange:t=>M(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,W.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Custom mapping`})]}),(0,W.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,W.jsx)(re,{className:`w-3 h-3 text-bambu-gray animate-spin`}),r&&(0,W.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,W.jsx)(O,{className:`w-3 h-3`}),`Auto`]})]}),r&&(0,W.jsx)(bt,{printerResult:n,filamentReqs:l.filaments,onUpdateConfig:t=>f(e.id,t)})]})]},e.id)}),p===`printer`&&k>0&&!S&&(0,W.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,W.jsx)(D,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400`}),k,` other printer`,k>1?`s`:``,` hidden (different model) —`,(0,W.jsx)(`span`,{className:`underline`,children:`show all`})]}),p===`printer`&&S&&x&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>C(!1),className:`text-xs text-bambu-gray hover:text-white transition-colors mt-2`,children:(0,W.jsxs)(`span`,{className:`underline`,children:[`Show only `,x,` printers`]})}),p===`printer`&&P===0&&(0,W.jsxs)(`p`,{className:`text-xs text-orange-700 dark:text-orange-400 mt-1 flex items-center gap-1`,children:[(0,W.jsx)(v,{className:`w-3 h-3`}),`Select at least one printer`]}),p===`model`&&!g&&(0,W.jsxs)(`p`,{className:`text-xs text-orange-700 dark:text-orange-400 mt-1 flex items-center gap-1`,children:[(0,W.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`,Tt=[`off`,`on`];function Et({options:e,onChange:t,defaultExpanded:r=!1,showDualNozzleOptions:i=!1}){let{t:a}=n(),[o,s]=(0,B.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,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.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,W.jsx)(ie,{className:`w-4 h-4`}),(0,W.jsx)(`span`,{children:a(`queue.bulkEdit.printOptions`)}),o?(0,W.jsx)(_,{className:`w-4 h-4 ml-auto`}):(0,W.jsx)(g,{className:`w-4 h-4 ml-auto`})]}),o&&(0,W.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,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-sm text-white`,children:n}),(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:r})]}),(0,W.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:St.map(n=>(0,W.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,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-sm text-white`,children:n}),(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:r})]}),(0,W.jsx)(`div`,{className:`flex gap-1 shrink-0`,children:Tt.map(n=>(0,W.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,W.jsxs)(`div`,{className:`pt-2 mt-1 border-t border-bambu-dark-tertiary/60`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-1.5`,children:[(0,W.jsx)(S,{className:`w-3.5 h-3.5 text-amber-600 dark:text-amber-400`}),(0,W.jsx)(`span`,{className:`text-sm text-white`,children:a(`settings.preheatTitle`,`Preheat & Heat Soak`)})]}),(0,W.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,W.jsx)(`div`,{className:`flex gap-1.5 mb-2`,children:[`inherit`,`on`,`off`].map(t=>(0,W.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,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`label`,{className:`text-xs text-bambu-gray flex-1`,children:a(`settings.preheatTargetOverride`,`Chamber target override (°C, blank = filament default)`)}),(0,W.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,W.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 Dt({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,B.useState)(``),[p,h]=(0,B.useState)(``),[g,_]=(0,B.useState)(!0),[v,y]=(0,B.useState)(!0),S=(0,B.useRef)(null),ee=(0,B.useRef)(!1);(0,B.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:me(n)})),f(F(n,r)),h(j(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=M(n,r),o=A(i);_(!!a),y(!!o),a&&o&&(a.setHours(o.hours,o.minutes,0,0),a>new Date&&t({...e,scheduledTime:me(a)}))},ne=e=>{f(e),te(e,p)},re=e=>{h(e),te(d,e)};return(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-2`,children:u(`printModal.whenToPrint`)}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.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,W.jsx)(b,{className:`w-4 h-4`}),u(`printModal.asap`)]}),(0,W.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,W.jsx)(z,{className:`w-4 h-4`}),u(`printModal.queue`)]}),(0,W.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,W.jsx)(m,{className:`w-4 h-4`}),u(`printModal.schedule`)]})]})]}),e.scheduleType===`scheduled`&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:u(`printModal.dateTime`)}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex-1 relative`,children:[(0,W.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=>ne(e.target.value),placeholder:fe(r)}),(0,W.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,W.jsx)(m,{className:`w-4 h-4`})}),(0,W.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(F(n,r)),h(j(n,i)),_(!0),y(!0),t({...e,scheduledTime:a}))}},tabIndex:-1})]}),(0,W.jsx)(`div`,{className:`w-32`,children:(0,W.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=>re(e.target.value),placeholder:N(i)})})]}),(!g||!v)&&(0,W.jsx)(`p`,{className:`mt-1 text-xs text-red-700 dark:text-red-400`,children:u(`printModal.invalidDateTime`)})]}),l&&(0,W.jsxs)(`p`,{className:`flex items-start gap-1.5 text-sm text-bambu-gray`,children:[(0,W.jsx)(Ve,{className:`w-3.5 h-3.5 mt-0.5 flex-shrink-0`}),u(`printModal.awaitingReviewNote`)]}),!l&&e.scheduleType===`queue`&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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,W.jsxs)(`label`,{htmlFor:`requireManualStart`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,W.jsx)(Ve,{className:`w-3.5 h-3.5`}),u(`printModal.requireManualStart`)]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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,W.jsx)(`label`,{htmlFor:`requirePrevious`,className:`text-sm text-bambu-gray`,children:u(`printModal.requirePreviousSuccess`)})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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,W.jsxs)(`label`,{htmlFor:`autoOffAfter`,className:`text-sm flex items-center gap-1 ${a?`text-bambu-gray`:`text-bambu-gray/50`}`,children:[(0,W.jsx)(He,{className:`w-3.5 h-3.5`}),u(`printModal.autoOffAfter`)]})]}),c&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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,W.jsxs)(`label`,{htmlFor:`gcodeInjection`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,W.jsx)(x,{className:`w-3.5 h-3.5`}),u(`printModal.gcodeInjection`,`Inject auto-print G-code`)]})]}),o&&e.scheduleType!==`queue`&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.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,W.jsxs)(`label`,{htmlFor:`staggerEnabled`,className:`text-sm flex items-center gap-1 text-bambu-gray`,children:[(0,W.jsx)(C,{className:`w-3.5 h-3.5`}),u(`printModal.staggerPrinterStarts`,`Stagger printer starts`)]})]}),e.staggerEnabled&&(0,W.jsxs)(`div`,{className:`ml-6 space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:u(`printModal.staggerGroupSize`,`Group size`)}),(0,W.jsx)(Ie,{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,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`label`,{className:`block text-xs text-bambu-gray mb-1`,children:u(`printModal.staggerInterval`,`Interval (min)`)}),(0,W.jsx)(Ie,{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,W.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,W.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 Ot({candidates:e,onReorder:t,plateByFile:i,onPlateChange:a,onPlatesReadyChange:o,readOnly:s=!1,readOnlyNote:c,title:l,help:u}){let{t:m}=n(),h=d({queries:s?[]:e.map(e=>({queryKey:[`library-file-plates`,e.id],queryFn:()=>r.getLibraryFilePlates(e.id),staleTime:6e4}))}),g=(0,B.useMemo)(()=>{let t={};return e.forEach((e,n)=>{let r=h[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,h]);(0,B.useEffect)(()=>{if(!s)for(let[e,t]of Object.entries(g)){let n=Number(e);i[n]==null&&t.length>0&&a(n,t[0].index)}},[g,i,a,s]);let _=h.some(e=>e.isPending),v=Object.keys(g).every(e=>i[Number(e)]!=null),y=!s&&!_&&v;(0,B.useEffect)(()=>{o?.(y)},[y,o]);let b=u??m(`printModal.variants.help`),x=s?c??b:b,S=(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,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,W.jsx)(ne,{className:`w-4 h-4 text-bambu-gray`}),(0,W.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:l??m(`printModal.variants.title`)})]}),x!==``&&(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:x}),(0,W.jsx)(`div`,{className:`space-y-2`,children:e.map((t,n)=>{let r=g[t.id],o=t.sliced_for_model;return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded border border-bambu-dark-tertiary p-2`,children:[(0,W.jsxs)(`span`,{className:`text-xs font-mono text-bambu-gray w-5 shrink-0`,children:[n+1,`.`]}),(0,W.jsx)(`span`,{className:`px-2 py-0.5 rounded-full bg-bambu-green/10 text-bambu-green text-xs shrink-0`,children:o||m(`printModal.variants.unknownModel`)}),(0,W.jsx)(`span`,{className:`text-sm text-white truncate min-w-0 flex-1`,title:t.filename,children:t.filename}),r&&(0,W.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-bambu-gray shrink-0`,children:[(0,W.jsx)(C,{className:`w-3 h-3`}),(0,W.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":m(`printModal.variants.plateFor`,{filename:t.filename}),children:r.map(e=>(0,W.jsx)(`option`,{value:e.index,children:e.name||m(`printModal.plateN`,{n:e.index})},e.index))})]}),!s&&(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>S(n,n-1),disabled:n===0,className:`p-1 rounded text-bambu-gray hover:text-white disabled:opacity-30`,"aria-label":m(`printModal.variants.moveUp`),children:(0,W.jsx)(p,{className:`w-3.5 h-3.5`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>S(n,n+1),disabled:n===e.length-1,className:`p-1 rounded text-bambu-gray hover:text-white disabled:opacity-30`,"aria-label":m(`printModal.variants.moveDown`),children:(0,W.jsx)(f,{className:`w-3.5 h-3.5`})})]})]},t.id)})})]})}var kt=`flex-1 px-3 py-2 rounded-lg border transition-colors text-sm`,At=`border-bambu-green bg-bambu-green/10 text-white`,jt=`border-bambu-dark-tertiary bg-bambu-dark text-bambu-gray hover:border-bambu-gray`,Mt=(e,t)=>`${kt} ${e?At:jt} ${t?`opacity-50 cursor-not-allowed${e?``:` hover:border-bambu-dark-tertiary`}`:``}`;function Nt({value:e,onChange:t,blockedModel:r,disabled:i=!1}){let{t:a}=n(),o=r!=null;return(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsxs)(`div`,{role:`radiogroup`,"aria-label":a(`printModal.multiFile.groupLabel`),className:`flex gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===`alternatives`,disabled:o||i,onClick:()=>t(`alternatives`),className:Mt(e===`alternatives`,o||i),children:a(`printModal.multiFile.alternatives`)}),(0,W.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e===`separate`,disabled:i,onClick:()=>t(`separate`),className:Mt(e===`separate`,i),children:a(`printModal.multiFile.separate`)})]}),(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray mt-2`,children:o?a(`printModal.multiFile.alternativesBlocked`,{model:r}):a(e===`alternatives`?`printModal.multiFile.alternativesHint`:`printModal.multiFile.separateHint`)})]})}var Pt=e=>e.trim().toLowerCase();function Ft(e){let t=new Set;for(let n of e){let r=n.sliced_for_model;if(!r)continue;let i=Pt(r);if(t.has(i))return e.find(e=>e.sliced_for_model&&Pt(e.sliced_for_model)===i).sliced_for_model;t.add(i)}return null}function It(e){return e.some(e=>!e.sliced_for_model)||Ft(e)?`separate`:`alternatives`}function Lt(e){if(e.length===0)return null;let t=e[0].sliced_for_model;return t&&e.every(e=>e.sliced_for_model&&Pt(e.sliced_for_model)===Pt(t))?t:null}function Rt(e,t){return t?e.filter(e=>!Le(e.sliced_for_model,t)):[]}function zt(e,t){return t?e.filter(e=>e.sliced_for_model&&e.sliced_for_model!==t):[]}function Bt(e,t,n){let r=0;for(let i of e)(t.includes(i.id)||i.batch_id!=null&&n.includes(i.batch_id))&&i.position>r&&(r=i.position);return r}function Vt(e,t){return`${e}:${t}`}function Ht(e,t){let n=`${t}:`;for(let t of e)if(t.startsWith(n))return!0;return!1}async function Ut(e){let{files:t,plateByFile:n,printerIds:r,quantity:i,asap:a,buildItem:o,addToQueue:s,onProgress:c}=e,l=e.alreadyQueued??new Set,u=(e,t)=>l.has(Vt(e,t)),d=t.reduce((e,t)=>e+r.filter(e=>!u(t.id,e)).length,0),f=[],p=[],m=[],h=[],g=0,_=e.asapInsertedBefore??0;for(let e of t){let t=n[e.id]??null;for(let n=0;n<r.length;n++){if(u(e.id,r[n]))continue;let l=o(e,t,r[n],n);i>1&&(l.quantity=i),a&&(l.insert_at_top=!0,l.insert_position=_+1);let v;try{v=await s(l)}catch(t){return{itemsCreated:g,asapInserted:_,queuedFileIds:f,queuedPairs:p,queuedItemIds:m,queuedBatchIds:h,failure:{file:e,message:t instanceof Error?t.message:String(t)}}}a&&(_+=i);let y=v;typeof y?.id==`number`&&m.push(y.id),typeof y?.batch_id==`number`&&h.push(y.batch_id),p.push(Vt(e.id,r[n])),g++,c?.(g,d)}f.push(e.id)}return{itemsCreated:g,asapInserted:_,queuedFileIds:f,queuedPairs:p,queuedItemIds:m,queuedBatchIds:h,failure:null}}function Wt({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,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(`label`,{htmlFor:`printCostCenter`,className:`text-sm text-bambu-gray`,children:i(`printModal.costCenter`,`Cost center`)}),(0,W.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,W.jsxs)(`option`,{value:e.id,children:[e.name,e.is_private?` (${i(`printModal.personalDefault`,`Personal`)})`:``]},e.id))}),a?.budget_mode===`none`&&(0,W.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`printModal.unlimitedNoBudget`,`Unlimited – no budget limit is set.`)})]})}var J={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},Gt={scheduleType:`asap`,scheduledTime:``,requireManualStart:!1,requirePreviousSuccess:!1,autoOffAfter:!1,gcodeInjection:!1,staggerEnabled:!1,staggerGroupSize:2,staggerIntervalMinutes:5};function Kt(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 qt(e,t){let n=e=>{let n=t[e.slot_id];return!!n&&!Kt(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 Jt({mode:e,archiveId:t,libraryFileId:i,archiveName:a,queueItem:o,initialSelectedPrinterIds:s,preselectPlateId:f,onClose:p,onSuccess:m,projectId:h,cleanupLibraryAfterDispatch:g,variantFiles:_,separateJobsAllowed:b,resumeSeparateJobs:x,onSeparateJobsProgress:S}){let{t:w}=n(),re=c(),{showToast:T}=y(),{hasPermission:ie,hasAnyPermission:ae,user:E}=se(),oe=!ae(`queue:start_unreviewed`,`queue:update_all`),O=!!i&&!t,A=e===`edit-queue-item`,j=e===`create`&&!!b&&!!x&&(_?.length??0)>0,M=j?x.settings:void 0,N=e===`create`&&((_?.length??0)>1||j),[P,fe]=(0,B.useState)(()=>j?`separate`:b&&N?It(_):`alternatives`),F=N&&P===`alternatives`,I=N&&P===`separate`,[he,ge]=(0,B.useState)(j),[_e,ye]=(0,B.useState)(()=>new Set(j?x.queuedPairs:[])),[be,Se]=(0,B.useState)(j?x.asapInserted:0),[Ce,we]=(0,B.useState)(()=>j?x.queuedItemIds??[]:[]),[Te,Ee]=(0,B.useState)(()=>j?x.queuedBatchIds??[]:[]),De=N&&!!b&&!he,Oe=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})):[],ke=Oe.length>0,[R,Ae]=(0,B.useState)(_??[]),[Me,ze]=(0,B.useState)(()=>M?.plateByFile??{}),[Be,Ve]=(0,B.useState)(!1),[z,He]=(0,B.useState)(()=>e===`edit-queue-item`&&o?.printer_id?[o.printer_id]:s?.length?s:M?M.printerIds:[]),[V,Ge]=(0,B.useState)(()=>e===`edit-queue-item`&&o?.plate_id!=null?new Set([o.plate_id]):e===`create`&&!N&&f!=null?new Set([f]):new Set),H=V.size===1?[...V][0]:null,[Ke,Xe]=(0,B.useState)(()=>M?.quantity??1),[Ze,Qe]=(0,B.useState)({}),[et,rt]=(0,B.useState)(()=>e===`edit-queue-item`&&o?{bed_levelling:o.bed_levelling??J.bed_levelling,flow_cali:o.flow_cali??J.flow_cali,vibration_cali:o.vibration_cali??J.vibration_cali,layer_inspect:o.layer_inspect??J.layer_inspect,timelapse:o.timelapse??J.timelapse,nozzle_offset_cali:o.nozzle_offset_cali??J.nozzle_offset_cali,confirm_outcome:o.confirm_outcome??J.confirm_outcome,preheat_override:o.preheat_override??J.preheat_override,preheat_chamber_target_override:o.preheat_chamber_target_override??J.preheat_chamber_target_override}:M?.printOptions??J),[U,it]=(0,B.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=me(pe(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:Gt.staggerGroupSize,staggerIntervalMinutes:Gt.staggerIntervalMinutes}}return M?.scheduleOptions??Gt}),[st,ct]=(0,B.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{}}),[lt,ut]=(0,B.useState)(()=>e===`edit-queue-item`?o?.printer_id??null:null),[dt,ft]=(0,B.useState)({}),[G,pt]=(0,B.useState)(()=>F||e===`edit-queue-item`&&o?.target_model?`model`:M?.assignmentMode??`printer`),[K,mt]=(0,B.useState)(()=>e===`edit-queue-item`&&o?.target_model?o.target_model:M?.targetModel??null),[ht,gt]=(0,B.useState)(()=>e===`edit-queue-item`&&o?.target_location?o.target_location:M?.targetLocation??null),[q,bt]=(0,B.useState)(()=>e===`edit-queue-item`?o?.cost_center_id??null:M?.costCenterId??null),[St,Ct]=(0,B.useState)(o?.estimated_cost??null),[wt,Tt]=(0,B.useState)({}),[kt,At]=(0,B.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{}}),[jt,Mt]=(0,B.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{}}),[Pt]=(0,B.useState)(()=>e===`edit-queue-item`&&o?.printer_id?[o.printer_id]:[]),[Vt]=(0,B.useState)(()=>e===`edit-queue-item`&&o?o.plate_id:null),[Jt,Yt]=(0,B.useState)(!1),[Xt,Zt]=(0,B.useState)({current:0,total:0}),[Qt,$t]=(0,B.useState)(null),[en,tn]=(0,B.useState)(new Set),nn=z.length,Y=z.length>0?z[0]:null,{data:X}=Pe(),rn=(0,B.useRef)(!1);(0,B.useEffect)(()=>{!X||rn.current||e===`edit-queue-item`||M||(rn.current=!0,rt({bed_levelling:X.default_bed_levelling??J.bed_levelling,flow_cali:X.default_flow_cali??J.flow_cali,vibration_cali:X.default_vibration_cali??J.vibration_cali,layer_inspect:X.default_layer_inspect??J.layer_inspect,timelapse:X.default_timelapse??J.timelapse,nozzle_offset_cali:X.default_nozzle_offset_cali??J.nozzle_offset_cali,confirm_outcome:X.default_confirm_outcome??J.confirm_outcome,preheat_override:J.preheat_override,preheat_chamber_target_override:J.preheat_chamber_target_override}))},[X,e,M]);let an=(0,B.useRef)(!1);(0,B.useEffect)(()=>{!X||an.current||e===`edit-queue-item`||M||(an.current=!0,it(e=>({...e,staggerGroupSize:X.stagger_group_size??e.staggerGroupSize,staggerIntervalMinutes:X.stagger_interval_minutes??e.staggerIntervalMinutes})))},[X,e,M]);let on=Ne(X?.currency||`USD`),sn=X?.default_filament_cost??0,Z=X?.billing_enabled===!0,{data:Q,isLoading:cn}=l({queryKey:[`printers`],queryFn:r.getPrinters}),{data:ln,isLoading:un}=l({queryKey:[`finance`,`cost-centers`,`mine`],queryFn:r.getMyCostCenters,enabled:!!E&&Z}),dn=(0,B.useMemo)(()=>(ln||[]).filter(e=>e.can_print&&e.is_active),[ln]),fn=(0,B.useMemo)(()=>dn.find(e=>e.id===q)??null,[dn,q]);(0,B.useEffect)(()=>{if(dn.length===0||q!=null&&dn.some(e=>e.id===q))return;let e=dn.find(e=>e.is_private);bt(e?.id??dn[0].id)},[dn,q]);let pn=d({queries:z.map(e=>({queryKey:[`printer-inventory-remain`,e],queryFn:()=>r.getInventoryRemain(e),staleTime:30*1e3,refetchOnMount:`always`,enabled:z.length>0}))}),mn=(0,B.useMemo)(()=>{let e=new Map;return z.forEach((t,n)=>{let r=pn[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},[z,pn]),hn=(0,B.useMemo)(()=>{let e=new Map;return z.forEach((t,n)=>{let r=pn[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},[z,pn]),{data:gn,isError:_n}=l({queryKey:[`archive`,t],queryFn:()=>r.getArchive(t),enabled:!!t&&!O}),{data:vn,isError:yn}=l({queryKey:[`library-file`,i],queryFn:()=>r.getLibraryFile(i),enabled:O&&!!i}),bn=gn?.sliced_for_model||vn?.sliced_for_model||null,xn=!!t&&!O&&!gn&&!_n||O&&!vn&&!yn,Sn=I?Lt(R):bn,Cn=(0,B.useMemo)(()=>I&&G===`model`?Rt(R,K):[],[I,G,R,K]),wn=e=>{e!==P&&(Jt||e===`alternatives`&&Ft(R)!=null||(fe(e),pt(e===`alternatives`?`model`:`printer`),mt(null),gt(null),e===`alternatives`&&He([])))},Tn=(0,B.useMemo)(()=>O?void 0:ot(gn?.extra_data,Y),[O,gn?.extra_data,Y]),{data:En,isError:Dn}=l({queryKey:[`archive-plates`,t],queryFn:()=>r.getArchivePlates(t),enabled:!!t&&!O,retry:!1}),{data:On}=l({queryKey:[`library-file-plates`,i],queryFn:()=>r.getLibraryFilePlates(i),enabled:O&&!!i}),kn=O?On:En,{data:An,isError:jn}=l({queryKey:[`archive-filaments`,t,H],queryFn:()=>r.getArchiveFilamentRequirements(t,H??void 0),enabled:!!t&&!O&&(H!==null||!kn?.is_multi_plate),retry:!1}),{data:Mn}=l({queryKey:[`library-file-filaments`,i,H],queryFn:()=>r.getLibraryFileFilamentRequirements(i,H??void 0),enabled:O&&!!i&&(H!==null||!kn?.is_multi_plate)}),Nn=!O&&(Dn||jn),Pn=O?Mn:An,Fn=(0,B.useMemo)(()=>qt(Pn,kt),[Pn,kt]),In=tt(),{data:Ln}=l({queryKey:[`available-filaments`,K,ht],queryFn:()=>r.getAvailableFilaments(K,ht??void 0),enabled:G===`model`&&!!K}),Rn=(0,B.useMemo)(()=>Array.from(new Set(R.map(e=>e.sliced_for_model).filter(e=>!!e))),[R]),zn=d({queries:F?Rn.map(e=>({queryKey:[`available-filaments`,e,ht],queryFn:()=>r.getAvailableFilaments(e,ht??void 0)})):[]}),Bn=(0,B.useMemo)(()=>{let e=new Set,t=[];for(let n of zn)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},[zn]),Vn=F?Bn:Ln,{data:Hn,isLoading:Un}=l({queryKey:[`printer-status`,Y],queryFn:()=>r.getPrinterStatus(Y),enabled:!!Y}),Wn=xe(X?.prefer_lowest_filament,Hn?.ams_filament_backup),Gn=async()=>{if(U.scheduleType!==`asap`||G!==`printer`||z.length===0)return!1;try{return(await Promise.all(z.map(e=>re.fetchQuery({queryKey:[`printer-status`,e],queryFn:()=>r.getPrinterStatus(e),staleTime:0})))).some(e=>!Re(e))}catch{return!0}},Kn=async e=>{await Gn()?T(w(`queue.printQueuedWillStartWhenIdle`)):T(e===1?G===`model`?`Queued for any ${K}`:w(`queue.printQueued`):w(`queue.itemsQueued`,{count:e}))},{amsMapping:qn}=Ye(Fn,Hn,st,Wn,Y?mn.get(Y):void 0),Jn=(0,B.useMemo)(()=>[...V].sort((e,t)=>e-t),[V]),$=V.size>1,Yn=d({queries:($?Jn:[]).map(e=>({queryKey:O?[`library-file-filaments`,i,e]:[`archive-filaments`,t,e],queryFn:()=>O?r.getLibraryFileFilamentRequirements(i,e):r.getArchiveFilamentRequirements(t,e),enabled:O?!!i:!!t,retry:!1}))}),Xn=Yn.some(e=>e.isPending),Zn=Yn.some(e=>e.isError),Qn=(0,B.useMemo)(()=>{let e=new Map;return Jn.forEach((t,n)=>{let r=Yn[n]?.data;r&&e.set(t,r)}),e},[Jn,Yn.map(e=>e.dataUpdatedAt).join(`|`)]),$n=(0,B.useMemo)(()=>{let e=new Map;for(let[t,n]of Qn)e.set(t,qt(n,kt)??n);return e},[Qn,kt]),[er,tr]=(0,B.useState)({}),[nr,rr]=(0,B.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{}}),[ir,ar]=(0,B.useState)({}),or=(0,B.useMemo)(()=>{let e=new Map;if(!$||!Y||z.length!==1)return e;let t=We(Hn),n=Hn?.fila_switch?.installed===!0,r=mn.get(Y);for(let i of Jn){let a=$n.get(i);if(!a)continue;let o=qe(a,t,er[i]??{},Wn,r,n);e.set(i,Je(o))}return e},[$,Y,Hn,mn,Jn,$n,er,Wn,z.length]),sr=$e(z,Q,Fn,st,dt,ft,X?.prefer_lowest_filament,mn,lt);(0,B.useEffect)(()=>{let e=kn?.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])})},[kn,V.size]),(0,B.useEffect)(()=>{if(!F||!i)return;let e=Me[i];e!=null&&Ge(t=>t.size===1&&t.has(e)?t:new Set([e]))},[F,i,Me]);let cr=(0,B.useRef)(!1);(0,B.useEffect)(()=>{if(e===`edit-queue-item`)return;if(z.length>0){cr.current=!0;return}let t=Q?.filter(e=>e.is_active)||[],n=X?.default_printer_id,r=n!=null&&!F&&G===`printer`&&!xn?t.find(e=>e.id===n&&(!Sn||e.model===Sn)):void 0;r&&!cr.current?(cr.current=!0,He([r.id])):t.length===1&&He([t[0].id])},[e,Q,z.length,X?.default_printer_id,F,G,Sn,xn]),(0,B.useEffect)(()=>{if(e===`edit-queue-item`){let e=JSON.stringify(z.sort())!==JSON.stringify(Pt.sort());(e||H!==Vt)&&(ct({}),tr({}),ft({}),tn(new Set)),e&&(rr({}),ar({}))}else ct({}),tr({}),ft({}),tn(new Set)},[e,z,H,Pt,Vt]);let[lr,ur]=(0,B.useState)(K),[dr,fr]=(0,B.useState)(H);(0,B.useEffect)(()=>{let t=K!==null&&K!==lr,n=H!==dr;!t&&!n||(t&&ur(K),n&&fr(H),!(t&&!n&&lr===null)&&(e!==`edit-queue-item`||lr!==null)&&(At({}),Mt({})))},[K,H,lr,dr,e]),(0,B.useEffect)(()=>{G!==`model`||K||!Sn||Q?.some(e=>e.is_active&&e.model===Sn)&&mt(Sn)},[G,K,Sn,Q]),(0,B.useEffect)(()=>{if(!X?.per_printer_mapping_expanded||z.length<=1)return;let e=z.filter(e=>{if(en.has(e))return!1;let t=sr.printerResults.find(t=>t.printerId===e);return t&&t.status&&!t.isLoading});e.length>0&&(tn(t=>{let n=new Set(t);return e.forEach(e=>n.add(e)),n}),e.forEach(e=>{sr.autoConfigurePrinter(e)}))},[X?.per_printer_mapping_expanded,z,en,sr]),(0,B.useEffect)(()=>{let e=e=>{e.key===`Escape`&&!Jt&&p()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[p,Jt]);let pr=kn?.is_multi_plate??!1,mr=kn?.plates??[],hr=!N&&pr&&mr.length>1?mr.filter(e=>V.has(e.index)).map(e=>{let t=w(`printModal.plateN`,`Plate {{n}}`,{n:e.index}),n=e.name?.trim();return n&&n!==t?`${t} – ${n}`:t}).join(`, `):``,gr=(0,B.useMemo)(()=>{if(!Qt||Qt.length===0)return``;let e=Qt.map(e=>e.pooled?w(`printModal.insufficientFilamentLinePooled`,{printer:e.printerName,slot:e.slotLabel,required:Math.round(e.requiredGrams),remaining:Math.round(e.remainingGrams)}):w(`printModal.insufficientFilamentLine`,{printer:e.printerName,slot:e.slotLabel,required:Math.round(e.requiredGrams),remaining:Math.round(e.remainingGrams)}));return[w(`printModal.insufficientFilamentMessage`),...e].join(`
  2. `)},[Qt,w]),_r=u({mutationFn:e=>r.addToQueue(e)}),vr=u({mutationFn:e=>r.updateQueueItem(o.id,e)}),yr=(e,t)=>$?t===null||z.length!==1?void 0:or.get(t):z.length>1||lt!==null&&lt!==e?sr.getFinalMapping(e):qn,br=(t,n,r)=>{if(!(e!==`edit-queue-item`||!Array.isArray(o?.ams_mapping))&&!(t!==o.printer_id||n!==Vt))return o.ams_mapping[r-1]},xr=e=>z.length>1?sr.printerResults.find(t=>t.printerId===e)?.status:Hn,Sr=(e,t,n)=>{if(!n)return!1;let r=$?t==null?void 0:$n.get(t)?.filaments:Fn?.filaments;if(!r)return!1;let i=We(xr(e));return r.some(r=>{let a=r.slot_id??0,o=a>0?n[a-1]:void 0;if(o==null||o<0||br(e,t,a)===o)return!1;let s=i.find(e=>e.globalTrayId===o);return!!s?.type&&!!r.type&&!L(s.type,r.type)})},Cr=oe||(U.scheduleType===`queue`?U.requireManualStart:U.scheduleType===`scheduled`&&!!o?.manual_start),wr=async(n,s)=>{if(n?.preventDefault(),Z&&fn==null){T(w(`printModal.noPrintableCostCenters`),`error`);return}if(!s?.skipFilamentCheck&&!X?.disable_filament_warnings&&!A&&!I&&G===`printer`){let e=[],t=$?Jn.map(e=>({plateId:e,reqs:Qn.get(e)?.filaments??[]})):[{plateId:H,reqs:Pn?.filaments??[]}];if(t.some(e=>e.reqs.length>0)&&hn.size>0)for(let n of z){let r=z.length>1?sr.printerResults.find(e=>e.printerId===n)?.status:Hn,i=We(r),a=new Map(i.map(e=>[e.globalTrayId,e.label])),o=hn.get(n),s=Q?.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=yr(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){$t(e);return}}if(G===`printer`&&z.length===0){T(`Please select at least one printer`,`error`);return}if(!F&&G===`model`&&!K){T(`Please select a target printer model`,`error`);return}if(!N&&G===`model`&&!Le(bn,K)){T(`File was sliced for ${bn} and cannot be dispatched to ${K} printers`,`error`);return}if(Cn.length>0){T(w(`printModal.multiFile.incompatible`,{model:K,files:Cn.map(e=>e.filename).join(`, `)}),`error`);return}Yt(!0);let c=V.size>1?mr.filter(e=>V.has(e.index)):[null],l=G===`model`?c.length:z.length*c.length;Zt({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&&Kt(r,{type:t,color:n})?{tray_info_idx:r.tray_info_idx}:{}},v=e=>{let t=[];if(e?.filaments)for(let n of e.filaments){let e=kt[n.slot_id],r=jt[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=je(a,nt(o.tray_info_idx??(e?void 0:n.tray_info_idx),i,In));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(kt)){let i=parseInt(e,10),a=jt[i]??!1,o=f(i,n,r),s=je(r,nt(o.tray_info_idx,n,In));t.push({slot_id:i,type:n,color:r,color_name:s,...o,force_color_match:a})}return t.length>0?t:void 0},y=v(Pn),b=e=>$&&e!==null?v(Qn.get(e)):y,x=(e,t,n)=>{if(z.length!==1)return;let r=($?t==null?void 0:er[t]:lt===null||lt===e?st:void 0)?.[n];if(r!=null)return d.get(n)?.force_color_match===!0&&br(e,t,n)===r?void 0:r},C=(e,t)=>{let n=e==null?[]:We(xr(e)),r=z.length===1,i=b(t)?.flatMap(i=>{let a=!!kt[i.slot_id];if(!a&&!(i.force_color_match&&r))return[];let o=i.force_color_match&&e!=null?x(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(F){try{await r.addToQueue({variants:R.map(e=>({library_file_id:e.id,plate_id:Me[e.id]??null,filament_overrides:y})),target_location:ht,require_previous_success:U.requirePreviousSuccess,auto_off_after:U.autoOffAfter,gcode_injection:U.gcodeInjection,manual_start:oe||U.scheduleType===`queue`&&U.requireManualStart,scheduled_time:U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).toISOString():void 0,quantity:Ke,...et,project_id:h??void 0}),T(w(`printModal.variants.queued`,{count:R.length}),`success`),re.invalidateQueries({queryKey:[`queue`]}),m?.(),p()}catch(e){T(e instanceof Error?e.message:String(e),`error`)}finally{Yt(!1)}return}if(I){let e=G===`printer`?z:[null],t=G===`printer`&&U.staggerEnabled&&z.length>1,n=t?U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).getTime():Date.now():0,i=U.scheduleType===`asap`;Zt({current:0,total:R.length*e.length});try{let a=be;if(i&&(Ce.length>0||Te.length>0))try{a=Bt(await r.getQueue(void 0,`pending`),Ce,Te)}catch{}let o=await Ut({files:R,plateByFile:Me,printerIds:e,alreadyQueued:_e,asapInsertedBefore:a,quantity:Or,asap:i,buildItem:(e,r,i,a)=>{let o={library_file_id:e.id,plate_id:r,printer_id:G===`printer`?i:null,target_model:G===`model`?K:null,target_location:G===`model`?ht:null,require_previous_success:U.requirePreviousSuccess,auto_off_after:U.autoOffAfter,gcode_injection:U.gcodeInjection,manual_start:oe||U.scheduleType===`queue`&&U.requireManualStart,scheduled_time:U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).toISOString():void 0,...et,project_id:h??void 0,cost_center_id:Z?q:void 0,cleanup_library_after_dispatch:g};if(t){let e=Math.floor(a/U.staggerGroupSize);if(e>0){let t=e*U.staggerIntervalMinutes*6e4;o.scheduled_time=new Date(n+t).toISOString()}}return o},addToQueue:e=>_r.mutateAsync(e),onProgress:(e,t)=>Zt({current:e,total:t})});Se(o.asapInserted);let s=[...Ce,...o.queuedItemIds],c=[...Te,...o.queuedBatchIds];if(we(s),Ee(c),o.failure){let e=new Set([..._e,...o.queuedPairs]);ye(e);let t=o.failure.file.id,n=Ht(e,t)?[...o.queuedFileIds,t]:o.queuedFileIds,r=R.filter(e=>n.includes(e.id)).map(e=>e.filename);T(w(`printModal.multiFile.failed`,{filename:o.failure.file.filename,message:o.failure.message,queued:r.length>0?r.join(`, `):w(`common.none`)}),`error`);let i=R.filter(e=>!o.queuedFileIds.includes(e.id));if(Ae(i),o.itemsCreated>0&&ge(!0),e.size>0){let t=i.map(e=>e.id);S?.({queuedPairs:[...e],asapInserted:o.asapInserted,queuedItemIds:s,queuedBatchIds:c,settings:{plateByFile:Me,assignmentMode:G,printerIds:z,targetModel:K,targetLocation:ht,quantity:Ke,printOptions:et,scheduleOptions:U,costCenterId:q},queuedFileIds:(_??[]).map(e=>e.id).filter(e=>!t.includes(e)),remainingFileIds:t})}re.invalidateQueries({queryKey:[`queue`]});return}o.itemsCreated>0&&await Kn(o.itemsCreated),re.invalidateQueries({queryKey:[`queue`]}),m?.(),p()}catch(e){T(e instanceof Error?e.message:String(e),`error`)}finally{Yt(!1)}return}let ee=c.map((e,t)=>{let n=e?e.index:H;return{plate_id:n,plate_name:e&&e.name||null,quantity_target:Ar(n),sort_order:t}}),te=ee.reduce((e,t)=>e+t.quantity_target,0),ne=e===`create`&&(c.length>1||te>1)&&(G===`model`||z.length===1),ie=null;if(ne)try{let e=(a||``).replace(/\.gcode\.3mf$/i,``).replace(/\.3mf$/i,``),n=c.length>1?`${e||`Batch`} · ${c.length} plates`:`${e||`Batch`} ×${te}`;ie=(await r.createBatch({name:n,archive_id:O?void 0:t,library_file_id:O?i:void 0,plates:ee})).id}catch{ie=null}let ae=0,E=(e,t=1)=>{U.scheduleType===`asap`&&(e.insert_at_top=!0,e.insert_position=ae+1,ae+=t)},D=e=>{let t=e!=null&&$?ir[e]:nr;return t&&Object.keys(t).length>0?t:void 0},k=(e,n)=>{let r=n===void 0?H:n,a=r!=null&&$?wt[r]??null:St;return{printer_id:G===`printer`?e:null,target_model:G===`model`?K:null,target_location:G===`model`?ht:null,filament_overrides:G===`model`?b(r):C(e,r),archive_id:O?void 0:t,library_file_id:O?i:void 0,require_previous_success:U.requirePreviousSuccess,auto_off_after:U.autoOffAfter,gcode_injection:U.gcodeInjection,manual_start:oe||U.scheduleType===`queue`&&U.requireManualStart,skip_filament_check:e!=null&&s?.acknowledgedPrinters?.includes(e)||e!=null&&Sr(e,r,yr(e,r))?!0:void 0,ams_mapping:e?yr(e,r):void 0,nozzle_rack_choice:e?D(r):void 0,plate_id:r,scheduled_time:U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).toISOString():void 0,...et,project_id:h??void 0,cost_center_id:Z?q:void 0,estimated_cost:Z&&q!=null?a:void 0,batch_id:ie??void 0,cleanup_library_after_dispatch:g}};if(G===`model`){let t=0;for(let n of c){t++,Zt({current:t,total:l});let r=n?n.index:H;try{if(e===`edit-queue-item`&&!n){let e={printer_id:null,target_model:K,target_location:ht,filament_overrides:y||null,require_previous_success:U.requirePreviousSuccess,auto_off_after:U.autoOffAfter,gcode_injection:U.gcodeInjection,manual_start:Cr,ams_mapping:void 0,plate_id:r,scheduled_time:U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).toISOString():null,...et,cost_center_id:Z?q:void 0,estimated_cost:Z&&q!=null?St:void 0};await vr.mutateAsync(e)}else{let e=k(null,r),t=Ar(r);t>1&&(e.quantity=t),E(e,t),await _r.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=U.staggerEnabled&&!A&&z.length>1,t=e?U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).getTime():Date.now():0,n=0;for(let r of c){let i=r?r.index:H;for(let a=0;a<z.length;a++){let o=z[a];n++,Zt({current:n,total:l});try{if(A&&n===1){let e=yr(o,i),t={printer_id:o,target_model:null,target_location:null,filament_overrides:C(o,i)??null,require_previous_success:U.requirePreviousSuccess,auto_off_after:U.autoOffAfter,gcode_injection:U.gcodeInjection,manual_start:Cr,ams_mapping:e,skip_filament_check:Sr(o,i,e)?!0:void 0,nozzle_rack_choice:D(i)??null,plate_id:i,scheduled_time:U.scheduleType===`scheduled`&&U.scheduledTime?new Date(U.scheduledTime).toISOString():null,...et,cost_center_id:Z?q:void 0,estimated_cost:Z&&q!=null?i!=null&&$?wt[i]??null:St:void 0};await vr.mutateAsync(t)}else{let n=k(o,i),r=Ar(i);if(r>1&&(n.quantity=r),E(n,r),e){let e=Math.floor(a/U.staggerGroupSize);if(e>0){let r=e*U.staggerIntervalMinutes*6e4;n.scheduled_time=new Date(t+r).toISOString()}}await _r.mutateAsync(n)}u.success++}catch(e){u.failed++;let t=Q?.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}`)}}}}Yt(!1),u.failed===0?(A?e===`edit-queue-item`&&T(`Queue item updated`):await Kn(u.success),re.invalidateQueries({queryKey:[`queue`]}),m?.(),p()):u.success===0?T(`Failed: ${u.errors[0]}`,`error`):(T(`${u.success} succeeded, ${u.failed} failed`,`error`),re.invalidateQueries({queryKey:[`queue`]}))},Tr=Jt||vr.isPending,Er=!I&&G===`printer`&&z.length===1&&Un,Dr=(0,B.useMemo)(()=>!(Tr||Z&&(un||fn==null)||G===`printer`&&z.length===0||!F&&G===`model`&&!K||!N&&G===`model`&&!Le(bn,K)||Cn.length>0||N&&!Be||!I&&pr&&V.size===0||Xn||Zn||Er),[z.length,G,K,bn,pr,V.size,Tr,Xn,Zn,Er,F,N,I,Cn,Be,Z,un,fn]),Or=G===`printer`&&z.length>1?1:Ke,kr=e===`create`&&!N&&pr&&mr.length>1,Ar=e=>!kr||e==null?Or:G===`printer`&&z.length>1?1:Math.max(1,Ze[e]??1);(0,B.useEffect)(()=>{e===`create`&&U.gcodeInjection&&!Fe(X)&&it(e=>({...e,gcodeInjection:!1}))},[e,X,U.gcodeInjection]);let jr=A?{title:w(`queue.editQueueItem`),icon:te,submitText:w(`common.save`),submitIcon:te,loadingText:Xt.total>1?w(`queue.savingProgress`,{current:Xt.current,total:Xt.total}):w(`common.saving`)}:{title:w(`common.print`),icon:ne,submitText:w(`common.print`),submitIcon:ne,loadingText:Xt.total>1?w(`queue.addingProgress`,{current:Xt.current,total:Xt.total}):w(`queue.adding`)},Mr=jr.icon,Nr=jr.submitIcon,Pr=!I&&Y&&V.size<=1&&(O||!pr||H!==null);(0,B.useEffect)(()=>{(!Pr||Nn||z.length!==1)&&Ct(null)},[Nn,z.length,Pr]);let Fr=!I&&!!Y&&$&&z.length===1,Ir=G===`model`&&!I&&(F||!!K)&&!!Vn&&Vn.length>0,Lr=(0,B.useMemo)(()=>new Set([`H2D`,`H2DPRO`,`H2C`,`X2D`]),[]),Rr=(0,B.useMemo)(()=>G===`model`?K?Lr.has(K.toUpperCase().replace(/[\s-]/g,``)):!1:!Q||z.length===0?!1:z.some(e=>Q.find(t=>t.id===e)?.nozzle_count===2),[G,K,Q,z,Lr]);return(0,W.jsxs)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:Jt?void 0:p,children:[(0,W.jsx)(le,{className:`w-full max-w-4xl max-h-[90vh] overflow-y-auto`,onClick:e=>e.stopPropagation(),children:(0,W.jsxs)(ce,{className:`p-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Mr,{className:`w-5 h-5 text-bambu-green`}),(0,W.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:jr.title})]}),(0,W.jsx)(ue,{variant:`ghost`,size:`sm`,onClick:p,disabled:Jt,children:(0,W.jsx)(k,{className:`w-5 h-5`})})]}),(0,W.jsxs)(`form`,{onSubmit:wr,className:`p-4 space-y-4`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[(0,W.jsx)(`span`,{className:`block text-bambu-gray mb-1`,children:`Print Job`}),(0,W.jsx)(`span`,{className:`text-white font-medium truncate block`,children:a})]}),(()=>{if(I||!mr.length)return null;let e=at((H==null?mr[0]:mr.find(e=>e.index===H))?.bed_type);return e?(0,W.jsxs)(`p`,{className:`flex items-center gap-1.5 text-xs text-bambu-gray -mt-2`,title:e.label,children:[(0,W.jsx)(`img`,{src:e.icon,alt:``,className:`w-4 h-4 object-contain flex-shrink-0`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.label})]}):null})(),!N&&(0,W.jsx)(yt,{plates:mr,isMultiPlate:pr,selectedPlates:V,onToggle:e=>{Ge(t=>{let n=new Set(t);return A?(n.clear(),n.add(e)):n.has(e)?n.delete(e):n.add(e),n})},onSelectAll:A?void 0:()=>Ge(new Set(mr.map(e=>e.index))),onDeselectAll:A?void 0:()=>Ge(new Set),multiSelect:!A,quantities:kr?Ze:void 0,onQuantityChange:kr?(e,t)=>Qe(n=>({...n,[e]:t})):void 0}),De&&(0,W.jsx)(Nt,{value:P,onChange:wn,blockedModel:Ft(R),disabled:Tr}),N&&(0,W.jsx)(Ot,{candidates:R,onReorder:Ae,plateByFile:Me,onPlateChange:(e,t)=>ze(n=>({...n,[e]:t})),onPlatesReadyChange:Ve,title:I?w(`printModal.multiFile.orderTitle`):void 0,help:De?``:I?w(`printModal.multiFile.separateHint`):void 0}),ke&&(0,W.jsx)(Ot,{candidates:Oe,readOnly:!0,readOnlyNote:w(`printModal.variants.editNote`),onReorder:()=>{},plateByFile:{},onPlateChange:()=>{}}),!F&&!ke&&!s?.length&&(0,W.jsx)(xt,{printers:Q||[],selectedPrinterIds:z,onMultiSelect:He,isLoading:cn,allowMultiple:!0,showInactive:e===`edit-queue-item`,disableBusy:!1,printerMappingResults:sr.printerResults,filamentReqs:$||I?void 0:Fn,onAutoConfigurePrinter:sr.autoConfigurePrinter,onUpdatePrinterConfig:sr.updatePrinterConfig,assignmentMode:G,onAssignmentModeChange:pt,targetModel:K,onTargetModelChange:mt,targetLocation:ht,onTargetLocationChange:gt,slicedForModel:Sn}),Cn.length>0&&(0,W.jsxs)(`div`,{className:`p-3 mb-2 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,W.jsx)(v,{className:`w-4 h-4 text-red-600 dark:text-red-400 flex-shrink-0`}),(0,W.jsx)(`span`,{className:`text-sm text-red-700 dark:text-red-400`,children:w(`printModal.multiFile.incompatible`,{model:K,files:Cn.map(e=>e.filename).join(`, `)})})]}),Ir&&!$&&Pn&&(0,W.jsx)(vt,{filamentReqs:Pn,availableFilaments:Vn,overrides:kt,onChange:At,forceColorMatch:jt,onForceColorMatchChange:(e,t)=>Mt(n=>({...n,[e]:t}))}),Ir&&$&&Jn.map((e,t)=>{let n=mr.find(t=>t.index===e),r=Qn.get(e);return r?(0,W.jsx)(vt,{plateLabel:n?.name||w(`printModal.plateN`,`Plate {{n}}`,{n:e}),showHint:t===0,filamentReqs:r,availableFilaments:Ln,overrides:kt,onChange:At,forceColorMatch:jt,onForceColorMatchChange:(e,t)=>Mt(n=>({...n,[e]:t}))},e):null}),!I&&bn&&G===`printer`&&z.length===1&&(()=>{let e=Q?.find(e=>e.id===z[0]);return e&&e.model&&bn!==e.model?(0,W.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,W.jsx)(D,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,W.jsxs)(`span`,{className:`text-sm text-yellow-700 dark:text-yellow-400`,children:[`File was sliced for `,bn,`, but printing on `,e.model]})]}):null})(),I&&G===`printer`&&[...new Set(z.map(e=>Q?.find(t=>t.id===e)?.model).filter(e=>!!e))].map(e=>{let t=zt(R,e);return t.length===0?null:(0,W.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,W.jsx)(D,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,W.jsx)(`span`,{className:`text-sm text-yellow-700 dark:text-yellow-400`,children:w(`printModal.multiFile.notSlicedFor`,{model:e,files:t.map(e=>e.filename).join(`, `)})})]},e)}),Nn&&(0,W.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,W.jsx)(v,{className:`w-4 h-4 text-orange-600 dark:text-orange-400 mt-0.5 flex-shrink-0`}),(0,W.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.`})]}),Zn&&(0,W.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,W.jsx)(v,{className:`w-4 h-4 text-orange-600 dark:text-orange-400 mt-0.5 flex-shrink-0`}),(0,W.jsx)(`p`,{className:`text-orange-700 dark:text-orange-400`,children:w(`printModal.plateFilamentsUnreadable`,`The filaments of a selected plate could not be read, so it can't be mapped. Deselect it to queue the others.`)})]}),Pr&&!Nn&&z.length===1&&(0,W.jsx)(_t,{printerId:Y,filamentReqs:Fn,manualMappings:st,onManualMappingChange:e=>{ut(Y),ct(e)},onEstimatedCostChange:Ct,budgetAvailable:Z?fn?.budget_available??null:null,quantity:Or,defaultExpanded:!!s?.length||(X?.per_printer_mapping_expanded??!1),currencySymbol:on,defaultCostPerKg:sn,forceColorMatch:jt,onForceColorMatchChange:(e,t)=>Mt(n=>({...n,[e]:t})),archiveAmsMapping:Tn,nozzleRackChoice:nr,onNozzleRackChoiceChange:rr}),Fr&&!Nn&&Jn.map(e=>{let t=mr.find(t=>t.index===e),n=$n.get(e);return n?(0,W.jsx)(_t,{printerId:Y,plateLabel:t?.name||w(`printModal.plateN`,`Plate {{n}}`,{n:e}),filamentReqs:n,manualMappings:er[e]??{},onManualMappingChange:t=>tr(n=>({...n,[e]:t})),onEstimatedCostChange:t=>Tt(n=>({...n,[e]:t})),budgetAvailable:Z?fn?.budget_available??null:null,quantity:Ar(e),defaultExpanded:!1,currencySymbol:on,defaultCostPerKg:sn,forceColorMatch:jt,onForceColorMatchChange:(e,t)=>Mt(n=>({...n,[e]:t})),archiveAmsMapping:Tn,nozzleRackChoice:ir[e]??{},onNozzleRackChoiceChange:t=>ar(n=>({...n,[e]:t}))},e):null}),(e===`create`||nn>0||G===`model`&&K)&&(0,W.jsx)(Et,{options:et,onChange:rt,defaultExpanded:!!s?.length,showDualNozzleOptions:Rr}),Z&&dn.length>0&&(0,W.jsx)(Wt,{costCenters:dn,selectedCostCenterId:q,onChange:bt}),Z&&!un&&dn.length===0&&(0,W.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,W.jsx)(D,{className:`w-4 h-4 mt-0.5 shrink-0`}),w(`printModal.noPrintableCostCenters`)]}),e!==`edit-queue-item`&&!kr&&(G===`model`||z.length<=1)&&(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`label`,{htmlFor:`printQuantity`,className:`text-sm text-bambu-gray whitespace-nowrap`,children:w(`queue.quantity`,`Quantity`)}),(0,W.jsx)(Ie,{id:`printQuantity`,min:1,max:999,value:Ke,onChange:Xe,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`}),Ke>1&&(0,W.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:w(`queue.quantityHint`,`Creates {{count}} queue items`,{count:I?Ke*R.length:Ke})})]}),(0,W.jsx)(Dt,{options:U,onChange:it,dateFormat:X?.date_format||`system`,timeFormat:X?.time_format||`system`,canControlPrinter:ie(`printers:control`),showStagger:!A&&G===`printer`&&z.length>1,printerCount:z.length,hasGcodeSnippets:Fe(X),needsReview:oe}),(0,W.jsxs)(`button`,{type:`button`,"aria-pressed":et.confirm_outcome,title:w(`printModal.askForOutcomeTitle`),onClick:()=>rt(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 ${et.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,W.jsx)(Ue,{className:`w-4 h-4`}),w(`printModal.askForOutcome`)]}),vr.isError&&(0,W.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:vr.error?.message||`Failed to complete operation`}),Er&&(0,W.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,W.jsx)(ee,{className:`w-4 h-4 animate-spin`}),w(`printModal.waitingForAmsStatus`,{printer:Q?.find(e=>e.id===Y)?.name??``})]}),hr&&(0,W.jsxs)(`p`,{className:`flex items-center gap-1.5 text-sm text-bambu-gray min-w-0`,title:hr,"data-testid":`selected-plates-summary`,children:[(0,W.jsx)(C,{className:`w-4 h-4 flex-shrink-0`}),(0,W.jsx)(`span`,{className:`truncate`,children:hr})]}),(0,W.jsxs)(`div`,{className:`flex gap-3 pt-2`,children:[(0,W.jsx)(ue,{type:`button`,variant:`secondary`,onClick:p,className:`flex-1`,disabled:Jt,children:`Cancel`}),(0,W.jsx)(ue,{type:`submit`,disabled:!Dr,className:`flex-1`,children:Tr?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ee,{className:`w-4 h-4 animate-spin`}),jr.loadingText]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Nr,{className:`w-4 h-4`}),jr.submitText]})})]})]})]})}),Qt&&Qt.length>0&&(0,W.jsx)(de,{title:w(`printModal.insufficientFilamentTitle`),message:gr,confirmText:w(`printModal.printAnyway`),cancelText:w(`common.cancel`),variant:`warning`,onConfirm:()=>{let e=[...new Set(Qt.map(e=>e.printerId))];$t(null),wr(void 0,{skipFilamentCheck:!0,acknowledgedPrinters:e})},onCancel:()=>$t(null)})]})}export{at as a,We as c,z as d,Ve as f,wt as i,Ue as l,St as n,nt as o,Be as p,Ct as r,tt as s,Jt as t,He as u};