| 1 |
- import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{T as t,a as n,k as r,w as i}from"./client-Bol9xAus.js";import{u as a}from"./chunk-62JRHF6Z-KKqrVMYU.js";import{n as o}from"./QueryClientProvider-CPZTuCm3.js";import{t as s}from"./useQuery-VntlVx44.js";import{t as c}from"./useMutation-Bln19oAR.js";import{n as l}from"./ToastContext-Ba_la89E.js";import{t as u}from"./layers-BMSCnYnH.js";import{t as d}from"./link-2-i1odOapm.js";import{t as f}from"./link-DBLfoD-E.js";import{t as p}from"./loader-circle-DCtnN61i.js";import{t as m}from"./package-C-xKmwka.js";import{t as h}from"./search-BUSSCa75.js";import{t as g}from"./settings-2-CJPHVqIN.js";import{t as _}from"./unlink-Bv_tHHhd.js";import{t as ee}from"./x-CDFhisoK.js";import{t as v}from"./Button-D7wJJlop.js";import{C as y,D as b,E as te,F as x,G as S,H as ne,I as C,M as w,P as re,S as ie,T as ae,U as oe,W as se,_ as ce,b as T,x as le,y as ue,z as de}from"./amsHelpers-m0tbln8b.js";import{a as fe,c as E}from"./colors-D_-ITfUn.js";import{n as pe}from"./useUiSettings-hktWVJHa.js";import{i as me,n as he,r as ge,t as _e}from"./AmsUnitCard-nbf45Eiz.js";import{n as ve}from"./spoolPaint-Imx_KAjK.js";import{t as ye}from"./printerModel-Ch1kCIYp.js";import{n as be,t as xe}from"./ConfigureAmsSlotModal-BdCLD1Xu.js";var D=e(r(),1),O=i();function Se({isOpen:e,onClose:r,tagUid:i,trayUuid:a,printerId:u,amsId:d,trayId:m}){let{t:g}=t(),_=o(),{showToast:y}=l(),[b,te]=(0,D.useState)(``),x=a||i,{data:S,isLoading:ne}=s({queryKey:[`unlinked-spools`],queryFn:n.getUnlinkedSpools,enabled:e}),C=(0,D.useMemo)(()=>S?S.filter(e=>{if(!b)return!0;let t=b.toLowerCase();return e.filament_name&&e.filament_name.toLowerCase().includes(t)||e.filament_vendor&&e.filament_vendor.toLowerCase().includes(t)||e.filament_material&&e.filament_material.toLowerCase().includes(t)||String(e.id).includes(t)}):[],[S,b]),w=c({mutationFn:e=>n.linkSpool(e,{spoolTag:x,printerId:u,amsId:d,trayId:m}),onSuccess:()=>{_.invalidateQueries({queryKey:[`unlinked-spools`]}),_.invalidateQueries({queryKey:[`linked-spools`]}),_.invalidateQueries({queryKey:[`spoolman-slot-assignments`]}),y(g(`spoolman.linkSuccess`),`success`),r()},onError:e=>{y(e.message||g(`spoolman.linkFailed`),`error`)}});return e?(0,O.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,O.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`,onClick:r}),(0,O.jsxs)(`div`,{className:`relative bg-bambu-dark-secondary rounded-xl shadow-xl w-full max-w-md mx-4 max-h-[80vh] flex flex-col border border-bambu-dark-tertiary`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-white/10`,children:[(0,O.jsxs)(`div`,{children:[(0,O.jsxs)(`h3`,{className:`text-lg font-semibold text-white flex items-center gap-2`,children:[(0,O.jsx)(f,{className:`w-5 h-5 text-bambu-green`}),g(`spoolman.selectSpool`)]}),(0,O.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-1`,children:[`AMS `,d,` T`,m,` · Printer #`,u]})]}),(0,O.jsx)(`button`,{onClick:r,className:`p-1 text-bambu-gray hover:text-white rounded transition-colors`,children:(0,O.jsx)(ee,{className:`w-5 h-5`})})]}),(0,O.jsxs)(`div`,{className:`p-4 border-b border-white/10`,children:[(0,O.jsxs)(`div`,{className:`relative`,children:[(0,O.jsx)(h,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,O.jsx)(`input`,{type:`text`,value:b,onChange:e=>te(e.target.value),placeholder:g(`inventory.searchSpools`),className:`w-full pl-9 pr-3 py-2 bg-bambu-dark rounded-lg border border-white/10 text-white text-sm placeholder:text-bambu-gray focus:outline-none focus:border-bambu-green`})]}),(a||i)&&(0,O.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-2 font-mono truncate`,title:a||i,children:[`Tag: `,a||i]})]}),(0,O.jsx)(`div`,{className:`flex-1 overflow-y-auto p-2 min-h-0`,children:ne?(0,O.jsx)(`div`,{className:`flex justify-center py-8`,children:(0,O.jsx)(p,{className:`w-6 h-6 animate-spin text-bambu-green`})}):C.length===0?(0,O.jsx)(`p`,{className:`text-center text-bambu-gray py-8 text-sm`,children:g(`inventory.noSpoolsMatch`)}):C.map(e=>(0,O.jsxs)(`button`,{onClick:()=>w.mutate(e.id),disabled:w.isPending||!x,className:`w-full flex items-center gap-3 p-3 rounded-lg hover:bg-white/5 transition-colors text-left`,children:[(0,O.jsx)(`span`,{className:`w-6 h-6 rounded-full border border-black/20 flex-shrink-0`,style:fe(e.filament_color_hex)}),(0,O.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,O.jsx)(`div`,{className:`text-sm text-white font-medium truncate`,children:e.filament_name||g(`spoolman.spoolId`)}),(0,O.jsxs)(`div`,{className:`text-xs text-bambu-gray truncate`,children:[e.filament_vendor?`${e.filament_vendor} · `:``,e.filament_material||`Unknown`,` · #`,e.id]})]}),(0,O.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:e.remaining_weight==null?`—`:`${Math.round(e.remaining_weight)}g`})]},e.id))}),(0,O.jsx)(`div`,{className:`p-4 border-t border-white/10 flex justify-end`,children:(0,O.jsx)(v,{variant:`ghost`,onClick:r,children:g(`inventory.cancel`)||`Cancel`})})]})]}):null}function Ce(e){let t=E(e.color_name,e.rgba,e.color_name_is_synthesized);return t?` - ${t}`:``}function k(e){return!e.tray_type||e.tray_type===``}function we(e){return e?`#${e.slice(0,6)}`:`#808080`}function A(){let{selectedPrinterId:e,setAlert:r}=a(),{t:i}=t(),f=o(),{showToast:p}=l(),{data:h}=s({queryKey:[`printerStatus`,e],queryFn:()=>n.getPrinterStatus(e),enabled:e!==null,staleTime:30*1e3}),{data:v}=s({queryKey:[`printer`,e],queryFn:()=>n.getPrinter(e),enabled:e!==null,staleTime:60*1e3}),{data:E}=s({queryKey:[`slotPresets`,e],queryFn:()=>n.getSlotPresets(e),enabled:e!==null,staleTime:120*1e3}),{data:A}=pe({staleTime:300*1e3}),{data:j}=s({queryKey:[`spoolman-status`],queryFn:n.getSpoolmanStatus,staleTime:60*1e3}),M=j?.enabled&&j?.connected,{data:Te}=s({queryKey:[`linked-spools`],queryFn:n.getLinkedSpools,enabled:!!M,staleTime:30*1e3}),N=Te?.linked,{data:P=[]}=s({queryKey:[`spoolman-slot-assignments`,`all`],queryFn:()=>n.getSpoolmanSlotAssignments(),enabled:!!M,staleTime:30*1e3}),{data:F=[]}=s({queryKey:[`spoolman-inventory-spools`],queryFn:()=>n.getSpoolmanInventorySpools(!1),enabled:!!M,staleTime:30*1e3}),{data:I}=s({queryKey:[`spool-assignments`,e],queryFn:()=>n.getAssignments(e),enabled:e!==null,staleTime:30*1e3}),L=(0,D.useMemo)(()=>{let e={};if(!I||j?.enabled)return e;for(let t of I){let n=t.spool;if(n&&n.label_weight>0&&n.weight_used!=null){let r=Math.round(Math.max(0,n.label_weight-n.weight_used)/n.label_weight*100);e[`${t.ams_id}-${t.tray_id}`]=r}}return e},[I,j?.enabled]),R=v?.serial_number??``,z=(0,D.useCallback)((t,n,r)=>{if(e!==null&&P.length&&F.length){let r=P.find(r=>r.printer_id===e&&r.ams_id===t&&r.tray_id===n);if(r){let e=F.find(e=>e.id===r.spoolman_spool_id);if(e&&(e.label_weight??0)>0)return Math.round(Math.max(0,e.label_weight-e.weight_used)/e.label_weight*100)}}if(N&&R){let e=(r?.tray_uuid||r?.tag_uid||T(R,t,n))?.toUpperCase(),i=y(e?N[e]:void 0);if(i!==null)return i}return null},[N,R,e,P,F]),B=h?.connected??!1,Ee=(0,D.useRef)({});(0,D.useEffect)(()=>{e&&h?.ams&&h.ams.length>0&&(Ee.current[e]=h.ams)},[h?.ams,e]);let V=(0,D.useMemo)(()=>{let t=h?.ams;return t&&t.length>0?t:(e?Ee.current[e]:null)??[]},[h?.ams,e]),De=(0,D.useMemo)(()=>V.filter(e=>!e.is_ams_ht),[V]),Oe=(0,D.useMemo)(()=>V.filter(e=>e.is_ams_ht),[V]),ke=(0,D.useMemo)(()=>{let e={};if(!N||!R)return e;for(let t of De)for(let n=0;n<(t.tray?.length??0);n++){let r=t.tray[n],i=z(t.id,n,k(r)?null:r);i!==null&&(e[`${t.id}-${n}`]=i)}return e},[N,R,De,z]),Ae=(0,D.useRef)(void 0),H=h?.tray_now;H!==void 0&&H!==255?Ae.current=H:H===255&&(Ae.current=void 0);let U=H!==void 0&&H!==255?H:Ae.current,W=v?.nozzle_count===2||h?.temperatures?.nozzle_2!==void 0,je=(0,D.useMemo)(()=>[...h?.vt_tray??[]].sort((e,t)=>(e.id??254)-(t.id??254)),[h?.vt_tray]),G=A?{humidityGood:Number(A.ams_humidity_good)||40,humidityFair:Number(A.ams_humidity_fair)||60,tempGood:Number(A.ams_temp_good)||28,tempFair:Number(A.ams_temp_fair)||35}:void 0,Me=(0,D.useRef)({});(0,D.useEffect)(()=>{h?.ams_extruder_map&&Object.keys(h.ams_extruder_map).length>0&&(Me.current=h.ams_extruder_map)},[h?.ams_extruder_map]);let K=h?.ams_extruder_map&&Object.keys(h.ams_extruder_map).length>0?h.ams_extruder_map:Me.current,Ne=(0,D.useCallback)(e=>{if(!W)return null;let t=K[String(e)],n=e>=128?e-128:e;return(t===void 0?n:t)===1?`L`:`R`},[W,K]),[q,Pe]=(0,D.useState)(null),[J,Y]=(0,D.useState)(null),[X,Fe]=(0,D.useState)(null),[Z,Ie]=(0,D.useState)(null),Le=(0,D.useCallback)((e,t)=>I?.find(n=>n.ams_id===Number(e)&&n.tray_id===Number(t)),[I]),Re=(0,D.useCallback)((e,t,n)=>{if(!N||!R)return;let r=(n?.tray_uuid||n?.tag_uid||T(R,e,t))?.toUpperCase();return r?N[r]:void 0},[N,R]),Q=c({mutationFn:({printerId:e,amsId:t,trayId:r})=>n.unassignSpool(e,t,r),onSuccess:()=>{f.invalidateQueries({queryKey:[`spool-assignments`,e]}),f.invalidateQueries({queryKey:[`spool-assignments`]}),p(i(`inventory.unassignSuccess`,`Spool unassigned`),`success`),Y(null)}}),ze=c({mutationFn:e=>n.unlinkSpool(e),onSuccess:e=>{p(i(`spoolman.unlinkSuccess`)||e?.message,`success`),f.invalidateQueries({queryKey:[`linked-spools`]}),f.invalidateQueries({queryKey:[`unlinked-spools`]}),f.invalidateQueries({queryKey:[`spoolman-slot-assignments`]}),f.invalidateQueries({queryKey:[`spoolman-slot-assignments`,`all`]}),f.invalidateQueries({queryKey:[`spoolman-inventory-spools`]}),Y(null)},onError:e=>{p(e.message||i(`spoolman.unlinkFailed`),`error`)}}),Be=c({mutationFn:e=>n.unassignSpoolmanSlot(e),onSuccess:()=>{p(i(`inventory.unassignSuccess`,`Spool unassigned`),`success`),f.invalidateQueries({queryKey:[`spoolman-slot-assignments`]}),f.invalidateQueries({queryKey:[`spoolman-slot-assignments`,`all`]}),f.invalidateQueries({queryKey:[`spoolman-inventory-spools`]}),f.invalidateQueries({queryKey:[`unlinked-spools`]}),f.invalidateQueries({queryKey:[`linked-spools`]}),Y(null)},onError:e=>{p(e.message||i(`inventory.assignFailed`,`Failed to unassign spool`),`error`)}}),$=(0,D.useMemo)(()=>S(h?.ams,h?.vt_tray),[h?.ams,h?.vt_tray]),Ve=(0,D.useCallback)(e=>{if(U===void 0)return null;if(e<=3||te(e)||ne(oe($,e))){let t=se($,U);if(t&&t[0]===e)return t[1]}return null},[U,$]),He=(0,D.useCallback)((e,t,n)=>{let r=oe($,e),i=ie(e,t,!1,r),a=E?.[i],o=K[String(e)],s=e>=128?e-128:e,c=o===void 0?s:o,l={amsId:e,trayId:t,tray:n,trayType:n?.tray_type||void 0,trayColor:n?.tray_color||void 0,traySubBrands:n?.tray_sub_brands||void 0,trayInfoIdx:n?.tray_info_idx||void 0,extruderId:W?c:void 0,caliIdx:n?.cali_idx,savedPresetId:x(a?.preset_id,n?.tray_info_idx,a?.tray_info_idx)?a?.preset_id:void 0,location:`${C(e,r)} Slot ${t+1}`};Y(l)},[E,K,W,$]),Ue=(0,D.useCallback)(e=>{let t=e.id??254,n=de(t),r=E?.[1020+n],i={amsId:255,trayId:n,tray:k(e)?null:e,trayType:e.tray_type||void 0,trayColor:e.tray_color||void 0,traySubBrands:e.tray_sub_brands||void 0,trayInfoIdx:e.tray_info_idx||void 0,extruderId:W?+(t===254):void 0,caliIdx:e.cali_idx,savedPresetId:x(r?.preset_id,e.tray_info_idx,r?.tray_info_idx)?r?.preset_id:void 0,location:$.rack?w(t):W?t===254?`Ext-L`:`Ext-R`:`External`};Y(i)},[E,W,$.rack]),We=(0,D.useCallback)(()=>{if(!J)return;let{tray:e,location:t,...n}=J;Y(null),Pe({...n,label:n.amsId===255&&$.rack?t:void 0})},[J,$.rack]),Ge=(0,D.useCallback)(()=>{if(!J||!e)return;let{amsId:t,trayId:n,tray:r,trayType:i,trayColor:a,location:o}=J;Y(null),Fe({printerId:e,amsId:t,trayId:n,trayInfo:{type:i||``,material:i,color:a?.slice(0,6)||``,location:o,emptyKind:ue(r)}})},[J,e]),Ke=(0,D.useCallback)(()=>{if(!J||!e)return;let{amsId:t,trayId:n,tray:r}=J,i=(r?.tray_uuid||r?.tag_uid||T(R,t,n))?.toUpperCase()||``;Y(null),Ie({tagUid:r?.tag_uid||i,trayUuid:r?.tray_uuid||``,printerId:e,amsId:t,trayId:n})},[J,e,R]),qe=(0,D.useCallback)(()=>{if(!J||!e)return;let{amsId:t,trayId:n}=J;Q.mutate({printerId:e,amsId:t,trayId:n})},[J,e,Q]);(0,D.useEffect)(()=>{if(!B&&e){r({type:`warning`,message:i(`spoolbuddy.ams.printerDisconnected`,`Printer disconnected`)});return}for(let e of V){let t=e.tray||[];for(let n=0;n<t.length;n++){let i=t[n];if(i.remain!==null&&i.remain>=0&&i.remain<15&&i.tray_type){let t=e.id===254||e.id===255,a=!t&&e.id>=128,o=ce(e.id,n,a,t);r({type:`warning`,message:`Low Filament: ${i.tray_type} (${o}) - ${i.remain}% remaining`});return}}}r(null)},[V,B,e,r,i]);let Je=(0,D.useMemo)(()=>{let e=[];for(let t of Oe){let n=t.tray?.[0]||{id:0,tray_color:null,tray_type:``,tray_sub_brands:null,tray_id_name:null,tray_info_idx:null,remain:-1,k:null,cali_idx:null,tag_uid:null,tray_uuid:null,nozzle_temp_min:null,nozzle_temp_max:null},r=z(t.id,0,k(n)?null:n),i=L[`${t.id}-0`]??null,a=n.remain!=null&&n.remain>=0?n.remain:null,o=i===0&&a!==null&&a>0?null:i;e.push({key:`ht-${t.id}`,label:C(t.id),tray:n,isEmpty:k(n),isActive:Ve(t.id)===0,temp:t.temp,humidity:t.humidity,nozzleSide:Ne(t.id),effectiveFill:r??o??a,onClick:()=>He(t.id,0,k(n)?null:n)})}for(let t of je){let n=t.id??254,r=W&&U===254?n===254&&h?.active_extruder===1||n===255&&h?.active_extruder===0:U===n,a=de(n),o=z(255,a,k(t)?null:t),s=L[`255-${a}`]??null,c=t.remain!=null&&t.remain>=0?t.remain:null,l=s===0&&c!==null&&c>0?null:s;e.push({key:`ext-${n}`,label:$.rack?w(n):W?n===254?i(`printers.extL`,`Ext-L`):i(`printers.extR`,`Ext-R`):i(`printers.ext`,`Ext`),tray:t,isEmpty:k(t),isActive:r,nozzleSide:null,effectiveFill:o??l??c,onClick:()=>Ue(t)})}return e},[Oe,je,W,U,h?.active_extruder,i,Ve,Ne,He,Ue,L,z,$.rack]);return(0,O.jsxs)(`div`,{className:`h-full flex flex-col p-4`,children:[(0,O.jsx)(`div`,{className:`flex-1 min-h-0`,children:e?B?V.length===0&&je.length===0?(0,O.jsx)(`div`,{className:`flex-1 flex items-center justify-center h-full`,children:(0,O.jsxs)(`div`,{className:`text-center text-white/50`,children:[(0,O.jsx)(u,{className:`w-12 h-12 mx-auto mb-3 opacity-50`}),(0,O.jsx)(`p`,{className:`text-lg mb-2`,children:i(`spoolbuddy.ams.noData`,`No AMS detected`)}),(0,O.jsx)(`p`,{className:`text-sm`,children:i(`spoolbuddy.ams.connectAms`,`Connect an AMS to see filament slots`)})]})}):(0,O.jsxs)(`div`,{className:`flex flex-col gap-3 h-full`,children:[(0,O.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-3`,children:De.map(e=>(0,O.jsx)(`div`,{className:ae(e)?`md:col-span-2`:`contents`,children:(0,O.jsx)(_e,{unit:e,activeSlot:Ve(e.id),onConfigureSlot:He,isDualNozzle:W,nozzleSide:Ne(e.id),thresholds:G,fillOverrides:L,spoolmanFillOverrides:ke})},e.id))}),Je.length>0&&(0,O.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3`,children:Je.map(({key:e,label:t,tray:n,isEmpty:r,isActive:i,temp:a,humidity:o,nozzleSide:s,effectiveFill:c,onClick:l})=>{let u=we(n.tray_color);return(0,O.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-lg px-3 py-2 cursor-pointer hover:bg-bambu-dark-secondary/80 transition-all flex items-center gap-3 ${i?`ring-2 ring-bambu-green`:``}`,onClick:l,children:[(0,O.jsxs)(`div`,{className:`relative w-10 h-10 flex-shrink-0`,children:[r?(0,O.jsx)(`div`,{className:`w-full h-full rounded-full border-2 border-dashed border-gray-500 flex items-center justify-center`,children:(0,O.jsx)(`div`,{className:`w-1.5 h-1.5 rounded-full bg-gray-600`})}):(0,O.jsxs)(`svg`,{viewBox:`0 0 56 56`,className:`w-full h-full`,children:[(0,O.jsx)(`circle`,{cx:`28`,cy:`28`,r:`26`,fill:u}),(0,O.jsx)(`circle`,{cx:`28`,cy:`28`,r:`20`,fill:u,style:{filter:`brightness(0.85)`}}),(0,O.jsx)(`ellipse`,{cx:`20`,cy:`20`,rx:`6`,ry:`4`,fill:`white`,opacity:`0.3`}),(0,O.jsx)(`circle`,{cx:`28`,cy:`28`,r:`8`,fill:`#2d2d2d`}),(0,O.jsx)(`circle`,{cx:`28`,cy:`28`,r:`5`,fill:`#1a1a1a`})]}),i&&(0,O.jsx)(`div`,{className:`absolute -bottom-0.5 left-1/2 -translate-x-1/2 w-1.5 h-1.5 bg-bambu-green rounded-full`})]}),(0,O.jsxs)(`div`,{className:`min-w-0`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,O.jsx)(`span`,{className:`text-xs text-white/50 font-medium truncate`,children:t}),s&&(0,O.jsx)(ge,{side:s})]}),(0,O.jsx)(`div`,{className:`text-sm text-white/80 truncate`,children:r?`Empty`:n.tray_type||`?`}),(a!=null||o!=null)&&(0,O.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[a!=null&&(0,O.jsx)(me,{temp:a,goodThreshold:G?.tempGood,fairThreshold:G?.tempFair}),o!=null&&(0,O.jsx)(he,{humidity:o,goodThreshold:G?.humidityGood,fairThreshold:G?.humidityFair})]})]}),!r&&c!=null&&c>=0&&(0,O.jsx)(`div`,{className:`w-1.5 h-8 bg-bambu-dark-tertiary rounded-full overflow-hidden flex-shrink-0 flex flex-col-reverse`,children:(0,O.jsx)(`div`,{className:`w-full rounded-full`,style:{height:`${c}%`,backgroundColor:le(c)}})})]},e)})})]}):(0,O.jsx)(`div`,{className:`flex-1 flex items-center justify-center h-full`,children:(0,O.jsx)(`div`,{className:`text-center text-white/50`,children:(0,O.jsx)(`p`,{className:`text-lg mb-2`,children:i(`spoolbuddy.ams.printerDisconnected`,`Printer disconnected`)})})}):(0,O.jsx)(`div`,{className:`flex-1 flex items-center justify-center h-full`,children:(0,O.jsxs)(`div`,{className:`text-center text-white/50`,children:[(0,O.jsx)(`p`,{className:`text-lg mb-2`,children:i(`spoolbuddy.ams.noPrinter`,`No printer selected`)}),(0,O.jsx)(`p`,{className:`text-sm`,children:i(`spoolbuddy.ams.selectPrinter`,`Select a printer from the top bar`)})]})})}),q&&e&&(0,O.jsx)(xe,{isOpen:!!q,onClose:()=>Pe(null),printerId:e,slotInfo:q,printerModel:ye(v?.model??null)||void 0,nozzleDiameter:re(h,q.amsId),printerState:h?.state,fullScreen:!0,onSuccess:()=>{f.invalidateQueries({queryKey:[`slotPresets`,e]}),f.invalidateQueries({queryKey:[`printerStatus`,e]})}}),J&&e&&(()=>{let t=Le(J.amsId,J.trayId),n=Re(J.amsId,J.trayId,J.tray),r=M?P.find(t=>t.printer_id===e&&t.ams_id===J.amsId&&t.tray_id===J.trayId):void 0,a=r?F.find(e=>e.id===r.spoolman_spool_id)??null:null;return(0,O.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[(0,O.jsx)(`div`,{className:`absolute inset-0 bg-black/60 backdrop-blur-sm`,onClick:()=>Y(null)}),(0,O.jsxs)(`div`,{className:`relative w-full max-w-sm mx-4 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-xl shadow-2xl`,children:[(0,O.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[J.trayColor&&(0,O.jsx)(`span`,{className:`w-4 h-4 rounded-full border border-black/20`,style:{backgroundColor:`#${J.trayColor.slice(0,6)}`}}),(0,O.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:J.location}),J.traySubBrands&&(0,O.jsxs)(`span`,{className:`text-sm text-bambu-gray`,children:[`(`,J.traySubBrands,`)`]})]}),(0,O.jsx)(`button`,{onClick:()=>Y(null),className:`p-1 text-bambu-gray hover:text-white rounded transition-colors`,children:(0,O.jsx)(ee,{className:`w-5 h-5`})})]}),(0,O.jsxs)(`div`,{className:`p-4 space-y-2`,children:[!M&&t?.spool&&(0,O.jsxs)(`div`,{className:`p-2.5 bg-bambu-dark rounded-lg border border-bambu-dark-tertiary mb-3`,children:[(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray mb-1`,children:i(`inventory.assignedSpool`,`Assigned spool`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[t.spool.rgba&&(0,O.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-black/20 flex-shrink-0`,style:ve(t.spool)??fe(t.spool.rgba)}),(0,O.jsxs)(`span`,{className:`text-sm text-white`,children:[t.spool.brand?`${t.spool.brand} `:``,t.spool.material,t.spool.subtype?` ${t.spool.subtype}`:``,Ce(t.spool)]}),(0,O.jsxs)(`span`,{className:`text-[10px] font-mono text-zinc-500 shrink-0 ml-auto`,children:[`#`,t.spool.id]})]})]}),M&&n&&!a&&(0,O.jsxs)(`div`,{className:`p-2.5 bg-bambu-dark rounded-lg border border-bambu-dark-tertiary mb-3`,children:[(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray mb-1`,children:i(`spoolman.linkedSpool`,`Linked spool`)}),(0,O.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,O.jsxs)(`span`,{className:`text-sm text-white`,children:[`Spoolman #`,n.id,n.remaining_weight==null?``:` (${Math.round(n.remaining_weight)}g)`]})})]}),M&&a&&(0,O.jsxs)(`div`,{className:`p-2.5 bg-bambu-dark rounded-lg border border-bambu-dark-tertiary mb-3`,children:[(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray mb-1`,children:i(`inventory.assignedSpool`,`Assigned spool`)}),(0,O.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a.rgba&&(0,O.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-black/20 flex-shrink-0`,style:ve(a)??fe(a.rgba)}),(0,O.jsxs)(`span`,{className:`text-sm text-white`,children:[a.brand?`${a.brand} `:``,a.material,a.subtype?` ${a.subtype}`:``,Ce(a)]})]})]}),(0,O.jsxs)(`button`,{onClick:We,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-blue transition-colors text-left`,children:[(0,O.jsx)(g,{className:`w-5 h-5 text-bambu-blue flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-white font-medium`,children:i(`configureAmsSlot.title`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.configureDesc`,`Set filament preset, K-profile, and color`)})]})]}),!M&&(b(J?.tray)?null:t?(0,O.jsxs)(`button`,{onClick:qe,disabled:Q.isPending,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-amber-500 transition-colors text-left`,children:[(0,O.jsx)(_,{className:`w-5 h-5 text-amber-400 flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-amber-400 font-medium`,children:i(`inventory.unassignSpool`,`Unassign`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.unassignDesc`,`Remove inventory spool from this slot`)})]})]}):(0,O.jsxs)(`button`,{onClick:Ge,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-green transition-colors text-left`,children:[(0,O.jsx)(m,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-white font-medium`,children:i(`inventory.assignSpool`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.assignDesc`,`Track a spool from your inventory`)})]})]})),M&&(n?.id?(0,O.jsxs)(`button`,{onClick:()=>ze.mutate(n.id),disabled:ze.isPending,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-amber-500 transition-colors text-left active:opacity-50`,children:[(0,O.jsx)(_,{className:`w-5 h-5 text-amber-400 flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-amber-400 font-medium`,children:i(`inventory.unassignSpool`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.unlinkDesc`,`Remove Spoolman link from this slot`)})]})]}):a?(0,O.jsxs)(`button`,{onClick:()=>Be.mutate(a.id),disabled:Be.isPending,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-amber-500 transition-colors text-left active:opacity-50`,children:[(0,O.jsx)(_,{className:`w-5 h-5 text-amber-400 flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-amber-400 font-medium`,children:i(`inventory.unassignSpool`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.unassignDesc`,`Remove inventory spool from this slot`)})]})]}):(0,O.jsxs)(`button`,{onClick:Ke,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary hover:border-bambu-green transition-colors text-left`,children:[(0,O.jsx)(d,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,O.jsxs)(`div`,{children:[(0,O.jsx)(`p`,{className:`text-white font-medium`,children:i(`inventory.assignSpool`)}),(0,O.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`spoolbuddy.ams.linkDesc`,`Link a Spoolman spool to this slot`)})]})]}))]})]})]})})(),X&&(0,O.jsx)(be,{isOpen:!!X,onClose:()=>{Fe(null),f.invalidateQueries({queryKey:[`spool-assignments`,e]}),f.invalidateQueries({queryKey:[`spool-assignments`]})},printerId:X.printerId,amsId:X.amsId,trayId:X.trayId,trayInfo:X.trayInfo,spoolmanEnabled:!!M}),Z&&(0,O.jsx)(Se,{isOpen:!!Z,onClose:()=>Ie(null),tagUid:Z.tagUid,trayUuid:Z.trayUuid,printerId:Z.printerId,amsId:Z.amsId,trayId:Z.trayId})]})}export{A as SpoolBuddyAmsPage};
|