| 123456789 |
- import{i as e}from"./chunk-aKtaBQYM.js";import{C as t,D as n,a as r,p as i,w as a,x as o}from"./client-D0Q3EIO2.js";import{n as s}from"./QueryClientProvider-CsMjD-7g.js";import{t as c}from"./useQuery-DGJURrv0.js";import{t as l}from"./useMutation-D33XgzjB.js";import{t as u}from"./createLucideIcon-BTg337Gy.js";import{t as d}from"./arrow-up-down-MZZbOqYJ.js";import{t as f}from"./RichTextEditor-BKKwfI5N.js";import{t as p}from"./box-9OC1sZAb.js";import{t as m}from"./calendar-CLfoE-ho.js";import{t as h}from"./check-lecuNcPc.js";import{a as g,i as _,n as v,r as y}from"./info-CYfZ08vK.js";import{n as b,t as x}from"./chevrons-right-BtGjiArF.js";import{n as S,r as C}from"./ToastContext-DvXi5snE.js";import{t as w}from"./coins-dkDEbZk6.js";import{t as T}from"./cog-rWTLMCB1.js";import{t as E}from"./columns-2-4ppMhNZX.js";import{t as D}from"./copy-BSydjjpn.js";import{t as O}from"./ellipsis-vertical-BXVT5eVX.js";import{t as k}from"./file-box-DGWntDxa.js";import{t as ee}from"./file-spreadsheet-B_BGpiAr.js";import{n as A,t as te}from"./ContextMenu-DYUurM4Z.js";import{n as j,t as ne}from"./scan-search-BT1fMifB.js";import{t as M}from"./funnel-CWTiFjnt.js";import{t as N}from"./gauge-Bud9ykeo.js";import{t as re}from"./git-compare-nCdcvjdY.js";import{n as ie,t as ae}from"./SliceModal-CJS4-5j8.js";import{t as oe}from"./history-6fnQHa_U.js";import{t as se}from"./layout-grid-soOVnMEc.js";import{t as ce}from"./list-B4oui0np.js";import{t as P}from"./loader-circle-sObvdo_1.js";import{t as le}from"./package-C-zqQjgX.js";import{t as F}from"./pause-D7Vlzoxb.js";import{t as ue}from"./pen-line-zh2sTO1x.js";import{t as de}from"./play-DLt8R88D.js";import{t as fe}from"./qr-code-D2Y_pRs5.js";import{t as pe}from"./search-C6Jj-J3M.js";import{t as me}from"./skip-forward-y25qUi6M.js";import{t as he}from"./sticky-note-DMfl2y5g.js";import{t as I}from"./triangle-alert-boCB5mQC.js";import{t as L}from"./x-B8rbip0P.js";import{i as R,n as z,t as B}from"./Card-Bs7yK0-y.js";import{t as ge}from"./file-DDkFXH-b.js";import{t as V}from"./Button-BAwcIdV7.js";import{a as _e,i as ve,l as H,o as ye,v as be}from"./date-G9KUauqz.js";import{$t as xe,An as Se,At as U,Cn as Ce,Et as we,F as Te,It as Ee,Jt as De,L as Oe,Ln as ke,Lt as Ae,M as je,Mn as Me,Mt as Ne,On as Pe,Ot as Fe,P as Ie,Pn as Le,Pt as Re,R as ze,Rn as W,Rt as Be,T as Ve,Ut as He,Vn as Ue,Vt as We,Zt as G,_t as K,at as Ge,b as Ke,bt as qe,cn as Je,hn as Ye,j as Xe,jn as Ze,jt as Qe,kt as $e,tn as et,un as tt,vn as nt,wn as q,xn as rt,xt as it,y as at,yn as ot,yt as st}from"./index-C-0w3pwY.js";import{n as ct,r as lt,t as ut}from"./PhotoGalleryModal-Mn6ZL95X.js";import{a as dt,o as ft}from"./slicer-DgCA7cW6.js";import{t as pt}from"./filamentTypes-Dysa4k6j.js";import{t as mt}from"./ColumnConfigModal-C66OrmbM.js";import{t as ht}from"./purify.es-F_7NWVtX.js";var gt=u(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),_t=u(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),vt=u(`file-code`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 12.5 8 15l2 2.5`,key:`1tg20x`}],[`path`,{d:`m14 12.5 2 2.5-2 2.5`,key:`yinavb`}]]),J=u(`file-play`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z`,key:`1tzo1f`}]]),yt=u(`git-branch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),bt=u(`scissors`,[[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M8.12 8.12 12 12`,key:`1alkpv`}],[`path`,{d:`M20 4 8.12 15.88`,key:`xgtan2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M14.8 14.8 20 20`,key:`ptml3r`}]]),xt=u(`skip-back`,[[`path`,{d:`M17.971 4.285A2 2 0 0 1 21 6v12a2 2 0 0 1-3.029 1.715l-9.997-5.998a2 2 0 0 1-.003-3.432z`,key:`15892j`}],[`path`,{d:`M3 20V4`,key:`1ptbpl`}]]),Y=u(`volume-2`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]),St=u(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),X=e(n(),1),Z=t();function Ct({onClose:e,initialFiles:t}){let{t:n}=a(),i=s(),{showToast:o}=S(),c=(0,X.useRef)(null),[u,d]=(0,X.useState)(()=>t?.filter(e=>e.name.endsWith(`.3mf`)).map(e=>({file:e,status:`pending`}))||[]),[f,p]=(0,X.useState)(!1),[m,h]=(0,X.useState)(null);(0,X.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);let g=l({mutationFn:e=>r.uploadArchivesBulk(e),onSuccess:e=>{h(e),i.invalidateQueries({queryKey:[`archives`]}),i.invalidateQueries({queryKey:[`archiveStats`]}),d(t=>t.map(t=>{let n=e.results.find(e=>e.filename===t.file.name),r=e.errors.find(e=>e.filename===t.file.name);return n?{...t,status:`success`,archiveId:n.id}:r?{...t,status:`error`,error:r.error}:t})),e.failed===0?o(`${e.uploaded} file${e.uploaded===1?``:`s`} uploaded`):e.uploaded===0?o(`Failed to upload ${e.failed} file${e.failed===1?``:`s`}`,`error`):o(`${e.uploaded} uploaded, ${e.failed} failed`,`warning`)},onError:()=>{d(e=>e.map(e=>({...e,status:`error`,error:`Upload failed`}))),o(`Upload failed`,`error`)}}),_=(0,X.useCallback)(e=>{e.preventDefault(),p(!0)},[]),v=(0,X.useCallback)(e=>{e.preventDefault(),p(!1)},[]),b=(0,X.useCallback)(e=>{e.preventDefault(),p(!1);let t=Array.from(e.dataTransfer.files).filter(e=>e.name.endsWith(`.3mf`));t.length>0&&d(e=>[...e,...t.map(e=>({file:e,status:`pending`}))])},[]),x=(0,X.useCallback)(e=>{let t=Array.from(e.target.files||[]).filter(e=>e.name.endsWith(`.3mf`));t.length>0&&d(e=>[...e,...t.map(e=>({file:e,status:`pending`}))]),c.current&&(c.current.value=``)},[]),w=(0,X.useCallback)(e=>{d(t=>t.filter((t,n)=>n!==e))},[]),T=()=>{if(u.length===0)return;let e=u.filter(e=>e.status===`pending`);e.length!==0&&(d(e=>e.map(e=>e.status===`pending`?{...e,status:`uploading`}:e)),g.mutate(e.map(e=>e.file)))},E=u.filter(e=>e.status===`pending`).length,D=g.isPending;return(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,Z.jsx)(B,{className:`w-full max-w-2xl max-h-[90vh] flex flex-col`,children:(0,Z.jsxs)(z,{className:`p-0 flex flex-col h-full`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:n(`uploadModal.title`)}),(0,Z.jsx)(`button`,{onClick:e,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsx)(`div`,{className:`p-4`,children:(0,Z.jsxs)(`div`,{className:`border-2 border-dashed rounded-lg p-8 text-center transition-colors ${f?`border-bambu-green bg-bambu-green/10`:`border-bambu-dark-tertiary hover:border-bambu-gray`}`,onDragOver:_,onDragLeave:v,onDrop:b,children:[(0,Z.jsx)($e,{className:`w-12 h-12 mx-auto mb-4 text-bambu-gray`}),(0,Z.jsx)(`p`,{className:`text-white mb-2`,children:n(`uploadModal.dragDrop`)}),(0,Z.jsx)(`p`,{className:`text-bambu-gray text-sm mb-4`,children:n(`uploadModal.or`)}),(0,Z.jsx)(V,{variant:`secondary`,onClick:()=>c.current?.click(),disabled:D,children:n(`uploadModal.browseFiles`)}),(0,Z.jsx)(`input`,{ref:c,type:`file`,accept:`.3mf`,multiple:!0,className:`hidden`,onChange:x})]})}),(0,Z.jsx)(`div`,{className:`px-4 pb-4`,children:(0,Z.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:n(`uploadModal.extractionInfo`)})}),u.length>0&&(0,Z.jsx)(`div`,{className:`px-4 pb-4 max-h-60 overflow-y-auto`,children:(0,Z.jsx)(`div`,{className:`space-y-2`,children:u.map((e,t)=>(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 p-3 bg-bambu-dark rounded-lg`,children:[(0,Z.jsx)(A,{className:`w-5 h-5 text-bambu-gray flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`flex-1 text-white text-sm truncate`,children:e.file.name}),(0,Z.jsxs)(`span`,{className:`text-xs text-bambu-gray`,children:[(e.file.size/(1024*1024)).toFixed(1),` MB`]}),e.status===`pending`&&(0,Z.jsx)(`button`,{onClick:()=>w(t),className:`text-bambu-gray hover:text-red-600 dark:hover:text-red-400 transition-colors`,disabled:D,children:(0,Z.jsx)(L,{className:`w-4 h-4`})}),e.status===`uploading`&&(0,Z.jsx)(P,{className:`w-4 h-4 text-bambu-green animate-spin`}),e.status===`success`&&(0,Z.jsx)(C,{className:`w-4 h-4 text-bambu-green`}),e.status===`error`&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-red-700 dark:text-red-400`,children:e.error}),(0,Z.jsx)(y,{className:`w-4 h-4 text-red-600 dark:text-red-400`})]})]},`${e.file.name}-${t}`))})}),m&&(0,Z.jsx)(`div`,{className:`px-4 pb-4`,children:(0,Z.jsx)(`div`,{className:`p-3 bg-bambu-dark rounded-lg`,children:(0,Z.jsxs)(`p`,{className:`text-sm text-white`,children:[(0,Z.jsx)(`span`,{className:`text-bambu-green`,children:m.uploaded}),` `,n(`uploadModal.uploaded`),m.failed>0&&(0,Z.jsxs)(Z.Fragment,{children:[`, `,(0,Z.jsx)(`span`,{className:`text-red-700 dark:text-red-400`,children:m.failed}),` `,n(`uploadModal.failed`)]})]})})}),(0,Z.jsxs)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary`,children:[(0,Z.jsx)(V,{variant:`secondary`,onClick:e,className:`flex-1`,children:n(m?`common.close`:`common.cancel`)}),!m&&(0,Z.jsx)(V,{onClick:T,disabled:E===0||D,className:`flex-1`,children:D?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),n(`uploadModal.uploading`)]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)($e,{className:`w-4 h-4`}),n(`uploadModal.upload`),` `,E>0&&`(${E})`]})})]})]})})})}var wt=365;function Tt({onClose:e,initialDays:t}){let{t:n}=a(),i=s(),{showToast:o}=S(),[u,d]=(0,X.useState)(t??wt),[f,p]=(0,X.useState)(!1),[m,h]=(0,X.useState)(u);(0,X.useEffect)(()=>{let e=window.setTimeout(()=>h(u),300);return()=>window.clearTimeout(e)},[u]);let g=c({queryKey:[`archive-purge-preview`,m,f],queryFn:()=>r.previewArchivePurge(m,f),enabled:m>=1}),_=l({mutationFn:()=>r.executeArchivePurge(u,f),onSuccess:t=>{o(n(`archivePurge.toast.success`,{count:t.deleted}),`success`),i.invalidateQueries({queryKey:[`archives`]}),i.invalidateQueries({queryKey:[`archive-stats`]}),e()},onError:e=>o(e.message||n(`archivePurge.toast.failed`),`error`)});(0,X.useEffect)(()=>{let t=t=>{t.key===`Escape`&&!_.isPending&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,_.isPending]);let v=g.data,y=v?.count??0,b=v?.total_bytes??0,x=y>0&&!_.isPending;return(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4`,children:(0,Z.jsxs)(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg shadow-xl max-w-lg w-full`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700`,children:[(0,Z.jsxs)(`h2`,{className:`text-lg font-semibold text-gray-900 dark:text-gray-100 flex items-center gap-2`,children:[(0,Z.jsx)(U,{className:`w-5 h-5`}),n(`archivePurge.title`)]}),(0,Z.jsx)(`button`,{onClick:e,className:`text-gray-400 hover:text-gray-600 dark:hover:text-gray-200`,"aria-label":n(`common.close`),disabled:_.isPending,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:n(`archivePurge.description`)}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{htmlFor:`archive-purge-days`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:n(`archivePurge.ageLabel`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`input`,{id:`archive-purge-days`,type:`number`,min:1,max:3650,value:u,onChange:e=>d(Math.max(1,Math.min(3650,parseInt(e.target.value||`0`,10)||0))),className:`w-24 rounded border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-sm px-2 py-1 text-gray-900 dark:text-gray-100`}),(0,Z.jsx)(`span`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:n(`archivePurge.days`)})]})]}),(0,Z.jsxs)(`div`,{className:`rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/30 p-3`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-gray-600 dark:text-gray-300 mb-2`,children:n(`archivePurge.effectsTitle`)}),(0,Z.jsxs)(`ul`,{className:`text-xs text-gray-700 dark:text-gray-300 space-y-1 list-disc pl-4`,children:[(0,Z.jsx)(`li`,{children:n(`archivePurge.effect1`)}),(0,Z.jsx)(`li`,{children:n(`archivePurge.effect2`)}),(0,Z.jsx)(`li`,{children:n(`archivePurge.effect3`)}),(0,Z.jsx)(`li`,{children:n(`archivePurge.effect4`)})]})]}),(0,Z.jsx)(`div`,{className:`rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 p-3`,children:g.isLoading||g.isFetching?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400`,children:[(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),` `,n(`archivePurge.previewLoading`)]}):g.isError?(0,Z.jsx)(`div`,{className:`text-sm text-red-600 dark:text-red-400`,children:g.error?.message??n(`archivePurge.previewFailed`)}):(0,Z.jsxs)(`div`,{className:`text-sm text-gray-900 dark:text-gray-100`,children:[(0,Z.jsx)(`div`,{className:`font-medium`,children:n(`archivePurge.previewSummary`,{count:y,size:ge(b)})}),v?.sample_filenames&&v.sample_filenames.length>0&&(0,Z.jsxs)(`ul`,{className:`mt-2 text-xs text-gray-600 dark:text-gray-400 space-y-0.5 list-disc pl-4`,children:[v.sample_filenames.map(e=>(0,Z.jsx)(`li`,{className:`truncate`,children:e},e)),y>v.sample_filenames.length&&(0,Z.jsx)(`li`,{className:`list-none italic text-gray-500`,children:n(`archivePurge.andMore`,{count:y-v.sample_filenames.length})})]})]})}),(0,Z.jsxs)(`label`,{className:`flex gap-2 items-start rounded border border-gray-200 dark:border-gray-700 px-3 py-2 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800/50`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,checked:f,onChange:e=>p(e.target.checked),disabled:_.isPending,className:`mt-0.5 shrink-0`}),(0,Z.jsxs)(`span`,{className:`text-xs text-gray-700 dark:text-gray-300`,children:[(0,Z.jsx)(`span`,{className:`font-medium block mb-0.5`,children:n(`archivePurge.purgeStatsLabel`)}),(0,Z.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:n(`archivePurge.purgeStatsHint`)})]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-2 items-start text-xs text-amber-700 dark:text-amber-400 bg-amber-50 dark:bg-amber-900/20 rounded px-3 py-2`,children:[(0,Z.jsx)(I,{className:`w-4 h-4 mt-0.5 shrink-0`}),(0,Z.jsx)(`span`,{children:n(`archivePurge.warning`)})]})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t border-gray-200 dark:border-gray-700`,children:[(0,Z.jsx)(V,{variant:`secondary`,onClick:e,disabled:_.isPending,children:n(`common.cancel`)}),(0,Z.jsx)(V,{variant:`danger`,disabled:!x,onClick:()=>_.mutate(),children:_.isPending?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin mr-1`}),n(`archivePurge.purging`)]}):n(`archivePurge.confirmCta`,{count:y})})]})]})})}function Et({archiveId:e,archiveName:t,onClose:n}){let{t:r}=a();return(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:n,children:(0,Z.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl border border-bambu-dark-tertiary w-full max-w-2xl max-h-[85vh] flex flex-col`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,Z.jsx)(oe,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,Z.jsx)(`h2`,{className:`text-lg font-semibold text-white truncate`,title:t||``,children:r(`archives.runLog.modalTitle`,{name:t||r(`archives.runLog.modalTitleFallback`)})})]}),(0,Z.jsx)(`button`,{onClick:n,className:`text-bambu-gray hover:text-white transition-colors`,title:r(`common.close`),children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsx)(`div`,{className:`p-6 overflow-y-auto flex-1`,children:(0,Z.jsx)(ze,{archiveId:e})})]})})}function Dt({selectedIds:e,existingTags:t,onClose:n}){let i=s(),{showToast:a}=S(),[o,c]=(0,X.useState)(``),[u,d]=(0,X.useState)(new Set),[f,p]=(0,X.useState)(`add`);(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]);let m=l({mutationFn:async()=>{let t=Array.from(u),n=0;for(let i of e)try{let e=await r.getArchive(i),a=e.tags?e.tags.split(`,`).map(e=>e.trim()).filter(Boolean):[],o;o=f===`add`?[...new Set([...a,...t])]:a.filter(e=>!u.has(e)),await r.updateArchive(i,{tags:o.join(`, `)}),n++}catch(e){throw console.error(`Failed to update archive ${i}:`,e),Error(`Failed on archive ${i}: ${e instanceof Error?e.message:`Unknown error`}`)}return{count:n,mode:f,tags:t}},onSuccess:({count:e,mode:t,tags:r})=>{i.invalidateQueries({queryKey:[`archives`]}),a(`${t===`add`?`Added`:`Removed`} ${r.length} tag${r.length===1?``:`s`} ${t===`add`?`to`:`from`} ${e} archive${e===1?``:`s`}`),n()},onError:e=>{a(e.message||`Failed to update tags`,`error`)}}),h=e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},g=()=>{o.trim()&&!u.has(o.trim())&&(d(e=>new Set([...e,o.trim()])),c(``))};return(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,Z.jsx)(B,{className:`w-full max-w-md`,children:(0,Z.jsxs)(z,{className:`p-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Re,{className:`w-5 h-5 text-bambu-green`}),(0,Z.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:f===`add`?`Add Tags`:`Remove Tags`})]}),(0,Z.jsx)(`button`,{onClick:n,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[f===`add`?`Add`:`Remove`,` tags for `,e.length,` selected archive`,e.length===1?``:`s`]}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(V,{size:`sm`,variant:f===`add`?`primary`:`secondary`,onClick:()=>p(`add`),children:`Add Tags`}),(0,Z.jsx)(V,{size:`sm`,variant:f===`remove`?`primary`:`secondary`,onClick:()=>p(`remove`),children:`Remove Tags`})]}),f===`add`&&(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(`input`,{type:`text`,placeholder:`Enter new tag...`,className:`flex-1 px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white text-sm focus:border-bambu-green focus:outline-none`,value:o,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),g())}}),(0,Z.jsx)(V,{size:`sm`,variant:`secondary`,onClick:g,disabled:!o.trim(),children:(0,Z.jsx)(G,{className:`w-4 h-4`})})]}),t.length>0&&(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:`Existing tags:`}),(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.map(e=>(0,Z.jsx)(`button`,{onClick:()=>h(e),className:`px-2 py-1 rounded text-sm transition-colors ${u.has(e)?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray-light hover:bg-bambu-dark`}`,children:e},e))})]}),u.size>0&&(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:[`Tags to `,f===`add`?`add`:`remove`,`:`]}),(0,Z.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Array.from(u).map(e=>(0,Z.jsxs)(`span`,{className:`px-2 py-1 rounded text-sm flex items-center gap-1 ${f===`add`?`bg-green-100 dark:bg-green-500/20 text-green-700 dark:text-green-400`:`bg-red-100 dark:bg-red-500/20 text-red-700 dark:text-red-400`}`,children:[e,(0,Z.jsx)(`button`,{onClick:()=>h(e),className:`hover:opacity-70`,children:(0,Z.jsx)(L,{className:`w-3 h-3`})})]},e))})]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary`,children:[(0,Z.jsx)(V,{variant:`secondary`,onClick:n,className:`flex-1`,children:`Cancel`}),(0,Z.jsx)(V,{onClick:()=>m.mutate(),disabled:u.size===0||m.isPending,className:`flex-1`,children:m.isPending?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),`Processing...`]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Re,{className:`w-4 h-4`}),f===`add`?`Add Tags`:`Remove Tags`]})})]})]})})})}function Ot({selectedIds:e,onClose:t}){let{t:n}=a(),i=s(),{showToast:o}=S(),[u,d]=(0,X.useState)(``),{data:f,isLoading:p}=c({queryKey:[`projects`],queryFn:()=>r.getProjects()}),m=(0,X.useMemo)(()=>f?Te([...f].sort((e,t)=>e.name.localeCompare(t.name))):void 0,[f]),h=u.trim().toLowerCase(),g=h?m?.filter(e=>e.name.toLowerCase().includes(h)):m,_=(m?.length??0)>5;(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let y=()=>Oe(i),b=l({mutationFn:async t=>(await r.addArchivesToProject(t,e),t),onSuccess:n=>{let r=f?.find(e=>e.id===n);y(),o(`Added ${e.length} archive${e.length===1?``:`s`} to "${r?.name}"`),t()},onError:()=>{o(`Failed to assign project`,`error`)}}),x=l({mutationFn:async()=>{for(let t of e)await r.updateArchive(t,{project_id:null});return e.length},onSuccess:e=>{y(),o(`Removed ${e} archive${e===1?``:`s`} from project`),t()},onError:()=>{o(`Failed to remove from project`,`error`)}}),C=b.isPending||x.isPending;return(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,Z.jsx)(B,{className:`w-full max-w-md max-h-[80vh] flex flex-col`,children:(0,Z.jsxs)(z,{className:`p-0 flex flex-col min-h-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary shrink-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(ot,{className:`w-5 h-5 text-bambu-green`}),(0,Z.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:`Assign to Project`})]}),(0,Z.jsx)(`button`,{onClick:t,className:`text-bambu-gray hover:text-white transition-colors`,disabled:C,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsxs)(`div`,{className:`p-4 space-y-3 overflow-y-auto min-h-0`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[`Assign `,e.length,` selected archive`,e.length===1?``:`s`,` to a project`]}),p?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(P,{className:`w-6 h-6 animate-spin text-bambu-gray`})}):(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`button`,{onClick:()=>x.mutate(),disabled:C,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark hover:bg-bambu-dark-tertiary border border-bambu-dark-tertiary transition-colors text-left disabled:opacity-50`,children:[(0,Z.jsx)(`div`,{className:`w-8 h-8 rounded-full bg-red-500/20 flex items-center justify-center shrink-0`,children:(0,Z.jsx)(v,{className:`w-4 h-4 text-red-600 dark:text-red-400`})}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`p`,{className:`text-white font-medium`,children:`Remove from project`}),(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray truncate`,children:`Clear project assignment`})]}),x.isPending&&(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin text-bambu-gray shrink-0`})]}),m&&m.length>0&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,Z.jsx)(`div`,{className:`flex-1 h-px bg-bambu-dark-tertiary`}),(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`or assign to`}),(0,Z.jsx)(`div`,{className:`flex-1 h-px bg-bambu-dark-tertiary`})]}),_&&(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(pe,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray pointer-events-none`}),(0,Z.jsx)(`input`,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:n(`archives.menu.searchProjects`),className:`w-full pl-9 pr-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white placeholder-bambu-gray text-sm focus:border-bambu-green focus:outline-none`})]}),g?.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>b.mutate(e.id),disabled:C,className:`w-full flex items-center gap-3 p-3 rounded-lg bg-bambu-dark hover:bg-bambu-dark-tertiary border border-bambu-dark-tertiary transition-colors text-left disabled:opacity-50`,children:[(0,Z.jsx)(`div`,{className:`w-8 h-8 rounded-full flex items-center justify-center shrink-0`,style:{backgroundColor:e.color?`${e.color}20`:`rgb(var(--bambu-green) / 0.2)`},children:(0,Z.jsx)(ot,{className:`w-4 h-4`,style:{color:e.color||`rgb(var(--bambu-green))`}})}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`p`,{className:`text-white font-medium truncate`,children:e.name}),(0,Z.jsxs)(`p`,{className:`text-sm text-bambu-gray truncate`,children:[e.archive_count,` archive`,e.archive_count===1?``:`s`,e.status&&` • ${e.status}`]})]}),b.isPending&&b.variables===e.id&&(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin text-bambu-gray shrink-0`})]},e.id)),(!m||m.length===0)&&(0,Z.jsx)(`p`,{className:`text-center text-bambu-gray py-4`,children:`No projects yet. Create one from the Projects page.`}),m&&m.length>0&&g?.length===0&&(0,Z.jsx)(`p`,{className:`text-center text-bambu-gray text-sm py-4`,children:`—`})]})]}),(0,Z.jsx)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary shrink-0`,children:(0,Z.jsx)(V,{variant:`secondary`,onClick:t,className:`flex-1`,disabled:C,children:`Cancel`})})]})})})}function kt(e,t){return new Date(e,t+1,0).getDate()}function At(e,t){return new Date(e,t,1).getDay()}var jt=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Mt=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`];function Nt({archives:e,onArchiveClick:t,highlightedArchiveId:n}){let i=new Date,[a,o]=(0,X.useState)(i.getMonth()),[s,c]=(0,X.useState)(i.getFullYear()),[l,u]=(0,X.useState)(null),[d,f]=(0,X.useState)(null),p=(0,X.useMemo)(()=>{let t=new Map;return e.forEach(e=>{let n=be(e.completed_at||e.created_at)||new Date,r=`${n.getFullYear()}-${String(n.getMonth()+1).padStart(2,`0`)}-${String(n.getDate()).padStart(2,`0`)}`,i=t.get(r)||[];i.push(e),t.set(r,i)}),t},[e]),m=kt(s,a),h=At(s,a),g=()=>{a===0?(o(11),c(s-1)):o(a-1)},_=()=>{a===11?(o(0),c(s+1)):o(a+1)},v=()=>{o(i.getMonth()),c(i.getFullYear())},y=[];for(let e=0;e<h;e++)y.push(null);for(let e=1;e<=m;e++)y.push(e);let b=l&&p.get(l)||[],x=e=>{e!==l&&f(null),u(e)};return(0,Z.jsxs)(`div`,{className:`flex flex-col lg:flex-row gap-6`,children:[(0,Z.jsxs)(`div`,{className:`flex-1`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,Z.jsx)(`button`,{onClick:g,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,children:(0,Z.jsx)(Ze,{className:`w-5 h-5 text-bambu-gray`})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsxs)(`h2`,{className:`text-lg font-semibold text-white`,children:[jt[a],` `,s]}),(0,Z.jsx)(`button`,{onClick:v,className:`px-2 py-1 text-xs bg-bambu-dark-tertiary hover:bg-bambu-green/20 text-bambu-gray hover:text-white rounded transition-colors`,children:`Today`})]}),(0,Z.jsx)(`button`,{onClick:_,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,children:(0,Z.jsx)(Me,{className:`w-5 h-5 text-bambu-gray`})})]}),(0,Z.jsx)(`div`,{className:`grid grid-cols-7 gap-1 mb-1`,children:Mt.map(e=>(0,Z.jsx)(`div`,{className:`text-center text-xs text-bambu-gray py-2`,children:e},e))}),(0,Z.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,children:y.map((e,t)=>{if(e===null)return(0,Z.jsx)(`div`,{className:`aspect-square`},`empty-${t}`);let n=`${s}-${String(a+1).padStart(2,`0`)}-${String(e).padStart(2,`0`)}`,r=p.get(n)||[],o=r.length>0,c=e===i.getDate()&&a===i.getMonth()&&s===i.getFullYear(),u=n===l,d=r.filter(e=>e.status===`completed`).length,f=r.filter(e=>e.status===`failed`).length;return(0,Z.jsxs)(`button`,{onClick:()=>x(u?null:n),className:`aspect-square rounded-lg p-1 flex flex-col items-center justify-center transition-colors relative ${u?`bg-bambu-green text-white`:c?`bg-bambu-green/20 text-white ring-2 ring-bambu-green`:o?`bg-bambu-dark-tertiary hover:bg-bambu-dark-tertiary/70 text-white`:`hover:bg-bambu-dark-tertiary/50 text-bambu-gray`}`,children:[(0,Z.jsx)(`span`,{className:`text-sm font-medium ${c&&!u?`text-bambu-green`:``}`,children:e}),o&&(0,Z.jsxs)(`div`,{className:`absolute bottom-1 left-1/2 -translate-x-1/2 flex items-center gap-1`,children:[(0,Z.jsx)(`div`,{className:`w-2 h-2 rounded-full ${f>0&&d===0?`bg-red-400`:f>0?`bg-yellow-400`:`bg-green-400`}`}),(0,Z.jsx)(`span`,{className:`text-xs font-medium`,children:r.length})]})]},e)})}),(0,Z.jsx)(`div`,{className:`mt-4 pt-4 border-t border-bambu-dark-tertiary`,children:(0,Z.jsxs)(`div`,{className:`grid grid-cols-3 gap-4 text-center`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-2xl font-bold text-white`,children:e.filter(e=>{let t=be(e.completed_at||e.created_at)||new Date;return t.getMonth()===a&&t.getFullYear()===s}).length}),(0,Z.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:`Prints this month`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-2xl font-bold text-green-700 dark:text-green-400`,children:e.filter(e=>{let t=be(e.completed_at||e.created_at)||new Date;return t.getMonth()===a&&t.getFullYear()===s&&e.status===`completed`}).length}),(0,Z.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:`Successful`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`text-2xl font-bold text-red-700 dark:text-red-400`,children:e.filter(e=>{let t=be(e.completed_at||e.created_at)||new Date;return t.getMonth()===a&&t.getFullYear()===s&&e.status===`failed`}).length}),(0,Z.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:`Failed`})]})]})})]}),(0,Z.jsx)(`div`,{className:`lg:w-80 bg-bambu-dark rounded-xl p-4`,children:l?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h3`,{className:`text-sm font-medium text-bambu-gray mb-3`,children:new Date(l+`T12:00:00`).toLocaleDateString(`en-US`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}),b.length>0?(0,Z.jsx)(`div`,{className:`calendar-scroll space-y-2 max-h-96 overflow-y-auto`,children:b.map(e=>{let i=e.id===d||e.id===n;return(0,Z.jsxs)(`button`,{onClick:()=>{f(e.id),t?.(e)},className:`w-full flex items-center gap-3 p-2 rounded-lg transition-colors text-left ${i?``:`hover:bg-bambu-dark-tertiary`}`,style:i?{outline:`4px solid #facc15`,outlineOffset:`2px`}:void 0,children:[e.thumbnail_path?(0,Z.jsx)(`img`,{src:r.getArchiveThumbnail(e.id),alt:``,className:`w-12 h-12 rounded object-cover`}):(0,Z.jsx)(`div`,{className:`w-12 h-12 rounded bg-bambu-dark-tertiary flex items-center justify-center`,children:(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`3MF`})}),(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-white truncate`,children:e.print_name||e.filename}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,Z.jsx)(`span`,{className:e.status===`failed`?`text-red-700 dark:text-red-400`:`text-green-700 dark:text-green-400`,children:e.status===`failed`?`Failed`:`Completed`}),e.filament_color&&(0,Z.jsx)(`div`,{className:`flex gap-0.5`,children:e.filament_color.split(`,`).map((e,t)=>(0,Z.jsx)(`div`,{className:`w-3 h-3 rounded-full border border-black/20`,style:{backgroundColor:e}},t))})]})]})]},e.id)})}):(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:`No prints on this day`})]}):(0,Z.jsx)(`div`,{className:`text-center py-8`,children:(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:`Select a day to see prints`})})})]})}function Pt({archiveId:e,archiveName:t,onClose:n}){let i=r.getArchiveQRCodeUrl(e,300);return(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:n,children:(0,Z.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl border border-bambu-dark-tertiary w-full max-w-sm`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:`QR Code`}),(0,Z.jsx)(`button`,{onClick:n,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsxs)(`div`,{className:`p-6 flex flex-col items-center`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray mb-4 text-center truncate max-w-full`,children:t}),(0,Z.jsx)(`div`,{className:`bg-white p-4 rounded-lg mb-4`,children:(0,Z.jsx)(`img`,{src:i,alt:`QR Code`,className:`w-64 h-64`})}),(0,Z.jsx)(`p`,{className:`text-xs text-bambu-gray mb-4 text-center`,children:`Scan to open this archive`}),(0,Z.jsxs)(V,{onClick:()=>{let e=document.createElement(`a`);e.href=i,e.download=`${t}_qrcode.png`,e.click()},className:`w-full`,children:[(0,Z.jsx)(q,{className:`w-4 h-4`}),`Download QR Code`]})]})]})})}function Q({archiveId:e,archiveName:t,onClose:n}){let i=s(),[a,u]=(0,X.useState)(!1),[d,p]=(0,X.useState)(null),[h,g]=(0,X.useState)({}),{data:_,isLoading:v,error:y}=c({queryKey:[`archive-project-page`,e],queryFn:()=>r.getArchiveProjectPage(e)}),b=l({mutationFn:t=>r.updateArchiveProjectPage(e,t),onSuccess:()=>{i.invalidateQueries({queryKey:[`archive-project-page`,e]}),u(!1),g({})}});(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(d===null?a?w():n():p(null))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[d,a,n]);let x=[..._?.model_pictures||[],..._?.profile_pictures||[]],S=()=>{g({title:_?.title||``,description:_?.description||``,designer:_?.designer||``,license:_?.license||``,profile_title:_?.profile_title||``,profile_description:_?.profile_description||``}),u(!0)},C=()=>{b.mutate(h)},w=()=>{u(!1),g({})},T=e=>ht.sanitize(e,{ALLOWED_TAGS:[`p`,`br`,`b`,`strong`,`i`,`em`,`u`,`a`,`ul`,`ol`,`li`,`figure`,`img`],ALLOWED_ATTR:[`href`,`src`,`target`,`rel`,`style`],ADD_ATTR:[`target`]}),E=_&&(_.title||_.description||_.designer||_.profile_title||x.length>0);return(0,Z.jsxs)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:e=>{e.target===e.currentTarget&&n()},children:[(0,Z.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl max-w-4xl w-full max-h-[90vh] overflow-hidden flex flex-col`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(rt,{className:`w-5 h-5 text-bambu-green`}),(0,Z.jsxs)(`h2`,{className:`text-lg font-semibold text-white`,children:[`Project Page`,t&&(0,Z.jsxs)(`span`,{className:`text-bambu-gray ml-2`,children:[`- `,t]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[!a&&E&&(0,Z.jsxs)(V,{variant:`ghost`,size:`sm`,onClick:S,children:[(0,Z.jsx)(ue,{className:`w-4 h-4 mr-1`}),`Edit`]}),a&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:w,children:`Cancel`}),(0,Z.jsxs)(V,{variant:`primary`,size:`sm`,onClick:C,disabled:b.isPending,children:[(0,Z.jsx)(He,{className:`w-4 h-4 mr-1`}),`Save`]})]}),(0,Z.jsx)(`button`,{onClick:n,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,Z.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-6`,children:[v&&(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-2 border-bambu-green border-t-transparent`})}),y&&(0,Z.jsx)(`div`,{className:`text-red-700 dark:text-red-400 text-center py-12`,children:`Failed to load project page data`}),_&&!E&&(0,Z.jsxs)(`div`,{className:`text-bambu-gray text-center py-12`,children:[(0,Z.jsx)(rt,{className:`w-12 h-12 mx-auto mb-4 opacity-50`}),(0,Z.jsx)(`p`,{children:`No project page data found in this 3MF file.`}),(0,Z.jsx)(`p`,{className:`text-sm mt-2`,children:`Project pages are typically included in files downloaded from MakerWorld.`})]}),_&&E&&(0,Z.jsxs)(`div`,{className:`space-y-6`,children:[(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[a?(0,Z.jsx)(`input`,{type:`text`,value:h.title||``,onChange:e=>g({...h,title:e.target.value}),placeholder:`Title`,className:`w-full bg-bambu-dark border border-bambu-dark-tertiary rounded-lg px-4 py-2 text-white text-xl font-semibold`}):_.title&&(0,Z.jsx)(`h3`,{className:`text-xl font-semibold text-white`,children:_.title}),(0,Z.jsxs)(`div`,{className:`flex flex-wrap gap-4 text-sm`,children:[a?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Fe,{className:`w-4 h-4 text-bambu-gray`}),(0,Z.jsx)(`input`,{type:`text`,value:h.designer||``,onChange:e=>g({...h,designer:e.target.value}),placeholder:`Designer`,className:`bg-bambu-dark border border-bambu-dark-tertiary rounded px-2 py-1 text-white`})]}):_.designer&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,Z.jsx)(Fe,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:_.designer}),_.designer_user_id&&(0,Z.jsx)(`a`,{href:`https://makerworld.com/en/@${_.designer_user_id}`,target:`_blank`,rel:`noopener noreferrer`,className:`text-bambu-green hover:underline`,children:(0,Z.jsx)(Ce,{className:`w-3 h-3`})})]}),_.creation_date&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,Z.jsx)(m,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:_.creation_date})]}),a?(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(rt,{className:`w-4 h-4 text-bambu-gray`}),(0,Z.jsx)(`input`,{type:`text`,value:h.license||``,onChange:e=>g({...h,license:e.target.value}),placeholder:`License`,className:`bg-bambu-dark border border-bambu-dark-tertiary rounded px-2 py-1 text-white`})]}):_.license&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,Z.jsx)(rt,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:_.license})]}),_.origin&&(0,Z.jsx)(`span`,{className:`px-2 py-0.5 bg-bambu-dark rounded text-bambu-gray`,children:_.origin})]})]}),(_.description||a)&&(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide`,children:`Description`}),a?(0,Z.jsx)(f,{content:h.description||``,onChange:e=>g({...h,description:e}),placeholder:`Enter description...`}):(0,Z.jsx)(`div`,{className:`prose prose-invert prose-sm max-w-none text-bambu-gray-light`,dangerouslySetInnerHTML:{__html:T(_.description||``)}})]}),(_.profile_title||_.profile_description||a)&&(0,Z.jsxs)(`div`,{className:`space-y-2 p-4 bg-bambu-dark rounded-lg`,children:[(0,Z.jsx)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide`,children:`Print Profile`}),a?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`input`,{type:`text`,value:h.profile_title||``,onChange:e=>g({...h,profile_title:e.target.value}),placeholder:`Profile Title`,className:`w-full bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded px-3 py-2 text-white`}),(0,Z.jsx)(f,{content:h.profile_description||``,onChange:e=>g({...h,profile_description:e}),placeholder:`Profile description...`})]}):(0,Z.jsxs)(Z.Fragment,{children:[_.profile_title&&(0,Z.jsx)(`p`,{className:`text-white font-medium`,children:_.profile_title}),_.profile_description&&(0,Z.jsx)(`div`,{className:`prose prose-invert prose-sm max-w-none text-bambu-gray-light`,dangerouslySetInnerHTML:{__html:T(_.profile_description)}}),_.profile_user_name&&(0,Z.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[`by `,_.profile_user_name]})]})]}),x.length>0&&(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide flex items-center gap-2`,children:[(0,Z.jsx)(tt,{className:`w-4 h-4`}),`Images (`,x.length,`)`]}),(0,Z.jsx)(`div`,{className:`grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 gap-2`,children:x.map((e,t)=>(0,Z.jsx)(`button`,{onClick:()=>p(t),className:`aspect-square rounded-lg overflow-hidden border border-bambu-dark-tertiary hover:border-bambu-green transition-colors`,children:(0,Z.jsx)(`img`,{src:o(e.url),alt:e.name,className:`w-full h-full object-cover`})},e.path))})]}),_.design_model_id&&(0,Z.jsx)(`div`,{className:`pt-4 border-t border-bambu-dark-tertiary`,children:(0,Z.jsxs)(`a`,{href:`https://makerworld.com/en/models/${_.design_model_id}`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 text-bambu-green hover:underline`,children:[(0,Z.jsx)(Ce,{className:`w-4 h-4`}),`View on MakerWorld`]})})]})]})]}),d!==null&&x[d]&&(0,Z.jsxs)(`div`,{className:`fixed inset-0 bg-black/90 flex items-center justify-center z-60`,onClick:()=>p(null),children:[(0,Z.jsx)(`button`,{onClick:e=>{e.stopPropagation(),p(Math.max(0,d-1))},disabled:d===0,className:`absolute left-4 p-2 bg-bambu-dark-secondary rounded-full hover:bg-bambu-dark-tertiary disabled:opacity-30`,children:(0,Z.jsx)(Ze,{className:`w-6 h-6 text-white`})}),(0,Z.jsx)(`img`,{src:o(x[d].url),alt:x[d].name,className:`max-w-[90vw] max-h-[90vh] object-contain`,onClick:e=>e.stopPropagation()}),(0,Z.jsx)(`button`,{onClick:e=>{e.stopPropagation(),p(Math.min(x.length-1,d+1))},disabled:d===x.length-1,className:`absolute right-4 p-2 bg-bambu-dark-secondary rounded-full hover:bg-bambu-dark-tertiary disabled:opacity-30`,children:(0,Z.jsx)(Me,{className:`w-6 h-6 text-white`})}),(0,Z.jsx)(`button`,{onClick:()=>p(null),className:`absolute top-4 right-4 p-2 bg-bambu-dark-secondary rounded-full hover:bg-bambu-dark-tertiary`,children:(0,Z.jsx)(L,{className:`w-6 h-6 text-white`})}),(0,Z.jsxs)(`div`,{className:`absolute bottom-4 text-white text-sm`,children:[d+1,` / `,x.length]})]})]})}var Ft=[.25,.5,.75,1,1.5,2,3,4];function It({archiveId:e,timelapseSrc:t,onClose:n,onSave:i}){let{showToast:a}=S(),o=(0,X.useRef)(null),s=(0,X.useRef)(null),[u,d]=(0,X.useState)(!1),[f,p]=(0,X.useState)(0),[m,h]=(0,X.useState)(0),[g,_]=(0,X.useState)(0),[v,y]=(0,X.useState)(0),[b,x]=(0,X.useState)(1),[C,w]=(0,X.useState)(null),[T,E]=(0,X.useState)(null),[D,O]=(0,X.useState)(.8),[k,ee]=(0,X.useState)(!1),{data:A,isLoading:te}=c({queryKey:[`timelapse-info`,e],queryFn:()=>r.getTimelapseInfo(e)}),{data:ne}=c({queryKey:[`timelapse-thumbnails`,e],queryFn:()=>r.getTimelapseThumbnails(e,15)}),M=l({mutationFn:()=>r.processTimelapse(e,{trimStart:g,trimEnd:v,speed:b,saveMode:`replace`},C||void 0),onSuccess:e=>{a(e.message,`success`),i?.(),n()},onError:e=>{a(e.message||`Processing failed`,`error`)}});(0,X.useEffect)(()=>{A?.duration&&v===0&&y(A.duration)},[A?.duration,v]),(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,X.useEffect)(()=>{let e=o.current;if(!e)return;let t=()=>{let t=e.currentTime;p(t),t>=v&&(e.currentTime=g)},n=()=>{h(e.duration),v===0&&y(e.duration)},r=()=>d(!0),i=()=>d(!1);return e.addEventListener(`timeupdate`,t),e.addEventListener(`durationchange`,n),e.addEventListener(`play`,r),e.addEventListener(`pause`,i),()=>{e.removeEventListener(`timeupdate`,t),e.removeEventListener(`durationchange`,n),e.removeEventListener(`play`,r),e.removeEventListener(`pause`,i)}},[g,v]),(0,X.useEffect)(()=>{let e=s.current,t=o.current;!e||!t||!T||(e.currentTime=t.currentTime,e.playbackRate=t.playbackRate,u&&!k?e.play().catch(()=>{}):e.pause())},[u,T,k]),(0,X.useEffect)(()=>{s.current&&(s.current.volume=k?0:D)},[D,k]),(0,X.useEffect)(()=>{o.current&&(o.current.playbackRate=b),s.current&&(s.current.playbackRate=b)},[b]);let re=(0,X.useCallback)(()=>{let e=o.current;e&&(u?e.pause():(e.currentTime<g&&(e.currentTime=g),e.play()))},[u,g]),ie=e=>{let t=o.current;t&&(t.currentTime=Math.max(g,Math.min(v,e)))},ae=e=>{let t=e.target.files?.[0];t&&(T&&URL.revokeObjectURL(T),w(t),E(URL.createObjectURL(t)))},oe=()=>{T&&URL.revokeObjectURL(T),w(null),E(null)};(0,X.useEffect)(()=>()=>{T&&URL.revokeObjectURL(T)},[T]);let se=v-g,ce=se/b;return te?(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 text-white`,children:[(0,Z.jsx)(P,{className:`w-6 h-6 animate-spin`}),`Loading video info...`]})}):(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:(0,Z.jsxs)(`div`,{className:`relative bg-bambu-dark-secondary rounded-xl max-w-5xl w-full mx-4 max-h-[90vh] overflow-hidden flex flex-col`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary shrink-0`,children:[(0,Z.jsxs)(`h3`,{className:`text-lg font-semibold text-white flex items-center gap-2`,children:[(0,Z.jsx)(j,{className:`w-5 h-5 text-bambu-green`}),`Edit Timelapse`]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(V,{variant:`primary`,size:`sm`,onClick:()=>M.mutate(),disabled:M.isPending,children:M.isPending?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),`Processing...`]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(He,{className:`w-4 h-4`}),`Save`]})}),(0,Z.jsx)(`button`,{onClick:n,className:`p-1 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,Z.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(`video`,{ref:o,src:t,className:`w-full rounded-lg bg-black`,onClick:re,muted:!!T}),!u&&(0,Z.jsx)(`button`,{onClick:re,className:`absolute inset-0 flex items-center justify-center bg-black/30 hover:bg-black/40 transition-colors`,children:(0,Z.jsx)(`div`,{className:`p-4 bg-bambu-green rounded-full`,children:(0,Z.jsx)(de,{className:`w-8 h-8 text-white`})})}),T&&(0,Z.jsx)(`audio`,{ref:s,src:T,loop:!0})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,Z.jsx)(bt,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:`Trim`}),(0,Z.jsxs)(`span`,{className:`ml-auto`,children:[H(g),` - `,H(v),` (`,H(se),`)`]})]}),(0,Z.jsxs)(`div`,{className:`relative h-16 bg-bambu-dark rounded-lg overflow-hidden`,children:[(0,Z.jsx)(`div`,{className:`absolute inset-0 flex`,children:ne?.thumbnails.map((e,t)=>(0,Z.jsx)(`div`,{className:`flex-1 bg-cover bg-center`,style:{backgroundImage:`url(data:image/jpeg;base64,${e})`}},t))}),(0,Z.jsx)(`div`,{className:`absolute inset-y-0 left-0 bg-black/60`,style:{width:`${g/m*100}%`}}),(0,Z.jsx)(`div`,{className:`absolute inset-y-0 right-0 bg-black/60`,style:{width:`${(m-v)/m*100}%`}}),(0,Z.jsx)(`div`,{className:`absolute inset-y-0 border-2 border-bambu-green`,style:{left:`${g/m*100}%`,right:`${(m-v)/m*100}%`}}),(0,Z.jsx)(`div`,{className:`absolute top-0 bottom-0 w-0.5 bg-white shadow-lg`,style:{left:`${f/m*100}%`}}),(0,Z.jsx)(`input`,{type:`range`,min:0,max:m,step:.1,value:g,onChange:e=>{let t=parseFloat(e.target.value);t<v-1&&(_(t),o.current&&o.current.currentTime<t&&(o.current.currentTime=t))},className:`absolute inset-0 w-full opacity-0 cursor-ew-resize`,style:{clipPath:`inset(0 50% 0 0)`}}),(0,Z.jsx)(`input`,{type:`range`,min:0,max:m,step:.1,value:v,onChange:e=>{let t=parseFloat(e.target.value);t>g+1&&y(t)},className:`absolute inset-0 w-full opacity-0 cursor-ew-resize`,style:{clipPath:`inset(0 0 0 50%)`}})]}),(0,Z.jsx)(`input`,{type:`range`,min:0,max:m,step:.1,value:f,onChange:e=>ie(parseFloat(e.target.value)),className:`w-full h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
- [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
- [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full
- [&::-webkit-slider-thumb]:cursor-pointer`}),(0,Z.jsx)(`div`,{className:`flex items-center justify-center gap-2`,children:(0,Z.jsx)(`button`,{onClick:re,className:`p-2 bg-bambu-green hover:bg-bambu-green-dark rounded-lg transition-colors`,children:u?(0,Z.jsx)(F,{className:`w-5 h-5 text-white`}):(0,Z.jsx)(de,{className:`w-5 h-5 text-white`})})})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,Z.jsx)(N,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:`Speed`}),(0,Z.jsxs)(`span`,{className:`ml-auto`,children:[b,`x (output: `,H(ce),`)`]})]}),(0,Z.jsx)(`div`,{className:`flex gap-1`,children:Ft.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>x(e),className:`flex-1 px-2 py-2 text-sm rounded transition-colors ${b===e?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:bg-bambu-dark-tertiary`}`,children:[e,`x`]},e))})]}),(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,Z.jsx)(et,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{children:`Music Overlay`})]}),C?(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 p-3 bg-bambu-dark rounded-lg`,children:[(0,Z.jsx)(et,{className:`w-5 h-5 text-bambu-green`}),(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`p`,{className:`text-sm text-white truncate`,children:C.name}),(0,Z.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[(C.size/1024/1024).toFixed(1),` MB`]})]}),(0,Z.jsx)(`button`,{onClick:()=>ee(!k),className:`p-2 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:k?(0,Z.jsx)(St,{className:`w-4 h-4 text-bambu-gray`}):(0,Z.jsx)(Y,{className:`w-4 h-4 text-bambu-green`})}),(0,Z.jsx)(`input`,{type:`range`,min:0,max:1,step:.1,value:D,onChange:e=>O(parseFloat(e.target.value)),className:`w-20 h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
- [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
- [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full`}),(0,Z.jsx)(`button`,{onClick:oe,className:`p-2 hover:bg-red-100 dark:hover:bg-red-500/20 rounded transition-colors`,children:(0,Z.jsx)(U,{className:`w-4 h-4 text-red-600 dark:text-red-400`})})]}):(0,Z.jsxs)(`label`,{className:`flex flex-col items-center justify-center gap-2 p-6 border-2 border-dashed border-bambu-dark-tertiary rounded-lg cursor-pointer hover:border-bambu-green/50 transition-colors`,children:[(0,Z.jsx)($e,{className:`w-8 h-8 text-bambu-gray`}),(0,Z.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:`Drop audio file or click to upload`}),(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray/60`,children:`MP3, WAV, M4A, AAC, OGG`}),(0,Z.jsx)(`input`,{type:`file`,accept:`.mp3,.wav,.m4a,.aac,.ogg,audio/*`,onChange:ae,className:`hidden`})]})]}),(0,Z.jsxs)(`div`,{className:`p-3 bg-bambu-dark rounded-lg text-sm space-y-1`,children:[(0,Z.jsxs)(`p`,{className:`text-bambu-gray`,children:[(0,Z.jsx)(`span`,{className:`text-white`,children:`Original:`}),` `,H(m),` @ `,A?.width,`x`,A?.height]}),(0,Z.jsxs)(`p`,{className:`text-bambu-gray`,children:[(0,Z.jsx)(`span`,{className:`text-white`,children:`Output:`}),` `,H(ce),` @ `,b,`x speed`,C&&` + music overlay`]})]})]}),M.isPending&&(0,Z.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center gap-4`,children:[(0,Z.jsx)(P,{className:`w-12 h-12 text-bambu-green animate-spin`}),(0,Z.jsx)(`p`,{className:`text-white text-lg`,children:`Processing timelapse...`}),(0,Z.jsx)(`p`,{className:`text-bambu-gray text-sm`,children:`This may take a few moments`})]})]})})}var Lt=[.25,.5,.75,1,1.5,2,3,4];function Rt({src:e,title:t,downloadFilename:n,archiveId:r,onClose:i,onEdit:a}){let o=(0,X.useRef)(null),[s,c]=(0,X.useState)(!0),[l,u]=(0,X.useState)(1),[d,f]=(0,X.useState)(0),[p,m]=(0,X.useState)(0),[h,g]=(0,X.useState)(!1);(0,X.useEffect)(()=>{let e=o.current;e&&(e.playbackRate=l)},[l]),(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]),(0,X.useEffect)(()=>{let e=o.current;if(!e)return;let t=()=>f(e.currentTime),n=()=>m(e.duration),r=()=>c(!0),i=()=>c(!1);return e.addEventListener(`timeupdate`,t),e.addEventListener(`durationchange`,n),e.addEventListener(`play`,r),e.addEventListener(`pause`,i),()=>{e.removeEventListener(`timeupdate`,t),e.removeEventListener(`durationchange`,n),e.removeEventListener(`play`,r),e.removeEventListener(`pause`,i)}},[]);let _=()=>{let e=o.current;e&&(s?e.pause():e.play())};return(0,Z.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:[(0,Z.jsxs)(`div`,{className:`relative bg-bambu-dark-secondary rounded-xl max-w-4xl w-full mx-4 overflow-hidden`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`h3`,{className:`text-lg font-semibold text-white flex items-center gap-2`,children:[(0,Z.jsx)(j,{className:`w-5 h-5 text-bambu-green`}),t]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[r&&(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:()=>g(!0),children:[(0,Z.jsx)(xe,{className:`w-4 h-4`}),`Edit`]}),(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:()=>{let t=document.createElement(`a`);t.href=e,t.download=n,t.click()},children:[(0,Z.jsx)(q,{className:`w-4 h-4`}),`Download`]}),(0,Z.jsx)(`button`,{onClick:i,className:`p-1 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,Z.jsxs)(`div`,{className:`p-4`,children:[(0,Z.jsx)(`video`,{ref:o,src:e,autoPlay:!0,className:`w-full rounded-lg`,onClick:_}),(0,Z.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray w-12 text-right`,children:H(d)}),(0,Z.jsx)(`input`,{type:`range`,min:0,max:p||100,value:d,onChange:e=>{let t=o.current;t&&(t.currentTime=parseFloat(e.target.value))},className:`flex-1 h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
- [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
- [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full
- [&::-webkit-slider-thumb]:cursor-pointer`}),(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray w-12`,children:H(p)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`button`,{onClick:()=>{let e=o.current;e&&(e.currentTime=Math.max(0,e.currentTime-5))},className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,title:`Skip back 5s`,children:(0,Z.jsx)(xt,{className:`w-5 h-5 text-bambu-gray`})}),(0,Z.jsx)(`button`,{onClick:_,className:`p-2 bg-bambu-green hover:bg-bambu-green-dark rounded-lg transition-colors`,children:s?(0,Z.jsx)(F,{className:`w-5 h-5 text-white`}):(0,Z.jsx)(de,{className:`w-5 h-5 text-white`})}),(0,Z.jsx)(`button`,{onClick:()=>{let e=o.current;e&&(e.currentTime=Math.min(p,e.currentTime+5))},className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,title:`Skip forward 5s`,children:(0,Z.jsx)(me,{className:`w-5 h-5 text-bambu-gray`})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:`Speed:`}),(0,Z.jsx)(`div`,{className:`flex gap-1`,children:Lt.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>u(e),className:`px-2 py-1 text-xs rounded transition-colors ${l===e?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray hover:bg-bambu-dark-tertiary/80`}`,children:[e,`x`]},e))})]})]})]})]})]}),h&&r&&(0,Z.jsx)(It,{archiveId:r,timelapseSrc:e,onClose:()=>g(!1),onSave:a})]})}function zt({archiveId:e,archiveName:t,printerName:n,onClose:i}){let{t:o}=a(),{showToast:s}=S(),[l,u]=(0,X.useState)(new Set),[d,f]=(0,X.useState)(!1),[p,m]=(0,X.useState)(null),h=(0,X.useRef)(null),g=(0,X.useRef)(null),_=c({queryKey:[`archive-printer-media`,e],queryFn:()=>r.getArchivePrinterMedia(e),staleTime:6e4}),v=(0,X.useMemo)(()=>_.data?.remote_files??[],[_.data]);(0,X.useEffect)(()=>{!_.data||h.current===e||(h.current=e,v.length===1&&u(new Set([v[0].path])))},[e,_.data,v]),(0,X.useEffect)(()=>{let e=new Set(v.map(e=>e.path));u(t=>new Set([...t].filter(t=>e.has(t))))},[v]),(0,X.useEffect)(()=>()=>g.current?.abort(),[]),(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]);let y=e=>{u(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},b=async()=>{let n=_.data?.local_timelapse?.name??``,i=n.includes(`.`)?`.${n.split(`.`).pop()}`:``;try{await r.downloadArchiveTimelapse(e,`${t}_timelapse${i}`)}catch(e){s(o(`printerFiles.downloadFailed`,{error:e instanceof Error?e.message:o(`printerFiles.unknownError`)}),`error`)}},x=async()=>{if(!_.data?.printer_id||l.size===0)return;let e=v.filter(e=>l.has(e.path));if(e.length===0)return;let n=new AbortController;g.current=n,f(!0);try{let i=await r.downloadPrinterFilesAsZip(_.data.printer_id,e.map(e=>e.path),Object.fromEntries(e.map(e=>[e.path,e.size])),`${t.replace(/[^a-zA-Z0-9]/g,`_`)}-printer-videos.zip`,!0,n.signal,(e,t)=>m({current:e,total:t}));i.failed>0?s(o(`printerFiles.zipPartial`,{successful:i.successful,total:i.requested}),`warning`):s(o(`printerFiles.zipStarted`,{count:i.successful}))}catch(e){s(o(`printerFiles.downloadFailed`,{error:e instanceof Error?e.message:o(`printerFiles.unknownError`)}),`error`)}finally{g.current===n&&(g.current=null),m(null),f(!1)}},C=!!_.data?.local_timelapse||v.length>0,w=e=>o(e===`printer_files_forbidden`?`printers.permission.noFiles`:e===`printer_missing`?`archives.media.printerMissing`:e===`timelapse_unavailable`?`archives.media.timelapseUnavailable`:`archives.media.ipcamUnavailable`),T=(_.data?.warnings??[]).map(e=>(0,Z.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:w(e)},e));return(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4`,onClick:i,children:(0,Z.jsxs)(`div`,{className:`flex max-h-[85vh] w-full max-w-2xl flex-col overflow-hidden rounded-xl border border-bambu-dark-tertiary bg-bambu-dark-secondary`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between border-b border-bambu-dark-tertiary p-4`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsxs)(`h3`,{className:`flex items-center gap-2 text-lg font-semibold text-white`,children:[(0,Z.jsx)(we,{className:`h-5 w-5 text-bambu-green`}),o(`archives.media.title`)]}),(0,Z.jsxs)(`p`,{className:`truncate text-sm text-bambu-gray`,children:[t,` · `,n]})]}),(0,Z.jsx)(`button`,{onClick:i,className:`rounded p-1 text-bambu-gray hover:bg-bambu-dark-tertiary hover:text-white`,children:(0,Z.jsx)(L,{className:`h-5 w-5`})})]}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:_.isLoading?(0,Z.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-12 text-bambu-gray`,children:[(0,Z.jsx)(P,{className:`h-5 w-5 animate-spin`}),o(`archives.media.searching`)]}):_.isError?(0,Z.jsx)(`p`,{className:`py-8 text-center text-red-500`,children:o(`archives.media.searchFailed`)}):C?(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[_.data?.local_timelapse&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark p-3`,children:[(0,Z.jsx)(j,{className:`h-5 w-5 shrink-0 text-bambu-green`}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsx)(`p`,{className:`truncate text-sm font-medium text-white`,children:_.data.local_timelapse.name}),(0,Z.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[o(`archives.media.attachedTimelapse`),` · `,ge(_.data.local_timelapse.size)]})]}),(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:b,children:[(0,Z.jsx)(q,{className:`h-4 w-4`}),o(`common.download`)]})]}),v.length>0&&(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Z.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[o(`archives.media.printerFiles`),` (`,v.length,`)`]}),(0,Z.jsx)(`button`,{className:`text-xs text-bambu-green hover:text-bambu-green-light`,onClick:()=>u(l.size===v.length?new Set:new Set(v.map(e=>e.path))),children:l.size===v.length?o(`common.deselectAll`):o(`common.selectAll`)})]}),(0,Z.jsx)(`div`,{className:`space-y-1`,children:v.map(e=>{let t=l.has(e.path);return(0,Z.jsxs)(`button`,{className:`flex w-full items-center gap-3 rounded-lg border p-3 text-left transition-colors ${t?`border-bambu-green/60 bg-bambu-green/10`:`border-bambu-dark-tertiary bg-bambu-dark hover:border-bambu-gray`}`,onClick:()=>y(e.path),children:[t?(0,Z.jsx)(Be,{className:`h-5 w-5 shrink-0 text-bambu-green`}):(0,Z.jsx)(Ae,{className:`h-5 w-5 shrink-0 text-bambu-gray`}),e.kind===`timelapse`?(0,Z.jsx)(j,{className:`h-5 w-5 shrink-0 text-bambu-green`}):(0,Z.jsx)(we,{className:`h-5 w-5 shrink-0 text-blue-400`}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-white`,children:e.name}),(0,Z.jsx)(`span`,{className:`shrink-0 text-xs text-bambu-gray`,children:ge(e.size)})]},e.path)})})]}),T]}):(0,Z.jsxs)(`div`,{className:`space-y-3 py-8 text-center`,children:[(0,Z.jsx)(`p`,{className:`text-bambu-gray`,children:o(`archives.media.none`)}),T]})}),v.length>0&&(0,Z.jsx)(`div`,{className:`flex items-center justify-end border-t border-bambu-dark-tertiary p-4`,children:(0,Z.jsxs)(V,{variant:`primary`,onClick:x,disabled:l.size===0||d,children:[d?(0,Z.jsx)(P,{className:`h-4 w-4 animate-spin`}):(0,Z.jsx)(q,{className:`h-4 w-4`}),p?`${p.current}/${p.total}`:`${o(`archives.media.downloadSelected`)} (${l.size})`]})})]})})}function Bt({archiveIds:e,onClose:t}){(0,X.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let{data:n,isLoading:i,error:a}=c({queryKey:[`archive-comparison`,e],queryFn:()=>r.compareArchives(e)});return(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,onClick:t,children:(0,Z.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-lg max-w-4xl w-full max-h-[90vh] flex flex-col border border-bambu-dark-tertiary`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`h3`,{className:`text-lg font-semibold text-white`,children:[`Compare Archives (`,e.length,`)`]}),(0,Z.jsx)(`button`,{onClick:t,className:`text-bambu-gray hover:text-white p-1`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-auto p-4 bg-bambu-dark-secondary`,children:i?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(P,{className:`w-8 h-8 text-bambu-green animate-spin`})}):a?(0,Z.jsxs)(`div`,{className:`text-center py-12 text-red-700 dark:text-red-400`,children:[(0,Z.jsx)(I,{className:`w-12 h-12 mx-auto mb-4 opacity-50`}),(0,Z.jsx)(`p`,{children:`Failed to load comparison`}),(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray mt-2`,children:a instanceof Error?a.message:`Unknown error`})]}):n?(0,Z.jsx)(Vt,{comparison:n}):null}),(0,Z.jsx)(`div`,{className:`p-4 border-t border-bambu-dark-tertiary`,children:(0,Z.jsx)(V,{variant:`secondary`,onClick:t,className:`w-full`,children:`Close`})})]})})}function Vt({comparison:e}){return(0,Z.jsxs)(`div`,{className:`space-y-6`,children:[(0,Z.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Z.jsxs)(`table`,{className:`w-full`,children:[(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{children:[(0,Z.jsx)(`th`,{className:`text-left text-sm text-bambu-gray font-medium pb-2 pr-4 min-w-[150px]`,children:`Setting`}),e.archives.map(e=>(0,Z.jsxs)(`th`,{className:`text-left text-sm font-medium pb-2 px-2 min-w-[120px]`,children:[(0,Z.jsx)(`div`,{className:`text-white truncate max-w-[150px]`,title:e.print_name,children:e.print_name}),(0,Z.jsx)(`div`,{className:`text-xs ${e.status===`completed`?`text-status-ok`:e.status===`failed`?`text-status-error`:`text-bambu-gray`}`,children:e.status})]},e.id))]})}),(0,Z.jsx)(`tbody`,{className:`divide-y divide-bambu-gray/20`,children:e.comparison.map(e=>(0,Z.jsxs)(`tr`,{className:e.has_difference?`bg-yellow-500/5`:``,children:[(0,Z.jsx)(`td`,{className:`py-2 pr-4 text-sm`,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.has_difference&&(0,Z.jsx)(I,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,Z.jsx)(`span`,{className:e.has_difference?`text-yellow-700 dark:text-yellow-400`:`text-bambu-gray`,children:e.label})]})}),e.values.map((t,n)=>(0,Z.jsxs)(`td`,{className:`py-2 px-2 text-sm text-white`,children:[t??(0,Z.jsx)(`span`,{className:`text-bambu-gray/50`,children:`-`}),e.unit&&t!==null&&(0,Z.jsx)(`span`,{className:`text-bambu-gray ml-1`,children:e.unit})]},n))]},e.field))})]})}),e.differences.length>0&&(0,Z.jsxs)(`div`,{className:`p-4 bg-yellow-50 border border-yellow-300 dark:bg-yellow-500/10 dark:border-yellow-500/30 rounded-lg`,children:[(0,Z.jsxs)(`h4`,{className:`text-sm font-medium text-yellow-700 dark:text-yellow-400 mb-2 flex items-center gap-2`,children:[(0,Z.jsx)(I,{className:`w-4 h-4`}),e.differences.length,` Difference`,e.differences.length>1?`s`:``,` Found`]}),(0,Z.jsxs)(`ul`,{className:`text-sm text-white/80 space-y-1`,children:[e.differences.slice(0,5).map(e=>(0,Z.jsxs)(`li`,{children:[(0,Z.jsx)(`span`,{className:`text-yellow-700 dark:text-yellow-400`,children:e.label}),`: `,e.values.join(` vs `),` `,e.unit||``]},e.field)),e.differences.length>5&&(0,Z.jsxs)(`li`,{className:`text-bambu-gray`,children:[`...and `,e.differences.length-5,` more`]})]})]}),e.success_correlation.has_both_outcomes?(0,Z.jsxs)(`div`,{className:`p-4 bg-bambu-dark rounded-lg`,children:[(0,Z.jsxs)(`h4`,{className:`text-sm font-medium text-white mb-3 flex items-center gap-2`,children:[(0,Z.jsx)(h,{className:`w-4 h-4 text-bambu-green`}),`Success/Failure Analysis`]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-4 text-sm mb-3`,children:[(0,Z.jsxs)(`span`,{className:`text-bambu-green`,children:[e.success_correlation.successful_count,` successful`]}),(0,Z.jsxs)(`span`,{className:`text-red-700 dark:text-red-400`,children:[e.success_correlation.failed_count,` failed`]})]}),e.success_correlation.insights&&e.success_correlation.insights.length>0?(0,Z.jsx)(`div`,{className:`space-y-2`,children:e.success_correlation.insights.map(e=>(0,Z.jsxs)(`div`,{className:`text-sm p-2 bg-bambu-dark-secondary rounded`,children:[(0,Z.jsxs)(`span`,{className:`text-white font-medium`,children:[e.label,`:`]}),` `,(0,Z.jsx)(`span`,{className:`text-white/80`,children:e.insight})]},e.field))}):(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:`No clear correlations found between settings and outcomes.`})]}):(0,Z.jsx)(`div`,{className:`p-4 bg-bambu-dark rounded-lg text-sm text-bambu-gray`,children:(0,Z.jsx)(`p`,{children:e.success_correlation.message||`Need both successful and failed prints for correlation analysis.`})})]})}function Ht(e){let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`Just now`;if(r<60)return`${r}m ago`;let i=Math.floor(r/60);return i<24?`${i}h ago`:`${Math.floor(i/24)}d ago`}function Ut({upload:e,projects:t,onArchive:n,onDiscard:r,isArchiving:i,isDiscarding:a}){let[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(e.tags||``),[u,d]=(0,X.useState)(e.notes||``),[f,p]=(0,X.useState)(e.project_id),[m,h]=(0,X.useState)(!1);return(0,Z.jsx)(B,{children:(0,Z.jsxs)(z,{className:`py-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(k,{className:`w-8 h-8 text-bambu-green flex-shrink-0`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`p`,{className:`text-white font-medium`,title:e.filename,children:e.display_name||e.filename}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-bambu-gray`,children:[(0,Z.jsx)(`span`,{children:ge(e.file_size)}),(0,Z.jsx)(`span`,{children:`·`}),(0,Z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Z.jsx)(Pe,{className:`w-3 h-3`}),Ht(e.uploaded_at)]}),e.source_ip&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{children:`·`}),(0,Z.jsxs)(`span`,{children:[`from `,e.source_ip]})]})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`button`,{onClick:()=>s(!o),className:`p-1 text-bambu-gray hover:text-white transition-colors`,children:o?(0,Z.jsx)(_,{className:`w-5 h-5`}):(0,Z.jsx)(g,{className:`w-5 h-5`})}),(0,Z.jsx)(V,{variant:`primary`,size:`sm`,onClick:()=>n(e.id,{tags:c,notes:u,project_id:f||void 0}),disabled:i,children:i?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ke,{className:`w-4 h-4`}),`Archive`]})}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,onClick:()=>h(!0),disabled:a,children:a?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsx)(U,{className:`w-4 h-4 text-red-600 dark:text-red-400`})})]})]}),m&&(0,Z.jsx)(K,{title:`Discard Upload`,message:`Are you sure you want to discard "${e.filename}"? This cannot be undone.`,confirmText:`Discard`,variant:`danger`,onConfirm:()=>{r(e.id),h(!1)},onCancel:()=>h(!1)}),o&&(0,Z.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-bambu-dark-tertiary space-y-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Tags`}),(0,Z.jsx)(`input`,{type:`text`,value:c,onChange:e=>l(e.target.value),placeholder:`e.g., functional, prototype, gift`,className:`w-full bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-md px-3 py-2 text-white placeholder-bambu-gray text-sm`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Notes`}),(0,Z.jsx)(`textarea`,{value:u,onChange:e=>d(e.target.value),placeholder:`Add notes about this print...`,rows:2,className:`w-full bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-md px-3 py-2 text-white placeholder-bambu-gray text-sm resize-none`})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Project`}),(0,Z.jsxs)(`select`,{value:f||``,onChange:e=>p(e.target.value?Number(e.target.value):null),className:`w-full bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-md px-3 py-2 text-white text-sm`,children:[(0,Z.jsx)(`option`,{value:``,children:`No project`}),t.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]})]})]})})}function Wt(){let e=s(),{showToast:t}=S(),[n,a]=(0,X.useState)(!1),[o,u]=(0,X.useState)(!1),[d,f]=(0,X.useState)(new Set),[p,m]=(0,X.useState)(new Set),{data:h,isLoading:g}=c({queryKey:[`pending-uploads`],queryFn:i.list,refetchInterval:1e4}),{data:_}=c({queryKey:[`projects`],queryFn:()=>r.getProjects(),select:e=>Te([...e].sort((e,t)=>e.name.localeCompare(t.name)))}),v=l({mutationFn:({id:e,data:t})=>i.archive(e,t),onMutate:({id:e})=>{f(t=>new Set(t).add(e))},onSettled:(e,t,{id:n})=>{f(e=>{let t=new Set(e);return t.delete(n),t})},onSuccess:n=>{e.invalidateQueries({queryKey:[`pending-uploads`]}),e.invalidateQueries({queryKey:[`archives`]}),t(`Archived: ${n.print_name}`)},onError:e=>{t(e.message||`Failed to archive`,`error`)}}),y=l({mutationFn:e=>i.discard(e),onMutate:e=>{m(t=>new Set(t).add(e))},onSettled:(e,t,n)=>{m(e=>{let t=new Set(e);return t.delete(n),t})},onSuccess:()=>{e.invalidateQueries({queryKey:[`pending-uploads`]}),t(`Upload discarded`)},onError:e=>{t(e.message||`Failed to discard`,`error`)}}),b=l({mutationFn:i.archiveAll,onSuccess:n=>{e.invalidateQueries({queryKey:[`pending-uploads`]}),e.invalidateQueries({queryKey:[`archives`]}),t(`Archived ${n.archived} files${n.failed>0?`, ${n.failed} failed`:``}`)},onError:e=>{t(e.message||`Failed to archive all`,`error`)}}),x=l({mutationFn:i.discardAll,onSuccess:n=>{e.invalidateQueries({queryKey:[`pending-uploads`]}),t(`Discarded ${n.discarded} files`)},onError:e=>{t(e.message||`Failed to discard all`,`error`)}});return g?(0,Z.jsx)(B,{children:(0,Z.jsx)(z,{className:`py-8 flex justify-center`,children:(0,Z.jsx)(P,{className:`w-6 h-6 animate-spin text-bambu-green`})})}):!h||h.length===0?null:(0,Z.jsxs)(`div`,{className:`mb-6`,children:[(0,Z.jsxs)(B,{className:`border-l-4 border-l-yellow-500`,children:[(0,Z.jsx)(R,{children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)($e,{className:`w-5 h-5 text-yellow-500`}),(0,Z.jsxs)(`h2`,{className:`text-lg font-semibold text-white`,children:[`Pending Uploads (`,h.length,`)`]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(V,{variant:`primary`,size:`sm`,onClick:()=>a(!0),disabled:b.isPending,children:b.isPending?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ke,{className:`w-4 h-4`}),`Archive All`]})}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,onClick:()=>u(!0),disabled:x.isPending,children:x.isPending?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(U,{className:`w-4 h-4`}),`Discard All`]})})]})]})}),(0,Z.jsxs)(z,{children:[(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray mb-4`,children:`These files were uploaded via the virtual printer. Review and archive them to add to your collection.`}),(0,Z.jsx)(`div`,{className:`space-y-3`,children:h.map(e=>(0,Z.jsx)(Ut,{upload:e,projects:_||[],onArchive:(e,t)=>v.mutate({id:e,data:t}),onDiscard:e=>y.mutate(e),isArchiving:d.has(e.id),isDiscarding:p.has(e.id)},e.id))})]})]}),n&&(0,Z.jsx)(K,{title:`Archive All Uploads`,message:`Are you sure you want to archive all ${h.length} pending uploads?`,confirmText:`Archive All`,onConfirm:()=>{b.mutate(),a(!1)},onCancel:()=>a(!1)}),o&&(0,Z.jsx)(K,{title:`Discard All Uploads`,message:`Are you sure you want to discard all ${h.length} pending uploads? This cannot be undone.`,confirmText:`Discard All`,variant:`danger`,onConfirm:()=>{x.mutate(),u(!1)},onCancel:()=>u(!1)})]})}function Gt({onClose:e}){let t=s(),{showToast:n}=S(),[i,a]=(0,X.useState)(``),[o,u]=(0,X.useState)(null),[d,f]=(0,X.useState)(``),[p,m]=(0,X.useState)(null),[g,_]=(0,X.useState)(`count`);(0,X.useEffect)(()=>{let t=t=>{t.key===`Escape`&&(o?u(null):p?m(null):e())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,o,p]);let{data:v,isLoading:y}=c({queryKey:[`tags`],queryFn:r.getTags}),b=l({mutationFn:({oldName:e,newName:t})=>r.renameTag(e,t),onSuccess:(e,{oldName:r,newName:i})=>{t.invalidateQueries({queryKey:[`tags`]}),t.invalidateQueries({queryKey:[`archives`]}),n(`Renamed "${r}" to "${i}" in ${e.affected} archive${e.affected===1?``:`s`}`),u(null)},onError:e=>{n(e.message||`Failed to rename tag`,`error`)}}),x=l({mutationFn:e=>r.deleteTag(e),onSuccess:(e,r)=>{t.invalidateQueries({queryKey:[`tags`]}),t.invalidateQueries({queryKey:[`archives`]}),n(`Deleted "${r}" from ${e.affected} archive${e.affected===1?``:`s`}`),m(null)},onError:e=>{n(e.message||`Failed to delete tag`,`error`)}}),C=e=>{u(e.name),f(e.name),m(null)},w=()=>{u(null),f(``)},T=()=>{if(!o||!d.trim())return;let e=d.trim();if(e===o){w();return}b.mutate({oldName:o,newName:e})},E=e=>{e.key===`Enter`?(e.preventDefault(),T()):e.key===`Escape`&&(e.preventDefault(),w())},D=e=>{m(e),u(null)},O=()=>{p&&x.mutate(p)},k=v?.filter(e=>e.name.toLowerCase().includes(i.toLowerCase())).sort((e,t)=>g===`count`&&t.count-e.count||e.name.localeCompare(t.name)),ee=v?.reduce((e,t)=>e+t.count,0)||0;return(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,Z.jsx)(B,{className:`w-full max-w-lg max-h-[80vh] flex flex-col`,children:(0,Z.jsxs)(z,{className:`p-0 flex flex-col min-h-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary flex-shrink-0`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Re,{className:`w-5 h-5 text-bambu-green`}),(0,Z.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:`Manage Tags`})]}),(0,Z.jsx)(`button`,{onClick:e,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsxs)(`div`,{className:`p-4 border-b border-bambu-dark-tertiary flex-shrink-0`,children:[(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsxs)(`div`,{className:`relative flex-1`,children:[(0,Z.jsx)(pe,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,Z.jsx)(`input`,{type:`text`,placeholder:`Search tags...`,className:`w-full pl-9 pr-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white text-sm focus:border-bambu-green focus:outline-none`,value:i,onChange:e=>a(e.target.value)})]}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white text-sm focus:border-bambu-green focus:outline-none`,value:g,onChange:e=>_(e.target.value),children:[(0,Z.jsx)(`option`,{value:`count`,children:`Sort by Count`}),(0,Z.jsx)(`option`,{value:`name`,children:`Sort by Name`})]})]}),v&&(0,Z.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-2`,children:[v.length,` tag`,v.length===1?``:`s`,` across `,ee,` usage`,ee===1?``:`s`]})]}),(0,Z.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 p-4`,children:y?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,Z.jsx)(P,{className:`w-6 h-6 animate-spin text-bambu-gray`})}):k?.length?(0,Z.jsx)(`div`,{className:`space-y-2`,children:k.map(e=>(0,Z.jsx)(`div`,{className:`flex items-center gap-2 p-2 rounded-lg bg-bambu-dark hover:bg-bambu-dark-tertiary transition-colors group`,children:o===e.name?(0,Z.jsxs)(`div`,{className:`flex-1 flex items-center gap-2`,children:[(0,Z.jsx)(`input`,{type:`text`,className:`flex-1 px-2 py-1 bg-bambu-dark-tertiary border border-bambu-green rounded text-white text-sm focus:outline-none`,value:d,onChange:e=>f(e.target.value),onKeyDown:E,autoFocus:!0}),(0,Z.jsx)(V,{size:`sm`,variant:`primary`,onClick:T,disabled:!d.trim()||b.isPending,className:`p-1.5`,children:b.isPending?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsx)(h,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{size:`sm`,variant:`ghost`,onClick:w,className:`p-1.5`,children:(0,Z.jsx)(L,{className:`w-4 h-4`})})]}):p===e.name?(0,Z.jsxs)(`div`,{className:`flex-1 flex items-center gap-2`,children:[(0,Z.jsx)(I,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,Z.jsxs)(`span`,{className:`text-sm text-bambu-gray-light flex-1`,children:[`Delete "`,e.name,`" from `,e.count,` archive`,e.count===1?``:`s`,`?`]}),(0,Z.jsx)(V,{size:`sm`,variant:`danger`,onClick:O,disabled:x.isPending,className:`p-1.5`,children:x.isPending?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsx)(U,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{size:`sm`,variant:`ghost`,onClick:()=>m(null),className:`p-1.5`,children:(0,Z.jsx)(L,{className:`w-4 h-4`})})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Re,{className:`w-4 h-4 text-bambu-gray flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`text-white flex-1 truncate`,children:e.name}),(0,Z.jsx)(`span`,{className:`px-2 py-0.5 rounded-full bg-bambu-dark-tertiary text-bambu-gray text-xs`,children:e.count}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 can-hover:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity`,children:[(0,Z.jsx)(`button`,{onClick:()=>C(e),className:`p-1.5 rounded hover:bg-bambu-dark text-bambu-gray hover:text-white transition-colors`,title:`Rename tag`,children:(0,Z.jsx)(xe,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{onClick:()=>D(e.name),className:`p-1.5 rounded hover:bg-bambu-dark text-bambu-gray hover:text-red-700 dark:hover:text-red-400 transition-colors`,title:`Delete tag`,children:(0,Z.jsx)(U,{className:`w-4 h-4`})})]})]})},e.name))}):(0,Z.jsx)(`div`,{className:`text-center py-8 text-bambu-gray`,children:i?`No tags match your search`:`No tags found`})}),(0,Z.jsx)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary flex-shrink-0`,children:(0,Z.jsx)(V,{variant:`secondary`,onClick:e,className:`flex-1`,children:`Close`})})]})})})}var Kt=`bambuddy-printlog-columns`,qt={date:`archives.log.date`,print_name:`archives.log.printName`,printer:`archives.log.printer`,user:`archives.log.user`,status:`archives.log.status`,duration:`archives.log.duration`,completed_at:`archives.log.completedAt`,filament:`archives.log.filament`,filament_used:`archives.log.filamentUsed`,cost:`archives.log.cost`,energy:`archives.log.energy`,energy_cost:`archives.log.energyCost`,wear_cost:`archives.log.wearCost`},Jt=[{id:`date`,visible:!0},{id:`print_name`,visible:!0},{id:`printer`,visible:!0},{id:`user`,visible:!0},{id:`status`,visible:!0},{id:`duration`,visible:!0},{id:`filament`,visible:!0},{id:`filament_used`,visible:!0},{id:`completed_at`,visible:!1},{id:`cost`,visible:!1},{id:`energy`,visible:!1},{id:`energy_cost`,visible:!1},{id:`wear_cost`,visible:!1}];function Yt(){try{let e=localStorage.getItem(Kt);if(e){let t=JSON.parse(e),n=new Set(Object.keys(qt)),r=new Set(t.map(e=>e.id)),i=t.filter(e=>n.has(e.id)).map(e=>({id:e.id,visible:!!e.visible})),a=Jt.filter(e=>!r.has(e.id));if(i.length>0)return[...i,...a]}}catch{}return Jt.map(e=>({...e}))}var Xt=`bambuddy-printlog-sort`,Zt=new Set(Object.keys(qt)),$={column:`date`,direction:`desc`};function Qt(){try{let e=localStorage.getItem(Xt);if(e){let t=JSON.parse(e);if(Zt.has(t?.column)&&(t.direction===`asc`||t.direction===`desc`))return t}}catch{}return{...$}}function $t(e){try{localStorage.setItem(Xt,JSON.stringify(e))}catch{}}function en(e){try{localStorage.setItem(Kt,JSON.stringify(e.map(e=>({id:e.id,visible:e.visible}))))}catch{}}function tn(e){let t=e.filename;if(t){let e=t.toLowerCase();if(e.endsWith(`.gcode`)||e.includes(`.gcode.`))return!0}return!!(e.total_layers||e.print_time_seconds)}async function nn(e,t,n,i){try{if(n===`source`){let{token:n}=await r.createSourceSlicerToken(e),a=r.getSourceSlicerDownloadUrl(e,n,t);dt(`${window.location.origin}${a}`,i)}else{let{token:n}=await r.createArchiveSlicerToken(e),a=r.getArchiveSlicerDownloadUrl(e,n,t);dt(`${window.location.origin}${a}`,i)}}catch{let a=n===`source`?r.getSource3mfForSlicer(e,t):r.getArchiveForSlicer(e,t);dt(`${window.location.origin}${a}`,i)}}function rn({archive:e,printerName:t,printerMap:n,isSelected:i,onSelect:a,selectionMode:o,projects:u,isHighlighted:d,timeFormat:f=`system`,preferredSlicer:m=`bambu_studio`,useSlicerApi:h=!1,currency:g,t:_,onNavigateToArchive:v}){d&&console.log(`ArchiveCard isHighlighted=true for archive:`,e.id);let y=s(),{showToast:b}=S(),{hasPermission:x,canModify:C}=st(),E=Ue(),k=(0,X.useMemo)(()=>{let t=e.extra_data?.slicer_ams_mapping;if(!(!t||!Array.isArray(t.mapping)||t.printer_id==null))return n.get(t.printer_id)},[e.extra_data,n]),[ee,A]=(0,X.useState)(!1),[M,N]=(0,X.useState)(!1),[re,se]=(0,X.useState)(!1),[ce,F]=(0,X.useState)(!1),[ue,pe]=(0,X.useState)(!1),[me,I]=(0,X.useState)(!1),R=c({queryKey:[`archive`,e.id,`delete-impact`],queryFn:()=>r.getArchiveDeleteImpact(e.id),enabled:ue,staleTime:0}),[ve,H]=(0,X.useState)(!1),[be,we]=(0,X.useState)(!1),[ke,je]=(0,X.useState)(!1),[Re,ze]=(0,X.useState)(!1),[He,We]=(0,X.useState)(!1),[G,Ge]=(0,X.useState)([]),[et,ct]=(0,X.useState)(!1),[dt,ft]=(0,X.useState)(!1),[pt,mt]=(0,X.useState)(!1),[ht,gt]=(0,X.useState)(!1),[_t,bt]=(0,X.useState)(!1),[xt,Y]=(0,X.useState)(!1),[St,Ct]=(0,X.useState)(null),[wt,Tt]=(0,X.useState)(null),[Dt,Ot]=(0,X.useState)(!1),[kt,At]=(0,X.useState)(null),jt=(0,X.useRef)(null),Mt=(0,X.useRef)(null),Nt=(0,X.useRef)(null),{data:Ft}=c({queryKey:[`archive-plates`,e.id],queryFn:()=>r.getArchivePlates(e.id),enabled:Dt,staleTime:300*1e3}),It=e.duplicate_sequence??0,Lt=Ie(e.user_verdict_source),Bt=e.original_archive_id??null,Vt=Ft?.plates??[],Ht=Ft?.is_multi_plate??!1,Ut=wt??0,Wt=async()=>{try{let t=await r.getArchivePlates(e.id);if(t.has_gcode===!1){b(_(`archives.platePicker.noGcode`),`info`);return}if(t.is_multi_plate&&t.plates.length>1){At(t.plates);return}}catch{}E(`/gcode-viewer?archive=${e.id}`)},Gt=l({mutationFn:()=>r.deleteArchiveTimelapse(e.id),onSuccess:()=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.timelapseRemoved`))},onError:e=>{b(e.message||_(`archives.toast.failedRemoveTimelapse`),`error`)}}),Kt=l({mutationFn:t=>r.uploadArchiveTimelapse(e.id,t),onSuccess:e=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.timelapseUploaded`,{filename:e.filename}))},onError:e=>{b(e.message||_(`archives.toast.failedUploadTimelapse`),`error`)}}),qt=l({mutationFn:t=>r.uploadSource3mf(e.id,t),onSuccess:e=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.source3mfAttached`,{filename:e.filename}))},onError:e=>{b(e.message||_(`archives.toast.failedUploadSource3mf`),`error`)}}),Jt=l({mutationFn:()=>r.deleteSource3mf(e.id),onSuccess:()=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.source3mfRemoved`))},onError:e=>{b(e.message||_(`archives.toast.failedRemoveSource3mf`),`error`)}}),Yt=l({mutationFn:t=>r.uploadF3d(e.id,t),onSuccess:e=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.f3dAttached`,{filename:e.filename}))},onError:e=>{b(e.message||_(`archives.toast.failedUploadF3d`),`error`)}}),Xt=l({mutationFn:()=>r.deleteF3d(e.id),onSuccess:()=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.f3dRemoved`))},onError:e=>{b(e.message||_(`archives.toast.failedRemoveF3d`),`error`)}}),Zt=l({mutationFn:()=>r.scanArchiveTimelapse(e.id),onSuccess:e=>{e.status===`attached`?(y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.timelapseAttached`,{filename:e.filename}))):e.status===`exists`?b(_(`archives.toast.timelapseAlreadyAttached`)):e.status===`not_found`&&e.available_files&&e.available_files.length>0?(Ge(e.available_files),We(!0)):b(e.message||_(`archives.toast.noMatchingTimelapse`),`warning`)},onError:e=>{b(e.message||_(`archives.toast.failedScanTimelapse`),`error`)}}),$=l({mutationFn:t=>r.selectArchiveTimelapse(e.id,t),onSuccess:e=>{y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.timelapseAttached`,{filename:e.filename})),We(!1),Ge([])},onError:e=>{b(e.message||_(`archives.toast.failedAttachTimelapse`),`error`)}}),Qt=l({mutationFn:t=>r.deleteArchive(e.id,t),onSuccess:()=>{Oe(y),b(_(`archives.toast.archiveDeleted`))},onError:()=>{b(_(`archives.toast.failedDeleteArchive`),`error`)}}),$t=l({mutationFn:()=>r.toggleFavorite(e.id),onSuccess:e=>{y.invalidateQueries({queryKey:[`archives`]}),b(e.is_favorite?_(`archives.toast.addedToFavorites`):_(`archives.toast.removedFromFavorites`))}}),{data:en}=c({queryKey:[`archive-folders`,e.id],queryFn:()=>r.getLibraryFoldersByArchive(e.id)}),rn=l({mutationFn:t=>r.updateArchive(e.id,{project_id:t}),onSuccess:()=>{Oe(y),b(_(`archives.toast.projectUpdated`))},onError:()=>{b(_(`archives.toast.failedUpdateProject`),`error`)}}),an=e=>{e.preventDefault(),Ct({x:e.clientX,y:e.clientY})},on=[...tn(e)?[{label:_(`common.print`),icon:(0,Z.jsx)(De,{className:`w-4 h-4`}),onClick:()=>A(!0),disabled:!e.file_path||!x(`queue:create`)||!C(`archives`,`reprint`,e.created_by_id),title:e.file_path?x(`queue:create`)?C(`archives`,`reprint`,e.created_by_id)?void 0:_(`archives.permission.noReprint`):_(`archives.permission.noAddToQueue`):_(`archives.card.noFileForReprint`)},{label:_(`archives.menu.openInBambuStudio`),icon:(0,Z.jsx)(Ce,{className:`w-4 h-4`}),onClick:()=>{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,m)},disabled:!e.file_path,title:e.file_path?void 0:_(`archives.card.noFileForReprint`)}]:[{label:_(`archives.menu.slice`),icon:h?(0,Z.jsx)(T,{className:`w-4 h-4`}):(0,Z.jsx)(Ce,{className:`w-4 h-4`}),onClick:()=>{if(h)se(!0);else{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,m)}}},...h?[{label:_(`library.runWithPipeline.actionLabel`),icon:(0,Z.jsx)(de,{className:`w-4 h-4`}),onClick:()=>F(!0),disabled:!x(`pipelines:run`),title:x(`pipelines:run`)?void 0:_(`library.runWithPipeline.noPermission`)}]:[]],{label:e.external_url?_(`archives.menu.externalLink`):_(`archives.menu.viewOnMakerWorld`),icon:(0,Z.jsx)(Ye,{className:`w-4 h-4`}),onClick:()=>{let t=e.external_url||e.makerworld_url;t&&window.open(t,`_blank`)},disabled:!e.external_url&&!e.makerworld_url},...e.status===`completed`?[{label:_(`archives.menu.confirmOutcome`),icon:e.user_verdict===`reject`?(0,Z.jsx)(Ne,{className:`w-4 h-4`}):(0,Z.jsx)(Qe,{className:`w-4 h-4`}),onClick:()=>N(!0),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:_(`archives.menu.preview3d`),icon:(0,Z.jsx)(p,{className:`w-4 h-4`}),onClick:()=>{Wt()}},{label:_(`archives.menu.viewTimelapse`),icon:(0,Z.jsx)(j,{className:`w-4 h-4`}),onClick:()=>je(!0),disabled:!e.timelapse_path},{label:_(`archives.media.download`),icon:(0,Z.jsx)(J,{className:`w-4 h-4`}),onClick:()=>ze(!0),disabled:!e.timelapse_path&&(!x(`printers:files`)||!e.printer_id||!e.started_at),title:!e.timelapse_path&&!x(`printers:files`)?_(`printers.permission.noFiles`):void 0},{label:_(`archives.menu.scanForTimelapse`),icon:(0,Z.jsx)(ne,{className:`w-4 h-4`}),onClick:()=>Zt.mutate(),disabled:!e.printer_id||!!e.timelapse_path||Zt.isPending||!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},{label:_(`archives.menu.uploadTimelapse`),icon:(0,Z.jsx)($e,{className:`w-4 h-4`}),onClick:()=>Nt.current?.click(),disabled:!!e.timelapse_path||!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},...e.timelapse_path?[{label:_(`archives.menu.removeTimelapse`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>Y(!0),danger:!0,disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:e.source_3mf_path?_(`archives.menu.downloadSource3mf`):_(`archives.menu.uploadSource3mf`),icon:(0,Z.jsx)(vt,{className:`w-4 h-4`}),onClick:()=>{e.source_3mf_path?r.downloadSource3mf(e.id).catch(e=>{console.error(`Source 3MF download failed:`,e)}):jt.current?.click()},disabled:!e.source_3mf_path&&!C(`archives`,`update`,e.created_by_id),title:!e.source_3mf_path&&!C(`archives`,`update`,e.created_by_id)?_(`archives.permission.noUploadFiles`):void 0},...e.source_3mf_path?[{label:_(`archives.menu.replaceSource3mf`),icon:(0,Z.jsx)($e,{className:`w-4 h-4`}),onClick:()=>jt.current?.click(),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},{label:_(`archives.menu.removeSource3mf`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>gt(!0),danger:!0,disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)}]:[],{label:e.f3d_path?_(`archives.menu.replaceF3d`):_(`archives.menu.uploadF3d`),icon:(0,Z.jsx)(p,{className:`w-4 h-4`}),onClick:()=>Mt.current?.click(),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},...e.f3d_path?[{label:_(`archives.menu.downloadF3d`),icon:(0,Z.jsx)(q,{className:`w-4 h-4`}),onClick:()=>{r.downloadF3d(e.id).catch(e=>{console.error(`F3D download failed:`,e)})}},{label:_(`archives.menu.removeF3d`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>bt(!0),danger:!0,disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:_(`archives.menu.download`),icon:(0,Z.jsx)(q,{className:`w-4 h-4`}),onClick:()=>{r.downloadArchive(e.id,`${e.print_name||e.filename}.3mf`).catch(e=>{console.error(`Archive download failed:`,e)})},disabled:!x(`archives:read`),title:x(`archives:read`)?void 0:_(`archives.permission.noDownload`)},{label:_(`archives.menu.copyDownloadLink`),icon:(0,Z.jsx)(D,{className:`w-4 h-4`}),onClick:()=>{let t=`${window.location.origin}${r.getArchiveDownload(e.id)}`;navigator.clipboard.writeText(t).then(()=>{b(_(`archives.toast.linkCopied`))}).catch(()=>{b(_(`archives.toast.failedCopyLink`),`error`)})},disabled:!x(`archives:read`),title:x(`archives:read`)?void 0:_(`archives.permission.noCopyLink`)},{label:_(`archives.menu.qrCode`),icon:(0,Z.jsx)(fe,{className:`w-4 h-4`}),onClick:()=>ct(!0)},{label:e.photos?.length?_(`archives.menu.viewPhotosCount`,{count:e.photos.length}):_(`archives.menu.viewPhotos`),icon:(0,Z.jsx)(Le,{className:`w-4 h-4`}),onClick:()=>ft(!0),disabled:!e.photos?.length},{label:_(`archives.menu.projectPage`),icon:(0,Z.jsx)(rt,{className:`w-4 h-4`}),onClick:()=>mt(!0)},{label:``,divider:!0,onClick:()=>{}},{label:e.is_favorite?_(`archives.menu.removeFromFavorites`):_(`archives.menu.addToFavorites`),icon:(0,Z.jsx)(Ee,{className:`w-4 h-4 ${e.is_favorite?`fill-yellow-400 text-yellow-400`:C(`archives`,`update`,e.created_by_id)?`group-hover:text-yellow-400`:``}`}),onClick:()=>$t.mutate(),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},{label:_(`archives.menu.edit`),icon:(0,Z.jsx)(xe,{className:`w-4 h-4`}),onClick:()=>H(!0),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`)},{label:_(`archives.menu.printLog`),icon:(0,Z.jsx)(oe,{className:`w-4 h-4`}),onClick:()=>we(!0)},...e.project_id&&e.project_name?[{label:_(`archives.menu.goToProject`,{name:e.project_name}),icon:(0,Z.jsx)(ot,{className:`w-4 h-4 text-bambu-green`}),onClick:()=>window.location.href=`/projects`}]:[],{label:_(`archives.menu.addToProject`),icon:(0,Z.jsx)(ot,{className:`w-4 h-4`}),onClick:()=>{},disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?void 0:_(`archives.permission.noUpdateArchives`),submenuSearchPlaceholder:Te(u??[],e.project_id).length>5?_(`archives.menu.searchProjects`):void 0,submenu:(()=>{let t=[];if(e.project_id&&t.push({label:_(`archives.menu.removeFromProject`),icon:(0,Z.jsx)(L,{className:`w-4 h-4`}),onClick:()=>rn.mutate(null),disabled:!C(`archives`,`update`,e.created_by_id)}),!u)t.push({label:_(`archives.menu.loading`),icon:(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),onClick:()=>{},disabled:!0});else{let n=Te(u,e.project_id).sort((e,t)=>e.name.localeCompare(t.name));n.length===0?t.push({label:_(`archives.menu.noProjectsAvailable`),icon:(0,Z.jsx)(ot,{className:`w-4 h-4 opacity-50`}),onClick:()=>{},disabled:!0}):n.forEach(n=>{t.push({label:n.name,icon:(0,Z.jsx)(`div`,{className:`w-3 h-3 rounded-full flex-shrink-0`,style:{backgroundColor:n.color||`#888`}}),onClick:()=>rn.mutate(n.id),disabled:e.project_id===n.id||!C(`archives`,`update`,e.created_by_id)})})}return t})()},{label:_(i?`archives.menu.deselect`:`archives.menu.select`),icon:i?(0,Z.jsx)(Be,{className:`w-4 h-4`}):(0,Z.jsx)(Ae,{className:`w-4 h-4`}),onClick:()=>a(e.id)},{label:``,divider:!0,onClick:()=>{}},{label:_(`archives.menu.delete`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>pe(!0),danger:!0,disabled:!C(`archives`,`delete`,e.created_by_id),title:C(`archives`,`delete`,e.created_by_id)?void 0:_(`archives.permission.noDelete`)}];return(0,Z.jsxs)(B,{"data-archive-id":e.id,className:`relative flex flex-col group ${i?`ring-2 ring-bambu-green`:``} ${o?`cursor-pointer`:``}`,style:d?{outline:`4px solid #facc15`,outlineOffset:`2px`}:void 0,onContextMenu:an,onClick:o?()=>a(e.id):void 0,children:[o&&(0,Z.jsx)(`button`,{className:`absolute top-2 left-2 z-10 p-1 rounded bg-black/50 hover:bg-black/70 transition-colors`,onClick:t=>{t.stopPropagation(),a(e.id)},children:i?(0,Z.jsx)(Be,{className:`w-5 h-5 text-bambu-green`}):(0,Z.jsx)(Ae,{className:`w-5 h-5 text-white`})}),(0,Z.jsxs)(`div`,{className:`aspect-video bg-bambu-dark relative flex-shrink-0 overflow-hidden rounded-t-xl`,onMouseEnter:()=>Ot(!0),onMouseLeave:()=>Ot(!1),children:[e.thumbnail_path?(0,Z.jsx)(`img`,{src:wt!==null&&Vt.length>0?r.getArchivePlateThumbnail(e.id,Vt[Ut]?.index??0):r.getArchiveThumbnail(e.id),loading:`lazy`,alt:e.print_name||e.filename,className:`w-full h-full object-cover`}):(0,Z.jsx)(`div`,{className:`w-full h-full flex items-center justify-center`,children:(0,Z.jsx)(tt,{className:`w-12 h-12 text-bambu-dark-tertiary`})}),Ht&&Vt.length>1&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`button`,{className:`absolute left-1 top-1/2 -translate-y-1/2 p-1 rounded-full bg-black/60 hover:bg-black/80 transition-all can-hover:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,onClick:e=>{e.stopPropagation(),Tt(e=>{let t=e??0;return t>0?t-1:Vt.length-1})},title:_(`archives.card.previousPlate`),children:(0,Z.jsx)(Ze,{className:`w-4 h-4 text-white`})}),(0,Z.jsx)(`button`,{className:`absolute right-1 top-1/2 -translate-y-1/2 p-1 rounded-full bg-black/60 hover:bg-black/80 transition-all can-hover:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,onClick:e=>{e.stopPropagation(),Tt(e=>{let t=e??0;return t<Vt.length-1?t+1:0})},title:_(`archives.card.nextPlate`),children:(0,Z.jsx)(Me,{className:`w-4 h-4 text-white`})}),(0,Z.jsx)(`div`,{className:`absolute bottom-1 left-1/2 -translate-x-1/2 flex gap-1 px-2 py-1 rounded-full bg-black/50 transition-all can-hover:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,children:Vt.map((e,t)=>(0,Z.jsx)(`button`,{className:`w-2 h-2 rounded-full transition-colors ${t===Ut?`bg-bambu-green`:`bg-white/50 hover:bg-white/80`}`,onClick:e=>{e.stopPropagation(),Tt(t)},title:e.name||_(`archives.card.plateNumber`,{index:e.index})},e.index))})]}),(0,Z.jsx)(`button`,{className:`absolute top-2 left-2 p-1.5 rounded bg-black/50 hover:bg-black/70 transition-all can-hover:opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 ${o?`left-10`:``}`,onClick:e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();Ct({x:t.left,y:t.bottom+4})},title:_(`archives.card.moreOptions`),children:(0,Z.jsx)(O,{className:`w-5 h-5 text-white`})}),(0,Z.jsx)(`button`,{className:`absolute top-2 right-2 p-1 rounded transition-colors ${C(`archives`,`update`,e.created_by_id)?`bg-black/50 hover:bg-black/70`:`bg-black/30 cursor-not-allowed`}`,onClick:t=>{t.stopPropagation(),C(`archives`,`update`,e.created_by_id)&&$t.mutate()},disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?e.is_favorite?_(`archives.card.removeFromFavorites`):_(`archives.card.addToFavorites`):_(`archives.permission.noUpdateArchives`),children:(0,Z.jsx)(Ee,{className:`w-5 h-5 ${e.is_favorite?`text-yellow-400 fill-yellow-400`:`text-white`} ${C(`archives`,`update`,e.created_by_id)?``:`opacity-50`}`})}),(e.status===`failed`||e.status===`aborted`)&&(0,Z.jsx)(`div`,{className:`absolute top-2 left-12 px-2 py-1 rounded text-xs bg-status-error/80 text-white`,children:e.status===`aborted`?_(`archives.card.cancelled`):_(`archives.card.failed`)}),e.status===`completed`&&e.confirm_requested&&e.user_verdict==null&&(0,Z.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),N(!0)},disabled:!C(`archives`,`update`,e.created_by_id),className:`absolute top-2 left-12 px-2 py-1 rounded text-xs bg-amber-500/90 enabled:hover:bg-amber-500 text-black flex items-center gap-1 transition-colors enabled:cursor-pointer`,title:C(`archives`,`update`,e.created_by_id)?_(`archives.card.confirmPendingTitle`):_(`archives.permission.noUpdateArchives`),children:[(0,Z.jsx)(Qe,{className:`w-3 h-3`}),_(`archives.card.confirmPending`)]}),e.status===`completed`&&e.user_verdict===`reject`&&(0,Z.jsxs)(`div`,{className:`absolute top-2 left-12 px-2 py-1 rounded text-xs bg-status-error/80 text-white flex items-center gap-1`,title:`${_(`archives.card.rejectedTitle`)}${Lt?` — ${_(Lt)}`:``}`,children:[(0,Z.jsx)(Ne,{className:`w-3 h-3`}),_(`archives.card.rejected`)]}),e.status===`completed`&&e.user_verdict===`good`&&(0,Z.jsxs)(`div`,{className:`absolute top-2 left-12 px-2 py-1 rounded text-xs bg-bambu-green/80 text-white flex items-center gap-1`,title:`${_(`archives.card.confirmedGoodTitle`)}${Lt?` — ${_(Lt)}`:``}`,children:[(0,Z.jsx)(Qe,{className:`w-3 h-3`}),_(`archives.card.confirmedGood`)]}),e.duplicate_count>0&&It>0&&Bt&&(0,Z.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),v?.(Bt)},className:`absolute top-2 right-12 px-2 py-1 rounded text-xs bg-purple-500/80 hover:bg-purple-600/90 text-white flex items-center gap-1 transition-colors cursor-pointer`,title:_(`archives.viewOriginalPrint`,{id:Bt}),children:[(0,Z.jsx)(D,{className:`w-3 h-3`}),`#`,It]}),e.duplicate_count>0&&It===0&&(0,Z.jsxs)(`span`,{className:`absolute top-2 right-12 px-2 py-1 rounded text-xs bg-purple-500/80 text-white flex items-center gap-1`,title:`${e.duplicate_count} reprint${e.duplicate_count===1?``:`s`}`,children:[(0,Z.jsx)(yt,{className:`w-3 h-3`}),`+`,e.duplicate_count]}),e.source_3mf_path&&(0,Z.jsx)(`button`,{className:`absolute bottom-2 left-2 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:t=>{t.stopPropagation();let n=(e.print_name||e.filename||`source`).replace(/\.gcode\.3mf$/i,``)+`_source`;nn(e.id,n,`source`,m)},title:_(`archives.card.openSource3mf`),children:(0,Z.jsx)(vt,{className:`w-4 h-4 text-orange-400`})}),e.f3d_path&&(0,Z.jsx)(`button`,{className:`absolute bottom-2 ${e.source_3mf_path?`left-12`:`left-2`} p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:t=>{t.stopPropagation(),r.downloadF3d(e.id).catch(e=>{console.error(`F3D download failed:`,e)})},title:_(`archives.card.downloadF3d`),children:(0,Z.jsx)(p,{className:`w-4 h-4 text-cyan-400`})}),(0,Z.jsx)(`button`,{className:`absolute bottom-2 right-2 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>{e.stopPropagation(),Wt()},title:_(`archives.card.preview3d`),children:(0,Z.jsx)(Je,{className:`w-4 h-4 text-white`})}),e.timelapse_path&&(0,Z.jsx)(`button`,{className:`absolute bottom-2 right-12 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>{e.stopPropagation(),je(!0)},title:_(`archives.card.viewTimelapse`),children:(0,Z.jsx)(j,{className:`w-4 h-4 text-bambu-green`})}),e.photos&&e.photos.length>0&&(0,Z.jsxs)(`button`,{className:`absolute bottom-2 ${e.timelapse_path?`right-[5.5rem]`:`right-12`} p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>{e.stopPropagation(),ft(!0)},title:e.photos.length===1?_(`archives.card.viewPhoto`):_(`archives.card.viewPhotos`,{count:e.photos.length}),children:[(0,Z.jsx)(Le,{className:`w-4 h-4 text-blue-400`}),e.photos.length>1&&(0,Z.jsx)(`span`,{className:`absolute -top-1 -right-1 w-4 h-4 bg-blue-500 rounded-full text-[10px] text-white flex items-center justify-center`,children:e.photos.length})]}),en&&en.length>0&&(0,Z.jsx)(W,{to:`/files?folder=${en[0].id}`,className:`absolute bottom-2 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>e.stopPropagation(),title:_(`archives.card.openFolder`,{name:en[0].name}),style:{left:e.source_3mf_path?e.f3d_path?`5.5rem`:`3rem`:e.f3d_path?`3rem`:`0.5rem`},children:(0,Z.jsx)(nt,{className:`w-4 h-4 text-yellow-400`})})]}),(0,Z.jsxs)(z,{className:`p-4 flex-1 flex flex-col`,children:[(0,Z.jsxs)(`p`,{className:`text-[10px] text-bambu-gray/70 mb-1`,children:[`#`,e.id]}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-1`,children:[(0,Z.jsxs)(`h3`,{className:`min-w-0 font-medium text-white truncate`,children:[e.print_name||e.filename,e.plate_id!=null&&e.plate_id>1&&` — ${_(`printers.plateNumber`,{number:e.plate_id})}`]}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,className:`p-1 sm:p-1.5 shrink-0`,onClick:()=>H(!0),disabled:!C(`archives`,`update`,e.created_by_id),title:C(`archives`,`update`,e.created_by_id)?_(`archives.card.edit`):_(`archives.card.noPermissionEdit`),children:(0,Z.jsx)(xe,{className:`w-3 h-3 sm:w-4 sm:h-4`})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 mb-3 flex-wrap`,children:[(0,Z.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:t}),(()=>{let t=Ve(e.bed_type);return t?(0,Z.jsx)(`img`,{src:t.icon,alt:t.label,title:t.label,className:`w-4 h-4 flex-shrink-0`}):null})(),(0,Z.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${tn(e)?`bg-bambu-green/20 text-bambu-green`:`bg-orange-100 dark:bg-orange-500/20 text-orange-700 dark:text-orange-400`}`,title:tn(e)?_(`archives.card.slicedFile`):_(`archives.card.sourceFile`),children:tn(e)?_(`archives.card.gcode`):_(`archives.card.source`)}),e.content_hash&&(0,Z.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded font-mono bg-bambu-dark-tertiary/50 text-bambu-gray-light opacity-0 transition-opacity duration-150 group-hover:opacity-100`,title:`SHA256: ${e.content_hash}`,children:e.content_hash.slice(0,8).toUpperCase()}),e.project_name&&(0,Z.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded-full truncate max-w-[120px]`,style:{backgroundColor:`${u?.find(t=>t.id===e.project_id)?.color||`#6b7280`}20`,color:u?.find(t=>t.id===e.project_id)?.color||`#6b7280`},title:_(`archives.card.project`,{name:e.project_name}),children:e.project_name}),e.run_count>1&&(0,Z.jsx)(`button`,{className:`text-[10px] px-1.5 py-0.5 rounded font-medium bg-bambu-orange/20 text-bambu-orange hover:bg-bambu-orange/30 transition-colors cursor-pointer`,onClick:e=>{e.stopPropagation(),we(!0)},title:_(`archives.card.runsBadgeTitle`,{count:e.run_count,successful:e.successful_run_count,failed:e.failed_run_count}),children:_(`archives.card.runsBadge`,{count:e.run_count})})]}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs mb-4 min-h-[48px]`,children:[(e.print_time_seconds||e.actual_time_seconds)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:e.time_accuracy?`Estimated: ${ye(e.print_time_seconds||0)}\nActual: ${ye(e.actual_time_seconds||0)}\nAccuracy: ${e.time_accuracy.toFixed(0)}%`:e.actual_time_seconds?`Actual: ${ye(e.actual_time_seconds)}`:`Estimated: ${ye(e.print_time_seconds||0)}`,children:[(0,Z.jsx)(Pe,{className:`w-3 h-3`}),ye(e.actual_time_seconds||e.print_time_seconds||0),e.time_accuracy&&(0,Z.jsxs)(`span`,{className:`text-[10px] px-1 rounded ${e.time_accuracy>=95&&e.time_accuracy<=105?`bg-bambu-green/20 text-bambu-green`:e.time_accuracy>105?`bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-400`:`bg-orange-100 dark:bg-orange-500/20 text-orange-700 dark:text-orange-400`}`,children:[e.time_accuracy>100?`+`:``,(e.time_accuracy-100).toFixed(0),`%`]})]}),e.filament_used_grams&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,children:[(0,Z.jsx)(le,{className:`w-3 h-3`}),e.filament_used_grams.toFixed(1),`g`]}),(e.cost!=null||e.energy_cost!=null||e.wear_cost!=null)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 text-bambu-gray`,children:[e.cost!=null&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:e.status===`printing`?_(`archives.card.costEstimate`):void 0,"data-testid":`archive-cost`,children:[(0,Z.jsx)(w,{className:`w-3 h-3`}),e.status===`printing`&&`~`,g,e.cost.toFixed(2)]}),e.energy_cost!=null&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:`${_(`stats.energyUsed`)}: ${e.energy_kwh?.toFixed(3)||`N/A`} kWh`,children:[(0,Z.jsx)(qe,{className:`w-3 h-3`}),g,e.energy_cost.toFixed(2)]}),e.wear_cost!=null&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:_(`archives.card.wearCost`),children:[(0,Z.jsx)(it,{className:`w-3 h-3`}),g,e.wear_cost.toFixed(2)]})]}),(e.layer_height||e.total_layers)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,children:[(0,Z.jsx)(Je,{className:`w-3 h-3`}),e.total_layers&&(0,Z.jsx)(`span`,{children:e.total_layers===1?_(`archives.card.layer`,{count:e.total_layers}):_(`archives.card.layers`,{count:e.total_layers})}),e.total_layers&&e.layer_height&&(0,Z.jsx)(`span`,{className:`text-bambu-gray/50`,children:`·`}),e.layer_height&&(0,Z.jsxs)(`span`,{children:[e.layer_height,`mm`]})]}),e.object_count!=null&&e.object_count>0&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:e.object_count===1?_(`archives.card.object`,{count:e.object_count}):_(`archives.card.objects`,{count:e.object_count}),children:[(0,Z.jsx)(p,{className:`w-3 h-3`}),e.object_count===1?_(`archives.card.object`,{count:e.object_count}):_(`archives.card.objects`,{count:e.object_count})]}),e.sliced_for_model&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:_(`archives.card.slicedFor`,{model:e.sliced_for_model}),children:[(0,Z.jsx)(De,{className:`w-3 h-3`}),e.sliced_for_model]}),e.filament_type&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 col-span-2`,children:[(0,Z.jsx)(`span`,{className:`text-bambu-gray text-xs`,children:e.filament_type}),e.filament_color&&(0,Z.jsx)(`div`,{className:`flex items-center gap-0.5 flex-wrap`,children:e.filament_color.split(`,`).map((e,t)=>(0,Z.jsx)(`div`,{className:`w-3 h-3 rounded-full border border-black/20`,style:{backgroundColor:e},title:e},t))})]})]}),k&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-green text-xs mb-3`,title:_(`archives.card.slicerAmsMappingTooltip`,{printer:k}),children:[(0,Z.jsx)(Se,{className:`w-3.5 h-3.5`}),_(`archives.card.slicerAmsMapping`,{printer:k})]}),(e.tags||e.notes)&&(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mb-3`,children:[e.notes&&(0,Z.jsx)(`div`,{className:`flex items-center gap-1 px-1.5 py-0.5 bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-400 rounded text-xs`,title:e.notes,children:(0,Z.jsx)(he,{className:`w-3 h-3`})}),e.tags?.split(`,`).map((e,t)=>(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 bg-bambu-dark-tertiary text-bambu-gray-light rounded text-xs`,children:e.trim()},t))]}),(0,Z.jsx)(`div`,{className:`flex-1`}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-bambu-gray border-t border-bambu-dark-tertiary pt-3`,children:[(0,Z.jsx)(`span`,{children:_e(e.created_at,f)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.created_by_username&&(0,Z.jsxs)(`span`,{className:`flex items-center gap-1`,title:_(`archives.card.uploadedBy`,{name:e.created_by_username}),children:[(0,Z.jsx)(Fe,{className:`w-3 h-3`}),e.created_by_username]}),(0,Z.jsx)(`span`,{children:ge(e.file_size)})]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-1 mt-3`,children:[tn(e)?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(V,{variant:`primary`,size:`sm`,className:`flex-1 min-w-0 overflow-hidden`,onClick:()=>A(!0),disabled:!e.file_path||!x(`queue:create`)||!C(`archives`,`reprint`,e.created_by_id),title:e.file_path?x(`queue:create`)?C(`archives`,`reprint`,e.created_by_id)?void 0:_(`archives.card.noPermissionReprint`):_(`archives.permission.noAddToQueue`):_(`archives.card.noFileForReprint`),children:[(0,Z.jsx)(De,{className:`w-3 h-3 flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`hidden xl:inline truncate`,children:_(`common.print`)})]}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,m)},title:_(`archives.card.openInBambuStudio`),children:(0,Z.jsx)(Ce,{className:`w-3 h-3 sm:w-4 sm:h-4`})})]}):(0,Z.jsxs)(V,{variant:`primary`,size:`sm`,className:`flex-1 min-w-0 overflow-hidden`,onClick:()=>{if(h)se(!0);else{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,m)}},title:_(h?`slice.title`:`archives.card.openInBambuStudioToSlice`),children:[h?(0,Z.jsx)(T,{className:`w-3 h-3 flex-shrink-0`}):(0,Z.jsx)(Ce,{className:`w-3 h-3 flex-shrink-0`}),(0,Z.jsx)(`span`,{className:`hidden xl:inline truncate`,children:_(`archives.card.slice`)})]}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>{let t=e.external_url||e.makerworld_url;t&&window.open(t,`_blank`)},disabled:!e.external_url&&!e.makerworld_url,title:e.external_url?_(`archives.card.externalLink`):e.makerworld_url?_(`archives.card.makerWorld`,{designer:e.designer||_(`archives.card.viewProject`)}):_(`archives.card.noExternalLink`),children:(0,Z.jsx)(Ye,{className:`w-3 h-3 sm:w-4 sm:h-4 ${!e.external_url&&!e.makerworld_url?`opacity-20`:``}`})}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>{r.downloadArchive(e.id,`${e.print_name||e.filename}.3mf`).catch(e=>{console.error(`Archive download failed:`,e)})},title:_(`archives.card.download`),children:(0,Z.jsx)(q,{className:`w-3 h-3 sm:w-4 sm:h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>pe(!0),disabled:!C(`archives`,`delete`,e.created_by_id),title:C(`archives`,`delete`,e.created_by_id)?_(`archives.card.delete`):_(`archives.card.noPermissionDelete`),children:(0,Z.jsx)(U,{className:`w-3 h-3 sm:w-4 sm:h-4 text-red-600 dark:text-red-400`})})]})]}),ve&&(0,Z.jsx)(Xe,{archive:e,onClose:()=>H(!1)}),be&&(0,Z.jsx)(Et,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>we(!1)}),kt&&(0,Z.jsx)(ie,{plates:kt,onSelect:t=>{At(null),E(`/gcode-viewer?archive=${e.id}&plate=${t}`)},onClose:()=>At(null)}),ee&&(0,Z.jsx)(Ke,{mode:`create`,archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>A(!1)}),M&&(0,Z.jsx)(at,{archiveId:e.id,onClose:()=>N(!1)}),re&&(0,Z.jsx)(ae,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>se(!1)}),ce&&(0,Z.jsx)(lt,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>F(!1)}),ue&&(0,Z.jsxs)(K,{title:_(`archives.modal.deleteArchive`),message:_(`archives.modal.deleteConfirm`,{name:e.print_name||e.filename}),confirmText:_(`archives.modal.deleteButton`),variant:`danger`,confirmDisabled:(R.data?.currently_printing??0)>0,onConfirm:()=>{Qt.mutate(me),pe(!1),I(!1)},onCancel:()=>{pe(!1),I(!1)},children:[(R.data?.related_queue_items??0)>0&&(0,Z.jsx)(`div`,{className:(R.data?.currently_printing??0)>0?`text-sm text-red-600 dark:text-red-400 mb-2`:`text-sm text-amber-600 dark:text-amber-400 mb-2`,children:(R.data?.currently_printing??0)>0?_(`archives.modal.deleteBlockedByPrinting`,{count:R.data.currently_printing}):_(`archives.modal.deleteQueueItemsWarning`,{count:R.data.related_queue_items})}),(0,Z.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer text-sm text-bambu-gray`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 accent-red-500`,checked:me,onChange:e=>I(e.target.checked)}),(0,Z.jsx)(`span`,{children:_(`archives.modal.deletePurgeStats`)})]})]}),ht&&(0,Z.jsx)(K,{title:_(`archives.modal.removeSource3mf`),message:_(`archives.modal.removeSource3mfConfirm`,{name:e.print_name||e.filename}),confirmText:_(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{Jt.mutate(),gt(!1)},onCancel:()=>gt(!1)}),_t&&(0,Z.jsx)(K,{title:_(`archives.modal.removeF3d`),message:_(`archives.modal.removeF3dConfirm`,{name:e.print_name||e.filename}),confirmText:_(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{Xt.mutate(),bt(!1)},onCancel:()=>bt(!1)}),xt&&(0,Z.jsx)(K,{title:_(`archives.modal.removeTimelapse`),message:_(`archives.modal.removeTimelapseConfirm`,{name:e.print_name||e.filename}),confirmText:_(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{Gt.mutate(),Y(!1)},onCancel:()=>Y(!1)}),St&&(0,Z.jsx)(te,{x:St.x,y:St.y,items:on,onClose:()=>Ct(null)}),Re&&(0,Z.jsx)(zt,{archiveId:e.id,archiveName:e.print_name||e.filename,printerName:t,onClose:()=>ze(!1)}),ke&&e.timelapse_path&&(0,Z.jsx)(Rt,{src:r.getArchiveTimelapse(e.id),title:_(`archives.modal.timelapse`,{name:e.print_name||e.filename}),downloadFilename:`${e.print_name||e.filename}_timelapse.mp4`,archiveId:e.id,onClose:()=>je(!1),onEdit:()=>{y.invalidateQueries({queryKey:[`archives`]}),je(!1)}}),He&&G.length>0&&(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,children:(0,Z.jsxs)(`div`,{className:`bg-card-dark rounded-lg max-w-lg w-full max-h-[80vh] flex flex-col`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-700`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h3`,{className:`text-lg font-semibold text-white`,children:_(`archives.modal.selectTimelapse`)}),(0,Z.jsx)(`p`,{className:`text-sm text-gray-400 mt-1`,children:_(`archives.modal.selectTimelapseDesc`)})]}),(0,Z.jsx)(`button`,{onClick:()=>{We(!1),Ge([])},className:`text-gray-400 hover:text-white p-1`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsx)(`div`,{className:`overflow-y-auto flex-1 p-2`,children:G.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>$.mutate(e.name),disabled:$.isPending,className:`w-full text-left p-3 rounded-lg hover:bg-gray-700 transition-colors flex items-center gap-3 disabled:opacity-50`,children:[(0,Z.jsx)(j,{className:`w-8 h-8 text-bambu-green flex-shrink-0`}),(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`p`,{className:`text-white font-medium truncate`,children:e.name}),(0,Z.jsxs)(`p`,{className:`text-sm text-gray-400`,children:[ge(e.size),e.mtime&&` • ${_e(e.mtime,f)}`]})]})]},e.name))}),(0,Z.jsx)(`div`,{className:`p-4 border-t border-gray-700`,children:(0,Z.jsx)(V,{variant:`secondary`,onClick:()=>{We(!1),Ge([])},className:`w-full`,children:`Cancel`})})]})}),et&&(0,Z.jsx)(Pt,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>ct(!1)}),dt&&e.photos&&e.photos.length>0&&(0,Z.jsx)(ut,{archiveId:e.id,archiveName:e.print_name||e.filename,photos:e.photos,onClose:()=>ft(!1),onDelete:async t=>{try{await r.deleteArchivePhoto(e.id,t),y.invalidateQueries({queryKey:[`archives`]}),b(_(`archives.toast.photoDeleted`))}catch{b(_(`archives.toast.failedDeletePhoto`),`error`)}}}),pt&&(0,Z.jsx)(Q,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>mt(!1)}),(0,Z.jsx)(`input`,{ref:jt,type:`file`,accept:`.3mf`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&qt.mutate(t),e.target.value=``}}),(0,Z.jsx)(`input`,{ref:Mt,type:`file`,accept:`.f3d`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Yt.mutate(t),e.target.value=``}}),(0,Z.jsx)(`input`,{ref:Nt,type:`file`,accept:`.mp4,.avi,.mkv`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Kt.mutate(t),e.target.value=``}})]})}function an({archive:e,printerName:t,isSelected:n,onSelect:i,selectionMode:a,projects:o,isHighlighted:u,preferredSlicer:d=`bambu_studio`,useSlicerApi:f=!1,t:m,onNavigateToArchive:h}){let g=s(),{showToast:_}=S(),{hasPermission:v,canModify:y}=st(),[b,x]=(0,X.useState)(!1),[C,w]=(0,X.useState)(!1),[E,k]=(0,X.useState)(!1),[ee,A]=(0,X.useState)(!1),M=c({queryKey:[`archive`,e.id,`delete-impact`],queryFn:()=>r.getArchiveDeleteImpact(e.id),enabled:E,staleTime:0}),N=Ue(),[re,se]=(0,X.useState)(!1),[ce,le]=(0,X.useState)(!1),[F,ue]=(0,X.useState)(!1),[pe,me]=(0,X.useState)(!1),[he,I]=(0,X.useState)(!1),[R,z]=(0,X.useState)(!1),[B,_e]=(0,X.useState)(!1),[H,ye]=(0,X.useState)([]),[be,Se]=(0,X.useState)(!1),[we,ke]=(0,X.useState)(!1),[je,Me]=(0,X.useState)(!1),[Pe,Re]=(0,X.useState)(!1),[ze,He]=(0,X.useState)(!1),[We,G]=(0,X.useState)(!1),[Ge,qe]=(0,X.useState)(null),Je=(0,X.useRef)(null),Ze=(0,X.useRef)(null),et=(0,X.useRef)(null),[it,ct]=(0,X.useState)(null),dt=e.duplicate_sequence??0,ft=Ie(e.user_verdict_source),pt=e.original_archive_id??null,mt=async()=>{try{let t=await r.getArchivePlates(e.id);if(t.is_multi_plate&&t.plates.length>1){ct(t.plates);return}}catch{}N(`/gcode-viewer?archive=${e.id}`)},ht=l({mutationFn:()=>r.deleteArchiveTimelapse(e.id),onSuccess:()=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.timelapseRemoved`))},onError:e=>{_(e.message||m(`archives.toast.failedRemoveTimelapse`),`error`)}}),gt=l({mutationFn:t=>r.uploadArchiveTimelapse(e.id,t),onSuccess:e=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.timelapseUploaded`,{filename:e.filename}))},onError:e=>{_(e.message||m(`archives.toast.failedUploadTimelapse`),`error`)}}),_t=l({mutationFn:t=>r.uploadSource3mf(e.id,t),onSuccess:e=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.source3mfAttached`,{filename:e.filename}))},onError:e=>{_(e.message||m(`archives.toast.failedUploadSource3mf`),`error`)}}),J=l({mutationFn:()=>r.deleteSource3mf(e.id),onSuccess:()=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.source3mfRemoved`))},onError:e=>{_(e.message||m(`archives.toast.failedRemoveSource3mf`),`error`)}}),bt=l({mutationFn:t=>r.uploadF3d(e.id,t),onSuccess:e=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.f3dAttached`,{filename:e.filename}))},onError:e=>{_(e.message||m(`archives.toast.failedUploadF3d`),`error`)}}),xt=l({mutationFn:()=>r.deleteF3d(e.id),onSuccess:()=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.f3dRemoved`))},onError:e=>{_(e.message||m(`archives.toast.failedRemoveF3d`),`error`)}}),Y=l({mutationFn:()=>r.scanArchiveTimelapse(e.id),onSuccess:e=>{e.status===`attached`?(g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.timelapseAttached`,{filename:e.filename}))):e.status===`exists`?_(m(`archives.toast.timelapseAlreadyAttached`)):e.status===`not_found`&&e.available_files&&e.available_files.length>0?(ye(e.available_files),_e(!0)):_(e.message||m(`archives.toast.noMatchingTimelapse`),`warning`)},onError:e=>{_(e.message||m(`archives.toast.failedScanTimelapse`),`error`)}}),St=l({mutationFn:t=>r.selectArchiveTimelapse(e.id,t),onSuccess:e=>{g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.timelapseAttached`,{filename:e.filename})),_e(!1),ye([])},onError:e=>{_(e.message||m(`archives.toast.failedAttachTimelapse`),`error`)}}),Ct=l({mutationFn:t=>r.deleteArchive(e.id,t),onSuccess:()=>{Oe(g),_(m(`archives.toast.archiveDeleted`))},onError:()=>{_(m(`archives.toast.failedDeleteArchive`),`error`)}}),wt=l({mutationFn:()=>r.toggleFavorite(e.id),onSuccess:e=>{g.invalidateQueries({queryKey:[`archives`]}),_(e.is_favorite?m(`archives.toast.addedToFavorites`):m(`archives.toast.removedFromFavorites`))}}),{data:Tt}=c({queryKey:[`archive-folders`,e.id],queryFn:()=>r.getLibraryFoldersByArchive(e.id)}),Dt=l({mutationFn:t=>r.updateArchive(e.id,{project_id:t}),onSuccess:()=>{Oe(g),_(m(`archives.toast.projectUpdated`))},onError:()=>{_(m(`archives.toast.failedUpdateProject`),`error`)}}),Ot=e=>{e.preventDefault(),qe({x:e.clientX,y:e.clientY})},kt=[...tn(e)?[{label:m(`common.print`),icon:(0,Z.jsx)(De,{className:`w-4 h-4`}),onClick:()=>se(!0),disabled:!e.file_path||!v(`queue:create`)||!y(`archives`,`reprint`,e.created_by_id),title:e.file_path?v(`queue:create`)?y(`archives`,`reprint`,e.created_by_id)?void 0:m(`archives.permission.noReprint`):m(`archives.permission.noAddToQueue`):m(`archives.card.noFileForReprint`)},{label:m(`archives.menu.openInBambuStudio`),icon:(0,Z.jsx)(Ce,{className:`w-4 h-4`}),onClick:()=>{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,d)},disabled:!e.file_path,title:e.file_path?void 0:m(`archives.card.noFileForReprint`)}]:[{label:m(`archives.menu.slice`),icon:f?(0,Z.jsx)(T,{className:`w-4 h-4`}):(0,Z.jsx)(Ce,{className:`w-4 h-4`}),onClick:()=>{if(f)ue(!0);else{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,d)}}},...f?[{label:m(`library.runWithPipeline.actionLabel`),icon:(0,Z.jsx)(de,{className:`w-4 h-4`}),onClick:()=>me(!0),disabled:!v(`pipelines:run`),title:v(`pipelines:run`)?void 0:m(`library.runWithPipeline.noPermission`)}]:[]],{label:e.external_url?m(`archives.menu.externalLink`):m(`archives.menu.viewOnMakerWorld`),icon:(0,Z.jsx)(Ye,{className:`w-4 h-4`}),onClick:()=>{let t=e.external_url||e.makerworld_url;t&&window.open(t,`_blank`)},disabled:!e.external_url&&!e.makerworld_url},...e.status===`completed`?[{label:m(`archives.menu.confirmOutcome`),icon:e.user_verdict===`reject`?(0,Z.jsx)(Ne,{className:`w-4 h-4`}):(0,Z.jsx)(Qe,{className:`w-4 h-4`}),onClick:()=>le(!0),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:m(`archives.menu.preview3d`),icon:(0,Z.jsx)(p,{className:`w-4 h-4`}),onClick:()=>{mt()}},{label:m(`archives.menu.viewTimelapse`),icon:(0,Z.jsx)(j,{className:`w-4 h-4`}),onClick:()=>I(!0),disabled:!e.timelapse_path},{label:m(`archives.menu.scanForTimelapse`),icon:(0,Z.jsx)(ne,{className:`w-4 h-4`}),onClick:()=>Y.mutate(),disabled:!e.printer_id||!!e.timelapse_path||Y.isPending||!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},{label:m(`archives.menu.uploadTimelapse`),icon:(0,Z.jsx)($e,{className:`w-4 h-4`}),onClick:()=>et.current?.click(),disabled:!!e.timelapse_path||!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},...e.timelapse_path?[{label:m(`archives.menu.removeTimelapse`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>G(!0),danger:!0,disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:e.source_3mf_path?m(`archives.menu.downloadSource3mf`):m(`archives.menu.uploadSource3mf`),icon:(0,Z.jsx)(vt,{className:`w-4 h-4`}),onClick:()=>{e.source_3mf_path?r.downloadSource3mf(e.id).catch(e=>{console.error(`Source 3MF download failed:`,e)}):Je.current?.click()},disabled:!e.source_3mf_path&&!y(`archives`,`update`,e.created_by_id),title:!e.source_3mf_path&&!y(`archives`,`update`,e.created_by_id)?m(`archives.permission.noUploadFiles`):void 0},...e.source_3mf_path?[{label:m(`archives.menu.replaceSource3mf`),icon:(0,Z.jsx)($e,{className:`w-4 h-4`}),onClick:()=>Je.current?.click(),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},{label:m(`archives.menu.removeSource3mf`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>Re(!0),danger:!0,disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)}]:[],{label:e.f3d_path?m(`archives.menu.replaceF3d`):m(`archives.menu.uploadF3d`),icon:(0,Z.jsx)(p,{className:`w-4 h-4`}),onClick:()=>Ze.current?.click(),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},...e.f3d_path?[{label:m(`archives.menu.downloadF3d`),icon:(0,Z.jsx)(q,{className:`w-4 h-4`}),onClick:()=>{r.downloadF3d(e.id).catch(e=>{console.error(`F3D download failed:`,e)})}},{label:m(`archives.menu.removeF3d`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>He(!0),danger:!0,disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:m(`archives.menu.download`),icon:(0,Z.jsx)(q,{className:`w-4 h-4`}),onClick:()=>{r.downloadArchive(e.id,`${e.print_name||e.filename}.3mf`).catch(e=>{console.error(`Archive download failed:`,e)})},disabled:!v(`archives:read`),title:v(`archives:read`)?void 0:m(`archives.permission.noDownload`)},{label:m(`archives.menu.copyDownloadLink`),icon:(0,Z.jsx)(D,{className:`w-4 h-4`}),onClick:()=>{let t=`${window.location.origin}${r.getArchiveDownload(e.id)}`;navigator.clipboard.writeText(t).then(()=>{_(m(`archives.toast.linkCopied`))}).catch(()=>{_(m(`archives.toast.failedCopyLink`),`error`)})},disabled:!v(`archives:read`),title:v(`archives:read`)?void 0:m(`archives.permission.noCopyLink`)},{label:m(`archives.menu.qrCode`),icon:(0,Z.jsx)(fe,{className:`w-4 h-4`}),onClick:()=>Se(!0)},{label:e.photos?.length?m(`archives.menu.viewPhotosCount`,{count:e.photos.length}):m(`archives.menu.viewPhotos`),icon:(0,Z.jsx)(Le,{className:`w-4 h-4`}),onClick:()=>ke(!0),disabled:!e.photos?.length},{label:m(`archives.menu.projectPage`),icon:(0,Z.jsx)(rt,{className:`w-4 h-4`}),onClick:()=>Me(!0)},{label:``,divider:!0,onClick:()=>{}},{label:e.is_favorite?m(`archives.menu.removeFromFavorites`):m(`archives.menu.addToFavorites`),icon:(0,Z.jsx)(Ee,{className:`w-4 h-4 ${e.is_favorite?`fill-yellow-400 text-yellow-400`:y(`archives`,`update`,e.created_by_id)?`group-hover:text-yellow-400`:``}`}),onClick:()=>wt.mutate(),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},{label:m(`archives.menu.edit`),icon:(0,Z.jsx)(xe,{className:`w-4 h-4`}),onClick:()=>x(!0),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?void 0:m(`archives.permission.noUpdateArchives`)},{label:m(`archives.menu.printLog`),icon:(0,Z.jsx)(oe,{className:`w-4 h-4`}),onClick:()=>w(!0)},...e.project_id&&e.project_name?[{label:m(`archives.menu.goToProject`,{name:e.project_name}),icon:(0,Z.jsx)(ot,{className:`w-4 h-4 text-bambu-green`}),onClick:()=>window.location.href=`/projects`}]:[],{label:m(`archives.menu.addToProject`),icon:(0,Z.jsx)(ot,{className:`w-4 h-4`}),onClick:()=>{},submenuSearchPlaceholder:Te(o??[],e.project_id).length>5?m(`archives.menu.searchProjects`):void 0,submenu:(()=>{let t=[];if(e.project_id&&t.push({label:m(`archives.menu.removeFromProject`),icon:(0,Z.jsx)(L,{className:`w-4 h-4`}),onClick:()=>Dt.mutate(null)}),!o)t.push({label:m(`archives.menu.loading`),icon:(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}),onClick:()=>{},disabled:!0});else{let n=Te(o,e.project_id).sort((e,t)=>e.name.localeCompare(t.name));n.length===0?t.push({label:m(`archives.menu.noProjectsAvailable`),icon:(0,Z.jsx)(ot,{className:`w-4 h-4 opacity-50`}),onClick:()=>{},disabled:!0}):n.forEach(n=>{t.push({label:n.name,icon:(0,Z.jsx)(`div`,{className:`w-3 h-3 rounded-full flex-shrink-0`,style:{backgroundColor:n.color||`#888`}}),onClick:()=>Dt.mutate(n.id),disabled:e.project_id===n.id})})}return t})()},{label:m(n?`archives.menu.deselect`:`archives.menu.select`),icon:n?(0,Z.jsx)(Be,{className:`w-4 h-4`}):(0,Z.jsx)(Ae,{className:`w-4 h-4`}),onClick:()=>i(e.id)},{label:``,divider:!0,onClick:()=>{}},{label:m(`archives.menu.delete`),icon:(0,Z.jsx)(U,{className:`w-4 h-4`}),onClick:()=>k(!0),danger:!0,disabled:!y(`archives`,`delete`,e.created_by_id),title:y(`archives`,`delete`,e.created_by_id)?void 0:m(`archives.permission.noDelete`)}];return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{"data-archive-id":e.id,className:`grid grid-cols-12 gap-4 px-4 py-3 items-center hover:bg-bambu-dark-tertiary/30 ${n?`bg-bambu-green/10`:``}`,style:u?{outline:`4px solid #facc15`,outlineOffset:`-4px`}:void 0,onContextMenu:Ot,children:[(0,Z.jsxs)(`div`,{className:`col-span-1 flex items-center gap-2`,children:[a&&(0,Z.jsx)(`button`,{onClick:()=>i(e.id),children:n?(0,Z.jsx)(Be,{className:`w-4 h-4 text-bambu-green`}):(0,Z.jsx)(Ae,{className:`w-4 h-4 text-bambu-gray`})}),e.thumbnail_path?(0,Z.jsx)(`img`,{src:r.getArchiveThumbnail(e.id),loading:`lazy`,alt:``,className:`w-10 h-10 object-cover rounded`}):(0,Z.jsx)(`div`,{className:`w-10 h-10 bg-bambu-dark rounded flex items-center justify-center`,children:(0,Z.jsx)(tt,{className:`w-5 h-5 text-bambu-dark-tertiary`})})]}),(0,Z.jsxs)(`div`,{className:`col-span-4`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`p`,{className:`text-white text-sm truncate`,children:e.print_name||e.filename}),(e.status===`failed`||e.status===`aborted`)&&(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-status-error/80 text-white flex-shrink-0`,children:e.status===`aborted`?m(`archives.card.cancelled`):m(`archives.card.failed`)}),e.status===`completed`&&e.confirm_requested&&e.user_verdict==null&&(0,Z.jsx)(`button`,{onClick:e=>{e.stopPropagation(),le(!0)},disabled:!y(`archives`,`update`,e.created_by_id),className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-amber-500/90 enabled:hover:bg-amber-500 text-black flex-shrink-0 transition-colors`,title:y(`archives`,`update`,e.created_by_id)?m(`archives.card.confirmPendingTitle`):m(`archives.permission.noUpdateArchives`),children:m(`archives.card.confirmPending`)}),e.status===`completed`&&e.user_verdict===`reject`&&(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-status-error/80 text-white flex-shrink-0`,title:`${m(`archives.card.rejectedTitle`)}${ft?` — ${m(ft)}`:``}`,children:m(`archives.card.rejected`)}),e.status===`completed`&&e.user_verdict===`good`&&(0,Z.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-bambu-green/80 text-white flex-shrink-0`,title:`${m(`archives.card.confirmedGoodTitle`)}${ft?` — ${m(ft)}`:``}`,children:m(`archives.card.confirmedGood`)}),e.duplicate_count>0&&dt>0&&pt&&(0,Z.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),h?.(pt)},className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-purple-500/80 hover:bg-purple-600/90 text-white flex-shrink-0 transition-colors flex items-center gap-1`,title:m(`archives.viewOriginalPrint`,{id:pt}),children:[(0,Z.jsx)(D,{className:`w-3 h-3`}),`#`,dt]}),e.duplicate_count>0&&dt===0&&(0,Z.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-purple-500/80 text-white flex-shrink-0 flex items-center gap-1`,title:`${e.duplicate_count} reprint${e.duplicate_count===1?``:`s`}`,children:[(0,Z.jsx)(yt,{className:`w-3 h-3`}),`+`,e.duplicate_count]}),e.timelapse_path&&(0,Z.jsx)(`span`,{title:m(`archives.list.hasTimelapse`),children:(0,Z.jsx)(j,{className:`w-3.5 h-3.5 text-bambu-green flex-shrink-0`})}),Tt&&Tt.length>0&&(0,Z.jsx)(W,{to:`/files?folder=${Tt[0].id}`,className:`flex-shrink-0`,title:m(`archives.card.openFolder`,{name:Tt[0].name}),onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(nt,{className:`w-3.5 h-3.5 text-yellow-600 dark:text-yellow-400`})})]}),(e.filament_type||e.sliced_for_model)&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-0.5`,children:[e.sliced_for_model&&(0,Z.jsxs)(`span`,{className:`text-xs text-bambu-gray flex items-center gap-1`,title:m(`archives.card.slicedFor`,{model:e.sliced_for_model}),children:[(0,Z.jsx)(De,{className:`w-2.5 h-2.5`}),e.sliced_for_model]}),(()=>{let t=Ve(e.bed_type);return t?(0,Z.jsx)(`img`,{src:t.icon,alt:t.label,title:t.label,className:`w-3.5 h-3.5 flex-shrink-0`}):null})(),e.sliced_for_model&&e.filament_type&&(0,Z.jsx)(`span`,{className:`text-bambu-gray/50`,children:`·`}),e.filament_type&&(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:e.filament_type}),e.filament_color&&(0,Z.jsx)(`div`,{className:`flex items-center gap-0.5 flex-wrap`,children:e.filament_color.split(`,`).map((e,t)=>(0,Z.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-full border border-black/20`,style:{backgroundColor:e},title:e},t))})]})]}),(0,Z.jsx)(`div`,{className:`col-span-2 text-sm text-bambu-gray truncate`,children:t}),(0,Z.jsxs)(`div`,{className:`col-span-2 text-sm text-bambu-gray`,children:[(0,Z.jsx)(`div`,{children:ve(e.created_at)}),e.created_by_username&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 text-xs opacity-75`,title:m(`archives.card.uploadedBy`,{name:e.created_by_username}),children:[(0,Z.jsx)(Fe,{className:`w-3 h-3`}),e.created_by_username]})]}),(0,Z.jsx)(`div`,{className:`col-span-1 text-sm text-bambu-gray`,children:ge(e.file_size)}),(0,Z.jsxs)(`div`,{className:`col-span-2 flex justify-end gap-1`,children:[tn(e)&&(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>se(!0),disabled:!e.file_path||!v(`queue:create`)||!y(`archives`,`reprint`,e.created_by_id),title:e.file_path?v(`queue:create`)?y(`archives`,`reprint`,e.created_by_id)?m(`common.print`):m(`archives.card.noPermissionReprint`):m(`archives.permission.noAddToQueue`):m(`archives.card.noFileForReprint`),className:`text-bambu-green hover:text-bambu-green-light hover:bg-bambu-green/10`,children:(0,Z.jsx)(de,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>{let t=e.print_name||e.filename||`model`;nn(e.id,t,`file`,d)},title:m(`archives.card.openInBambuStudio`),children:(0,Z.jsx)(Ce,{className:`w-4 h-4`})}),(e.external_url||e.makerworld_url)&&(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>window.open(e.external_url||e.makerworld_url,`_blank`),title:e.external_url?m(`archives.card.externalLink`):`MakerWorld`,children:(0,Z.jsx)(Ye,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>z(!0),disabled:!e.timelapse_path&&(!v(`printers:files`)||!e.printer_id||!e.started_at),title:!e.timelapse_path&&!v(`printers:files`)?m(`printers.permission.noFiles`):m(`archives.media.download`),children:(0,Z.jsx)(j,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>{r.downloadArchive(e.id,`${e.print_name||e.filename}.3mf`).catch(e=>{console.error(`Archive download failed:`,e)})},title:m(`archives.card.download`),children:(0,Z.jsx)(q,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>x(!0),disabled:!y(`archives`,`update`,e.created_by_id),title:y(`archives`,`update`,e.created_by_id)?m(`archives.card.edit`):m(`archives.card.noPermissionEdit`),children:(0,Z.jsx)(xe,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:()=>k(!0),disabled:!y(`archives`,`delete`,e.created_by_id),title:y(`archives`,`delete`,e.created_by_id)?m(`archives.card.delete`):m(`archives.card.noPermissionDelete`),children:(0,Z.jsx)(U,{className:`w-4 h-4 text-red-600 dark:text-red-400`})}),(0,Z.jsx)(V,{variant:`ghost`,size:`sm`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();qe({x:t.left,y:t.bottom+4})},title:m(`archives.card.moreOptions`),children:(0,Z.jsx)(O,{className:`w-4 h-4`})})]})]}),b&&(0,Z.jsx)(Xe,{archive:e,onClose:()=>x(!1)}),C&&(0,Z.jsx)(Et,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>w(!1)}),it&&(0,Z.jsx)(ie,{plates:it,onSelect:t=>{ct(null),N(`/gcode-viewer?archive=${e.id}&plate=${t}`)},onClose:()=>ct(null)}),re&&(0,Z.jsx)(Ke,{mode:`create`,archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>se(!1)}),ce&&(0,Z.jsx)(at,{archiveId:e.id,onClose:()=>le(!1)}),F&&(0,Z.jsx)(ae,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>ue(!1)}),pe&&(0,Z.jsx)(lt,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>me(!1)}),E&&(0,Z.jsxs)(K,{title:m(`archives.modal.deleteArchive`),message:m(`archives.modal.deleteConfirm`,{name:e.print_name||e.filename}),confirmText:m(`archives.modal.deleteButton`),variant:`danger`,confirmDisabled:(M.data?.currently_printing??0)>0,onConfirm:()=>{Ct.mutate(ee),k(!1),A(!1)},onCancel:()=>{k(!1),A(!1)},children:[(M.data?.related_queue_items??0)>0&&(0,Z.jsx)(`div`,{className:(M.data?.currently_printing??0)>0?`text-sm text-red-600 dark:text-red-400 mb-2`:`text-sm text-amber-600 dark:text-amber-400 mb-2`,children:(M.data?.currently_printing??0)>0?m(`archives.modal.deleteBlockedByPrinting`,{count:M.data.currently_printing}):m(`archives.modal.deleteQueueItemsWarning`,{count:M.data.related_queue_items})}),(0,Z.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer text-sm text-bambu-gray`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 accent-red-500`,checked:ee,onChange:e=>A(e.target.checked)}),(0,Z.jsx)(`span`,{children:m(`archives.modal.deletePurgeStats`)})]})]}),Pe&&(0,Z.jsx)(K,{title:m(`archives.modal.removeSource3mf`),message:m(`archives.modal.removeSource3mfConfirm`,{name:e.print_name||e.filename}),confirmText:m(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{J.mutate(),Re(!1)},onCancel:()=>Re(!1)}),ze&&(0,Z.jsx)(K,{title:m(`archives.modal.removeF3d`),message:m(`archives.modal.removeF3dConfirm`,{name:e.print_name||e.filename}),confirmText:m(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{xt.mutate(),He(!1)},onCancel:()=>He(!1)}),We&&(0,Z.jsx)(K,{title:m(`archives.modal.removeTimelapse`),message:m(`archives.modal.removeTimelapseConfirm`,{name:e.print_name||e.filename}),confirmText:m(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{ht.mutate(),G(!1)},onCancel:()=>G(!1)}),Ge&&(0,Z.jsx)(te,{x:Ge.x,y:Ge.y,items:kt,onClose:()=>qe(null)}),R&&(0,Z.jsx)(zt,{archiveId:e.id,archiveName:e.print_name||e.filename,printerName:t,onClose:()=>z(!1)}),he&&e.timelapse_path&&(0,Z.jsx)(Rt,{src:r.getArchiveTimelapse(e.id),title:m(`archives.modal.timelapse`,{name:e.print_name||e.filename}),downloadFilename:`${e.print_name||e.filename}_timelapse.mp4`,archiveId:e.id,onClose:()=>I(!1),onEdit:()=>{g.invalidateQueries({queryKey:[`archives`]}),I(!1)}}),B&&H.length>0&&(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,children:(0,Z.jsxs)(`div`,{className:`bg-card-dark rounded-lg max-w-lg w-full max-h-[80vh] flex flex-col`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-700`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h3`,{className:`text-lg font-semibold text-white`,children:m(`archives.modal.selectTimelapse`)}),(0,Z.jsx)(`p`,{className:`text-sm text-gray-400 mt-1`,children:m(`archives.modal.selectTimelapseDesc`)})]}),(0,Z.jsx)(`button`,{onClick:()=>{_e(!1),ye([])},className:`text-gray-400 hover:text-white p-1`,children:(0,Z.jsx)(L,{className:`w-5 h-5`})})]}),(0,Z.jsx)(`div`,{className:`overflow-y-auto flex-1 p-2`,children:H.map(e=>(0,Z.jsxs)(`button`,{onClick:()=>St.mutate(e.name),disabled:St.isPending,className:`w-full text-left p-3 rounded-lg hover:bg-gray-700 transition-colors mb-1`,children:[(0,Z.jsx)(`div`,{className:`font-medium text-white`,children:e.name}),(0,Z.jsxs)(`div`,{className:`text-sm text-gray-400 flex gap-3`,children:[(0,Z.jsx)(`span`,{children:ge(e.size)}),e.mtime&&(0,Z.jsx)(`span`,{children:ve(e.mtime)})]})]},e.name))})]})}),be&&(0,Z.jsx)(Pt,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>Se(!1)}),we&&e.photos&&(0,Z.jsx)(ut,{archiveId:e.id,archiveName:e.print_name||e.filename,photos:e.photos,onClose:()=>ke(!1),onDelete:async t=>{try{await r.deleteArchivePhoto(e.id,t),g.invalidateQueries({queryKey:[`archives`]}),_(m(`archives.toast.photoDeleted`))}catch{_(m(`archives.toast.failedDeletePhoto`),`error`)}}}),je&&(0,Z.jsx)(Q,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>Me(!1)}),(0,Z.jsx)(`input`,{ref:Je,type:`file`,accept:`.3mf`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&_t.mutate(t),e.target.value=``}}),(0,Z.jsx)(`input`,{ref:Ze,type:`file`,accept:`.f3d`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&bt.mutate(t),e.target.value=``}}),(0,Z.jsx)(`input`,{ref:et,type:`file`,accept:`.mp4,.avi,.mkv`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&>.mutate(t),e.target.value=``}})]})}var on=[`completed`,`failed`,`aborted`,`cancelled`,`stopped`],sn=[{id:`all`,label:`All Archives`,icon:(0,Z.jsx)(nt,{className:`w-4 h-4`})},{id:`recent`,label:`Last 24 Hours`,icon:(0,Z.jsx)(Pe,{className:`w-4 h-4`})},{id:`this-week`,label:`This Week`,icon:(0,Z.jsx)(m,{className:`w-4 h-4`})},{id:`this-month`,label:`This Month`,icon:(0,Z.jsx)(m,{className:`w-4 h-4`})},{id:`favorites`,label:`Favorites`,icon:(0,Z.jsx)(Ee,{className:`w-4 h-4`})},{id:`not-printed`,label:`Not Printed`,icon:(0,Z.jsx)($e,{className:`w-4 h-4`})},{id:`printed`,label:`Printed`,icon:(0,Z.jsx)(De,{className:`w-4 h-4`})},{id:`failed`,label:`Failed Prints`,icon:(0,Z.jsx)(y,{className:`w-4 h-4`})},{id:`duplicates`,label:`Duplicates`,icon:(0,Z.jsx)(D,{className:`w-4 h-4`})}];function cn(){let{t:e}=a(),t=s(),{showToast:n}=S(),{hasPermission:i,hasAnyPermission:o}=st(),u=(0,X.useRef)(null),[f,p]=(0,X.useState)(``),[m,h]=(0,X.useState)(()=>{let e=localStorage.getItem(`archiveFilterPrinter`);return e?Number(e):null}),[v,b]=(0,X.useState)(()=>{let e=localStorage.getItem(`archiveFilterMaterial`);return e&&!e.includes(`,`)?e:null}),[x,C]=(0,X.useState)(()=>{let e=localStorage.getItem(`archiveFilterColors`);return e?new Set(JSON.parse(e)):new Set}),[w,T]=(0,X.useState)(()=>localStorage.getItem(`archiveColorFilterMode`)||`or`),[O,k]=(0,X.useState)(()=>localStorage.getItem(`archiveFilterFavorites`)===`true`),[A,te]=(0,X.useState)(()=>localStorage.getItem(`archiveHideFailed`)===`true`),[j,ne]=(0,X.useState)(()=>localStorage.getItem(`archiveFilterUnconfirmed`)===`true`),[N,ie]=(0,X.useState)(()=>localStorage.getItem(`archiveHideDuplicates`)===`true`),[ae,oe]=(0,X.useState)(()=>localStorage.getItem(`archiveFilterTag`)),[F,ue]=(0,X.useState)(()=>localStorage.getItem(`archiveFilterFileType`)||`all`),[de,fe]=(0,X.useState)(!1),[me,he]=(0,X.useState)([]),[I,R]=(0,X.useState)(new Set),[ge,ve]=(0,X.useState)(()=>localStorage.getItem(`archiveNo3MFWarningDismissed`)===`true`),{data:H}=c({queryKey:[`archives`,`no-3mf-warning`],queryFn:r.getNo3MFWarning,staleTime:300*1e3,enabled:!ge}),Se=()=>{localStorage.setItem(`archiveNo3MFWarningDismissed`,`true`),ve(!0)},we=H?.reason===`ftps_cooloff`?`FtpsCooloff`:H?.reason===`ftp_transfer_failed`?`FtpTransferFailed`:H?.reason===`internal_storage`?`InternalStorage`:H?.reason===`no_external_storage`?`NoExternalStorage`:H?.reason===`internal_history`?`InternalHistory`:``,Te=H?.reason===`ftps_cooloff`?`https://wiki.bambuddy.cool/reference/troubleshooting/#ftps-tls-failure`:H?.reason===`ftp_transfer_failed`?`https://wiki.bambuddy.cool/reference/troubleshooting/#ftp-transfer-timed-out`:H?.reason===`internal_storage`?`https://wiki.bambuddy.cool/reference/troubleshooting/#archive-card-has-only-a-name`:H?.reason===`no_external_storage`?null:H?.reason===`internal_history`?`https://wiki.bambuddy.cool/reference/troubleshooting/#print-started-on-the-printer-has-no-thumbnail`:`https://wiki.bambuddy.cool/getting-started/#step-4-enable-store-sent-files-on-external-storage`,[De,Ae]=(0,X.useState)(!1),[Ne,Pe]=(0,X.useState)(!1),[Fe,Ie]=(0,X.useState)(!1),[Le,ze]=(0,X.useState)(!1),[W,Ve]=(0,X.useState)(()=>localStorage.getItem(`archiveViewMode`)||`grid`),[He,Ue]=(0,X.useState)(()=>localStorage.getItem(`archiveSortBy`)||`date-desc`),[G,Ke]=(0,X.useState)(()=>localStorage.getItem(`archiveCollection`)||`all`),[qe,Je]=(0,X.useState)(0),[Ye,Xe]=(0,X.useState)(()=>{try{let e=localStorage.getItem(`archivePageSize`);return e?Number(e):50}catch{return 50}}),[et,tt]=(0,X.useState)(!1),[nt,q]=(0,X.useState)(!1),[it,at]=(0,X.useState)(!1),[lt,ut]=(0,X.useState)(!1),[dt,ht]=(0,X.useState)(!1),[J,yt]=(0,X.useState)(null),[bt,xt]=(0,X.useState)(null),[Y,St]=(0,X.useState)(()=>localStorage.getItem(`logFilterUser`)||null),[wt,Et]=(0,X.useState)(()=>localStorage.getItem(`logFilterStatus`)),[kt,At]=(0,X.useState)(()=>localStorage.getItem(`logFilterDateFrom`)||``),[jt,Mt]=(0,X.useState)(()=>localStorage.getItem(`logFilterDateTo`)||``),[Pt,Q]=(0,X.useState)(()=>{let e=localStorage.getItem(`logOffset`);return e?Number(e):0}),[Ft,It]=(0,X.useState)(!1),[Lt,Rt]=(0,X.useState)(null),[zt,Vt]=(0,X.useState)(null),[Ht,Ut]=(0,X.useState)(``),[Kt,Xt]=(0,X.useState)(``),[$,nn]=(0,X.useState)(()=>{let e=localStorage.getItem(`logPageSize`);return e?Number(e):25}),[cn,un]=(0,X.useState)(Yt),[dn,fn]=(0,X.useState)(!1),[pn,mn]=(0,X.useState)(Qt),hn=(0,X.useMemo)(()=>cn.filter(e=>e.visible).map(e=>e.id),[cn]),gn=(0,X.useCallback)(e=>{xt(e),yt(e)},[]);(0,X.useEffect)(()=>{if(J){let t=setTimeout(()=>{let t=document.querySelector(`[data-archive-id="${J}"]`);t?t.scrollIntoView({behavior:`smooth`,block:`center`}):bt===J&&n(e(`archives.originalPrintNotVisible`),`warning`),bt===J&&xt(null)},100),r=setTimeout(()=>yt(null),5e3);return()=>{clearTimeout(t),clearTimeout(r)}}},[J,bt,n,e]);let{data:_n,isLoading:vn}=c({queryKey:[`archives`,m],queryFn:()=>r.getArchives(m||void 0)}),{data:yn}=c({queryKey:[`printers`],queryFn:r.getPrinters}),{data:bn}=c({queryKey:[`projects`],queryFn:()=>r.getProjects()}),{data:xn}=c({queryKey:[`settings`],queryFn:r.getSettings}),{data:Sn}=c({queryKey:[`users`,`slim`],queryFn:r.getUsersSlim,enabled:W===`log`}),{data:Cn,isLoading:wn}=c({queryKey:[`print-log`,m,Y,wt,kt,jt,f,Pt,$,pn.column,pn.direction],queryFn:()=>r.getPrintLog({search:f||void 0,printerId:m||void 0,username:Y||void 0,status:wt||void 0,dateFrom:kt||void 0,dateTo:jt||void 0,limit:$,offset:Pt,sortBy:pn.column,sortDir:pn.direction}),enabled:W===`log`}),Tn=xn?.time_format||`system`,En=ft(xn?.open_in_slicer,xn?.preferred_slicer),Dn=xn?.use_slicer_api??!1,On=Ge(xn?.currency||`USD`),kn=(0,X.useMemo)(()=>cn.map(t=>({...t,label:e(qt[t.id]??t.id)})),[cn,e]),An=(0,X.useMemo)(()=>Jt.map(t=>({...t,label:e(qt[t.id]??t.id)})),[e]),jn=(0,X.useCallback)(e=>{Zt.has(e)&&(mn(t=>{let n=t.column===e?{column:e,direction:t.direction===`asc`?`desc`:`asc`}:{column:e,direction:[`date`,`completed_at`,`duration`,`filament_used`,`cost`,`energy`,`energy_cost`,`wear_cost`].includes(e)?`desc`:`asc`};return $t(n),n}),Q(0))},[]),Mn=(0,X.useCallback)(e=>{let t=e.map(e=>({id:e.id,visible:e.visible}));un(t),en(t)},[]),Nn=(0,X.useMemo)(()=>new Set([`duration`,`filament_used`,`cost`,`energy`,`energy_cost`,`wear_cost`]),[]),Pn=(0,X.useCallback)((t,n)=>{switch(t){case`date`:return(0,Z.jsx)(`span`,{className:`text-white whitespace-nowrap`,children:_e(n.started_at||n.created_at,Tn)});case`completed_at`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap`,children:n.completed_at?_e(n.completed_at,Tn):`—`});case`print_name`:return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n.thumbnail_path&&(0,Z.jsx)(`img`,{src:r.getPrintLogThumbnail(n.id),alt:``,className:`w-8 h-8 rounded object-cover flex-shrink-0`,onError:e=>{e.target.style.display=`none`}}),(0,Z.jsx)(`span`,{className:`text-white break-words`,title:n.print_name||``,children:n.print_name||`—`})]});case`printer`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light`,children:n.printer_name||`—`});case`user`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light`,children:n.created_by_username||`—`});case`status`:return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${n.status===`completed`?`bg-green-100 dark:bg-green-500/20 text-green-700 dark:text-green-400`:n.status===`failed`?`bg-red-100 dark:bg-red-500/20 text-red-700 dark:text-red-400`:n.status===`stopped`?`bg-yellow-100 dark:bg-yellow-500/20 text-yellow-700 dark:text-yellow-400`:n.status===`cancelled`?`bg-orange-100 dark:bg-orange-500/20 text-orange-700 dark:text-orange-400`:n.status===`skipped`?`bg-blue-100 dark:bg-blue-500/20 text-blue-700 dark:text-blue-400`:`bg-gray-500/20 text-gray-400`}`,children:n.status}),n.failure_reason&&(0,Z.jsx)(`span`,{className:`block text-[10px] text-bambu-gray mt-0.5`,children:e(`editArchive.failureReasons.${n.failure_reason}`,{defaultValue:n.failure_reason})})]});case`duration`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap`,children:n.duration_seconds?ye(n.duration_seconds):`—`});case`filament`:return(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n.filament_color&&(0,Z.jsx)(`div`,{className:`flex items-center gap-0.5 flex-wrap`,children:n.filament_color.split(`,`).map((e,t)=>{let n=e.trim();return(0,Z.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-black/20 flex-shrink-0`,style:{backgroundColor:n.startsWith(`#`)?n:void 0},title:n},t)})}),(0,Z.jsx)(`span`,{className:`text-bambu-gray-light text-xs`,children:n.filament_type||`—`})]});case`filament_used`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.filament_used_grams==null?`—`:`${n.filament_used_grams.toFixed(1)} g`});case`cost`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.cost==null?`—`:`${On}${n.cost.toFixed(2)}`});case`energy`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.energy_kwh==null?`—`:`${n.energy_kwh.toFixed(2)} kWh`});case`energy_cost`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.energy_cost==null?`—`:`${On}${n.energy_cost.toFixed(2)}`});case`wear_cost`:return(0,Z.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.wear_cost==null?`—`:`${On}${n.wear_cost.toFixed(2)}`});default:return null}},[On,e,Tn]),Fn=l({mutationFn:async e=>(await Promise.all(e.map(e=>r.deleteArchive(e))),e.length),onSuccess:e=>{Oe(t),R(new Set),n(`${e} archive${e===1?``:`s`} deleted`)},onError:()=>{n(e(`archives.toast.failedDeleteArchives`),`error`)}}),In=l({mutationFn:()=>r.clearPrintLog(),onSuccess:r=>{t.invalidateQueries({queryKey:[`print-log`]}),Q(0),n(e(`archives.log.cleared`,{count:r.deleted}))},onError:()=>{n(e(`archives.log.clearFailed`),`error`)}}),Ln=l({mutationFn:e=>r.deletePrintLogEntry(e),onSuccess:()=>{t.invalidateQueries({queryKey:[`print-log`]}),t.invalidateQueries({queryKey:[`archives-stats`]}),n(e(`archives.log.entryDeleted`))},onError:()=>{n(e(`archives.log.entryDeleteFailed`),`error`)}}),Rn=l({mutationFn:({id:e,body:t})=>r.updatePrintLogEntry(e,t),onSuccess:()=>{t.invalidateQueries({queryKey:[`print-log`]}),t.invalidateQueries({queryKey:[`archives-stats`]}),Vt(null),n(e(`archives.log.entryUpdated`))},onError:()=>{n(e(`archives.log.entryUpdateFailed`),`error`)}});(0,X.useEffect)(()=>{m===null?localStorage.removeItem(`archiveFilterPrinter`):localStorage.setItem(`archiveFilterPrinter`,m.toString())},[m]),(0,X.useEffect)(()=>{v?localStorage.setItem(`archiveFilterMaterial`,v):localStorage.removeItem(`archiveFilterMaterial`)},[v]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveFilterColors`,JSON.stringify([...x]))},[x]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveColorFilterMode`,w)},[w]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveFilterFavorites`,O.toString())},[O]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveHideFailed`,A.toString())},[A]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveFilterUnconfirmed`,j.toString())},[j]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveHideDuplicates`,N.toString())},[N]),(0,X.useEffect)(()=>{ae?localStorage.setItem(`archiveFilterTag`,ae):localStorage.removeItem(`archiveFilterTag`)},[ae]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveFilterFileType`,F)},[F]),(0,X.useEffect)(()=>{Je(0)},[f,m,v,x,w,O,A,j,N,ae,F,He,G]),(0,X.useEffect)(()=>{try{localStorage.setItem(`archivePageSize`,String(Ye))}catch{}},[Ye]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveViewMode`,W)},[W]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveSortBy`,He)},[He]),(0,X.useEffect)(()=>{localStorage.setItem(`archiveCollection`,G)},[G]),(0,X.useEffect)(()=>{Y?localStorage.setItem(`logFilterUser`,Y):localStorage.removeItem(`logFilterUser`)},[Y]),(0,X.useEffect)(()=>{wt?localStorage.setItem(`logFilterStatus`,wt):localStorage.removeItem(`logFilterStatus`)},[wt]),(0,X.useEffect)(()=>{kt?localStorage.setItem(`logFilterDateFrom`,kt):localStorage.removeItem(`logFilterDateFrom`)},[kt]),(0,X.useEffect)(()=>{jt?localStorage.setItem(`logFilterDateTo`,jt):localStorage.removeItem(`logFilterDateTo`)},[jt]),(0,X.useEffect)(()=>{localStorage.setItem(`logOffset`,Pt.toString())},[Pt]),(0,X.useEffect)(()=>{localStorage.setItem(`logPageSize`,$.toString())},[$]);let zn=(0,X.useMemo)(()=>new Map(yn?.map(e=>[e.id,e.name])||[]),[yn]),Bn=[...new Set(_n?.flatMap(e=>pt(e.filament_type))||[])].sort(),Vn=[...new Set(_n?.flatMap(e=>e.filament_color?.split(`,`)||[]).filter(Boolean)||[])],Hn=[...new Set(_n?.flatMap(e=>e.tags?.split(`,`).map(e=>e.trim())||[]).filter(Boolean)||[])].sort(),Un=_n?.filter(e=>{let t=new Date,n=be(e.created_at)||new Date(0),r=!0;switch(G){case`recent`:r=t.getTime()-n.getTime()<1440*60*1e3;break;case`this-week`:r=t.getTime()-n.getTime()<10080*60*1e3;break;case`this-month`:r=n.getMonth()===t.getMonth()&&n.getFullYear()===t.getFullYear();break;case`favorites`:r=e.is_favorite===!0;break;case`not-printed`:r=e.status===`archived`;break;case`printed`:r=on.includes(e.status);break;case`failed`:r=e.status===`failed`||e.status===`aborted`;break;case`duplicates`:r=e.duplicate_count>0;break}let i=(e.print_name||e.filename).toLowerCase().includes(f.toLowerCase()),a=!v||pt(e.filament_type).includes(v),o=e.filament_color?.split(`,`)||[],s=x.size===0||(w===`or`?o.some(e=>x.has(e)):[...x].every(e=>o.includes(e))),c=G===`favorites`||!O||e.is_favorite,l=G===`failed`||!A||e.status!==`failed`&&e.status!==`aborted`,u=!j||e.status===`completed`&&e.confirm_requested&&e.user_verdict==null,d=G===`duplicates`||!N||e.duplicate_count===0||e.duplicate_sequence===0,p=e.tags?.split(`,`).map(e=>e.trim())||[],m=!ae||p.includes(ae),h=tn(e);return r&&i&&a&&s&&c&&l&&u&&d&&m&&(F===`all`||F===`gcode`&&h||F===`source`&&!h)}).sort((e,t)=>{switch(He){case`date-desc`:return(be(t.created_at)?.getTime()||0)-(be(e.created_at)?.getTime()||0);case`date-asc`:return(be(e.created_at)?.getTime()||0)-(be(t.created_at)?.getTime()||0);case`name-asc`:return(e.print_name||e.filename).localeCompare(t.print_name||t.filename);case`name-desc`:return(t.print_name||t.filename).localeCompare(e.print_name||e.filename);case`size-desc`:return t.file_size-e.file_size;case`size-asc`:return e.file_size-t.file_size;default:return 0}}),Wn=Un?.length||0,Gn=Ye===-1,Kn=Gn?Wn||1:Ye,qn=Math.max(1,Math.ceil(Wn/Kn)),Jn=Gn?Un:Un?.slice(qe*Kn,(qe+1)*Kn);(0,X.useEffect)(()=>{if(J&&Un&&!Gn){let e=Un.findIndex(e=>e.id===J);if(e>=0){let t=Math.floor(e/Kn);t!==qe&&Je(t)}}},[J]);let Yn=De||I.size>0,Xn=e=>{R(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Zn=()=>{Un&&R(new Set(Un.map(e=>e.id)))},Qn=()=>{R(new Set),Ae(!1)},$n=e=>{C(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},er=()=>{C(new Set)},tr=()=>{p(``),h(null),b(null),k(!1),te(!1),ne(!1),ie(!1),oe(null),ue(`all`)},nr=f||m||v||O||A||j||N||ae||F!==`all`,{isDraggingOver:rr,dragHandlers:ir}=ct({disabled:de,extensions:[`.3mf`],onFiles:e=>{he(e),fe(!0)},onRejected:()=>n(e(`archives.page.only3mfSupported`),`warning`)}),ar=(0,X.useCallback)(e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable){e.key===`Escape`&&t.blur();return}switch(e.key){case`/`:e.preventDefault(),u.current?.focus();break;case`u`:case`U`:!e.metaKey&&!e.ctrlKey&&(e.preventDefault(),fe(!0));break;case`Escape`:Yn&&Qn();break}},[Yn]);return(0,X.useEffect)(()=>(document.addEventListener(`keydown`,ar),()=>document.removeEventListener(`keydown`,ar)),[ar]),(0,Z.jsxs)(`div`,{className:`p-4 md:p-8 relative`,...ir,children:[rr&&(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 bg-bambu-dark/90 flex items-center justify-center pointer-events-none`,children:(0,Z.jsxs)(`div`,{className:`border-4 border-dashed border-bambu-green rounded-xl p-12 text-center`,children:[(0,Z.jsx)($e,{className:`w-16 h-16 mx-auto mb-4 text-bambu-green`}),(0,Z.jsx)(`p`,{className:`text-2xl font-semibold text-white mb-2`,children:e(`archives.page.dropFilesHere`)}),(0,Z.jsx)(`p`,{className:`text-bambu-gray`,children:e(`archives.releaseToUpload`)})]})}),Yn&&(0,Z.jsxs)(`div`,{className:`fixed bottom-6 left-1/2 -translate-x-1/2 z-40 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg shadow-xl px-4 py-3 flex items-center gap-4`,children:[(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:Qn,children:[(0,Z.jsx)(L,{className:`w-4 h-4`}),`Close`]}),(0,Z.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,Z.jsxs)(`span`,{className:`text-white font-medium`,children:[I.size,` selected`]}),(0,Z.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,onClick:Zn,children:`Select All`}),(0,Z.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:()=>Ie(!0),disabled:!o(`archives:update_own`,`archives:update_all`),title:o(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),children:[(0,Z.jsx)(Re,{className:`w-4 h-4`}),`Tags`]}),(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,onClick:()=>ze(!0),disabled:!o(`archives:update_own`,`archives:update_all`),title:o(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),children:[(0,Z.jsx)(ot,{className:`w-4 h-4`}),`Project`]}),(0,Z.jsxs)(V,{variant:`secondary`,size:`sm`,disabled:!o(`archives:update_own`,`archives:update_all`),title:o(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),onClick:()=>{let i=Array.from(I);Promise.all(i.map(e=>r.toggleFavorite(e))).then(()=>{t.invalidateQueries({queryKey:[`archives`]}),n(`Toggled favorites for ${i.length} archive${i.length===1?``:`s`}`)}).catch(()=>{n(e(`archives.toast.failedUpdateFavorites`),`error`)})},children:[(0,Z.jsx)(Ee,{className:`w-4 h-4`}),`Favorite`]}),(0,Z.jsxs)(V,{size:`sm`,className:`bg-red-500 hover:bg-red-600`,onClick:()=>Pe(!0),disabled:!o(`archives:delete_own`,`archives:delete_all`),title:o(`archives:delete_own`,`archives:delete_all`)?void 0:e(`archives.permission.noDelete`),children:[(0,Z.jsx)(U,{className:`w-4 h-4`}),`Delete`]})]}),H?.has_fallback&&!ge&&(0,Z.jsxs)(`div`,{className:`mb-6 rounded-lg border border-amber-300 dark:border-amber-500/30 bg-amber-50 dark:bg-amber-500/10 px-4 py-3 flex items-start gap-3`,children:[(0,Z.jsx)(y,{className:`w-5 h-5 text-amber-600 dark:text-amber-400 flex-shrink-0 mt-0.5`}),(0,Z.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Z.jsx)(`div`,{className:`text-sm font-medium text-amber-900 dark:text-amber-200`,children:e(`archives.no3mfBanner.title${we}`)}),(0,Z.jsxs)(`div`,{className:`text-xs text-amber-800/90 dark:text-amber-200/80 mt-1`,children:[e(`archives.no3mfBanner.body${we}`),Te&&(0,Z.jsxs)(Z.Fragment,{children:[` `,(0,Z.jsxs)(`a`,{href:Te,target:`_blank`,rel:`noreferrer`,className:`underline hover:text-amber-900 dark:hover:text-amber-100 inline-flex items-center gap-1`,children:[e(H?.reason===`internal_storage`||H?.reason===`internal_history`||H?.reason===`ftps_cooloff`||H?.reason===`ftp_transfer_failed`?`archives.no3mfBanner.docsLinkInternalStorage`:`archives.no3mfBanner.docsLink`),(0,Z.jsx)(Ce,{className:`w-3 h-3`})]})]})]})]}),(0,Z.jsx)(`button`,{onClick:Se,className:`text-amber-800/70 dark:text-amber-200/60 hover:text-amber-900 dark:hover:text-amber-200 flex-shrink-0 p-1 -m-1`,title:e(`archives.no3mfBanner.dismissLabel`),"aria-label":e(`archives.no3mfBanner.dismissLabel`),children:(0,Z.jsx)(L,{className:`w-4 h-4`})})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-8`,children:[(0,Z.jsx)(`div`,{children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(`h1`,{className:`text-2xl font-bold text-white flex items-center gap-3`,children:[(0,Z.jsx)(ke,{className:`w-7 h-7 text-bambu-green`}),`Archives`]}),(0,Z.jsxs)(`p`,{className:`text-bambu-gray mt-1`,children:[Un?.length||0,` of `,_n?.length||0,` prints`]})]}),(0,Z.jsx)(`select`,{className:`mt-0.5 px-3 py-1.5 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-bambu-gray-light text-sm focus:border-bambu-green focus:outline-none`,value:G,onChange:e=>Ke(e.target.value),children:sn.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.label},e.id))})]})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-wrap`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsxs)(V,{variant:`secondary`,onClick:()=>tt(!et),disabled:nt,children:[nt?(0,Z.jsx)(P,{className:`w-4 h-4 animate-spin`}):(0,Z.jsx)(ee,{className:`w-4 h-4`}),`Export`]}),et&&(0,Z.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 w-48 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg shadow-xl z-20`,children:[(0,Z.jsxs)(`button`,{className:`w-full px-4 py-2 text-left text-white hover:bg-bambu-dark-tertiary transition-colors flex items-center gap-2 rounded-t-lg`,onClick:async()=>{tt(!1),q(!0);try{let{blob:t,filename:i}=await r.exportArchives({format:`csv`,printerId:m||void 0,status:G===`failed`?`failed`:void 0,search:f||void 0}),a=URL.createObjectURL(t),o=document.createElement(`a`);o.href=a,o.download=i,o.click(),URL.revokeObjectURL(a),n(e(`archives.toast.exportDownloaded`))}catch{n(e(`archives.toast.exportFailed`),`error`)}finally{q(!1)}},children:[(0,Z.jsx)(rt,{className:`w-4 h-4`}),`Export as CSV`]}),(0,Z.jsxs)(`button`,{className:`w-full px-4 py-2 text-left text-white hover:bg-bambu-dark-tertiary transition-colors flex items-center gap-2 rounded-b-lg`,onClick:async()=>{tt(!1),q(!0);try{let{blob:t,filename:i}=await r.exportArchives({format:`xlsx`,printerId:m||void 0,status:G===`failed`?`failed`:void 0,search:f||void 0}),a=URL.createObjectURL(t),o=document.createElement(`a`);o.href=a,o.download=i,o.click(),URL.revokeObjectURL(a),n(e(`archives.toast.exportDownloaded`))}catch{n(e(`archives.toast.exportFailed`),`error`)}finally{q(!1)}},children:[(0,Z.jsx)(ee,{className:`w-4 h-4`}),`Export as Excel`]})]})]}),I.size>=2&&I.size<=5&&(0,Z.jsxs)(V,{variant:`secondary`,onClick:()=>at(!0),children:[(0,Z.jsx)(re,{className:`w-4 h-4`}),`Compare (`,I.size,`)`]}),!Yn&&(0,Z.jsxs)(V,{variant:`secondary`,onClick:()=>Ae(!0),children:[(0,Z.jsx)(Be,{className:`w-4 h-4`}),`Select`]}),(0,Z.jsxs)(V,{onClick:()=>fe(!0),disabled:!i(`archives:create`),title:i(`archives:create`)?void 0:e(`archives.permission.noCreate`),children:[(0,Z.jsx)($e,{className:`w-4 h-4`}),`Upload 3MF`]}),i(`archives:purge`)&&(0,Z.jsxs)(V,{variant:`secondary`,onClick:()=>ht(!0),title:e(`archivePurge.headerTooltip`),children:[(0,Z.jsx)(U,{className:`w-4 h-4 mr-2`}),e(`archivePurge.headerButton`)]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center border border-bambu-dark-tertiary rounded-lg overflow-hidden flex-shrink-0 w-fit mb-4`,children:[(0,Z.jsx)(`button`,{className:`p-2 ${W===`grid`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Ve(`grid`),title:e(`archives.gridView`),children:(0,Z.jsx)(se,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{className:`p-2 ${W===`list`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Ve(`list`),title:e(`archives.listView`),children:(0,Z.jsx)(ce,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{className:`p-2 ${W===`calendar`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Ve(`calendar`),title:e(`archives.calendarView`),children:(0,Z.jsx)(gt,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{className:`p-2 ${W===`log`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Ve(`log`),title:e(`archives.logView`),children:(0,Z.jsx)(_t,{className:`w-4 h-4`})})]}),W!==`log`&&(0,Z.jsx)(B,{className:`mb-6`,children:(0,Z.jsxs)(z,{className:`py-4`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col md:flex-row gap-3 md:gap-4 md:items-center md:flex-wrap`,children:[(0,Z.jsxs)(`div`,{className:`w-full md:flex-1 relative md:min-w-[200px]`,children:[(0,Z.jsx)(pe,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,Z.jsx)(`input`,{ref:u,type:`text`,placeholder:e(`archives.searchPlaceholder`),className:`w-full pl-10 pr-4 py-3 md:py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:f,onChange:e=>p(e.target.value)})]}),(0,Z.jsxs)(`div`,{className:`flex gap-2 md:gap-4 overflow-x-auto pb-1 md:pb-0 -mx-4 px-4 md:mx-0 md:px-0 md:flex-wrap scrollbar-hide`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,Z.jsx)(M,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:m||``,onChange:e=>h(e.target.value?Number(e.target.value):null),children:[(0,Z.jsx)(`option`,{value:``,children:`All Printers`}),yn?.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,Z.jsx)(le,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:v||``,onChange:e=>b(e.target.value||null),children:[(0,Z.jsx)(`option`,{value:``,children:`All Materials`}),Bn.map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e))]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,Z.jsx)(vt,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:F,onChange:e=>ue(e.target.value),children:[(0,Z.jsx)(`option`,{value:`all`,children:`All Files`}),(0,Z.jsx)(`option`,{value:`gcode`,children:`Sliced (GCODE)`}),(0,Z.jsx)(`option`,{value:`source`,children:`Source Only`})]})]}),(0,Z.jsxs)(`button`,{onClick:()=>k(!O),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${O?`bg-yellow-100 dark:bg-yellow-500/20 border-yellow-500 text-yellow-700 dark:text-yellow-400`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:e(O?`archives.showAll`:`archives.showFavoritesOnly`),children:[(0,Z.jsx)(Ee,{className:`w-4 h-4 ${O?`fill-yellow-400`:``}`}),(0,Z.jsx)(`span`,{className:`text-sm hidden md:inline`,children:`Favorites`})]}),(0,Z.jsxs)(`button`,{onClick:()=>te(!A),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${A?`bg-red-100 dark:bg-red-500/20 border-red-500 text-red-700 dark:text-red-400`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:e(A?`archives.showFailedPrints`:`archives.hideFailedPrints`),children:[(0,Z.jsx)(y,{className:`w-4 h-4 `}),(0,Z.jsx)(`span`,{className:`text-sm hidden md:inline`,children:`Hide Failed`})]}),(0,Z.jsxs)(`button`,{onClick:()=>ne(!j),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${j?`bg-amber-100 dark:bg-amber-500/20 border-amber-500 text-amber-700 dark:text-amber-400`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:e(`archives.filterUnconfirmedTitle`),children:[(0,Z.jsx)(Qe,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{className:`text-sm hidden md:inline`,children:e(`archives.filterUnconfirmed`)})]}),(0,Z.jsxs)(`button`,{onClick:()=>ie(!N),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${N?`bg-purple-100 dark:bg-purple-500/20 border-purple-500 text-purple-700 dark:text-purple-400`:`bg-bambu-dark border-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:e(`archives.hideDuplicates`),children:[(0,Z.jsx)(D,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{className:`text-sm hidden md:inline`,children:e(`archives.hideDuplicates`)})]}),Hn.length>0&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,Z.jsx)(Re,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:ae||``,onChange:e=>oe(e.target.value||null),children:[(0,Z.jsx)(`option`,{value:``,children:`All Tags`}),Hn.map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e))]}),(0,Z.jsx)(`button`,{onClick:()=>ut(!0),className:`p-2 rounded-lg bg-bambu-dark border border-bambu-dark-tertiary text-bambu-gray hover:text-white hover:border-bambu-green transition-colors`,title:e(`archives.manageTags`),children:(0,Z.jsx)(We,{className:`w-4 h-4`})})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,Z.jsx)(d,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none`,value:He,onChange:e=>Ue(e.target.value),children:[(0,Z.jsx)(`option`,{value:`date-desc`,children:e(`archives.sortNewest`)}),(0,Z.jsx)(`option`,{value:`date-asc`,children:e(`archives.sortOldest`)}),(0,Z.jsxs)(`option`,{value:`name-asc`,children:[e(`archives.sortName`),` A-Z`]}),(0,Z.jsxs)(`option`,{value:`name-desc`,children:[e(`archives.sortName`),` Z-A`]}),(0,Z.jsx)(`option`,{value:`size-desc`,children:e(`archives.sortLargest`)}),(0,Z.jsx)(`option`,{value:`size-asc`,children:e(`archives.sortSmallest`)})]})]})]}),nr&&(0,Z.jsxs)(V,{variant:`ghost`,size:`sm`,onClick:tr,className:`text-bambu-gray hover:text-white`,children:[(0,Z.jsx)(L,{className:`w-4 h-4`}),`Reset`]})]}),Vn.length>0&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-3 mt-4 pt-4 border-t border-bambu-dark-tertiary`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Colors:`}),x.size>1&&(0,Z.jsx)(`button`,{onClick:()=>T(e=>e===`or`?`and`:`or`),className:`px-2 py-0.5 text-xs rounded transition-colors ${w===`and`?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:w===`or`?`Match ANY selected color`:`Match ALL selected colors`,children:w.toUpperCase()}),(0,Z.jsx)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:Vn.map(e=>(0,Z.jsx)(`button`,{onClick:()=>$n(e),className:`w-6 h-6 rounded-full border-2 transition-all ${x.has(e)?`border-bambu-green scale-110`:`border-white/20 hover:border-white/40`}`,style:{backgroundColor:e},title:e},e))}),x.size>0&&(0,Z.jsxs)(`button`,{onClick:er,className:`text-xs text-bambu-gray hover:text-white flex items-center gap-1`,children:[(0,Z.jsx)(L,{className:`w-3 h-3`}),`Clear`]})]})]})}),(0,Z.jsx)(Wt,{}),vn?(0,Z.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:e(`archives.loadingArchives`)}):Un?.length===0&&W!==`log`?(0,Z.jsx)(B,{children:(0,Z.jsxs)(z,{className:`text-center py-12`,children:[(0,Z.jsx)(`p`,{className:`text-bambu-gray`,children:e(f?`archives.noArchivesSearch`:`archives.noArchivesYet`)}),(0,Z.jsx)(`p`,{className:`text-sm text-bambu-gray mt-2`,children:`Archives are created automatically when prints complete`})]})}):W===`calendar`?(0,Z.jsx)(B,{className:`p-6`,children:(0,Z.jsx)(Nt,{archives:Un||[],onArchiveClick:e=>{p(``),Ve(`grid`),yt(e.id)},highlightedArchiveId:J})}):W===`grid`?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6`,children:Jn?.map(t=>(0,Z.jsx)(rn,{archive:t,printerName:t.printer_id?zn.get(t.printer_id)||`Unknown`:t.sliced_for_model||`No Printer`,printerMap:zn,isSelected:I.has(t.id),onSelect:Xn,selectionMode:Yn,projects:bn,isHighlighted:t.id===J,timeFormat:Tn,preferredSlicer:En,useSlicerApi:Dn,currency:On,t:e,onNavigateToArchive:gn},t.id))}),(0,Z.jsx)(ln,{pageIndex:qe,pageSize:Ye,totalRows:Wn,totalPages:qn,onPageChange:Je,onPageSizeChange:e=>{Xe(e),Je(0)},t:e})]}):W===`list`?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(B,{children:(0,Z.jsxs)(`div`,{className:`divide-y divide-bambu-dark-tertiary`,children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-12 gap-4 px-4 py-3 text-xs text-bambu-gray font-medium`,children:[(0,Z.jsx)(`div`,{className:`col-span-1`}),(0,Z.jsx)(`div`,{className:`col-span-4`,children:`Name`}),(0,Z.jsx)(`div`,{className:`col-span-2`,children:`Printer`}),(0,Z.jsx)(`div`,{className:`col-span-2`,children:`Date`}),(0,Z.jsx)(`div`,{className:`col-span-1`,children:`Size`}),(0,Z.jsx)(`div`,{className:`col-span-2 text-right`,children:`Actions`})]}),Jn?.map(t=>(0,Z.jsx)(an,{archive:t,printerName:t.printer_id?zn.get(t.printer_id)||`Unknown`:t.sliced_for_model||`No Printer`,isSelected:I.has(t.id),onSelect:Xn,selectionMode:Yn,projects:bn,isHighlighted:t.id===J,preferredSlicer:En,useSlicerApi:Dn,t:e,onNavigateToArchive:gn},t.id))]})}),(0,Z.jsx)(ln,{pageIndex:qe,pageSize:Ye,totalRows:Wn,totalPages:qn,onPageChange:Je,onPageSizeChange:e=>{Xe(e),Je(0)},t:e})]}):W===`log`?(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[(0,Z.jsx)(B,{children:(0,Z.jsx)(z,{className:`py-3`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col md:flex-row gap-3 md:items-center md:flex-wrap`,children:[(0,Z.jsxs)(`div`,{className:`flex-1 relative md:min-w-[200px]`,children:[(0,Z.jsx)(pe,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,Z.jsx)(`input`,{type:`text`,placeholder:e(`archives.searchPlaceholder`),className:`w-full pl-10 pr-4 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:f,onChange:e=>{p(e.target.value),Q(0)}})]}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:m||``,onChange:e=>{h(e.target.value?Number(e.target.value):null),Q(0)},children:[(0,Z.jsx)(`option`,{value:``,children:e(`archives.log.allPrinters`)}),yn?.map(e=>(0,Z.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:Y||``,onChange:e=>{St(e.target.value||null),Q(0)},children:[(0,Z.jsx)(`option`,{value:``,children:e(`archives.log.allUsers`)}),Sn?.map(e=>(0,Z.jsx)(`option`,{value:e.username,children:e.username},e.id))]}),(0,Z.jsxs)(`select`,{className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:wt||``,onChange:e=>{Et(e.target.value||null),Q(0)},children:[(0,Z.jsx)(`option`,{value:``,children:e(`archives.log.allStatuses`)}),(0,Z.jsx)(`option`,{value:`completed`,children:e(`archives.status.completed`)}),(0,Z.jsx)(`option`,{value:`failed`,children:e(`archives.status.failed`)}),(0,Z.jsx)(`option`,{value:`stopped`,children:e(`archives.status.stopped`)}),(0,Z.jsx)(`option`,{value:`cancelled`,children:e(`archives.log.cancelled`)}),(0,Z.jsx)(`option`,{value:`skipped`,children:e(`archives.log.skipped`)})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.dateFrom`)}),(0,Z.jsx)(`input`,{type:`date`,className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:kt,onChange:e=>{At(e.target.value),Q(0)}})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`label`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.dateTo`)}),(0,Z.jsx)(`input`,{type:`date`,className:`px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-white focus:border-bambu-green focus:outline-none text-sm`,value:jt,onChange:e=>{Mt(e.target.value),Q(0)}})]}),(0,Z.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>fn(!0),className:`flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium text-bambu-gray border border-bambu-dark-tertiary rounded-lg hover:bg-bambu-dark-tertiary transition-colors`,title:e(`inventory.configureColumns`),children:[(0,Z.jsx)(E,{className:`w-4 h-4`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:e(`archives.log.columns`)})]}),(0,Z.jsxs)(V,{variant:`danger`,size:`sm`,onClick:()=>It(!0),disabled:!i(`archives:delete_all`)||In.isPending,children:[(0,Z.jsx)(U,{className:`w-4 h-4`}),e(`archives.log.clearLog`)]})]})]})})}),(0,Z.jsx)(B,{children:wn?(0,Z.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,Z.jsx)(P,{className:`w-6 h-6 animate-spin text-bambu-green`})}):Cn?.items.length?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Z.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{className:`border-b border-bambu-dark-tertiary text-bambu-gray text-left`,children:[hn.map(t=>{let n=Zt.has(t),r=pn.column===t,i=e(qt[t]??t);return(0,Z.jsx)(`th`,{scope:`col`,"aria-sort":r?pn.direction===`asc`?`ascending`:`descending`:`none`,className:`px-4 py-3 font-medium ${Nn.has(t)?`text-right`:``}`,children:n?(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>jn(t),className:`inline-flex items-center gap-1 font-medium transition-colors hover:text-bambu-green ${r?`text-bambu-green`:``}`,title:e(`archives.log.sortBy`,{column:i}),children:[i,r?pn.direction===`asc`?(0,Z.jsx)(_,{className:`w-3.5 h-3.5`}):(0,Z.jsx)(g,{className:`w-3.5 h-3.5`}):(0,Z.jsx)(d,{className:`w-3.5 h-3.5 opacity-30`})]}):i},t)}),(0,Z.jsx)(`th`,{className:`px-4 py-3 font-medium w-10`,"aria-label":e(`common.actions`)})]})}),(0,Z.jsx)(`tbody`,{className:`divide-y divide-bambu-dark-tertiary`,children:Cn.items.map(t=>(0,Z.jsxs)(`tr`,{className:`hover:bg-bambu-dark-secondary/50`,children:[hn.map(e=>(0,Z.jsx)(`td`,{className:`px-4 py-3 ${Nn.has(e)?`text-right`:``}`,children:Pn(e,t)},e)),(0,Z.jsx)(`td`,{className:`px-4 py-3 text-right`,children:(0,Z.jsxs)(`div`,{className:`inline-flex items-center gap-2`,children:[(0,Z.jsx)(`button`,{type:`button`,onClick:()=>{Vt(t),Ut(t.failure_reason||``),Xt(t.status)},disabled:Rn.isPending||!(i(`archives:update_all`)||i(`archives:update_own`)),title:i(`archives:update_all`)||i(`archives:update_own`)?e(`archives.log.editEntryTitle`):e(`archives.permission.noEdit`),className:`text-bambu-gray hover:text-bambu-blue disabled:opacity-40 disabled:hover:text-bambu-gray transition-colors`,children:(0,Z.jsx)(xe,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{type:`button`,onClick:()=>Rt(t.id),disabled:Ln.isPending||!(i(`archives:delete_all`)||i(`archives:delete_own`)),title:i(`archives:delete_all`)||i(`archives:delete_own`)?e(`archives.log.deleteEntryTitle`):e(`archives.permission.noDelete`),className:`text-bambu-gray hover:text-red-600 dark:hover:text-red-400 disabled:opacity-40 disabled:hover:text-bambu-gray transition-colors`,children:(0,Z.jsx)(U,{className:`w-4 h-4`})})]})})]},t.id))})]})}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-bambu-dark-tertiary flex-wrap gap-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Z.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.showing`,{count:Math.min(Pt+$,Cn.total),total:Cn.total})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`label`,{className:`text-xs text-bambu-gray`,children:e(`archives.log.rowsPerPage`)}),(0,Z.jsxs)(`select`,{className:`px-2 py-1 bg-bambu-dark border border-bambu-dark-tertiary rounded text-white text-xs focus:border-bambu-green focus:outline-none`,value:$,onChange:e=>{nn(Number(e.target.value)),Q(0)},children:[(0,Z.jsx)(`option`,{value:10,children:`10`}),(0,Z.jsx)(`option`,{value:25,children:`25`}),(0,Z.jsx)(`option`,{value:50,children:`50`}),(0,Z.jsx)(`option`,{value:100,children:`100`})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsxs)(`span`,{className:`text-sm text-bambu-gray`,children:[e(`archives.log.page`),` `,Math.floor(Pt/$)+1,` / `,Math.max(1,Math.ceil(Cn.total/$))]}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,onClick:()=>Q(Math.max(0,Pt-$)),disabled:Pt===0,children:(0,Z.jsx)(Ze,{className:`w-4 h-4`})}),(0,Z.jsx)(V,{variant:`secondary`,size:`sm`,onClick:()=>Q(Pt+$),disabled:Pt+$>=Cn.total,children:(0,Z.jsx)(Me,{className:`w-4 h-4`})})]})]})]}):(0,Z.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:e(`archives.log.noEntries`)})})]}):null,de&&(0,Z.jsx)(Ct,{onClose:()=>{fe(!1),he([])},initialFiles:me}),dt&&(0,Z.jsx)(Tt,{onClose:()=>ht(!1)}),Ne&&(0,Z.jsx)(K,{title:e(`archives.modal.deleteArchives`),message:e(`archives.modal.deleteArchivesConfirm`,{count:I.size}),confirmText:e(`archives.modal.deleteCount`,{count:I.size}),variant:`danger`,onConfirm:()=>{Fn.mutate(Array.from(I)),Pe(!1)},onCancel:()=>Pe(!1)}),Fe&&(0,Z.jsx)(Dt,{selectedIds:Array.from(I),existingTags:Hn,onClose:()=>Ie(!1)}),Le&&(0,Z.jsx)(Ot,{selectedIds:Array.from(I),onClose:()=>ze(!1)}),it&&I.size>=2&&I.size<=5&&(0,Z.jsx)(Bt,{archiveIds:Array.from(I),onClose:()=>{at(!1),R(new Set),Ae(!1)}}),lt&&(0,Z.jsx)(Gt,{onClose:()=>ut(!1)}),(0,Z.jsx)(mt,{isOpen:dn,onClose:()=>fn(!1),columns:kn,defaultColumns:An,onSave:Mn}),Ft&&(0,Z.jsx)(K,{title:e(`archives.log.clearLogTitle`),message:e(`archives.log.clearLogConfirm`),confirmText:e(`archives.log.clearLogButton`),variant:`danger`,onConfirm:()=>{In.mutate(),It(!1)},onCancel:()=>It(!1)}),Lt!==null&&(0,Z.jsx)(K,{title:e(`archives.log.deleteEntryTitle`),message:e(`archives.log.deleteEntryConfirm`),confirmText:e(`common.delete`),variant:`danger`,onConfirm:()=>{Ln.mutate(Lt),Rt(null)},onCancel:()=>Rt(null)}),zt!==null&&(0,Z.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,onClick:()=>Vt(null),children:(0,Z.jsxs)(`div`,{className:`bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-lg w-full max-w-md mx-4 p-6`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(`h3`,{className:`text-lg font-semibold text-white mb-4`,children:e(`archives.log.editEntryTitle`)}),(0,Z.jsx)(`p`,{className:`text-xs text-bambu-gray mb-4`,children:e(`archives.log.editEntryDescription`)}),(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:e(`editArchive.status`)}),(0,Z.jsxs)(`select`,{value:Kt,onChange:e=>Xt(e.target.value),className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded text-white text-sm focus:border-bambu-green focus:outline-none`,children:[(0,Z.jsx)(`option`,{value:`completed`,children:e(`archives.log.statuses.completed`,{defaultValue:`completed`})}),(0,Z.jsx)(`option`,{value:`failed`,children:e(`archives.log.statuses.failed`,{defaultValue:`failed`})}),(0,Z.jsx)(`option`,{value:`stopped`,children:e(`archives.log.statuses.stopped`,{defaultValue:`stopped`})}),(0,Z.jsx)(`option`,{value:`cancelled`,children:e(`archives.log.statuses.cancelled`,{defaultValue:`cancelled`})}),(0,Z.jsx)(`option`,{value:`skipped`,children:e(`archives.log.statuses.skipped`,{defaultValue:`skipped`})})]})]}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:e(`editArchive.failureReason`)}),(0,Z.jsxs)(`select`,{value:Ht,onChange:e=>Ut(e.target.value),className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded text-white text-sm focus:border-bambu-green focus:outline-none`,children:[(0,Z.jsx)(`option`,{value:``,children:e(`editArchive.selectReason`)}),je.map(t=>(0,Z.jsx)(`option`,{value:t,children:e(`editArchive.failureReasons.${t}`)},t))]})]})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2 mt-6`,children:[(0,Z.jsx)(V,{variant:`secondary`,onClick:()=>Vt(null),children:e(`common.cancel`)}),(0,Z.jsx)(V,{variant:`primary`,onClick:()=>{let e={};if(Ht!==(zt.failure_reason||``)&&(e.failure_reason=Ht||null),Kt!==zt.status&&(e.status=Kt),Object.keys(e).length===0){Vt(null);return}Rn.mutate({id:zt.id,body:e})},disabled:Rn.isPending,children:Rn.isPending?e(`editArchive.saving`):e(`common.save`)})]})]})})]})}function ln({pageIndex:e,pageSize:t,totalRows:n,totalPages:r,onPageChange:i,onPageSizeChange:a,t:o}){let s=t===-1;if(r<=1&&!s)return null;let c=s?n||1:t;return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between pt-2 text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-bambu-gray`,children:s?`${n} ${o(`archives.prints`)}`:(0,Z.jsxs)(Z.Fragment,{children:[o(`archives.pagination.showing`),` `,e*c+1,` `,o(`archives.pagination.to`),` `,Math.min((e+1)*c,n),` `,o(`archives.pagination.of`),` `,n,` `,o(`archives.prints`)]})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-bambu-gray`,children:o(`archives.pagination.show`)}),(0,Z.jsxs)(`select`,{value:t,onChange:e=>a(Number(e.target.value)),className:`px-2 py-1 bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded text-white text-sm focus:outline-none focus:border-bambu-green`,children:[[25,50,100,200].map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e)),(0,Z.jsx)(`option`,{value:-1,children:o(`archives.pagination.all`)})]}),!s&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`button`,{onClick:()=>i(0),disabled:e===0,className:`p-1.5 rounded text-bambu-gray hover:text-white disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,children:(0,Z.jsx)(b,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{onClick:()=>i(Math.max(0,e-1)),disabled:e===0,className:`p-1.5 rounded text-bambu-gray hover:text-white disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,children:(0,Z.jsx)(Ze,{className:`w-4 h-4`})}),(0,Z.jsxs)(`span`,{className:`text-bambu-gray px-2 whitespace-nowrap`,children:[o(`archives.pagination.page`),` `,e+1,` `,o(`archives.pagination.of`),` `,r]}),(0,Z.jsx)(`button`,{onClick:()=>i(Math.min(r-1,e+1)),disabled:e>=r-1,className:`p-1.5 rounded text-bambu-gray hover:text-white disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,children:(0,Z.jsx)(Me,{className:`w-4 h-4`})}),(0,Z.jsx)(`button`,{onClick:()=>i(r-1),disabled:e>=r-1,className:`p-1.5 rounded text-bambu-gray hover:text-white disabled:opacity-30 disabled:cursor-not-allowed transition-colors`,children:(0,Z.jsx)(x,{className:`w-4 h-4`})})]})]})]})}export{cn as ArchivesPage};
|