// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later // @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{Un as t,hn as n,mn as r,mt as i,qi as a}from"./lucide-icons-BdRF0moN.js";import{t as o}from"./jsx-runtime-By8HlURe.js";import{r as s}from"./react-intl-eZirkCBg.js";import{a as c,o as l,r as u,t as d}from"./encryptedFile-DKFYUsvG.js";import{t as f}from"./utils-BFSTDHdM.js";import{t as p}from"./button-Cs26nq0r.js";import{n as m,r as h}from"./useBlossomFallback-DY_46Uqi.js";var g=e(a(),1);function _(e,t,n={}){let{enabled:r=!0}=n,i=m(),[a,o]=(0,g.useState)({error:!1}),[s,l]=(0,g.useState)(!1),{algorithm:f,key:p,nonce:_,hash:v,mime:y}=t??{},b=t?.fallbacks?.join(` `),x=(0,g.useMemo)(()=>h(e,i),[e,i]),S=!!t&&!c(t);(0,g.useEffect)(()=>l(!1),[e]),(0,g.useEffect)(()=>{if(!f||!p||!_||S){o({error:S});return}if(!r)return;let t,n=!1,i=new AbortController;return o({error:!1}),u(e,{algorithm:f,key:p,nonce:_,hash:v,mime:y,fallbacks:b?b.split(` `):void 0},{signal:i.signal,fallbackUrls:x,...s?{maxBytes:1/0}:{}}).then(e=>{if(n){URL.revokeObjectURL(e.objectUrl);return}t=e.objectUrl,o({src:e.objectUrl,mime:e.mime,error:!1})}).catch(e=>{n||(e instanceof d?o({error:!1,tooLarge:e.byteSize}):o({error:!0}))}),()=>{n=!0,i.abort(),t&&URL.revokeObjectURL(t)}},[e,f,p,_,v,y,b,S,x,r,s]);let C=(0,g.useCallback)(()=>l(!0),[]);if(!t)return{src:e,mime:void 0,encrypted:!1,loading:!1,error:!1,unsupported:!1,tooLarge:!1,byteSize:void 0,decryptAnyway:C};let w=a.tooLarge!==void 0;return{src:a.src,mime:a.mime??y,encrypted:!0,loading:r&&!a.src&&!a.error&&!w,error:a.error,unsupported:S,tooLarge:w,byteSize:a.tooLarge,decryptAnyway:C}}function v(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:e<1024*1024*1024?`${Math.round(e/(1024*1024))} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}var y=o();function b({loading:e,unsupported:a,tooLarge:o,byteSize:c,onDecryptAnyway:l,fill:u,className:d}){let m=e?r:o?t:a?i:n;return(0,y.jsxs)(`div`,{className:f(`flex flex-col items-center justify-center gap-2 bg-muted/50 text-muted-foreground`,u?`absolute inset-0 p-4`:`my-2 min-h-32 rounded-xl border border-dashed border-border px-6 py-8`,d),children:[(0,y.jsx)(m,{className:f(`size-5 shrink-0`,e&&`motion-safe:animate-pulse`),"aria-hidden":!0}),(0,y.jsx)(`p`,{className:`text-sm text-center text-balance`,children:e?(0,y.jsx)(s,{id:`encryptedFile.decrypting`,defaultMessage:`Decrypting…`}):o?c===void 0?(0,y.jsx)(s,{id:`encryptedFile.tooLarge`,defaultMessage:`This encrypted file is large. Decrypting it may use a lot of memory.`}):(0,y.jsx)(s,{id:`encryptedFile.tooLargeWithSize`,defaultMessage:`This encrypted file is {size}. Decrypting it may use a lot of memory.`,values:{size:v(c)}}):a?(0,y.jsx)(s,{id:`encryptedFile.unsupported`,defaultMessage:`This file uses an encryption method Ditto doesn't support.`}):(0,y.jsx)(s,{id:`encryptedFile.failed`,defaultMessage:`This encrypted file couldn't be decrypted.`})}),o&&l&&(0,y.jsx)(p,{variant:`outline`,size:`sm`,className:`rounded-full`,onClick:e=>{e.stopPropagation(),e.preventDefault(),l()},children:(0,y.jsx)(s,{id:`encryptedFile.decryptAnyway`,defaultMessage:`Decrypt anyway`})})]})}function x(e){let t=[];for(let n of e){if(n[0]!==`imeta`)continue;let e={},r=[];for(let t=1;t