PageSourceSearch

https://prod.mechai.app/chunk-YF5TWR7W.js

js mechai.app collected 2026-10-02 15:23:24 UTC 11,930 bytes, 1 lines download raw bytes

1import{a as U}from"./chunk-7UQHOJYQ.js";import{a as q}from"./chunk-Q3U3JSJ2.js";import{a as j}from"./chunk-XF5DBVKI.js";import{a as W}from"./chunk-KGTPPFRX.js";import{ja as K}from"./chunk-VRKJBTE4.js";import{a as E,j as N}from"./chunk-ZT7BF6R4.js";import"./chunk-GNOMKHH2.js";import"./chunk-MIYW5325.js";import"./chunk-FJFH4XCE.js";import{p as D,q as $,r as z,s as G}from"./chunk-T52FVTMS.js";import"./chunk-4I6Y24VE.js";import"./chunk-VHBEXHUY.js";import"./chunk-IXNXTOPZ.js";import"./chunk-GGY6QDTV.js";import"./chunk-3WQEZLC2.js";import"./chunk-DB7AUQFG.js";import"./chunk-GLFTJW2T.js";import"./chunk-BHLMCFFK.js";import"./chunk-NP4PC25X.js";import"./chunk-D6IOGJMO.js";import{m as Y}from"./chunk-MKJMCBBH.js";import"./chunk-KKDZHWJ2.js";import"./chunk-RS4X3CMD.js";import"./chunk-7DHSGR33.js";import{i as B}from"./chunk-4KDBBJRG.js";import"./chunk-3SEIXLDK.js";import{c as F,d as R}from"./chunk-UIEAU6S2.js";import{j as L,k as M,l as P,x as A}from"./chunk-H3Y6JSWE.js";import{Hb as I,Oc as T,Rb as s,Sb as o,Tb as r,Ub as y,Uc as c,Vc as h,Wc as w,Yb as b,Zb as S,bc as H,db as i,ga as f,gc as g,ic as d,kd as O,oa as u,pa as C,sb as k,uc as V,wc as a,xc as m,yb as _,yc as v}from"./chunk-AHLRJ2EW.js";import"./chunk-AMJ4GB2S.js";import"./chunk-OXDKANHF.js";import"./chunk-WGJEEJGF.js";import"./chunk-6ACFICIG.js";import"./chunk-K7BHMZHH.js";import"./chunk-FE7444LI.js";import"./chunk-XUHYVR5R.js";var J=t=>({vehicle:t});function Q(t,p){if(t&1&&(o(0,"p",8),a(1),c(2,"translate"),r()),t&2){let e=d();i(),v(" ",w(2,1,"V2.VEHICLE_HEALTH.HISTORY.SCOPED_TO",T(4,J,e.vehicleLabel))," ")}}function X(t,p){if(t&1){let e=H();o(0,"div",9)(1,"mat-icon"),a(2,"workspace_premium"),r(),o(3,"h3"),a(4),c(5,"translate"),r(),o(6,"p"),a(7),c(8,"translate"),r(),o(9,"button",10),g("click",function(){u(e);let l=d();return C(l.upgrade())}),a(10),c(11,"translate"),r()()}t&2&&(i(4),m(h(5,3,"V2.VEHICLE_HEALTH.HISTORY.LOCKED_TITLE")),i(3),m(h(8,5,"V2.VEHICLE_HEALTH.HISTORY.LOCKED_DESC")),i(3),v(" ",h(11,7,"V2.VEHICLE_HEALTH.HISTORY.UPGRADE")," "))}function Z(t,p){t&1&&(o(0,"div",17),y(1,"span",18),o(2,"div",19)(3,"div",20),y(4,"span",21)(5,"span",22),r(),y(6,"span",23),r()())}function ee(t,p){if(t&1&&(o(0,"div",15),_(1,Z,7,0,"div",16),r()),t&2){let e=d(2);i(),s("ngForOf",e.skeletonRows)}}function te(t,p){t&1&&(o(0,"p",24),a(1),c(2,"translate"),r()),t&2&&(i(),v(" ",h(2,1,"V2.VEHICLE_HEALTH.REPORT.ANALYSIS_FAILED")," "))}function ie(t,p){t&1&&(o(0,"p",24),a(1),c(2,"translate"),r()),t&2&&(i(),v(" ",h(2,1,"V2.VEHICLE_HEALTH.HISTORY.EMPTY")," "))}function ne(t,p){if(t&1){let e=H();o(0,"div",27)(1,"button",28),g("click",function(){let l=u(e).$implicit,x=d(3);return C(x.toggleSelect(l.id))}),o(2,"mat-icon"),a(3),r()(),o(4,"div",19)(5,"div",20)(6,"span",29),a(7),r(),o(8,"span",30),a(9),r()(),o(10,"div",31)(11,"span"),a(12),r(),o(13,"span",32),a(14,"\u2022"),r(),o(15,"span"),a(16),c(17,"translate"),r()()(),o(18,"button",33),g("click",function(){let l=u(e).$implicit,x=d(3);return C(x.view(l.id))}),a(19),c(20,"translate"),r()()}if(t&2){let e=p.$implicit,n=d(3);V("vhh-row--sel",n.selected.has(e.id)),i(),I("aria-label",n.label(e))("aria-pressed",n.selected.has(e.id)),i(2),m(n.selected.has(e.id)?"check_box":"check_box_outline_blank"),i(4),m(n.label(e)),i(),s("ngClass",n.scoreClass(e.healthScore)),i(),v(" ",e.healthScore," "),i(3),m(n.formatWhen(e.createTime)),i(4),m(h(17,11,n.safetyKey(e))),i(3),v(" ",h(20,13,"V2.VEHICLE_HEALTH.HISTORY.VIEW")," ")}}function re(t,p){if(t&1&&(o(0,"div",25),_(1,ne,21,15,"div",26),r()),t&2){let e=d(2);i(),s("ngForOf",e.items)("ngForTrackBy",e.trackById)}}function oe(t,p){if(t&1){let e=H();o(0,"div",38)(1,"div",19)(2,"div",20)(3,"span",29),a(4),r(),o(5,"span",30),a(6),r()(),o(7,"div",31)(8,"span"),a(9),r(),o(10,"span",32),a(11,"\u2022"),r(),o(12,"span"),a(13),c(14,"translate"),r()()(),o(15,"button",33),g("click",function(){let l=u(e).$implicit,x=d(3);return C(x.view(l.id))}),a(16),c(17,"translate"),r()()}if(t&2){let e=p.$implicit,n=d(3);i(4),m(n.label(e)),i(),s("ngClass",n.scoreClass(e.healthScore)),i(),v(" ",e.healthScore," "),i(3),m(n.formatWhen(e.createTime)),i(4),m(h(14,6,n.safetyKey(e))),i(3),v(" ",h(17,8,"V2.VEHICLE_HEALTH.HISTORY.VIEW")," ")}}function ae(t,p){if(t&1&&(o(0,"div",34)(1,"h3",35),a(2),c(3,"translate"),r(),o(4,"p",36),a(5),c(6,"translate"),r(),o(7,"div",25),_(8,oe,18,10,"div",37),r()()),t&2){let e=d(2);i(2),m(h(3,4,"V2.VEHICLE_HEALTH.HISTORY.LEGACY_TITLE")),i(3),m(h(6,6,"V2.VEHICLE_HEALTH.HISTORY.LEGACY_DESC")),i(3),s("ngForOf",e.legacyItems)("ngForTrackBy",e.trackById)}}function le(t,p){if(t&1&&(b(0),_(1,ee,2,1,"div",11)(2,te,3,3,"p",12)(3,ie,3,3,"p",12)(4,re,2,2,"div",13)(5,ae,9,8,"div",14),S()),t&2){let e=d();i(),s("ngIf",e.loading),i(),s("ngIf",!e.loading&&e.error),i(),s("ngIf",!e.loading&&!e.error&&!e.items.length),i(),s("ngIf",!e.loading&&!e.error),i(),s("ngIf",!e.loading&&e.legacyItems.length)}}function ce(t,p){if(t&1){let e=H();o(0,"div",39)(1,"button",10),g("click",function(){u(e);let l=d();return C(l.compare())}),o(2,"mat-icon"),a(3,"compare_arrows"),r(),a(4),c(5,"translate"),r()()}t&2&&(i(4),v(" ",h(5,1,"V2.VEHICLE_HEALTH.HISTORY.COMPARE")," "))}var Te=(()=>{class t{constructor(){this.api=f(j),this.router=f(B),this.store=f(Y),this.cdr=f(O),this.activeVehicle=f(W),this.locked=!1,this.loading=!0,this.error=!1,this.items=[],this.legacyItems=[],this.selected=new Set,this.vehicleLabel="",this.skeletonRows=[0,1,2,3],this.fetchGen=0}ngOnInit(){let e=this.store.selectSnapshot(K.currentProduct),n=N(e?.entitlementName??"free");if(this.locked=E[n]<E.MECHANIC,this.locked){this.loading=!1;return}this.fetchLegacy(),this.vehicleSub=this.activeVehicle.activeCar$.subscribe(l=>{this.vehicleLabel=l?`${l.year} ${l.brand} ${l.name}`.trim():"",this.fetchScoped(l?.id??null)})}ngOnDestroy(){this.vehicleSub?.unsubscribe()}fetchScoped(e){let n=++this.fetchGen;if(this.items=[],this.selected.clear(),this.error=!1,e==null){this.loading=!1,this.cdr.markForCheck();return}this.loading=!0,this.cdr.markForCheck(),this.api.getHistory({garageCarId:e}).subscribe({next:l=>{n===this.fetchGen&&(this.items=l,this.error=!1,this.loading=!1,this.cdr.markForCheck())},error:()=>{n===this.fetchGen&&(this.error=!0,this.loading=!1,this.cdr.markForCheck())}})}fetchLegacy(){this.api.getHistory({limit:50}).subscribe({next:e=>{this.legacyItems=e.filter(n=>n.garageCarId==null),this.cdr.markForCheck()},error:()=>{}})}label(e){return`${e.year} ${e.make} ${e.model}`.trim()}formatWhen(e){return q(e,void 0,{dateStyle:"medium",timeStyle:"short"})}scoreClass(e){return U(e)}safetyKey(e){return`V2.VEHICLE_HEALTH.SAFETY.${e.safetyStatus}`}toggleSelect(e){if(this.selected.has(e))this.selected.delete(e);else{if(this.selected.size>=2){let n=this.selected.values().next().value;this.selected.delete(n)}this.selected.add(e)}}get canCompare(){return this.selected.size===2}view(e){this.router.navigate(["/v2/mech-care/health/report",e])}compare(){let[e,n]=[...this.selected];this.router.navigate(["/v2/mech-care/health/compare"],{queryParams:{a:e,b:n}})}trackById(e,n){return n.id}back(){this.router.navigate(["/v2/mech-care/health"])}upgrade(){this.router.navigate(["/v2/subscription"],{queryParams:{src:"vehicle_health_gate"}})}static{this.\u0275fac=function(n){return new(n||t)}}static{this.\u0275cmp=k({type:t,selectors:[["app-vehicle-health-history"]],decls:14,vars:10,consts:[[1,"vhh"],[1,"vhh-head"],["mat-button","",3,"click"],[1,"vhh-title"],["class","vhh-scope",4,"ngIf"],["class","vhh-locked",4,"ngIf"],[4,"ngIf"],["class","vhh-compare-bar",4,"ngIf"],[1,"vhh-scope"],[1,"vhh-locked"],["mat-flat-button","","color","primary",3,"click"],["class","vhh-list","aria-hidden","true",4,"ngIf"],["class","vhh-muted",4,"ngIf"],["class","vhh-list",4,"ngIf"],["class","vhh-legacy",4,"ngIf"],["aria-hidden","true",1,"vhh-list"],["class","vhh-row vhh-row--skeleton",4,"ngFor","ngForOf"],[1,"vhh-row","vhh-row--skeleton"],[1,"vhh-skel","vhh-skel--check"],[1,"vhh-row-main"],[1,"vhh-row-top"],[1,"vhh-skel","vhh-skel--vehicle"],[1,"vhh-skel","vhh-skel--score"],[1,"vhh-skel","vhh-skel--sub"],[1,"vhh-muted"],[1,"vhh-list"],["class","vhh-row",3,"vhh-row--sel",4,"ngFor","ngForOf","ngForTrackBy"],[1,"vhh-row"],["type","button",1,"vhh-check",3,"click"],[1,"vhh-vehicle"],[1,"vhh-score",3,"ngClass"],[1,"vhh-row-sub"],[1,"vhh-dot"],["mat-button","",1,"vhh-view",3,"click"],[1,"vhh-legacy"],[1,"vhh-legacy-title"],[1,"vhh-muted","vhh-legacy-desc"],["class","vhh-row vhh-row--legacy",4,"ngFor","ngForOf","ngForTrackBy"],[1,"vhh-row","vhh-row--legacy"],[1,"vhh-compare-bar"]],template:function(n,l){n&1&&(o(0,"div",0)(1,"div",1)(2,"button",2),g("click",function(){return l.back()}),o(3,"mat-icon"),a(4,"arrow_back"),r(),a(5),c(6,"translate"),r(),o(7,"h2",3),a(8),c(9,"translate"),r(),_(10,Q,3,6,"p",4),r(),_(11,X,12,9,"div",5)(12,le,6,5,"ng-container",6)(13,ce,6,3,"div",7),r()
1),n&2&&(i(5),v(" ",h(6,6,"V2.VEHICLE_HEALTH.HISTORY.BACK")," "),i(3),m(h(9,8,"V2.VEHICLE_HEALTH.HISTORY.TITLE")),i(2),s("ngIf",!l.locked&&l.vehicleLabel),i(),s("ngIf",l.locked),i(),s("ngIf",!l.locked),i(),s("ngIf",!l.locked&&l.canCompare))},dependencies:[A,L,M,P,$,D,G,z,R,F],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:block}.vhh[_ngcontent-%COMP%]{max-width:760px;margin:0 auto;padding:16px}.vhh-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;margin-bottom:16px}.vhh-title[_ngcontent-%COMP%]{font-size:20px;font-weight:800;color:var(--color-text);margin:0}.vhh-muted[_ngcontent-%COMP%]{color:var(--color-text-secondary);font-size:14px;text-align:center;padding:24px 0}.vhh-locked[_ngcontent-%COMP%]{text-align:center;padding:48px 24px;border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface)}.vhh-locked[_ngcontent-%COMP%]   mat-icon[_ngcontent-%COMP%]{font-size:40px;width:40px;height:40px;color:var(--color-primary)}.vhh-locked[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{font-size:18px;font-weight:700;margin:12px 0 6px;color:var(--color-text)}.vhh-locked[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{font-size:14px;color:var(--color-text-secondary);max-width:380px;margin:0 auto 20px;line-height:1.5}.vhh-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.vhh-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px 14px;border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface)}.vhh-row--sel[_ngcontent-%COMP%]{border-color:var(--color-primary);background:var(--color-primary-50)}.vhh-check[_ngcontent-%COMP%]{background:none;border:none;cursor:pointer;padding:0;color:var(--color-primary);display:flex}.vhh-row-main[_ngcontent-%COMP%]{flex:1;min-width:0}.vhh-row-top[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.vhh-vehicle[_ngcontent-%COMP%]{font-size:14px;font-weight:700;color:var(--color-text)}.vhh-score[_ngcontent-%COMP%]{font-size:16px;font-weight:800}.vhh-row-sub[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;margin-top:2px;font-size:12px;color:var(--color-text-secondary)}.vhh-dot[_ngcontent-%COMP%]{opacity:.5}.vhh-compare-bar[_ngcontent-%COMP%]{position:sticky;bottom:16px;display:flex;justify-content:center;margin-top:16px}.vhh-row--skeleton[_ngcontent-%COMP%]{pointer-events:none}.vhh-skel[_ngcontent-%COMP%]{display:block;border-radius:6px;background:linear-gradient(90deg,var(--color-surface-2) 25%,var(--color-border) 37%,var(--color-surface-2) 63%);background-size:400% 100%;animation:_ngcontent-%COMP%_vhh-shimmer 1.6s ease-in-out infinite}.vhh-skel--check[_ngcontent-%COMP%]{width:20px;height:20px;border-radius:4px;flex-shrink:0}.vhh-skel--vehicle[_ngcontent-%COMP%]{width:45%;height:14px}.vhh-skel--score[_ngcontent-%COMP%]{width:28px;height:16px}.vhh-skel--sub[_ngcontent-%COMP%]{width:60%;height:12px;margin-top:8px}@keyframes _ngcontent-%COMP%_vhh-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}'],changeDetection:0})}}return t})();export{Te as VehicleHealthHistoryComponent};

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.