ArchivesPage-CsBkUVly.js 222 KB

123456789
  1. import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{C as t,T as n,a as r,k as i,p as a,t as o,w as s,x as c}from"./client-A76-KVrT.js";import{d as l,f as u,l as d,n as f}from"./chunk-62JRHF6Z-BO6hRIIV.js";import{n as p}from"./QueryClientProvider-CRNM5YV-.js";import{t as m}from"./useQuery-wqfadfch.js";import{t as h}from"./useMutation-BVCKaUQ-.js";import{t as g}from"./archive-B-1F8N5G.js";import{t as _}from"./arrow-up-down-DEcCkvCm.js";import{t as v}from"./RichTextEditor-OJtNVMZ3.js";import{t as y}from"./box-dob8B1j7.js";import{t as b}from"./calendar-Bv09YDCQ.js";import{t as x}from"./camera-CBRrAwtG.js";import{t as S}from"./check-Shq9G40Z.js";import{a as C,i as w,n as T,r as E}from"./info-BD7StG1O.js";import{t as ee}from"./chevron-right-BM_zFOte.js";import{t as D}from"./chevron-left-BhrGzqkk.js";import{n as O,t as k}from"./chevrons-right-jGXt-8PK.js";import{n as A,r as j}from"./ToastContext-gD4w_stu.js";import{t as M}from"./circle-check-e34mLwpu.js";import{a as te,l as N,t as ne}from"./PrintModal-YM7BO4Q0.js";import{t as re}from"./clock-ZK0CazNO.js";import{n as P,t as ie}from"./ThumbnailHoverPreview-Cil0Mh8X.js";import{t as F}from"./cog-mfL_SqlG.js";import{t as I}from"./columns-2-DJAmcg-f.js";import{t as L}from"./combine-DgGcCbcW.js";import{t as R}from"./copy-3k0AUIiC.js";import{t as ae}from"./download-CB6MgRVB.js";import{t as oe}from"./ellipsis-vertical-J1QZfE1W.js";import{n as se,r as z,t as ce}from"./scan-search-BABTlaL4.js";import{t as le}from"./external-link-EJ0ZOb5-.js";import{t as B}from"./file-box-HPjNkksb.js";import{t as ue}from"./file-spreadsheet-e9jbobeJ.js";import{t as de}from"./file-text-DNSfWoGQ.js";import{n as fe,t as pe}from"./ContextMenu-XvDFYZrn.js";import{t as V}from"./folder-kanban-Cmh1v_Iv.js";import{t as H}from"./folder-open-CgtRjtBa.js";import{t as me}from"./funnel-Bs-XMxx-.js";import{t as he}from"./gauge-C3KAwUTD.js";import{t as ge}from"./git-compare-4rGzzgPl.js";import{t as _e}from"./globe-BxS4zY0N.js";import{n as U,t as ve}from"./SliceModal-CRaaExwJ.js";import{a as ye,i as be,n as xe,o as W,r as Se,s as Ce,t as we}from"./ConfirmOutcomeDialog-CZt5lzm2.js";import{t as Te}from"./history-Cu0PKmJy.js";import{t as Ee}from"./image-BDzH9Gnz.js";import{t as De}from"./layers-BxB5YWup.js";import{t as G}from"./layout-grid-DA5Sr0hy.js";import{t as Oe}from"./list-DIUI9LeG.js";import{t as K}from"./loader-circle-DJN5VMIH.js";import{n as ke,t as Ae}from"./star-C1KfzRrq.js";import{t as je}from"./package-DYZrW_L7.js";import{t as Me}from"./pause-CFoBnPJo.js";import{t as Ne}from"./pen-line-wxfuIWhZ.js";import{t as Pe}from"./pencil-Buhy8v8F.js";import{t as Fe}from"./play-B4TdHL_r.js";import{t as Ie}from"./plus-D2cnA3m7.js";import{t as Le}from"./printer-BWcjSJIp.js";import{t as q}from"./qr-code-IKHOqk47.js";import{t as Re}from"./save-BW-kbAiF.js";import{t as ze}from"./search-D6gSsOv5.js";import{t as Be}from"./settings-CR58QTYg.js";import{t as Ve}from"./skip-forward-BRXFfmAD.js";import{t as He}from"./square-check-big-VcF0ptKN.js";import{t as Ue}from"./square-BgO8o2QK.js";import{t as We}from"./sticky-note-DrPa4Bya.js";import{t as Ge}from"./tag-BRCbR4yO.js";import{t as J}from"./trash-2-DV6pNwZ0.js";import{t as Ke}from"./triangle-alert-D0RZMfK7.js";import{t as qe}from"./upload-DZVLMVk_.js";import{t as Je}from"./user-Ba6VgK1N.js";import{t as Ye}from"./video-KgGwH2ws.js";import{t as Xe}from"./wrench-MLdwilpm.js";import{t as Y}from"./x-Cyyi0JrJ.js";import{t as Ze}from"./zap-CfyYP-qw.js";import{n as Qe}from"./AuthContext-57h2rDlo.js";import{i as $e,n as et,t as X}from"./Card-CJ35QTKj.js";import{t as tt}from"./file-DDkFXH-b.js";import{t as Z}from"./Button-eoSsnckq.js";import{t as nt}from"./ConfirmModal-BiPWIQSY.js";import{a as rt,i as it,l as at,o as ot,v as st}from"./date-G9KUauqz.js";import{n as ct}from"./currency-LmqFrzn3.js";import{n as lt}from"./useUiSettings-nZhr467n.js";import{t as ut}from"./projectTree-C5LrJHZP.js";import{n as dt,r as ft,t as pt}from"./usePageFileDrop-rQbvu4ku.js";import{a as mt,c as ht,s as gt}from"./slicer-Dzk41fTq.js";import{t as _t}from"./filamentTypes-Dysa4k6j.js";import{t as vt}from"./MergeDuplicatesModal-Dt1iZkki.js";import{t as yt}from"./ColumnConfigModal-ThkdYl9A.js";import{t as bt}from"./purify.es-B0g7npkC.js";var xt=t(`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`}]]),St=t(`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`}]]),Ct=t(`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`}]]),wt=t(`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`}]]),Tt=t(`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`}]]),Et=t(`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`}]]),Dt=t(`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`}]]),Ot=t(`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`}]]),kt=t(`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`}]]),Q=e(i(),1),$=s(),At=[.25,.5,.75,1,1.5,2,3,4];function jt({archiveId:e,timelapseSrc:t,onClose:i,onSave:a}){let{t:o}=n(),{showToast:s}=A(),c=p(),l=(0,Q.useRef)(null),u=(0,Q.useRef)(null),[d,f]=(0,Q.useState)(!1),[g,_]=(0,Q.useState)(0),[v,y]=(0,Q.useState)(0),[b,x]=(0,Q.useState)(0),[S,C]=(0,Q.useState)(0),[w,T]=(0,Q.useState)(1),[E,ee]=(0,Q.useState)(null),[D,O]=(0,Q.useState)(null),[k,j]=(0,Q.useState)(.8),[M,te]=(0,Q.useState)(!1),{data:N,isLoading:ne}=m({queryKey:[`timelapse-info`,e],queryFn:()=>r.getTimelapseInfo(e)}),{data:re}=m({queryKey:[`timelapse-thumbnails`,e],queryFn:()=>r.getTimelapseThumbnails(e,15)}),P=[`timelapse-job`,e],[ie]=(0,Q.useState)(()=>Date.now()),{data:F,dataUpdatedAt:I}=m({queryKey:P,queryFn:()=>r.getTimelapseJob(e),refetchInterval:e=>e.state.data?.status===`running`&&1e3}),L=F?.status===`running`,R=(0,Q.useRef)(!1);L&&I>=ie&&(R.current=!0),(0,Q.useEffect)(()=>{!F||F.status===`running`||!R.current||(R.current=!1,F.status===`completed`?(s(F.message??``,`success`),a?.(),i()):F.status===`failed`?s(F.error||o(`timelapseEditor.failed`),`error`):s(o(`timelapseEditor.cancelled`),`info`))},[F,a,i,s,o]);let ae=h({mutationFn:()=>r.cancelTimelapseJob(e),onSuccess:e=>c.setQueryData(P,e),onError:e=>s(e.message,`error`)}),oe=h({mutationFn:()=>r.processTimelapse(e,{trimStart:b,trimEnd:S,speed:w,audioVolume:M?0:k,saveMode:`replace`},E||void 0),onSuccess:e=>{R.current=!0,c.setQueryData(P,e)},onError:e=>{s(e.message||o(`timelapseEditor.failed`),`error`)}});(0,Q.useEffect)(()=>{N?.duration&&S===0&&C(N.duration)},[N?.duration,S]),(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&i()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[i]),(0,Q.useEffect)(()=>{let e=l.current;if(!e)return;let t=()=>{let t=e.currentTime;_(t),t>=S&&(e.currentTime=b)},n=()=>{y(e.duration),S===0&&C(e.duration)},r=()=>f(!0),i=()=>f(!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)}},[b,S]),(0,Q.useEffect)(()=>{let e=u.current,t=l.current;!e||!t||!D||(e.currentTime=t.currentTime,e.playbackRate=t.playbackRate,d&&!M?e.play().catch(()=>{}):e.pause())},[d,D,M]),(0,Q.useEffect)(()=>{u.current&&(u.current.volume=M?0:k)},[k,M]),(0,Q.useEffect)(()=>{l.current&&(l.current.playbackRate=w),u.current&&(u.current.playbackRate=w)},[w]);let z=(0,Q.useCallback)(()=>{let e=l.current;e&&(d?e.pause():(e.currentTime<b&&(e.currentTime=b),e.play()))},[d,b]),ce=e=>{let t=l.current;t&&(t.currentTime=Math.max(b,Math.min(S,e)))},le=e=>{let t=e.target.files?.[0];t&&(D&&URL.revokeObjectURL(D),ee(t),O(URL.createObjectURL(t)))},B=()=>{D&&URL.revokeObjectURL(D),ee(null),O(null)};(0,Q.useEffect)(()=>()=>{D&&URL.revokeObjectURL(D)},[D]);let ue=S-b,de=ue/w;return ne?(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-3 text-white`,children:[(0,$.jsx)(K,{className:`w-6 h-6 animate-spin`}),`Loading video info...`]})}):(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:(0,$.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,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary shrink-0`,children:[(0,$.jsxs)(`h3`,{className:`text-lg font-semibold text-white flex items-center gap-2`,children:[(0,$.jsx)(se,{className:`w-5 h-5 text-bambu-green`}),`Edit Timelapse`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[L&&(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>ae.mutate(),disabled:ae.isPending,children:o(`common.cancel`)}),(0,$.jsx)(Z,{variant:`primary`,size:`sm`,onClick:()=>oe.mutate(),disabled:oe.isPending||L,children:oe.isPending||L?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),F?.progress!=null&&L?o(`timelapseEditor.processingPercent`,{percent:Math.round(F.progress*100)}):o(`timelapseEditor.processing`)]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Re,{className:`w-4 h-4`}),`Save`]})}),(0,$.jsx)(`button`,{onClick:i,className:`p-1 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,$.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-4`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(`video`,{ref:l,src:t,className:`w-full max-h-[55dvh] object-contain rounded-lg bg-black`,onClick:z,muted:!!D}),!d&&(0,$.jsx)(`button`,{onClick:z,className:`absolute inset-0 flex items-center justify-center bg-black/30 hover:bg-black/40 transition-colors`,children:(0,$.jsx)(`div`,{className:`p-4 bg-bambu-green rounded-full`,children:(0,$.jsx)(Fe,{className:`w-8 h-8 text-white`})})}),D&&(0,$.jsx)(`audio`,{ref:u,src:D,loop:!0})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,$.jsx)(Et,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:`Trim`}),(0,$.jsxs)(`span`,{className:`ml-auto`,children:[at(b),` - `,at(S),` (`,at(ue),`)`]})]}),(0,$.jsxs)(`div`,{className:`relative h-16 bg-bambu-dark rounded-lg overflow-hidden`,children:[(0,$.jsx)(`div`,{className:`absolute inset-0 flex`,children:re?.thumbnails.map((e,t)=>(0,$.jsx)(`div`,{className:`flex-1 bg-cover bg-center`,style:{backgroundImage:`url(data:image/jpeg;base64,${e})`}},t))}),(0,$.jsx)(`div`,{className:`absolute inset-y-0 left-0 bg-black/60`,style:{width:`${b/v*100}%`}}),(0,$.jsx)(`div`,{className:`absolute inset-y-0 right-0 bg-black/60`,style:{width:`${(v-S)/v*100}%`}}),(0,$.jsx)(`div`,{className:`absolute inset-y-0 border-2 border-bambu-green`,style:{left:`${b/v*100}%`,right:`${(v-S)/v*100}%`}}),(0,$.jsx)(`div`,{className:`absolute top-0 bottom-0 w-0.5 bg-white shadow-lg`,style:{left:`${g/v*100}%`}}),(0,$.jsx)(`input`,{type:`range`,min:0,max:v,step:.1,value:b,onChange:e=>{let t=parseFloat(e.target.value);t<S-1&&(x(t),l.current&&l.current.currentTime<t&&(l.current.currentTime=t))},className:`absolute inset-0 w-full opacity-0 cursor-ew-resize`,style:{clipPath:`inset(0 50% 0 0)`}}),(0,$.jsx)(`input`,{type:`range`,min:0,max:v,step:.1,value:S,onChange:e=>{let t=parseFloat(e.target.value);t>b+1&&C(t)},className:`absolute inset-0 w-full opacity-0 cursor-ew-resize`,style:{clipPath:`inset(0 0 0 50%)`}})]}),(0,$.jsx)(`input`,{type:`range`,min:0,max:v,step:.1,value:g,onChange:e=>ce(parseFloat(e.target.value)),className:`w-full h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
  2. [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
  3. [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full
  4. [&::-webkit-slider-thumb]:cursor-pointer`}),(0,$.jsx)(`div`,{className:`flex items-center justify-center gap-2`,children:(0,$.jsx)(`button`,{onClick:z,className:`p-2 bg-bambu-green hover:bg-bambu-green-dark rounded-lg transition-colors`,children:d?(0,$.jsx)(Me,{className:`w-5 h-5 text-white`}):(0,$.jsx)(Fe,{className:`w-5 h-5 text-white`})})})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,$.jsx)(he,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:`Speed`}),(0,$.jsxs)(`span`,{className:`ml-auto`,children:[w,`x (output: `,at(de),`)`]})]}),(0,$.jsx)(`div`,{className:`flex gap-1`,children:At.map(e=>(0,$.jsxs)(`button`,{onClick:()=>T(e),className:`flex-1 px-2 py-2 text-sm rounded transition-colors ${w===e?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:bg-bambu-dark-tertiary`}`,children:[e,`x`]},e))})]}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-bambu-gray`,children:[(0,$.jsx)(ke,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:`Music Overlay`})]}),E?(0,$.jsxs)(`div`,{className:`flex items-center gap-3 p-3 bg-bambu-dark rounded-lg`,children:[(0,$.jsx)(ke,{className:`w-5 h-5 text-bambu-green`}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,$.jsx)(`p`,{className:`text-sm text-white truncate`,children:E.name}),(0,$.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[(E.size/1024/1024).toFixed(1),` MB`]})]}),(0,$.jsx)(`button`,{onClick:()=>te(!M),className:`p-2 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:M?(0,$.jsx)(kt,{className:`w-4 h-4 text-bambu-gray`}):(0,$.jsx)(Ot,{className:`w-4 h-4 text-bambu-green`})}),(0,$.jsx)(`input`,{type:`range`,min:0,max:1,step:.1,value:k,onChange:e=>j(parseFloat(e.target.value)),className:`w-20 h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
  5. [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
  6. [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full`}),(0,$.jsx)(`button`,{onClick:B,className:`p-2 hover:bg-red-100 dark:hover:bg-red-500/20 rounded transition-colors`,children:(0,$.jsx)(J,{className:`w-4 h-4 text-red-600 dark:text-red-400`})})]}):(0,$.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,$.jsx)(qe,{className:`w-8 h-8 text-bambu-gray`}),(0,$.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:`Drop audio file or click to upload`}),(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray/60`,children:`MP3, WAV, M4A, AAC, OGG`}),(0,$.jsx)(`input`,{type:`file`,accept:`.mp3,.wav,.m4a,.aac,.ogg,audio/*`,onChange:le,className:`hidden`})]})]}),(0,$.jsxs)(`div`,{className:`p-3 bg-bambu-dark rounded-lg text-sm space-y-1`,children:[(0,$.jsxs)(`p`,{className:`text-bambu-gray`,children:[(0,$.jsx)(`span`,{className:`text-white`,children:`Original:`}),` `,at(v),` @ `,N?.width,`x`,N?.height]}),(0,$.jsxs)(`p`,{className:`text-bambu-gray`,children:[(0,$.jsx)(`span`,{className:`text-white`,children:`Output:`}),` `,at(de),` @ `,w,`x speed`,E&&` + music overlay`]})]})]}),oe.isPending&&(0,$.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center gap-4`,children:[(0,$.jsx)(K,{className:`w-12 h-12 text-bambu-green animate-spin`}),(0,$.jsx)(`p`,{className:`text-white text-lg`,children:`Processing timelapse...`}),(0,$.jsx)(`p`,{className:`text-bambu-gray text-sm`,children:`This may take a few moments`})]})]})})}var Mt=[.25,.5,.75,1,1.5,2,3,4];function Nt({src:e,title:t,downloadFilename:r,archiveId:i,onClose:a,onEdit:o}){let{t:s}=n(),c=(0,Q.useRef)(null),[l,u]=(0,Q.useState)(!0),[d,f]=(0,Q.useState)(1),[p,m]=(0,Q.useState)(0),[h,g]=(0,Q.useState)(0),[_,v]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{let e=c.current;e&&(e.playbackRate=d)},[d]),(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]),(0,Q.useEffect)(()=>{let e=c.current;if(!e)return;let t=()=>m(e.currentTime),n=()=>g(e.duration),r=()=>u(!0),i=()=>u(!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 y=()=>{let e=c.current;e&&(l?e.pause():e.play())};return(0,$.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80`,children:[(0,$.jsxs)(`div`,{"data-testid":`timelapse-viewer`,className:`relative bg-bambu-dark-secondary rounded-xl max-w-4xl w-full mx-4 max-h-[calc(100dvh-2rem)] overflow-y-auto`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsxs)(`h3`,{className:`text-lg font-semibold text-white flex items-center gap-2`,children:[(0,$.jsx)(se,{className:`w-5 h-5 text-bambu-green`}),t]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i&&(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:()=>v(!0),children:[(0,$.jsx)(Pe,{className:`w-4 h-4`}),s(`common.edit`)]}),(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:()=>{let t=document.createElement(`a`);t.href=e,t.download=r,t.click()},children:[(0,$.jsx)(ae,{className:`w-4 h-4`}),s(`common.download`)]}),(0,$.jsx)(`button`,{onClick:a,className:`p-1 hover:bg-bambu-dark-tertiary rounded transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,$.jsxs)(`div`,{className:`p-4`,children:[(0,$.jsx)(`video`,{ref:c,src:e,autoPlay:!0,className:`w-full max-h-[calc(100dvh-14rem)] object-contain bg-black rounded-lg`,onClick:y}),(0,$.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray w-12 text-right`,children:at(p)}),(0,$.jsx)(`input`,{type:`range`,min:0,max:h||100,value:p,onChange:e=>{let t=c.current;t&&(t.currentTime=parseFloat(e.target.value))},className:`flex-1 h-1 bg-bambu-dark-tertiary rounded-lg appearance-none cursor-pointer
  7. [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3
  8. [&::-webkit-slider-thumb]:bg-bambu-green [&::-webkit-slider-thumb]:rounded-full
  9. [&::-webkit-slider-thumb]:cursor-pointer`}),(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray w-12`,children:at(h)})]}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`button`,{onClick:()=>{let e=c.current;e&&(e.currentTime=Math.max(0,e.currentTime-5))},className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,title:s(`timelapseViewer.skipBack5s`),children:(0,$.jsx)(Dt,{className:`w-5 h-5 text-bambu-gray`})}),(0,$.jsx)(`button`,{onClick:y,className:`p-2 bg-bambu-green hover:bg-bambu-green-dark rounded-lg transition-colors`,children:l?(0,$.jsx)(Me,{className:`w-5 h-5 text-white`}):(0,$.jsx)(Fe,{className:`w-5 h-5 text-white`})}),(0,$.jsx)(`button`,{onClick:()=>{let e=c.current;e&&(e.currentTime=Math.min(h,e.currentTime+5))},className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,title:s(`timelapseViewer.skipForward5s`),children:(0,$.jsx)(Ve,{className:`w-5 h-5 text-bambu-gray`})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`text-sm text-bambu-gray whitespace-nowrap`,children:s(`timelapseViewer.speed`)}),(0,$.jsx)(`div`,{className:`flex gap-1`,children:Mt.map(e=>(0,$.jsxs)(`button`,{onClick:()=>f(e),className:`px-2 py-1 text-xs rounded transition-colors ${d===e?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray hover:bg-bambu-dark-tertiary/80`}`,children:[e,`x`]},e))})]})]})]})]})]}),_&&i&&(0,$.jsx)(jt,{archiveId:i,timelapseSrc:e,onClose:()=>v(!1),onSave:o})]})}var Pt={completed:`bg-bambu-green/20 text-bambu-green`,failed:`bg-red-500/20 text-red-700 dark:text-red-400`,aborted:`bg-red-500/20 text-red-700 dark:text-red-400`,printing:`bg-blue-500/20 text-blue-700 dark:text-blue-400`},Ft=new Set([`completed`,`failed`,`aborted`,`cancelled`,`stopped`]),It=new Set([`failed`,`aborted`]),Lt=`xl:grid xl:grid-cols-[minmax(130px,1.1fr)_minmax(60px,0.5fr)_minmax(90px,0.9fr)_minmax(120px,1fr)_minmax(150px,1.3fr)_minmax(110px,1fr)_minmax(60px,0.5fr)_minmax(140px,1.4fr)]`,Rt=`xl:grid xl:grid-cols-[minmax(130px,1.1fr)_minmax(90px,0.9fr)_minmax(120px,1fr)_minmax(150px,1.3fr)_minmax(110px,1fr)_minmax(60px,0.5fr)_minmax(140px,1.4fr)]`;function zt(e,t){let n=Math.round((e-t)/t*100);return`${n>0?`+`:``}${n}%`}function Bt({archiveId:e,onClose:t}){let{t:i}=n(),[a]=u(),s=Number(a.get(`run`))||null,c=d(),l=p(),{showToast:g}=A(),{hasPermission:_,canModify:v}=Qe(),{data:b}=lt(),S=b?.time_format||`system`,C=ct(b?.currency||`USD`),w=b?.use_slicer_api??!1,[T,E]=(0,Q.useState)(!1),[ee,D]=(0,Q.useState)(void 0),[O,k]=(0,Q.useState)(!1),[j,M]=(0,Q.useState)(!1),[te,N]=(0,Q.useState)(!1),[re,P]=(0,Q.useState)(null),[I,L]=(0,Q.useState)(null),[R,oe]=(0,Q.useState)(null),ce=(0,Q.useRef)(null),[B,ue]=(0,Q.useState)(null),[de,fe]=(0,Q.useState)(s),V=m({queryKey:[`archive`,e],queryFn:()=>r.getArchive(e),enabled:Number.isFinite(e),retry:!1}),H=V.data,{data:me,isLoading:he}=m({queryKey:[`archive-runs`,e],queryFn:()=>r.getArchiveRuns(e),enabled:H!=null&&H.id===e}),{data:ge}=m({queryKey:[`archive-plates`,e],queryFn:()=>r.getArchivePlates(e),enabled:H!=null&&H.id===e,staleTime:300*1e3}),_e=m({queryKey:[`archive`,e,`delete-impact`],queryFn:()=>r.getArchiveDeleteImpact(e),enabled:j,staleTime:0}),U=T||ee!==void 0||O||j||re!=null||I!=null||R!=null;(0,Q.useEffect)(()=>{if(U)return;let e=e=>{if(e.key!==`Escape`)return;let n=e.target;n&&(n.tagName===`INPUT`||n.tagName===`TEXTAREA`||n.tagName===`SELECT`||n.isContentEditable)||t()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[U,t]),(0,Q.useEffect)(()=>{let e=document.body.style.overflow;return document.body.style.overflow=`hidden`,()=>{document.body.style.overflow=e}},[]),(0,Q.useEffect)(()=>{H&&H.id!==e&&c(`/archives/${H.id}${s?`?run=${s}`:``}`,{replace:!0})},[H,e,s,c]);let be=(0,Q.useMemo)(()=>me?.items??[],[me]),W=(0,Q.useMemo)(()=>ge?.is_multi_plate?ge.plates:[],[ge]),Se=W.length>1||be.some(e=>e.plate_id!=null&&e.plate_id>1),Ce=B==null?be:be.filter(e=>e.plate_id===B),Te=(0,Q.useRef)(null),Ee=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{s&&be.some(e=>e.id===s)&&Ee.current?.scrollIntoView?.({behavior:`smooth`,block:`center`})},[s,be]);let De=h({mutationFn:t=>r.deleteArchive(e,t),onSuccess:()=>{ye(l),g(i(`archives.toast.archiveDeleted`)),t()},onError:()=>g(i(`archives.toast.failedDeleteArchive`),`error`)});if(V.isLoading)return(0,$.jsx)(Vt,{onClose:t,label:i(`nav.archives`),children:(0,$.jsx)(`div`,{className:`flex justify-center p-16`,children:(0,$.jsx)(K,{className:`w-8 h-8 text-bambu-gray animate-spin`})})});if(!H){let e=V.error instanceof o&&V.error.status===404;return(0,$.jsx)(Vt,{onClose:t,label:i(`nav.archives`),children:(0,$.jsxs)(`div`,{className:`py-12 flex flex-col items-center gap-3 text-bambu-gray`,children:[(0,$.jsx)(`p`,{children:e||!V.error?i(`archivePage.notFound`):i(`archivePage.loadFailed`)}),!e&&V.error&&(0,$.jsx)(Z,{variant:`secondary`,onClick:()=>V.refetch(),children:i(`archivePage.retry`)})]})})}let G=H.print_name||H.filename,Oe=v(`archives`,`update`,H.created_by_id),ke=v(`archives`,`delete`,H.created_by_id),Ae=mt(H),Me=H.file_path?_(`queue:create`)?v(`archives`,`reprint`,H.created_by_id)?void 0:i(`archives.permission.noReprint`):i(`archives.permission.noAddToQueue`):i(`archives.card.noFileForReprint`),Ne=Me===void 0,Fe=H.file_path?w&&!v(`archives`,`reprint`,H.created_by_id)?i(`archives.permission.noReprint`):void 0:i(`archives.card.noFileForReprint`),Ie=H.timelapse_path&&!be.some(e=>e.timelapse_path===H.timelapse_path),q=new Set(be.flatMap(e=>e.photos??[])),Re=(H.photos??[]).filter(e=>!q.has(e)),ze=e=>({photos:e.photos??Re,video:e.timelapse_path?r.getArchiveRunTimelapse(H.id,e.id):e.photos==null&&Ie?r.getArchiveTimelapse(H.id):null}),Be=H.tags?.split(`,`).map(e=>e.trim()).filter(Boolean)??[],Ve=H.failed_run_count??0,He=H.successful_run_count??0,Ue=[H.print_time_seconds?ot(H.print_time_seconds):null,H.filament_used_grams?`${H.filament_used_grams.toFixed(1)} g`:null].filter(Boolean).join(` · `),Ge=[H.print_name&&H.filename!==H.print_name?H.filename:null,H.sliced_for_model?i(`archivePage.slicedFor`,{model:H.sliced_for_model}):null,H.nozzle_diameter?`${H.nozzle_diameter} mm`:null,H.bed_type].filter(Boolean),Ke=()=>{w?k(!0):gt(H.id,G||`model`,`file`,ht(b?.open_in_slicer,b?.preferred_slicer))},qe=[{label:i(`archivePage.preview`),icon:(0,$.jsx)(y,{className:`w-4 h-4`}),onClick:()=>c(`/gcode-viewer?archive=${H.id}`)},{label:i(`archivePage.download`),icon:(0,$.jsx)(ae,{className:`w-4 h-4`}),disabled:!_(`archives:read`),onClick:()=>{r.downloadArchive(H.id,`${G}.3mf`).catch(()=>{g(i(`archivePage.downloadFailed`),`error`)})}},...Ie?[{label:i(`archivePage.video`),icon:(0,$.jsx)(se,{className:`w-4 h-4`}),onClick:()=>L({kind:`video`,src:r.getArchiveTimelapse(H.id),title:i(`archives.modal.timelapse`,{name:G})})}]:[],...H.photos&&H.photos.length>0?[{label:i(`archivePage.allPhotos`,{count:H.photos.length}),icon:(0,$.jsx)(x,{className:`w-4 h-4`}),onClick:()=>L({kind:`photos`,photos:H.photos,title:G})}]:[],{label:``,divider:!0,onClick:()=>{}},{label:i(`archivePage.delete`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),danger:!0,disabled:!ke,title:ke?void 0:i(`archives.permission.noDelete`),onClick:()=>M(!0)}],Je=[H.layer_height?{label:i(`archivePage.layerHeight`),value:`${H.layer_height} mm`}:null,H.nozzle_diameter?{label:i(`archivePage.nozzle`),value:`${H.nozzle_diameter} mm`}:null,H.bed_type?{label:i(`archivePage.bedType`),value:H.bed_type}:null,H.sliced_for_model?{label:i(`archivePage.slicedForLabel`),value:H.sliced_for_model}:null,H.total_layers?{label:i(`archivePage.layers`),value:String(H.total_layers)}:null,H.file_size?{label:i(`archivePage.size`),value:tt(H.file_size)}:null,{label:i(`archivePage.archived`),value:rt(H.created_at,S)}].filter(e=>e!==null);return(0,$.jsxs)(Vt,{onClose:t,label:G,children:[(0,$.jsxs)(`header`,{className:`flex flex-col md:flex-row md:flex-wrap gap-6 items-start pr-10`,"data-testid":`archive-header`,children:[(0,$.jsx)(ie,{src:H.thumbnail_path?r.getArchiveThumbnail(H.id):null,size:480,className:`w-full sm:w-56 aspect-[4/3] rounded-lg bg-bambu-dark overflow-hidden flex items-center justify-center shrink-0`,children:H.thumbnail_path?(0,$.jsx)(`img`,{src:r.getArchiveThumbnail(H.id),alt:G,className:`w-full h-full object-contain`}):(0,$.jsx)(je,{className:`w-16 h-16 text-bambu-gray/50`})}),(0,$.jsxs)(`div`,{className:`flex-[999_1_24rem] min-w-0 space-y-3`,children:[(0,$.jsx)(`h2`,{id:`archive-modal-title`,className:`text-2xl font-bold text-white break-words min-w-0`,children:G}),(Ge.length>0||H.project_name)&&(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray break-words`,children:[Ge.join(` · `),H.project_name&&H.project_id!=null&&(0,$.jsxs)($.Fragment,{children:[Ge.length>0&&` · `,i(`archivePage.project`),` `,(0,$.jsx)(f,{to:`/projects/${H.project_id}`,className:`text-bambu-green hover:underline`,children:H.project_name})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2 text-sm`,children:[W.length>1&&(0,$.jsx)(Ut,{children:i(`archivePage.platesCount`,{count:W.length})}),(0,$.jsx)(Ut,{children:i(`archivePage.printsCount`,{count:H.run_count??0})}),He>0&&(0,$.jsx)(Ut,{className:`bg-bambu-green/20 text-bambu-green`,children:i(`archivePage.goodCount`,{count:He})}),Ve>0&&(0,$.jsx)(Ut,{className:`bg-red-500/20 text-red-700 dark:text-red-400`,children:i(`archivePage.failedCount`,{count:Ve})}),Ue&&(0,$.jsx)(Ut,{children:i(`archivePage.estimate`,{value:Ue})})]}),H.notes&&(0,$.jsxs)(`div`,{className:`flex gap-2 text-sm text-bambu-gray-light bg-bambu-dark rounded-lg p-3`,children:[(0,$.jsx)(We,{className:`w-4 h-4 shrink-0 mt-0.5 text-bambu-gray`}),(0,$.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:H.notes})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[Ae&&(0,$.jsxs)(Z,{onClick:()=>D(H.plate_id),disabled:!Ne,title:Me,children:[(0,$.jsx)(Le,{className:`w-4 h-4`}),i(`archivePage.print`)]}),(0,$.jsxs)(Z,{variant:Ae?`secondary`:`primary`,onClick:Ke,disabled:Fe!==void 0,title:Fe,children:[w?(0,$.jsx)(F,{className:`w-4 h-4`}):(0,$.jsx)(le,{className:`w-4 h-4`}),i(`archivePage.slice`)]}),(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>E(!0),disabled:!Oe,title:Oe?void 0:i(`archives.permission.noUpdateArchives`),children:[(0,$.jsx)(Pe,{className:`w-4 h-4`}),i(`archivePage.edit`)]}),(0,$.jsx)(`button`,{ref:ce,type:`button`,"aria-label":i(`archivePage.more`),"aria-haspopup":`menu`,"aria-expanded":R!=null,onClick:()=>{if(R){oe(null);return}let e=ce.current?.getBoundingClientRect();oe({x:e?e.left:0,y:e?e.bottom+4:0})},className:`inline-flex items-center justify-center w-11 min-h-[44px] md:min-h-0 md:h-9 rounded-lg bg-bambu-dark-tertiary hover:bg-bambu-gray-dark text-white transition-colors focus:outline-none focus:ring-2 focus:ring-bambu-gray`,children:(0,$.jsx)(z,{className:`w-4 h-4`})}),R&&(0,$.jsx)(pe,{x:R.x,y:R.y,items:qe,anchorRef:ce,onClose:()=>{oe(null),ce.current?.focus()}})]})]}),(0,$.jsx)(Ht,{title:i(`archivePage.fileTitle`),children:(0,$.jsx)(X,{children:(0,$.jsx)(et,{className:`p-4`,children:(0,$.jsxs)(`dl`,{className:`grid grid-cols-2 md:grid-cols-4 gap-x-6 gap-y-3 text-sm`,children:[Je.map(e=>(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:e.label}),(0,$.jsx)(`dd`,{className:`text-white truncate`,children:e.value})]},e.label)),H.makerworld_url&&(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:i(`archivePage.source`)}),(0,$.jsx)(`dd`,{children:(0,$.jsx)(`a`,{href:H.makerworld_url,target:`_blank`,rel:`noopener noreferrer`,className:`text-bambu-green hover:underline`,children:`MakerWorld`})})]}),Be.length>0&&(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:i(`archivePage.tags`)}),(0,$.jsx)(`dd`,{className:`flex flex-wrap gap-1 mt-0.5`,children:Be.map(e=>(0,$.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded bg-bambu-dark text-bambu-gray-light`,children:e},e))})]})]})})})}),W.length>1&&(0,$.jsx)(Ht,{title:i(`archivePage.plates`),children:(0,$.jsx)(`ul`,{className:`grid grid-cols-[repeat(auto-fill,minmax(min(100%,20rem),1fr))] gap-4`,children:W.map(e=>(0,$.jsx)(Wt,{archiveId:H.id,plate:e,runs:be.filter(t=>t.plate_id===e.index),printable:Ae,printBlocked:Me,onMedia:L,mediaOf:ze,name:G,onPrint:()=>D(e.index),onShowPrints:()=>{ue(e.index),Te.current?.scrollIntoView?.({behavior:`smooth`,block:`start`})}},e.index))})}),(0,$.jsxs)(`section`,{ref:Te,className:`space-y-3 scroll-mt-4`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(`h3`,{className:`mr-3 text-sm font-semibold uppercase tracking-wider text-bambu-gray`,children:i(`archivePage.printsTitle`)}),W.length>1&&[null,...W.map(e=>e.index)].map(e=>(0,$.jsx)(`button`,{type:`button`,"aria-pressed":B===e,onClick:()=>ue(e),className:`h-9 px-3.5 rounded-full border text-sm transition-colors ${B===e?`border-bambu-green bg-bambu-green/20 text-bambu-green`:`border-bambu-dark-tertiary bg-bambu-dark-secondary text-white hover:border-bambu-gray`}`,children:e==null?i(`archivePage.allPlates`):i(`archives.card.plateNumber`,{index:e})},e??`all`))]}),he?(0,$.jsx)(`div`,{className:`flex justify-center py-6`,children:(0,$.jsx)(K,{className:`w-6 h-6 text-bambu-gray animate-spin`})}):be.length===0?(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray italic`,children:Ft.has(H.status)?i(`archivePage.printedBeforeLog`,{status:i(`archives.runLog.status.${H.status}`,{defaultValue:H.status})}):i(`archivePage.noPrints`)}):Ce.length===0?(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray italic`,children:i(`archivePage.noPrintsOfPlate`)}):(0,$.jsx)(`div`,{className:`rounded-lg border border-bambu-dark-tertiary bg-bambu-dark-secondary`,children:(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`hidden ${Se?Lt:Rt} gap-3 px-4 py-3 text-xs uppercase tracking-wide text-bambu-gray border-b border-bambu-dark-tertiary`,children:[(0,$.jsx)(`span`,{children:i(`archivePage.colDate`)}),Se&&(0,$.jsx)(`span`,{children:i(`archivePage.colPlate`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colPrinter`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colResult`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colTime`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colGrams`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colCost`)}),(0,$.jsx)(`span`,{children:i(`archivePage.colFilament`)})]}),Ce.map(e=>(0,$.jsx)(Gt,{run:e,archiveId:H.id,name:G,showPlate:Se,open:de===e.id,onToggle:()=>fe(de===e.id?null:e.id),highlighted:e.id===s,itemRef:e.id===s?Ee:void 0,timeFormat:S,currency:C,canAnswer:Oe,printable:Ae,printBlocked:Me,media:ze(e),onConfirm:()=>P(e.id),onReprint:()=>D(e.plate_id??H.plate_id),onMedia:L},e.id))]})})]}),T&&(0,$.jsx)(xe,{archive:H,onClose:()=>E(!1)}),ee!==void 0&&(0,$.jsx)(ne,{mode:`create`,archiveId:H.id,archiveName:G,preselectPlateId:ee,onClose:()=>D(void 0)}),O&&(0,$.jsx)(ve,{source:{kind:`archive`,id:H.id,filename:G||`model`},onClose:()=>k(!1)}),re!=null&&(0,$.jsx)(we,{archiveId:H.id,runId:re,change:be.find(e=>e.id===re)?.user_verdict!=null,onClose:()=>{P(null),l.invalidateQueries({queryKey:[`archive-runs`,H.id]})}}),I?.kind===`video`&&(0,$.jsx)(Nt,{src:I.src,title:I.title,downloadFilename:`${G}_timelapse.mp4`,onClose:()=>L(null)}),I?.kind===`photos`&&(0,$.jsx)(ft,{archiveId:H.id,archiveName:I.title,photos:I.photos,onClose:()=>L(null)}),j&&(0,$.jsxs)(nt,{title:i(`archives.modal.deleteArchive`),message:i(`archives.modal.deleteConfirm`,{name:G}),confirmText:i(`archives.modal.deleteButton`),variant:`danger`,confirmDisabled:(_e.data?.currently_printing??0)>0,onConfirm:()=>{De.mutate(te),M(!1),N(!1)},onCancel:()=>{M(!1),N(!1)},children:[(_e.data?.related_queue_items??0)>0&&(0,$.jsx)(`div`,{className:(_e.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:(_e.data?.currently_printing??0)>0?i(`archives.modal.deleteBlockedByPrinting`,{count:_e.data.currently_printing}):i(`archives.modal.deleteQueueItemsWarning`,{count:_e.data.related_queue_items})}),(0,$.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer text-sm text-bambu-gray`,children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 accent-red-500`,checked:te,onChange:e=>N(e.target.checked)}),(0,$.jsx)(`span`,{children:i(`archives.modal.deletePurgeStats`)})]})]})]})}function Vt({onClose:e,label:t,children:r}){let{t:i}=n();return(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 bg-black/60 flex items-start justify-center p-2 sm:p-4 overflow-y-auto`,onMouseDown:t=>{t.target===t.currentTarget&&t.clientX<t.currentTarget.clientWidth&&e()},"data-testid":`archive-modal-backdrop`,children:(0,$.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":t,className:`relative w-full max-w-[1600px] min-w-0 my-auto bg-bambu-dark-secondary border border-bambu-dark-tertiary rounded-xl shadow-2xl p-4 md:p-6 space-y-7`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:e,"aria-label":i(`archivePage.close`),className:`absolute top-3 right-3 p-2 rounded-lg text-bambu-gray hover:text-white hover:bg-bambu-dark-tertiary transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})}),r]})})}function Ht({title:e,children:t}){return(0,$.jsxs)(`section`,{className:`space-y-3`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold uppercase tracking-wider text-bambu-gray`,children:e}),t]})}function Ut({className:e=`bg-bambu-dark text-bambu-gray-light`,children:t}){return(0,$.jsx)(`span`,{className:`px-2.5 py-1 rounded-full ${e}`,children:t})}function Wt({archiveId:e,plate:t,runs:i,printable:a,printBlocked:o,onMedia:s,mediaOf:c,name:l,onPrint:u,onShowPrints:d}){let{t:f}=n(),p=f(`archives.card.plateNumber`,{index:t.index}),m=t.objects.length>0?t.objects.join(`, `):t.name,h=[...new Set(i.flatMap(e=>c(e).photos))],g=i.map(e=>c(e).video).find(Boolean),_=i.filter(e=>e.status===`completed`).length,v=i.filter(e=>It.has(e.status)).length,y=i.find(e=>e.status===`completed`&&e.duration_seconds&&!e.duration_unmeasured),b=y?.duration_seconds&&t.print_time_seconds?zt(y.duration_seconds,t.print_time_seconds):null,x=[t.print_time_seconds?ot(t.print_time_seconds):null,t.filament_used_grams?`${t.filament_used_grams.toFixed(1)} g`:null].filter(Boolean).join(` · `);return(0,$.jsx)(`li`,{"data-testid":`archive-plate-${t.index}`,children:(0,$.jsx)(X,{className:`h-full`,children:(0,$.jsxs)(et,{className:`p-4 flex gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 shrink-0`,children:[(0,$.jsx)(ie,{src:t.has_thumbnail?r.getArchivePlateThumbnail(e,t.index):null,size:400,className:`w-28 h-28 rounded-lg bg-bambu-dark overflow-hidden flex items-center justify-center`,children:t.has_thumbnail?(0,$.jsx)(`img`,{src:r.getArchivePlateThumbnail(e,t.index),alt:p,className:`w-full h-full object-contain`}):(0,$.jsx)(je,{className:`w-8 h-8 text-bambu-gray/50`})}),h.length>0&&(0,$.jsxs)(`button`,{type:`button`,onClick:()=>s({kind:`photos`,photos:h,title:l}),className:`relative w-28 h-20 rounded-lg overflow-hidden bg-bambu-dark-tertiary`,"aria-label":f(`archivePage.photos`,{count:h.length}),children:[(0,$.jsx)(`img`,{src:r.getArchivePhotoUrl(e,h[0]),alt:``,className:`w-full h-full object-cover`}),h.length>1&&(0,$.jsx)(`span`,{className:`absolute bottom-1 right-1 text-xs px-1.5 rounded bg-black/70 text-white`,children:h.length})]})]}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0 space-y-1.5 text-sm`,children:[(0,$.jsxs)(`p`,{className:`font-semibold text-white truncate`,title:m??void 0,children:[p,m&&(0,$.jsxs)(`span`,{className:`font-normal text-bambu-gray`,children:[` · `,m]})]}),x&&(0,$.jsx)(`p`,{className:`text-bambu-gray`,children:f(`archivePage.plateEstimate`,{value:x})}),t.filaments.length>0&&(0,$.jsx)(`p`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-bambu-gray`,children:t.filaments.map(e=>(0,$.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-white/20`,style:{backgroundColor:e.color||void 0},"aria-hidden":`true`}),e.type]},e.slot_id))}),(0,$.jsxs)(`p`,{className:`flex flex-wrap gap-x-3 text-bambu-gray`,children:[(0,$.jsx)(`span`,{className:`text-bambu-green`,children:f(`archivePage.goodCount`,{count:_})}),(0,$.jsx)(`span`,{className:`text-red-700 dark:text-red-400`,children:f(`archivePage.failedCount`,{count:v})}),b&&(0,$.jsx)(`span`,{children:f(`archivePage.lastVsEstimate`,{value:b})})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2 pt-1`,children:[g&&(0,$.jsxs)(Z,{size:`sm`,variant:`secondary`,onClick:()=>s({kind:`video`,src:g,title:f(`archives.modal.timelapse`,{name:l})}),children:[(0,$.jsx)(se,{className:`w-3.5 h-3.5`}),f(`archivePage.video`)]}),a&&(0,$.jsxs)(Z,{size:`sm`,onClick:u,disabled:o!==void 0,title:o,children:[(0,$.jsx)(Le,{className:`w-3.5 h-3.5`}),f(`archivePage.printThisPlate`)]}),(0,$.jsx)(Z,{size:`sm`,variant:`secondary`,onClick:d,disabled:i.length===0,children:f(`archivePage.showPlatePrints`)})]})]})]})})})}function Gt({run:e,archiveId:t,name:i,showPlate:a,open:o,onToggle:s,highlighted:c,itemRef:l,timeFormat:u,currency:d,canAnswer:f,printable:m,printBlocked:g,media:_,onConfirm:v,onReprint:y,onMedia:b}){let{t:x}=n(),S=p(),{showToast:w}=A(),{canModify:T}=Qe(),[E,D]=(0,Q.useState)(!1),[O,k]=(0,Q.useState)(e.notes??``),j=T(`archives`,`update`,e.created_by_id),M=h({mutationFn:t=>r.updatePrintLogEntry(e.id,{notes:t}),onSuccess:()=>{S.invalidateQueries({queryKey:[`archive-runs`,t]}),S.invalidateQueries({queryKey:[`print-log`]}),D(!1),w(x(`archivePage.noteSaved`))},onError:()=>w(x(`archivePage.noteFailed`),`error`)}),te=be(e.user_verdict_source),ne=e.status===`completed`&&e.confirm_requested&&e.user_verdict==null,re=`archive-run-${e.id}-details`,P=e.duration_seconds?`${e.duration_unmeasured?`~`:``}${ot(e.duration_seconds)}`:null,ie=P??`—`;if(P&&e.estimate_seconds){let t=ot(e.estimate_seconds);ie=e.status===`completed`?e.duration_unmeasured?x(`archivePage.withEstimate`,{value:P,estimate:t}):x(`archivePage.timeVsEstimate`,{value:P,estimate:t,delta:zt(e.duration_seconds,e.estimate_seconds)}):x(`archivePage.timeOf`,{value:P,estimate:t})}let F=e.filament_used_grams==null?`—`:e.estimate_grams?x(`archivePage.withEstimate`,{value:`${e.filament_used_grams.toFixed(1)} g`,estimate:`${e.estimate_grams.toFixed(1)} g`}):`${e.filament_used_grams.toFixed(1)} g`,I=(e.filament_color??``).split(`,`).map(e=>e.trim()).filter(Boolean),L=[...new Set((e.filament_type??``).split(`,`).map(e=>e.trim()).filter(Boolean))];return(0,$.jsxs)(`div`,{ref:l,"data-testid":`archive-run-${e.id}`,className:`border-b border-bambu-dark-tertiary last:border-b-0 ${c?`ring-2 ring-inset ring-bambu-green`:``}`,children:[(0,$.jsxs)(`div`,{onClick:s,className:`flex flex-wrap gap-x-4 gap-y-1.5 ${a?Lt:Rt} xl:gap-3 px-4 py-3 items-center text-sm text-white cursor-pointer ${o?`bg-bambu-dark-tertiary/60`:`hover:bg-bambu-dark-tertiary/30`}`,children:[(0,$.jsx)(`span`,{className:`min-w-0 basis-full xl:basis-auto`,children:(0,$.jsxs)(`button`,{type:`button`,"aria-expanded":o,"aria-controls":re,onClick:e=>{e.stopPropagation(),s()},className:`flex items-center gap-1.5 text-left font-medium hover:text-bambu-green`,children:[o?(0,$.jsx)(C,{className:`w-4 h-4 shrink-0`}):(0,$.jsx)(ee,{className:`w-4 h-4 shrink-0`}),rt(e.started_at||e.created_at,u)]})}),a&&(0,$.jsx)(`span`,{children:e.plate_id==null?`—`:x(`archives.card.plateNumber`,{index:e.plate_id})}),(0,$.jsx)(`span`,{className:`truncate`,children:e.printer_name||x(`archivePage.noPrinter`)}),(0,$.jsxs)(`span`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,$.jsx)(`span`,{className:`text-xs px-2 py-0.5 rounded font-medium ${Pt[e.status]??`bg-bambu-dark text-bambu-gray`}`,children:x(`archives.runLog.status.${e.status}`,{defaultValue:e.status})}),e.user_verdict===`good`&&(0,$.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded bg-bambu-green/80 text-white flex items-center gap-1`,title:`${x(`archives.card.confirmedGoodTitle`)}${te?` — ${x(te)}`:``}`,children:[(0,$.jsx)(N,{className:`w-3 h-3`}),x(`archives.card.confirmedGood`)]}),e.user_verdict===`reject`&&(0,$.jsxs)(`span`,{className:`text-xs px-1.5 py-0.5 rounded bg-status-error/80 text-white flex items-center gap-1`,title:`${x(`archives.card.rejectedTitle`)}${te?` — ${x(te)}`:``}`,children:[(0,$.jsx)(Ce,{className:`w-3 h-3`}),x(`archives.card.rejected`)]}),ne&&(0,$.jsxs)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),v()},disabled:!f,title:f?void 0:x(`archives.permission.noUpdateArchives`),className:`text-xs px-2 py-0.5 rounded bg-amber-500/90 enabled:hover:bg-amber-500 text-black flex items-center gap-1`,children:[(0,$.jsx)(N,{className:`w-3 h-3`}),x(`archives.card.confirmPending`)]})]}),(0,$.jsx)(`span`,{children:ie}),(0,$.jsx)(`span`,{children:F}),(0,$.jsx)(`span`,{children:e.cost==null?`—`:`${d}${e.cost.toFixed(2)}`}),(0,$.jsxs)(`span`,{className:`flex items-center gap-2 min-w-0 text-bambu-gray-light`,"data-testid":`run-filament`,children:[I.length>0&&(0,$.jsx)(`span`,{className:`flex items-center gap-0.5 flex-wrap shrink-0`,children:I.map((e,t)=>(0,$.jsx)(`span`,{className:`w-3 h-3 rounded-full border border-black/20`,style:{backgroundColor:e.startsWith(`#`)?e:void 0},title:e},t))}),(0,$.jsx)(`span`,{className:`truncate`,children:L.join(`, `)||(I.length===0?`—`:``)})]})]}),o&&(0,$.jsxs)(`div`,{id:re,className:`px-4 pt-2 pb-5 bg-bambu-dark/60 flex flex-wrap gap-6`,children:[(_.video||_.photos.length>0)&&(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[_.photos.slice(0,3).map(e=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>b({kind:`photos`,photos:_.photos,title:i}),className:`w-36 h-24 rounded-lg overflow-hidden bg-bambu-dark-tertiary`,"aria-label":x(`archivePage.photos`,{count:_.photos.length}),children:(0,$.jsx)(`img`,{src:r.getArchivePhotoUrl(t,e),alt:``,className:`w-full h-full object-cover`})},e)),_.video&&(0,$.jsxs)(`button`,{type:`button`,onClick:()=>b({kind:`video`,src:_.video,title:x(`archives.modal.timelapse`,{name:i})}),className:`w-36 h-24 rounded-lg bg-bambu-dark-tertiary hover:bg-bambu-dark-tertiary/70 flex flex-col items-center justify-center gap-1 text-xs text-bambu-gray-light`,children:[(0,$.jsx)(se,{className:`w-5 h-5`}),x(`archivePage.video`)]})]}),(0,$.jsxs)(`dl`,{className:`flex-[1_1_22rem] grid grid-cols-[auto_minmax(0,1fr)] gap-x-6 gap-y-2 text-sm`,children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:x(`archivePage.startedEnded`)}),(0,$.jsxs)(`dd`,{className:`text-white`,children:[rt(e.started_at||e.created_at,u),e.completed_at&&` – ${rt(e.completed_at,u)}`]}),e.energy_kwh!=null&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:x(`archivePage.energy`)}),(0,$.jsxs)(`dd`,{className:`text-white`,children:[`${e.energy_kwh.toFixed(2)} kWh`,e.energy_cost!=null&&` · ${d}${e.energy_cost.toFixed(2)}`]})]}),e.failure_reason&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:x(`archivePage.failureReason`)}),(0,$.jsx)(`dd`,{className:`text-red-700 dark:text-red-400`,children:x(`editArchive.failureReasons.${e.failure_reason}`,{defaultValue:e.failure_reason})})]}),e.created_by_username&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:x(`archivePage.startedByLabel`)}),(0,$.jsx)(`dd`,{className:`text-white`,children:e.created_by_username})]}),(0,$.jsx)(`dt`,{className:`text-bambu-gray`,children:x(`archivePage.printNote`)}),(0,$.jsx)(`dd`,{className:`text-white`,children:E?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`label`,{className:`sr-only`,htmlFor:`run-note-${e.id}`,children:x(`archivePage.printNote`)}),(0,$.jsx)(`textarea`,{id:`run-note-${e.id}`,value:O,onChange:e=>k(e.target.value),rows:3,className:`w-full px-3 py-2 bg-bambu-dark border border-bambu-dark-tertiary rounded-lg text-sm text-white focus:border-bambu-green focus:outline-none`,placeholder:x(`archivePage.notePlaceholder`)}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(Z,{size:`sm`,onClick:()=>M.mutate(O),disabled:M.isPending,children:x(`common.save`)}),(0,$.jsx)(Z,{size:`sm`,variant:`secondary`,onClick:()=>{k(e.notes??``),D(!1)},children:x(`common.cancel`)})]})]}):(0,$.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:e.notes||`—`})})]}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[e.status===`completed`&&(0,$.jsxs)(Z,{size:`sm`,variant:`secondary`,onClick:v,disabled:!f,title:f?void 0:x(`archives.permission.noUpdateArchives`),children:[(0,$.jsx)(N,{className:`w-3.5 h-3.5`}),e.user_verdict?x(`archivePage.changeOutcome`):x(`archivePage.setOutcome`)]}),!E&&j&&(0,$.jsxs)(Z,{size:`sm`,variant:`secondary`,onClick:()=>D(!0),children:[(0,$.jsx)(We,{className:`w-3.5 h-3.5`}),e.notes?x(`archivePage.editNote`):x(`archivePage.addNote`)]}),m&&(0,$.jsxs)(Z,{size:`sm`,variant:`secondary`,onClick:y,disabled:g!==void 0,title:g,children:[(0,$.jsx)(Le,{className:`w-3.5 h-3.5`}),x(`archivePage.reprintThis`)]})]})]})]})}function Kt({onClose:e,initialFiles:t}){let{t:i}=n(),a=p(),{showToast:o}=A(),s=(0,Q.useRef)(null),[c,l]=(0,Q.useState)(()=>t?.filter(e=>e.name.endsWith(`.3mf`)).map(e=>({file:e,status:`pending`}))||[]),[u,d]=(0,Q.useState)(!1),[f,m]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e]);let g=h({mutationFn:e=>r.uploadArchivesBulk(e),onSuccess:(e,t)=>{m(e),a.invalidateQueries({queryKey:[`archives`]}),a.invalidateQueries({queryKey:[`archiveStats`]}),l(n=>n.map(n=>{let r=e.results.find(e=>t[e.index]===n.file),i=e.errors.find(e=>t[e.index]===n.file);return r?{...n,status:`success`,archiveId:r.id}:i?{...n,status:`error`,error:i.error}:n})),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:()=>{l(e=>e.map(e=>({...e,status:`error`,error:`Upload failed`}))),o(`Upload failed`,`error`)}}),_=(0,Q.useCallback)(e=>{e.preventDefault(),d(!0)},[]),v=(0,Q.useCallback)(e=>{e.preventDefault(),d(!1)},[]),y=(0,Q.useCallback)(e=>{e.preventDefault(),d(!1);let t=Array.from(e.dataTransfer.files).filter(e=>e.name.endsWith(`.3mf`));t.length>0&&l(e=>[...e,...t.map(e=>({file:e,status:`pending`}))])},[]),b=(0,Q.useCallback)(e=>{let t=Array.from(e.target.files||[]).filter(e=>e.name.endsWith(`.3mf`));t.length>0&&l(e=>[...e,...t.map(e=>({file:e,status:`pending`}))]),s.current&&(s.current.value=``)},[]),x=(0,Q.useCallback)(e=>{l(t=>t.filter((t,n)=>n!==e))},[]),S=()=>{if(c.length===0)return;let e=c.filter(e=>e.status===`pending`);e.length!==0&&(l(e=>e.map(e=>e.status===`pending`?{...e,status:`uploading`}:e)),g.mutate(e.map(e=>e.file)))},C=c.filter(e=>e.status===`pending`).length,w=g.isPending;return(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,$.jsx)(X,{className:`w-full max-w-2xl max-h-[90vh] flex flex-col`,children:(0,$.jsxs)(et,{className:`p-0 flex flex-col h-full`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:i(`uploadModal.title`)}),(0,$.jsx)(`button`,{onClick:e,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsxs)(`div`,{className:`border-2 border-dashed rounded-lg p-8 text-center transition-colors ${u?`border-bambu-green bg-bambu-green/10`:`border-bambu-dark-tertiary hover:border-bambu-gray`}`,onDragOver:_,onDragLeave:v,onDrop:y,children:[(0,$.jsx)(qe,{className:`w-12 h-12 mx-auto mb-4 text-bambu-gray`}),(0,$.jsx)(`p`,{className:`text-white mb-2`,children:i(`uploadModal.dragDrop`)}),(0,$.jsx)(`p`,{className:`text-bambu-gray text-sm mb-4`,children:i(`uploadModal.or`)}),(0,$.jsx)(Z,{variant:`secondary`,onClick:()=>s.current?.click(),disabled:w,children:i(`uploadModal.browseFiles`)}),(0,$.jsx)(`input`,{ref:s,type:`file`,accept:`.3mf`,multiple:!0,className:`hidden`,onChange:b})]})}),(0,$.jsx)(`div`,{className:`px-4 pb-4`,children:(0,$.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:i(`uploadModal.extractionInfo`)})}),c.length>0&&(0,$.jsx)(`div`,{className:`px-4 pb-4 max-h-60 overflow-y-auto`,children:(0,$.jsx)(`div`,{className:`space-y-2`,children:c.map((e,t)=>(0,$.jsxs)(`div`,{className:`flex items-center gap-3 p-3 bg-bambu-dark rounded-lg`,children:[(0,$.jsx)(fe,{className:`w-5 h-5 text-bambu-gray flex-shrink-0`}),(0,$.jsx)(`span`,{className:`flex-1 text-white text-sm truncate`,children:e.file.name}),(0,$.jsxs)(`span`,{className:`text-xs text-bambu-gray`,children:[(e.file.size/(1024*1024)).toFixed(1),` MB`]}),e.status===`pending`&&(0,$.jsx)(`button`,{onClick:()=>x(t),className:`text-bambu-gray hover:text-red-600 dark:hover:text-red-400 transition-colors`,disabled:w,children:(0,$.jsx)(Y,{className:`w-4 h-4`})}),e.status===`uploading`&&(0,$.jsx)(K,{className:`w-4 h-4 text-bambu-green animate-spin`}),e.status===`success`&&(0,$.jsx)(j,{className:`w-4 h-4 text-bambu-green`}),e.status===`error`&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`text-xs text-red-700 dark:text-red-400`,children:e.error}),(0,$.jsx)(E,{className:`w-4 h-4 text-red-600 dark:text-red-400`})]})]},`${e.file.name}-${t}`))})}),f&&(0,$.jsx)(`div`,{className:`px-4 pb-4`,children:(0,$.jsx)(`div`,{className:`p-3 bg-bambu-dark rounded-lg`,children:(0,$.jsxs)(`p`,{className:`text-sm text-white`,children:[(0,$.jsx)(`span`,{className:`text-bambu-green`,children:f.uploaded}),` `,i(`uploadModal.uploaded`),f.failed>0&&(0,$.jsxs)($.Fragment,{children:[`, `,(0,$.jsx)(`span`,{className:`text-red-700 dark:text-red-400`,children:f.failed}),` `,i(`uploadModal.failed`)]})]})})}),(0,$.jsxs)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary`,children:[(0,$.jsx)(Z,{variant:`secondary`,onClick:e,className:`flex-1`,children:i(f?`common.close`:`common.cancel`)}),!f&&(0,$.jsx)(Z,{onClick:S,disabled:C===0||w,className:`flex-1`,children:w?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),i(`uploadModal.uploading`)]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(qe,{className:`w-4 h-4`}),i(`uploadModal.upload`),` `,C>0&&`(${C})`]})})]})]})})})}var qt=365;function Jt({onClose:e,initialDays:t}){let{t:i}=n(),a=p(),{showToast:o}=A(),[s,c]=(0,Q.useState)(t??qt),[l,u]=(0,Q.useState)(!1),[d,f]=(0,Q.useState)(s);(0,Q.useEffect)(()=>{let e=window.setTimeout(()=>f(s),300);return()=>window.clearTimeout(e)},[s]);let g=m({queryKey:[`archive-purge-preview`,d,l],queryFn:()=>r.previewArchivePurge(d,l),enabled:d>=1}),_=h({mutationFn:()=>r.executeArchivePurge(d,l),onSuccess:t=>{o(i(`archivePurge.toast.success`,{count:t.deleted}),`success`),a.invalidateQueries({queryKey:[`archives`]}),a.invalidateQueries({queryKey:[`archive-stats`]}),e()},onError:e=>o(e.message||i(`archivePurge.toast.failed`),`error`)});(0,Q.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&&s===d&&!g.isFetching&&!_.isPending;return(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4`,children:(0,$.jsxs)(`div`,{className:`bg-white dark:bg-gray-900 rounded-lg shadow-xl max-w-lg w-full`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700`,children:[(0,$.jsxs)(`h2`,{className:`text-lg font-semibold text-gray-900 dark:text-gray-100 flex items-center gap-2`,children:[(0,$.jsx)(J,{className:`w-5 h-5`}),i(`archivePurge.title`)]}),(0,$.jsx)(`button`,{onClick:e,className:`text-gray-400 hover:text-gray-600 dark:hover:text-gray-200`,"aria-label":i(`common.close`),disabled:_.isPending,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,$.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:i(`archivePurge.description`)}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{htmlFor:`archive-purge-days`,className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:i(`archivePurge.ageLabel`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`input`,{id:`archive-purge-days`,type:`number`,min:1,max:3650,value:s,onChange:e=>c(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,$.jsx)(`span`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:i(`archivePurge.days`)})]})]}),(0,$.jsxs)(`div`,{className:`rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/30 p-3`,children:[(0,$.jsx)(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-gray-600 dark:text-gray-300 mb-2`,children:i(`archivePurge.effectsTitle`)}),(0,$.jsxs)(`ul`,{className:`text-xs text-gray-700 dark:text-gray-300 space-y-1 list-disc pl-4`,children:[(0,$.jsx)(`li`,{children:i(`archivePurge.effect1`)}),(0,$.jsx)(`li`,{children:i(`archivePurge.effect2`)}),(0,$.jsx)(`li`,{children:i(`archivePurge.effect3`)}),(0,$.jsx)(`li`,{children:i(`archivePurge.effect4`)})]})]}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400`,children:[(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),` `,i(`archivePurge.previewLoading`)]}):g.isError?(0,$.jsx)(`div`,{className:`text-sm text-red-600 dark:text-red-400`,children:g.error?.message??i(`archivePurge.previewFailed`)}):(0,$.jsxs)(`div`,{className:`text-sm text-gray-900 dark:text-gray-100`,children:[(0,$.jsx)(`div`,{className:`font-medium`,children:i(`archivePurge.previewSummary`,{count:y,size:tt(b)})}),v?.sample_filenames&&v.sample_filenames.length>0&&(0,$.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,$.jsx)(`li`,{className:`truncate`,children:e},e)),y>v.sample_filenames.length&&(0,$.jsx)(`li`,{className:`list-none italic text-gray-500`,children:i(`archivePurge.andMore`,{count:y-v.sample_filenames.length})})]})]})}),(0,$.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,$.jsx)(`input`,{type:`checkbox`,checked:l,onChange:e=>u(e.target.checked),disabled:_.isPending,className:`mt-0.5 shrink-0`}),(0,$.jsxs)(`span`,{className:`text-xs text-gray-700 dark:text-gray-300`,children:[(0,$.jsx)(`span`,{className:`font-medium block mb-0.5`,children:i(`archivePurge.purgeStatsLabel`)}),(0,$.jsx)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:i(`archivePurge.purgeStatsHint`)})]})]}),(0,$.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,$.jsx)(Ke,{className:`w-4 h-4 mt-0.5 shrink-0`}),(0,$.jsx)(`span`,{children:i(`archivePurge.warning`)})]})]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 p-4 border-t border-gray-200 dark:border-gray-700`,children:[(0,$.jsx)(Z,{variant:`secondary`,onClick:e,disabled:_.isPending,children:i(`common.cancel`)}),(0,$.jsx)(Z,{variant:`danger`,disabled:!x,onClick:()=>_.mutate(),children:_.isPending?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(K,{className:`w-4 h-4 animate-spin mr-1`}),i(`archivePurge.purging`)]}):i(`archivePurge.confirmCta`,{count:y})})]})]})})}function Yt({archiveId:e,archiveName:t,onClose:r}){let{t:i}=n();return(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:r,children:(0,$.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,$.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,$.jsx)(Te,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,$.jsx)(`h2`,{className:`text-lg font-semibold text-white truncate`,title:t||``,children:i(`archives.runLog.modalTitle`,{name:t||i(`archives.runLog.modalTitleFallback`)})})]}),(0,$.jsx)(`button`,{onClick:r,className:`text-bambu-gray hover:text-white transition-colors`,title:i(`common.close`),children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsx)(`div`,{className:`p-6 overflow-y-auto flex-1`,children:(0,$.jsx)(W,{archiveId:e})})]})})}function Xt({selectedIds:e,existingTags:t,onClose:n}){let i=p(),{showToast:a}=A(),[o,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(new Set),[u,d]=(0,Q.useState)(`add`);(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]);let f=h({mutationFn:async()=>{let t=Array.from(c),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=u===`add`?[...new Set([...a,...t])]:a.filter(e=>!c.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:u,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`)}}),m=e=>{l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},g=()=>{o.trim()&&!c.has(o.trim())&&(l(e=>new Set([...e,o.trim()])),s(``))};return(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,$.jsx)(X,{className:`w-full max-w-md`,children:(0,$.jsxs)(et,{className:`p-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Ge,{className:`w-5 h-5 text-bambu-green`}),(0,$.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:u===`add`?`Add Tags`:`Remove Tags`})]}),(0,$.jsx)(`button`,{onClick:n,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[u===`add`?`Add`:`Remove`,` tags for `,e.length,` selected archive`,e.length===1?``:`s`]}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(Z,{size:`sm`,variant:u===`add`?`primary`:`secondary`,onClick:()=>d(`add`),children:`Add Tags`}),(0,$.jsx)(Z,{size:`sm`,variant:u===`remove`?`primary`:`secondary`,onClick:()=>d(`remove`),children:`Remove Tags`})]}),u===`add`&&(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.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=>s(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),g())}}),(0,$.jsx)(Z,{size:`sm`,variant:`secondary`,onClick:g,disabled:!o.trim(),children:(0,$.jsx)(Ie,{className:`w-4 h-4`})})]}),t.length>0&&(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:`Existing tags:`}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.map(e=>(0,$.jsx)(`button`,{onClick:()=>m(e),className:`px-2 py-1 rounded text-sm transition-colors ${c.has(e)?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray-light hover:bg-bambu-dark`}`,children:e},e))})]}),c.size>0&&(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`p`,{className:`text-xs text-bambu-gray mb-2`,children:[`Tags to `,u===`add`?`add`:`remove`,`:`]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Array.from(c).map(e=>(0,$.jsxs)(`span`,{className:`px-2 py-1 rounded text-sm flex items-center gap-1 ${u===`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,$.jsx)(`button`,{onClick:()=>m(e),className:`hover:opacity-70`,children:(0,$.jsx)(Y,{className:`w-3 h-3`})})]},e))})]})]}),(0,$.jsxs)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary`,children:[(0,$.jsx)(Z,{variant:`secondary`,onClick:n,className:`flex-1`,children:`Cancel`}),(0,$.jsx)(Z,{onClick:()=>f.mutate(),disabled:c.size===0||f.isPending,className:`flex-1`,children:f.isPending?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),`Processing...`]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ge,{className:`w-4 h-4`}),u===`add`?`Add Tags`:`Remove Tags`]})})]})]})})})}function Zt({selectedIds:e,onClose:t}){let{t:i}=n(),a=p(),{showToast:o}=A(),[s,c]=(0,Q.useState)(``),{data:l,isLoading:u}=m({queryKey:[`projects`],queryFn:()=>r.getProjects()}),d=(0,Q.useMemo)(()=>l?ut([...l].sort((e,t)=>e.name.localeCompare(t.name))):void 0,[l]),f=s.trim().toLowerCase(),g=f?d?.filter(e=>e.name.toLowerCase().includes(f)):d,_=(d?.length??0)>5;(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t]);let v=()=>ye(a),y=h({mutationFn:async t=>{let{count:n}=await r.addArchivesToProject(t,e);return{projectId:t,count:n}},onSuccess:({projectId:e,count:n})=>{let r=l?.find(t=>t.id===e);v(),o(`Added ${n} archive${n===1?``:`s`} to "${r?.name}"`),t()},onError:()=>{o(`Failed to assign project`,`error`)}}),b=h({mutationFn:async()=>{for(let t of e)await r.updateArchive(t,{project_id:null});return e.length},onSuccess:e=>{v(),o(`Removed ${e} archive${e===1?``:`s`} from project`),t()},onError:()=>{o(`Failed to remove from project`,`error`)}}),x=y.isPending||b.isPending;return(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,$.jsx)(X,{className:`w-full max-w-md max-h-[80vh] flex flex-col`,children:(0,$.jsxs)(et,{className:`p-0 flex flex-col min-h-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary shrink-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(V,{className:`w-5 h-5 text-bambu-green`}),(0,$.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:`Assign to Project`})]}),(0,$.jsx)(`button`,{onClick:t,className:`text-bambu-gray hover:text-white transition-colors`,disabled:x,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsxs)(`div`,{className:`p-4 space-y-3 overflow-y-auto min-h-0`,children:[(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[`Assign `,e.length,` selected archive`,e.length===1?``:`s`,` to a project`]}),u?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,$.jsx)(K,{className:`w-6 h-6 animate-spin text-bambu-gray`})}):(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`button`,{onClick:()=>b.mutate(),disabled:x,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,$.jsx)(`div`,{className:`w-8 h-8 rounded-full bg-red-500/20 flex items-center justify-center shrink-0`,children:(0,$.jsx)(T,{className:`w-4 h-4 text-red-600 dark:text-red-400`})}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-white font-medium`,children:`Remove from project`}),(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray truncate`,children:`Clear project assignment`})]}),b.isPending&&(0,$.jsx)(K,{className:`w-4 h-4 animate-spin text-bambu-gray shrink-0`})]}),d&&d.length>0&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 py-2`,children:[(0,$.jsx)(`div`,{className:`flex-1 h-px bg-bambu-dark-tertiary`}),(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`or assign to`}),(0,$.jsx)(`div`,{className:`flex-1 h-px bg-bambu-dark-tertiary`})]}),_&&(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(ze,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray pointer-events-none`}),(0,$.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),placeholder:i(`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,$.jsxs)(`button`,{onClick:()=>y.mutate(e.id),disabled:x,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,$.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,$.jsx)(V,{className:`w-4 h-4`,style:{color:e.color||`rgb(var(--bambu-green))`}})}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`text-white font-medium truncate`,children:e.name}),(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray truncate`,children:[e.archive_count,` archive`,e.archive_count===1?``:`s`,e.status&&` • ${e.status}`]})]}),y.isPending&&y.variables===e.id&&(0,$.jsx)(K,{className:`w-4 h-4 animate-spin text-bambu-gray shrink-0`})]},e.id)),(!d||d.length===0)&&(0,$.jsx)(`p`,{className:`text-center text-bambu-gray py-4`,children:`No projects yet. Create one from the Projects page.`}),d&&d.length>0&&g?.length===0&&(0,$.jsx)(`p`,{className:`text-center text-bambu-gray text-sm py-4`,children:`—`})]})]}),(0,$.jsx)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary shrink-0`,children:(0,$.jsx)(Z,{variant:`secondary`,onClick:t,className:`flex-1`,disabled:x,children:`Cancel`})})]})})})}var Qt=new Set([`completed`,`failed`,`aborted`,`cancelled`,`stopped`]),$t=new Set([`failed`,`aborted`]),en=500;function tn(e,t){return new Date(e,t+1,0).getDate()}function nn(e,t){return new Date(e,t,1).getDay()}function rn(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}async function an(e,t,n){let i=rn(new Date(e,t,1)),a=rn(new Date(e,t+1,0)),o=[];for(let e=0;;e+=en){let t=await r.getArchivePrints({dateFrom:i,dateTo:a,printerId:n||void 0,limit:en,offset:e});if(o.push(...t.items),t.items.length<en||o.length>=t.total)return o}}function on({archives:e,printerId:t,onPrintClick:i,highlightedArchiveId:a}){let{t:o,i18n:s}=n(),c=new Date,[l,u]=(0,Q.useState)(c.getMonth()),[d,f]=(0,Q.useState)(c.getFullYear()),[p,h]=(0,Q.useState)(null),[g,_]=(0,Q.useState)(null),{data:v,isLoading:y}=m({queryKey:[`calendar-runs`,d,l,t??null],queryFn:()=>an(d,l,t)}),b=(0,Q.useMemo)(()=>{let t=new Map(e.map(e=>[e.id,e])),n=[];for(let e of v??[]){let r=e.archive_id==null?void 0:t.get(e.archive_id),i=st(e.completed_at||e.created_at);!r||!i||n.push({key:`run-${e.id}`,archive:r,runId:e.id,status:e.status,date:i,colors:e.filament_color||r.filament_color})}for(let t of e){if(t.run_count>0||!Qt.has(t.status))continue;let e=st(t.completed_at||t.created_at);e&&n.push({key:`archive-${t.id}`,archive:t,runId:null,status:t.status,date:e,colors:t.filament_color})}return n.filter(e=>e.date.getMonth()===l&&e.date.getFullYear()===d).sort((e,t)=>e.date.getTime()-t.date.getTime())},[e,v,l,d]),x=(0,Q.useMemo)(()=>{let e=new Map;for(let t of b){let n=rn(t.date);e.set(n,[...e.get(n)??[],t])}return e},[b]),S=new Date(d,l,1).toLocaleDateString(s.language,{month:`long`,year:`numeric`}),C=Array.from({length:7},(e,t)=>new Date(2023,0,1+t).toLocaleDateString(s.language,{weekday:`short`})),w=tn(d,l),T=nn(d,l),E=()=>{l===0?(u(11),f(d-1)):u(l-1)},O=()=>{l===11?(u(0),f(d+1)):u(l+1)},k=()=>{u(c.getMonth()),f(c.getFullYear())},A=[];for(let e=0;e<T;e++)A.push(null);for(let e=1;e<=w;e++)A.push(e);let j=p&&x.get(p)||[],M=e=>{e!==p&&_(null),h(e)};return(0,$.jsxs)(`div`,{className:`flex flex-col lg:flex-row gap-6`,children:[(0,$.jsxs)(`div`,{className:`flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,$.jsx)(`button`,{onClick:E,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,"aria-label":o(`archives.calendar.previousMonth`),children:(0,$.jsx)(D,{className:`w-5 h-5 text-bambu-gray`})}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:S}),(0,$.jsx)(`button`,{onClick:k,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:o(`archives.calendar.today`)}),y&&(0,$.jsx)(K,{className:`w-4 h-4 text-bambu-gray animate-spin`})]}),(0,$.jsx)(`button`,{onClick:O,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,"aria-label":o(`archives.calendar.nextMonth`),children:(0,$.jsx)(ee,{className:`w-5 h-5 text-bambu-gray`})})]}),(0,$.jsx)(`div`,{className:`grid grid-cols-7 gap-1 mb-1`,children:C.map(e=>(0,$.jsx)(`div`,{className:`text-center text-xs text-bambu-gray py-2`,children:e},e))}),(0,$.jsx)(`div`,{className:`grid grid-cols-7 gap-1`,children:A.map((e,t)=>{if(e===null)return(0,$.jsx)(`div`,{className:`aspect-square`},`empty-${t}`);let n=`${d}-${String(l+1).padStart(2,`0`)}-${String(e).padStart(2,`0`)}`,r=x.get(n)||[],i=r.length>0,a=e===c.getDate()&&l===c.getMonth()&&d===c.getFullYear(),o=n===p,s=r.filter(e=>e.status===`completed`).length,u=r.filter(e=>$t.has(e.status)).length;return(0,$.jsxs)(`button`,{onClick:()=>M(o?null:n),className:`aspect-square rounded-lg p-1 flex flex-col items-center justify-center transition-colors relative ${o?`bg-bambu-green text-white`:a?`bg-bambu-green/20 text-white ring-2 ring-bambu-green`:i?`bg-bambu-dark-tertiary hover:bg-bambu-dark-tertiary/70 text-white`:`hover:bg-bambu-dark-tertiary/50 text-bambu-gray`}`,children:[(0,$.jsx)(`span`,{className:`text-sm font-medium ${a&&!o?`text-bambu-green`:``}`,children:e}),i&&(0,$.jsxs)(`div`,{className:`absolute bottom-1 left-1/2 -translate-x-1/2 flex items-center gap-1`,children:[(0,$.jsx)(`div`,{className:`w-2 h-2 rounded-full ${u>0&&s===0?`bg-red-400`:u>0?`bg-yellow-400`:`bg-green-400`}`}),(0,$.jsx)(`span`,{className:`text-xs font-medium`,children:r.length})]})]},e)})}),(0,$.jsx)(`div`,{className:`mt-4 pt-4 border-t border-bambu-dark-tertiary`,children:(0,$.jsxs)(`div`,{className:`grid grid-cols-3 gap-4 text-center`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-2xl font-bold text-white`,children:b.length}),(0,$.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:o(`archives.calendar.printsThisMonth`)})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-2xl font-bold text-green-700 dark:text-green-400`,children:b.filter(e=>e.status===`completed`).length}),(0,$.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:o(`archives.calendar.successful`)})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-2xl font-bold text-red-700 dark:text-red-400`,children:b.filter(e=>$t.has(e.status)).length}),(0,$.jsx)(`div`,{className:`text-xs text-bambu-gray`,children:o(`archives.calendar.failed`)})]})]})})]}),(0,$.jsx)(`div`,{className:`lg:w-80 bg-bambu-dark rounded-xl p-4`,children:p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`h3`,{className:`text-sm font-medium text-bambu-gray mb-3`,children:new Date(p+`T12:00:00`).toLocaleDateString(s.language,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}),j.length>0?(0,$.jsx)(`div`,{className:`calendar-scroll space-y-2 max-h-96 overflow-y-auto`,children:j.map(e=>{let{archive:t}=e,n=e.key===g||t.id===a;return(0,$.jsxs)(`button`,{onClick:()=>{_(e.key),i?.(t.id,e.runId)},className:`w-full flex items-center gap-3 p-2 rounded-lg transition-colors text-left ${n?``:`hover:bg-bambu-dark-tertiary`}`,style:n?{outline:`4px solid #facc15`,outlineOffset:`2px`}:void 0,children:[t.thumbnail_path?(0,$.jsx)(`img`,{src:r.getArchiveThumbnail(t.id),alt:``,className:`w-12 h-12 rounded object-cover`}):(0,$.jsx)(`div`,{className:`w-12 h-12 rounded bg-bambu-dark-tertiary flex items-center justify-center`,children:(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`3MF`})}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,$.jsx)(`p`,{className:`text-sm text-white truncate`,children:t.print_name||t.filename}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,$.jsx)(`span`,{className:$t.has(e.status)?`text-red-700 dark:text-red-400`:e.status===`completed`?`text-green-700 dark:text-green-400`:`text-bambu-gray`,children:o(`archives.runLog.status.${e.status}`,{defaultValue:e.status})}),e.colors&&(0,$.jsx)(`div`,{className:`flex gap-0.5`,children:e.colors.split(`,`).map((e,t)=>(0,$.jsx)(`div`,{className:`w-3 h-3 rounded-full border border-black/20`,style:{backgroundColor:e}},t))})]})]})]},e.key)})}):(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:o(`archives.calendar.noPrints`)})]}):(0,$.jsx)(`div`,{className:`text-center py-8`,children:(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:o(`archives.calendar.selectDay`)})})})]})}function sn({archiveId:e,archiveName:t,onClose:n}){let i=r.getArchiveQRCodeUrl(e,300);return(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4`,onClick:n,children:(0,$.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,$.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold text-white`,children:`QR Code`}),(0,$.jsx)(`button`,{onClick:n,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsxs)(`div`,{className:`p-6 flex flex-col items-center`,children:[(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray mb-4 text-center truncate max-w-full`,children:t}),(0,$.jsx)(`div`,{className:`bg-white p-4 rounded-lg mb-4`,children:(0,$.jsx)(`img`,{src:i,alt:`QR Code`,className:`w-64 h-64`})}),(0,$.jsx)(`p`,{className:`text-xs text-bambu-gray mb-4 text-center`,children:`Scan to open this archive`}),(0,$.jsxs)(Z,{onClick:()=>{let e=document.createElement(`a`);e.href=i,e.download=`${t}_qrcode.png`,e.click()},className:`w-full`,children:[(0,$.jsx)(ae,{className:`w-4 h-4`}),`Download QR Code`]})]})]})})}function cn({archiveId:e,archiveName:t,onClose:n}){let i=p(),[a,o]=(0,Q.useState)(!1),[s,l]=(0,Q.useState)(null),[u,d]=(0,Q.useState)({}),{data:f,isLoading:g,error:_}=m({queryKey:[`archive-project-page`,e],queryFn:()=>r.getArchiveProjectPage(e)}),y=h({mutationFn:t=>r.updateArchiveProjectPage(e,t),onSuccess:()=>{i.invalidateQueries({queryKey:[`archive-project-page`,e]}),o(!1),d({})}});(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(s===null?a?w():n():l(null))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[s,a,n]);let x=[...f?.model_pictures||[],...f?.profile_pictures||[]],S=()=>{d({title:f?.title||``,description:f?.description||``,designer:f?.designer||``,license:f?.license||``,profile_title:f?.profile_title||``,profile_description:f?.profile_description||``}),o(!0)},C=()=>{y.mutate(u)},w=()=>{o(!1),d({})},T=e=>bt.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=f&&(f.title||f.description||f.designer||f.profile_title||x.length>0);return(0,$.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,$.jsxs)(`div`,{className:`bg-bambu-dark-secondary rounded-xl max-w-4xl w-full max-h-[90vh] overflow-hidden flex flex-col`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(de,{className:`w-5 h-5 text-bambu-green`}),(0,$.jsxs)(`h2`,{className:`text-lg font-semibold text-white`,children:[`Project Page`,t&&(0,$.jsxs)(`span`,{className:`text-bambu-gray ml-2`,children:[`- `,t]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[!a&&E&&(0,$.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:S,children:[(0,$.jsx)(Ne,{className:`w-4 h-4 mr-1`}),`Edit`]}),a&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:w,children:`Cancel`}),(0,$.jsxs)(Z,{variant:`primary`,size:`sm`,onClick:C,disabled:y.isPending,children:[(0,$.jsx)(Re,{className:`w-4 h-4 mr-1`}),`Save`]})]}),(0,$.jsx)(`button`,{onClick:n,className:`p-2 hover:bg-bambu-dark-tertiary rounded-lg transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5 text-bambu-gray`})})]})]}),(0,$.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-6`,children:[g&&(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(`div`,{className:`animate-spin rounded-full h-8 w-8 border-2 border-bambu-green border-t-transparent`})}),_&&(0,$.jsx)(`div`,{className:`text-red-700 dark:text-red-400 text-center py-12`,children:`Failed to load project page data`}),f&&!E&&(0,$.jsxs)(`div`,{className:`text-bambu-gray text-center py-12`,children:[(0,$.jsx)(de,{className:`w-12 h-12 mx-auto mb-4 opacity-50`}),(0,$.jsx)(`p`,{children:`No project page data found in this 3MF file.`}),(0,$.jsx)(`p`,{className:`text-sm mt-2`,children:`Project pages are typically included in files downloaded from MakerWorld.`})]}),f&&E&&(0,$.jsxs)(`div`,{className:`space-y-6`,children:[(0,$.jsxs)(`div`,{className:`space-y-4`,children:[a?(0,$.jsx)(`input`,{type:`text`,value:u.title||``,onChange:e=>d({...u,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`}):f.title&&(0,$.jsx)(`h3`,{className:`text-xl font-semibold text-white`,children:f.title}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-4 text-sm`,children:[a?(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Je,{className:`w-4 h-4 text-bambu-gray`}),(0,$.jsx)(`input`,{type:`text`,value:u.designer||``,onChange:e=>d({...u,designer:e.target.value}),placeholder:`Designer`,className:`bg-bambu-dark border border-bambu-dark-tertiary rounded px-2 py-1 text-white`})]}):f.designer&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,$.jsx)(Je,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:f.designer}),f.designer_user_id&&(0,$.jsx)(`a`,{href:`https://makerworld.com/en/@${f.designer_user_id}`,target:`_blank`,rel:`noopener noreferrer`,className:`text-bambu-green hover:underline`,children:(0,$.jsx)(le,{className:`w-3 h-3`})})]}),f.creation_date&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,$.jsx)(b,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:f.creation_date})]}),a?(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(de,{className:`w-4 h-4 text-bambu-gray`}),(0,$.jsx)(`input`,{type:`text`,value:u.license||``,onChange:e=>d({...u,license:e.target.value}),placeholder:`License`,className:`bg-bambu-dark border border-bambu-dark-tertiary rounded px-2 py-1 text-white`})]}):f.license&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-bambu-gray`,children:[(0,$.jsx)(de,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{children:f.license})]}),f.origin&&(0,$.jsx)(`span`,{className:`px-2 py-0.5 bg-bambu-dark rounded text-bambu-gray`,children:f.origin})]})]}),(f.description||a)&&(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide`,children:`Description`}),a?(0,$.jsx)(v,{content:u.description||``,onChange:e=>d({...u,description:e}),placeholder:`Enter description...`}):(0,$.jsx)(`div`,{className:`prose prose-invert prose-sm max-w-none text-bambu-gray-light`,dangerouslySetInnerHTML:{__html:T(f.description||``)}})]}),(f.profile_title||f.profile_description||a)&&(0,$.jsxs)(`div`,{className:`space-y-2 p-4 bg-bambu-dark rounded-lg`,children:[(0,$.jsx)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide`,children:`Print Profile`}),a?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`input`,{type:`text`,value:u.profile_title||``,onChange:e=>d({...u,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,$.jsx)(v,{content:u.profile_description||``,onChange:e=>d({...u,profile_description:e}),placeholder:`Profile description...`})]}):(0,$.jsxs)($.Fragment,{children:[f.profile_title&&(0,$.jsx)(`p`,{className:`text-white font-medium`,children:f.profile_title}),f.profile_description&&(0,$.jsx)(`div`,{className:`prose prose-invert prose-sm max-w-none text-bambu-gray-light`,dangerouslySetInnerHTML:{__html:T(f.profile_description)}}),f.profile_user_name&&(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[`by `,f.profile_user_name]})]})]}),x.length>0&&(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`h4`,{className:`text-sm font-medium text-bambu-gray uppercase tracking-wide flex items-center gap-2`,children:[(0,$.jsx)(Ee,{className:`w-4 h-4`}),`Images (`,x.length,`)`]}),(0,$.jsx)(`div`,{className:`grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 gap-2`,children:x.map((e,t)=>(0,$.jsx)(`button`,{onClick:()=>l(t),className:`aspect-square rounded-lg overflow-hidden border border-bambu-dark-tertiary hover:border-bambu-green transition-colors`,children:(0,$.jsx)(`img`,{src:c(e.url),alt:e.name,className:`w-full h-full object-cover`})},e.path))})]}),f.design_model_id&&(0,$.jsx)(`div`,{className:`pt-4 border-t border-bambu-dark-tertiary`,children:(0,$.jsxs)(`a`,{href:`https://makerworld.com/en/models/${f.design_model_id}`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 text-bambu-green hover:underline`,children:[(0,$.jsx)(le,{className:`w-4 h-4`}),`View on MakerWorld`]})})]})]})]}),s!==null&&x[s]&&(0,$.jsxs)(`div`,{className:`fixed inset-0 bg-black/90 flex items-center justify-center z-60`,onClick:()=>l(null),children:[(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),l(Math.max(0,s-1))},disabled:s===0,className:`absolute left-4 p-2 bg-bambu-dark-secondary rounded-full hover:bg-bambu-dark-tertiary disabled:opacity-30`,children:(0,$.jsx)(D,{className:`w-6 h-6 text-white`})}),(0,$.jsx)(`img`,{src:c(x[s].url),alt:x[s].name,className:`max-w-[90vw] max-h-[90vh] object-contain`,onClick:e=>e.stopPropagation()}),(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),l(Math.min(x.length-1,s+1))},disabled:s===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,$.jsx)(ee,{className:`w-6 h-6 text-white`})}),(0,$.jsx)(`button`,{onClick:()=>l(null),className:`absolute top-4 right-4 p-2 bg-bambu-dark-secondary rounded-full hover:bg-bambu-dark-tertiary`,children:(0,$.jsx)(Y,{className:`w-6 h-6 text-white`})}),(0,$.jsxs)(`div`,{className:`absolute bottom-4 text-white text-sm`,children:[s+1,` / `,x.length]})]})]})}function ln({archiveId:e,archiveName:t,printerName:i,onClose:a}){let{t:o}=n(),{showToast:s}=A(),[c,l]=(0,Q.useState)(new Set),[u,d]=(0,Q.useState)(!1),[f,p]=(0,Q.useState)(null),h=(0,Q.useRef)(null),g=(0,Q.useRef)(null),_=m({queryKey:[`archive-printer-media`,e],queryFn:()=>r.getArchivePrinterMedia(e),staleTime:6e4}),v=(0,Q.useMemo)(()=>_.data?.remote_files??[],[_.data]);(0,Q.useEffect)(()=>{!_.data||h.current===e||(h.current=e,v.length===1&&l(new Set([v[0].path])))},[e,_.data,v]),(0,Q.useEffect)(()=>{let e=new Set(v.map(e=>e.path));l(t=>new Set([...t].filter(t=>e.has(t))))},[v]),(0,Q.useEffect)(()=>()=>g.current?.abort(),[]),(0,Q.useEffect)(()=>{let e=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a]);let y=e=>{l(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||c.size===0)return;let e=v.filter(e=>c.has(e.path));if(e.length===0)return;let n=new AbortController;g.current=n,d(!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)=>p({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),p(null),d(!1)}},S=!!_.data?.local_timelapse||v.length>0,C=e=>o(e===`printer_files_forbidden`?`printers.permission.noFiles`:e===`printer_missing`?`archives.media.printerMissing`:e===`timelapse_unavailable`?`archives.media.timelapseUnavailable`:`archives.media.ipcamUnavailable`),w=(_.data?.warnings??[]).map(e=>(0,$.jsx)(`p`,{className:`text-xs text-amber-600 dark:text-amber-400`,children:C(e)},e));return(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-4`,onClick:a,children:(0,$.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,$.jsxs)(`div`,{className:`flex items-center justify-between border-b border-bambu-dark-tertiary p-4`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsxs)(`h3`,{className:`flex items-center gap-2 text-lg font-semibold text-white`,children:[(0,$.jsx)(Ye,{className:`h-5 w-5 text-bambu-green`}),o(`archives.media.title`)]}),(0,$.jsxs)(`p`,{className:`truncate text-sm text-bambu-gray`,children:[t,` · `,i]})]}),(0,$.jsx)(`button`,{onClick:a,className:`rounded p-1 text-bambu-gray hover:bg-bambu-dark-tertiary hover:text-white`,children:(0,$.jsx)(Y,{className:`h-5 w-5`})})]}),(0,$.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:_.isLoading?(0,$.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-12 text-bambu-gray`,children:[(0,$.jsx)(K,{className:`h-5 w-5 animate-spin`}),o(`archives.media.searching`)]}):_.isError?(0,$.jsx)(`p`,{className:`py-8 text-center text-red-500`,children:o(`archives.media.searchFailed`)}):S?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[_.data?.local_timelapse&&(0,$.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark p-3`,children:[(0,$.jsx)(se,{className:`h-5 w-5 shrink-0 text-bambu-green`}),(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`p`,{className:`truncate text-sm font-medium text-white`,children:_.data.local_timelapse.name}),(0,$.jsxs)(`p`,{className:`text-xs text-bambu-gray`,children:[o(`archives.media.attachedTimelapse`),` · `,tt(_.data.local_timelapse.size)]})]}),(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:b,children:[(0,$.jsx)(ae,{className:`h-4 w-4`}),o(`common.download`)]})]}),v.length>0&&(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,$.jsxs)(`p`,{className:`text-sm text-bambu-gray`,children:[o(`archives.media.printerFiles`),` (`,v.length,`)`]}),(0,$.jsx)(`button`,{className:`text-xs text-bambu-green hover:text-bambu-green-light`,onClick:()=>l(c.size===v.length?new Set:new Set(v.map(e=>e.path))),children:c.size===v.length?o(`common.deselectAll`):o(`common.selectAll`)})]}),(0,$.jsx)(`div`,{className:`space-y-1`,children:v.map(e=>{let t=c.has(e.path);return(0,$.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,$.jsx)(He,{className:`h-5 w-5 shrink-0 text-bambu-green`}):(0,$.jsx)(Ue,{className:`h-5 w-5 shrink-0 text-bambu-gray`}),e.kind===`timelapse`?(0,$.jsx)(se,{className:`h-5 w-5 shrink-0 text-bambu-green`}):(0,$.jsx)(Ye,{className:`h-5 w-5 shrink-0 text-blue-400`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-white`,children:e.name}),(0,$.jsx)(`span`,{className:`shrink-0 text-xs text-bambu-gray`,children:tt(e.size)})]},e.path)})})]}),w]}):(0,$.jsxs)(`div`,{className:`space-y-3 py-8 text-center`,children:[(0,$.jsx)(`p`,{className:`text-bambu-gray`,children:o(`archives.media.none`)}),w]})}),v.length>0&&(0,$.jsx)(`div`,{className:`flex items-center justify-end border-t border-bambu-dark-tertiary p-4`,children:(0,$.jsxs)(Z,{variant:`primary`,onClick:x,disabled:c.size===0||u,children:[u?(0,$.jsx)(K,{className:`h-4 w-4 animate-spin`}):(0,$.jsx)(ae,{className:`h-4 w-4`}),f?`${f.current}/${f.total}`:`${o(`archives.media.downloadSelected`)} (${c.size})`]})})]})})}function un({archiveIds:e,onClose:t}){(0,Q.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}=m({queryKey:[`archive-comparison`,e],queryFn:()=>r.compareArchives(e)});return(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,onClick:t,children:(0,$.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,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary`,children:[(0,$.jsxs)(`h3`,{className:`text-lg font-semibold text-white`,children:[`Compare Archives (`,e.length,`)`]}),(0,$.jsx)(`button`,{onClick:t,className:`text-bambu-gray hover:text-white p-1`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsx)(`div`,{className:`flex-1 overflow-auto p-4 bg-bambu-dark-secondary`,children:i?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(K,{className:`w-8 h-8 text-bambu-green animate-spin`})}):a?(0,$.jsxs)(`div`,{className:`text-center py-12 text-red-700 dark:text-red-400`,children:[(0,$.jsx)(Ke,{className:`w-12 h-12 mx-auto mb-4 opacity-50`}),(0,$.jsx)(`p`,{children:`Failed to load comparison`}),(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray mt-2`,children:a instanceof Error?a.message:`Unknown error`})]}):n?(0,$.jsx)(dn,{comparison:n}):null}),(0,$.jsx)(`div`,{className:`p-4 border-t border-bambu-dark-tertiary`,children:(0,$.jsx)(Z,{variant:`secondary`,onClick:t,className:`w-full`,children:`Close`})})]})})}function dn({comparison:e}){return(0,$.jsxs)(`div`,{className:`space-y-6`,children:[(0,$.jsx)(`div`,{className:`overflow-x-auto`,children:(0,$.jsxs)(`table`,{className:`w-full`,children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{children:[(0,$.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,$.jsxs)(`th`,{className:`text-left text-sm font-medium pb-2 px-2 min-w-[120px]`,children:[(0,$.jsx)(`div`,{className:`text-white truncate max-w-[150px]`,title:e.print_name,children:e.print_name}),(0,$.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,$.jsx)(`tbody`,{className:`divide-y divide-bambu-gray/20`,children:e.comparison.map(e=>(0,$.jsxs)(`tr`,{className:e.has_difference?`bg-yellow-500/5`:``,children:[(0,$.jsx)(`td`,{className:`py-2 pr-4 text-sm`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.has_difference&&(0,$.jsx)(Ke,{className:`w-3 h-3 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,$.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,$.jsxs)(`td`,{className:`py-2 px-2 text-sm text-white`,children:[t??(0,$.jsx)(`span`,{className:`text-bambu-gray/50`,children:`-`}),e.unit&&t!==null&&(0,$.jsx)(`span`,{className:`text-bambu-gray ml-1`,children:e.unit})]},n))]},e.field))})]})}),e.differences.length>0&&(0,$.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,$.jsxs)(`h4`,{className:`text-sm font-medium text-yellow-700 dark:text-yellow-400 mb-2 flex items-center gap-2`,children:[(0,$.jsx)(Ke,{className:`w-4 h-4`}),e.differences.length,` Difference`,e.differences.length>1?`s`:``,` Found`]}),(0,$.jsxs)(`ul`,{className:`text-sm text-white/80 space-y-1`,children:[e.differences.slice(0,5).map(e=>(0,$.jsxs)(`li`,{children:[(0,$.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,$.jsxs)(`li`,{className:`text-bambu-gray`,children:[`...and `,e.differences.length-5,` more`]})]})]}),e.success_correlation.has_both_outcomes?(0,$.jsxs)(`div`,{className:`p-4 bg-bambu-dark rounded-lg`,children:[(0,$.jsxs)(`h4`,{className:`text-sm font-medium text-white mb-3 flex items-center gap-2`,children:[(0,$.jsx)(S,{className:`w-4 h-4 text-bambu-green`}),`Success/Failure Analysis`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-4 text-sm mb-3`,children:[(0,$.jsxs)(`span`,{className:`text-bambu-green`,children:[e.success_correlation.successful_count,` successful`]}),(0,$.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,$.jsx)(`div`,{className:`space-y-2`,children:e.success_correlation.insights.map(e=>(0,$.jsxs)(`div`,{className:`text-sm p-2 bg-bambu-dark-secondary rounded`,children:[(0,$.jsxs)(`span`,{className:`text-white font-medium`,children:[e.label,`:`]}),` `,(0,$.jsx)(`span`,{className:`text-white/80`,children:e.insight})]},e.field))}):(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray`,children:`No clear correlations found between settings and outcomes.`})]}):(0,$.jsx)(`div`,{className:`p-4 bg-bambu-dark rounded-lg text-sm text-bambu-gray`,children:(0,$.jsx)(`p`,{children:e.success_correlation.message||`Need both successful and failed prints for correlation analysis.`})})]})}function fn(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 pn({upload:e,projects:t,onArchive:n,onDiscard:r,isArchiving:i,isDiscarding:a}){let[o,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(e.tags||``),[u,d]=(0,Q.useState)(e.notes||``),[f,p]=(0,Q.useState)(e.project_id),[m,h]=(0,Q.useState)(!1);return(0,$.jsx)(X,{children:(0,$.jsxs)(et,{className:`py-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(B,{className:`w-8 h-8 text-bambu-green flex-shrink-0`}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-white font-medium`,title:e.filename,children:e.display_name||e.filename}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-bambu-gray`,children:[(0,$.jsx)(`span`,{children:tt(e.file_size)}),(0,$.jsx)(`span`,{children:`·`}),(0,$.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(re,{className:`w-3 h-3`}),fn(e.uploaded_at)]}),e.source_ip&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{children:`·`}),(0,$.jsxs)(`span`,{children:[`from `,e.source_ip]})]})]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`button`,{onClick:()=>s(!o),className:`p-1 text-bambu-gray hover:text-white transition-colors`,children:o?(0,$.jsx)(w,{className:`w-5 h-5`}):(0,$.jsx)(C,{className:`w-5 h-5`})}),(0,$.jsx)(Z,{variant:`primary`,size:`sm`,onClick:()=>n(e.id,{tags:c,notes:u,project_id:f||void 0}),disabled:i,children:i?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(g,{className:`w-4 h-4`}),`Archive`]})}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>h(!0),disabled:a,children:a?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsx)(J,{className:`w-4 h-4 text-red-600 dark:text-red-400`})})]})]}),m&&(0,$.jsx)(nt,{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,$.jsxs)(`div`,{className:`mt-4 pt-4 border-t border-bambu-dark-tertiary space-y-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Tags`}),(0,$.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,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Notes`}),(0,$.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,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:`Project`}),(0,$.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,$.jsx)(`option`,{value:``,children:`No project`}),t.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]})]})]})})}function mn(){let e=p(),{showToast:t}=A(),[n,i]=(0,Q.useState)(!1),[o,s]=(0,Q.useState)(!1),[c,l]=(0,Q.useState)(new Set),[u,d]=(0,Q.useState)(new Set),{data:f,isLoading:_}=m({queryKey:[`pending-uploads`],queryFn:a.list,refetchInterval:1e4}),{data:v}=m({queryKey:[`projects`],queryFn:()=>r.getProjects(),select:e=>ut([...e].sort((e,t)=>e.name.localeCompare(t.name)))}),y=h({mutationFn:({id:e,data:t})=>a.archive(e,t),onMutate:({id:e})=>{l(t=>new Set(t).add(e))},onSettled:(e,t,{id:n})=>{l(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`)}}),b=h({mutationFn:e=>a.discard(e),onMutate:e=>{d(t=>new Set(t).add(e))},onSettled:(e,t,n)=>{d(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`)}}),x=h({mutationFn:a.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`)}}),S=h({mutationFn:a.discardAll,onSuccess:n=>{e.invalidateQueries({queryKey:[`pending-uploads`]}),t(`Discarded ${n.discarded} files`)},onError:e=>{t(e.message||`Failed to discard all`,`error`)}});return _?(0,$.jsx)(X,{children:(0,$.jsx)(et,{className:`py-8 flex justify-center`,children:(0,$.jsx)(K,{className:`w-6 h-6 animate-spin text-bambu-green`})})}):!f||f.length===0?null:(0,$.jsxs)(`div`,{className:`mb-6`,children:[(0,$.jsxs)(X,{className:`border-l-4 border-l-yellow-500`,children:[(0,$.jsx)($e,{children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(qe,{className:`w-5 h-5 text-yellow-500`}),(0,$.jsxs)(`h2`,{className:`text-lg font-semibold text-white`,children:[`Pending Uploads (`,f.length,`)`]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Z,{variant:`primary`,size:`sm`,onClick:()=>i(!0),disabled:x.isPending,children:x.isPending?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(g,{className:`w-4 h-4`}),`Archive All`]})}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>s(!0),disabled:S.isPending,children:S.isPending?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(J,{className:`w-4 h-4`}),`Discard All`]})})]})]})}),(0,$.jsxs)(et,{children:[(0,$.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,$.jsx)(`div`,{className:`space-y-3`,children:f.map(e=>(0,$.jsx)(pn,{upload:e,projects:v||[],onArchive:(e,t)=>y.mutate({id:e,data:t}),onDiscard:e=>b.mutate(e),isArchiving:c.has(e.id),isDiscarding:u.has(e.id)},e.id))})]})]}),n&&(0,$.jsx)(nt,{title:`Archive All Uploads`,message:`Are you sure you want to archive all ${f.length} pending uploads?`,confirmText:`Archive All`,onConfirm:()=>{x.mutate(),i(!1)},onCancel:()=>i(!1)}),o&&(0,$.jsx)(nt,{title:`Discard All Uploads`,message:`Are you sure you want to discard all ${f.length} pending uploads? This cannot be undone.`,confirmText:`Discard All`,variant:`danger`,onConfirm:()=>{S.mutate(),s(!1)},onCancel:()=>s(!1)})]})}function hn({onClose:e}){let t=p(),{showToast:n}=A(),[i,a]=(0,Q.useState)(``),[o,s]=(0,Q.useState)(null),[c,l]=(0,Q.useState)(``),[u,d]=(0,Q.useState)(null),[f,g]=(0,Q.useState)(`count`);(0,Q.useEffect)(()=>{let t=t=>{t.key===`Escape`&&(o?s(null):u?d(null):e())};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,o,u]);let{data:_,isLoading:v}=m({queryKey:[`tags`],queryFn:r.getTags}),y=h({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`}`),s(null)},onError:e=>{n(e.message||`Failed to rename tag`,`error`)}}),b=h({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`}`),d(null)},onError:e=>{n(e.message||`Failed to delete tag`,`error`)}}),x=e=>{s(e.name),l(e.name),d(null)},C=()=>{s(null),l(``)},w=()=>{if(!o||!c.trim())return;let e=c.trim();if(e===o){C();return}y.mutate({oldName:o,newName:e})},T=e=>{e.key===`Enter`?(e.preventDefault(),w()):e.key===`Escape`&&(e.preventDefault(),C())},E=e=>{d(e),s(null)},ee=()=>{u&&b.mutate(u)},D=_?.filter(e=>e.name.toLowerCase().includes(i.toLowerCase())).sort((e,t)=>f===`count`&&t.count-e.count||e.name.localeCompare(t.name)),O=_?.reduce((e,t)=>e+t.count,0)||0;return(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4`,children:(0,$.jsx)(X,{className:`w-full max-w-lg max-h-[80vh] flex flex-col`,children:(0,$.jsxs)(et,{className:`p-0 flex flex-col min-h-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-bambu-dark-tertiary flex-shrink-0`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(Ge,{className:`w-5 h-5 text-bambu-green`}),(0,$.jsx)(`h2`,{className:`text-xl font-semibold text-white`,children:`Manage Tags`})]}),(0,$.jsx)(`button`,{onClick:e,className:`text-bambu-gray hover:text-white transition-colors`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsxs)(`div`,{className:`p-4 border-b border-bambu-dark-tertiary flex-shrink-0`,children:[(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsxs)(`div`,{className:`relative flex-1`,children:[(0,$.jsx)(ze,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,$.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,$.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:f,onChange:e=>g(e.target.value),children:[(0,$.jsx)(`option`,{value:`count`,children:`Sort by Count`}),(0,$.jsx)(`option`,{value:`name`,children:`Sort by Name`})]})]}),_&&(0,$.jsxs)(`p`,{className:`text-xs text-bambu-gray mt-2`,children:[_.length,` tag`,_.length===1?``:`s`,` across `,O,` usage`,O===1?``:`s`]})]}),(0,$.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0 p-4`,children:v?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,$.jsx)(K,{className:`w-6 h-6 animate-spin text-bambu-gray`})}):D?.length?(0,$.jsx)(`div`,{className:`space-y-2`,children:D.map(e=>(0,$.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,$.jsxs)(`div`,{className:`flex-1 flex items-center gap-2`,children:[(0,$.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:c,onChange:e=>l(e.target.value),onKeyDown:T,autoFocus:!0}),(0,$.jsx)(Z,{size:`sm`,variant:`primary`,onClick:w,disabled:!c.trim()||y.isPending,className:`p-1.5`,children:y.isPending?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsx)(S,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{size:`sm`,variant:`ghost`,onClick:C,className:`p-1.5`,children:(0,$.jsx)(Y,{className:`w-4 h-4`})})]}):u===e.name?(0,$.jsxs)(`div`,{className:`flex-1 flex items-center gap-2`,children:[(0,$.jsx)(Ke,{className:`w-4 h-4 text-yellow-600 dark:text-yellow-400 flex-shrink-0`}),(0,$.jsxs)(`span`,{className:`text-sm text-bambu-gray-light flex-1`,children:[`Delete "`,e.name,`" from `,e.count,` archive`,e.count===1?``:`s`,`?`]}),(0,$.jsx)(Z,{size:`sm`,variant:`danger`,onClick:ee,disabled:b.isPending,className:`p-1.5`,children:b.isPending?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsx)(J,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{size:`sm`,variant:`ghost`,onClick:()=>d(null),className:`p-1.5`,children:(0,$.jsx)(Y,{className:`w-4 h-4`})})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(Ge,{className:`w-4 h-4 text-bambu-gray flex-shrink-0`}),(0,$.jsx)(`span`,{className:`text-white flex-1 truncate`,children:e.name}),(0,$.jsx)(`span`,{className:`px-2 py-0.5 rounded-full bg-bambu-dark-tertiary text-bambu-gray text-xs`,children:e.count}),(0,$.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,$.jsx)(`button`,{onClick:()=>x(e),className:`p-1.5 rounded hover:bg-bambu-dark text-bambu-gray hover:text-white transition-colors`,title:`Rename tag`,children:(0,$.jsx)(Pe,{className:`w-4 h-4`})}),(0,$.jsx)(`button`,{onClick:()=>E(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,$.jsx)(J,{className:`w-4 h-4`})})]})]})},e.name))}):(0,$.jsx)(`div`,{className:`text-center py-8 text-bambu-gray`,children:i?`No tags match your search`:`No tags found`})}),(0,$.jsx)(`div`,{className:`flex gap-3 p-4 border-t border-bambu-dark-tertiary flex-shrink-0`,children:(0,$.jsx)(Z,{variant:`secondary`,onClick:e,className:`flex-1`,children:`Close`})})]})})})}var gn=`bambuddy-printlog-columns`,_n={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`},vn=[{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 yn(){try{let e=localStorage.getItem(gn);if(e){let t=JSON.parse(e),n=new Set(Object.keys(_n)),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=vn.filter(e=>!r.has(e.id));if(i.length>0)return[...i,...a]}}catch{}return vn.map(e=>({...e}))}var bn=`bambuddy-printlog-sort`,xn=new Set(Object.keys(_n)),Sn={column:`date`,direction:`desc`};function Cn(){try{let e=localStorage.getItem(bn);if(e){let t=JSON.parse(e);if(xn.has(t?.column)&&(t.direction===`asc`||t.direction===`desc`))return t}}catch{}return{...Sn}}function wn(e){try{localStorage.setItem(bn,JSON.stringify(e))}catch{}}function Tn(e){try{localStorage.setItem(gn,JSON.stringify(e.map(e=>({id:e.id,visible:e.visible}))))}catch{}}function En(e){let t=e.target;return!e.currentTarget.contains(t)||t.closest(`button, a, input, select, textarea, label, video, .fixed`)?!1:!window.getSelection()?.toString()}function Dn(e){return Math.max(e.timelapse_count??0,+!!e.timelapse_path)}function On(e,t,n){let r=Dn(e);return{videos:r,openTimelapse:()=>{r>1||!e.timelapse_path?t(`/archives/${e.id}`):n()}}}var kn=new Set([`failed`,`aborted`,`cancelled`,`stopped`]);function An({archive:e,printerName:t,printerMap:n,isSelected:i,onSelect:a,selectionMode:o,projects:s,isHighlighted:c,timeFormat:l=`system`,preferredSlicer:u=`bambu_studio`,useSlicerApi:g=!1,currency:_,t:v,onNavigateToArchive:b}){let S=p(),{showToast:C}=A(),{hasPermission:w,canModify:T}=Qe(),E=d(),{videos:O,openTimelapse:k}=On(e,E,()=>Re(!0)),j=(0,Q.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]),[ie,I]=(0,Q.useState)(!1),[L,z]=(0,Q.useState)(!1),[B,ue]=(0,Q.useState)(!1),[fe,me]=(0,Q.useState)(!1),[he,ge]=(0,Q.useState)(!1),[W,Se]=(0,Q.useState)(!1),G=m({queryKey:[`archive`,e.id,`delete-impact`],queryFn:()=>r.getArchiveDeleteImpact(e.id),enabled:he,staleTime:0}),[Oe,ke]=(0,Q.useState)(!1),[Me,Ne]=(0,Q.useState)(!1),[Ie,Re]=(0,Q.useState)(!1),[ze,Be]=(0,Q.useState)(!1),[Ve,Ge]=(0,Q.useState)(!1),[Ke,Ye]=(0,Q.useState)([]),[$e,it]=(0,Q.useState)(!1),[at,st]=(0,Q.useState)(!1),[ct,lt]=(0,Q.useState)(!1),[pt,ht]=(0,Q.useState)(!1),[_t,vt]=(0,Q.useState)(!1),[yt,bt]=(0,Q.useState)(!1),[xt,St]=(0,Q.useState)(null),[Et,Dt]=(0,Q.useState)(null),[Ot,kt]=(0,Q.useState)(!1),[At,jt]=(0,Q.useState)(null),Mt=(0,Q.useRef)(null),Pt=(0,Q.useRef)(null),Ft=(0,Q.useRef)(null),{data:It}=m({queryKey:[`archive-plates`,e.id],queryFn:()=>r.getArchivePlates(e.id),enabled:Ot,staleTime:300*1e3}),Lt=e.duplicate_sequence??0,Rt=be(e.user_verdict_source),zt=e.original_archive_id??null,Bt=It?.plates??[],Vt=It?.is_multi_plate??!1,Ht=Et??0,Ut=async()=>{try{let t=await r.getArchivePlates(e.id);if(t.has_gcode===!1){C(v(`archives.platePicker.noGcode`),`info`);return}if(t.is_multi_plate&&t.plates.length>1){jt(t.plates);return}}catch{}E(`/gcode-viewer?archive=${e.id}`)},Wt=h({mutationFn:()=>r.deleteArchiveTimelapse(e.id),onSuccess:()=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.timelapseRemoved`))},onError:e=>{C(e.message||v(`archives.toast.failedRemoveTimelapse`),`error`)}}),Gt=h({mutationFn:t=>r.uploadArchiveTimelapse(e.id,t),onSuccess:e=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.timelapseUploaded`,{filename:e.filename}))},onError:e=>{C(e.message||v(`archives.toast.failedUploadTimelapse`),`error`)}}),Kt=h({mutationFn:t=>r.uploadSource3mf(e.id,t),onSuccess:e=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.source3mfAttached`,{filename:e.filename}))},onError:e=>{C(e.message||v(`archives.toast.failedUploadSource3mf`),`error`)}}),qt=h({mutationFn:()=>r.deleteSource3mf(e.id),onSuccess:()=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.source3mfRemoved`))},onError:e=>{C(e.message||v(`archives.toast.failedRemoveSource3mf`),`error`)}}),Jt=h({mutationFn:t=>r.uploadF3d(e.id,t),onSuccess:e=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.f3dAttached`,{filename:e.filename}))},onError:e=>{C(e.message||v(`archives.toast.failedUploadF3d`),`error`)}}),Xt=h({mutationFn:()=>r.deleteF3d(e.id),onSuccess:()=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.f3dRemoved`))},onError:e=>{C(e.message||v(`archives.toast.failedRemoveF3d`),`error`)}}),Zt=h({mutationFn:()=>r.scanArchiveTimelapse(e.id),onSuccess:e=>{e.status===`attached`?(S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.timelapseAttached`,{filename:e.filename}))):e.status===`exists`?C(v(`archives.toast.timelapseAlreadyAttached`)):e.status===`not_found`&&e.available_files&&e.available_files.length>0?(Ye(e.available_files),Ge(!0)):C(e.message||v(`archives.toast.noMatchingTimelapse`),`warning`)},onError:e=>{C(e.message||v(`archives.toast.failedScanTimelapse`),`error`)}}),Qt=h({mutationFn:t=>r.selectArchiveTimelapse(e.id,t),onSuccess:e=>{S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.timelapseAttached`,{filename:e.filename})),Ge(!1),Ye([])},onError:e=>{C(e.message||v(`archives.toast.failedAttachTimelapse`),`error`)}}),$t=h({mutationFn:t=>r.deleteArchive(e.id,t),onSuccess:()=>{ye(S),C(v(`archives.toast.archiveDeleted`))},onError:()=>{C(v(`archives.toast.failedDeleteArchive`),`error`)}}),en=h({mutationFn:()=>r.toggleFavorite(e.id),onSuccess:e=>{S.invalidateQueries({queryKey:[`archives`]}),C(e.is_favorite?v(`archives.toast.addedToFavorites`):v(`archives.toast.removedFromFavorites`))}}),{data:tn}=m({queryKey:[`archive-folders`,e.id],queryFn:()=>r.getLibraryFoldersByArchive(e.id)}),nn=h({mutationFn:t=>r.updateArchive(e.id,{project_id:t}),onSuccess:()=>{ye(S),C(v(`archives.toast.projectUpdated`))},onError:()=>{C(v(`archives.toast.failedUpdateProject`),`error`)}}),rn=e=>{e.preventDefault(),St({x:e.clientX,y:e.clientY})},an=[...mt(e)?[{label:v(`common.print`),icon:(0,$.jsx)(Le,{className:`w-4 h-4`}),onClick:()=>I(!0),disabled:!e.file_path||!w(`queue:create`)||!T(`archives`,`reprint`,e.created_by_id),title:e.file_path?w(`queue:create`)?T(`archives`,`reprint`,e.created_by_id)?void 0:v(`archives.permission.noReprint`):v(`archives.permission.noAddToQueue`):v(`archives.card.noFileForReprint`)},{label:v(`archives.menu.openInBambuStudio`),icon:(0,$.jsx)(le,{className:`w-4 h-4`}),onClick:()=>{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,u)},disabled:!e.file_path,title:e.file_path?void 0:v(`archives.card.noFileForReprint`)}]:[{label:v(`archives.menu.slice`),icon:g?(0,$.jsx)(F,{className:`w-4 h-4`}):(0,$.jsx)(le,{className:`w-4 h-4`}),onClick:()=>{if(g)ue(!0);else{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,u)}},disabled:g&&!T(`archives`,`reprint`,e.created_by_id),title:g&&!T(`archives`,`reprint`,e.created_by_id)?v(`archives.permission.noReprint`):void 0},...g?[{label:v(`library.runWithPipeline.actionLabel`),icon:(0,$.jsx)(Fe,{className:`w-4 h-4`}),onClick:()=>me(!0),disabled:!w(`pipelines:run`)||!T(`archives`,`reprint`,e.created_by_id),title:w(`pipelines:run`)?T(`archives`,`reprint`,e.created_by_id)?void 0:v(`archives.permission.noReprint`):v(`library.runWithPipeline.noPermission`)}]:[]],{label:e.external_url?v(`archives.menu.externalLink`):v(`archives.menu.viewOnMakerWorld`),icon:(0,$.jsx)(_e,{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:v(`archives.menu.confirmOutcome`),icon:e.user_verdict===`reject`?(0,$.jsx)(Ce,{className:`w-4 h-4`}):(0,$.jsx)(N,{className:`w-4 h-4`}),onClick:()=>z(!0),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:v(`archives.menu.preview3d`),icon:(0,$.jsx)(y,{className:`w-4 h-4`}),onClick:()=>{Ut()}},{label:v(`archives.menu.viewTimelapse`),icon:(0,$.jsx)(se,{className:`w-4 h-4`}),onClick:k,disabled:O===0},{label:v(`archives.media.download`),icon:(0,$.jsx)(wt,{className:`w-4 h-4`}),onClick:()=>Be(!0),disabled:!e.timelapse_path&&(!w(`printers:files`)||!e.printer_id||!e.started_at),title:!e.timelapse_path&&!w(`printers:files`)?v(`printers.permission.noFiles`):void 0},{label:v(`archives.menu.scanForTimelapse`),icon:(0,$.jsx)(ce,{className:`w-4 h-4`}),onClick:()=>Zt.mutate(),disabled:!e.printer_id||!!e.timelapse_path||Zt.isPending||!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},{label:v(`archives.menu.uploadTimelapse`),icon:(0,$.jsx)(qe,{className:`w-4 h-4`}),onClick:()=>Ft.current?.click(),disabled:!!e.timelapse_path||!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},...e.timelapse_path?[{label:v(`archives.menu.removeTimelapse`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>bt(!0),danger:!0,disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:e.source_3mf_path?v(`archives.menu.downloadSource3mf`):v(`archives.menu.uploadSource3mf`),icon:(0,$.jsx)(Ct,{className:`w-4 h-4`}),onClick:()=>{e.source_3mf_path?r.downloadSource3mf(e.id).catch(e=>{console.error(`Source 3MF download failed:`,e)}):Mt.current?.click()},disabled:!e.source_3mf_path&&!T(`archives`,`update`,e.created_by_id),title:!e.source_3mf_path&&!T(`archives`,`update`,e.created_by_id)?v(`archives.permission.noUploadFiles`):void 0},...e.source_3mf_path?[{label:v(`archives.menu.replaceSource3mf`),icon:(0,$.jsx)(qe,{className:`w-4 h-4`}),onClick:()=>Mt.current?.click(),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},{label:v(`archives.menu.removeSource3mf`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>ht(!0),danger:!0,disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)}]:[],{label:e.f3d_path?v(`archives.menu.replaceF3d`):v(`archives.menu.uploadF3d`),icon:(0,$.jsx)(y,{className:`w-4 h-4`}),onClick:()=>Pt.current?.click(),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},...e.f3d_path?[{label:v(`archives.menu.downloadF3d`),icon:(0,$.jsx)(ae,{className:`w-4 h-4`}),onClick:()=>{r.downloadF3d(e.id).catch(e=>{console.error(`F3D download failed:`,e)})}},{label:v(`archives.menu.removeF3d`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>vt(!0),danger:!0,disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:v(`archives.menu.download`),icon:(0,$.jsx)(ae,{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:!w(`archives:read`),title:w(`archives:read`)?void 0:v(`archives.permission.noDownload`)},{label:v(`archives.menu.copyDownloadLink`),icon:(0,$.jsx)(R,{className:`w-4 h-4`}),onClick:()=>{let t=`${window.location.origin}${r.getArchiveDownload(e.id)}`;navigator.clipboard.writeText(t).then(()=>{C(v(`archives.toast.linkCopied`))}).catch(()=>{C(v(`archives.toast.failedCopyLink`),`error`)})},disabled:!w(`archives:read`),title:w(`archives:read`)?void 0:v(`archives.permission.noCopyLink`)},{label:v(`archives.menu.qrCode`),icon:(0,$.jsx)(q,{className:`w-4 h-4`}),onClick:()=>it(!0)},{label:e.photos?.length?v(`archives.menu.viewPhotosCount`,{count:e.photos.length}):v(`archives.menu.viewPhotos`),icon:(0,$.jsx)(x,{className:`w-4 h-4`}),onClick:()=>st(!0),disabled:!e.photos?.length},{label:v(`archives.menu.projectPage`),icon:(0,$.jsx)(de,{className:`w-4 h-4`}),onClick:()=>lt(!0)},{label:``,divider:!0,onClick:()=>{}},{label:e.is_favorite?v(`archives.menu.removeFromFavorites`):v(`archives.menu.addToFavorites`),icon:(0,$.jsx)(Ae,{className:`w-4 h-4 ${e.is_favorite?`fill-yellow-400 text-yellow-400`:T(`archives`,`update`,e.created_by_id)?`group-hover:text-yellow-400`:``}`}),onClick:()=>en.mutate(),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},{label:v(`archives.menu.edit`),icon:(0,$.jsx)(Pe,{className:`w-4 h-4`}),onClick:()=>ke(!0),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`)},{label:v(`archives.menu.printLog`),icon:(0,$.jsx)(Te,{className:`w-4 h-4`}),onClick:()=>Ne(!0)},...e.project_id&&e.project_name?[{label:v(`archives.menu.goToProject`,{name:e.project_name}),icon:(0,$.jsx)(V,{className:`w-4 h-4 text-bambu-green`}),onClick:()=>window.location.href=`/projects`}]:[],{label:v(`archives.menu.addToProject`),icon:(0,$.jsx)(V,{className:`w-4 h-4`}),onClick:()=>{},disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?void 0:v(`archives.permission.noUpdateArchives`),submenuSearchPlaceholder:ut(s??[],e.project_id).length>5?v(`archives.menu.searchProjects`):void 0,submenu:(()=>{let t=[];if(e.project_id&&t.push({label:v(`archives.menu.removeFromProject`),icon:(0,$.jsx)(Y,{className:`w-4 h-4`}),onClick:()=>nn.mutate(null),disabled:!T(`archives`,`update`,e.created_by_id)}),!s)t.push({label:v(`archives.menu.loading`),icon:(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),onClick:()=>{},disabled:!0});else{let n=ut(s,e.project_id).sort((e,t)=>e.name.localeCompare(t.name));n.length===0?t.push({label:v(`archives.menu.noProjectsAvailable`),icon:(0,$.jsx)(V,{className:`w-4 h-4 opacity-50`}),onClick:()=>{},disabled:!0}):n.forEach(n=>{t.push({label:n.name,icon:(0,$.jsx)(`div`,{className:`w-3 h-3 rounded-full flex-shrink-0`,style:{backgroundColor:n.color||`#888`}}),onClick:()=>nn.mutate(n.id),disabled:e.project_id===n.id||!T(`archives`,`update`,e.created_by_id)})})}return t})()},{label:v(i?`archives.menu.deselect`:`archives.menu.select`),icon:i?(0,$.jsx)(He,{className:`w-4 h-4`}):(0,$.jsx)(Ue,{className:`w-4 h-4`}),onClick:()=>a(e.id)},{label:``,divider:!0,onClick:()=>{}},{label:v(`archives.menu.delete`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>ge(!0),danger:!0,disabled:!T(`archives`,`delete`,e.created_by_id),title:T(`archives`,`delete`,e.created_by_id)?void 0:v(`archives.permission.noDelete`)}],on=`${e.print_name||e.filename}${e.plate_id!=null&&e.plate_id>1?` — ${v(`printers.plateNumber`,{number:e.plate_id})}`:``}`;return(0,$.jsxs)(X,{"data-archive-id":e.id,className:`relative flex flex-col group cursor-pointer ${i?`ring-2 ring-bambu-green`:``}`,style:c?{outline:`4px solid #facc15`,outlineOffset:`2px`}:void 0,onContextMenu:rn,onClick:o?()=>a(e.id):t=>{!xt&&En(t)&&E(`/archives/${e.id}`)},children:[o&&(0,$.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,$.jsx)(He,{className:`w-5 h-5 text-bambu-green`}):(0,$.jsx)(Ue,{className:`w-5 h-5 text-white`})}),(0,$.jsxs)(`div`,{className:`aspect-video bg-bambu-dark relative flex-shrink-0 overflow-hidden rounded-t-xl`,onMouseEnter:()=>kt(!0),onMouseLeave:()=>kt(!1),children:[e.thumbnail_path?(0,$.jsx)(`img`,{src:Et!==null&&Bt.length>0?r.getArchivePlateThumbnail(e.id,Bt[Ht]?.index??0):e.plate_id!=null&&e.plate_id>1?r.getArchivePlateThumbnail(e.id,e.plate_id):r.getArchiveThumbnail(e.id),onError:t=>{let n=t.currentTarget;n.dataset.fellBack||(n.dataset.fellBack=`1`,n.src=r.getArchiveThumbnail(e.id))},loading:`lazy`,alt:e.print_name||e.filename,className:`w-full h-full object-cover`}):(0,$.jsx)(`div`,{className:`w-full h-full flex items-center justify-center`,children:(0,$.jsx)(Ee,{className:`w-12 h-12 text-bambu-dark-tertiary`})}),Vt&&Bt.length>1&&(0,$.jsxs)($.Fragment,{children:[(0,$.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(),Dt(e=>{let t=e??0;return t>0?t-1:Bt.length-1})},title:v(`archives.card.previousPlate`),children:(0,$.jsx)(D,{className:`w-4 h-4 text-white`})}),(0,$.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(),Dt(e=>{let t=e??0;return t<Bt.length-1?t+1:0})},title:v(`archives.card.nextPlate`),children:(0,$.jsx)(ee,{className:`w-4 h-4 text-white`})}),(0,$.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:Bt.map((e,t)=>(0,$.jsx)(`button`,{className:`w-2 h-2 rounded-full transition-colors ${t===Ht?`bg-bambu-green`:`bg-white/50 hover:bg-white/80`}`,onClick:e=>{e.stopPropagation(),Dt(t)},title:e.name||v(`archives.card.plateNumber`,{index:e.index})},e.index))})]}),(0,$.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();St({x:t.left,y:t.bottom+4})},title:v(`archives.card.moreOptions`),children:(0,$.jsx)(oe,{className:`w-5 h-5 text-white`})}),(0,$.jsx)(`button`,{className:`absolute top-2 right-2 p-1 rounded transition-colors ${T(`archives`,`update`,e.created_by_id)?`bg-black/50 hover:bg-black/70`:`bg-black/30 cursor-not-allowed`}`,onClick:t=>{t.stopPropagation(),T(`archives`,`update`,e.created_by_id)&&en.mutate()},disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?e.is_favorite?v(`archives.card.removeFromFavorites`):v(`archives.card.addToFavorites`):v(`archives.permission.noUpdateArchives`),children:(0,$.jsx)(Ae,{className:`w-5 h-5 ${e.is_favorite?`text-yellow-400 fill-yellow-400`:`text-white`} ${T(`archives`,`update`,e.created_by_id)?``:`opacity-50`}`})}),(e.status===`failed`||e.status===`aborted`)&&(0,$.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`?v(`archives.card.aborted`):v(`archives.card.failed`)}),e.status===`cancelled`&&(0,$.jsx)(`div`,{className:`absolute top-2 left-12 px-2 py-1 rounded text-xs bg-status-warning/80 text-white`,children:v(`archives.card.cancelled`)}),e.status===`completed`&&e.confirm_requested&&e.user_verdict==null&&(0,$.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),z(!0)},disabled:!T(`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:T(`archives`,`update`,e.created_by_id)?v(`archives.card.confirmPendingTitle`):v(`archives.permission.noUpdateArchives`),children:[(0,$.jsx)(N,{className:`w-3 h-3`}),v(`archives.card.confirmPending`)]}),e.status===`completed`&&e.user_verdict===`reject`&&(0,$.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:`${v(`archives.card.rejectedTitle`)}${Rt?` — ${v(Rt)}`:``}`,children:[(0,$.jsx)(Ce,{className:`w-3 h-3`}),v(`archives.card.rejected`)]}),e.status===`completed`&&e.user_verdict===`good`&&(0,$.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:`${v(`archives.card.confirmedGoodTitle`)}${Rt?` — ${v(Rt)}`:``}`,children:[(0,$.jsx)(N,{className:`w-3 h-3`}),v(`archives.card.confirmedGood`)]}),e.duplicate_count>0&&Lt>0&&zt&&(0,$.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),b?.(zt)},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:v(`archives.viewOriginalPrint`,{id:zt}),children:[(0,$.jsx)(R,{className:`w-3 h-3`}),`#`,Lt]}),e.duplicate_count>0&&Lt===0&&(0,$.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,$.jsx)(Tt,{className:`w-3 h-3`}),`+`,e.duplicate_count]}),e.source_3mf_path&&(0,$.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`;gt(e.id,n,`source`,u)},title:v(`archives.card.openSource3mf`),children:(0,$.jsx)(Ct,{className:`w-4 h-4 text-orange-400`})}),e.f3d_path&&(0,$.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:v(`archives.card.downloadF3d`),children:(0,$.jsx)(y,{className:`w-4 h-4 text-cyan-400`})}),(0,$.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(),Ut()},title:v(`archives.card.preview3d`),children:(0,$.jsx)(De,{className:`w-4 h-4 text-white`})}),O>0&&(0,$.jsxs)(`button`,{className:`absolute bottom-2 right-12 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>{e.stopPropagation(),k()},title:O>1?v(`archives.card.viewTimelapses`,{count:O}):v(`archives.card.viewTimelapse`),"data-testid":`archive-card-timelapse`,children:[(0,$.jsx)(se,{className:`w-4 h-4 text-bambu-green`}),O>1&&(0,$.jsx)(`span`,{className:`absolute -top-1 -right-1 w-4 h-4 bg-bambu-green rounded-full text-[10px] text-white flex items-center justify-center`,children:O})]}),e.photos&&e.photos.length>0&&(0,$.jsxs)(`button`,{className:`absolute bottom-2 ${O>0?`right-[5.5rem]`:`right-12`} p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>{e.stopPropagation(),st(!0)},title:e.photos.length===1?v(`archives.card.viewPhoto`):v(`archives.card.viewPhotos`,{count:e.photos.length}),children:[(0,$.jsx)(x,{className:`w-4 h-4 text-blue-400`}),e.photos.length>1&&(0,$.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})]}),tn&&tn.length>0&&(0,$.jsx)(f,{to:`/files?folder=${tn[0].id}`,className:`absolute bottom-2 p-1.5 rounded bg-black/60 hover:bg-black/80 transition-colors`,onClick:e=>e.stopPropagation(),title:v(`archives.card.openFolder`,{name:tn[0].name}),style:{left:e.source_3mf_path?e.f3d_path?`5.5rem`:`3rem`:e.f3d_path?`3rem`:`0.5rem`},children:(0,$.jsx)(H,{className:`w-4 h-4 text-yellow-400`})})]}),(0,$.jsxs)(et,{className:`p-4 flex-1 flex flex-col`,children:[(0,$.jsxs)(`p`,{className:`text-[10px] text-bambu-gray/70 mb-1`,children:[`#`,e.id]}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-1`,children:[(0,$.jsx)(`h3`,{className:`min-w-0 font-medium text-white truncate`,children:o?on:(0,$.jsx)(f,{to:`/archives/${e.id}`,className:`hover:underline`,children:on})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,className:`p-1 sm:p-1.5 shrink-0`,onClick:()=>ke(!0),disabled:!T(`archives`,`update`,e.created_by_id),title:T(`archives`,`update`,e.created_by_id)?v(`archives.card.edit`):v(`archives.card.noPermissionEdit`),children:(0,$.jsx)(Pe,{className:`w-3 h-3 sm:w-4 sm:h-4`})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 mb-3 flex-wrap`,children:[(0,$.jsx)(`p`,{className:`text-xs text-bambu-gray`,children:t}),(()=>{let t=te(e.bed_type);return t?(0,$.jsx)(`img`,{src:t.icon,alt:t.label,title:t.label,className:`w-4 h-4 flex-shrink-0`}):null})(),(0,$.jsx)(`span`,{className:`text-[10px] px-1.5 py-0.5 rounded font-medium ${mt(e)?`bg-bambu-green/20 text-bambu-green`:`bg-orange-100 dark:bg-orange-500/20 text-orange-700 dark:text-orange-400`}`,title:mt(e)?v(`archives.card.slicedFile`):v(`archives.card.sourceFile`),children:mt(e)?v(`archives.card.gcode`):v(`archives.card.source`)}),e.content_hash&&(0,$.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,$.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded-full truncate max-w-[120px]`,style:{backgroundColor:`${s?.find(t=>t.id===e.project_id)?.color||`#6b7280`}20`,color:s?.find(t=>t.id===e.project_id)?.color||`#6b7280`},title:v(`archives.card.project`,{name:e.project_name}),children:e.project_name}),e.run_count>1&&(0,$.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:t=>{t.stopPropagation(),E(`/archives/${e.id}`)},title:v(`archives.card.runsBadgeTitle`,{count:e.run_count,successful:e.successful_run_count,failed:e.failed_run_count}),children:v(`archives.card.runsBadge`,{count:e.run_count})})]}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:e.time_accuracy?`Estimated: ${ot(e.time_estimate_seconds||e.print_time_seconds||0)}\nActual: ${ot(e.actual_time_seconds||0)}\nAccuracy: ${e.time_accuracy.toFixed(0)}%`:e.actual_time_seconds?`Actual: ${ot(e.actual_time_seconds)}`:`Estimated: ${ot(e.print_time_seconds||0)}`,children:[(0,$.jsx)(re,{className:`w-3 h-3`}),ot(e.actual_time_seconds||e.print_time_seconds||0),e.time_accuracy&&(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:kn.has(e.status)?v(`archives.card.fullPrintFigure`):void 0,"data-testid":`archive-grams`,children:[(0,$.jsx)(je,{className:`w-3 h-3`}),e.filament_used_grams.toFixed(1),`g`]}),(e.cost!=null||e.energy_cost!=null||e.wear_cost!=null)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-3 text-bambu-gray`,children:[e.cost!=null&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:e.status===`printing`?v(`archives.card.costEstimate`):kn.has(e.status)?v(`archives.card.fullPrintFigure`):void 0,"data-testid":`archive-cost`,children:[(0,$.jsx)(P,{className:`w-3 h-3`}),e.status===`printing`&&`~`,_,e.cost.toFixed(2)]}),e.energy_cost!=null&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:`${v(`stats.energyUsed`)}: ${e.energy_kwh?.toFixed(3)||`N/A`} kWh`,children:[(0,$.jsx)(Ze,{className:`w-3 h-3`}),_,e.energy_cost.toFixed(2)]}),e.wear_cost!=null&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,title:v(`archives.card.wearCost`),children:[(0,$.jsx)(Xe,{className:`w-3 h-3`}),_,e.wear_cost.toFixed(2)]})]}),(e.layer_height||e.total_layers)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,children:[(0,$.jsx)(De,{className:`w-3 h-3`}),e.total_layers&&(0,$.jsx)(`span`,{children:e.total_layers===1?v(`archives.card.layer`,{count:e.total_layers}):v(`archives.card.layers`,{count:e.total_layers})}),e.total_layers&&e.layer_height&&(0,$.jsx)(`span`,{className:`text-bambu-gray/50`,children:`·`}),e.layer_height&&(0,$.jsxs)(`span`,{children:[e.layer_height,`mm`]})]}),e.object_count!=null&&e.object_count>0&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:e.object_count===1?v(`archives.card.object`,{count:e.object_count}):v(`archives.card.objects`,{count:e.object_count}),children:[(0,$.jsx)(y,{className:`w-3 h-3`}),e.object_count===1?v(`archives.card.object`,{count:e.object_count}):v(`archives.card.objects`,{count:e.object_count})]}),e.sliced_for_model&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-gray`,title:v(`archives.card.slicedFor`,{model:e.sliced_for_model}),children:[(0,$.jsx)(Le,{className:`w-3 h-3`}),e.sliced_for_model]}),e.filament_type&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 col-span-2`,children:[(0,$.jsx)(`span`,{className:`text-bambu-gray text-xs`,children:e.filament_type}),e.filament_color&&(0,$.jsx)(`div`,{className:`flex items-center gap-0.5 flex-wrap`,children:e.filament_color.split(`,`).map((e,t)=>(0,$.jsx)(`div`,{className:`w-3 h-3 rounded-full border border-black/20`,style:{backgroundColor:e},title:e},t))})]})]}),j&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 text-bambu-green text-xs mb-3`,title:v(`archives.card.slicerAmsMappingTooltip`,{printer:j}),children:[(0,$.jsx)(M,{className:`w-3.5 h-3.5`}),v(`archives.card.slicerAmsMapping`,{printer:j})]}),(e.tags||e.notes)&&(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 mb-3`,children:[e.notes&&(0,$.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,$.jsx)(We,{className:`w-3 h-3`})}),e.tags?.split(`,`).map((e,t)=>(0,$.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,$.jsx)(`div`,{className:`flex-1`}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between text-xs text-bambu-gray border-t border-bambu-dark-tertiary pt-3`,children:[(0,$.jsx)(`span`,{children:rt(e.created_at,l)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.created_by_username&&(0,$.jsxs)(`span`,{className:`flex items-center gap-1`,title:v(`archives.card.uploadedBy`,{name:e.created_by_username}),children:[(0,$.jsx)(Je,{className:`w-3 h-3`}),e.created_by_username]}),(0,$.jsx)(`span`,{children:tt(e.file_size)})]})]}),(0,$.jsxs)(`div`,{className:`flex gap-1 mt-3`,children:[mt(e)?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(Z,{variant:`primary`,size:`sm`,className:`flex-1 min-w-0 overflow-hidden`,onClick:()=>I(!0),disabled:!e.file_path||!w(`queue:create`)||!T(`archives`,`reprint`,e.created_by_id),title:e.file_path?w(`queue:create`)?T(`archives`,`reprint`,e.created_by_id)?void 0:v(`archives.card.noPermissionReprint`):v(`archives.permission.noAddToQueue`):v(`archives.card.noFileForReprint`),children:[(0,$.jsx)(Le,{className:`w-3 h-3 flex-shrink-0`}),(0,$.jsx)(`span`,{className:`hidden xl:inline truncate`,children:v(`common.print`)})]}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,u)},title:v(`archives.card.openInBambuStudio`),children:(0,$.jsx)(le,{className:`w-3 h-3 sm:w-4 sm:h-4`})})]}):(0,$.jsxs)(Z,{variant:`primary`,size:`sm`,className:`flex-1 min-w-0 overflow-hidden`,onClick:()=>{if(g)ue(!0);else{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,u)}},disabled:g&&!T(`archives`,`reprint`,e.created_by_id),title:g?T(`archives`,`reprint`,e.created_by_id)?v(`slice.title`):v(`archives.permission.noReprint`):v(`archives.card.openInBambuStudioToSlice`),children:[g?(0,$.jsx)(F,{className:`w-3 h-3 flex-shrink-0`}):(0,$.jsx)(le,{className:`w-3 h-3 flex-shrink-0`}),(0,$.jsx)(`span`,{className:`hidden xl:inline truncate`,children:v(`archives.card.slice`)})]}),(0,$.jsx)(Z,{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?v(`archives.card.externalLink`):e.makerworld_url?v(`archives.card.makerWorld`,{designer:e.designer||v(`archives.card.viewProject`)}):v(`archives.card.noExternalLink`),children:(0,$.jsx)(_e,{className:`w-3 h-3 sm:w-4 sm:h-4 ${!e.external_url&&!e.makerworld_url?`opacity-20`:``}`})}),(0,$.jsx)(Z,{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:v(`archives.card.download`),children:(0,$.jsx)(ae,{className:`w-3 h-3 sm:w-4 sm:h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,className:`min-w-0 p-1 sm:p-1.5`,onClick:()=>ge(!0),disabled:!T(`archives`,`delete`,e.created_by_id),title:T(`archives`,`delete`,e.created_by_id)?v(`archives.card.delete`):v(`archives.card.noPermissionDelete`),children:(0,$.jsx)(J,{className:`w-3 h-3 sm:w-4 sm:h-4 text-red-600 dark:text-red-400`})})]})]}),Oe&&(0,$.jsx)(xe,{archive:e,onClose:()=>ke(!1)}),Me&&(0,$.jsx)(Yt,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>Ne(!1)}),At&&(0,$.jsx)(U,{plates:At,onSelect:t=>{jt(null),E(`/gcode-viewer?archive=${e.id}&plate=${t}`)},onClose:()=>jt(null)}),ie&&(0,$.jsx)(ne,{mode:`create`,archiveId:e.id,archiveName:e.print_name||e.filename,preselectPlateId:e.plate_id,onClose:()=>I(!1)}),L&&(0,$.jsx)(we,{archiveId:e.id,onClose:()=>z(!1)}),B&&(0,$.jsx)(ve,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>ue(!1)}),fe&&(0,$.jsx)(dt,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>me(!1)}),he&&(0,$.jsxs)(nt,{title:v(`archives.modal.deleteArchive`),message:v(`archives.modal.deleteConfirm`,{name:e.print_name||e.filename}),confirmText:v(`archives.modal.deleteButton`),variant:`danger`,confirmDisabled:(G.data?.currently_printing??0)>0,onConfirm:()=>{$t.mutate(W),ge(!1),Se(!1)},onCancel:()=>{ge(!1),Se(!1)},children:[(G.data?.related_queue_items??0)>0&&(0,$.jsx)(`div`,{className:(G.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:(G.data?.currently_printing??0)>0?v(`archives.modal.deleteBlockedByPrinting`,{count:G.data.currently_printing}):v(`archives.modal.deleteQueueItemsWarning`,{count:G.data.related_queue_items})}),(0,$.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer text-sm text-bambu-gray`,children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 accent-red-500`,checked:W,onChange:e=>Se(e.target.checked)}),(0,$.jsx)(`span`,{children:v(`archives.modal.deletePurgeStats`)})]})]}),pt&&(0,$.jsx)(nt,{title:v(`archives.modal.removeSource3mf`),message:v(`archives.modal.removeSource3mfConfirm`,{name:e.print_name||e.filename}),confirmText:v(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{qt.mutate(),ht(!1)},onCancel:()=>ht(!1)}),_t&&(0,$.jsx)(nt,{title:v(`archives.modal.removeF3d`),message:v(`archives.modal.removeF3dConfirm`,{name:e.print_name||e.filename}),confirmText:v(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{Xt.mutate(),vt(!1)},onCancel:()=>vt(!1)}),yt&&(0,$.jsx)(nt,{title:v(`archives.modal.removeTimelapse`),message:v(`archives.modal.removeTimelapseConfirm`,{name:e.print_name||e.filename}),confirmText:v(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{Wt.mutate(),bt(!1)},onCancel:()=>bt(!1)}),xt&&(0,$.jsx)(pe,{x:xt.x,y:xt.y,items:an,onClose:()=>St(null)}),ze&&(0,$.jsx)(ln,{archiveId:e.id,archiveName:e.print_name||e.filename,printerName:t,onClose:()=>Be(!1)}),Ie&&e.timelapse_path&&(0,$.jsx)(Nt,{src:r.getArchiveTimelapse(e.id),title:v(`archives.modal.timelapse`,{name:e.print_name||e.filename}),downloadFilename:`${e.print_name||e.filename}_timelapse.mp4`,archiveId:e.id,onClose:()=>Re(!1),onEdit:()=>{S.invalidateQueries({queryKey:[`archives`]}),Re(!1)}}),Ve&&Ke.length>0&&(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,children:(0,$.jsxs)(`div`,{className:`bg-card-dark rounded-lg max-w-lg w-full max-h-[80vh] flex flex-col`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-700`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-white`,children:v(`archives.modal.selectTimelapse`)}),(0,$.jsx)(`p`,{className:`text-sm text-gray-400 mt-1`,children:v(`archives.modal.selectTimelapseDesc`)})]}),(0,$.jsx)(`button`,{onClick:()=>{Ge(!1),Ye([])},className:`text-gray-400 hover:text-white p-1`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsx)(`div`,{className:`overflow-y-auto flex-1 p-2`,children:Ke.map(e=>(0,$.jsxs)(`button`,{onClick:()=>Qt.mutate(e.name),disabled:Qt.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,$.jsx)(se,{className:`w-8 h-8 text-bambu-green flex-shrink-0`}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,$.jsx)(`p`,{className:`text-white font-medium truncate`,children:e.name}),(0,$.jsxs)(`p`,{className:`text-sm text-gray-400`,children:[tt(e.size),e.mtime&&` • ${rt(e.mtime,l)}`]})]})]},e.name))}),(0,$.jsx)(`div`,{className:`p-4 border-t border-gray-700`,children:(0,$.jsx)(Z,{variant:`secondary`,onClick:()=>{Ge(!1),Ye([])},className:`w-full`,children:`Cancel`})})]})}),$e&&(0,$.jsx)(sn,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>it(!1)}),at&&e.photos&&e.photos.length>0&&(0,$.jsx)(ft,{archiveId:e.id,archiveName:e.print_name||e.filename,photos:e.photos,onClose:()=>st(!1),onDelete:async t=>{try{await r.deleteArchivePhoto(e.id,t),S.invalidateQueries({queryKey:[`archives`]}),C(v(`archives.toast.photoDeleted`))}catch{C(v(`archives.toast.failedDeletePhoto`),`error`)}}}),ct&&(0,$.jsx)(cn,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>lt(!1)}),(0,$.jsx)(`input`,{ref:Mt,type:`file`,accept:`.3mf`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Kt.mutate(t),e.target.value=``}}),(0,$.jsx)(`input`,{ref:Pt,type:`file`,accept:`.f3d`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Jt.mutate(t),e.target.value=``}}),(0,$.jsx)(`input`,{ref:Ft,type:`file`,accept:`.mp4,.avi,.mkv`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&Gt.mutate(t),e.target.value=``}})]})}function jn({archive:e,printerName:t,isSelected:n,onSelect:i,selectionMode:a,projects:o,isHighlighted:s,preferredSlicer:c=`bambu_studio`,useSlicerApi:l=!1,t:u,onNavigateToArchive:g}){let _=p(),{showToast:v}=A(),{hasPermission:b,canModify:S}=Qe(),[C,w]=(0,Q.useState)(!1),[T,E]=(0,Q.useState)(!1),[ee,D]=(0,Q.useState)(!1),[O,k]=(0,Q.useState)(!1),j=m({queryKey:[`archive`,e.id,`delete-impact`],queryFn:()=>r.getArchiveDeleteImpact(e.id),enabled:ee,staleTime:0}),M=d(),{videos:re,openTimelapse:P}=On(e,M,()=>ge(!0)),[ie,I]=(0,Q.useState)(!1),[L,z]=(0,Q.useState)(!1),[B,ue]=(0,Q.useState)(!1),[fe,me]=(0,Q.useState)(!1),[he,ge]=(0,Q.useState)(!1),[W,Se]=(0,Q.useState)(!1),[De,G]=(0,Q.useState)(!1),[Oe,ke]=(0,Q.useState)([]),[je,Me]=(0,Q.useState)(!1),[Ne,Ie]=(0,Q.useState)(!1),[Re,ze]=(0,Q.useState)(!1),[Be,Ve]=(0,Q.useState)(!1),[We,Ge]=(0,Q.useState)(!1),[Ke,Ye]=(0,Q.useState)(!1),[Xe,Ze]=(0,Q.useState)(null),$e=(0,Q.useRef)(null),et=(0,Q.useRef)(null),X=(0,Q.useRef)(null),[rt,at]=(0,Q.useState)(null),ot=e.duplicate_sequence??0,st=be(e.user_verdict_source),ct=e.original_archive_id??null,lt=async()=>{try{let t=await r.getArchivePlates(e.id);if(t.is_multi_plate&&t.plates.length>1){at(t.plates);return}}catch{}M(`/gcode-viewer?archive=${e.id}`)},pt=h({mutationFn:()=>r.deleteArchiveTimelapse(e.id),onSuccess:()=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.timelapseRemoved`))},onError:e=>{v(e.message||u(`archives.toast.failedRemoveTimelapse`),`error`)}}),ht=h({mutationFn:t=>r.uploadArchiveTimelapse(e.id,t),onSuccess:e=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.timelapseUploaded`,{filename:e.filename}))},onError:e=>{v(e.message||u(`archives.toast.failedUploadTimelapse`),`error`)}}),_t=h({mutationFn:t=>r.uploadSource3mf(e.id,t),onSuccess:e=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.source3mfAttached`,{filename:e.filename}))},onError:e=>{v(e.message||u(`archives.toast.failedUploadSource3mf`),`error`)}}),vt=h({mutationFn:()=>r.deleteSource3mf(e.id),onSuccess:()=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.source3mfRemoved`))},onError:e=>{v(e.message||u(`archives.toast.failedRemoveSource3mf`),`error`)}}),yt=h({mutationFn:t=>r.uploadF3d(e.id,t),onSuccess:e=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.f3dAttached`,{filename:e.filename}))},onError:e=>{v(e.message||u(`archives.toast.failedUploadF3d`),`error`)}}),bt=h({mutationFn:()=>r.deleteF3d(e.id),onSuccess:()=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.f3dRemoved`))},onError:e=>{v(e.message||u(`archives.toast.failedRemoveF3d`),`error`)}}),xt=h({mutationFn:()=>r.scanArchiveTimelapse(e.id),onSuccess:e=>{e.status===`attached`?(_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.timelapseAttached`,{filename:e.filename}))):e.status===`exists`?v(u(`archives.toast.timelapseAlreadyAttached`)):e.status===`not_found`&&e.available_files&&e.available_files.length>0?(ke(e.available_files),G(!0)):v(e.message||u(`archives.toast.noMatchingTimelapse`),`warning`)},onError:e=>{v(e.message||u(`archives.toast.failedScanTimelapse`),`error`)}}),St=h({mutationFn:t=>r.selectArchiveTimelapse(e.id,t),onSuccess:e=>{_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.timelapseAttached`,{filename:e.filename})),G(!1),ke([])},onError:e=>{v(e.message||u(`archives.toast.failedAttachTimelapse`),`error`)}}),wt=h({mutationFn:t=>r.deleteArchive(e.id,t),onSuccess:()=>{ye(_),v(u(`archives.toast.archiveDeleted`))},onError:()=>{v(u(`archives.toast.failedDeleteArchive`),`error`)}}),Et=h({mutationFn:()=>r.toggleFavorite(e.id),onSuccess:e=>{_.invalidateQueries({queryKey:[`archives`]}),v(e.is_favorite?u(`archives.toast.addedToFavorites`):u(`archives.toast.removedFromFavorites`))}}),{data:Dt}=m({queryKey:[`archive-folders`,e.id],queryFn:()=>r.getLibraryFoldersByArchive(e.id)}),Ot=h({mutationFn:t=>r.updateArchive(e.id,{project_id:t}),onSuccess:()=>{ye(_),v(u(`archives.toast.projectUpdated`))},onError:()=>{v(u(`archives.toast.failedUpdateProject`),`error`)}}),kt=e=>{e.preventDefault(),Ze({x:e.clientX,y:e.clientY})},At=[...mt(e)?[{label:u(`common.print`),icon:(0,$.jsx)(Le,{className:`w-4 h-4`}),onClick:()=>I(!0),disabled:!e.file_path||!b(`queue:create`)||!S(`archives`,`reprint`,e.created_by_id),title:e.file_path?b(`queue:create`)?S(`archives`,`reprint`,e.created_by_id)?void 0:u(`archives.permission.noReprint`):u(`archives.permission.noAddToQueue`):u(`archives.card.noFileForReprint`)},{label:u(`archives.menu.openInBambuStudio`),icon:(0,$.jsx)(le,{className:`w-4 h-4`}),onClick:()=>{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,c)},disabled:!e.file_path,title:e.file_path?void 0:u(`archives.card.noFileForReprint`)}]:[{label:u(`archives.menu.slice`),icon:l?(0,$.jsx)(F,{className:`w-4 h-4`}):(0,$.jsx)(le,{className:`w-4 h-4`}),onClick:()=>{if(l)ue(!0);else{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,c)}},disabled:l&&!S(`archives`,`reprint`,e.created_by_id),title:l&&!S(`archives`,`reprint`,e.created_by_id)?u(`archives.permission.noReprint`):void 0},...l?[{label:u(`library.runWithPipeline.actionLabel`),icon:(0,$.jsx)(Fe,{className:`w-4 h-4`}),onClick:()=>me(!0),disabled:!b(`pipelines:run`)||!S(`archives`,`reprint`,e.created_by_id),title:b(`pipelines:run`)?S(`archives`,`reprint`,e.created_by_id)?void 0:u(`archives.permission.noReprint`):u(`library.runWithPipeline.noPermission`)}]:[]],{label:e.external_url?u(`archives.menu.externalLink`):u(`archives.menu.viewOnMakerWorld`),icon:(0,$.jsx)(_e,{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:u(`archives.menu.confirmOutcome`),icon:e.user_verdict===`reject`?(0,$.jsx)(Ce,{className:`w-4 h-4`}):(0,$.jsx)(N,{className:`w-4 h-4`}),onClick:()=>z(!0),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:u(`archives.menu.preview3d`),icon:(0,$.jsx)(y,{className:`w-4 h-4`}),onClick:()=>{lt()}},{label:u(`archives.menu.viewTimelapse`),icon:(0,$.jsx)(se,{className:`w-4 h-4`}),onClick:P,disabled:re===0},{label:u(`archives.menu.scanForTimelapse`),icon:(0,$.jsx)(ce,{className:`w-4 h-4`}),onClick:()=>xt.mutate(),disabled:!e.printer_id||!!e.timelapse_path||xt.isPending||!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},{label:u(`archives.menu.uploadTimelapse`),icon:(0,$.jsx)(qe,{className:`w-4 h-4`}),onClick:()=>X.current?.click(),disabled:!!e.timelapse_path||!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},...e.timelapse_path?[{label:u(`archives.menu.removeTimelapse`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>Ye(!0),danger:!0,disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:e.source_3mf_path?u(`archives.menu.downloadSource3mf`):u(`archives.menu.uploadSource3mf`),icon:(0,$.jsx)(Ct,{className:`w-4 h-4`}),onClick:()=>{e.source_3mf_path?r.downloadSource3mf(e.id).catch(e=>{console.error(`Source 3MF download failed:`,e)}):$e.current?.click()},disabled:!e.source_3mf_path&&!S(`archives`,`update`,e.created_by_id),title:!e.source_3mf_path&&!S(`archives`,`update`,e.created_by_id)?u(`archives.permission.noUploadFiles`):void 0},...e.source_3mf_path?[{label:u(`archives.menu.replaceSource3mf`),icon:(0,$.jsx)(qe,{className:`w-4 h-4`}),onClick:()=>$e.current?.click(),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},{label:u(`archives.menu.removeSource3mf`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>Ve(!0),danger:!0,disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)}]:[],{label:e.f3d_path?u(`archives.menu.replaceF3d`):u(`archives.menu.uploadF3d`),icon:(0,$.jsx)(y,{className:`w-4 h-4`}),onClick:()=>et.current?.click(),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},...e.f3d_path?[{label:u(`archives.menu.downloadF3d`),icon:(0,$.jsx)(ae,{className:`w-4 h-4`}),onClick:()=>{r.downloadF3d(e.id).catch(e=>{console.error(`F3D download failed:`,e)})}},{label:u(`archives.menu.removeF3d`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>Ge(!0),danger:!0,disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)}]:[],{label:``,divider:!0,onClick:()=>{}},{label:u(`archives.menu.download`),icon:(0,$.jsx)(ae,{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:!b(`archives:read`),title:b(`archives:read`)?void 0:u(`archives.permission.noDownload`)},{label:u(`archives.menu.copyDownloadLink`),icon:(0,$.jsx)(R,{className:`w-4 h-4`}),onClick:()=>{let t=`${window.location.origin}${r.getArchiveDownload(e.id)}`;navigator.clipboard.writeText(t).then(()=>{v(u(`archives.toast.linkCopied`))}).catch(()=>{v(u(`archives.toast.failedCopyLink`),`error`)})},disabled:!b(`archives:read`),title:b(`archives:read`)?void 0:u(`archives.permission.noCopyLink`)},{label:u(`archives.menu.qrCode`),icon:(0,$.jsx)(q,{className:`w-4 h-4`}),onClick:()=>Me(!0)},{label:e.photos?.length?u(`archives.menu.viewPhotosCount`,{count:e.photos.length}):u(`archives.menu.viewPhotos`),icon:(0,$.jsx)(x,{className:`w-4 h-4`}),onClick:()=>Ie(!0),disabled:!e.photos?.length},{label:u(`archives.menu.projectPage`),icon:(0,$.jsx)(de,{className:`w-4 h-4`}),onClick:()=>ze(!0)},{label:``,divider:!0,onClick:()=>{}},{label:e.is_favorite?u(`archives.menu.removeFromFavorites`):u(`archives.menu.addToFavorites`),icon:(0,$.jsx)(Ae,{className:`w-4 h-4 ${e.is_favorite?`fill-yellow-400 text-yellow-400`:S(`archives`,`update`,e.created_by_id)?`group-hover:text-yellow-400`:``}`}),onClick:()=>Et.mutate(),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},{label:u(`archives.menu.edit`),icon:(0,$.jsx)(Pe,{className:`w-4 h-4`}),onClick:()=>w(!0),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?void 0:u(`archives.permission.noUpdateArchives`)},{label:u(`archives.menu.printLog`),icon:(0,$.jsx)(Te,{className:`w-4 h-4`}),onClick:()=>E(!0)},...e.project_id&&e.project_name?[{label:u(`archives.menu.goToProject`,{name:e.project_name}),icon:(0,$.jsx)(V,{className:`w-4 h-4 text-bambu-green`}),onClick:()=>window.location.href=`/projects`}]:[],{label:u(`archives.menu.addToProject`),icon:(0,$.jsx)(V,{className:`w-4 h-4`}),onClick:()=>{},submenuSearchPlaceholder:ut(o??[],e.project_id).length>5?u(`archives.menu.searchProjects`):void 0,submenu:(()=>{let t=[];if(e.project_id&&t.push({label:u(`archives.menu.removeFromProject`),icon:(0,$.jsx)(Y,{className:`w-4 h-4`}),onClick:()=>Ot.mutate(null)}),!o)t.push({label:u(`archives.menu.loading`),icon:(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}),onClick:()=>{},disabled:!0});else{let n=ut(o,e.project_id).sort((e,t)=>e.name.localeCompare(t.name));n.length===0?t.push({label:u(`archives.menu.noProjectsAvailable`),icon:(0,$.jsx)(V,{className:`w-4 h-4 opacity-50`}),onClick:()=>{},disabled:!0}):n.forEach(n=>{t.push({label:n.name,icon:(0,$.jsx)(`div`,{className:`w-3 h-3 rounded-full flex-shrink-0`,style:{backgroundColor:n.color||`#888`}}),onClick:()=>Ot.mutate(n.id),disabled:e.project_id===n.id})})}return t})()},{label:u(n?`archives.menu.deselect`:`archives.menu.select`),icon:n?(0,$.jsx)(He,{className:`w-4 h-4`}):(0,$.jsx)(Ue,{className:`w-4 h-4`}),onClick:()=>i(e.id)},{label:``,divider:!0,onClick:()=>{}},{label:u(`archives.menu.delete`),icon:(0,$.jsx)(J,{className:`w-4 h-4`}),onClick:()=>D(!0),danger:!0,disabled:!S(`archives`,`delete`,e.created_by_id),title:S(`archives`,`delete`,e.created_by_id)?void 0:u(`archives.permission.noDelete`)}];return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{"data-archive-id":e.id,className:`grid grid-cols-12 gap-4 px-4 py-3 items-center cursor-pointer hover:bg-bambu-dark-tertiary/30 ${n?`bg-bambu-green/10`:``}`,style:s?{outline:`4px solid #facc15`,outlineOffset:`-4px`}:void 0,onContextMenu:kt,onClick:a?void 0:t=>{!Xe&&En(t)&&M(`/archives/${e.id}`)},children:[(0,$.jsxs)(`div`,{className:`col-span-1 flex items-center gap-2`,children:[a&&(0,$.jsx)(`button`,{onClick:()=>i(e.id),children:n?(0,$.jsx)(He,{className:`w-4 h-4 text-bambu-green`}):(0,$.jsx)(Ue,{className:`w-4 h-4 text-bambu-gray`})}),e.thumbnail_path?(0,$.jsx)(`img`,{src:r.getArchiveThumbnail(e.id),loading:`lazy`,alt:``,className:`w-10 h-10 object-cover rounded`}):(0,$.jsx)(`div`,{className:`w-10 h-10 bg-bambu-dark rounded flex items-center justify-center`,children:(0,$.jsx)(Ee,{className:`w-5 h-5 text-bambu-dark-tertiary`})})]}),(0,$.jsxs)(`div`,{className:`col-span-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`p`,{className:`text-white text-sm truncate`,children:a?e.print_name||e.filename:(0,$.jsx)(f,{to:`/archives/${e.id}`,className:`hover:underline`,children:e.print_name||e.filename})}),(e.status===`failed`||e.status===`aborted`)&&(0,$.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`?u(`archives.card.aborted`):u(`archives.card.failed`)}),e.status===`cancelled`&&(0,$.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-status-warning/80 text-white flex-shrink-0`,children:u(`archives.card.cancelled`)}),e.status===`completed`&&e.confirm_requested&&e.user_verdict==null&&(0,$.jsx)(`button`,{onClick:e=>{e.stopPropagation(),z(!0)},disabled:!S(`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:S(`archives`,`update`,e.created_by_id)?u(`archives.card.confirmPendingTitle`):u(`archives.permission.noUpdateArchives`),children:u(`archives.card.confirmPending`)}),e.status===`completed`&&e.user_verdict===`reject`&&(0,$.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-status-error/80 text-white flex-shrink-0`,title:`${u(`archives.card.rejectedTitle`)}${st?` — ${u(st)}`:``}`,children:u(`archives.card.rejected`)}),e.status===`completed`&&e.user_verdict===`good`&&(0,$.jsx)(`span`,{className:`px-1.5 py-0.5 rounded text-[10px] leading-tight bg-bambu-green/80 text-white flex-shrink-0`,title:`${u(`archives.card.confirmedGoodTitle`)}${st?` — ${u(st)}`:``}`,children:u(`archives.card.confirmedGood`)}),e.duplicate_count>0&&ot>0&&ct&&(0,$.jsxs)(`button`,{onClick:e=>{e.stopPropagation(),g?.(ct)},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:u(`archives.viewOriginalPrint`,{id:ct}),children:[(0,$.jsx)(R,{className:`w-3 h-3`}),`#`,ot]}),e.duplicate_count>0&&ot===0&&(0,$.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,$.jsx)(Tt,{className:`w-3 h-3`}),`+`,e.duplicate_count]}),re>0&&(0,$.jsx)(`span`,{title:re>1?u(`archives.card.viewTimelapses`,{count:re}):u(`archives.list.hasTimelapse`),children:(0,$.jsx)(se,{className:`w-3.5 h-3.5 text-bambu-green flex-shrink-0`})}),Dt&&Dt.length>0&&(0,$.jsx)(f,{to:`/files?folder=${Dt[0].id}`,className:`flex-shrink-0`,title:u(`archives.card.openFolder`,{name:Dt[0].name}),onClick:e=>e.stopPropagation(),children:(0,$.jsx)(H,{className:`w-3.5 h-3.5 text-yellow-600 dark:text-yellow-400`})})]}),(e.filament_type||e.sliced_for_model)&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-0.5`,children:[e.sliced_for_model&&(0,$.jsxs)(`span`,{className:`text-xs text-bambu-gray flex items-center gap-1`,title:u(`archives.card.slicedFor`,{model:e.sliced_for_model}),children:[(0,$.jsx)(Le,{className:`w-2.5 h-2.5`}),e.sliced_for_model]}),(()=>{let t=te(e.bed_type);return t?(0,$.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,$.jsx)(`span`,{className:`text-bambu-gray/50`,children:`·`}),e.filament_type&&(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:e.filament_type}),e.filament_color&&(0,$.jsx)(`div`,{className:`flex items-center gap-0.5 flex-wrap`,children:e.filament_color.split(`,`).map((e,t)=>(0,$.jsx)(`div`,{className:`w-2.5 h-2.5 rounded-full border border-black/20`,style:{backgroundColor:e},title:e},t))})]})]}),(0,$.jsx)(`div`,{className:`col-span-2 text-sm text-bambu-gray truncate`,children:t}),(0,$.jsxs)(`div`,{className:`col-span-2 text-sm text-bambu-gray`,children:[(0,$.jsx)(`div`,{children:it(e.created_at)}),e.created_by_username&&(0,$.jsxs)(`div`,{className:`flex items-center gap-1 text-xs opacity-75`,title:u(`archives.card.uploadedBy`,{name:e.created_by_username}),children:[(0,$.jsx)(Je,{className:`w-3 h-3`}),e.created_by_username]})]}),(0,$.jsx)(`div`,{className:`col-span-1 text-sm text-bambu-gray`,children:tt(e.file_size)}),(0,$.jsxs)(`div`,{className:`col-span-2 flex justify-end gap-1`,children:[mt(e)&&(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>I(!0),disabled:!e.file_path||!b(`queue:create`)||!S(`archives`,`reprint`,e.created_by_id),title:e.file_path?b(`queue:create`)?S(`archives`,`reprint`,e.created_by_id)?u(`common.print`):u(`archives.card.noPermissionReprint`):u(`archives.permission.noAddToQueue`):u(`archives.card.noFileForReprint`),className:`text-bambu-green hover:text-bambu-green-light hover:bg-bambu-green/10`,children:(0,$.jsx)(Fe,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>{let t=e.print_name||e.filename||`model`;gt(e.id,t,`file`,c)},title:u(`archives.card.openInBambuStudio`),children:(0,$.jsx)(le,{className:`w-4 h-4`})}),(e.external_url||e.makerworld_url)&&(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>window.open(e.external_url||e.makerworld_url,`_blank`),title:e.external_url?u(`archives.card.externalLink`):`MakerWorld`,children:(0,$.jsx)(_e,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>Se(!0),disabled:!e.timelapse_path&&(!b(`printers:files`)||!e.printer_id||!e.started_at),title:!e.timelapse_path&&!b(`printers:files`)?u(`printers.permission.noFiles`):u(`archives.media.download`),children:(0,$.jsx)(se,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>{r.downloadArchive(e.id,`${e.print_name||e.filename}.3mf`).catch(e=>{console.error(`Archive download failed:`,e)})},title:u(`archives.card.download`),children:(0,$.jsx)(ae,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>w(!0),disabled:!S(`archives`,`update`,e.created_by_id),title:S(`archives`,`update`,e.created_by_id)?u(`archives.card.edit`):u(`archives.card.noPermissionEdit`),children:(0,$.jsx)(Pe,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:()=>D(!0),disabled:!S(`archives`,`delete`,e.created_by_id),title:S(`archives`,`delete`,e.created_by_id)?u(`archives.card.delete`):u(`archives.card.noPermissionDelete`),children:(0,$.jsx)(J,{className:`w-4 h-4 text-red-600 dark:text-red-400`})}),(0,$.jsx)(Z,{variant:`ghost`,size:`sm`,onClick:e=>{let t=e.currentTarget.getBoundingClientRect();Ze({x:t.left,y:t.bottom+4})},title:u(`archives.card.moreOptions`),children:(0,$.jsx)(oe,{className:`w-4 h-4`})})]})]}),C&&(0,$.jsx)(xe,{archive:e,onClose:()=>w(!1)}),T&&(0,$.jsx)(Yt,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>E(!1)}),rt&&(0,$.jsx)(U,{plates:rt,onSelect:t=>{at(null),M(`/gcode-viewer?archive=${e.id}&plate=${t}`)},onClose:()=>at(null)}),ie&&(0,$.jsx)(ne,{mode:`create`,archiveId:e.id,archiveName:e.print_name||e.filename,preselectPlateId:e.plate_id,onClose:()=>I(!1)}),L&&(0,$.jsx)(we,{archiveId:e.id,onClose:()=>z(!1)}),B&&(0,$.jsx)(ve,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>ue(!1)}),fe&&(0,$.jsx)(dt,{source:{kind:`archive`,id:e.id,filename:e.print_name||e.filename||`model`},onClose:()=>me(!1)}),ee&&(0,$.jsxs)(nt,{title:u(`archives.modal.deleteArchive`),message:u(`archives.modal.deleteConfirm`,{name:e.print_name||e.filename}),confirmText:u(`archives.modal.deleteButton`),variant:`danger`,confirmDisabled:(j.data?.currently_printing??0)>0,onConfirm:()=>{wt.mutate(O),D(!1),k(!1)},onCancel:()=>{D(!1),k(!1)},children:[(j.data?.related_queue_items??0)>0&&(0,$.jsx)(`div`,{className:(j.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:(j.data?.currently_printing??0)>0?u(`archives.modal.deleteBlockedByPrinting`,{count:j.data.currently_printing}):u(`archives.modal.deleteQueueItemsWarning`,{count:j.data.related_queue_items})}),(0,$.jsxs)(`label`,{className:`flex items-start gap-2 cursor-pointer text-sm text-bambu-gray`,children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 accent-red-500`,checked:O,onChange:e=>k(e.target.checked)}),(0,$.jsx)(`span`,{children:u(`archives.modal.deletePurgeStats`)})]})]}),Be&&(0,$.jsx)(nt,{title:u(`archives.modal.removeSource3mf`),message:u(`archives.modal.removeSource3mfConfirm`,{name:e.print_name||e.filename}),confirmText:u(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{vt.mutate(),Ve(!1)},onCancel:()=>Ve(!1)}),We&&(0,$.jsx)(nt,{title:u(`archives.modal.removeF3d`),message:u(`archives.modal.removeF3dConfirm`,{name:e.print_name||e.filename}),confirmText:u(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{bt.mutate(),Ge(!1)},onCancel:()=>Ge(!1)}),Ke&&(0,$.jsx)(nt,{title:u(`archives.modal.removeTimelapse`),message:u(`archives.modal.removeTimelapseConfirm`,{name:e.print_name||e.filename}),confirmText:u(`archives.modal.removeButton`),variant:`danger`,onConfirm:()=>{pt.mutate(),Ye(!1)},onCancel:()=>Ye(!1)}),Xe&&(0,$.jsx)(pe,{x:Xe.x,y:Xe.y,items:At,onClose:()=>Ze(null)}),W&&(0,$.jsx)(ln,{archiveId:e.id,archiveName:e.print_name||e.filename,printerName:t,onClose:()=>Se(!1)}),he&&e.timelapse_path&&(0,$.jsx)(Nt,{src:r.getArchiveTimelapse(e.id),title:u(`archives.modal.timelapse`,{name:e.print_name||e.filename}),downloadFilename:`${e.print_name||e.filename}_timelapse.mp4`,archiveId:e.id,onClose:()=>ge(!1),onEdit:()=>{_.invalidateQueries({queryKey:[`archives`]}),ge(!1)}}),De&&Oe.length>0&&(0,$.jsx)(`div`,{className:`fixed inset-0 bg-black/80 flex items-center justify-center z-50 p-4`,children:(0,$.jsxs)(`div`,{className:`bg-card-dark rounded-lg max-w-lg w-full max-h-[80vh] flex flex-col`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-700`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-lg font-semibold text-white`,children:u(`archives.modal.selectTimelapse`)}),(0,$.jsx)(`p`,{className:`text-sm text-gray-400 mt-1`,children:u(`archives.modal.selectTimelapseDesc`)})]}),(0,$.jsx)(`button`,{onClick:()=>{G(!1),ke([])},className:`text-gray-400 hover:text-white p-1`,children:(0,$.jsx)(Y,{className:`w-5 h-5`})})]}),(0,$.jsx)(`div`,{className:`overflow-y-auto flex-1 p-2`,children:Oe.map(e=>(0,$.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,$.jsx)(`div`,{className:`font-medium text-white`,children:e.name}),(0,$.jsxs)(`div`,{className:`text-sm text-gray-400 flex gap-3`,children:[(0,$.jsx)(`span`,{children:tt(e.size)}),e.mtime&&(0,$.jsx)(`span`,{children:it(e.mtime)})]})]},e.name))})]})}),je&&(0,$.jsx)(sn,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>Me(!1)}),Ne&&e.photos&&(0,$.jsx)(ft,{archiveId:e.id,archiveName:e.print_name||e.filename,photos:e.photos,onClose:()=>Ie(!1),onDelete:async t=>{try{await r.deleteArchivePhoto(e.id,t),_.invalidateQueries({queryKey:[`archives`]}),v(u(`archives.toast.photoDeleted`))}catch{v(u(`archives.toast.failedDeletePhoto`),`error`)}}}),Re&&(0,$.jsx)(cn,{archiveId:e.id,archiveName:e.print_name||e.filename,onClose:()=>ze(!1)}),(0,$.jsx)(`input`,{ref:$e,type:`file`,accept:`.3mf`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&_t.mutate(t),e.target.value=``}}),(0,$.jsx)(`input`,{ref:et,type:`file`,accept:`.f3d`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&yt.mutate(t),e.target.value=``}}),(0,$.jsx)(`input`,{ref:X,type:`file`,accept:`.mp4,.avi,.mkv`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t&&ht.mutate(t),e.target.value=``}})]})}var Mn=[`completed`,`failed`,`aborted`,`cancelled`,`stopped`],Nn=[{id:`all`,label:`All Archives`,icon:(0,$.jsx)(H,{className:`w-4 h-4`})},{id:`recent`,label:`Last 24 Hours`,icon:(0,$.jsx)(re,{className:`w-4 h-4`})},{id:`this-week`,label:`This Week`,icon:(0,$.jsx)(b,{className:`w-4 h-4`})},{id:`this-month`,label:`This Month`,icon:(0,$.jsx)(b,{className:`w-4 h-4`})},{id:`favorites`,label:`Favorites`,icon:(0,$.jsx)(Ae,{className:`w-4 h-4`})},{id:`not-printed`,label:`Not Printed`,icon:(0,$.jsx)(qe,{className:`w-4 h-4`})},{id:`printed`,label:`Printed`,icon:(0,$.jsx)(Le,{className:`w-4 h-4`})},{id:`failed`,label:`Failed Prints`,icon:(0,$.jsx)(E,{className:`w-4 h-4`})},{id:`duplicates`,label:`Duplicates`,icon:(0,$.jsx)(R,{className:`w-4 h-4`})}];function Pn(){let{t:e}=n(),t=d(),{id:i}=l(),a=p(),{showToast:o}=A(),{hasPermission:s,hasAnyPermission:c}=Qe(),v=(0,Q.useRef)(null),[y,b]=(0,Q.useState)(``),[x,S]=(0,Q.useState)(()=>{let e=localStorage.getItem(`archiveFilterPrinter`);return e?Number(e):null}),[T,O]=(0,Q.useState)(()=>{let e=localStorage.getItem(`archiveFilterMaterial`);return e&&!e.includes(`,`)?e:null}),[k,j]=(0,Q.useState)(()=>{let e=localStorage.getItem(`archiveFilterColors`);return e?new Set(JSON.parse(e)):new Set}),[M,te]=(0,Q.useState)(()=>localStorage.getItem(`archiveColorFilterMode`)||`or`),[ne,re]=(0,Q.useState)(()=>localStorage.getItem(`archiveFilterFavorites`)===`true`),[P,ie]=(0,Q.useState)(()=>localStorage.getItem(`archiveHideFailed`)===`true`),[F,ae]=(0,Q.useState)(()=>localStorage.getItem(`archiveFilterUnconfirmed`)===`true`),[oe,se]=(0,Q.useState)(()=>localStorage.getItem(`archiveHideDuplicates`)===`true`),[z,ce]=(0,Q.useState)(()=>localStorage.getItem(`archiveFilterTag`)),[B,fe]=(0,Q.useState)(()=>localStorage.getItem(`archiveFilterFileType`)||`all`),[pe,H]=(0,Q.useState)(!1),[he,_e]=(0,Q.useState)([]),[U,ve]=(0,Q.useState)(new Set),[be,xe]=(0,Q.useState)(()=>localStorage.getItem(`archiveNo3MFWarningDismissed`)===`true`),{data:W}=m({queryKey:[`archives`,`no-3mf-warning`],queryFn:r.getNo3MFWarning,staleTime:300*1e3,enabled:!be}),Ce=()=>{localStorage.setItem(`archiveNo3MFWarningDismissed`,`true`),xe(!0)},we=W?.reason===`ftps_cooloff`?`FtpsCooloff`:W?.reason===`ftp_transfer_failed`?`FtpTransferFailed`:W?.reason===`internal_storage`?`InternalStorage`:W?.reason===`no_external_storage`?`NoExternalStorage`:W?.reason===`internal_history`?`InternalHistory`:``,Te=W?.reason===`ftps_cooloff`?`https://wiki.bambuddy.cool/reference/troubleshooting/#ftps-tls-failure`:W?.reason===`ftp_transfer_failed`?`https://wiki.bambuddy.cool/reference/troubleshooting/#ftp-transfer-timed-out`:W?.reason===`internal_storage`?`https://wiki.bambuddy.cool/reference/troubleshooting/#archive-card-has-only-a-name`:W?.reason===`no_external_storage`?null:W?.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`,[Ee,De]=(0,Q.useState)(!1),[ke,Me]=(0,Q.useState)(!1),[Ne,Fe]=(0,Q.useState)(!1),[Ie,Le]=(0,Q.useState)(!1),[q,Re]=(0,Q.useState)(()=>localStorage.getItem(`archiveViewMode`)||`grid`),[Ve,Ue]=(0,Q.useState)(()=>localStorage.getItem(`archiveSortBy`)||`date-desc`),[We,Ke]=(0,Q.useState)(()=>localStorage.getItem(`archiveCollection`)||`all`),[Je,Ye]=(0,Q.useState)(0),[Xe,Ze]=(0,Q.useState)(()=>{try{let e=localStorage.getItem(`archivePageSize`);return e?Number(e):50}catch{return 50}}),[$e,tt]=(0,Q.useState)(!1),[it,at]=(0,Q.useState)(!1),[ut,dt]=(0,Q.useState)(!1),[ft,gt]=(0,Q.useState)(!1),[bt,wt]=(0,Q.useState)(!1),[Tt,Et]=(0,Q.useState)(!1),Dt=s(`archives:update_all`)&&s(`archives:delete_all`),{data:Ot}=m({queryKey:[`archive-merge-count`],queryFn:()=>r.getArchiveMergeCount(),enabled:Dt}),[kt,At]=(0,Q.useState)(()=>{try{let e=localStorage.getItem(`archiveMergeBannerDismissed`);return e?Number(e):null}catch{return null}}),jt=Dt?Ot?.groups??0:0,Mt=kt!==null&&jt<=kt,Nt=()=>{At(jt);try{localStorage.setItem(`archiveMergeBannerDismissed`,String(jt))}catch{}},[Pt,Ft]=(0,Q.useState)(null),[It,Lt]=(0,Q.useState)(null),[Rt,zt]=(0,Q.useState)(()=>localStorage.getItem(`logFilterUser`)||null),[Vt,Ht]=(0,Q.useState)(()=>localStorage.getItem(`logFilterStatus`)),[Ut,Wt]=(0,Q.useState)(()=>localStorage.getItem(`logFilterDateFrom`)||``),[Gt,qt]=(0,Q.useState)(()=>localStorage.getItem(`logFilterDateTo`)||``),[Yt,Qt]=(0,Q.useState)(()=>{let e=localStorage.getItem(`logOffset`);return e?Number(e):0}),[$t,en]=(0,Q.useState)(!1),[tn,nn]=(0,Q.useState)(null),[rn,an]=(0,Q.useState)(null),[sn,cn]=(0,Q.useState)(``),[ln,dn]=(0,Q.useState)(``),[fn,pn]=(0,Q.useState)(()=>{let e=localStorage.getItem(`logPageSize`);return e?Number(e):25}),[gn,bn]=(0,Q.useState)(yn),[Sn,En]=(0,Q.useState)(!1),[Dn,On]=(0,Q.useState)(Cn),kn=(0,Q.useMemo)(()=>gn.filter(e=>e.visible).map(e=>e.id),[gn]),Pn=(0,Q.useCallback)(e=>{Lt({archiveId:e,notVisibleKey:`archives.originalPrintNotVisible`}),Ft(e)},[]);(0,Q.useEffect)(()=>{if(Pt){let t=It?.archiveId===Pt?It:null,n=setTimeout(()=>{let n=document.querySelector(`[data-archive-id="${Pt}"]`);n?n.scrollIntoView({behavior:`smooth`,block:`center`}):t&&o(e(t.notVisibleKey),`warning`),t&&Lt(null)},100),r=setTimeout(()=>Ft(null),5e3);return()=>{clearTimeout(n),clearTimeout(r)}}},[Pt,It,o,e]);let{data:In,isLoading:Ln,dataUpdatedAt:Rn,refetch:zn}=m({queryKey:[`archives`,x],queryFn:()=>r.getArchives(x||void 0)}),[Bn]=u(),Vn=Bn.get(`highlight`),Hn=(0,Q.useRef)(null),[Un,Wn]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{if(!Vn||Hn.current===Vn)return;Hn.current=Vn;let e=parseInt(Vn,10);Number.isFinite(e)&&(Wn({archiveId:e,requestedAt:Date.now()}),zn())},[Vn,zn]),(0,Q.useEffect)(()=>{Dt&&Rn&&a.invalidateQueries({queryKey:[`archive-merge-count`]})},[Rn,Dt,a]),(0,Q.useEffect)(()=>{if(!Un||!In||Rn<Un.requestedAt)return;Wn(null),(q===`log`||q===`calendar`)&&Re(`grid`);let e=e=>{Lt({archiveId:e,notVisibleKey:`archives.linkedArchiveNotVisible`}),Ft(e)};if(In.some(e=>e.id===Un.archiveId)){e(Un.archiveId);return}let t=Un.archiveId;r.getArchive(t).then(t=>e(t.id)).catch(()=>e(t))},[Un,In,Rn,q]);let{data:Gn}=m({queryKey:[`printers`],queryFn:r.getPrinters}),{data:Kn}=m({queryKey:[`projects`],queryFn:()=>r.getProjects()}),{data:qn}=lt(),{data:Jn}=m({queryKey:[`users`,`slim`],queryFn:r.getUsersSlim,enabled:q===`log`}),{data:Yn,isLoading:Xn}=m({queryKey:[`print-log`,x,Rt,Vt,Ut,Gt,y,Yt,fn,Dn.column,Dn.direction],queryFn:()=>r.getPrintLog({search:y||void 0,printerId:x||void 0,username:Rt||void 0,status:Vt||void 0,dateFrom:Ut||void 0,dateTo:Gt||void 0,limit:fn,offset:Yt,sortBy:Dn.column,sortDir:Dn.direction}),enabled:q===`log`}),Zn=qn?.time_format||`system`,Qn=ht(qn?.open_in_slicer,qn?.preferred_slicer),$n=qn?.use_slicer_api??!1,er=ct(qn?.currency||`USD`),tr=(0,Q.useMemo)(()=>gn.map(t=>({...t,label:e(_n[t.id]??t.id)})),[gn,e]),nr=(0,Q.useMemo)(()=>vn.map(t=>({...t,label:e(_n[t.id]??t.id)})),[e]),rr=(0,Q.useCallback)(e=>{xn.has(e)&&(On(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 wn(n),n}),Qt(0))},[]),ir=(0,Q.useCallback)(e=>{let t=e.map(e=>({id:e.id,visible:e.visible}));bn(t),Tn(t)},[]),ar=(0,Q.useMemo)(()=>new Set([`duration`,`filament_used`,`cost`,`energy`,`energy_cost`,`wear_cost`]),[]),or=(0,Q.useMemo)(()=>new Set(Yn?.deleted_archive_ids??[]),[Yn]),sr=(0,Q.useCallback)((t,n)=>{switch(t){case`date`:return(0,$.jsx)(`span`,{className:`text-white whitespace-nowrap`,children:rt(n.started_at||n.created_at,Zn)});case`completed_at`:return(0,$.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap`,children:n.completed_at?rt(n.completed_at,Zn):`—`});case`print_name`:return(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n.thumbnail_path&&(0,$.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`}}),n.archive_id!=null&&!or.has(n.archive_id)?(0,$.jsx)(f,{to:`/archives/${n.archive_id}?run=${n.id}`,className:`text-white break-words hover:underline`,title:n.print_name||``,children:n.print_name||`—`}):(0,$.jsx)(`span`,{className:`text-white break-words`,title:n.print_name||``,children:n.print_name||`—`})]});case`printer`:return(0,$.jsx)(`span`,{className:`text-bambu-gray-light`,children:n.printer_name||`—`});case`user`:return(0,$.jsx)(`span`,{className:`text-bambu-gray-light`,children:n.created_by_username||`—`});case`status`:return(0,$.jsxs)($.Fragment,{children:[(0,$.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,$.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,$.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap`,children:n.duration_seconds?ot(n.duration_seconds):`—`});case`filament`:return(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[n.filament_color&&(0,$.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,$.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,$.jsx)(`span`,{className:`text-bambu-gray-light text-xs`,children:n.filament_type||`—`})]});case`filament_used`:return(0,$.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,$.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.cost==null?`—`:`${er}${n.cost.toFixed(2)}`});case`energy`:return(0,$.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,$.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.energy_cost==null?`—`:`${er}${n.energy_cost.toFixed(2)}`});case`wear_cost`:return(0,$.jsx)(`span`,{className:`text-bambu-gray-light whitespace-nowrap tabular-nums`,children:n.wear_cost==null?`—`:`${er}${n.wear_cost.toFixed(2)}`});default:return null}},[er,or,e,Zn]),cr=h({mutationFn:async e=>(await Promise.all(e.map(e=>r.deleteArchive(e))),e.length),onSuccess:e=>{ye(a),ve(new Set),o(`${e} archive${e===1?``:`s`} deleted`)},onError:()=>{o(e(`archives.toast.failedDeleteArchives`),`error`)}}),lr=h({mutationFn:()=>r.clearPrintLog(),onSuccess:t=>{a.invalidateQueries({queryKey:[`print-log`]}),a.invalidateQueries({queryKey:[`calendar-runs`]}),a.invalidateQueries({queryKey:[`archive-runs`]}),Qt(0),o(e(`archives.log.cleared`,{count:t.deleted}))},onError:()=>{o(e(`archives.log.clearFailed`),`error`)}}),ur=h({mutationFn:e=>r.deletePrintLogEntry(e),onSuccess:()=>{a.invalidateQueries({queryKey:[`print-log`]}),a.invalidateQueries({queryKey:[`calendar-runs`]}),a.invalidateQueries({queryKey:[`archive-runs`]}),a.invalidateQueries({queryKey:[`archives-stats`]}),o(e(`archives.log.entryDeleted`))},onError:()=>{o(e(`archives.log.entryDeleteFailed`),`error`)}}),dr=h({mutationFn:({id:e,body:t})=>r.updatePrintLogEntry(e,t),onSuccess:()=>{a.invalidateQueries({queryKey:[`print-log`]}),a.invalidateQueries({queryKey:[`calendar-runs`]}),a.invalidateQueries({queryKey:[`archive-runs`]}),a.invalidateQueries({queryKey:[`archives-stats`]}),an(null),o(e(`archives.log.entryUpdated`))},onError:()=>{o(e(`archives.log.entryUpdateFailed`),`error`)}});(0,Q.useEffect)(()=>{x===null?localStorage.removeItem(`archiveFilterPrinter`):localStorage.setItem(`archiveFilterPrinter`,x.toString())},[x]),(0,Q.useEffect)(()=>{T?localStorage.setItem(`archiveFilterMaterial`,T):localStorage.removeItem(`archiveFilterMaterial`)},[T]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveFilterColors`,JSON.stringify([...k]))},[k]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveColorFilterMode`,M)},[M]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveFilterFavorites`,ne.toString())},[ne]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveHideFailed`,P.toString())},[P]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveFilterUnconfirmed`,F.toString())},[F]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveHideDuplicates`,oe.toString())},[oe]),(0,Q.useEffect)(()=>{z?localStorage.setItem(`archiveFilterTag`,z):localStorage.removeItem(`archiveFilterTag`)},[z]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveFilterFileType`,B)},[B]),(0,Q.useEffect)(()=>{Ye(0)},[y,x,T,k,M,ne,P,F,oe,z,B,Ve,We]),(0,Q.useEffect)(()=>{try{localStorage.setItem(`archivePageSize`,String(Xe))}catch{}},[Xe]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveViewMode`,q)},[q]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveSortBy`,Ve)},[Ve]),(0,Q.useEffect)(()=>{localStorage.setItem(`archiveCollection`,We)},[We]),(0,Q.useEffect)(()=>{Rt?localStorage.setItem(`logFilterUser`,Rt):localStorage.removeItem(`logFilterUser`)},[Rt]),(0,Q.useEffect)(()=>{Vt?localStorage.setItem(`logFilterStatus`,Vt):localStorage.removeItem(`logFilterStatus`)},[Vt]),(0,Q.useEffect)(()=>{Ut?localStorage.setItem(`logFilterDateFrom`,Ut):localStorage.removeItem(`logFilterDateFrom`)},[Ut]),(0,Q.useEffect)(()=>{Gt?localStorage.setItem(`logFilterDateTo`,Gt):localStorage.removeItem(`logFilterDateTo`)},[Gt]),(0,Q.useEffect)(()=>{localStorage.setItem(`logOffset`,Yt.toString())},[Yt]),(0,Q.useEffect)(()=>{localStorage.setItem(`logPageSize`,fn.toString())},[fn]);let fr=(0,Q.useMemo)(()=>new Map(Gn?.map(e=>[e.id,e.name])||[]),[Gn]),pr=[...new Set(In?.flatMap(e=>_t(e.filament_type))||[])].sort(),mr=[...new Set(In?.flatMap(e=>e.filament_color?.split(`,`)||[]).filter(Boolean)||[])],hr=[...new Set(In?.flatMap(e=>e.tags?.split(`,`).map(e=>e.trim())||[]).filter(Boolean)||[])].sort(),gr=In?.filter(e=>{let t=new Date,n=st(e.created_at)||new Date(0),r=!0;switch(We){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=Mn.includes(e.status);break;case`failed`:r=e.status===`failed`||e.status===`aborted`||e.failed_run_count>0;break;case`duplicates`:r=e.duplicate_count>0;break}let i=(e.print_name||e.filename).toLowerCase().includes(y.toLowerCase()),a=!T||_t(e.filament_type).includes(T),o=e.filament_color?.split(`,`)||[],s=k.size===0||(M===`or`?o.some(e=>k.has(e)):[...k].every(e=>o.includes(e))),c=We===`favorites`||!ne||e.is_favorite,l=We===`failed`||!P||e.status!==`failed`&&e.status!==`aborted`,u=!F||e.status===`completed`&&e.confirm_requested&&e.user_verdict==null,d=We===`duplicates`||!oe||e.duplicate_count===0||e.duplicate_sequence===0,f=e.tags?.split(`,`).map(e=>e.trim())||[],p=!z||f.includes(z),m=mt(e);return r&&i&&a&&s&&c&&l&&u&&d&&p&&(B===`all`||B===`gcode`&&m||B===`source`&&!m)}).sort((e,t)=>{switch(Ve){case`date-desc`:return(st(t.created_at)?.getTime()||0)-(st(e.created_at)?.getTime()||0);case`date-asc`:return(st(e.created_at)?.getTime()||0)-(st(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}}),_r=gr?.length||0,vr=Xe===-1,yr=vr?_r||1:Xe,br=Math.max(1,Math.ceil(_r/yr)),xr=vr?gr:gr?.slice(Je*yr,(Je+1)*yr);(0,Q.useEffect)(()=>{if(Pt&&gr&&!vr){let e=gr.findIndex(e=>e.id===Pt);if(e>=0){let t=Math.floor(e/yr);t!==Je&&Ye(t)}}},[Pt]);let Sr=Ee||U.size>0,Cr=e=>{ve(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},wr=()=>{gr&&ve(new Set(gr.map(e=>e.id)))},Tr=()=>{ve(new Set),De(!1)},Er=e=>{j(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},Dr=()=>{j(new Set)},Or=()=>{b(``),S(null),O(null),re(!1),ie(!1),ae(!1),se(!1),ce(null),fe(`all`)},kr=y||x||T||ne||P||F||oe||z||B!==`all`,{isDraggingOver:Ar,dragHandlers:jr}=pt({disabled:pe||!!i,extensions:[`.3mf`],onFiles:e=>{_e(e),H(!0)},onRejected:()=>o(e(`archives.page.only3mfSupported`),`warning`)}),Mr=(0,Q.useCallback)(e=>{if(i)return;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(),v.current?.focus();break;case`u`:case`U`:!e.metaKey&&!e.ctrlKey&&(e.preventDefault(),H(!0));break;case`Escape`:Sr&&Tr();break}},[Sr,i]);return(0,Q.useEffect)(()=>(document.addEventListener(`keydown`,Mr),()=>document.removeEventListener(`keydown`,Mr)),[Mr]),(0,$.jsxs)(`div`,{className:`p-4 md:p-8 relative`,...jr,children:[Ar&&(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 bg-bambu-dark/90 flex items-center justify-center pointer-events-none`,children:(0,$.jsxs)(`div`,{className:`border-4 border-dashed border-bambu-green rounded-xl p-12 text-center`,children:[(0,$.jsx)(qe,{className:`w-16 h-16 mx-auto mb-4 text-bambu-green`}),(0,$.jsx)(`p`,{className:`text-2xl font-semibold text-white mb-2`,children:e(`archives.page.dropFilesHere`)}),(0,$.jsx)(`p`,{className:`text-bambu-gray`,children:e(`archives.releaseToUpload`)})]})}),Sr&&(0,$.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,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:Tr,children:[(0,$.jsx)(Y,{className:`w-4 h-4`}),`Close`]}),(0,$.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,$.jsxs)(`span`,{className:`text-white font-medium`,children:[U.size,` selected`]}),(0,$.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:wr,children:`Select All`}),(0,$.jsx)(`div`,{className:`w-px h-6 bg-bambu-dark-tertiary`}),(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Fe(!0),disabled:!c(`archives:update_own`,`archives:update_all`),title:c(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),children:[(0,$.jsx)(Ge,{className:`w-4 h-4`}),`Tags`]}),(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Le(!0),disabled:!c(`archives:update_own`,`archives:update_all`),title:c(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),children:[(0,$.jsx)(V,{className:`w-4 h-4`}),`Project`]}),(0,$.jsxs)(Z,{variant:`secondary`,size:`sm`,disabled:!c(`archives:update_own`,`archives:update_all`),title:c(`archives:update_own`,`archives:update_all`)?void 0:e(`archives.permission.noUpdateArchives`),onClick:()=>{let t=Array.from(U);Promise.all(t.map(e=>r.toggleFavorite(e))).then(()=>{a.invalidateQueries({queryKey:[`archives`]}),o(`Toggled favorites for ${t.length} archive${t.length===1?``:`s`}`)}).catch(()=>{o(e(`archives.toast.failedUpdateFavorites`),`error`)})},children:[(0,$.jsx)(Ae,{className:`w-4 h-4`}),`Favorite`]}),(0,$.jsxs)(Z,{size:`sm`,className:`bg-red-500 hover:bg-red-600`,onClick:()=>Me(!0),disabled:!c(`archives:delete_own`,`archives:delete_all`),title:c(`archives:delete_own`,`archives:delete_all`)?void 0:e(`archives.permission.noDelete`),children:[(0,$.jsx)(J,{className:`w-4 h-4`}),`Delete`]})]}),We!==`duplicates`&&jt>0&&!Mt&&(0,$.jsxs)(`div`,{className:`mb-6 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark-secondary px-4 py-3 flex items-center gap-3`,"data-testid":`merge-banner`,children:[(0,$.jsx)(L,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,$.jsx)(`div`,{className:`flex-1 min-w-0 text-sm text-bambu-gray-light`,children:e(`archiveMerge.bannerText`,{count:jt})}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Et(!0),children:e(`archiveMerge.headerButton`)}),(0,$.jsx)(`button`,{onClick:Nt,className:`text-bambu-gray hover:text-white`,"aria-label":e(`archiveMerge.dismiss`),children:(0,$.jsx)(Y,{className:`w-4 h-4`})})]}),We===`duplicates`&&Dt&&(0,$.jsxs)(`div`,{className:`mb-6 rounded-lg border border-bambu-dark-tertiary bg-bambu-dark-secondary px-4 py-3 flex items-center gap-3`,children:[(0,$.jsx)(L,{className:`w-5 h-5 text-bambu-green flex-shrink-0`}),(0,$.jsx)(`div`,{className:`flex-1 min-w-0 text-sm text-bambu-gray-light`,children:e(`archiveMerge.duplicatesHint`)}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Et(!0),children:e(`archiveMerge.headerButton`)})]}),W?.has_fallback&&!be&&(0,$.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,$.jsx)(E,{className:`w-5 h-5 text-amber-600 dark:text-amber-400 flex-shrink-0 mt-0.5`}),(0,$.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-amber-900 dark:text-amber-200`,children:e(`archives.no3mfBanner.title${we}`)}),(0,$.jsxs)(`div`,{className:`text-xs text-amber-800/90 dark:text-amber-200/80 mt-1`,children:[e(`archives.no3mfBanner.body${we}`),Te&&(0,$.jsxs)($.Fragment,{children:[` `,(0,$.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(W?.reason===`internal_storage`||W?.reason===`internal_history`||W?.reason===`ftps_cooloff`||W?.reason===`ftp_transfer_failed`?`archives.no3mfBanner.docsLinkInternalStorage`:`archives.no3mfBanner.docsLink`),(0,$.jsx)(le,{className:`w-3 h-3`})]})]})]})]}),(0,$.jsx)(`button`,{onClick:Ce,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,$.jsx)(Y,{className:`w-4 h-4`})})]}),(0,$.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-8`,children:[(0,$.jsx)(`div`,{children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsxs)(`h1`,{className:`text-2xl font-bold text-white flex items-center gap-3`,children:[(0,$.jsx)(g,{className:`w-7 h-7 text-bambu-green`}),`Archives`]}),(0,$.jsxs)(`p`,{className:`text-bambu-gray mt-1`,children:[gr?.length||0,` of `,In?.length||0,` prints`]})]}),(0,$.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:We,onChange:e=>Ke(e.target.value),children:Nn.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.label},e.id))})]})}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 sm:gap-3 flex-wrap`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>tt(!$e),disabled:it,children:[it?(0,$.jsx)(K,{className:`w-4 h-4 animate-spin`}):(0,$.jsx)(ue,{className:`w-4 h-4`}),`Export`]}),$e&&(0,$.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,$.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),at(!0);try{let{blob:t,filename:n}=await r.exportArchives({format:`csv`,printerId:x||void 0,status:We===`failed`?`failed,aborted`:void 0,search:y||void 0}),i=URL.createObjectURL(t),a=document.createElement(`a`);a.href=i,a.download=n,a.click(),URL.revokeObjectURL(i),o(e(`archives.toast.exportDownloaded`))}catch{o(e(`archives.toast.exportFailed`),`error`)}finally{at(!1)}},children:[(0,$.jsx)(de,{className:`w-4 h-4`}),`Export as CSV`]}),(0,$.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),at(!0);try{let{blob:t,filename:n}=await r.exportArchives({format:`xlsx`,printerId:x||void 0,status:We===`failed`?`failed,aborted`:void 0,search:y||void 0}),i=URL.createObjectURL(t),a=document.createElement(`a`);a.href=i,a.download=n,a.click(),URL.revokeObjectURL(i),o(e(`archives.toast.exportDownloaded`))}catch{o(e(`archives.toast.exportFailed`),`error`)}finally{at(!1)}},children:[(0,$.jsx)(ue,{className:`w-4 h-4`}),`Export as Excel`]})]})]}),U.size>=2&&U.size<=5&&(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>dt(!0),children:[(0,$.jsx)(ge,{className:`w-4 h-4`}),`Compare (`,U.size,`)`]}),!Sr&&(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>De(!0),children:[(0,$.jsx)(He,{className:`w-4 h-4`}),`Select`]}),(0,$.jsxs)(Z,{onClick:()=>H(!0),disabled:!s(`archives:create`),title:s(`archives:create`)?void 0:e(`archives.permission.noCreate`),children:[(0,$.jsx)(qe,{className:`w-4 h-4`}),`Upload 3MF`]}),Dt&&(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>Et(!0),title:e(`archiveMerge.headerTooltip`),children:[(0,$.jsx)(L,{className:`w-4 h-4 mr-2`}),e(`archiveMerge.headerButton`)]}),s(`archives:purge`)&&(0,$.jsxs)(Z,{variant:`secondary`,onClick:()=>wt(!0),title:e(`archivePurge.headerTooltip`),children:[(0,$.jsx)(J,{className:`w-4 h-4 mr-2`}),e(`archivePurge.headerButton`)]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center border border-bambu-dark-tertiary rounded-lg overflow-hidden flex-shrink-0 w-fit mb-4`,children:[(0,$.jsx)(`button`,{className:`p-2 ${q===`grid`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Re(`grid`),title:e(`archives.gridView`),children:(0,$.jsx)(G,{className:`w-4 h-4`})}),(0,$.jsx)(`button`,{className:`p-2 ${q===`list`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Re(`list`),title:e(`archives.listView`),children:(0,$.jsx)(Oe,{className:`w-4 h-4`})}),(0,$.jsx)(`button`,{className:`p-2 ${q===`calendar`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Re(`calendar`),title:e(`archives.calendarView`),children:(0,$.jsx)(xt,{className:`w-4 h-4`})}),(0,$.jsx)(`button`,{className:`p-2 ${q===`log`?`bg-bambu-green text-white`:`bg-bambu-dark text-bambu-gray hover:text-white`}`,onClick:()=>Re(`log`),title:e(`archives.logView`),children:(0,$.jsx)(St,{className:`w-4 h-4`})})]}),q!==`log`&&(0,$.jsx)(X,{className:`mb-6`,children:(0,$.jsxs)(et,{className:`py-4`,children:[(0,$.jsxs)(`div`,{className:`flex flex-col md:flex-row gap-3 md:gap-4 md:items-center md:flex-wrap`,children:[(0,$.jsxs)(`div`,{className:`w-full md:flex-1 relative md:min-w-[200px]`,children:[(0,$.jsx)(ze,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,$.jsx)(`input`,{ref:v,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:y,onChange:e=>b(e.target.value)})]}),(0,$.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,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,$.jsx)(me,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,$.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:x||``,onChange:e=>S(e.target.value?Number(e.target.value):null),children:[(0,$.jsx)(`option`,{value:``,children:`All Printers`}),Gn?.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.name},e.id))]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,$.jsx)(je,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,$.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:T||``,onChange:e=>O(e.target.value||null),children:[(0,$.jsx)(`option`,{value:``,children:`All Materials`}),pr.map(e=>(0,$.jsx)(`option`,{value:e,children:e},e))]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,$.jsx)(Ct,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,$.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:B,onChange:e=>fe(e.target.value),children:[(0,$.jsx)(`option`,{value:`all`,children:`All Files`}),(0,$.jsx)(`option`,{value:`gcode`,children:`Sliced (GCODE)`}),(0,$.jsx)(`option`,{value:`source`,children:`Source Only`})]})]}),(0,$.jsxs)(`button`,{onClick:()=>re(!ne),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${ne?`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(ne?`archives.showAll`:`archives.showFavoritesOnly`),children:[(0,$.jsx)(Ae,{className:`w-4 h-4 ${ne?`fill-yellow-400`:``}`}),(0,$.jsx)(`span`,{className:`text-sm hidden md:inline`,children:`Favorites`})]}),(0,$.jsxs)(`button`,{onClick:()=>ie(!P),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${P?`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(P?`archives.showFailedPrints`:`archives.hideFailedPrints`),children:[(0,$.jsx)(E,{className:`w-4 h-4 `}),(0,$.jsx)(`span`,{className:`text-sm hidden md:inline`,children:`Hide Failed`})]}),(0,$.jsxs)(`button`,{onClick:()=>ae(!F),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${F?`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,$.jsx)(N,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{className:`text-sm hidden md:inline`,children:e(`archives.filterUnconfirmed`)})]}),(0,$.jsxs)(`button`,{onClick:()=>se(!oe),className:`flex items-center gap-2 px-3 py-2 rounded-lg border transition-colors flex-shrink-0 ${oe?`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,$.jsx)(R,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{className:`text-sm hidden md:inline`,children:e(`archives.hideDuplicates`)})]}),hr.length>0&&(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,$.jsx)(Ge,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,$.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:z||``,onChange:e=>ce(e.target.value||null),children:[(0,$.jsx)(`option`,{value:``,children:`All Tags`}),hr.map(e=>(0,$.jsx)(`option`,{value:e,children:e},e))]}),(0,$.jsx)(`button`,{onClick:()=>gt(!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,$.jsx)(Be,{className:`w-4 h-4`})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 flex-shrink-0`,children:[(0,$.jsx)(_,{className:`w-4 h-4 text-bambu-gray hidden md:block`}),(0,$.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:Ve,onChange:e=>Ue(e.target.value),children:[(0,$.jsx)(`option`,{value:`date-desc`,children:e(`archives.sortNewest`)}),(0,$.jsx)(`option`,{value:`date-asc`,children:e(`archives.sortOldest`)}),(0,$.jsxs)(`option`,{value:`name-asc`,children:[e(`archives.sortName`),` A-Z`]}),(0,$.jsxs)(`option`,{value:`name-desc`,children:[e(`archives.sortName`),` Z-A`]}),(0,$.jsx)(`option`,{value:`size-desc`,children:e(`archives.sortLargest`)}),(0,$.jsx)(`option`,{value:`size-asc`,children:e(`archives.sortSmallest`)})]})]})]}),kr&&(0,$.jsxs)(Z,{variant:`ghost`,size:`sm`,onClick:Or,className:`text-bambu-gray hover:text-white`,children:[(0,$.jsx)(Y,{className:`w-4 h-4`}),`Reset`]})]}),mr.length>0&&(0,$.jsxs)(`div`,{className:`flex items-center gap-3 mt-4 pt-4 border-t border-bambu-dark-tertiary`,children:[(0,$.jsx)(`span`,{className:`text-xs text-bambu-gray`,children:`Colors:`}),k.size>1&&(0,$.jsx)(`button`,{onClick:()=>te(e=>e===`or`?`and`:`or`),className:`px-2 py-0.5 text-xs rounded transition-colors ${M===`and`?`bg-bambu-green text-white`:`bg-bambu-dark-tertiary text-bambu-gray hover:text-white`}`,title:M===`or`?`Match ANY selected color`:`Match ALL selected colors`,children:M.toUpperCase()}),(0,$.jsx)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:mr.map(e=>(0,$.jsx)(`button`,{onClick:()=>Er(e),className:`w-6 h-6 rounded-full border-2 transition-all ${k.has(e)?`border-bambu-green scale-110`:`border-white/20 hover:border-white/40`}`,style:{backgroundColor:e},title:e},e))}),k.size>0&&(0,$.jsxs)(`button`,{onClick:Dr,className:`text-xs text-bambu-gray hover:text-white flex items-center gap-1`,children:[(0,$.jsx)(Y,{className:`w-3 h-3`}),`Clear`]})]})]})}),(0,$.jsx)(mn,{}),Ln?(0,$.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:e(`archives.loadingArchives`)}):gr?.length===0&&q!==`log`?(0,$.jsx)(X,{children:(0,$.jsxs)(et,{className:`text-center py-12`,children:[(0,$.jsx)(`p`,{className:`text-bambu-gray`,children:e(y?`archives.noArchivesSearch`:`archives.noArchivesYet`)}),(0,$.jsx)(`p`,{className:`text-sm text-bambu-gray mt-2`,children:`Archives are created automatically when prints complete`})]})}):q===`calendar`?(0,$.jsx)(X,{className:`p-6`,children:(0,$.jsx)(on,{archives:gr||[],printerId:x,onPrintClick:(e,n)=>t(`/archives/${e}${n==null?``:`?run=${n}`}`),highlightedArchiveId:Pt})}):q===`grid`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6`,children:xr?.map(t=>(0,$.jsx)(An,{archive:t,printerName:t.printer_id?fr.get(t.printer_id)||`Unknown`:t.sliced_for_model||`No Printer`,printerMap:fr,isSelected:U.has(t.id),onSelect:Cr,selectionMode:Sr,projects:Kn,isHighlighted:t.id===Pt,timeFormat:Zn,preferredSlicer:Qn,useSlicerApi:$n,currency:er,t:e,onNavigateToArchive:Pn},t.id))}),(0,$.jsx)(Fn,{pageIndex:Je,pageSize:Xe,totalRows:_r,totalPages:br,onPageChange:Ye,onPageSizeChange:e=>{Ze(e),Ye(0)},t:e})]}):q===`list`?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(X,{children:(0,$.jsxs)(`div`,{className:`divide-y divide-bambu-dark-tertiary`,children:[(0,$.jsxs)(`div`,{className:`grid grid-cols-12 gap-4 px-4 py-3 text-xs text-bambu-gray font-medium`,children:[(0,$.jsx)(`div`,{className:`col-span-1`}),(0,$.jsx)(`div`,{className:`col-span-4`,children:`Name`}),(0,$.jsx)(`div`,{className:`col-span-2`,children:`Printer`}),(0,$.jsx)(`div`,{className:`col-span-2`,children:`Date`}),(0,$.jsx)(`div`,{className:`col-span-1`,children:`Size`}),(0,$.jsx)(`div`,{className:`col-span-2 text-right`,children:`Actions`})]}),xr?.map(t=>(0,$.jsx)(jn,{archive:t,printerName:t.printer_id?fr.get(t.printer_id)||`Unknown`:t.sliced_for_model||`No Printer`,isSelected:U.has(t.id),onSelect:Cr,selectionMode:Sr,projects:Kn,isHighlighted:t.id===Pt,preferredSlicer:Qn,useSlicerApi:$n,t:e,onNavigateToArchive:Pn},t.id))]})}),(0,$.jsx)(Fn,{pageIndex:Je,pageSize:Xe,totalRows:_r,totalPages:br,onPageChange:Ye,onPageSizeChange:e=>{Ze(e),Ye(0)},t:e})]}):q===`log`?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsx)(X,{children:(0,$.jsx)(et,{className:`py-3`,children:(0,$.jsxs)(`div`,{className:`flex flex-col md:flex-row gap-3 md:items-center md:flex-wrap`,children:[(0,$.jsxs)(`div`,{className:`flex-1 relative md:min-w-[200px]`,children:[(0,$.jsx)(ze,{className:`absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-bambu-gray`}),(0,$.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:y,onChange:e=>{b(e.target.value),Qt(0)}})]}),(0,$.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:x||``,onChange:e=>{S(e.target.value?Number(e.target.value):null),Qt(0)},children:[(0,$.jsx)(`option`,{value:``,children:e(`archives.log.allPrinters`)}),Gn?.map(e=>(0,$.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,$.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:Rt||``,onChange:e=>{zt(e.target.value||null),Qt(0)},children:[(0,$.jsx)(`option`,{value:``,children:e(`archives.log.allUsers`)}),Jn?.map(e=>(0,$.jsx)(`option`,{value:e.username,children:e.username},e.id))]}),(0,$.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:Vt||``,onChange:e=>{Ht(e.target.value||null),Qt(0)},children:[(0,$.jsx)(`option`,{value:``,children:e(`archives.log.allStatuses`)}),(0,$.jsx)(`option`,{value:`completed`,children:e(`archives.status.completed`)}),(0,$.jsx)(`option`,{value:`failed`,children:e(`archives.status.failed`)}),(0,$.jsx)(`option`,{value:`stopped`,children:e(`archives.status.stopped`)}),(0,$.jsx)(`option`,{value:`cancelled`,children:e(`archives.log.cancelled`)}),(0,$.jsx)(`option`,{value:`skipped`,children:e(`archives.log.skipped`)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`label`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.dateFrom`)}),(0,$.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:Ut,onChange:e=>{Wt(e.target.value),Qt(0)}})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`label`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.dateTo`)}),(0,$.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:Gt,onChange:e=>{qt(e.target.value),Qt(0)}})]}),(0,$.jsxs)(`div`,{className:`ml-auto flex items-center gap-2`,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:()=>En(!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,$.jsx)(I,{className:`w-4 h-4`}),(0,$.jsx)(`span`,{className:`hidden sm:inline`,children:e(`archives.log.columns`)})]}),(0,$.jsxs)(Z,{variant:`danger`,size:`sm`,onClick:()=>en(!0),disabled:!s(`archives:delete_all`)||lr.isPending,children:[(0,$.jsx)(J,{className:`w-4 h-4`}),e(`archives.log.clearLog`)]})]})]})})}),(0,$.jsx)(X,{children:Xn?(0,$.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,$.jsx)(K,{className:`w-6 h-6 animate-spin text-bambu-green`})}):Yn?.items.length?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`overflow-x-auto`,children:(0,$.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,$.jsx)(`thead`,{children:(0,$.jsxs)(`tr`,{className:`border-b border-bambu-dark-tertiary text-bambu-gray text-left`,children:[kn.map(t=>{let n=xn.has(t),r=Dn.column===t,i=e(_n[t]??t);return(0,$.jsx)(`th`,{scope:`col`,"aria-sort":r?Dn.direction===`asc`?`ascending`:`descending`:`none`,className:`px-4 py-3 font-medium ${ar.has(t)?`text-right`:``}`,children:n?(0,$.jsxs)(`button`,{type:`button`,onClick:()=>rr(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?Dn.direction===`asc`?(0,$.jsx)(w,{className:`w-3.5 h-3.5`}):(0,$.jsx)(C,{className:`w-3.5 h-3.5`}):(0,$.jsx)(_,{className:`w-3.5 h-3.5 opacity-30`})]}):i},t)}),(0,$.jsx)(`th`,{className:`px-4 py-3 font-medium w-10`,"aria-label":e(`common.actions`)})]})}),(0,$.jsx)(`tbody`,{className:`divide-y divide-bambu-dark-tertiary`,children:Yn.items.map(t=>(0,$.jsxs)(`tr`,{className:`hover:bg-bambu-dark-secondary/50`,children:[kn.map(e=>(0,$.jsx)(`td`,{className:`px-4 py-3 ${ar.has(e)?`text-right`:``}`,children:sr(e,t)},e)),(0,$.jsx)(`td`,{className:`px-4 py-3 text-right`,children:(0,$.jsxs)(`div`,{className:`inline-flex items-center gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:()=>{an(t),cn(t.failure_reason||``),dn(t.status)},disabled:dr.isPending||!(s(`archives:update_all`)||s(`archives:update_own`)),title:s(`archives:update_all`)||s(`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,$.jsx)(Pe,{className:`w-4 h-4`})}),(0,$.jsx)(`button`,{type:`button`,onClick:()=>nn(t.id),disabled:ur.isPending||!(s(`archives:delete_all`)||s(`archives:delete_own`)),title:s(`archives:delete_all`)||s(`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,$.jsx)(J,{className:`w-4 h-4`})})]})})]},t.id))})]})}),(0,$.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-3 border-t border-bambu-dark-tertiary flex-wrap gap-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`span`,{className:`text-sm text-bambu-gray`,children:e(`archives.log.showing`,{count:Math.min(Yt+fn,Yn.total),total:Yn.total})}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`label`,{className:`text-xs text-bambu-gray`,children:e(`archives.log.rowsPerPage`)}),(0,$.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:fn,onChange:e=>{pn(Number(e.target.value)),Qt(0)},children:[(0,$.jsx)(`option`,{value:10,children:`10`}),(0,$.jsx)(`option`,{value:25,children:`25`}),(0,$.jsx)(`option`,{value:50,children:`50`}),(0,$.jsx)(`option`,{value:100,children:`100`})]})]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(`span`,{className:`text-sm text-bambu-gray`,children:[e(`archives.log.page`),` `,Math.floor(Yt/fn)+1,` / `,Math.max(1,Math.ceil(Yn.total/fn))]}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Qt(Math.max(0,Yt-fn)),disabled:Yt===0,children:(0,$.jsx)(D,{className:`w-4 h-4`})}),(0,$.jsx)(Z,{variant:`secondary`,size:`sm`,onClick:()=>Qt(Yt+fn),disabled:Yt+fn>=Yn.total,children:(0,$.jsx)(ee,{className:`w-4 h-4`})})]})]})]}):(0,$.jsx)(`div`,{className:`text-center py-12 text-bambu-gray`,children:e(`archives.log.noEntries`)})})]}):null,pe&&(0,$.jsx)(Kt,{onClose:()=>{H(!1),_e([])},initialFiles:he}),Tt&&(0,$.jsx)(vt,{onClose:()=>Et(!1)}),bt&&(0,$.jsx)(Jt,{onClose:()=>wt(!1)}),ke&&(0,$.jsx)(nt,{title:e(`archives.modal.deleteArchives`),message:e(`archives.modal.deleteArchivesConfirm`,{count:U.size}),confirmText:e(`archives.modal.deleteCount`,{count:U.size}),variant:`danger`,onConfirm:()=>{cr.mutate(Array.from(U)),Me(!1)},onCancel:()=>Me(!1)}),Ne&&(0,$.jsx)(Xt,{selectedIds:Array.from(U),existingTags:hr,onClose:()=>Fe(!1)}),Ie&&(0,$.jsx)(Zt,{selectedIds:Array.from(U),onClose:()=>Le(!1)}),ut&&U.size>=2&&U.size<=5&&(0,$.jsx)(un,{archiveIds:Array.from(U),onClose:()=>{dt(!1),ve(new Set),De(!1)}}),ft&&(0,$.jsx)(hn,{onClose:()=>gt(!1)}),(0,$.jsx)(yt,{isOpen:Sn,onClose:()=>En(!1),columns:tr,defaultColumns:nr,onSave:ir}),$t&&(0,$.jsx)(nt,{title:e(`archives.log.clearLogTitle`),message:e(`archives.log.clearLogConfirm`),confirmText:e(`archives.log.clearLogButton`),variant:`danger`,onConfirm:()=>{lr.mutate(),en(!1)},onCancel:()=>en(!1)}),tn!==null&&(0,$.jsx)(nt,{title:e(`archives.log.deleteEntryTitle`),message:e(`archives.log.deleteEntryConfirm`),confirmText:e(`common.delete`),variant:`danger`,onConfirm:()=>{ur.mutate(tn),nn(null)},onCancel:()=>nn(null)}),rn!==null&&(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm`,onClick:()=>an(null),children:(0,$.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,$.jsx)(`h3`,{className:`text-lg font-semibold text-white mb-4`,children:e(`archives.log.editEntryTitle`)}),(0,$.jsx)(`p`,{className:`text-xs text-bambu-gray mb-4`,children:e(`archives.log.editEntryDescription`)}),(0,$.jsxs)(`div`,{className:`space-y-4`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:e(`editArchive.status`)}),(0,$.jsxs)(`select`,{value:ln,onChange:e=>dn(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,$.jsx)(`option`,{value:`completed`,children:e(`archives.log.statuses.completed`,{defaultValue:`completed`})}),(0,$.jsx)(`option`,{value:`failed`,children:e(`archives.log.statuses.failed`,{defaultValue:`failed`})}),(0,$.jsx)(`option`,{value:`stopped`,children:e(`archives.log.statuses.stopped`,{defaultValue:`stopped`})}),(0,$.jsx)(`option`,{value:`cancelled`,children:e(`archives.log.statuses.cancelled`,{defaultValue:`cancelled`})}),(0,$.jsx)(`option`,{value:`skipped`,children:e(`archives.log.statuses.skipped`,{defaultValue:`skipped`})})]})]}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`label`,{className:`block text-sm text-bambu-gray mb-1`,children:e(`editArchive.failureReason`)}),(0,$.jsxs)(`select`,{value:sn,onChange:e=>cn(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,$.jsx)(`option`,{value:``,children:e(`editArchive.selectReason`)}),Se.map(t=>(0,$.jsx)(`option`,{value:t,children:e(`editArchive.failureReasons.${t}`)},t))]})]})]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 mt-6`,children:[(0,$.jsx)(Z,{variant:`secondary`,onClick:()=>an(null),children:e(`common.cancel`)}),(0,$.jsx)(Z,{variant:`primary`,onClick:()=>{let e={};if(sn!==(rn.failure_reason||``)&&(e.failure_reason=sn||null),ln!==rn.status&&(e.status=ln),Object.keys(e).length===0){an(null);return}dr.mutate({id:rn.id,body:e})},disabled:dr.isPending,children:dr.isPending?e(`editArchive.saving`):e(`common.save`)})]})]})}),i&&(0,$.jsx)(Bt,{archiveId:Number(i),onClose:()=>t(`/archives`)},i)]})}function Fn({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,$.jsxs)(`div`,{className:`flex items-center justify-between pt-2 text-sm`,children:[(0,$.jsx)(`span`,{className:`text-bambu-gray`,children:s?`${n} ${o(`archives.prints`)}`:(0,$.jsxs)($.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,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(`span`,{className:`text-bambu-gray`,children:o(`archives.pagination.show`)}),(0,$.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,$.jsx)(`option`,{value:e,children:e},e)),(0,$.jsx)(`option`,{value:-1,children:o(`archives.pagination.all`)})]}),!s&&(0,$.jsxs)($.Fragment,{children:[(0,$.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,$.jsx)(O,{className:`w-4 h-4`})}),(0,$.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,$.jsx)(D,{className:`w-4 h-4`})}),(0,$.jsxs)(`span`,{className:`text-bambu-gray px-2 whitespace-nowrap`,children:[o(`archives.pagination.page`),` `,e+1,` `,o(`archives.pagination.of`),` `,r]}),(0,$.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,$.jsx)(ee,{className:`w-4 h-4`})}),(0,$.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,$.jsx)(k,{className:`w-4 h-4`})})]})]})]})}export{Pn as ArchivesPage};