PageSourceSearch

https://app.timix.ai/chunk-V245IZZO.js

js timix.ai collected 2026-10-05 13:59:57 UTC 21,209 bytes, 1 lines download raw bytes

1import{a as ge}from"./chunk-VEFVBPQB.js";import{a as ue}from"./chunk-4KU7OFDB.js";import"./chunk-MKEORCA2.js";import"./chunk-BWTGMZSK.js";import{E as me,c as ae,g as le,n as de,w as se,x as ce,y as pe}from"./chunk-GSV7AEOW.js";import{K as ie,T as re}from"./chunk-5WB6OT6J.js";import"./chunk-4BQ2D56M.js";import{g as V,i as A,j as ne,k as oe}from"./chunk-D66FS6PW.js";import{b as ee,h as te}from"./chunk-VOACWWGK.js";import{q as X,t as Z}from"./chunk-3ETYRU43.js";import{$ as j,$b as P,Ac as s,Bb as U,Bc as v,Ea as $,Hb as b,Jc as K,K as I,Kc as W,Lc as Y,Oa as f,Pc as G,Qb as q,Qc as Q,Rb as h,Sc as c,Tb as R,Tc as u,Uc as T,Vb as J,Xb as C,Zb as H,_b as S,ac as r,bc as a,cc as k,f as F,ga as N,gc as D,hd as w,k as z,lc as x,ma as y,mc as _,ob as i,p as B,w as E,wa as M,xa as O,zc as d}from"./chunk-BZRRMV4J.js";import"./chunk-ZY7WU73K.js";var fe=(()=>{class o{constructor(){this.http=y(te),this.urlBuilder=y(ie)}getAuditLogs(e){let n=this.urlBuilder.buildApp("audit-log"),t=new ee().set("page",String(e.page)).set("pageSize",String(e.pageSize));return e.entityType&&(t=t.set("entityType",e.entityType)),e.userId&&(t=t.set("userId",e.userId)
1),e.fromDate&&(t=t.set("fromDate",e.fromDate)),e.toDate&&(t=t.set("toDate",e.toDate)),this.http.get(n,{params:t}).pipe(E(l=>this.toApiResponse(l)),I(l=>this.toErrorResponse(l,"Failed to load audit log")))}toApiResponse(e){let n=e.httpStatusCode;return{success:e.success!==!1&&(n==="OK"||n===200||e.success===!0||e.success===void 0&&!!e.data),data:e.data??void 0,errorMessage:e.errorMessage,httpStatusCode:e.httpStatusCode}}toErrorResponse(e,n){console.error(`${n}:`,e);let t=e?.error,l=t?.errorMessage||t?.message||e?.message||n,m=t?.httpStatusCode??e?.status??500;return e?.status===403&&(m="Forbidden"),B({success:!1,data:void 0,errorMessage:l,httpStatusCode:m})}static{this.\u0275fac=function(n){return new(n||o)}}static{this.\u0275prov=N({token:o,factory:o.\u0275fac,providedIn:"root"})}}return o})();var xe=(o,p,e)=>({start:o,end:p,total:e}),ye=(o,p)=>({page:o,total:p}),he=(o,p)=>p.id,be=(o,p)=>p.field;function Ce(o,p){if(o&1&&(r(0,"option",7),d(1),a()),o&2){let e=p.$implicit;h("value",e),i(),s(e)}}function ve(o,p){if(o&1&&(r(0,"option",7),d(1),a()),o&2){let e=p.$implicit;h("value",e.id),i(),s(e.name)}}function Me(o,p){if(o&1&&(r(0,"div",17),d(1),a()),o&2){let e=_();i(),s(e.errorMessage())}}function Oe(o,p){o&1&&(r(0,"div",19),d(1),c(2,"transloco"),a()),o&2&&(i(),s(u(2,1,"auditLog.loading")))}function Se(o,p){if(o&1&&(r(0,"div",19),d(1),c(2,"transloco"),a()),o&2){let e=_();i(),s(u(2,1,e.hasActiveFilters()?"auditLog.emptyFilters":"auditLog.emptyNoActivity"))}}function Pe(o,p){o&1&&(r(0,"p",34),d(1),c(2,"transloco"),a()),o&2&&(i(),s(u(2,1,"auditLog.detail.noDetail")))}function we(o,p){if(o&1&&(r(0,"tr")(1,"td",36),d(2),a(),r(3,"td",37)(4,"span",38),d(5),a()(),r(6,"td",39)(7,"span",40),d(8),a()()()),o&2){let e=p.$implicit;i(2),s(e.field),i(3),s(e.oldValue),i(3),s(e.newValue)}}function Le(o,p){if(o&1&&(r(0,"table",35)(1,"thead")(2,"tr")(3,"th"),d(4),c(5,"transloco"),a(),r(6,"th"),d(7),c(8,"transloco"),a(),r(9,"th"),d(10),c(11,"transloco"),a()()(),r(12,"tbody"),S(13,we,9,3,"tr",null,be),a()()),o&2){_();let e=Y(2);i(4),s(u(5,3,"auditLog.detail.field")),i(3),s(u(8,5,"auditLog.detail.oldValue")),i(3),s(u(11,7,"auditLog.detail.newValue")),i(3),P(e)}}function Ee(o,p){if(o&1&&(r(0,"tr",32)(1,"td",33),K(2),b(3,Pe,3,3,"p",34)(4,Le,15,9,"table",35),a()()),o&2){let e=_().$implicit;i(2);let n=W(_(2).parseFieldDiffs(e));i(),C(n.length===0?3:4)}}function Ie(o,p){if(o&1){let e=D();r(0,"tr",23),x("click",function(){let t=M(e).$implicit,l=_(2);return O(l.toggleExpand(t.id))}),r(1,"td",24)(2,"button",25),x("click",function(t){let l=M(e).$implicit,m=_(2);return t.stopPropagation(),O(m.toggleExpand(l.id))}),r(3,"i",26),d(4),a()()(),r(5,"td",27),d(6),c(7,"date"),a(),r(8,"td")(9,"span",28),d(10),a(),r(11,"span",29),d(12),a()(),r(13,"td")(14,"span",30),d(15),a()(),r(16,"td"),d(17),a(),r(18,"td",31),d(19),a()(),b(20,Ee,5,2,"tr",32)}if(o&2){let e=p.$implicit,n=_(2);R("expanded",n.isExpanded(e.id)),i(2),q("aria-expanded",n.isExpanded(e.id))("aria-label",n.expandAriaLabel()),i(2),v(" ",n.isExpanded(e.id)?"expand_less":"expand_more"," "),i(2),s(T(7,15,e.changedAt,"medium")),i(4),s(e.entityType),i(),h("title",e.entityId),i(),s(e.entityId),i(2),J(n.actionClass(e.action)),i(),s(e.action),i(2),s(n.resolveUser(e.changedBy)),i(2),s(n.summarize(e)),i(),C(n.isExpanded(e.id)?20:-1)}}function Te(o,p){if(o&1&&(r(0,"table",20)(1,"thead")(2,"tr"),k(3,"th",22),r(4,"th"),d(5),c(6,"transloco"),a(),r(7,"th"),d(8),c(9,"transloco"),a(),r(10,"th"),d(11),c(12,"transloco"),a(),r(13,"th"),d(14),c(15,"transloco"),a(),r(16,"th"),d(17),c(18,"transloco"),a()()(),r(19,"tbody"),S(20,Ie,21,18,null,null,he),a()()),o&2){let e=_();i(5),s(u(6,5,"auditLog.colWhen")),i(3),s(u(9,7,"auditLog.colEntity")),i(3),s(u(12,9,"auditLog.colAction")),i(3),s(u(15,11,"auditLog.colChangedBy")),i(3),s(u(18,13,"auditLog.colSummary")),i(3),P(e.items())}}function Ae(o,p){if(o&1){let e=D();r(0,"div",21)(1,"span",41),d(2),c(3,"transloco"),a(),r(4,"div",42)(5,"button",16),x("click",function(){M(e);let t=_();return O(t.prevPage())}),d(6),c(7,"transloco"),a(),r(8,"span",43),d(9),c(10,"transloco"),a(),r(11,"button",16),x("click",function(){M(e);let t=_();return O(t.nextPage())}),d(12),c(13,"transloco"),a()()()}if(o&2){let e=_();i(2),s(T(3,6,"auditLog.paginationShowing",Q(16,xe,e.rangeStart(),e.rangeEnd(),e.totalCount()))),i(3),h("disabled",e.page()<=1||e.loading()),i(),v(" ",u
1(7,9,"auditLog.previous")," "),i(3),s(T(10,11,"auditLog.pageOf",G(20,ye,e.page(),e.totalPages()))),i(2),h("disabled",e.page()>=e.totalPages()||e.loading()),i(),v(" ",u(13,14,"auditLog.next")," ")}}var tt=(()=>{class o{constructor(){this.api=y(fe),this.authService=y(re),this.orgUserService=y(ge),this.transloco=y(ne),this.destroyRef=y($),this.loadTrigger$=new F,this.auditLogTitle=A(this.transloco.selectTranslate("auditLog.title"),{initialValue:"Audit Log"}),this.auditLogSubtitle=A(this.transloco.selectTranslate("auditLog.subtitle"),{initialValue:"Review who changed what and when across your organization"}),this.expandAriaLabel=A(this.transloco.selectTranslate("auditLog.detail.expandAriaLabel"),{initialValue:""}),this.entityType=f(""),this.userId=f(""),this.fromDate=f(""),this.toDate=f(""),this.appliedFilters=f({entityType:"",userId:"",fromDate:"",toDate:""}),this.page=f(1),this.pageSize=f(50),this.totalCount=f(0),this.items=f([]),this.loading=f(!1),this.errorMessage=f(""),this.expandedIds=f(new Set),this.userNames=f(new Map),this.entityTypeOptions=["Customer","Project","Task","SubTask","TimeReport","Invoice","OrganizationUser","UserPermissionChange","FinancialOperation"],this.userOptions=w(()=>Array.from(this.userNames().entries()).map(([e,n])=>({id:e,name:n})).sort((e,n)=>e.name.localeCompare(n.name))),this.totalPages=w(()=>Math.max(1,Math.ceil(this.totalCount()/this.pageSize()))),this.rangeStart=w(()=>this.totalCount()===0?0:(this.page()-1)*this.pageSize()+1),this.rangeEnd=w(()=>Math.min(this.page()*this.pageSize(),this.totalCount()))}ngOnInit(){this.loadTrigger$.pipe(j(()=>{this.loading.set(!0),this.errorMessage.set(""),this.expandedIds.set(new Set);let e={entityType:this.entityType(),userId:this.userId(),fromDate:this.fromDate(),toDate:this.toDate()},n={entityType:e.entityType||void 0,userId:e.userId||void 0,fromDate:e.fromDate||void 0,toDate:e.toDate||void 0,page:this.page(),pageSize:this.pageSize()};return this.api.getAuditLogs(n).pipe(E(t=>({response:t,filterSnapshot:e})),I(()=>(this.loading.set(!1),this.errorMessage.set(this.transloco.translate("auditLog.errorLoadFailed")),z)))}),V(this.destroyRef)).subscribe(({response:e,filterSnapshot:n})=>{this.loading.set(!1),e.success&&e.data?(this.items.set(e.data.items??[]),this.totalCount.set(e.data.totalCount??0),this.appliedFilters.set(n)):(this.items.set([]),this.totalCount.set(0),this.appliedFilters.set(n),this.errorMessage.set(e.errorMessage||this.transloco.translate("auditLog.errorLoadFailed")))}),this.loadUserNames(),this.load()}applyFilters(){this.page.set(1),this.load()}resetFilters(){this.entityType.set(""),this.userId.set(""),this.fromDate.set(""),this.toDate.set(""),this.page.set(1),this.load()}hasActiveFilters(){let e=this.appliedFilters();return!!(e.entityType||e.userId||e.fromDate||e.toDate)}prevPage(){this.page()>1&&(this.page.update(e=>e-1),this.load())}nextPage(){this.page()<this.totalPages()&&(this.page.update(e=>e+1),this.load())}resolveUser(e){return e?this.userNames().get(e)??e:"\u2014"}actionClass(e){let n=(e||"").toLowerCase();return n.includes("create")?"action-create":n.includes("delete")?"action-delete":n.includes("update")||n.includes("change")?"action-update":""}isExpanded(e){return this.expandedIds().has(e)}toggleExpand(e){this.expandedIds.update(n=>{let t=new Set(n);return t.has(e)?t.delete(e):t.add(e),t})}parseFieldDiffs(e){if(!e.changes)return[];try{let n=JSON.parse(e.changes),t=n?.old,l=n?.new;if(this.isPlainObject(t)&&this.isPlainObject(l))return Array.from(new Set([...Object.keys(t),...Object.keys(l)])).filter(g=>!this.deepEqual(t[g],l[g])).map(g=>({field:g,oldValue:this.formatValue(t[g]),newValue:this.formatValue(l[g])}));if(t==null&&this.isPlainObject(l))return Object.entries(l).map(([m,g])=>({field:m,oldValue:"\u2205",newValue:this.formatValue(g)}));if(this.isPlainObject(t)&&l==null)return Object.entries(t).map(([m,g])=>({field:m,oldValue:this.formatValue(g),newValue:"\u2205"}));if(t!=null||l!=null)return[{field:"value",oldValue:this.formatValue(t),newValue:this.formatValue(l)}]}catch{}return[]}summarize(e){if(!e.changes)return"\u2014";try{let n=JSON.parse(e.changes),t=n?.old,l=n?.new;if(this.isPlainObject(t)&&this.isPlainObject(l)){let m=new Set([...Object.keys(t),...Object.keys(l)]),g=Array.from(m).filter(L=>!this.deepEqual(t[L],l[L]));if(g.length>0){let L=`${g.slice(0,6).join(", ")}${g.length>6?"\u2026":""}`;return this.transloco.translate("auditLog.summaryChanged",{fields:L})}}if((t!=null||l!=null)&&!this.isPlainObject(t)&&!this.isPlainObject(l)){let m=t==null?"\u2205":String(t),g=l==null?"\u2205":String(l);return`${m} \u2192 ${g}`}if(t==null&&this.isPlainObject(l))return this.transloco.translate("auditLog.summaryCreated",{count:Object.keys(l).length})}catch{}return e.changes.length>120?e.changes.slice(0,120)+"\u2026":e.changes}load(){this.loadTrigger$.next()}
1loadUserNames(){let e=this.authService.getOrganizationId();e&&this.orgUserService.getAllOrganizationUsers(e).pipe(V(this.destroyRef)).subscribe(n=>{if(n.success&&n.data){let t=new Map;for(let l of n.data){if(!l.userId)continue;let m=[l.firstname,l.lastname].filter(Boolean).join(" ").trim();t.set(l.userId,m||l.email||l.userId)}this.userNames.set(t)}})}formatValue(e){if(e==null)return"\u2205";if(typeof e=="string")return e||"(empty)";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number")return String(e);try{return JSON.stringify(e)}catch{return String(e)}}isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}deepEqual(e,n){return JSON.stringify(e)===JSON.stringify(n)}static{this.\u0275fac=function(n){return new(n||o)}}static{this.\u0275cmp=U({type:o,selectors:[["app-audit-log"]],decls:46,vars:36,consts:[[1,"audit-page"],["icon","history",3,"title","subtitle","showDescription"],[1,"filters","card"],[1,"filter-field"],["for","al-entity-type",1,"filter-label"],["id","al-entity-type",1,"filter-input",3,"ngModelChange","ngModel"],["value",""],[3,"value"],["for","al-user",1,"filter-label"],["id","al-user",1,"filter-input",3,"ngModelChange","ngModel"],["for","al-from",1,"filter-label"],["id","al-from","type","date",1,"filter-input",3,"ngModelChange","ngModel"],["for","al-to",1,"filter-label"],["id","al-to","type","date",1,"filter-input",3,"ngModelChange","ngModel"],[1,"filter-actions"],["type","button",1,"btn-primary",3,"click","disabled"],["type","button",1,"btn-secondary",3,"click","disabled"],[1,"alert-error","card"],[1,"table-wrap","card"],[1,"state-msg"],[1,"audit-table"],[1,"pagination"],["aria-label","",1,"expand-col"],[1,"summary-row",3,"click"],[1,"expand-col"],["type","button",1,"expand-btn",3,"click"],["aria-hidden","true",1,"material-icons","expand-icon"],[1,"nowrap"],[1,"entity-type"],[1,"entity-id",3,"title"],[1,"action-chip"],[1,"summary-cell"],[1,"detail-row"],["colspan","6",1,"detail-cell"],[1,"detail-empty"],[1,"diff-table"],[1,"diff-field"],[1,"diff-old"],[1,"diff-val"],[1,"diff-new"],[1,"diff-val","diff-val-new"],[1,"page-info"],[1,"page-controls"],[1,"page-num"]],template:function(n,t){n&1&&(r(0,"div",0),k(1,"app-page-header",1),r(2,"div",2)(3,"div",3)(4,"label",4),d(5),c(6,"transloco"),a(),r(7,"select",5),x("ngModelChange",function(m){return t.entityType.set(m)}),r(8,"option",6),d(9),c(10,"transloco"),a(),S(11,Ce,2,2,"option",7,H),a()(),r(13,"div",3)(14,"label",8),d(15),c(16,"transloco"),a(),r(17,"select",9),x("ngModelChange",function(m){return t.userId.set(m)}),r(18,"option",6),d(19),c(20,"transloco"),a(),S(21,ve,2,2,"option",7,he),a()(),r(23,"div",3)(24,"label",10),d(25),c(26,"transloco"),a(),r(27,"input",11),x("ngModelChange",function(m){return t.fromDate.set(m)}),a()(),r(28,"div",3)(29,"label",12),d(30),c(31,"transloco"),a(),r(32,"input",13),x("ngModelChange",function(m){return t.toDate.set(m)}),a()(),r(33,"div",14)(34,"button",15),x("click",function(){return t.applyFilters()}),d(35),c(36,"transloco"),a(),r(37,"button",16),x("click",function(){return t.resetFilters()}),d(38),c(39,"transloco"),a()()(),b(40,Me,2,1,"div",17),r(41,"div",18),b(42,Oe,3,3,"div",19)(43,Se,3,3,"div",19)(44,Te,22,15,"table",20),a(),b(45,Ae,14,23,"div",21),a()),n&2&&(i(),h("title",t.auditLogTitle())("subtitle",t.auditLogSubtitle())("showDescription",!1),i(4),s(u(6,20,"auditLog.filterEntityType")),i(2),h("ngModel",t.entityType()),i(2),s(u(10,22,"auditLog.filterAllTypes")),i(2),P(t.entityTypeOptions),i(4),s(u(16,24,"auditLog.filterUser")),i(2),h("ngModel",t.userId()),i(2),s(u(20,26,"auditLog.filterAllUsers")),i(2),P(t.userOptions()),i(4),s(u(26,28,"auditLog.filterFrom")),i(2),h("ngModel",t.fromDate()),i(3),s(u(31,30,"auditLog.filterTo")),i(2),h("ngModel",t.toDate()),i(2),h("disabled",t.loading()),i(),v(" ",u(36,32,"auditLog.apply")," "),i(2),h("disabled",t.loading()),i(),v(" ",u(39,34,"common.reset")," "),i(2),C(t.errorMessage()?40:-1),i(2),C(t.loading()?42:t.items().length===0?43:44),i(3),C(t.totalCount()>0?45:-1))},dependencies:[Z,X,me,ce,pe,ae,se,le,de,ue,oe],styles:['@charset "UTF-8";.audit-page[_ngcontent-%COMP%]{padding:1.5rem;max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:1.25rem}.card[_ngcontent-%COMP%]{background:var(--color-surface-tertiary);border:1px solid var(--color-border-light);border-radius:.75rem}.filters[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-end;padding:1rem 1.25rem}.filter-field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;min-width:160px}.filter-label[_ngcontent-%COMP%]{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary)}.filter-input[_ngcontent-%COMP%]{padding:.5rem .65rem;border-radius:.5rem;border:1px solid var(--color-border-medium);background:var(--color-surface-quaternary);color:var(--color-text-primary);font-size:.85rem}.filter-input[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--color-primary)}.filter-actions[_ngcontent-%COMP%]{display:flex;gap:.5rem;align-items:flex-end}.btn-primary[_ngcontent-%COMP%]{padding:.5rem 1.1rem;border-radius:.5rem;border:none;background:var(--color-primary);color:#fff;font-size:.85rem;font-weight:600;cursor:pointer}.btn-primary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[_ngcontent-%COMP%]{padding:.5rem 1.1rem;border-radius:.5rem;border:1px solid var(--color-border-medium);background:var(--color-surface-quaternary);color:var(--color-text-secondary);font-size:.85rem;font-weight:600;cursor:pointer}.btn-secondary[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed}.alert-error[_ngcontent-%COMP%]{padding:.85rem 1.1rem;color:var(--color-error, #ef4444);border-color:var(--color-error, #ef4444);font-size:.85rem}.table-wrap[_ngcontent-%COMP%]{overflow-x:auto;padding:0}.state-msg[_ngcontent-%COMP%]{padding:2rem 1.25rem;text-align:center;color:var(--color-text-tertiary);font-size:.9rem}.audit-table[_ngcontent-%COMP%]{width:100%;min-width:700px;border-collapse:collapse;font-size:.85rem}.audit-table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{text-align:start;padding:.75rem 1rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary);border-bottom:1px solid var(--color-border-light);background:var(--color-surface-quaternary)}.audit-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:.7rem 1rem;border-bottom:1px solid var(--color-border-light);color:var(--color-text-secondary);vertical-align:top}.audit-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%]{border-bottom:none}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.entity-type[_ngcontent-%COMP%]{display:block;font-weight:600;color:var(--color-text-primary)}.entity-id[_ngcontent-%COMP%]{display:block;font-size:.72rem;color:var(--color-text-quaternary);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.action-chip[_ngcontent-%COMP%]{display:inline-block;border-radius:9999px;padding:2px 10px;font-size:.72rem;font-weight:600;background:var(--color-surface-quaternary);color:var(--color-text-secondary);border:1px solid var(--color-border-light)}.action-create[_ngcontent-%COMP%]{background:var(--color-success-alpha-20, rgba(34, 197, 94, .15));color:var(--color-success, #22c55e);border-color:transparent}.action-update[_ngcontent-%COMP%]{background:var(--color-info-alpha-20, rgba(59, 130, 246, .15));color:var(--color-info, #3b82f6);border-color:transparent}
1.action-delete[_ngcontent-%COMP%]{background:var(--color-error-alpha-20, rgba(239, 68, 68, .15));color:var(--color-error, #ef4444);border-color:transparent}.summary-cell[_ngcontent-%COMP%]{max-width:360px;color:var(--color-text-tertiary);font-size:.8rem;word-break:break-word}.pagination[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem}.page-info[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-tertiary)}.page-controls[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.page-num[_ngcontent-%COMP%]{font-size:.82rem;color:var(--color-text-secondary)}.expand-col[_ngcontent-%COMP%]{width:36px;text-align:center;padding-inline:.3rem!important}.expand-icon[_ngcontent-%COMP%]{font-size:18px;color:var(--color-text-tertiary);vertical-align:middle;transition:transform .15s ease}.summary-row[_ngcontent-%COMP%]{cursor:pointer;-webkit-user-select:none;user-select:none}.expand-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;padding:2px;background:transparent;border:none;cursor:pointer;color:inherit;border-radius:4px;outline:none}.expand-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.summary-row[_ngcontent-%COMP%]:hover   td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 5%,var(--color-surface-tertiary))}.summary-row.expanded[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface-tertiary));border-bottom-color:transparent}.detail-row[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:0!important;border-bottom:1px solid var(--color-border-light)}.detail-cell[_ngcontent-%COMP%]{padding:.75rem 1.25rem 1rem 2.5rem!important;background:color-mix(in srgb,var(--color-primary) 4%,var(--color-surface-primary))}.detail-empty[_ngcontent-%COMP%]{font-size:.8rem;color:var(--color-text-quaternary);margin:0}.diff-table[_ngcontent-%COMP%]{border-collapse:collapse;font-size:.8rem;min-width:340px}.diff-table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{text-align:start;padding:.35rem .75rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary);border-bottom:1px solid var(--color-border-light);background:transparent}.diff-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:.3rem .75rem;border-bottom:1px solid var(--color-border-light);color:var(--color-text-secondary);vertical-align:top}.diff-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%]{border-bottom:none}.diff-field[_ngcontent-%COMP%]{font-weight:600;color:var(--color-text-primary);white-space:nowrap;width:180px}.diff-val[_ngcontent-%COMP%]{display:inline-block;font-family:ui-monospace,Cascadia Code,monospace;font-size:.75rem;padding:.1rem .4rem;border-radius:.25rem;background:color-mix(in srgb,var(--color-error) 8%,var(--color-surface-quaternary));color:var(--color-text-secondary);word-break:break-all}.diff-val-new[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--color-success) 8%,var(--color-surface-quaternary))}'],changeDetection:0})}}return o})();export{tt as AuditLogComponent};

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.