1import{a as dt}from"./chunk-CXACER6L.js";import{a as st}from"./chunk-QB4ZW3VC.js";import{a as mt,b as rt}from"./chunk-WBP73L23.js";import"./chunk-JYTLMDS2.js";import{a as J,b as Q}from"./chunk-UMORUNDS.js";import"./chunk-JDED4XNO.js";import{a as W,b as X,c as Z,d as tt,e as et,f as it,g as nt,h as ot,i as at,j as lt,k as pt}from"./chunk-EHSKWIZA.js";import{a as N,b as G}from"./chunk-7V6F2WZN.js";import{a as Y}from"./chunk-5XJN6G4E.js";import{a as q}from"./chunk-UAJ3LDZG.js";import"./chunk-46OECEEY.js";import"./chunk-ETTGII3S.js";import"./chunk-EFFKYZ4R.js";import"./chunk-S3OUMWH4.js";import"./chunk-FHSHMNFM.js";import{g as k,m as F}from"./chunk-QRHPXOKA.js";import"./chunk-BR7SVKEQ.js";import{d as B,e as H,f as O,g as U,h as V,i as j,j as L,k as K}from"./chunk-WLTVU3TA.js";import"./chunk-FBPQG6MS.js";import"./chunk-HYC3WGKD.js";import"./chunk-2PPFUFFT.js";import{a as b,b as w}from"./chunk-7OXH5EWV.js";import"./chunk-FTXGPRFJ.js";import{a as y,d as E}from"./chunk-BRRFPLOY.js";import"./chunk-HGFVTFKX.js";import{Ac as R,Fa as d,Ib as _,Pb as u,Ub as n,V as $,Vb as i,Wb as M,Xb as g,Yb as x,_b as I,bc as S,dc as s,ea as c,f as z,gb as m,na as A,oa as P,qc as a,rc as f,sb as D,sc as h,yb as r,yd as T}from"./chunk-EL2YAQZX.js";import"./chunk-EQDQRRRY.js";function ut(t,o){if(t&1&&(n(0,"span"),a(1),i()),t&2){let e=s();m(),h("User: ",e.data.email,"")}}function gt(t,o){t&1&&(n(0,"span"),a(1,"Anonymous"),i())}function xt(t,o){t&1&&(n(0,"div",2),M(1,"mat-spinner",8),i())}function St(t,o){if(t&1&&(n(0,"div",3),a(1),i()),t&2){let e=s();m(),f(e.error())}}function ht(t,o){if(t&1&&(n(0,"div",4)(1,"pre",9),a(2),i()()),t&2){let e=s();m(2),f(e.content())}}var ct=(()=>{class t{constructor(){this.data=c(H),this.dialogRef=c(B),this.snippetsService=c(st),this.loading=d(!0),this.error=d(null),this.content=d("")}ngOnInit(){this.loadContent()}loadContent(){this.snippetsService.getSnippet(this.data.uuid).subscribe({next:e=>{this.content.set(e.content),this.loading.set(!1)},error:e=>{console.error("Failed to load snippet:",e),this.error.set("Failed to load snippet content"),this.loading.set(!1)}})}formatSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}copyToClipboard(){navigator.clipboard.writeText(this.content()).then(()=>{})}static{this.\u0275fac=function(p){return new(p||t)}}static{this.\u0275cmp=D({type:t,selectors:[["app-snippet-content-dialog"]],decls:22,vars:5,consts:[["mat-dialog-title","",1,"flex","items-center","gap-2"],[1,"mb-4","flex","gap-4","text-sm","text-gray-400"],[1,"flex","justify-center","py-8"],[1,"text-red-400","py-4"],[1,"bg-gray-900","rounded-lg","p-4","max-h-[60vh]","overflow-auto"],["align","end"],["mat-button","",3,"click","disabled"],["mat-button","","mat-dialog-close",""],["diameter","32"],[1,"text-sm","text-gray-200","whitespace-pre-wrap","break-words","font-mono"]],template:function(p,l){p&1&&(n(0,"h2",0)(1,"mat-icon"),a(2,"code"),i(),a(3," Snippet Content "),i(),n(4,"mat-dialog-content")(5,"div",1)(6,"span"),a(7),i(),n(8,"span"),a(9),i(),r(10,ut,2,1,"span")(11,gt,2,0,"span"),i(),r(12,xt,2,0,"div",2)(13,St,2,1,"div",3)(14,ht,3,1,"div",4),i(),n(15,"mat-dialog-actions",5)(16,"button",6),S("click",function(){return l.copyToClipboard()}),n(17,"mat-icon"),a(18,"content_copy"),i(),a(19," Copy "),i(),n(20,"button",7),a(21,"Close"),i()()),p&2&&(m(7),h("Size: ",l.formatSize(l.data.size),""),m(2),h("Copies: ",l.data.copies,""),m(),u(l.data.email?10:11),m(2),u(l.loading()?12:l.error()?13:14),m(4),_("disabled",l.loading()||!!l.error()))},dependencies:[T,K,U,V,L,j,E,y,w,b,G,N],styles:["mat-dialog-content[_ngcontent-%COMP%]{min-width:500px;max-width:800px}"]})}}return t})();var vt=()=>[25,50,100];function Mt(t,o){if(t&1&&M(0,"app-stats-cards",1),t&2){let e=s();_("items",e.statsItems)}}function Dt(t,o){t&1&&(n(0,"div",4)(1,"span",8),a(2,"Loading\u2026"),i()())}function Tt(t,o){t&1&&(n(0,"div",5)(1,"mat-icon",9),a(2,"code"),i(),n(3,"p",10),a(4,"No snippets yet"),i()())}function yt(t,o){t&1&&(n(0,"th",22),a(1,"UUID"),i())}function Et(t,o){if(t&1&&(n(0,"td",23)(1,"code",24),a(2),i()()),t&2){let e=o.$implicit;m(2),f(e.uuid)}}function bt(t,o){t&1&&(n(0,"th",25),a(1,"Size"),i())}function wt(t,o){if(t&1&&(n(0,"td",26)(1,"span",27),a(2),i()()),t&2){let e=o.$implicit,p=s(2);m(2),f(p.formatSize(e.size))}}function At(t,o){t&1&&(n(0,"th",25),a(1,"Copies"),i())}
1function Pt(t,o){if(t&1&&(n(0,"td",26)(1,"span",27),a(2),i()()),t&2){let e=o.$implicit;m(2),f(e.copies)}}function It(t,o){t&1&&(n(0,"th",25),a(1,"User"),i())}function zt(t,o){if(t&1){let e=I();n(0,"button",30),S("click",function(l){A(e);let C=s().$implicit,v=s(2);return P(v.goToUserDetails(C,l))}),a(1),i()}if(t&2){let e=s().$implicit;m(),h(" ",e.email," ")}}function $t(t,o){t&1&&(n(0,"span",29),a(1,"Anonymous"),i())}function Rt(t,o){if(t&1&&(n(0,"td",26),r(1,zt,2,1,"button",28)(2,$t,2,0,"span",29),i()),t&2){let e=o.$implicit;m(),u(e.email?1:2)}}function kt(t,o){t&1&&(n(0,"th",25),a(1,"Created"),i())}function Ft(t,o){if(t&1&&(n(0,"td",26)(1,"span",31),a(2),i()()),t&2){let e=o.$implicit,p=s(2);m(2),f(p.formatDate(e.created))}}function Bt(t,o){t&1&&M(0,"tr",32)}function Ht(t,o){if(t&1){let e=I();n(0,"tr",33),S("click",function(){let l=A(e).$implicit,C=s(2);return P(C.onRowClick(l))}),i()}}function Ot(t,o){if(t&1&&(n(0,"table",6),g(1,11),r(2,yt,2,0,"th",12)(3,Et,3,1,"td",13),x(),g(4,14),r(5,bt,2,0,"th",15)(6,wt,3,1,"td",16),x(),g(7,17),r(8,At,2,0,"th",15)(9,Pt,3,1,"td",16),x(),g(10,18),r(11,It,2,0,"th",15)(12,Rt,3,1,"td",16),x(),g(13,19),r(14,kt,2,0,"th",15)(15,Ft,3,1,"td",16),x(),r(16,Bt,1,0,"tr",20)(17,Ht,1,0,"tr",21),i()),t&2){let e=s();_("dataSource",e.snippets()),m(16),_("matHeaderRowDef",e.displayColumns),m(),_("matRowDefColumns",e.displayColumns)}}var fe=(()=>{class t{constructor(){this.adminService=c(dt),this.router=c(k),this.dialog=c(O),this.titleService=c(q),this.destroy$=new z,this.snippets=d([]),this.loading=d(!0),this.totalCount=d(0),this.page=d(0),this.pageSize=d(50),this.statsItems=[],this.displayColumns=["uuid","size","copies","user","created"]}ngOnInit(){this.titleService.set("Admin Snippets"),this.loadSnippets()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}loadSnippets(){this.loading.set(!0),this.adminService.getSnippets(this.page(),this.pageSize()).pipe($(this.destroy$)).subscribe({next:e=>{this.snippets.set(e.items),this.totalCount.set(e.totalCount),this.statsItems=[{label:"Total Snippets",value:e.totalCount,type:J.Number,icon:"code"}],this.loading.set(!1)},error:e=>{console.error("Failed to load snippets:",e),this.loading.set(!1)}})}onPageChange(e){this.page.set(e.pageIndex),this.pageSize.set(e.pageSize),this.loadSnippets()}formatSize(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}formatDate(e){let p=new Date(e*1e3),l=p.getDate().toString().padStart(2,"0"),C=(p.getMonth()+1).toString().padStart(2,"0"),v=p.getFullYear();return`${l}/${C}/${v}`}onRowClick(e){this.dialog.open(ct,{data:{uuid:e.uuid,size:e.size,copies:e.copies,email:e.email}})}goToUserDetails(e,p){p.stopPropagation(),e.email&&this.router.navigate(["/admin/users",e.email])}static{this.\u0275fac=function(p){return new(p||t)}}static{this.\u0275cmp=D({type:t,selectors:[["app-admin-snippets-page"]],decls:8,vars:7,consts:[[1,"mb-8"],[3,"items"],[1,"px-0","pb-0"],[1,"overflow-x-auto"],[1,"flex","justify-center","py-8"],[1,"py-12","flex","flex-col","items-center","text-center","text-muted"],["mat-table","",1,"w-full","-mt-[17px]",3,"dataSource"],["showFirstLastButtons","",3,"page","length","pageSize","pageIndex","pageSizeOptions"],[1,"text-muted"],[1,"!h-10","!w-10","!text-4xl","mb-2","opacity-50"],[1,"m-0","text-sm"],["matColumnDef","uuid"],["mat-header-cell","","class","font-semibold !pl-6",4,"matHeaderCellDef"],["mat-cell","","class","!pl-6",4,"matCellDef"],["matColumnDef","size"],["mat-header-cell","","class","font-semibold",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","copies"],["matColumnDef","user"],["matColumnDef","created"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","","class","cursor-pointer hover:bg-[#2b2b2b]",3,"click",4,"matRowDef","matRowDefColumns"],["mat-header-cell","",1,"font-semibold","!pl-6"],["mat-cell","",1,"!pl-6"],[1,"text-sm","text-gray-300"],["mat-header-cell","",1,"font-semibold"],["mat-cell",""],[1,"text-gray-400"],["mat-button","","color","primary",1,"!px-0"],[1,"text-gray-500"],["mat-button","","color","primary",1,"!px-0",3,"click"],[1,"text-sm","text-gray-400"],["mat-header-row",""],["mat-row","",1,"curs
1or-pointer","hover:bg-[#2b2b2b]",3,"click"]],template:function(p,l){p&1&&(n(0,"div",0),r(1,Mt,1,1,"app-stats-cards",1),i(),n(2,"app-card",2)(3,"div",3),r(4,Dt,3,0,"div",4)(5,Tt,5,0,"div",5)(6,Ot,18,3,"table",6),i(),n(7,"mat-paginator",7),S("page",function(v){return l.onPageChange(v)}),i()()),p&2&&(m(),u(l.statsItems.length>0?1:-1),m(3),u(l.loading()?4:l.snippets().length===0?5:6),m(3),_("length",l.totalCount())("pageSize",l.pageSize())("pageIndex",l.page())("pageSizeOptions",R(6,vt)))},dependencies:[T,F,pt,W,Z,nt,tt,X,ot,et,it,at,lt,E,y,w,b,rt,mt,Y,Q],encapsulation:2})}}return t})();export{fe as AdminSnippetsPageComponent};
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.