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