PageSourceSearch

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

js mechai.app collected 2026-09-25 03:06:33 UTC 10,178 bytes, 1 lines download raw bytes

1import{a as H}from"./chunk-PWV4NCB4.js";import{a as R}from"./chunk-YG3AKGRB.js";import{a as U}from"./chunk-Z42HM3N4.js";import"./chunk-5A7JM4WP.js";import{a as C}from"./chunk-ZQ2CJXMC.js";import"./chunk-Y4ZGSY2R.js";import"./chunk-ENDAT2WW.js";import"./chunk-KBSSFVI3.js";import"./chunk-N6RRKPMH.js";import"./chunk-FJFH4XCE.js";import"./chunk-RWQTLYTV.js";import"./chunk-L7WATY32.js";import"./chunk-2RDPNIM6.js";import"./chunk-XPR5ELEW.js";import"./chunk-GGY6QDTV.js";import"./chunk-5IJU7MQ2.js";import"./chunk-LM6BYTWK.js";import"./chunk-ZWZG7L3J.js";import"./chunk-UXZT3DCY.js";import"./chunk-ECXCM7JU.js";import"./chunk-7DHSGR33.js";import"./chunk-QO327RTO.js";import"./chunk-4MYWE7CD.js";import"./chunk-RS4X3CMD.js";import{i as F}from"./chunk-EWPP756Y.js";import"./chunk-I5EQON52.js";import{c as P,d as N}from"./chunk-G6PWMA7J.js";import{Ib as T,Ic as M,Jb as x,Jd as G,Lb as h,Ob as k,Pb as I,Qb as m,Qc as c,Rb as n,Rc as p,Sb as r,Tb as u,ac as y,cc as B,db as a,ec as w,fd as S,mb as b,oa as V,pa as E,qa as g,ra as v,sb as D,sc as d,tc as f,uc as _,vd as A}from"./chunk-IQ6SK2BU.js";import"./chunk-AMJ4GB2S.js";import"./chunk-WGJEEJGF.js";import"./chunk-6ACFICIG.js";import"./chunk-K7BHMZHH.js";import"./chunk-FE7444LI.js";import"./chunk-OXDKANHF.js";import{a as L,b as O}from"./chunk-XUHYVR5R.js";function s(e,i){return e==null||Number.isNaN(e)?"\u2014":i>0?e.toFixed(i):String(Math.round(e))}function z(e){let i="neutral",t=null;return e!=null&&e>0&&(e>6e3?(i="danger",t="V2.OBD.LIVE.FLAG.REDLINE"):e>4500?(i="caution",t="V2.OBD.LIVE.FLAG.HIGH_RPM"):i="good"),{label:"V2.OBD.LIVE.RPM",value:s(e,0),severity:i,flag:t}}function q(e){let i="neutral",t=null;return e!=null&&(e>115?(i="danger",t="V2.OBD.LIVE.FLAG.OVERHEAT"):e>105?(i="caution",t="V2.OBD.LIVE.FLAG.RUNNING_HOT"):e>=50&&(i="good")),{label:"V2.OBD.LIVE.COOLANT",value:s(e,0),severity:i,flag:t}}function X(e){let i="neutral",t=null;return e!=null&&(e>80?(i="danger",t="V2.OBD.LIVE.FLAG.HOT_INTAKE"):e>65?(i="caution",t="V2.OBD.LIVE.FLAG.HOT_INTAKE"):i="good"),{label:"V2.OBD.LIVE.INTAKE_TEMP",value:s(e,0),severity:i,flag:t}}function Y(e){let i="neutral",t=null;return e!=null&&(e<8?(i="danger",t="V2.OBD.LIVE.FLAG.LOW_FUEL"):e<15?(i="caution",t="V2.OBD.LIVE.FLAG.LOW_FUEL"):i="good"),{label:"V2.OBD.LIVE.FUEL",value:s(e,0),severity:i,flag:t}}function J(e){let i="neutral",t=null;return e!=null&&(e<11.8||e>15?(i="danger",t=e<11.8?"V2.OBD.LIVE.FLAG.LOW_VOLTAGE":"V2.OBD.LIVE.FLAG.HIGH_VOLTAGE"):e<12.4||e>14.8?(i="caution",t=e<12.4?"V2.OBD.LIVE.FLAG.LOW_VOLTAGE":"V2.OBD.LIVE.FLAG.HIGH_VOLTAGE"):i="good"),{label:"V2.OBD.LIVE.VOLTAGE",value:s(e,1),severity:i,flag:t}}function j(e){return[z(e.rpm),{label:"V2.OBD.LIVE.SPEED",value:s(e.speedKph,0),severity:"neutral",flag:null},q(e.coolantC),{label:"V2.OBD.LIVE.LOAD",value:s(e.calcLoadPct,0),severity:"neutral",flag:null},{label:"V2.OBD.LIVE.THROTTLE",value:s(e.throttlePct,0),severity:"neutral",flag:null},{label:"V2.OBD.LIVE.INTAKE_MAP",value:s(e.intakeMapKpa,0),severity:"neutral",flag:null},{label:"V2.OBD.LIVE.TIMING",value:s(e.timingAdvanceDeg,0),severity:"neutral",flag:null},{label:"V2.OBD.LIVE.MAF",value:s(e.mafGramsPerSec,1),severity:"neutral",flag:null},X(e.intakeAirTempC),Y(e.fuelLevelPct),J(e.voltage)]}function K(e){switch(e){case"good":return"tw-text-green-600 dark:tw-text-green-400";case"caution":return"tw-text-yellow-600 dark:tw-text-yellow-400";case"danger":return"tw-text-red-600 dark:tw-text-red-500";default:return"tw-text-mech-text"}}function W(e){switch(e){case"caution":return"tw-bg-mech-surface tw-border-yellow-400/70 dark:tw-border-yellow-600/70";case"danger":return"tw-bg-red-50/50 dark:tw-bg-red-950/20 tw-border-red-500/70";default:return"tw-bg-mech-surface tw-border-mech-border"}}function $(e){return e==="danger"?"tw-text-red-700 dark:tw-text-red-300 tw-bg-red-500/10":"tw-text-yellow-700 dark:tw-text-yellow-300 tw-bg-yellow-500/10"}function Q(e,i){e&1&&(n(0,"div",3),g(),n(1,"svg",6),u(2,"path",7),r(),v(),n(3,"p",8),d(4),c(5,"translate"),r()()),e&2&&(a(4),f(p(5,1,"V2.OBD.LIVE.CONNECTING")))}function Z(e,i){e&1&&(n(0,"div",4),g(),n(1,"svg",6),u(2,"path",7),r(),v(),n(3,"p",8),d(4),c(5,"translate"),r()()),e&2&&(a(4),f(p(5,1,"V2.OBD.LIVE.READING")))}function ee(e,i){if(e&1&&(n(0,"div",22)(1,"span",23),d(2,"\u26A0"),r(),d(3),c(4,"translate"),r()),e&2){let t=w().$implicit,o=w(2);
1m("ngClass",o.flagChipClass(t.severity)),a(3),_(" ",p(4,2,t.flag)," ")}}function te(e,i){if(e&1&&(n(0,"div",10)(1,"div",20),d(2),c(3,"translate"),r(),n(4,"div",21),d(5),r(),x(6,ee,5,4,"div",22),r()),e&2){let t=i.$implicit,o=w(2);m("ngClass",o.cardClass(t.severity)),a(2),f(p(3,5,t.label)),a(2),m("ngClass",o.valueColor(t.severity)),a(),_(" ",t.value," "),a(),h(t.flag?6:-1)}}function ie(e,i){if(e&1){let t=y();n(0,"div",9),k(1,te,7,7,"div",10,T().trackByLabel,!0),r(),n(3,"button",11),B("click",function(){V(t);let l=w();return E(l.upgradeRecorder())}),n(4,"span",12),g(),n(5,"svg",13),u(6,"path",14),r()(),v(),n(7,"span",15)(8,"span",16),d(9),c(10,"translate"),r(),n(11,"span",17),d(12),c(13,"translate"),r()(),g(),n(14,"svg",18),u(15,"path",19),r()()}if(e&2){let t=w();a(),I(t.tiles),a(8),f(p(10,2,"V2.OBD.RECORDER.TITLE")),a(3),f(p(13,4,"V2.DEMO.OBD.PRO_HINT"))}}var ge=(()=>{class e{constructor(t,o,l){this.mock=t,this.cdr=o,this.router=l,this.status="disconnected",this.tiles=null,this.dongleName="OBDLink MX+",this.sampleCount=0}ngOnInit(){this.statusSub=this.mock.status$.subscribe(t=>{this.status=t,this.cdr.markForCheck()}),this.mock.connect("demo").then(()=>{this.liveSub=this.mock.liveData$().subscribe(t=>{this.tiles=j(this.warmed(t)),this.sampleCount++,this.cdr.markForCheck()})})}ngOnDestroy(){this.liveSub?.unsubscribe(),this.statusSub?.unsubscribe(),this.mock.disconnect()}warmed(t){if(t.coolantC==null)return t;let o=Math.min(1,this.sampleCount/120);return O(L({},t),{coolantC:Math.round(60+o*(t.coolantC-60))})}cardClass(t){return W(t)}valueColor(t){return K(t)}flagChipClass(t){return $(t)}trackByLabel(t,o){return o.label}upgradeRecorder(){this.router.navigate(["/v2/subscription"],{queryParams:{plan:"mechanic",src:"demo_obd-live-data"}})}static{this.\u0275fac=function(o){return new(o||e)(b(C),b(S),b(F))}}static{this.\u0275cmp=D({type:e,selectors:[["app-obd-live-data-demo"]],features:[M([C])],decls:10,vars:14,consts:[[1,"tw-p-6","sm:tw-p-8","tw-max-w-3xl","tw-mx-auto","tw-w-full","tw-pb-28"],[3,"title","subtitle","showBack","showStatus","status","dongleName"],[1,"tw-flex","tw-justify-center","tw-mb-5"],[1,"tw-flex","tw-flex-col","tw-items-center","tw-text-center","tw-gap-3","tw-p-10","tw-rounded-2xl","tw-bg-mech-surface","tw-border","tw-border-mech-border"],["role","status","aria-live","polite",1,"tw-flex","tw-flex-col","tw-items-center","tw-text-center","tw-gap-3","tw-p-10","tw-rounded-2xl","tw-bg-mech-surface","tw-border","tw-border-mech-border"],["feature","obd-live-data","requiredTier","DIY",3,"showTrialCta"],["aria-hidden","true","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round",1,"tw-w-8","tw-h-8","tw-text-mech-primary","tw-animate-spin"],["d","M21 12a9 9 0 1 1-6.219-8.56"],[1,"tw-text-sm","tw-text-mech-text-muted","tw-m-0"],[1,"tw-grid","tw-grid-cols-2","sm:tw-grid-cols-3","tw-gap-4"],[1,"tw-p-4","tw-rounded-2xl","tw-border","tw-transition-colors",3,"ngClass"],["type","button",1,"pro-lock-row",3,"click"],[1,"pro-lock-row__icon"],["aria-hidden","true","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5","stroke-linecap","round","stroke-linejoin","round"],["d","M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z"],[1,"pro-lock-row__text"],[1,"pro-lock-row__title"],[1,"pro-lock-row__hint"],["aria-hidden","true","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2.5",1,"pro-lock-row__chevron"],["stroke-linecap","round","stroke-linejoin","round","d","M8.25 4.5l7.5 7.5-7.5 7.5"],[1,"mech-label","tw-mb-2"],[1,"tw-text-3xl","tw-font-extrabold","tw-tabular-nums","tw-transition-colors",3,"ngClass"],["role","status",1,"tw-mt-2","tw-inline-flex","tw-items-center","tw-gap-1","tw-px-2","tw-py-0.5","tw-rounded-full","tw-text-[11px]","tw-font-semibold",3,"ngClass"],["aria-hidden","true"]],template:function(o,l){o&1&&(n(0,"div",0),u(1,"app-obd-page-header",1),c(2,"translate"),c(3,"translate"),n(4,"div",2),u(5,"app-demo-sample-badge"),r(),x(6,Q,6,3,"div",3),x(7,Z,6,3,"div",4),x(8,ie,16,6),r(),u(9,"app-demo-upsell-bar",5)),o&2&&(a(),m("title",p(2,10,"V2.OBD.LIVE.TITLE"))("subtitle",p(3,12,"V2.OBD.LIVE.SUBTITLE"))("showBack",!0)("showStatus",!0)("status",l.status)("dongleName",l.dongleName),a(5),h(l.status!=="connected"?6:-1),a(),h(l.status==="connected"&&!l.tiles?7:-1),a(),h(l.status==="connected"&&l.tiles?8:-1),a(),m("showTrialCta",!0))},dependencies:[G,A,N,U,H,R,P],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:block;font-family:Inter,ui-sans-serif,system-ui,sans-serif}.pro-lock-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;width:100%;margin-top:16px;padding:14px 16px;border-radius:16px;background:var(--color-surface);border:1px solid var(--color-border);text-align:left;cursor:pointer;transition:border-color .15s ease}.pro-lock-row[_ngcontent-%COMP%]:hover{border-color:color-mix(in srgb,var(--color-primary) 55%,transparent)}.pro-lock-row__icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:36px;height:36px;flex-shrink:0;border-radius:999px;background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary)}.pro-lock-row__icon[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]{width:18px;height:18px}.pro-lock-row__text[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.pro-lock-row__title[_ngcontent-%COMP%]{font-size:14px;font-weight:700;color:var(--color-text)}.pro-lock-row__hint[_ngcontent-%COMP%]{font-size:12px;color:var(--color-text-secondary);line-height:1.3}.pro-lock-row__chevron[_ngcontent-%COMP%]{width:14px;
1height:14px;flex-shrink:0;color:var(--color-primary)}'],changeDetection:0})}}return e})();export{ge as ObdLiveDataDemoComponent};

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.