QueuePage-D_6Y-y7F.js 111 KB

12345678910111213141516
  1. import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{C as t,T as n,a as r,k as i,t as a,w as o}from"./client-DSw2TdH4.js";import{n as s}from"./chunk-62JRHF6Z-DiDTZQg1.js";import{b as c,n as l}from"./QueryClientProvider-B5vEWYBq.js";import{t as u}from"./useQuery-DfiorXB9.js";import{t as d}from"./useMutation-DLyYCmQ0.js";import{t as f}from"./useQueries-B8Shr5vb.js";import{t as p}from"./arrow-down-BNCAqzU4.js";import{t as m}from"./arrow-up-BSmLc-9r.js";import{a as h,c as g,d as _,f as v,h as y,i as b,l as x,m as ee,o as S,p as te,s as ne,t as C,u as w}from"./sortable.esm-DZBz8jef.js";import{t as T}from"./calendar-CXLctOwE.js";import{t as E}from"./check-6rDoeFOi.js";import{a as D,i as O,n as k,r as A}from"./info-3cB5_JmI.js";import{t as re}from"./chevron-right-BWg4-zJH.js";import{t as j}from"./chevron-left-CnlC_KSe.js";import{n as M,r as N}from"./ToastContext-C3zxW_t3.js";import{a as ie,c as ae,d as oe,f as se,l as P,o as F,s as I,t as ce,u as le}from"./PrintModal-DJVIzPGw.js";import{t as L}from"./clock-CjtzezMg.js";import{t as ue}from"./code-4teT7olc.js";import{t as R}from"./coins-B8vNGdAR.js";import{t as de}from"./external-link-BuJwWh2y.js";import{t as fe}from"./file-text-Lz0jvfRs.js";import{t as pe}from"./funnel-D3vGDEm5.js";import{t as me}from"./grip-vertical-ClbE5NJh.js";import{t as z}from"./layers-DxbB-A8k.js";import{t as he}from"./list-C6ZGr62n.js";import{t as ge}from"./loader-circle-Ck-s1kyS.js";import{t as B}from"./package-BxMzbAJg.js";import{t as _e}from"./pause-CEIzABrR.js";import{t as ve}from"./pencil-BWVOR29z.js";import{t as ye}from"./play-BqH7dk_g.js";import{t as be}from"./printer-CkXBzcv8.js";import{t as xe}from"./refresh-cw-D7pR-PbA.js";import{t as Se}from"./rotate-ccw-DQ5GxrrP.js";import{t as V}from"./skip-forward-VLq5CZIh.js";import{t as Ce}from"./square-check-big-DyJIL80l.js";import{t as we}from"./square-JJoaOiw9.js";import{t as Te}from"./timer-C6mqi1hx.js";import{t as Ee}from"./trash-2-CUF18zKt.js";import{t as H}from"./triangle-alert-Bb8T_5WO.js";import{t as De}from"./user-CCSYYaIa.js";import{t as Oe}from"./weight-DEayKDXK.js";import{t as ke}from"./workflow-zzXS0JrC.js";import{t as Ae}from"./x-DIT5l0_1.js";import{n as je}from"./AuthContext-DM3YxV_q.js";import{t as Me}from"./Card-BT_YWvIC.js";import{t as U}from"./Button-C_-d0X5W.js";import{t as W}from"./ConfirmModal-lZYjzFL6.js";import{i as G}from"./colors-je4aRt_-.js";import{n as Ne}from"./currency-DS4qMz4d.js";import{c as Pe,o as Fe,u as Ie,v as Le}from"./date-G9KUauqz.js";import{f as Re,m as ze}from"./amsHelpers-CWcmx9Ax.js";import{n as Be,t as Ve}from"./useUiSettings-BoONraTd.js";import{t as He}from"./FilamentSwatch-CElzyuMD.js";import{t as Ue}from"./queueItemName-UFY7kpjG.js";var We=t(`chart-no-axes-gantt`,[[`path`,{d:`M6 5h12`,key:`fvfigv`}],[`path`,{d:`M4 12h10`,key:`oujl3d`}],[`path`,{d:`M12 19h8`,key:`baeox8`}]]),Ge=t(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),Ke=t(`circle-stop`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`rect`,{x:`9`,y:`9`,width:`6`,height:`6`,rx:`1`,key:`1ssd4o`}]]),qe=t(`package-open`,[[`path`,{d:`M12 22v-9`,key:`x3hkom`}],[`path`,{d:`M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z`,key:`2ntwy6`}],[`path`,{d:`M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13`,key:`1pmm1c`}],[`path`,{d:`M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z`,key:`12ttoo`}]]),Je=t(`snail`,[[`path`,{d:`M2 13a6 6 0 1 0 12 0 4 4 0 1 0-8 0 2 2 0 0 0 4 0`,key:`hneq2s`}],[`circle`,{cx:`10`,cy:`13`,r:`8`,key:`194lz3`}],[`path`,{d:`M2 21h12c4.4 0 8-3.6 8-8V7a2 2 0 1 0-4 0v6`,key:`ixqyt7`}],[`path`,{d:`M18 3 19.1 5.2`,key:`9tjm43`}],[`path`,{d:`M22 3 20.9 5.2`,key:`j3odrs`}]]),Ye=t(`ungroup`,[[`rect`,{width:`8`,height:`6`,x:`5`,y:`4`,rx:`1`,key:`nzclkv`}],[`rect`,{width:`8`,height:`6`,x:`11`,y:`14`,rx:`1`,key:`4tytwb`}]]),K=e(i(),1);function Xe(e){let t={updated:e.updated_count,skipped:e.skipped_count};return e.updated_count===0?{key:`queue.toast.bulkUpdatedNone`,params:t,type:`error`}:e.skipped_count>0?{key:`queue.toast.bulkUpdatedSome`,params:t,type:`warning`}:{key:`queue.toast.bulkUpdated`,params:t,type:`success`}}function Ze(e){return e.archive_thumbnail&&e.archive_id!=null?e.plate_id==null?r.getArchiveThumbnail(e.archive_id):r.getArchivePlateThumbnail(e.archive_id,e.plate_id):e.library_file_thumbnail&&e.library_file_id!=null?e.plate_id==null?r.getLibraryFileThumbnailUrl(e.library_file_id):r.getLibraryFilePlateThumbnail(e.library_file_id,e.plate_id):null}var q=o(),Qe=[``,`queued`,`slicing`,`dispatching`,`in_progress`,`completed`,`partial_failure`,`failed`,`cancelled`],$e=25;function et(){let{t:e}=n(),t=l(),{showToast:i}=M(),[a,o]=(0,K.useState)(``),[s,c]=(0,K.useState)(null),[f,p]=(0,K.useState)(``),[m,h]=(0,K.useState)(0),[g,_]=(0,K.useState)(new Set),[v,y]=(0,K.useState)(!1),{data:b}=u({queryKey:[`slicer-pipelines`],queryFn:()=>r.listSlicerPipelines()}),{data:x}=u({queryKey:[`printers`],queryFn:()=>r.getPrinters()}),ee=(x??[]).reduce((e,t)=>(e[t.id]=t,e),{}),S=f.startsWith(`p:`)?parseInt(f.slice(2),10):void 0,te=f.startsWith(`c:`)?f.slice(2):void 0,{data:ne,isLoading:C}=u({queryKey:[`pipeline-runs-all`,a,s,m,f],queryFn:()=>r.listAllPipelineRuns({limit:$e,offset:m,pipelineId:s??void 0,status:a||void 0,targetPrinterId:S,targetModelClass:te}),refetchInterval:15e3}),w=d({mutationFn:e=>r.cancelPipelineRun(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`pipeline-runs-all`]}),i(e(`pipelineRuns.toast.cancelled`,`Run cancelled`),`success`)},onError:t=>i(t.message||e(`pipelineRuns.toast.cancelFailed`,`Cancel failed`),`error`)}),T=d({mutationFn:e=>r.retryFailedPipelineRun(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`pipeline-runs-all`]}),i(e(`pipelineRuns.toast.retryStarted`,`Retry started`),`success`)},onError:t=>i(t.message||e(`pipelineRuns.toast.retryFailed`,`Retry failed`),`error`)}),E=d({mutationFn:()=>r.clearTerminalPipelineRuns(),onSuccess:n=>{t.invalidateQueries({queryKey:[`pipeline-runs-all`]}),y(!1),h(0),i(e(`pipelineRuns.toast.cleared`,`{{n}} runs cleared`,{n:n.deleted}),`success`)},onError:t=>i(t.message||e(`pipelineRuns.toast.clearFailed`,`Clear failed`),`error`)}),D=ne?.runs??[],O=ne?.total??0,k=(b?.pipelines??[]).reduce((e,t)=>(e[t.id]=t,e),{}),A=e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},re=!!(a||s!==null||f),j=(()=>{let e=new Set,t=new Set;for(let n of b?.pipelines??[])n.target_kind===`printer_class`&&n.target_model_class?t.add(n.target_model_class):n.target_printer_id&&e.add(n.target_printer_id);return{printers:(x??[]).filter(t=>e.has(t.id)),classes:Array.from(t).sort()}})();return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 mb-4 text-sm`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>t.invalidateQueries({queryKey:[`pipeline-runs-all`]}),"aria-label":e(`common.refresh`,`Refresh`),title:e(`common.refresh`,`Refresh`),className:`p-1.5 text-bambu-gray hover:text-white border border-bambu-dark-tertiary rounded`,children:(0,q.jsx)(xe,{className:`w-3.5 h-3.5`})}),(0,q.jsx)(nt,{icon:(0,q.jsx)(ke,{className:`w-3.5 h-3.5 text-bambu-gray`}),ariaLabel:e(`pipelineRuns.filter.pipeline`,`Pipeline`),value:s===null?``:String(s),onChange:e=>{h(0),c(e?parseInt(e,10):null)},options:[{value:``,label:e(`pipelineRuns.filter.allPipelines`,`All pipelines`)},...(b?.pipelines??[]).map(e=>({value:String(e.id),label:e.name}))]}),(0,q.jsx)(nt,{icon:(0,q.jsx)(pe,{className:`w-3.5 h-3.5 text-bambu-gray`}),ariaLabel:e(`pipelineRuns.filter.status`,`Status`),value:a,onChange:e=>{h(0),o(e)},options:Qe.map(t=>({value:t,label:t===``?e(`pipelineRuns.filter.allStatus`,`All statuses`):e(`settings.pipelines.runs.status.${t}`,t)}))}),(j.printers.length>0||j.classes.length>0)&&(0,q.jsx)(nt,{icon:(0,q.jsx)(be,{className:`w-3.5 h-3.5 text-bambu-gray`}),ariaLabel:e(`pipelineRuns.filter.target`,`Target`),value:f,onChange:e=>{h(0),p(e)},options:[{value:``,label:e(`pipelineRuns.filter.allTargets`,`All targets`)},...j.printers.map(t=>({value:`p:${t.id}`,label:t.name,group:e(`settings.pipelines.field.targetKindSpecific`,`Specific printer`)})),...j.classes.map(t=>({value:`c:${t}`,label:e(`library.runWithPipeline.classTarget`,`Any {{model}}`,{model:t}),group:e(`settings.pipelines.field.targetKindClass`,`Printer class`)}))]}),re&&(0,q.jsx)(`button`,{type:`button`,onClick:()=>{o(``),c(null),p(``),h(0)},className:`text-xs text-bambu-gray hover:text-white`,children:e(`pipelineRuns.filter.clear`,`Clear filters`)}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-2 text-xs text-bambu-gray`,children:[!C&&O>0&&(0,q.jsx)(`span`,{children:e(`pipelineRuns.totalCount`,`{{n}} run`,{n:O,count:O})}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>y(!0),disabled:O===0,className:`flex items-center gap-1 px-2 py-1 text-red-700 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-500/10 rounded disabled:opacity-50 disabled:cursor-not-allowed`,children:[(0,q.jsx)(Ee,{className:`w-3 h-3`}),e(`pipelineRuns.clearLog`,`Clear log`)]})]})]}),v&&(0,q.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/60 flex items-center justify-center p-4`,onClick:()=>y(!1),role:`dialog`,"aria-modal":`true`,children:(0,q.jsxs)(`div`,{className:`bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg shadow-2xl w-full max-w-md p-4`,onClick:e=>e.stopPropagation(),children:[(0,q.jsxs)(`h3`,{className:`text-base font-semibold text-white flex items-center gap-2`,children:[(0,q.jsx)(Ee,{className:`w-4 h-4 text-red-600 dark:text-red-400`}),e(`pipelineRuns.clearConfirmTitle`,`Clear log?`)]}),(0,q.jsx)(`p`,{className:`text-sm text-bambu-gray mt-2`,children:e(`pipelineRuns.clearConfirmBody`,`Delete every completed, failed, cancelled, and partial-failure pipeline run? In-flight runs are kept. This cannot be undone.`)}),(0,q.jsxs)(`div`,{className:`flex items-center justify-end gap-2 mt-4`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>y(!1),disabled:E.isPending,className:`px-3 py-1.5 text-sm text-bambu-gray hover:text-white`,children:e(`common.cancel`,`Cancel`)}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>E.mutate(),disabled:E.isPending,className:`px-3 py-1.5 text-sm bg-red-500 hover:bg-red-600 text-white rounded disabled:opacity-50 flex items-center gap-1`,children:[E.isPending?(0,q.jsx)(ge,{className:`w-3.5 h-3.5 animate-spin`}):(0,q.jsx)(Ee,{className:`w-3.5 h-3.5`}),e(`pipelineRuns.clearConfirmAction`,`Clear`)]})]})]})}),C&&(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,q.jsx)(ge,{className:`w-4 h-4 animate-spin`}),e(`pipelineRuns.loading`,`Loading…`)]}),!C&&D.length===0&&(0,q.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:re?e(`pipelineRuns.filter.noMatches`,`No runs match the current filters.`):e(`pipelineRuns.empty`,`No pipeline runs yet.`)}),!C&&D.length>0&&(0,q.jsx)(`div`,{className:`space-y-1.5`,children:D.map(e=>(0,q.jsx)(J,{run:e,pipeline:e.pipeline_id?k[e.pipeline_id]:void 0,printersById:ee,expanded:g.has(e.id),onToggle:()=>A(e.id),onCancel:()=>w.mutate(e.id),onRetry:()=>T.mutate(e.id),cancelling:w.isPending,retrying:T.isPending},e.id))}),!C&&O>$e&&(0,q.jsxs)(`div`,{className:`flex items-center justify-between mt-4 text-sm`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>h(Math.max(0,m-$e)),disabled:m===0,className:`px-3 py-1.5 rounded border border-bambu-dark-tertiary disabled:opacity-50 text-bambu-gray hover:text-white`,children:e(`common.previous`,`Previous`)}),(0,q.jsx)(`span`,{className:`text-bambu-gray text-xs`,children:e(`pipelineRuns.pagination`,`{{start}}–{{end}} of {{total}}`,{start:m+1,end:Math.min(m+$e,O),total:O})}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>h(m+$e),disabled:m+$e>=O,className:`px-3 py-1.5 rounded border border-bambu-dark-tertiary disabled:opacity-50 text-bambu-gray hover:text-white`,children:e(`common.next`,`Next`)})]})]})}function J({run:e,pipeline:t,printersById:r,expanded:i,onToggle:a,onCancel:o,onRetry:s,cancelling:c,retrying:l}){let{t:u}=n(),d=[`queued`,`slicing`,`dispatching`,`in_progress`].includes(e.status),f=e.status===`partial_failure`||e.status===`failed`,p=e.status===`cancelled`&&e.error_message===`Cancelled by user`,m=e.target_kind===`printer_class`&&e.target_model_class?u(`library.runWithPipeline.classTarget`,`Any {{model}}`,{model:e.target_model_class}):e.target_printer_id&&r[e.target_printer_id]?r[e.target_printer_id].name:null;return(0,q.jsxs)(`div`,{className:`rounded-md border border-bambu-dark-tertiary bg-bambu-dark/40 overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:a,"aria-label":i?u(`common.collapse`,`Collapse`):u(`common.expand`,`Expand`),"aria-expanded":i,className:`text-bambu-gray hover:text-white flex-shrink-0`,children:i?(0,q.jsx)(D,{className:`w-4 h-4`}):(0,q.jsx)(re,{className:`w-4 h-4`})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5 text-sm`,children:[(0,q.jsxs)(`span`,{className:`font-medium text-white`,children:[`#`,e.id]}),(0,q.jsx)(`span`,{className:`text-white truncate`,children:t?.name??e.pipeline_name??`—`}),(0,q.jsx)(tt,{status:e.status}),m&&(0,q.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded bg-bambu-dark-tertiary text-bambu-gray flex items-center gap-1`,children:[(0,q.jsx)(be,{className:`w-3 h-3`}),m]}),e.parent_run_id&&(0,q.jsx)(`span`,{className:`text-xs text-bambu-gray/70 italic`,children:u(`pipelineRuns.retryOf`,`retry of #{{n}}`,{n:e.parent_run_id})})]}),e.source_filename&&(0,q.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1.5 text-xs text-bambu-gray min-w-0`,children:[(0,q.jsx)(fe,{className:`w-3 h-3 flex-shrink-0`}),(0,q.jsx)(`span`,{className:`truncate`,title:e.source_filename,children:e.source_filename})]}),(0,q.jsxs)(`div`,{className:`mt-0.5 text-xs text-bambu-gray/70 flex flex-wrap items-center gap-x-2`,children:[(0,q.jsx)(`span`,{children:new Date(e.created_at).toLocaleString()}),e.copies>1&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-bambu-gray/40`,children:`·`}),(0,q.jsx)(`span`,{children:u(`pipelineRuns.copies`,`{{n}} copies`,{n:e.copies})})]}),(e.copies_completed>0||e.copies_failed>0||e.copies_cancelled>0)&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-bambu-gray/40`,children:`·`}),(0,q.jsxs)(`span`,{children:[(0,q.jsx)(`span`,{className:`text-bambu-green`,children:e.copies_completed}),`/`,e.copies]}),e.copies_failed>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-bambu-gray/40`,children:`·`}),(0,q.jsx)(`span`,{className:`text-red-700 dark:text-red-400`,children:u(`pipelineRuns.failedCount`,`{{n}} failed`,{n:e.copies_failed})})]})]})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[d&&(0,q.jsxs)(`button`,{type:`button`,onClick:o,disabled:c,"aria-label":u(`common.cancel`,`Cancel`),className:`text-xs px-2 py-1 text-red-700 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-500/10 rounded disabled:opacity-50 flex items-center gap-1`,children:[(0,q.jsx)(Ae,{className:`w-3 h-3`}),u(`common.cancel`,`Cancel`)]}),f&&(0,q.jsxs)(`button`,{type:`button`,onClick:s,disabled:l,"aria-label":u(`pipelineRuns.retryFailed`,`Retry failed`),className:`text-xs px-2 py-1 text-bambu-green hover:bg-bambu-green/10 rounded disabled:opacity-50 flex items-center gap-1`,children:[(0,q.jsx)(Se,{className:`w-3 h-3`}),u(`pipelineRuns.retryFailed`,`Retry failed`)]})]})]}),i&&(0,q.jsxs)(`div`,{className:`border-t border-bambu-dark-tertiary px-3 py-2 bg-bambu-dark/30`,children:[(0,q.jsx)(`div`,{className:`space-y-1.5`,children:e.jobs.map(e=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,q.jsx)(`span`,{className:`text-bambu-gray/60 w-14 flex-shrink-0`,children:u(`pipelineRuns.copyN`,`Copy {{n}}`,{n:e.copy_index+1})}),(0,q.jsx)(rt,{status:e.status}),e.assigned_printer_name&&(0,q.jsxs)(`span`,{className:`text-bambu-gray flex items-center gap-1 truncate`,children:[(0,q.jsx)(be,{className:`w-3 h-3 text-bambu-gray/60`}),(0,q.jsx)(`span`,{className:`text-white truncate`,children:e.assigned_printer_name})]}),e.error_message&&(0,q.jsx)(`span`,{className:`text-red-700 dark:text-red-400 truncate`,title:e.error_message,children:e.error_message})]},e.id))}),e.error_message&&!p&&(0,q.jsx)(`div`,{className:`text-xs text-red-700 dark:text-red-400 mt-2 pt-2 border-t border-bambu-dark-tertiary`,children:e.error_message}),p&&(0,q.jsx)(`div`,{className:`text-xs text-bambu-gray/70 mt-2 pt-2 border-t border-bambu-dark-tertiary italic`,children:u(`pipelineRuns.cancelledByUser`,`Cancelled by user`)})]})]})}function tt({status:e}){let{t}=n();return(0,q.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase font-semibold tracking-wide whitespace-nowrap ${{queued:`bg-slate-700 text-slate-200`,slicing:`bg-sky-700 text-sky-100`,dispatching:`bg-sky-700 text-sky-100`,in_progress:`bg-emerald-700 text-emerald-100`,completed:`bg-emerald-700 text-emerald-100`,failed:`bg-red-700 text-red-100`,partial_failure:`bg-amber-700 text-amber-100`,cancelled:`bg-rose-900 text-rose-200`}[e]}`,children:t(`settings.pipelines.runs.status.${e}`,e)})}function nt({value:e,onChange:t,options:n,icon:r,ariaLabel:i}){let[a,o]=(0,K.useState)(!1),s=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(!a)return;let e=e=>{s.current&&!s.current.contains(e.target)&&o(!1)},t=e=>{e.key===`Escape`&&o(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]);let c=n.find(t=>t.value===e),l=[];for(let e of n){let t=l[l.length-1];t&&t.group===e.group?t.options.push(e):l.push({group:e.group,options:[e]})}return(0,q.jsxs)(`div`,{ref:s,className:`relative`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>!e),"aria-label":i,"aria-haspopup":`listbox`,"aria-expanded":a,className:`flex items-center gap-1.5 px-2 py-1 border border-bambu-dark-tertiary rounded bg-bambu-dark/40 text-xs text-white hover:border-bambu-gray/60 focus:outline-none focus:ring-1 focus:ring-bambu-green/40`,children:[r,(0,q.jsx)(`span`,{className:`truncate max-w-[14rem]`,children:c?.label??``}),(0,q.jsx)(D,{className:`w-3 h-3 text-bambu-gray transition-transform ${a?`rotate-180`:``}`})]}),a&&(0,q.jsx)(`div`,{role:`listbox`,className:`absolute left-0 top-full mt-1 z-30 min-w-full max-h-72 overflow-auto rounded border border-bambu-dark-tertiary bg-bambu-dark-secondary shadow-xl py-1`,children:l.map((n,r)=>(0,q.jsxs)(`div`,{children:[n.group&&(0,q.jsx)(`div`,{className:`px-2 pt-1.5 pb-0.5 text-[10px] uppercase tracking-wider text-bambu-gray/60`,children:n.group}),n.options.map(n=>{let r=n.value===e;return(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":r,onClick:()=>{t(n.value),o(!1)},className:`flex w-full items-center gap-1.5 text-left px-2 py-1 text-xs whitespace-nowrap ${r?`bg-bambu-dark-tertiary text-white`:`text-bambu-gray hover:bg-bambu-dark-tertiary/60 hover:text-white`}`,children:[(0,q.jsx)(E,{className:`w-3 h-3 flex-shrink-0 ${r?`opacity-100`:`opacity-0`}`}),(0,q.jsx)(`span`,{className:`truncate`,children:n.label})]},n.value)})]},r))})]})}function rt({status:e}){let{t}=n();return(0,q.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] uppercase font-semibold tracking-wide ${{pending:`bg-slate-700 text-slate-200`,awaiting_printer:`bg-sky-700 text-sky-100`,queued:`bg-sky-700 text-sky-100`,printing:`bg-emerald-700 text-emerald-100`,completed:`bg-emerald-700 text-emerald-100`,failed:`bg-red-700 text-red-100`,cancelled:`bg-rose-900 text-rose-200`,unknown:`bg-slate-700 text-slate-300`}[e]}`,children:t(`pipelineRuns.jobStatus.${e}`,e)})}function it(e){return e>=1e3?`${(e/1e3).toFixed(1)}kg`:`${Math.round(e)}g`}function at({activeCount:e,pendingCount:t,totalTime:n,totalWeight:r,historyCount:i,t:a}){return(0,q.jsx)(`div`,{className:`flex items-center gap-3 sm:gap-5 flex-wrap px-4 py-3 bg-bambu-dark-secondary rounded-xl border border-bambu-dark-tertiary mb-6`,children:[{icon:ye,value:e,label:a(`queue.summary.printing`),color:`text-blue-600 dark:text-blue-400`},{icon:L,value:t,label:a(`queue.summary.queued`),color:`text-yellow-600 dark:text-yellow-400`},{icon:Te,value:Fe(n),label:a(`queue.summary.totalTime`),color:`text-bambu-green`},{icon:Oe,value:it(r),label:a(`queue.summary.totalWeight`),color:`text-purple-600 dark:text-purple-400`},{icon:N,value:i,label:a(`queue.summary.history`),color:`text-bambu-gray`}].map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-center gap-3`,children:[t>0&&(0,q.jsx)(`span`,{className:`hidden sm:block text-bambu-dark-tertiary`,children:`|`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsx)(e.icon,{className:`w-4 h-4 ${e.color}`}),(0,q.jsx)(`span`,{className:`text-sm font-semibold text-white`,children:e.value}),(0,q.jsx)(`span`,{className:`text-xs sm:text-sm text-bambu-gray`,children:e.label})]})]},t))})}var ot={completed:{icon:N,color:`text-emerald-600 dark:text-emerald-400`,border:`border-l-emerald-500`},failed:{icon:k,color:`text-red-600 dark:text-red-400`,border:`border-l-red-500`},skipped:{icon:V,color:`text-orange-600 dark:text-orange-400`,border:`border-l-gray-500`},cancelled:{icon:y,color:`text-gray-400`,border:`border-l-gray-500`}};function st(e){if(!e)return null;let t=e.startsWith(`#`)?e.slice(1):e;return/^0{6,8}$/.test(t)||!/^[0-9a-fA-F]{6,8}$/.test(t)?null:`#${t.slice(0,6)}`}function Y({item:e,onRequeue:t,onRemove:n,timeFormat:r=`system`,hasPermission:i,canModify:a,t:o}){let s=ot[e.status]||ot.cancelled,c=s.icon,l=Ue(e),u=Ze(e),d=e.completed_at||e.created_at,f=st(e.filament_color),p=e.filament_used_grams?Math.round(e.filament_used_grams):null,m=!!e.error_message&&(e.status===`failed`||e.status===`skipped`);return(0,q.jsxs)(`div`,{className:`px-3 py-2 bg-bambu-dark-secondary rounded-lg border border-bambu-dark-tertiary border-l-[3px] ${s.border}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3`,children:[(0,q.jsx)(c,{className:`w-4 h-4 shrink-0 ${s.color}`}),(0,q.jsxs)(`div`,{className:`relative shrink-0 history-thumb-hover`,children:[(0,q.jsx)(`div`,{className:`w-8 h-8 bg-bambu-dark rounded overflow-hidden`,children:u?(0,q.jsx)(`img`,{src:u,alt:``,className:`w-full h-full object-cover`}):(0,q.jsx)(`div`,{className:`w-full h-full flex items-center justify-center text-bambu-gray`,children:(0,q.jsx)(z,{className:`w-4 h-4`})})}),u&&(0,q.jsx)(`div`,{className:`history-thumb-preview absolute z-[60] left-full top-0 ml-2 w-48 h-48 pointer-events-none opacity-0 transition-opacity`,children:(0,q.jsx)(`img`,{src:u,alt:``,className:`w-full h-full object-cover rounded-lg shadow-2xl border-2 border-bambu-dark-tertiary bg-bambu-dark`})})]}),(0,q.jsx)(`span`,{className:`text-sm text-white font-medium truncate min-w-0 flex-1`,children:l}),(0,q.jsx)(`span`,{className:`text-xs text-bambu-gray shrink-0`,title:d??void 0,children:Ie(d,r,o)}),(0,q.jsxs)(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:t,disabled:!i(`queue:create`),title:i(`queue:create`)?o(`queue.actions.requeue`):o(`queue.permissions.noRequeue`),className:`text-bambu-green hover:text-bambu-green/80 hover:bg-bambu-green/10 p-1.5`,children:(0,q.jsx)(xe,{className:`w-3.5 h-3.5`})}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:n,disabled:!a(`queue`,`delete`,e.created_by_id),title:a(`queue`,`delete`,e.created_by_id)?o(`common.remove`):o(`queue.permissions.noRemove`),className:`p-1.5`,children:(0,q.jsx)(Ee,{className:`w-3.5 h-3.5`})})]})]}),(0,q.jsxs)(`div`,{className:`mt-1 ml-[3.25rem] flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-bambu-gray`,children:[e.printer_name&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 shrink-0`,children:[(0,q.jsx)(be,{className:`w-3 h-3`}),(0,q.jsx)(`span`,{className:`truncate max-w-[100px] sm:max-w-[140px]`,children:e.printer_name})]}),(f||p)&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 shrink-0`,children:[f?(0,q.jsx)(`span`,{className:`inline-block w-2.5 h-2.5 rounded-full border border-white/15`,style:{backgroundColor:f},"aria-hidden":!0}):(0,q.jsx)(Oe,{className:`w-3 h-3`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[p?`${p}g`:null,p&&e.filament_type?` ${e.filament_type}`:null,!p&&e.filament_type?e.filament_type:null]})]}),e.print_time_seconds&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 shrink-0`,children:[(0,q.jsx)(Te,{className:`w-3 h-3`}),Fe(e.print_time_seconds)]}),e.created_by_username&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 shrink-0`,title:o(`queue.addedBy`,{name:e.created_by_username}),children:[(0,q.jsx)(De,{className:`w-3 h-3`}),(0,q.jsx)(`span`,{className:`truncate max-w-[120px]`,children:e.created_by_username})]})]}),m&&(0,q.jsxs)(`div`,{className:`mt-1 ml-[3.25rem] flex items-start gap-1 text-xs text-red-700 dark:text-red-400`,children:[(0,q.jsx)(A,{className:`w-3 h-3 mt-0.5 shrink-0`}),(0,q.jsx)(`span`,{className:`break-words`,children:e.error_message})]})]})}function ct(e){return e.printer_id==null?e.target_model?`model:${e.target_model}`:`unassigned`:`printer:${e.printer_id}`}function lt(e,t,n){if(n){let n=+!!e.been_jumped,r=+!!t.been_jumped;if(n!==r)return r-n;let i=e.print_time_seconds??1/0,a=t.print_time_seconds??1/0;if(i!==a)return i-a}return e.position===t.position?(e.id??0)-(t.id??0):e.position-t.position}function ut(e){return e?e.split(` | `).map(e=>e.trim()).every(e=>e.startsWith(`Busy:`)):!1}var X=3600*1e3,dt=24,Z=dt*X,ft=32,pt=40;function mt(e){return e.toLocaleTimeString(void 0,{hour:`numeric`})}function ht(e){return e.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})}function gt({queueItems:e,printers:t,printerStatuses:n,sjfEnabled:r,onItemClick:i,t:a}){let[o,s]=(0,K.useState)(()=>new Date);(0,K.useEffect)(()=>{let e=setInterval(()=>s(new Date),6e4);return()=>clearInterval(e)},[]);let[c,l]=(0,K.useState)(0),u=(0,K.useMemo)(()=>{let e=o.getTime()+c;return Math.floor(e/X)*X},[o,c]),d=u+Z,f=o.getTime(),p=(0,K.useMemo)(()=>{let t=[],i=new Map,a=new Set,o=new Map;for(let r of e)if(r.status===`printing`){let e=r.printer_id==null?void 0:n[r.printer_id],i=Le(r.started_at)||new Date,s;if(e?.remaining_time!=null&&e.remaining_time>0)s=new Date(f+e.remaining_time*60*1e3);else if(r.print_time_seconds){let t=e?.progress||0,n=Math.max(0,1-t/100);s=new Date(f+r.print_time_seconds*n*1e3)}else s=new Date(f+X);t.push({item:r,estimatedStart:i,estimatedEnd:s,progress:e?.progress??void 0,type:`printing`});let c=ct(r);a.add(c),o.set(c,Math.max(o.get(c)??f,s.getTime()))}else if(r.status===`pending`){if(r.manual_start||r.waiting_reason&&!ut(r.waiting_reason))continue;let e=ct(r);i.has(e)||i.set(e,[]),i.get(e).push(r)}let s=Date.now()+4320*X;for(let[e,n]of i){n.sort((e,t)=>lt(e,t,r));let i=a.has(e),c=n[0]?Le(n[0].scheduled_time):null,l=c&&c.getTime()<=s;if(!i&&!l)continue;let u=o.get(e)??f;for(let e of n){let n=Le(e.scheduled_time);n&&n.getTime()<=s&&(u=Math.max(u,n.getTime()));let r=(e.print_time_seconds||3600)*1e3;t.push({item:e,estimatedStart:new Date(u),estimatedEnd:new Date(u+r),type:`queued`}),u+=r}}return t},[e,n,f,r]),m=(0,K.useMemo)(()=>{let e=[];for(let n of t)e.push({key:`printer:${n.id}`,label:n.name,printerId:n.id,targetModel:null});let n=new Set,r=!1;for(let t of p)if(t.item.printer_id==null)if(t.item.target_model){let r=`model:${t.item.target_model}`;n.has(r)||(n.add(r),e.push({key:r,label:`${a(`queue.filter.any`)} ${t.item.target_model}`,printerId:null,targetModel:t.item.target_model}))}else r=!0;return r&&e.push({key:`unassigned`,label:a(`queue.filter.unassigned`),printerId:null,targetModel:null}),e},[t,p,a]),h=(0,K.useMemo)(()=>{let e=new Map;for(let t of p){let n;n=t.item.printer_id==null?t.item.target_model?`model:${t.item.target_model}`:`unassigned`:`printer:${t.item.printer_id}`,e.has(n)||e.set(n,[]),e.get(n).push(t)}return e},[p]),g=(0,K.useMemo)(()=>{let e=[];for(let t=0;t<=dt;t+=2){let n=u+t*X;e.push({ms:n,pct:t/dt*100,label:mt(new Date(n))})}return e},[u]),_=(f-u)/Z*100,v=_>=0&&_<=100,y=(0,K.useMemo)(()=>{let e=0;for(let t of p)e=Math.max(e,t.estimatedEnd.getTime());return e>0?new Date(e):null},[p]),b=(0,K.useRef)(null);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>l(e=>e-12*X),className:`p-1.5`,title:a(`queue.timeline.window.back12h`),children:(0,q.jsx)(j,{className:`w-4 h-4`})}),(0,q.jsxs)(`span`,{className:`text-sm font-medium text-white min-w-[180px] text-center`,children:[new Date(u).toLocaleString(void 0,{weekday:`short`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}),` → `,new Date(d).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})]}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>l(e=>e+12*X),className:`p-1.5`,title:a(`queue.timeline.window.forward12h`),children:(0,q.jsx)(re,{className:`w-4 h-4`})}),c!==0&&(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>l(0),className:`text-xs text-bambu-green`,children:a(`queue.timeline.window.now`)})]}),y&&(0,q.jsxs)(`span`,{className:`text-xs text-bambu-gray flex items-center gap-1.5`,children:[(0,q.jsx)(L,{className:`w-3.5 h-3.5`}),a(`queue.timeline.allDoneBy`,{time:y.toLocaleString(void 0,{weekday:`short`,hour:`2-digit`,minute:`2-digit`})})]})]}),m.length>0&&p.length===0&&(0,q.jsx)(`div`,{className:`mb-4 p-3 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark/40 text-xs text-bambu-gray`,children:a(`queue.timeline.nothingCommitted`)}),m.length===0?(0,q.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 text-bambu-gray`,children:[(0,q.jsx)(z,{className:`w-12 h-12 mb-3 opacity-30`}),(0,q.jsx)(`p`,{className:`text-sm`,children:a(`queue.timeline.noData`)})]}):(0,q.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl border border-bambu-dark-tertiary overflow-hidden`,children:[(0,q.jsxs)(`div`,{className:`flex border-b border-bambu-dark-tertiary`,children:[(0,q.jsx)(`div`,{className:`w-32 sm:w-40 shrink-0 px-3 py-2 text-xs font-medium text-bambu-gray border-r border-bambu-dark-tertiary`,children:a(`queue.timeline.printerColumnHeader`)}),(0,q.jsx)(`div`,{className:`relative flex-1 h-9`,children:g.map(e=>(0,q.jsx)(`div`,{className:`absolute top-0 bottom-0 border-l border-bambu-dark-tertiary/40 text-[10px] sm:text-xs text-bambu-gray pl-1 flex items-center`,style:{left:`${e.pct}%`},children:e.label},e.ms))})]}),(0,q.jsxs)(`div`,{ref:b,className:`relative`,children:[m.map(e=>{let t=h.get(e.key)??[];return(0,q.jsxs)(`div`,{className:`flex border-b border-bambu-dark-tertiary/40 last:border-b-0`,children:[(0,q.jsxs)(`div`,{className:`w-32 sm:w-40 shrink-0 px-3 py-3 border-r border-bambu-dark-tertiary flex items-center gap-2`,children:[(0,q.jsx)(be,{className:`w-3.5 h-3.5 shrink-0 ${e.printerId==null&&e.targetModel==null?`text-orange-600 dark:text-orange-400`:e.targetModel?`text-blue-600 dark:text-blue-400`:`text-bambu-green`}`}),(0,q.jsx)(`span`,{className:`text-sm text-white truncate`,children:e.label})]}),(0,q.jsxs)(`div`,{className:`relative flex-1`,style:{height:56},children:[g.map(e=>(0,q.jsx)(`div`,{className:`absolute top-0 bottom-0 border-l border-bambu-dark-tertiary/30`,style:{left:`${e.pct}%`}},e.ms)),(0,q.jsx)(`div`,{className:`absolute inset-0 opacity-30`,style:{backgroundImage:`repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(255,255,255,0.04) 6px, rgba(255,255,255,0.04) 12px)`},"aria-hidden":!0}),t.map(e=>{let t=Math.max(u,e.estimatedStart.getTime()),n=Math.min(d,e.estimatedEnd.getTime());if(n<=u||t>=d)return null;let r=(t-u)/Z*100,a=(n-t)/Z*100,o=e.item.archive_name||e.item.library_file_name||`#${e.item.id}`,s=Ze(e.item),c=e.type===`printing`,l=e.item.batch_id!=null;return(0,q.jsxs)(`button`,{onClick:()=>i(e.item),title:[o,`${ht(e.estimatedStart)} → ${ht(e.estimatedEnd)}`,e.item.print_time_seconds?Fe(e.item.print_time_seconds):null,c&&e.progress!=null?`${Math.round(e.progress)}%`:null,e.item.batch_name?`batch: ${e.item.batch_name}`:null].filter(Boolean).join(` · `),className:`absolute rounded-md transition-all hover:brightness-110 hover:z-10 overflow-hidden flex items-center gap-1.5 px-1.5 text-left ${c?`bg-blue-500/30 border border-blue-400/60`:l?`bg-cyan-500/20 border border-cyan-400/50`:`bg-bambu-green/20 border border-bambu-green/40`}`,style:{left:`${r}%`,width:`max(${ft}px, ${a}%)`,top:8,height:pt},children:[s&&(0,q.jsx)(`img`,{src:s,alt:``,className:`w-7 h-7 rounded object-cover shrink-0 bg-bambu-dark`}),(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`div`,{className:`text-xs text-white font-medium truncate leading-tight`,children:o}),(0,q.jsxs)(`div`,{className:`text-[10px] text-bambu-gray truncate leading-tight`,children:[e.item.print_time_seconds?Fe(e.item.print_time_seconds):``,c&&e.progress!=null?` · ${Math.round(e.progress)}%`:``]})]}),c&&e.progress!=null&&(0,q.jsx)(`div`,{className:`absolute bottom-0 left-0 h-0.5 bg-blue-300`,style:{width:`${e.progress}%`},"aria-hidden":!0})]},e.item.id)})]})]},e.key)}),v&&(0,q.jsxs)(`div`,{className:`absolute top-0 bottom-0 pointer-events-none z-20 flex inset-x-0`,children:[(0,q.jsx)(`div`,{className:`w-32 sm:w-40 shrink-0`}),(0,q.jsx)(`div`,{className:`relative flex-1`,children:(0,q.jsx)(`div`,{className:`absolute top-0 bottom-0 w-0.5 bg-red-400 shadow-[0_0_8px_rgba(248,113,113,0.6)]`,style:{left:`${_}%`},children:(0,q.jsx)(`div`,{className:`absolute -top-1 -left-1 w-2.5 h-2.5 bg-red-400 rounded-full`})})})]})]})]})]})}function _t({hasPermission:e,t,focusBatchId:n=null}){let i=l(),{showToast:a}=M(),[o,s]=(0,K.useState)(n?`all`:`active`),[c,f]=(0,K.useState)(null),{data:p}=Be(),m=Ne(p?.currency||`USD`),{data:h,isLoading:g}=u({queryKey:[`batches`,o],queryFn:()=>r.getBatches(o===`all`?void 0:o)}),_=n!=null&&!!h?.some(e=>e.id===n);(0,K.useEffect)(()=>{_&&document.getElementById(`batch-${n}`)?.scrollIntoView({block:`center`})},[_,n]);let v=()=>{i.invalidateQueries({queryKey:[`batches`]}),i.invalidateQueries({queryKey:[`queue`]})},y=d({mutationFn:({id:e,plateId:t})=>r.dispatchBatch(e,t===void 0?{}:{plate_id:t,only_plate:!0}),onSuccess:e=>{v(),a(t(`queue.batchOrders.dispatched`,{name:e.name}),`success`)},onError:e=>a(e.message,`error`)}),b=d({mutationFn:e=>r.cancelBatch(e),onSuccess:()=>{v(),f(null),a(t(`queue.batchCancelled`),`success`)},onError:e=>a(e.message,`error`)}),x=e(`queue:create`),ee=e(`queue:delete_all`);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 mb-4`,children:[(0,q.jsx)(B,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300`}),(0,q.jsx)(`h2`,{className:`text-base sm:text-lg font-semibold text-white`,children:t(`queue.batchOrders.title`)}),(0,q.jsx)(`div`,{className:`flex gap-1 ml-auto`,children:[`active`,`completed`,`failed`,`cancelled`,`all`].map(e=>(0,q.jsx)(`button`,{type:`button`,onClick:()=>s(e),className:`text-xs px-2.5 py-1 rounded-full border transition-colors ${o===e?`border-bambu-green bg-bambu-green/10 text-bambu-green`:`border-bambu-dark-tertiary text-bambu-gray hover:border-bambu-gray`}`,children:t(`queue.batchOrders.filter.${e}`)},e))})]}),g?(0,q.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:t(`common.loading`)}):h?.length?(0,q.jsx)(`div`,{className:`space-y-4`,children:h.map(e=>(0,q.jsx)(yt,{batch:e,currency:m,canDispatch:x,canCancel:ee,isDispatching:y.isPending&&y.variables?.id===e.id,highlighted:e.id===n,onDispatch:t=>y.mutate({id:e.id,plateId:t}),onCancel:()=>f(e),t},e.id))}):(0,q.jsxs)(Me,{className:`p-12 text-center border-dashed`,children:[(0,q.jsx)(B,{className:`w-16 h-16 text-bambu-gray mx-auto mb-4 opacity-50`}),(0,q.jsx)(`h3`,{className:`text-xl font-medium text-white mb-2`,children:t(`queue.batchOrders.emptyTitle`)}),(0,q.jsx)(`p`,{className:`text-bambu-gray max-w-md mx-auto`,children:t(`queue.batchOrders.emptyDescription`)})]}),c&&(0,q.jsx)(W,{title:t(`queue.cancelBatchConfirmTitle`),message:t(`queue.cancelBatchConfirmMessage`),confirmText:t(`queue.cancelBatch`),variant:`warning`,onConfirm:()=>b.mutate(c.id),onCancel:()=>f(null)})]})}var vt={active:`bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-300`,completed:`bg-green-100 dark:bg-green-500/20 text-green-700 dark:text-green-300`,cancelled:`bg-bambu-dark-tertiary text-bambu-gray`,failed:`bg-red-100 dark:bg-red-500/20 text-red-700 dark:text-red-300`};function yt({batch:e,currency:t,canDispatch:n,canCancel:r,isDispatching:i,onDispatch:a,onCancel:o,t:s,highlighted:c=!1}){let l=e.has_targets?e.target_count:e.completed_count+e.pending_count+e.printing_count+e.failed_count,u=l>0?Math.round(e.completed_count/l*100):0,d=e.has_targets?e.remaining_count-e.dispatchable_count:0,f=e.due_date?Le(e.due_date):null,p=f!=null&&e.status===`active`&&f.getTime()<Date.now();return(0,q.jsxs)(Me,{id:`batch-${e.id}`,className:`p-4 ${c?`ring-2 ring-bambu-green`:``}`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-start gap-3 mb-3`,children:[(0,q.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,q.jsx)(`p`,{className:`text-white font-medium truncate`,children:e.name}),(0,q.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full ${vt[e.status]??vt.cancelled}`,children:s(`queue.batchOrders.status.${e.status}`)}),!e.has_targets&&(0,q.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded-full bg-bambu-dark-tertiary text-bambu-gray`,title:s(`queue.batchOrders.noTargetsHint`),children:s(`queue.batchOrders.noTargets`)})]}),(0,q.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-1`,children:[e.created_by_username?s(`queue.addedBy`,{name:e.created_by_username}):null,f&&(0,q.jsxs)(`span`,{className:p?`text-orange-600 dark:text-orange-400`:``,children:[e.created_by_username?` • `:``,s(`queue.batchOrders.due`,{date:f.toLocaleDateString()})]})]}),e.notes&&(0,q.jsx)(`p`,{className:`text-xs text-bambu-gray mt-1 whitespace-pre-wrap`,children:e.notes})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[e.has_targets&&e.dispatchable_count>0&&e.status!==`cancelled`&&n&&(0,q.jsxs)(U,{variant:`primary`,size:`sm`,onClick:()=>a(),disabled:i,children:[(0,q.jsx)(Ge,{className:`w-4 h-4 mr-1`}),s(`queue.batchOrders.dispatchRemaining`,{count:e.dispatchable_count})]}),e.status===`active`&&r&&(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:o,children:[(0,q.jsx)(k,{className:`w-4 h-4 mr-1`}),s(`queue.cancelBatch`)]})]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,q.jsx)(`div`,{className:`flex-1 h-2 bg-bambu-dark-tertiary rounded-full overflow-hidden`,children:(0,q.jsx)(`div`,{className:`h-full rounded-full transition-all ${e.status===`completed`?`bg-bambu-green`:e.status===`failed`?`bg-red-500`:`bg-blue-500`}`,style:{width:`${Math.min(100,u)}%`}})}),(0,q.jsx)(`span`,{className:`text-xs text-bambu-gray whitespace-nowrap tabular-nums`,children:s(`queue.batchProgress`,{completed:e.completed_count,total:l})})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-xs text-bambu-gray mb-1`,children:[e.printing_count>0&&(0,q.jsx)(`span`,{children:s(`queue.batchOrders.printing`,{count:e.printing_count})}),e.pending_count>0&&(0,q.jsx)(`span`,{children:s(`queue.batch.pendingCount`,{count:e.pending_count})}),e.failed_count>0&&(0,q.jsxs)(`span`,{className:`text-orange-600 dark:text-orange-400 flex items-center gap-1`,children:[(0,q.jsx)(H,{className:`w-3 h-3`}),s(`queue.batchOrders.failed`,{count:e.failed_count})]}),e.has_targets&&e.remaining_count>0&&(0,q.jsx)(`span`,{children:s(`queue.batchOrders.remaining`,{count:e.remaining_count})}),e.print_time_seconds>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(L,{className:`w-3 h-3`}),Fe(e.print_time_seconds)]}),e.actual_cost!=null&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(R,{className:`w-3 h-3`}),(0,q.jsx)(`span`,{children:s(`queue.batchOrders.costSoFar`,{amount:`${t} ${e.actual_cost.toFixed(2)}`})}),e.estimated_remaining_cost!=null&&e.estimated_remaining_cost>0&&(0,q.jsx)(`span`,{children:s(`queue.batchOrders.costRemaining`,{amount:`${t} ${e.estimated_remaining_cost.toFixed(2)}`})})]})]}),d>0&&e.status!==`cancelled`&&(0,q.jsxs)(`p`,{className:`flex items-start gap-1.5 text-xs text-orange-600 dark:text-orange-400 mb-1`,children:[(0,q.jsx)(H,{className:`w-3 h-3 mt-0.5 flex-shrink-0`}),(0,q.jsx)(`span`,{children:s(`queue.batchOrders.strandedNotice`,{runs:d,owed:e.remaining_count})})]}),e.has_targets&&e.plates.length>0&&(0,q.jsx)(`div`,{className:`mt-3 border-t border-bambu-dark-tertiary pt-3 space-y-1.5`,children:e.plates.map(r=>(0,q.jsx)(bt,{plate:r,batchStatus:e.status,currency:t,canDispatch:n,isDispatching:i,onDispatch:()=>a(r.plate_id),t:s},`${r.plate_id??`file`}`))})]})}function bt({plate:e,batchStatus:t,currency:n,canDispatch:r,isDispatching:i,onDispatch:a,t:o}){let s=e.plate_name||(e.plate_id==null?o(`queue.batchOrders.wholeFile`):o(`queue.plateNumber`,{index:e.plate_id}));return(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs`,children:[(0,q.jsx)(z,{className:`w-3.5 h-3.5 text-bambu-gray flex-shrink-0`}),(0,q.jsx)(`span`,{className:`text-white min-w-0 truncate`,children:s}),(0,q.jsx)(`span`,{className:`text-bambu-gray tabular-nums`,children:o(`queue.batchOrders.plateProgress`,{completed:e.completed_count,target:e.quantity_target})}),e.failed_count>0&&(0,q.jsx)(`span`,{className:`text-orange-600 dark:text-orange-400`,children:o(`queue.batchOrders.failed`,{count:e.failed_count})}),e.actual_cost!=null&&(0,q.jsx)(`span`,{className:`text-bambu-gray tabular-nums`,children:`${n} ${e.actual_cost.toFixed(2)}`}),e.remaining>0&&t!==`cancelled`&&(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`text-bambu-gray`,children:o(`queue.batchOrders.remaining`,{count:e.remaining})}),e.can_dispatch?r&&(0,q.jsx)(`button`,{type:`button`,onClick:a,disabled:i,className:`text-bambu-green hover:underline disabled:opacity-50`,children:o(`queue.batchOrders.dispatchPlate`)}):(0,q.jsx)(`span`,{className:`text-orange-600 dark:text-orange-400`,children:o(`queue.batchOrders.strandedPlate`)})]})]})}var xt=`The last print failed on every free matching printer`;function St(e,t){if(!e?.connected||t>=254)return;let n=t>=128,r=n?t:Math.floor(t/4),i=n?0:t%4,a=e.ams?.find(e=>e.id===r);if(ze(n?a?.tray[0]:a?.tray.find(e=>e.id===i))===`physical`)return Re(r,i,n,!1)}function Ct(e,t){let n=new Map;if(!e?.length||!t?.length)return n;let r=new Set(e.filter(e=>e>=0)),i=new Map,a;for(let[e]of t){if(a!==void 0&&!r.has(e)&&!i.has(e)){let t=r.has(a)?a:i.get(a);t!==void 0&&(i.set(e,t),n.set(t,e))}a=e}return n}function wt(e){return e.slotLabel?[e.slotLabel,e.spoolName||e.type,e.colorName].filter(Boolean).join(` · `):e.colorName}function Tt(e,t,n=[],r,i=`Empty`,a={}){let o=e.status===`printing`?Ct(e.ams_mapping,r?.tray_change_log):new Map,s=t=>{let a=t.slotId,s=a>0?e.ams_mapping?.[a-1]:void 0;if(s==null||s<0)return t;let c=o.get(s)??s,l=n.find(e=>e.globalTrayId===c);if(l)return{slotId:a,type:l.type,color:l.color,colorName:l.colorName,slotLabel:l.label,spoolName:l.spoolName,extraColors:l.extraColors,effectType:l.effectType,subtype:l.spoolSubtype};let u=St(r,c);return u?{...t,slotLabel:u,spoolName:i,emptySlot:!0}:t},c=e.plate_id==null?t[0]:t.find(t=>t.index===e.plate_id);if(c){let t=new Map((e.filament_overrides??[]).map(e=>[e.slot_id,e]));return c.filaments.filter(e=>e.used_in_plate!==!1&&e.used_grams>0).map(e=>{let n=t.get(e.slot_id),r=n?.color??e.color,i=n?.type??e.type,o=n?F(n.tray_info_idx,n.type,a):F(e.tray_info_idx,e.type,a);return s({slotId:e.slot_id,type:i,color:r,colorName:n?.color_name?.trim()||G(r,o)})})}return e.filament_overrides?.length?e.filament_overrides.map(e=>s({slotId:e.slot_id,type:e.type,color:e.color,colorName:e.color_name?.trim()||G(e.color,F(e.tray_info_idx,e.type,a))})):e.filament_color?[s({slotId:1,type:e.filament_type??``,color:e.filament_color,colorName:G(e.filament_color,e.filament_type)})]:[]}function Et(e,t=!1){return t&&e>=1e3?`${(e/1e3).toFixed(1)}kg`:`${Math.round(e)}g`}function Dt({status:e,waitingReason:t,printerState:n,t:r}){if(e===`pending`&&t)return(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border text-purple-700 dark:text-purple-400 bg-purple-50 dark:bg-purple-400/10 border-purple-200 dark:border-purple-400/20`,children:[(0,q.jsx)(L,{className:`w-3.5 h-3.5`}),r(`queue.status.waiting`)]});if(e===`printing`&&n===`PAUSE`)return(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border text-yellow-700 dark:text-yellow-400 bg-yellow-50 dark:bg-yellow-400/10 border-yellow-200 dark:border-yellow-400/20`,children:[(0,q.jsx)(_e,{className:`w-3.5 h-3.5`}),r(`queue.status.paused`)]});let{icon:i,color:a,label:o}={pending:{icon:L,color:`text-status-warning bg-status-warning/10 border-status-warning/20`,label:r(`queue.status.pending`)},printing:{icon:ye,color:`text-blue-700 dark:text-blue-400 bg-blue-50 dark:bg-blue-400/10 border-blue-200 dark:border-blue-400/20`,label:r(`queue.status.printing`)},completed:{icon:N,color:`text-status-ok bg-status-ok/10 border-status-ok/20`,label:r(`queue.status.completed`)},failed:{icon:k,color:`text-status-error bg-status-error/10 border-status-error/20`,label:r(`queue.status.failed`)},skipped:{icon:V,color:`text-orange-700 dark:text-orange-400 bg-orange-50 dark:bg-orange-400/10 border-orange-200 dark:border-orange-400/20`,label:r(`queue.status.skipped`)},cancelled:{icon:Ae,color:`text-gray-400 bg-gray-400/10 border-gray-400/20`,label:r(`queue.status.cancelled`)}}[e];return(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-medium border ${a}`,children:[(0,q.jsx)(i,{className:`w-3.5 h-3.5`}),o]})}function Ot({selectedCount:e,printers:t,onSave:n,onClose:r,isSaving:i,canControlPrinter:a,hasGcodeSnippets:o,t:s}){let[c,l]=(0,K.useState)(`unchanged`),[u,d]=(0,K.useState)(`unchanged`),[f,p]=(0,K.useState)(`unchanged`),[m,h]=(0,K.useState)(`unchanged`),[g,_]=(0,K.useState)(`unchanged`),[v,y]=(0,K.useState)(`unchanged`),[b,x]=(0,K.useState)(`unchanged`),[ee,S]=(0,K.useState)(`unchanged`),[te,ne]=(0,K.useState)(`unchanged`),[C,w]=(0,K.useState)(`unchanged`),[T,E]=(0,K.useState)(`unchanged`),[D,O]=(0,K.useState)(`unchanged`),[k,A]=(0,K.useState)(`unchanged`),re=t.some(e=>e.nozzle_count===2),j=()=>{let e={};c!==`unchanged`&&(e.printer_id=c),u!==`unchanged`&&(e.manual_start=u),f!==`unchanged`&&(e.auto_off_after=f),m!==`unchanged`&&(e.require_previous_success=m),g!==`unchanged`&&(e.gcode_injection=g),v!==`unchanged`&&(e.bed_levelling=v),b!==`unchanged`&&(e.flow_cali=b),ee!==`unchanged`&&(e.vibration_cali=ee),te!==`unchanged`&&(e.layer_inspect=te),C!==`unchanged`&&(e.timelapse=C),T!==`unchanged`&&(e.use_ams=T),D!==`unchanged`&&(e.confirm_outcome=D),k!==`unchanged`&&(e.nozzle_offset_cali=k),n(e)},M=c!==`unchanged`||u!==`unchanged`||f!==`unchanged`||m!==`unchanged`||v!==`unchanged`||b!==`unchanged`||ee!==`unchanged`||te!==`unchanged`||C!==`unchanged`||T!==`unchanged`||D!==`unchanged`||k!==`unchanged`||g!==`unchanged`;return(0,q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm`,children:(0,q.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl border border-bambu-dark-tertiary w-full max-w-lg max-h-[90vh] overflow-y-auto`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,q.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:s(`queue.bulkEdit.title`,{count:e})}),(0,q.jsx)(`button`,{onClick:r,className:`p-1 hover:bg-bambu-dark rounded`,children:(0,q.jsx)(Ae,{className:`w-5 h-5 text-bambu-gray`})})]}),(0,q.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,q.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:s(`queue.bulkEdit.description`)}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-sm font-medium text-white mb-2`,children:s(`queue.bulkEdit.printer`)}),(0,q.jsxs)(`select`,{value:c===null?`null`:c===`unchanged`?`unchanged`:String(c),onChange:e=>{let t=e.target.value;l(t===`unchanged`?`unchanged`:t===`null`?null:Number(t))},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`,children:[(0,q.jsx)(`option`,{value:`unchanged`,children:s(`queue.bulkEdit.noChange`)}),(0,q.jsx)(`option`,{value:`null`,children:s(`queue.filter.unassigned`)}),t.map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-sm font-medium text-white mb-2`,children:s(`queue.bulkEdit.queueOptions`)}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(Q,{label:s(`queue.bulkEdit.staged`),value:u,onChange:d,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.autoPowerOff`),value:f,onChange:p,disabled:!a,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.requirePrevious`),value:m,onChange:h,t:s}),o&&(0,q.jsx)(Q,{label:s(`queue.bulkEdit.gcodeInjection`),value:g,onChange:_,t:s})]})]}),(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{className:`block text-sm font-medium text-white mb-2`,children:s(`queue.bulkEdit.printOptions`)}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(kt,{label:s(`queue.bulkEdit.bedLevelling`),value:v,onChange:y,t:s}),(0,q.jsx)(kt,{label:s(`queue.bulkEdit.flowCalibration`),value:b,onChange:x,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.vibrationCalibration`),value:ee,onChange:S,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.layerInspection`),value:te,onChange:ne,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.timelapse`),value:C,onChange:w,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.useAms`),value:T,onChange:E,t:s}),(0,q.jsx)(Q,{label:s(`queue.bulkEdit.confirmOutcome`),value:D,onChange:O,t:s}),re&&(0,q.jsx)(kt,{label:s(`queue.bulkEdit.nozzleOffsetCali`),value:k,onChange:A,t:s})]})]})]}),(0,q.jsxs)(`div`,{className:`flex justify-end gap-3 p-4 border-t border-bambu-dark-tertiary`,children:[(0,q.jsx)(U,{variant:`secondary`,onClick:r,children:s(`common.cancel`)}),(0,q.jsx)(U,{onClick:j,disabled:!M||i,children:s(i?`common.saving`:`queue.bulkEdit.applyChanges`)})]})]})})}function Q({label:e,value:t,onChange:n,disabled:r,t:i}){return(0,q.jsxs)(`div`,{className:`flex items-center justify-between py-1 ${r?`opacity-50`:``}`,children:[(0,q.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:e}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 bg-bambu-dark rounded-lg p-0.5`,children:[(0,q.jsx)(`button`,{onClick:()=>n(`unchanged`),disabled:r,className:`px-2 py-1 text-xs rounded ${t===`unchanged`?`bg-bambu-dark-tertiary text-white`:`text-bambu-gray hover:text-white`} disabled:cursor-not-allowed`,children:`—`}),(0,q.jsx)(`button`,{onClick:()=>n(!1),disabled:r,className:`px-2 py-1 text-xs rounded ${t===!1?`bg-red-100 dark:bg-red-500/20 text-red-700 dark:text-red-400`:`text-bambu-gray hover:text-white`} disabled:cursor-not-allowed`,children:i(`common.off`)}),(0,q.jsx)(`button`,{onClick:()=>n(!0),disabled:r,className:`px-2 py-1 text-xs rounded ${t===!0?`bg-bambu-green/20 text-bambu-green`:`text-bambu-gray hover:text-white`} disabled:cursor-not-allowed`,children:i(`common.on`)})]})]})}function kt({label:e,value:t,onChange:n,t:r}){let i=[{key:`unchanged`,label:`—`,active:`bg-bambu-dark-tertiary text-white`},{key:`off`,label:r(`settings.calibrationMode_off`),active:`bg-red-100 dark:bg-red-500/20 text-red-700 dark:text-red-400`},{key:`auto`,label:r(`settings.calibrationMode_auto`),active:`bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-400`},{key:`on`,label:r(`settings.calibrationMode_on`),active:`bg-bambu-green/20 text-bambu-green`}];return(0,q.jsxs)(`div`,{className:`flex items-center justify-between py-1`,children:[(0,q.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:e}),(0,q.jsx)(`div`,{className:`flex items-center gap-1 bg-bambu-dark rounded-lg p-0.5`,children:i.map(({key:e,label:r,active:i})=>(0,q.jsx)(`button`,{onClick:()=>n(e),className:`px-2 py-1 text-xs rounded ${t===e?i:`text-bambu-gray hover:text-white`}`,children:r},e))})]})}function At({item:e,position:t,onEdit:n,onCancel:i,onRemove:a,onStop:o,onRequeue:c,onStart:l,onMoveUp:d,onMoveDown:f,timeFormat:p=`system`,isSelected:m=!1,onToggleSelect:g,hasPermission:_,canModify:v,printerState:y,showEta:b=!1,etaNow:x,t:S}){let{hasAnyPermission:te}=je(),ne=!te(`queue:update_all`,`queue:start_unreviewed`),C=e.printer_id!=null&&(e.ams_mapping?.some(e=>e>=0)??!1),{data:w}=u({queryKey:[`printerStatus`,e.printer_id],queryFn:()=>r.getPrinterStatus(e.printer_id),refetchInterval:y===`printing`&&3e4,enabled:e.printer_id!=null&&(y===`printing`||C)}),{data:T}=u({queryKey:[`printer-inventory-remain`,e.printer_id],queryFn:()=>r.getInventoryRemain(e.printer_id),enabled:C,staleTime:30*1e3}),k=(0,K.useMemo)(()=>{let e=T?.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},[T]),re=(0,K.useMemo)(()=>ae(w,k),[w,k]),j=!!e.library_file_id&&!e.archive_id,{data:M}=u({queryKey:[`archive-plates`,e.archive_id],queryFn:()=>r.getArchivePlates(e.archive_id),enabled:!!e.archive_id&&!j&&!e.archive_deleted}),{data:N}=u({queryKey:[`library-file-plates`,e.library_file_id],queryFn:()=>r.getLibraryFilePlates(e.library_file_id),enabled:j&&!!e.library_file_id}),oe=j?N:M,F=oe?.plates??[],ce=I(),R=Tt(e,F,re,w,S(`ams.empty`),ce),fe=_(`queue:reorder`),{attributes:pe,listeners:he,setNodeRef:ge,transform:B,transition:_e,isDragging:Se}=h({id:e.id,disabled:e.status!==`pending`||!fe}),V={transform:ee.Transform.toString(B),transition:_e},Ce=e.status===`printing`,we=e.status===`pending`,H=[`completed`,`failed`,`skipped`,`cancelled`].includes(e.status),ke=we&&b&&e.print_time_seconds!=null&&e.print_time_seconds>0?Pe(e.print_time_seconds/60,p,S,x):null,Me=we&&g,W=Ze(e);return(0,q.jsxs)(`div`,{ref:ge,style:V,className:`
  2. group relative bg-bambu-dark-secondary rounded-xl border transition-all duration-200
  3. border-l-[3px] ${Ce?`border-l-blue-500`:we?`border-l-yellow-500`:e.status===`completed`?`border-l-emerald-500`:e.status===`failed`?`border-l-red-500`:`border-l-gray-500`}
  4. ${Se?`opacity-50 scale-[1.02] shadow-xl z-50`:``}
  5. ${Ce?`border-blue-500/30 bg-gradient-to-r from-blue-500/5 to-transparent`:``}
  6. ${m&&Me?`sm:border-bambu-dark-tertiary border-bambu-green/40`:``}
  7. ${!m&&!Ce?`border-bambu-dark-tertiary hover:border-bambu-dark-tertiary/80`:``}
  8. ${Me?`cursor-pointer sm:cursor-default`:``}
  9. `,onClick:Me?()=>{window.innerWidth<640&&g()}:void 0,children:[Me&&m&&(0,q.jsx)(`div`,{className:`sm:hidden absolute left-0 top-3 bottom-3 w-1 rounded-full bg-bambu-green`}),(0,q.jsxs)(`div`,{className:`flex items-start sm:items-center gap-2 sm:gap-4 p-3 sm:p-4`,children:[we&&(d||f)&&(0,q.jsxs)(`div`,{className:`flex sm:hidden flex-col shrink-0 -my-1`,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(`button`,{type:`button`,onClick:d,disabled:!d,title:S(`queue.moveUp`),"aria-label":S(`queue.moveUp`),className:`flex items-center justify-center w-8 h-7 rounded-lg text-bambu-gray hover:text-white hover:bg-bambu-dark disabled:opacity-25 disabled:hover:bg-transparent transition-colors`,children:(0,q.jsx)(O,{className:`w-5 h-5`})}),(0,q.jsx)(`button`,{type:`button`,onClick:f,disabled:!f,title:S(`queue.moveDown`),"aria-label":S(`queue.moveDown`),className:`flex items-center justify-center w-8 h-7 rounded-lg text-bambu-gray hover:text-white hover:bg-bambu-dark disabled:opacity-25 disabled:hover:bg-transparent transition-colors`,children:(0,q.jsx)(D,{className:`w-5 h-5`})})]}),we&&g&&(0,q.jsx)(`button`,{onClick:e=>{e.stopPropagation(),g()},className:`hidden sm:flex items-center justify-center w-6 h-6 rounded border transition-colors shrink-0 ${m?`bg-bambu-green border-bambu-green text-white`:`border-white/30 bg-black/30 hover:border-bambu-green/50`}`,children:m&&(0,q.jsx)(E,{className:`w-4 h-4`})}),we?(0,q.jsx)(`div`,{...pe,...he,className:`hidden sm:flex items-center justify-center w-8 h-8 rounded-lg bg-bambu-dark cursor-grab active:cursor-grabbing hover:bg-bambu-dark-tertiary transition-colors touch-none shrink-0`,children:(0,q.jsx)(me,{className:`w-4 h-4 text-bambu-gray`})}):t===void 0?(0,q.jsx)(`div`,{className:`hidden sm:block w-8 shrink-0`}):(0,q.jsxs)(`div`,{className:`hidden sm:flex items-center justify-center w-8 h-8 rounded-lg bg-bambu-dark text-bambu-gray text-sm font-medium shrink-0`,children:[`#`,t]}),(0,q.jsx)(`div`,{className:`w-10 h-10 sm:w-14 sm:h-14 flex-shrink-0 bg-bambu-dark rounded-lg overflow-hidden`,children:W?(0,q.jsx)(`img`,{src:W,alt:``,className:`w-full h-full object-cover`}):(0,q.jsx)(`div`,{className:`w-full h-full flex items-center justify-center text-bambu-gray`,children:(0,q.jsx)(z,{className:`w-5 h-5 sm:w-6 sm:h-6`})})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,q.jsxs)(`p`,{className:`text-sm sm:text-base text-white font-medium truncate`,children:[Ue(e,e=>S(`common.plusNMore`,{count:e})),(oe?.is_multi_plate??!1)&&e.plate_id!==void 0&&e.plate_id!==null&&` • ${F.find(t=>t.index===e.plate_id)?.name||S(`queue.plateNumber`,{index:e.plate_id})}`]}),e.archive_id?(0,q.jsx)(s,{to:`/archives?highlight=${e.archive_id}`,className:`text-bambu-gray hover:text-bambu-green transition-colors flex-shrink-0`,title:S(`queue.viewArchive`),children:(0,q.jsx)(de,{className:`w-3.5 h-3.5`})}):e.library_file_id?(0,q.jsx)(s,{to:`/library?highlight=${e.library_file_id}`,className:`text-bambu-gray hover:text-bambu-green transition-colors flex-shrink-0`,title:S(`queue.viewInFileManager`),children:(0,q.jsx)(de,{className:`w-3.5 h-3.5`})}):null,e.batch_name&&(0,q.jsx)(`span`,{className:`flex-shrink-0 px-1.5 py-0.5 text-[10px] sm:text-xs bg-cyan-100 dark:bg-cyan-500/20 text-cyan-700 dark:text-cyan-300 rounded border border-cyan-300 dark:border-cyan-500/30`,children:e.batch_name})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs sm:text-sm text-bambu-gray`,children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5 ${e.printer_id===null&&!e.target_model?`text-orange-700 dark:text-orange-400`:``} ${e.target_model&&!e.printer_id?`text-blue-700 dark:text-blue-400`:``}`,children:[(0,q.jsx)(be,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),(0,q.jsx)(`span`,{className:`truncate max-w-[120px] sm:max-w-none`,children:(e.variants?.length??0)>1&&!e.printer_id?`${S(`queue.filter.any`)} ${e.variants.map(e=>e.target_model).join(` / `)}${e.target_location?` @ ${e.target_location}`:``}`:e.target_model&&!e.printer_id?`${S(`queue.filter.any`)} ${e.target_model}${e.target_location?` @ ${e.target_location}`:``}${e.required_filament_types?.length?` (${e.required_filament_types.join(`, `)})`:``}`:e.printer_id===null?S(`queue.filter.unassigned`):e.printer_name||`${S(`common.printer`)} #${e.printer_id}`})]}),e.print_time_seconds&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5`,children:[(0,q.jsx)(Te,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),Fe(e.print_time_seconds)]}),ke&&(0,q.jsxs)(`span`,{"data-testid":`queue-item-eta`,className:`text-bambu-green font-medium`,title:S(`queue.time.etaIfStartedNow`),children:[`ETA `,ke]}),e.filament_used_grams&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5`,children:[(0,q.jsx)(Oe,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),Et(e.filament_used_grams)]}),R.length>2?(0,q.jsxs)(`span`,{"data-testid":`queue-filament-compact`,className:`flex items-center gap-0.5 flex-shrink-0`,title:R.map(wt).join(`
  10. `),role:`img`,"aria-label":R.map(wt).join(`, `),children:[R.map(e=>(0,q.jsx)(He,{rgba:e.color,extraColors:e.extraColors,effectType:e.effectType,subtype:e.subtype,className:`w-2.5 h-2.5 sm:w-3 sm:h-3 pointer-events-none`,effectSize:`table`},`filament-${e.slotId}`)),R.some(e=>e.emptySlot)&&(0,q.jsx)(A,{className:`w-3 h-3 ml-0.5 text-yellow-700 dark:text-yellow-400`,"aria-hidden":`true`})]}):R.map(e=>{let t=wt(e);return(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5 min-w-0`,title:t,children:[(0,q.jsx)(He,{rgba:e.color,extraColors:e.extraColors,effectType:e.effectType,subtype:e.subtype,className:`w-3 h-3 sm:w-3.5 sm:h-3.5`,effectSize:`table`}),(0,q.jsx)(`span`,{className:`truncate max-w-[110px] sm:max-w-[260px]${e.emptySlot?` text-yellow-700 dark:text-yellow-400`:``}`,children:t})]},`filament-${e.slotId}`)}),(()=>{let t=ie(e.bed_type);return t?(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5`,title:t.label,children:[(0,q.jsx)(`img`,{src:t.icon,alt:``,className:`w-3.5 h-3.5 sm:w-4 sm:h-4 object-contain`}),(0,q.jsx)(`span`,{className:`truncate max-w-[120px]`,children:t.label})]}):null})(),e.created_by_username&&(0,q.jsxs)(`span`,{className:`hidden sm:flex items-center gap-1.5`,title:S(`queue.addedBy`,{name:e.created_by_username}),children:[(0,q.jsx)(De,{className:`w-3.5 h-3.5`}),e.created_by_username]}),we&&!e.manual_start&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,q.jsx)(L,{className:`w-3.5 h-3.5`}),e.scheduled_time?(Le(e.scheduled_time)?.getTime()??0)-Date.now()<-6e4?S?.(`queue.time.overdue`)??`Overdue`:Ie(e.scheduled_time,p,S):S?.(`queue.time.whenFree`)??`When a printer is free`]})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 sm:gap-2 mt-1.5 sm:mt-2`,children:[e.manual_start&&(0,q.jsxs)(`span`,{className:`text-[10px] sm:text-xs px-1.5 sm:px-2 py-0.5 bg-purple-50 dark:bg-purple-500/10 text-purple-700 dark:text-purple-400 rounded-full border border-purple-200 dark:border-purple-500/20 flex items-center gap-1`,children:[(0,q.jsx)(se,{className:`w-2.5 h-2.5 sm:w-3 sm:h-3`}),S(ne?`queue.badges.awaitingReview`:`queue.badges.staged`)]}),e.require_previous_success&&(0,q.jsx)(`span`,{className:`text-[10px] sm:text-xs px-1.5 sm:px-2 py-0.5 bg-orange-50 dark:bg-orange-500/10 text-orange-700 dark:text-orange-400 rounded-full border border-orange-200 dark:border-orange-500/20`,children:S(`queue.badges.requiresPrevious`)}),e.auto_off_after&&(0,q.jsxs)(`span`,{className:`text-[10px] sm:text-xs px-1.5 sm:px-2 py-0.5 bg-blue-50 dark:bg-blue-500/10 text-blue-700 dark:text-blue-400 rounded-full border border-blue-200 dark:border-blue-500/20 flex items-center gap-1`,children:[(0,q.jsx)(le,{className:`w-2.5 h-2.5 sm:w-3 sm:h-3`}),S(`queue.badges.autoPowerOff`)]}),e.gcode_injection&&(0,q.jsxs)(`span`,{className:`text-[10px] sm:text-xs px-1.5 sm:px-2 py-0.5 bg-emerald-50 dark:bg-emerald-500/10 text-emerald-700 dark:text-emerald-400 rounded-full border border-emerald-200 dark:border-emerald-500/20 flex items-center gap-1`,children:[(0,q.jsx)(ue,{className:`w-2.5 h-2.5 sm:w-3 sm:h-3`}),S(`queue.badges.gcodeInjection`)]}),e.confirm_outcome&&(0,q.jsxs)(`span`,{title:S(`queue.badges.confirmOutcomeTitle`),className:`text-[10px] sm:text-xs px-1.5 sm:px-2 py-0.5 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-full border border-green-200 dark:border-green-500/20 flex items-center gap-1`,children:[(0,q.jsx)(P,{className:`w-2.5 h-2.5 sm:w-3 sm:h-3`}),S(`queue.badges.confirmOutcome`)]})]}),Ce&&w&&(()=>{let e=w.state===`RUNNING`||w.state===`PAUSE`,t=e&&w.progress||0,n=e?w.remaining_time:null,r=e?w.layer_num:null,i=e?w.total_layers:null;return(0,q.jsxs)(`div`,{className:`mt-2 sm:mt-3`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between text-xs sm:text-sm`,children:[(0,q.jsx)(`div`,{className:`flex-1 bg-bambu-dark-tertiary rounded-full h-1.5 sm:h-2 mr-3`,children:(0,q.jsx)(`div`,{className:`bg-bambu-green h-1.5 sm:h-2 rounded-full transition-all`,style:{width:`${t}%`}})}),(0,q.jsxs)(`span`,{className:`text-white`,children:[Math.round(t),`%`]})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 sm:gap-3 mt-1.5 sm:mt-2 text-[10px] sm:text-xs text-bambu-gray`,children:[n!=null&&n>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(L,{className:`w-3 h-3`}),Fe(n*60)]}),(0,q.jsxs)(`span`,{className:`text-bambu-green font-medium`,title:S(`printers.estimatedCompletion`),children:[`ETA `,Pe(n,p,S)]})]}),r!=null&&i!=null&&i>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,q.jsx)(z,{className:`w-3 h-3`}),r,`/`,i]})]})]})})(),e.waiting_reason&&e.status===`pending`&&(0,q.jsxs)(`p`,{className:`text-[10px] sm:text-xs text-purple-700 dark:text-purple-400 mt-1.5 sm:mt-2 flex items-start gap-1`,children:[(0,q.jsx)(A,{className:`w-3 h-3 mt-0.5 flex-shrink-0`}),(0,q.jsx)(`span`,{children:e.waiting_reason})]}),e.filament_short&&e.status===`pending`&&(0,q.jsxs)(`p`,{className:`text-[10px] sm:text-xs text-yellow-700 dark:text-yellow-400 mt-1.5 sm:mt-2 flex items-start gap-1`,title:S(`queue.filamentShort.rowTooltip`),children:[(0,q.jsx)(A,{className:`w-3 h-3 mt-0.5 flex-shrink-0`}),(0,q.jsx)(`span`,{children:S(`queue.filamentShort.rowBadge`)})]}),e.archive_has_slicer_ams_mapping&&(0,q.jsxs)(`p`,{className:`text-[10px] sm:text-xs text-green-700 dark:text-green-400 mt-1.5 sm:mt-2 flex items-start gap-1`,title:S(`queue.slicerAmsMapping.rowTooltip`),children:[(0,q.jsx)(E,{className:`w-3 h-3 mt-0.5 flex-shrink-0`}),(0,q.jsx)(`span`,{children:S(`queue.slicerAmsMapping.rowBadge`)})]}),e.error_message&&(0,q.jsxs)(`p`,{className:`text-[10px] sm:text-xs text-red-700 dark:text-red-400 mt-1.5 sm:mt-2 flex items-center gap-1`,children:[(0,q.jsx)(A,{className:`w-3 h-3`}),e.error_message]})]}),(0,q.jsxs)(`div`,{className:`flex flex-col sm:flex-row items-end sm:items-center gap-2 sm:gap-1 shrink-0`,onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(Dt,{status:e.status,waitingReason:e.waiting_reason,printerState:y,t:S}),(0,q.jsxs)(`div`,{className:`flex items-center gap-0.5 sm:gap-1`,children:[Ce&&(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:o,disabled:!v(`queue`,`update`,e.created_by_id),title:v(`queue`,`update`,e.created_by_id)?S(`queue.actions.stopPrint`):S(`queue.permissions.noStopPrint`),className:`text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-500/10 p-1.5 sm:p-2`,children:(0,q.jsx)(Ke,{className:`w-4 h-4`})}),we&&(0,q.jsxs)(q.Fragment,{children:[e.manual_start&&(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:l,disabled:ne||!v(`queue`,`update`,e.created_by_id),title:ne?S(`queue.permissions.awaitingReview`):v(`queue`,`update`,e.created_by_id)?S(`queue.actions.startPrint`):S(`queue.permissions.noStartPrint`),className:`text-bambu-green hover:text-bambu-green-light hover:bg-bambu-green/10 p-1.5 sm:p-2`,children:(0,q.jsx)(ye,{className:`w-4 h-4`})}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:n,disabled:!v(`queue`,`update`,e.created_by_id),title:v(`queue`,`update`,e.created_by_id)?S(`common.edit`):S(`queue.permissions.noEdit`),className:`p-1.5 sm:p-2`,children:(0,q.jsx)(ve,{className:`w-4 h-4`})}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:i,disabled:!v(`queue`,`delete`,e.created_by_id),title:v(`queue`,`delete`,e.created_by_id)?S(`common.cancel`):S(`queue.permissions.noCancel`),className:`text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-500/10 p-1.5 sm:p-2`,children:(0,q.jsx)(Ae,{className:`w-4 h-4`})})]}),H&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:c,disabled:!_(`queue:create`),title:_(`queue:create`)?S(`queue.actions.requeue`):S(`queue.permissions.noRequeue`),className:`text-bambu-green hover:text-bambu-green/80 hover:bg-bambu-green/10 p-1.5 sm:p-2`,children:(0,q.jsx)(xe,{className:`w-4 h-4`})}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:a,disabled:!v(`queue`,`delete`,e.created_by_id),title:v(`queue`,`delete`,e.created_by_id)?S(`common.remove`):S(`queue.permissions.noRemove`),className:`p-1.5 sm:p-2`,children:(0,q.jsx)(Ee,{className:`w-4 h-4`})})]})]})]})]})]})}function jt(e){let{row:t,setEditItem:n,setConfirmAction:r,startMutation:i,selectedItems:a,handleToggleSelect:o,timeFormat:s,hasPermission:c,canModify:l,t:u,etaEligibleIds:d,etaNow:f,onMoveUp:p,onMoveDown:m}=e;return t.kind===`item`?(0,q.jsx)(At,{item:t.item,onEdit:()=>n(t.item),onCancel:()=>r({type:`cancel`,item:t.item}),onRemove:()=>{},onStop:()=>{},onRequeue:()=>{},onStart:()=>i.mutate({id:t.item.id}),onMoveUp:p,onMoveDown:m,timeFormat:s,isSelected:a.includes(t.item.id),onToggleSelect:()=>o(t.item.id),hasPermission:c,canModify:l,showEta:d.has(t.item.id),etaNow:f,t:u}):(0,q.jsx)(Mt,{...e})}function Mt({row:e,collapsed:t,onToggleBatch:n,onUngroup:r,setEditItem:i,setConfirmAction:a,startMutation:o,selectedItems:s,handleToggleSelect:c,timeFormat:l,hasPermission:u,canModify:d,t:f,etaEligibleIds:p,etaNow:m,aggregateForRows:g,onMoveUp:_,onMoveDown:v,onMoveBlock:y}){let b=e,x=u(`queue:reorder`),{attributes:S,listeners:te,setNodeRef:ne,transform:C,transition:w,isDragging:T}=h({id:`batch-${b.batchId}`,disabled:!x}),k={transform:ee.Transform.toString(C),transition:w},A=g([b]),j=b.items.map(e=>e.id),M=j.length>0&&j.every(e=>s.includes(e)),N=new Set(b.items.map(e=>e.status)),ie=N.has(`failed`)?`failed`:N.has(`printing`)?`printing`:`pending`,ae=b.items.filter(e=>e.status===`pending`).length;return(0,q.jsxs)(`div`,{ref:ne,style:k,className:`bg-bambu-dark-secondary rounded-xl border border-l-[3px] border-l-cyan-400 border-bambu-dark-tertiary overflow-hidden ${T?`opacity-50 scale-[1.01] shadow-xl z-50`:``}`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 p-3 sm:p-4`,children:[x&&(_||v)&&(0,q.jsxs)(`div`,{className:`flex sm:hidden flex-col shrink-0 -my-1`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:_,disabled:!_,title:f(`queue.moveUp`),"aria-label":f(`queue.moveUp`),className:`flex items-center justify-center w-8 h-7 rounded-lg text-bambu-gray hover:text-white hover:bg-bambu-dark disabled:opacity-25 disabled:hover:bg-transparent transition-colors`,children:(0,q.jsx)(O,{className:`w-5 h-5`})}),(0,q.jsx)(`button`,{type:`button`,onClick:v,disabled:!v,title:f(`queue.moveDown`),"aria-label":f(`queue.moveDown`),className:`flex items-center justify-center w-8 h-7 rounded-lg text-bambu-gray hover:text-white hover:bg-bambu-dark disabled:opacity-25 disabled:hover:bg-transparent transition-colors`,children:(0,q.jsx)(D,{className:`w-5 h-5`})})]}),(0,q.jsx)(`button`,{onClick:e=>{e.stopPropagation(),j.forEach(e=>{(M&&s.includes(e)||!M&&!s.includes(e))&&c(e)})},className:`hidden sm:flex items-center justify-center w-6 h-6 rounded border transition-colors shrink-0 ${M?`bg-bambu-green border-bambu-green text-white`:`border-white/30 bg-black/30 hover:border-bambu-green/50`}`,title:f(M?`queue.bulkEdit.deselectAll`:`queue.bulkEdit.selectAll`),children:M&&(0,q.jsx)(E,{className:`w-4 h-4`})}),x&&(0,q.jsx)(`div`,{...S,...te,className:`hidden sm:flex items-center justify-center w-8 h-8 rounded-lg bg-bambu-dark cursor-grab active:cursor-grabbing hover:bg-bambu-dark-tertiary transition-colors touch-none shrink-0`,title:f(`queue.batch.dragGroup`,{defaultValue:`Drag group`}),children:(0,q.jsx)(me,{className:`w-4 h-4 text-bambu-gray`})}),(0,q.jsx)(`button`,{onClick:n,className:`flex items-center justify-center w-8 h-8 rounded-lg bg-bambu-dark hover:bg-bambu-dark-tertiary transition-colors shrink-0`,title:f(t?`queue.batch.expand`:`queue.batch.collapse`),children:t?(0,q.jsx)(re,{className:`w-4 h-4 text-bambu-gray`}):(0,q.jsx)(D,{className:`w-4 h-4 text-bambu-gray`})}),(0,q.jsx)(`div`,{className:`w-10 h-10 sm:w-12 sm:h-12 flex-shrink-0 bg-bambu-dark rounded-lg flex items-center justify-center`,children:t?(0,q.jsx)(B,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300`}):(0,q.jsx)(qe,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300`})}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,q.jsx)(`p`,{className:`text-sm sm:text-base text-white font-medium truncate`,children:b.batchName}),(0,q.jsx)(`span`,{className:`flex-shrink-0 px-1.5 py-0.5 text-[10px] sm:text-xs bg-cyan-100 dark:bg-cyan-500/15 text-cyan-700 dark:text-cyan-300 rounded border border-cyan-300 dark:border-cyan-500/30`,children:f(`queue.batch.label`,{count:A.count})})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs sm:text-sm text-bambu-gray`,children:[A.time>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5`,children:[(0,q.jsx)(Te,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),Fe(A.time)]}),A.weight>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5`,children:[(0,q.jsx)(Oe,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),Et(A.weight)]}),ae>0&&ie===`pending`&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 sm:gap-1.5 text-yellow-700 dark:text-yellow-400`,children:[(0,q.jsx)(L,{className:`w-3 h-3 sm:w-3.5 sm:h-3.5`}),f(`queue.batch.pendingCount`,{count:ae})]})]})]}),(0,q.jsx)(`div`,{className:`flex items-center gap-1 shrink-0`,children:r&&(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:r,title:f(`queue.batch.ungroup`),className:`text-cyan-700 dark:text-cyan-300 hover:text-cyan-900 dark:hover:text-cyan-200 hover:bg-cyan-50 dark:hover:bg-cyan-500/10 p-1.5 sm:p-2`,children:(0,q.jsx)(Ye,{className:`w-4 h-4`})})})]}),!t&&(0,q.jsx)(`div`,{className:`border-t border-bambu-dark-tertiary bg-black/20 p-2 sm:p-3 space-y-2`,children:b.items.map((e,t)=>(0,q.jsx)(At,{item:e,onEdit:()=>i(e),onCancel:()=>a({type:`cancel`,item:e}),onRemove:()=>{},onStop:()=>{},onRequeue:()=>{},onStart:()=>o.mutate({id:e.id}),onMoveUp:y&&t>0?()=>y([e.id],b.items[t-1].id,!1):void 0,onMoveDown:y&&t<b.items.length-1?()=>y([e.id],b.items[t+1].id,!0):void 0,timeFormat:l,isSelected:s.includes(e.id),onToggleSelect:()=>c(e.id),hasPermission:u,canModify:d,showEta:p.has(e.id),etaNow:m,t:f},e.id))})]})}function Nt({items:e,total:t,visibleCount:n,onShowMore:r,sortBy:i,sortAsc:a,onSortByChange:o,onSortAscToggle:s,onRemove:c,onRequeue:l,timeFormat:u,batchCollapsed:d,toggleBatchCollapsed:f,hasPermission:h,canModify:g,t:_}){if(e.length===0)return(0,q.jsxs)(Me,{className:`p-12 text-center border-dashed`,children:[(0,q.jsx)(oe,{className:`w-16 h-16 text-bambu-gray mx-auto mb-4 opacity-50`}),(0,q.jsx)(`h3`,{className:`text-xl font-medium text-white mb-2`,children:_(`queue.history.emptyTitle`)}),(0,q.jsx)(`p`,{className:`text-bambu-gray max-w-md mx-auto`,children:_(`queue.history.emptyDescription`)})]});let v=[],b=new Set;for(let t of e.slice(0,n))if(t.batch_id!=null){if(b.has(t.batch_id))continue;b.add(t.batch_id);let n=e.filter(e=>e.batch_id===t.batch_id);v.push({kind:`batch`,batchId:t.batch_id,batchName:t.batch_name||_(`queue.batch.defaultName`),items:n})}else v.push({kind:`item`,item:t});return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 mb-3 sm:mb-4`,children:[(0,q.jsxs)(`h2`,{className:`text-base sm:text-lg font-semibold text-white flex items-center gap-2`,children:[_(`queue.sections.history`),(0,q.jsxs)(`span`,{className:`text-xs sm:text-sm font-normal text-bambu-gray`,children:[`(`,_(`queue.itemCount`,{count:t}),`)`]})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsxs)(`select`,{className:`px-2 sm:px-3 py-1.5 text-xs sm:text-sm bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:i,onChange:e=>o(e.target.value),children:[(0,q.jsx)(`option`,{value:`date`,children:_(`queue.sort.byDate`)}),(0,q.jsx)(`option`,{value:`name`,children:_(`queue.sort.byName`)}),(0,q.jsx)(`option`,{value:`printer`,children:_(`queue.sort.byPrinter`)})]}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:s,title:_(a?`queue.sort.ascendingOldest`:`queue.sort.descendingNewest`),className:`px-2`,children:a?(0,q.jsx)(m,{className:`w-4 h-4`}):(0,q.jsx)(p,{className:`w-4 h-4`})})]})]}),(0,q.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-2`,children:v.map(e=>{if(e.kind===`item`)return(0,q.jsx)(Y,{item:e.item,onRemove:()=>c(e.item),onRequeue:()=>l(e.item),timeFormat:u,hasPermission:h,canModify:g,t:_},e.item.id);let t=d[e.batchId]??!0,n=e.items.filter(e=>e.status===`completed`).length,r=e.items.filter(e=>e.status===`failed`).length,i=e.items.filter(e=>e.status===`skipped`).length,a=e.items.filter(e=>e.status===`cancelled`).length,o=e.items.map(e=>e.completed_at||e.created_at).filter(e=>!!e).sort().at(-1);return(0,q.jsxs)(`div`,{className:`md:col-span-2 xl:col-span-3 bg-bambu-dark-secondary rounded-lg border border-bambu-dark-tertiary border-l-[3px] border-l-cyan-400`,children:[(0,q.jsxs)(`button`,{onClick:()=>f(e.batchId),className:`w-full flex items-center gap-2 sm:gap-3 px-3 py-2 hover:bg-bambu-dark/30 transition-colors text-left`,title:_(t?`queue.batch.expand`:`queue.batch.collapse`),children:[t?(0,q.jsx)(re,{className:`w-4 h-4 text-bambu-gray shrink-0`}):(0,q.jsx)(D,{className:`w-4 h-4 text-bambu-gray shrink-0`}),t?(0,q.jsx)(B,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300 shrink-0`}):(0,q.jsx)(qe,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300 shrink-0`}),(0,q.jsx)(`span`,{className:`text-sm text-white font-medium truncate min-w-0 flex-1`,children:e.batchName}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-bambu-gray shrink-0`,children:[n>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-emerald-700 dark:text-emerald-400`,children:[(0,q.jsx)(N,{className:`w-3 h-3`}),n]}),r>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-red-700 dark:text-red-400`,children:[(0,q.jsx)(k,{className:`w-3 h-3`}),r]}),i>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-orange-700 dark:text-orange-400`,children:[(0,q.jsx)(V,{className:`w-3 h-3`}),i]}),a>0&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-gray-400`,children:[(0,q.jsx)(y,{className:`w-3 h-3`}),a]}),(0,q.jsx)(`span`,{title:o??void 0,children:o?Ie(o,u,_):null})]})]}),!t&&(0,q.jsx)(`div`,{className:`border-t border-bambu-dark-tertiary bg-black/20 p-2 grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-2`,children:e.items.map(e=>(0,q.jsx)(Y,{item:e,onRemove:()=>c(e),onRequeue:()=>l(e),timeFormat:u,hasPermission:h,canModify:g,t:_},e.id))})]},`batch-${e.batchId}`)})}),t>n&&(0,q.jsxs)(`div`,{className:`mt-4 flex flex-col items-center gap-2`,children:[(0,q.jsx)(U,{variant:`secondary`,size:`sm`,onClick:r,children:_(`queue.history.showMore`)}),(0,q.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:_(`queue.history.showingCount`,{shown:Math.min(n,t),total:t})})]})]})}var Pt=50,Ft=[`pending`,`printing`,`skipped`],It=[];function Lt(){let{t:e}=n(),t=l(),{showToast:i}=M(),{hasPermission:o,hasAnyPermission:s,canModify:h}=je(),[y,ee]=(0,K.useState)(null),[E,D]=(0,K.useState)(``),[O,k]=(0,K.useState)(``),[re,j]=(0,K.useState)(!1),[N,ie]=(0,K.useState)(null),[ae,se]=(0,K.useState)(null),[P,F]=(0,K.useState)(null),[I,le]=(0,K.useState)([]),[ue,R]=(0,K.useState)(!1),[de,fe]=(0,K.useState)(null),[pe,me]=(0,K.useState)(null),[z,ge]=(0,K.useState)(()=>localStorage.getItem(`queue.historySortBy`)||`date`),[_e,ye]=(0,K.useState)(()=>{let e=localStorage.getItem(`queue.historySortAsc`);return e!==null&&e===`true`}),[xe,Se]=(0,K.useState)(Pt),[V,Te]=(0,K.useState)(()=>localStorage.getItem(`queue.pendingSortBy`)||`position`),[H,De]=(0,K.useState)(()=>{let e=localStorage.getItem(`queue.pendingSortAsc`);return e===null||e===`true`}),[Oe]=(0,K.useState)(()=>{let e=Number(new URLSearchParams(window.location.search).get(`batch`));return Number.isInteger(e)&&e>0?e:null}),[G,Ne]=(0,K.useState)(()=>{let e=new URLSearchParams(window.location.search),t=e.get(`tab`);if(e.get(`batch`))return`batches`;if(t===`pipelines`||t===`history`||t===`timeline`||t===`queue`||t===`batches`)return t;let n=localStorage.getItem(`queue.activeTab`);return n===`history`||n===`timeline`||n===`pipelines`||n===`batches`?n:`queue`}),[Pe,Ie]=(0,K.useState)(()=>localStorage.getItem(`queue.activeLayout`)===`printer`?`printer`:`position`),[Re,ze]=(0,K.useState)(()=>{try{let e=localStorage.getItem(`queue.batchCollapsed`);return e?JSON.parse(e):{}}catch{return{}}}),[He,Ke]=(0,K.useState)(null),[qe,Ye]=(0,K.useState)(!1),[Ze,Qe]=(0,K.useState)(null);(0,K.useEffect)(()=>{localStorage.setItem(`queue.historySortBy`,z)},[z]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.historySortAsc`,String(_e))},[_e]),(0,K.useEffect)(()=>{Se(Pt)},[z,_e,O]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.pendingSortBy`,V)},[V]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.pendingSortAsc`,String(H))},[H]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.activeTab`,G)},[G]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.activeLayout`,Pe)},[Pe]),(0,K.useEffect)(()=>{localStorage.setItem(`queue.batchCollapsed`,JSON.stringify(Re))},[Re]);let $e=te(v(w,{activationConstraint:{distance:8}}),v(x,{coordinateGetter:b})),{data:J}=Be(),tt=J?.time_format||`system`,{data:nt}=u({queryKey:[`batches`,`active`],queryFn:()=>r.getBatches(`active`)}),rt=nt?.length??0,it=E?Ft.includes(E)?E:null:Ft.join(`,`),{data:ot,isLoading:st}=u({queryKey:[`queue`,y,it],queryFn:()=>r.getQueue(y||void 0,it??void 0),refetchInterval:5e3,enabled:it!==null}),Y=it===null?It:ot,ct={printerId:y,status:E||void 0,location:O||void 0},{data:ut,isLoading:X}=u({queryKey:[`queue`,`history`,ct,z,_e,xe],queryFn:()=>r.getQueueHistory({...ct,sortBy:z,reverse:_e,limit:xe}),refetchInterval:G===`history`&&xe<=Pt?5e3:3e4,placeholderData:c}),dt=ut?.total??0,{data:Z}=u({queryKey:[`printers`],queryFn:()=>r.getPrinters()}),ft=d({mutationFn:e=>r.updateSettings({queue_shortest_first:e}),onSuccess:()=>{t.invalidateQueries({queryKey:[`settings`]}),t.invalidateQueries({queryKey:[`ui-settings`]})}}),pt=d({mutationFn:e=>r.cancelQueueItem(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`queue`]}),i(e(`queue.toast.cancelled`))},onError:()=>i(e(`queue.toast.cancelFailed`),`error`)}),mt=d({mutationFn:e=>r.removeFromQueue(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),t.invalidateQueries({queryKey:[`batches`]}),i(n.deleted===!1?e(`queue.toast.keptForOrder`):e(`queue.toast.removed`))},onError:()=>i(e(`queue.toast.removeFailed`),`error`)}),ht=d({mutationFn:e=>r.stopQueueItem(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`queue`]}),i(e(`queue.toast.stopped`))},onError:()=>i(e(`queue.toast.stopFailed`),`error`)}),[vt,yt]=(0,K.useState)(null),[bt,St]=(0,K.useState)(null),Ct=d({mutationFn:({id:e,skipFilamentCheck:t})=>r.startQueueItem(e,{skipFilamentCheck:t}),onSuccess:()=>{t.invalidateQueries({queryKey:[`queue`]}),i(e(`queue.toast.released`)),yt(null),St(null)},onError:(t,n)=>{if(t instanceof a&&t.status===409&&t.code===`insufficient_filament`){let e=t.detail?.deficit??[];yt({itemId:n.id,deficit:e});return}if(t instanceof a&&t.status===409&&t.code===`unmatched_filament`){let e=t.detail?.missing??[];St({itemId:n.id,missing:e});return}i(e(`queue.toast.startFailed`),`error`)}}),wt=d({mutationFn:e=>r.reorderQueue(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`queue`]})},onError:()=>i(e(`queue.toast.reorderFailed`),`error`)}),Tt=d({mutationFn:()=>r.clearQueueHistory(ct),onSuccess:({cleared:n,kept:r})=>{t.invalidateQueries({queryKey:[`queue`]}),t.invalidateQueries({queryKey:[`batches`]}),i(r>0?`${e(`queue.toast.historyCleared`,{count:n})} ${e(`queue.toast.historyKeptForOrders`,{kept:r})}`:e(`queue.toast.historyCleared`,{count:n}))},onError:()=>i(e(`queue.toast.clearHistoryFailed`),`error`)}),Dt=d({mutationFn:e=>r.bulkUpdateQueue(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),le([]),R(!1);let r=Xe(n);i(e(r.key,r.params),r.type)},onError:()=>i(e(`queue.toast.updateFailed`),`error`)}),Q=d({mutationFn:async e=>{for(let t of e)await r.cancelQueueItem(t);return e.length},onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),le([]),i(e(`queue.toast.bulkCancelled`,{count:n}))},onError:()=>i(e(`queue.toast.bulkCancelFailed`),`error`)}),kt=d({mutationFn:e=>r.resumeQueueAfterFailure(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),fe(null),i(e(`queue.toast.resumedAfterFailure`,{restored:n.restored,acknowledged:n.acknowledged}))},onError:()=>i(e(`queue.toast.resumeAfterFailureFailed`),`error`)}),Mt=d({mutationFn:e=>r.resumeModelQueueAfterFailure(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),me(null),i(e(`queue.toast.resumedModelAfterFailure`,{count:n.acknowledged}))},onError:()=>i(e(`queue.toast.resumeAfterFailureFailed`),`error`)}),Lt=d({mutationFn:e=>r.createBatch(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),le([]),Ye(!1),ze(e=>({...e,[n.id]:!1})),i(e(`queue.toast.batchCreated`,{name:n.name}))},onError:()=>i(e(`queue.toast.batchCreateFailed`),`error`)}),zt=d({mutationFn:e=>r.ungroupBatch(e),onSuccess:n=>{t.invalidateQueries({queryKey:[`queue`]}),Qe(null),i(e(`queue.toast.batchUngrouped`,{count:n.ungrouped_count}))},onError:()=>i(e(`queue.toast.batchUngroupFailed`),`error`)}),Bt=e=>{le(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},Vt=(0,K.useMemo)(()=>{let e=new Set;return Z?.forEach(t=>{t.location&&e.add(t.location)}),Y?.forEach(t=>{t.target_location&&e.add(t.target_location)}),ut?.locations.forEach(t=>e.add(t)),Array.from(e).sort()},[Z,Y,ut?.locations]),Ht=(0,K.useCallback)(e=>O?e.target_location?e.target_location===O:e.printer_id?Z?.find(t=>t.id===e.printer_id)?.location===O:!1:!0,[O,Z]),$=(0,K.useMemo)(()=>{let e=Y?.filter(e=>e.status===`pending`)||[];O&&(e=e.filter(Ht));let t=e=>{if(!e.scheduled_time)return 0;let t=Le(e.scheduled_time)?.getTime()??0;return t>Date.now()+4320*60*60*1e3?0:t};return J?.queue_shortest_first?[...e].sort((e,t)=>lt(e,t,!0)):[...e].sort((e,n)=>{let r;if(V===`name`){let t=e.archive_name||e.library_file_name||``,i=n.archive_name||n.library_file_name||``;r=t.localeCompare(i)}else r=V===`printer`?(e.printer_name||``).localeCompare(n.printer_name||``):V===`time`?t(e)-t(n):e.position-n.position;return H?r:-r})},[Y,V,H,Ht,O,J?.queue_shortest_first]),Ut=()=>{let e=$.map(e=>e.id);I.length===e.length?le([]):le(e)},Wt=(0,K.useMemo)(()=>{let e=Y?.filter(e=>e.status===`printing`)||[];return O&&(e=e.filter(Ht)),e},[Y,O,Ht]),Gt=(0,K.useMemo)(()=>{let e=new Set;if(!Y)return e;let t=new Set;Y.forEach(e=>{e.status===`printing`&&e.printer_id&&t.add(e.printer_id)});let n=e=>e.scheduled_time?(Le(e.scheduled_time)?.getTime()??0)>Date.now():!1,r=(e,t)=>lt(e,t,J?.queue_shortest_first??!1),i=new Map;return Y.filter(e=>e.status===`pending`&&e.printer_id!=null&&!e.manual_start&&!n(e)).sort(r).forEach(e=>{let t=i.get(e.printer_id)??[];t.push(e),i.set(e.printer_id,t)}),Y.forEach(r=>{if(r.status===`pending`&&!r.waiting_reason&&!n(r)&&!(r.print_time_seconds==null||r.print_time_seconds<=0)&&!r.require_previous_success){if(r.printer_id==null){e.add(r.id);return}if(!t.has(r.printer_id)){if(r.manual_start){e.add(r.id);return}i.get(r.printer_id)?.[0]?.id===r.id&&e.add(r.id)}}}),e},[Y,J?.queue_shortest_first]),[Kt,qt]=(0,K.useState)(()=>Date.now()),Jt=Gt.size>0;(0,K.useEffect)(()=>{if(!Jt)return;qt(Date.now());let e=setInterval(()=>qt(Date.now()),3e4);return()=>clearInterval(e)},[Jt]);let Yt=(0,K.useMemo)(()=>{let e=new Set;return Wt.forEach(t=>{t.printer_id&&e.add(t.printer_id)}),Array.from(e)},[Wt]),Xt=f({queries:Yt.map(e=>({queryKey:[`printerStatus`,e],queryFn:()=>r.getPrinterStatus(e),refetchInterval:5e3}))}),Zt=(0,K.useMemo)(()=>{let e={};return Yt.forEach((t,n)=>{let r=Xt[n];r?.data?.state&&(e[t]=r.data.state)}),e},[Yt,Xt]),Qt=(0,K.useMemo)(()=>{let e={};return Yt.forEach((t,n)=>{let r=Xt[n];r?.data&&(e[t]={progress:r.data.progress??void 0,remaining_time:r.data.remaining_time??void 0,state:r.data.state??void 0})}),e},[Yt,Xt]),$t=ut?.items??It,en=(0,K.useMemo)(()=>$.reduce((e,t)=>e+(t.print_time_seconds||0),0),[$]),tn=(0,K.useMemo)(()=>$.reduce((e,t)=>e+(t.filament_used_grams||0),0),[$]),nn=e=>{let t=e.active.id;Ke(typeof t==`number`||typeof t==`string`?t:null)},rn=e=>{let{active:t,over:n}=e;if(Ke(null),!n||t.id===n.id)return;let r,i=t.id;if(typeof i==`string`&&i.startsWith(`batch-`)){let e=Number(i.slice(6));r=$.filter(t=>t.batch_id===e).map(e=>e.id)}else{let e=i;r=I.includes(e)&&I.length>1?I.slice().sort((e,t)=>$.findIndex(t=>t.id===e)-$.findIndex(e=>e.id===t)):[e]}if(r.length===0)return;let a,o=n.id;if(typeof o==`string`&&o.startsWith(`batch-`)){let e=Number(o.slice(6));a=$.findIndex(t=>t.batch_id===e)}else a=$.findIndex(e=>e.id===o);if(a===-1)return;let s=$[a],c=$.filter(e=>!r.includes(e.id)),l=c.findIndex(e=>e.id===s.id);l===-1&&(l=a),$.findIndex(e=>e.id===r[0])<a&&(l+=1);let u=[...c.slice(0,l),...r.map(e=>$.find(t=>t.id===e)).filter(e=>!!e),...c.slice(l)].map((e,t)=>({id:e.id,position:t+1}));wt.mutate(u)},an=(0,K.useMemo)(()=>{let t=[],n=new Set;for(let r of $)if(r.batch_id!=null){if(n.has(r.batch_id))continue;n.add(r.batch_id);let i=$.filter(e=>e.batch_id===r.batch_id);t.push({kind:`batch`,batchId:r.batch_id,batchName:r.batch_name||e(`queue.batch.defaultName`),items:i})}else t.push({kind:`item`,item:r});return t},[$,e]),on=o(`queue:reorder`)&&V===`position`&&!J?.queue_shortest_first,sn=e=>e.kind===`item`?[e.item.id]:e.items.map(e=>e.id),cn=(e,t,n)=>{let r=$.filter(t=>!e.includes(t.id)),i=r.findIndex(e=>e.id===t);if(i===-1)return;n&&(i+=1);let a=e.map(e=>$.find(t=>t.id===e)).filter(e=>!!e),o=[...r.slice(0,i),...a,...r.slice(i)];wt.mutate(o.map((e,t)=>({id:e.id,position:t+1})))},ln=(e,t)=>{if(!on)return{};let n=sn(e[t]);return{onMoveUp:t>0?()=>cn(n,sn(e[t-1])[0],!1):void 0,onMoveDown:t<e.length-1?()=>{let r=sn(e[t+1]);cn(n,r[r.length-1],!0)}:void 0}},un=(0,K.useMemo)(()=>{let e=[];for(let t of an)if(t.kind===`item`)e.push(t.item.id);else if(e.push(`batch-${t.batchId}`),!(Re[t.batchId]??!0))for(let n of t.items)e.push(n.id);return e},[an,Re]),dn=(0,K.useMemo)(()=>I.length<2?!1:I.every(e=>{let t=$.find(t=>t.id===e);return t&&t.batch_id==null}),[I,$]),fn=e=>{ze(t=>({...t,[e]:!(t[e]??!0)}))},pn=(0,K.useMemo)(()=>{let t=new Map,n=t=>{if(t.printer_id)return{key:`printer:${t.printer_id}`,label:t.printer_name||`Printer #${t.printer_id}`,printerId:t.printer_id,targetModel:null,isUnassigned:!1};if((t.variants?.length??0)>1){let n=t.variants.map(e=>e.target_model).join(` / `);return{key:`models:${n}`,label:`${e(`queue.filter.any`)} ${n}`,printerId:null,targetModel:null,isUnassigned:!1}}return t.target_model?{key:`model:${t.target_model}`,label:`${e(`queue.filter.any`)} ${t.target_model}`,printerId:null,targetModel:t.target_model,isUnassigned:!1}:{key:`unassigned`,label:e(`queue.filter.unassigned`),printerId:null,targetModel:null,isUnassigned:!0}};for(let e of an){let r=e.kind===`item`?e.item:e.items[0];if(!r)continue;let i=n(r);t.has(i.key)||t.set(i.key,{...i,rows:[]}),t.get(i.key).rows.push(e)}return Array.from(t.values()).sort((e,t)=>e.isUnassigned&&!t.isUnassigned?1:!e.isUnassigned&&t.isUnassigned?-1:e.label.localeCompare(t.label))},[an,e]),mn=(0,K.useMemo)(()=>{let e=new Map;return Y?.forEach(t=>{if(t.status===`skipped`&&t.error_message===`Previous print failed or was aborted`&&t.printer_id){let n=e.get(t.printer_id);n?n.count+=1:e.set(t.printer_id,{name:t.printer_name||`Printer #${t.printer_id}`,count:1})}}),Array.from(e.entries()).map(([e,{name:t,count:n}])=>({printerId:e,printerName:t,skippedCount:n})).sort((e,t)=>e.printerName.localeCompare(t.printerName))},[Y]),hn=(0,K.useMemo)(()=>{let e=new Map;return Y?.forEach(t=>{t.status===`pending`&&!t.printer_id&&t.target_model&&t.waiting_reason===xt&&e.set(t.target_model,(e.get(t.target_model)??0)+1)}),Array.from(e.entries()).map(([e,t])=>({model:e,waitingCount:t})).sort((e,t)=>e.model.localeCompare(t.model))},[Y]),gn=e=>{let t=0,n=0,r=0;for(let i of e){let e=i.kind===`item`?[i.item]:i.items;for(let i of e)t+=1,n+=i.print_time_seconds||0,r+=i.filament_used_grams||0}return{count:t,time:n,weight:r}};return(0,q.jsxs)(`div`,{className:`p-4 md:p-8`,children:[(0,q.jsx)(`div`,{className:`flex items-center justify-between mb-6`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`h1`,{className:`text-2xl font-bold text-white flex items-center gap-3`,children:[(0,q.jsx)(oe,{className:`w-7 h-7 text-bambu-green`}),e(`queue.title`)]}),(0,q.jsx)(`p`,{className:`text-bambu-gray mt-1`,children:e(`queue.subtitle`)})]})}),(0,q.jsx)(`div`,{className:`flex gap-1 border-b border-bambu-dark-tertiary mb-6 overflow-x-auto`,children:[{id:`queue`,label:e(`queue.tabs.queue`),icon:L,count:$.length+Wt.length},{id:`batches`,label:e(`queue.tabs.batches`),icon:B,count:rt},{id:`history`,label:e(`queue.tabs.history`),icon:oe,count:dt},{id:`timeline`,label:e(`queue.tabs.timeline`),icon:We,count:null},{id:`pipelines`,label:e(`queue.tabs.pipelines`),icon:ke,count:null}].map(({id:e,label:t,icon:n,count:r})=>(0,q.jsxs)(`button`,{onClick:()=>Ne(e),className:`px-4 py-2.5 text-sm flex items-center gap-2 border-b-2 -mb-px transition-colors whitespace-nowrap ${G===e?`text-white border-bambu-green font-medium`:`text-bambu-gray border-transparent hover:text-white`}`,children:[(0,q.jsx)(n,{className:`w-4 h-4`}),t,r!==null&&r>0&&(0,q.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded-full ${G===e?`bg-bambu-green/20 text-bambu-green`:`bg-bambu-dark-tertiary text-bambu-gray`}`,children:r})]},e))}),G!==`pipelines`&&G!==`batches`&&(0,q.jsx)(at,{activeCount:Wt.length,pendingCount:$.length,totalTime:en,totalWeight:tn,historyCount:dt,t:e}),G===`queue`&&mn.length>0&&o(`queue:update_all`)&&(0,q.jsx)(`div`,{className:`mb-4 space-y-2`,children:mn.map(({printerId:t,printerName:n,skippedCount:r})=>(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3 bg-orange-50 dark:bg-orange-500/10 border border-orange-300 dark:border-orange-500/30 rounded-lg`,children:[(0,q.jsx)(A,{className:`w-5 h-5 text-orange-600 dark:text-orange-400 flex-shrink-0`}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm text-orange-800 dark:text-orange-200`,children:e(`queue.resumeAfterFailure.banner`,{printer:n,count:r})}),(0,q.jsx)(`div`,{className:`text-xs text-orange-800/80 dark:text-orange-200/70 mt-0.5`,children:e(`queue.resumeAfterFailure.bannerHint`)})]}),(0,q.jsxs)(`button`,{onClick:()=>fe({printerId:t,printerName:n,skippedCount:r}),className:`flex items-center gap-1.5 px-3 py-1.5 bg-orange-100 dark:bg-orange-500/20 hover:bg-orange-200 dark:hover:bg-orange-500/30 text-orange-900 dark:text-orange-100 text-sm rounded-md border border-orange-300 dark:border-orange-500/40 transition-colors flex-shrink-0`,children:[(0,q.jsx)(Ge,{className:`w-4 h-4`}),e(`queue.resumeAfterFailure.button`)]})]},t))}),G===`queue`&&hn.length>0&&o(`queue:update_all`)&&(0,q.jsx)(`div`,{className:`mb-4 space-y-2`,children:hn.map(({model:t,waitingCount:n})=>(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-4 py-3 bg-orange-50 dark:bg-orange-500/10 border border-orange-300 dark:border-orange-500/30 rounded-lg`,children:[(0,q.jsx)(A,{className:`w-5 h-5 text-orange-600 dark:text-orange-400 flex-shrink-0`}),(0,q.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-sm text-orange-800 dark:text-orange-200`,children:e(`queue.resumeModelAfterFailure.banner`,{model:t,count:n})}),(0,q.jsx)(`div`,{className:`text-xs text-orange-800/80 dark:text-orange-200/70 mt-0.5`,children:e(`queue.resumeModelAfterFailure.bannerHint`,{model:t})})]}),(0,q.jsxs)(`button`,{onClick:()=>me(t),className:`flex items-center gap-1.5 px-3 py-1.5 bg-orange-100 dark:bg-orange-500/20 hover:bg-orange-200 dark:hover:bg-orange-500/30 text-orange-900 dark:text-orange-100 text-sm rounded-md border border-orange-300 dark:border-orange-500/40 transition-colors flex-shrink-0`,children:[(0,q.jsx)(Ge,{className:`w-4 h-4`}),e(`queue.resumeAfterFailure.button`)]})]},t))}),G!==`pipelines`&&G!==`batches`&&(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 sm:gap-4 mb-6`,children:[(0,q.jsxs)(`select`,{className:`px-2 sm:px-3 py-2 text-sm sm:text-base bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none min-w-0 flex-1 sm:flex-none`,value:y===-1?`unassigned`:y||``,onChange:e=>{let t=e.target.value;ee(t===`unassigned`?-1:t===``?null:Number(t))},children:[(0,q.jsx)(`option`,{value:``,children:e(`queue.filter.allPrinters`)}),(0,q.jsx)(`option`,{value:`unassigned`,children:e(`queue.filter.unassigned`)}),Z?.map(e=>(0,q.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,q.jsxs)(`select`,{className:`px-2 sm:px-3 py-2 text-sm sm:text-base bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none min-w-0 flex-1 sm:flex-none`,value:E,onChange:e=>D(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:e(`queue.filter.allStatus`)}),(0,q.jsx)(`option`,{value:`pending`,children:e(`queue.status.pending`)}),(0,q.jsx)(`option`,{value:`printing`,children:e(`queue.status.printing`)}),(0,q.jsx)(`option`,{value:`completed`,children:e(`queue.status.completed`)}),(0,q.jsx)(`option`,{value:`failed`,children:e(`queue.status.failed`)}),(0,q.jsx)(`option`,{value:`skipped`,children:e(`queue.status.skipped`)}),(0,q.jsx)(`option`,{value:`cancelled`,children:e(`queue.status.cancelled`)})]}),Vt.length>0&&(0,q.jsxs)(`select`,{className:`px-2 sm:px-3 py-2 text-sm sm:text-base bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none min-w-0 flex-1 sm:flex-none`,value:O,onChange:e=>k(e.target.value),children:[(0,q.jsx)(`option`,{value:``,children:e(`queue.filter.allLocations`)}),Vt.map(e=>(0,q.jsx)(`option`,{value:e,children:e},e))]}),(0,q.jsx)(`div`,{className:`hidden sm:block flex-1`}),G===`history`&&dt>0&&(0,q.jsxs)(U,{className:`w-full sm:w-auto`,variant:`secondary`,size:`sm`,onClick:()=>j(!0),disabled:!o(`queue:delete_all`),title:o(`queue:delete_all`)?void 0:e(`queue.permissions.noClearHistory`),children:[(0,q.jsx)(Ee,{className:`w-4 h-4`}),e(`queue.clearHistory`)]})]}),G===`queue`&&(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 mb-6`,children:[(0,q.jsxs)(`div`,{className:`inline-flex items-center bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg p-0.5`,children:[(0,q.jsxs)(`button`,{className:`px-3 py-1.5 text-xs sm:text-sm rounded-md transition-colors flex items-center gap-1.5 ${Pe===`position`?`bg-bambu-dark-tertiary text-white`:`text-bambu-gray hover:text-white`}`,onClick:()=>Ie(`position`),title:e(`queue.layout.flatList`),children:[(0,q.jsx)(he,{className:`w-3.5 h-3.5`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.layout.flatList`)})]}),(0,q.jsxs)(`button`,{className:`px-3 py-1.5 text-xs sm:text-sm rounded-md transition-colors flex items-center gap-1.5 ${Pe===`printer`?`bg-bambu-dark-tertiary text-white`:`text-bambu-gray hover:text-white`}`,onClick:()=>Ie(`printer`),title:e(`queue.layout.groupByPrinter`),children:[(0,q.jsx)(be,{className:`w-3.5 h-3.5`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.layout.byPrinter`)})]})]}),(0,q.jsxs)(`button`,{onClick:()=>{let e=!(J?.queue_shortest_first??!1);ft.mutate(e)},className:`flex items-center gap-1 px-2 py-1.5 text-xs rounded-lg border transition-colors ${J?.queue_shortest_first?`bg-bambu-green/20 border-bambu-green text-bambu-green`:`bg-bambu-dark-secondary border-bambu-dark-tertiary text-bambu-gray hover:text-white hover:border-bambu-gray`}`,title:e(`queue.sjf.tooltip`,`Shortest Job First — scheduler prioritizes shorter prints`),children:[(0,q.jsx)(Je,{className:`w-4 h-4`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.sjf.label`,`SJF`)}),(0,q.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full ${J?.queue_shortest_first?`bg-bambu-green`:`bg-bambu-gray`}`})]})]}),G===`pipelines`?(0,q.jsx)(et,{}):G===`batches`?(0,q.jsx)(_t,{hasPermission:o,t:e,focusBatchId:Oe}):st||G===`history`&&X?(0,q.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:e(`common.loading`)}):Y?.length===0&&!X&&dt===0?(0,q.jsxs)(Me,{className:`p-12 text-center border-dashed`,children:[(0,q.jsx)(T,{className:`w-16 h-16 text-bambu-gray mx-auto mb-4 opacity-50`}),(0,q.jsx)(`h3`,{className:`text-xl font-medium text-white mb-2`,children:e(`queue.empty.title`)}),(0,q.jsx)(`p`,{className:`text-bambu-gray max-w-md mx-auto`,children:e(`queue.empty.description`)})]}):G===`timeline`?(0,q.jsx)(gt,{queueItems:Y||[],printers:Z||[],printerStatuses:Qt,sjfEnabled:J?.queue_shortest_first??!1,onItemClick:e=>{[`completed`,`failed`,`skipped`,`cancelled`].includes(e.status)?se(e):e.status===`pending`?ie(e):e.status===`printing`&&F({type:`stop`,item:e})},t:e}):G===`history`?(0,q.jsx)(Nt,{items:$t,total:dt,visibleCount:xe,onShowMore:()=>Se(e=>e+Pt),sortBy:z,sortAsc:_e,onSortByChange:ge,onSortAscToggle:()=>ye(!_e),onRemove:e=>F({type:`remove`,item:e}),onRequeue:se,timeFormat:tt,batchCollapsed:Re,toggleBatchCollapsed:fn,hasPermission:o,canModify:h,t:e}):(0,q.jsxs)(`div`,{className:`space-y-6 sm:space-y-8`,children:[Wt.length>0&&(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`h2`,{className:`text-base sm:text-lg font-semibold text-white mb-3 sm:mb-4 flex items-center gap-2`,children:[(0,q.jsx)(`div`,{className:`w-2 h-2 rounded-full bg-blue-400 animate-pulse`}),e(`queue.sections.currentlyPrinting`)]}),(0,q.jsx)(`div`,{className:`space-y-2 sm:space-y-3`,children:Wt.map(t=>(0,q.jsx)(At,{item:t,onEdit:()=>{},onCancel:()=>{},onRemove:()=>{},onStop:()=>F({type:`stop`,item:t}),onRequeue:()=>{},onStart:()=>{},timeFormat:tt,hasPermission:o,canModify:h,printerState:t.printer_id?Zt[t.printer_id]:null,t:e},t.id))})]}),$.length>0&&(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 mb-3 sm:mb-4`,children:[(0,q.jsxs)(`h2`,{className:`text-base sm:text-lg font-semibold text-white flex items-center gap-2`,children:[(0,q.jsx)(L,{className:`w-4 h-4 sm:w-5 sm:h-5 text-yellow-600 dark:text-yellow-400`}),e(`queue.sections.queued`),(0,q.jsxs)(`span`,{className:`text-xs sm:text-sm font-normal text-bambu-gray`,children:[`(`,e(`queue.itemCount`,{count:$.length}),`)`]}),(0,q.jsx)(`span`,{className:`hidden sm:inline text-xs text-bambu-gray ml-2`,title:e(`queue.reorderHint`),children:e(`queue.dragToReorder`)})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsxs)(`select`,{className:`px-2 sm:px-3 py-1.5 text-xs sm:text-sm bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:V,onChange:e=>Te(e.target.value),children:[(0,q.jsx)(`option`,{value:`position`,children:e(`queue.sort.byPosition`)}),(0,q.jsx)(`option`,{value:`name`,children:e(`queue.sort.byName`)}),(0,q.jsx)(`option`,{value:`printer`,children:e(`queue.sort.byPrinter`)}),(0,q.jsx)(`option`,{value:`time`,children:e(`queue.sort.bySchedule`)})]}),(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>De(!H),title:e(H?`common.ascending`:`common.descending`),className:`px-2`,children:H?(0,q.jsx)(m,{className:`w-4 h-4`}):(0,q.jsx)(p,{className:`w-4 h-4`})})]})]}),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 sm:gap-3 mb-3 sm:mb-4 p-2 sm:p-3 bg-bambu-dark rounded-lg`,children:[(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:Ut,className:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm`,children:[I.length===$.length&&$.length>0?(0,q.jsx)(Ce,{className:`w-4 h-4 text-bambu-green`}):(0,q.jsx)(we,{className:`w-4 h-4`}),I.length===$.length&&$.length>0?e(`queue.bulkEdit.deselectAll`):e(`queue.bulkEdit.selectAll`)]}),I.length>0&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-xs sm:text-sm text-bambu-gray`,children:e(`queue.bulkEdit.selected`,{count:I.length})}),(0,q.jsx)(`div`,{className:`hidden sm:block h-4 w-px bg-bambu-dark-tertiary`}),dn&&(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>Ye(!0),className:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm text-cyan-700 dark:text-cyan-300 hover:text-cyan-900 dark:hover:text-cyan-200`,title:e(`queue.batch.groupAsBatch`),children:[(0,q.jsx)(B,{className:`w-3.5 h-3.5 sm:w-4 sm:h-4`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.batch.groupAsBatch`)})]}),(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>R(!0),className:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm text-bambu-green hover:text-bambu-green-light`,disabled:!s(`queue:update_own`,`queue:update_all`),title:s(`queue:update_own`,`queue:update_all`)?e(`queue.bulkEdit.editSelected`):e(`queue.permissions.noEditItems`),children:[(0,q.jsx)(ve,{className:`w-3.5 h-3.5 sm:w-4 sm:h-4`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.bulkEdit.editSelected`)})]}),(0,q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>Q.mutate(I),className:`flex items-center gap-1.5 sm:gap-2 text-xs sm:text-sm text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300`,disabled:Q.isPending||!s(`queue:delete_own`,`queue:delete_all`),title:s(`queue:delete_own`,`queue:delete_all`)?e(`queue.bulkEdit.cancelSelected`):e(`queue.permissions.noCancelItems`),children:[(0,q.jsx)(Ae,{className:`w-3.5 h-3.5 sm:w-4 sm:h-4`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:e(`queue.bulkEdit.cancelSelected`)})]})]})]}),(0,q.jsxs)(ne,{sensors:$e,collisionDetection:_,onDragStart:nn,onDragEnd:rn,children:[(0,q.jsx)(C,{items:un,strategy:S,children:Pe===`position`?(0,q.jsx)(`div`,{className:`space-y-2 sm:space-y-3`,children:an.map((t,n)=>(0,q.jsx)(jt,{row:t,collapsed:t.kind===`batch`?Re[t.batchId]??!0:!1,onToggleBatch:t.kind===`batch`?()=>fn(t.batchId):void 0,onUngroup:t.kind===`batch`?()=>Qe(t.batchId):void 0,setEditItem:ie,setConfirmAction:F,startMutation:Ct,selectedItems:I,handleToggleSelect:Bt,timeFormat:tt,hasPermission:o,canModify:h,t:e,etaEligibleIds:Gt,etaNow:Kt,aggregateForRows:gn,...ln(an,n),onMoveBlock:on?cn:void 0},t.kind===`item`?`item-${t.item.id}`:`batch-${t.batchId}`))}):(0,q.jsx)(`div`,{className:`space-y-4`,children:pn.map(t=>{let n=gn(t.rows);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-t-lg`,children:[(0,q.jsx)(be,{className:`w-4 h-4 ${t.isUnassigned?`text-orange-600 dark:text-orange-400`:t.targetModel?`text-blue-600 dark:text-blue-400`:`text-bambu-green`}`}),(0,q.jsx)(`span`,{className:`font-semibold text-white text-sm`,children:t.label}),(0,q.jsxs)(`span`,{className:`text-xs text-bambu-gray flex flex-wrap gap-x-3`,children:[(0,q.jsx)(`span`,{children:e(`queue.itemCount`,{count:n.count})}),n.time>0&&(0,q.jsx)(`span`,{children:Fe(n.time)}),n.weight>0&&(0,q.jsx)(`span`,{children:Et(n.weight)})]})]}),(0,q.jsx)(`div`,{className:`bg-bambu-dark/40 border border-t-0 border-bambu-dark-tertiary rounded-b-lg p-2 space-y-2`,children:t.rows.map((n,r)=>(0,q.jsx)(jt,{row:n,collapsed:n.kind===`batch`?Re[n.batchId]??!0:!1,onToggleBatch:n.kind===`batch`?()=>fn(n.batchId):void 0,onUngroup:n.kind===`batch`?()=>Qe(n.batchId):void 0,setEditItem:ie,setConfirmAction:F,startMutation:Ct,selectedItems:I,handleToggleSelect:Bt,timeFormat:tt,hasPermission:o,canModify:h,t:e,etaEligibleIds:Gt,etaNow:Kt,aggregateForRows:gn,...ln(t.rows,r),onMoveBlock:on?cn:void 0},n.kind===`item`?`item-${n.item.id}`:`batch-${n.batchId}`))})]},t.key)})})}),(0,q.jsx)(g,{children:(()=>{if(He===null)return null;if(typeof He==`string`&&He.startsWith(`batch-`)){let t=Number(He.slice(6)),n=$.filter(e=>e.batch_id===t);if(n.length===0)return null;let r=n[0].batch_name||e(`queue.batch.defaultName`);return(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2 bg-bambu-dark-secondary border-2 border-cyan-400 rounded-lg shadow-2xl`,children:[(0,q.jsx)(B,{className:`w-4 h-4 text-cyan-700 dark:text-cyan-300`}),(0,q.jsx)(`span`,{className:`text-sm text-white font-medium`,children:e(`queue.dragGhost.batch`,{defaultValue:`{{name}} ({{count}} copies)`,name:r,count:n.length})})]})}return typeof He==`number`&&I.includes(He)&&I.length>1?(0,q.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2 bg-bambu-dark-secondary border-2 border-cyan-400 rounded-lg shadow-2xl`,children:[(0,q.jsx)(B,{className:`w-4 h-4 text-cyan-700 dark:text-cyan-300`}),(0,q.jsx)(`span`,{className:`text-sm text-white font-medium`,children:e(`queue.dragGhost.multiCount`,{count:I.length})})]}):null})()})]})]})]}),N&&(0,q.jsx)(ce,{mode:`edit-queue-item`,archiveId:N.archive_id??void 0,libraryFileId:N.library_file_id??void 0,archiveName:Ue(N,t=>e(`common.plusNMore`,{count:t})),queueItem:N,onClose:()=>ie(null)}),ae&&(0,q.jsx)(ce,{mode:`create`,archiveId:ae.archive_id??void 0,libraryFileId:ae.library_file_id??void 0,archiveName:Ue(ae,t=>e(`common.plusNMore`,{count:t})),onClose:()=>se(null)}),vt&&(0,q.jsx)(W,{title:e(`queue.filamentShort.confirmTitle`),message:e(`queue.filamentShort.confirmIntro`)+`
  11. `+vt.deficit.map(t=>e(`queue.filamentShort.lineItem`,{slot:t.slot_id,required:Math.round(t.required_grams),remaining:t.remaining_grams==null?e(`queue.filamentShort.unknown`):Math.round(t.remaining_grams)})).join(`
  12. `),confirmText:e(`queue.filamentShort.printAnyway`),variant:`warning`,onConfirm:()=>{Ct.mutate({id:vt.itemId,skipFilamentCheck:!0})},onCancel:()=>yt(null)}),bt&&(0,q.jsx)(W,{title:e(`queue.filamentMissing.confirmTitle`),message:e(`queue.filamentMissing.confirmIntro`)+`
  13. `+bt.missing.join(`
  14. `),confirmText:e(`queue.filamentShort.printAnyway`),variant:`warning`,onConfirm:()=>{Ct.mutate({id:bt.itemId,skipFilamentCheck:!0})},onCancel:()=>St(null)}),P&&(0,q.jsx)(W,{title:P.type===`cancel`?e(`queue.confirm.cancelTitle`):P.type===`stop`?e(`queue.confirm.stopTitle`):e(`queue.confirm.removeTitle`),message:P.type===`cancel`?e(`queue.confirm.cancelMessage`,{name:P.item.archive_name||P.item.library_file_name||e(`queue.confirm.thisPrint`)}):P.type===`stop`?e(`queue.confirm.stopMessage`,{name:P.item.archive_name||P.item.library_file_name||e(`queue.confirm.thisPrint`)}):e(`queue.confirm.removeMessage`,{name:P.item.archive_name||P.item.library_file_name||e(`queue.confirm.thisItem`)}),confirmText:P.type===`cancel`?e(`queue.confirm.cancelButton`):P.type===`stop`?e(`queue.confirm.stopButton`):e(`common.remove`),variant:`danger`,onConfirm:()=>{P.type===`cancel`?pt.mutate(P.item.id):P.type===`stop`?ht.mutate(P.item.id):mt.mutate(P.item.id),F(null)},onCancel:()=>F(null)}),de&&(0,q.jsx)(W,{title:e(`queue.resumeAfterFailure.confirmTitle`),message:e(`queue.resumeAfterFailure.confirmMessage`,{printer:de.printerName,count:de.skippedCount}),confirmText:e(`queue.resumeAfterFailure.button`),variant:`warning`,onConfirm:()=>kt.mutate(de.printerId),onCancel:()=>fe(null)}),pe&&(0,q.jsx)(W,{title:e(`queue.resumeAfterFailure.confirmTitle`),message:e(`queue.resumeModelAfterFailure.confirmMessage`,{model:pe}),confirmText:e(`queue.resumeAfterFailure.button`),variant:`warning`,onConfirm:()=>Mt.mutate(pe),onCancel:()=>me(null)}),re&&(0,q.jsx)(W,{title:e(`queue.confirm.clearHistoryTitle`),message:e(`queue.confirm.clearHistoryMessage`,{count:dt}),confirmText:e(`queue.clearHistory`),variant:`danger`,onConfirm:()=>{Tt.mutate(),j(!1)},onCancel:()=>j(!1)}),ue&&(0,q.jsx)(Ot,{selectedCount:I.length,printers:Z?.map(e=>({id:e.id,name:e.name,nozzle_count:e.nozzle_count}))||[],onSave:e=>{Object.keys(e).length>0&&Dt.mutate({item_ids:I,...e})},onClose:()=>R(!1),isSaving:Dt.isPending,canControlPrinter:o(`printers:control`),hasGcodeSnippets:Ve(J),t:e}),qe&&(0,q.jsx)(Rt,{itemCount:I.length,isSaving:Lt.isPending,defaultName:(()=>{let t=$.find(e=>I.includes(e.id)),n=(t?.archive_name||t?.library_file_name||``).replace(/\.gcode\.3mf$/i,``).replace(/\.3mf$/i,``);return n?`${n}`:e(`queue.batch.defaultName`)})(),onSave:e=>Lt.mutate({name:e,item_ids:I}),onClose:()=>Ye(!1),t:e}),Ze!==null&&(0,q.jsx)(W,{title:e(`queue.batch.ungroupConfirmTitle`),message:e(`queue.batch.ungroupConfirmMessage`),confirmText:e(`queue.batch.ungroup`),variant:`warning`,onConfirm:()=>zt.mutate(Ze),onCancel:()=>Qe(null)})]})}function Rt({itemCount:e,defaultName:t,isSaving:n,onSave:r,onClose:i,t:a}){let[o,s]=(0,K.useState)(t);return(0,q.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4`,children:(0,q.jsxs)(`div`,{className:`bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-xl p-6 w-full max-w-md`,children:[(0,q.jsxs)(`h3`,{className:`text-lg font-semibold text-white mb-2 flex items-center gap-2`,children:[(0,q.jsx)(B,{className:`w-5 h-5 text-cyan-700 dark:text-cyan-300`}),a(`queue.batch.groupAsBatch`)]}),(0,q.jsx)(`p`,{className:`text-sm text-bambu-gray mb-4`,children:a(`queue.batch.groupAsBatchDescription`,{count:e})}),(0,q.jsx)(`label`,{className:`block text-sm font-medium text-white mb-2`,children:a(`queue.batch.nameLabel`)}),(0,q.jsx)(`input`,{type:`text`,autoFocus:!0,value:o,onChange:e=>s(e.target.value),placeholder:a(`queue.batch.namePlaceholder`),maxLength:120,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 mb-5`}),(0,q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,q.jsx)(U,{variant:`ghost`,size:`sm`,onClick:i,disabled:n,children:a(`common.cancel`)}),(0,q.jsx)(U,{variant:`primary`,size:`sm`,onClick:()=>{let e=o.trim();e&&r(e)},disabled:n||!o.trim(),children:a(n?`common.saving`:`queue.batch.create`)})]})]})})}export{Lt as QueuePage};