1import{a as ie}from"./chunk-OATPHP6U.js";import{j as te,v as ae}from"./chunk-XYYBCPI6.js";import{Ac as s,Bb as D,Cb as u,Db as h,Eb as U,Ec as d,Fc as ee,Lb as G,Ma as _,Qb as J,Ra as m,Sb as f,U as E,Wa as Q,Xb as K,Yb as X,Z as F,_ as O,_b as Y,bc as b,ca as V,cc as x,eb as W,ec as N,ka as q,kc as v,oc as Z,tb as k,ua as H,ub as R,wb as T}from"./chunk-R7SP6EIA.js";var ce=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],M=a=>{let e=0;for(let t=0;t<a.length;t++){let i=a[t],r=ce.indexOf(i);e=e*83+r}return e};var A=a=>{let e=a/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},L=a=>{let e=Math.max(0,Math.min(1,a));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},me=a=>a<0?-1:1,P=(a,e)=>me(a)*Math.pow(Math.abs(a),e),re=class extends Error{constructor(a){super(a),this.name="ValidationError",this.message=a}},ue=a=>{if(!a||a.length<6)throw new re("The blurhash string must be at least 6 characters");let e=M(a[0]),t=Math.floor(e/9)+1,i=e%9+1;if(a.length!==4+2*i*t)throw new re(`blurhash length mismatch: length is ${a.length} but it should be ${4+2*i*t}`)};var he=a=>{let e=a>>16,t=a>>8&255,i=a&255;return[A(e),A(t),A(i)]},ge=(a,e)=>{let t=Math.floor(a/361),i=Math.floor(a/19)%19,r=a%19;return[P((t-9)/9,2)*e,P((i-9)/9,2)*e,P((r-9)/9,2)*e]},pe=(a,e,t,i)=>{ue(a),i=i|1;let r=M(a[0]),c=Math.floor(r/9)+1,o=r%9+1,C=(M(a[1])+1)/166,y=new Array(o*c);for(let n=0;n<y.length;n++)if(n===0){let l=M(a.substring(2,6));y[n]=he(l)}else{let l=M(a.substring(4+n*2,6+n*2));y[n]=ge(l,C*i)}let g=e*4,p=new Uint8ClampedArray(g*t);for(let n=0;n<t;n++)for(let l=0;l<e;l++){let $=0,B=0,j=0;for(let w=0;w<c;w++)for(let I=0;I<o;I++){let S=Math.cos(Math.PI*l*I/e)*Math.cos(Math.PI*n*w/t),z=y[I+w*o];$+=z[0]*S,B+=z[1]*S,j+=z[2]*S}let oe=L($),le=L(B),de=L(j);p[4*l+0+n*g]=oe,p[4*l+1+n*g]=le,p[4*l+2+n*g]=de,p[4*l+3+n*g]=255}return p},ne=pe;var fe=["blurhashCanvas"],be=a=>({"object-cover":a});function xe(a,e){a&1&&U(0,"canvas",3,0)}function ve(a,e){if(a&1&&U(0,"img",4),a&2){let t=f(2);D("src",t.bgBlurSrc(),_),k("loading",t.priority()?"eager":"lazy")("fetchpriority",t.priority()?"high":"auto")}}function Me(a,e){if(a&1){let t=G();u(0,"div"),R(1,xe,2,0,"canvas",3)(2,ve,1,3,"img",4),u(3,"img",5),J("load",function(){F(t);let r=f();return O(r.onImageLoad())}),h()()}if(a&2){let t=f();b(v("relative w-full h-full overflow-hidden ",t.containerClass())),Y("aspect-ratio",t.aspectRatio()||null),m(),T(t.blurhash()?1:2),m(2),b(v("absolute inset-0 w-full h-full z-20 transition-opacity duration-300 ",t.imageClass())),D("src",t.fallbackSrc(),_)("srcset",t.srcSet())("sizes",t.sizes())("alt",t.altText())("width",t.media().width||null)("height",t.media().height||null)("ngClass",Z(19,be,!t.isContain())),k("loading",t.priority()?"eager":"lazy")("fetchpriority",t.priority()?"high":"auto")("priority",t.priority()?"true":null)}}function Ce(a,e){if(a&1&&(u(0,"a",6)(1,"div"),x(2),h(),u(3,"div",7)(4,"span",8),x(5),h(),u(6,"span",9),x(7),h()(),u(8,"span",10),x(9,"download"),h()()),a&2){let t=f();b(v("flex items-center gap-4 p-4 border border-slate-200 dark:border-slate-800 rounded-md bg-slate-50 dark:bg-[#0a0a0a] hover:bg-slate-100 dark:hover:bg-[#111] transition-colors group w-full ",t.containerClass())),D("href",t.fallbackSrc(),_),m(),b(v("w-10 h-10 shrink-0 rounded-md flex items-center justify-center font-bold text-[10px] ",t.extensionColorClass())),m(),N(" ",t.fileExtension()," "),m(3),N(" ",t.media().name," "),m(2),N(" Document \u2022 ",t.fileSizeMb()," MB ")}}var se=class a{media=d.required();
1alt=d("Imagine");containerClass=d("");imageClass=d("");aspectRatio=d("");priority=d(!1);sizes=d("(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw");isLoaded=q(!1);canvasRef=ee("blurhashCanvas");blurhash=s(()=>this.media().variants?.blurhash||null);baseUrl=ie.API_URL.replace(/\/api\/$/,"").replace(/\/$/,"");platformId=E(H);document=E(V);isContain=s(()=>(this.imageClass()||"").includes("object-contain"));fileExtension=s(()=>{let e=this.media().name.split(".");return e.length>1&&e.pop()?.toUpperCase()||"FILE"});isImage=s(()=>(this.media().mimeType?.toLowerCase()??"").startsWith("image/"));fileSizeMb=s(()=>(this.media().mediaSize/(1024*1024)).toFixed(2));extensionColorClass=s(()=>{let e=this.fileExtension().toLowerCase();return["pdf"].includes(e)?"bg-red-500 text-red-50":["doc","docx"].includes(e)?"bg-blue-600 text-blue-50":["xls","xlsx","csv"].includes(e)?"bg-green-700 text-green-50":["ppt","pptx"].includes(e)?"bg-orange-500 text-orange-50":["zip","rar","7z"].includes(e)?"bg-amber-600 text-amber-50":"bg-slate-500 text-slate-50"});altText=s(()=>{let e=this.alt().trim();return e&&e!=="Imagine"?e:this.media().altText?.trim()||e||"Imagine"});hasMeta=s(()=>!!(this.media().description||(this.media().tags?.length??0)>0));buildUrl(e){if(!e)return"";let t=this.baseUrl.replace(/\/$/,""),i=e.startsWith("/")?e:`/${e}`;return`${t}${i}`}bgBlurSrc=s(()=>{let e=this.media().variants?.sm;return e?this.buildUrl(e):this.fallbackSrc()});srcSet=s(()=>{let e=this.media().variants;return e?[e.sm?`${this.buildUrl(e.sm)} 320w`:"",e.md?`${this.buildUrl(e.md)} 768w`:"",e.lg?`${this.buildUrl(e.lg)} 1200w`:""].filter(Boolean).join(", "):""});fallbackSrc=s(()=>{let e=this.media().variants?.md||this.media().url;return this.buildUrl(e)});constructor(){Q(()=>{let e=this.blurhash(),t=this.canvasRef()?.nativeElement;e&&t&&this.renderBlurhash(e,t,32,32)})}ngOnInit(){ae(this.platformId)||this.preloadIfPriority()}preloadIfPriority(){if(!this.priority())return;let e=this.document.head,t=this.fallbackSrc();if(!e||!t)return;let i=e.querySelectorAll('link[rel="preload"][as="image"]');for(let o=0;o<i.length;o++)if(i[o].getAttribute("href")===t)return;let r=this.document.createElement("link");r.setAttribute("rel","preload"),r.setAttribute("as","image"),r.setAttribute("fetchpriority","high"),r.setAttribute("href",t);let c=this.srcSet();c&&(r.setAttribute("imagesrcset",c),r.setAttribute("imagesizes",this.sizes())),e.appendChild(r)}onImageLoad(){this.isLoaded.set(!0)}renderBlurhash(e,t,i,r){try{let c=ne(e,i,r),o=t.getContext("2d",{alpha:!1});if(!o)return;t.width=i,t.height=r;let C=o.createImageData(i,r);C.data.set(c),o.putImageData(C,0,0)}catch{}}static \u0275fac=function(t){return new(t||a)};static \u0275cmp=W({type:a,selectors:[["app-image"]],viewQuery:function(t,i){t&1&&K(i.canvasRef,fe,5),t&2&&X()},inputs:{media:[1,"media"],alt:[1,"alt"],containerClass:[1,"containerClass"],imageClass:[1,"imageClass"],aspectRatio:[1,"aspectRatio"],priority:[1,"priority"],sizes:[1,"sizes"]},decls:2,vars:1,consts:[["blurhashCanvas",""],[3,"class","aspect-ratio"],["target","_blank","rel","noopener noreferrer",3,"href","class"],["aria-hidden","true",1,"absolute","inset-0","w-full","h-full","object-cover","blur-md","z-10","transition-opacity","duration-500","scale-105","opacity-75"],["aria-hidden","true",1,"absolute","inset-0","w-full","h-full","object-cover","blur-md","z-10","transition-opacity","duration-500","scale-105","opacity-75",3,"src"],[3,"load","src","srcset","sizes","alt","width","height","ngClass"],["target","_blank","rel","noopener noreferrer",3,"href"],[1,"flex","flex-col","flex-1","min-w-0"],[1,"text-sm","font-medium","text-slate-900","dark:text-white","truncate","group-hover:text-blue-600","dark:group-hover:text-blue-400","transition-colors"],[1,"text-[10px]","text-slate-500","uppercase","font-mono","tracking-wider","mt-0.5"],[1,"material-symbols-outlined","text-slate-400","group-hover:text-blue-600","shrink-0","transition-colors"]],template:function(t,i){t&1&&R(0,Me,4,21,"div",1)(1,Ce,10,10,"a",2),t&2&&T(i.isImage()?0:1)},dependencies:[te],encapsulation:2})};export{ne as a,se as b};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.