@kvaser/canking-api
Version:
CanKing API to communicate with the CanKing service using Node.js.
2 lines (1 loc) • 24.4 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./useMeasurement.js"),z=require("react/compiler-runtime"),a=require("react");require("long");const _=require("./models.js"),Q=require("./ipc.js"),V=require("./status_params.js"),ge=()=>d.useDevicesStoreState(),Me=()=>ge().devices,pe=window.electron??_.electronApiFake,he=Q.getLogger("hooks"),_e=()=>d.useLogMessagesStore(),Ie=r=>{const n=z.c(5),s=r===void 0?!1:r;let e;n[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],n[0]=e):e=n[0];const[t,c]=a.useState(e),o=d.useAvailableProtocols();let u,l;return n[1]!==o||n[2]!==s?(u=()=>{const m=new AbortController;return pe.ipcRenderer.invoke("mm-get-message-log-file-formats",s).then(S=>{m.signal.aborted||c(d.filterLogFileFormats(S,o))}).catch(S=>{m.signal.aborted||he.error("Failed to get message log file formats:",S)}),()=>{m.abort()}},l=[o,s],n[1]=o,n[2]=s,n[3]=u,n[4]=l):(u=n[3],l=n[4]),a.useEffect(u,l),t},Ae=()=>{const r=z.c(4);let n;r[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],r[0]=n):n=r[0];const[s,e]=a.useState(n),t=d.useAvailableProtocols();let c,o;return r[1]!==t?(c=()=>{const u=new AbortController;return pe.ipcRenderer.invoke("mm-get-signal-log-file-formats").then(l=>{u.signal.aborted||e(d.filterLogFileFormats(l,t))}).catch(l=>{u.signal.aborted||he.error("Failed to get signal log file formats:",l)}),()=>{u.abort()}},o=[t],r[1]=t,r[2]=c,r[3]=o):(c=r[2],o=r[3]),a.useEffect(c,o),s},se=25;function ue(r,n){return r.length>=n?r.slice(1):r}function be(r,n){if(r.previous.length===0)return r;const s=r.previous[r.previous.length-1],e=r.previous.slice(0,r.previous.length-1),t=r.current===void 0?r.next:r.next.length===n?[r.current,...r.next.slice(0,n-1)]:[r.current,...r.next];return{previous:e,current:s,next:t}}function Fe(r,n){if(r.next.length===0)return r;const s=r.next[0],e=r.next.slice(1);return{previous:r.current===void 0?r.previous:[...ue(r.previous,n),r.current],current:s,next:e}}function ye(r,n,s,e){return e&&e(r.current,n)?null:{previous:r.current===void 0?r.previous:[...ue(r.previous,s),r.current],current:n,next:[]}}function ie(r){const n=a.useRef({previous:r?.previous||[],current:r?.current,next:r?.next||[]}),s=a.useRef(new Set),e=a.useCallback(()=>{s.current.forEach(c=>c())},[]);return a.useMemo(()=>({get state(){return n.current},set state(c){n.current=c},canUndo:()=>n.current.previous.length!==0,canRedo:()=>n.current.next.length!==0,undo:()=>{n.current.previous.length!==0&&(n.current=be(n.current,se),e())},redo:()=>{n.current.next.length!==0&&(n.current=Fe(n.current,se),e())},set:c=>{const o=typeof c=="function"?c(n.current.current):c,u=ye(n.current,o,se,_.deep_equal);u&&(n.current=u,e())},reset:(c,o=[],u=[])=>{n.current={previous:o,current:c,next:u},e()},subscribe:c=>(s.current.add(c),()=>{s.current.delete(c)})}),[e])}function xe(r){const n=z.c(6);let s;n[0]===Symbol.for("react.memo_cache_sentinel")?(s={},n[0]=s):s=n[0];const[,e]=a.useState(s),t=ie(r);let c;n[1]!==e||n[2]!==t?(c=()=>t.subscribe?.(()=>{e({})}),n[1]=e,n[2]=t,n[3]=c):c=n[3];let o;return n[4]!==t?(o=[t],n[4]=t,n[5]=o):o=n[5],a.useEffect(c,o),t}const le=window.electron??_.electronApiFake,Y=Q.getLogger("hooks");function fe(r){const n=z.c(11),{enabled:s,intervalMs:e,stateRef:t,lastSavedStateRef:c,queueSave:o,intervals:u,maxIntervals:l,warnLabel:m,canSave:S}=r,f=e===void 0?5e3:e;let p,i;n[0]!==S||n[1]!==s||n[2]!==f||n[3]!==u||n[4]!==c||n[5]!==l||n[6]!==o||n[7]!==t||n[8]!==m?(p=()=>{if(!s)return;u.size>=l&&Y.warn(`Too many active auto-save intervals (${u.size}/${l}), consider optimizing ${m} usage`);const b=setInterval(()=>{if(S&&!S())return;const R=t.current;R!=null&&!_.deep_equal(R,c.current)&&(o(R),c.current=R)},f);return u.add(b),()=>{clearInterval(b),u.delete(b)}},i=[s,f,u,l,m,o,S,t,c],n[0]=S,n[1]=s,n[2]=f,n[3]=u,n[4]=c,n[5]=l,n[6]=o,n[7]=t,n[8]=m,n[9]=p,n[10]=i):(p=n[9],i=n[10]),a.useEffect(p,i)}const Te="project-data-internal-v1";function ne(r,n){return r==null?n:Array.isArray(n)&&Array.isArray(r)?r:typeof n=="object"&&!Array.isArray(n)&&typeof r=="object"&&!Array.isArray(r)?{...n,...r}:typeof n!=typeof r||Array.isArray(n)!==Array.isArray(r)?n:r}const H=[];let ee=null;const ae=100,Ue=new Set;function Re(r){return Math.max(15,r*7)}function Se(r,n,s,e,t=200){const c=`${r}:${n}`;if(!c||s===void 0)return;const o=H.find(u=>u.key===c);o?o.state=s:(H.push({key:c,state:s,id:r,slice:n}),H.length>ae&&(Y.warn(`Project data save queue exceeded ${ae} items, removing oldest entries`),H.splice(0,H.length-ae))),ee&&clearTimeout(ee),ee=setTimeout(()=>{if(!H.length)return;const u=[...H];H.length=0,ee=null;try{e(l=>{const m=[...l];let S=!1;for(const f of u){const p=m.find(i=>i.id===f.id);if(p?.componentData){const i=p.componentData.componentPropSlices[f.slice]?JSON.parse(p.componentData.componentPropSlices[f.slice],_.jsonReviver):{};_.deep_equal(i,f.state)||(p.componentData.componentPropSlices[f.slice]=JSON.stringify(f.state,_.jsonReplacer),S=!0)}}return S?m:l})}catch(l){Y.error("Failed to save project data batch:",l)}},t)}const Z=(r,n,s,e)=>{const[t,c]=a.useContext(d.WorkspacePanesContext),o=a.useRef(typeof s=="function"?s():s),[u,l]=a.useState(()=>o.current),[m,S]=a.useState(!1),f=a.useRef(u),p=a.useRef(void 0),i=a.useRef(!1),b=a.useRef(!1);a.useEffect(()=>{f.current=u},[u]),a.useEffect(()=>{i.current=m},[m]),a.useEffect(()=>{if(!(t===null||i.current)){try{const h=t?.find(E=>E.id===r),g=h?.componentData?.componentPropSlices[n]&&h?.componentData?.componentPropSlices[n]!==""?JSON.parse(h.componentData.componentPropSlices[n],_.jsonReviver):o.current,F=ne(g,o.current);l(F),f.current=F,e&&!b.current&&(b.current=!0,e(F))}catch(h){Y.error(`Failed to load project data slice ${n}:`,h),l(o.current),f.current=o.current,e&&!b.current&&(b.current=!0,e(o.current))}finally{S(!0),i.current=!0}return()=>{S(!1),i.current=!1}}},[r,e,n,t]);const R=a.useCallback(h=>Se(r,n,h,c),[r,c,n]);fe({enabled:m,stateRef:f,lastSavedStateRef:p,queueSave:R,intervals:Ue,maxIntervals:Re(t?.length??0),warnLabel:"project data",canSave:()=>i.current});const v=a.useCallback(h=>{if(!i.current)return;const g=f.current,F=typeof h=="function"?h(g):h;_.deep_equal(F,g)||(l(F),f.current=F,_.deep_equal(F,p.current)||(Se(r,n,F,c),p.current=F))},[r,c,n]);return[u,v,m]},Ee=(r,n)=>{const s=z.c(4),[e,t,c]=Z(r,Te,n);let o;return s[0]!==e||s[1]!==c||s[2]!==t?(o={projectDataIsInitialized:c,projectData:e,setProjectData:t},s[0]=e,s[1]=c,s[2]=t,s[3]=o):o=s[3],o},J=[];let te=null;const oe=100,De=new Set;function me(r){return Math.max(15,r*7)}function re(r,n,s=200){if(!r||n===void 0)return;const e=J.find(t=>t.key===r);e?e.state=n:(J.push({key:r,state:n}),J.length>oe&&(Y.warn(`Session data save queue exceeded ${oe} items, removing oldest entries`),J.splice(0,J.length-oe))),te&&clearTimeout(te),te=setTimeout(()=>{if(!J.length)return;const t=[...J];J.length=0,te=null;try{le.ipcRenderer.invoke("main-set-workspace-view-session-data-batch",t)}catch(c){Y.error("Failed to send batch:",c)}},s)}const we=(r,n,s)=>{const e=a.useRef(typeof n=="function"?n():n),[t,c]=a.useState(()=>e.current),[o,u]=a.useState(!1),[l]=a.useContext(d.WorkspacePanesContext),m=a.useRef(t),S=a.useRef(void 0),f=a.useRef(!1),p=a.useRef(!1),i=a.useRef(!1);a.useEffect(()=>{m.current=t},[t]),a.useEffect(()=>(f.current=!0,(async()=>{try{const v=await le.ipcRenderer.invoke("main-get-workspace-view-session-data-object",r.toString());if(!f.current)return;const h=ne(v,e.current);c(h),m.current=h,s&&!p.current&&(p.current=!0,s(h))}catch(v){Y.error(`Failed to load session data for view ${r}:`,v),c(e.current),m.current=e.current,s&&!p.current&&(p.current=!0,s(e.current))}finally{u(!0),i.current=!0}})(),()=>{f.current=!1,i.current=!1}),[r,s]);const b=a.useCallback(v=>re(r.toString(),v),[r]);fe({enabled:o,stateRef:m,lastSavedStateRef:S,queueSave:b,intervals:De,maxIntervals:me(l?.length??0),warnLabel:"session data",canSave:()=>f.current});const R=a.useCallback(v=>{if(!i.current)return;const h=m.current,g=typeof v=="function"?v(h):v;_.deep_equal(g,h)||(c(g),m.current=g,_.deep_equal(g,S.current)||(re(r.toString(),g),S.current=g))},[r]);return{sessionDataIsInitialized:o,sessionData:t,setSessionData:R}};function de(r,n,s,e){const t=`${r}:${n}`,[c]=a.useContext(d.WorkspacePanesContext),o=a.useRef(typeof s=="function"?s():s),[u,l]=a.useState(()=>o.current),[m,S]=a.useState(!1),f=a.useRef(u),p=a.useRef(void 0),i=a.useRef(!1),b=a.useRef(!1),R=a.useRef(!1);a.useEffect(()=>{f.current=u},[u]),a.useEffect(()=>(i.current=!0,(async()=>{try{const g=await le.ipcRenderer.invoke("main-get-workspace-view-session-data-slice",t);if(!i.current)return;const F=ne(g,o.current);l(F),f.current=F,e&&!b.current&&(b.current=!0,e(F))}catch(g){Y.error(`Failed to load session data slice ${t}:`,g),l(o.current),f.current=o.current,e&&!b.current&&(b.current=!0,e(o.current))}finally{S(!0),R.current=!0}})(),()=>{i.current=!1,R.current=!1}),[t,e]);const v=a.useCallback(g=>re(t,g),[t]);fe({enabled:m,stateRef:f,lastSavedStateRef:p,queueSave:v,intervals:De,maxIntervals:me(c?.length??0),warnLabel:"session data",canSave:()=>i.current&&R.current});const h=a.useCallback(g=>{if(!R.current)return;const F=f.current,E=typeof g=="function"?g(F):g;_.deep_equal(E,F)||(l(E),f.current=E,_.deep_equal(E,p.current)||(re(t,E),p.current=E))},[t]);return[u,h,m]}function Le(r,n,s){const e=z.c(10),t=ie(s);let c;e[0]!==t?(c=f=>{t.reset(f.current,f.previous,f.next)},e[0]=t,e[1]=c):c=e[1];const[,o,u]=de(r,n,t.state,c);let l,m;e[2]!==u||e[3]!==o||e[4]!==t?(l=()=>u?t.subscribe?.(()=>{o(t.state)}):void 0,m=[u,o,t],e[2]=u,e[3]=o,e[4]=t,e[5]=l,e[6]=m):(l=e[5],m=e[6]),a.useEffect(l,m);let S;return e[7]!==u||e[8]!==t?(S=[t,u],e[7]=u,e[8]=t,e[9]=S):S=e[9],S}const Ce=r=>{const n=z.c(3),[s]=a.useContext(d.WorkspacePanesContext);let e;return n[0]!==r||n[1]!==s?(e=s?.find(c=>c.id===r)??null,n[0]=r,n[1]=s,n[2]=e):e=n[2],e};function Pe(r,n,s,e){const t=z.c(9),c=a.useRef(!0),o=d.useOnlineStatusStoreState(),u=a.useRef(null),[l,m,S]=Z(n,"useOnlineStatusSync-isNewWorkspaceView",!0);let f,p;return t[0]!==l||t[1]!==S||t[2]!==e||t[3]!==s||t[4]!==o||t[5]!==r||t[6]!==m?(f=()=>{!r||!S||!o.isLoaded||o?.onlineStatus===null||(o.onlineStatus.isOnline&&(u.current!==o.onlineStatus.isOnline||c.current)?s(l,c.current,o.onlineStatus.onlineCounter):!o.onlineStatus.isOnline&&(u.current!==o.onlineStatus.isOnline||c.current)&&e(l,c.current,o.onlineStatus.onlineCounter),u.current=o.onlineStatus.isOnline,c.current=!1,l&&queueMicrotask(()=>m(!1)))},p=[l,S,e,s,o,r,m],t[0]=l,t[1]=S,t[2]=e,t[3]=s,t[4]=o,t[5]=r,t[6]=m,t[7]=f,t[8]=p):(f=t[7],p=t[8]),a.useEffect(f,p),o?.onlineStatus?.isOnline===!0}const ce=window.electron??_.electronApiFake,G=Q.getLogger("hooks");var ve=(r=>(r.PENDING="pending",r.FRAME_KEYS_READY="frameKeysReady",r.HISTORICAL_DATA_READY="historicalDataReady",r.READY="ready",r))(ve||{});const ke=(r,n,s)=>{const e=z.c(20);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],e[0]=t):t=e[0];const[c,o]=a.useState(t);let u;e[1]===Symbol.for("react.memo_cache_sentinel")?(u=[],e[1]=u):u=e[1];const[l,m]=Z(r,`framesubscription-${n}`,u);let S;e[2]===Symbol.for("react.memo_cache_sentinel")?(S=new Map,e[2]=S):S=e[2];const f=a.useRef(S),p=a.useRef(!1);let i;e[3]===Symbol.for("react.memo_cache_sentinel")?(i=new Map,e[3]=i):i=e[3];const b=a.useRef(i);let R,v;e[4]!==s||e[5]!==m?(R=()=>{f.current.clear(),s.forEach(O=>{f.current.set(_.calculateSubscriptionKey(O),O)}),queueMicrotask(()=>m(s.map($e)))},v=[s,m],e[4]=s,e[5]=m,e[6]=R,e[7]=v):(R=e[6],v=e[7]),a.useEffect(R,v);const h=d.useMeasurementSubscriptionStoreState();let g,F;e[8]===Symbol.for("react.memo_cache_sentinel")?(g=()=>{const O=new AbortController;return ce.ipcRenderer.invoke("mm-get-measurement-data-before-timestamp",Number.MAX_SAFE_INTEGER,d.MAX_HISTORICAL_FRAMES).then(I=>{O.signal.aborted||(I.length>0&&I.forEach(T=>{const w=_.deserializeFrame(T),M=_.calculateSubscriptionKeyFromFrame(w),x=b.current.get(M);x?b.current.set(M,d.mergeAndDeduplicateFrames(x,[w])):b.current.set(M,[w])}),p.current=!0)}).catch(I=>{G.error("Failed to get historical data:",I),p.current=!0}),()=>{O.abort(),p.current=!1}},F=[],e[8]=g,e[9]=F):(g=e[8],F=e[9]),a.useEffect(g,F);let E;e[10]!==h.subscribedData?(E=()=>{if(!p.current){d.mergeFrameDataMaps(b.current,h.subscribedData);return}const O=new Map(b.current);b.current.clear(),d.mergeFrameDataMaps(O,h.subscribedData);const I=[];f.current.forEach((T,w)=>{const M=T.sourceId===void 0||T.sourceId==="",x=T.tx===void 0,$=T.mux===void 0,L=[];for(const P of O.values()){const D=P[0];if(!D)continue;_.calculateSubscriptionKeyFromFrame(D,M,x,$,!0)===w&&L.push(...P)}I.push(...L)}),I.sort(je),queueMicrotask(()=>o(I))},e[10]=h.subscribedData,e[11]=E):E=e[11];let j;e[12]!==l||e[13]!==h?(j=[l,h],e[12]=l,e[13]=h,e[14]=j):j=e[14],a.useEffect(E,j);const k=d.useOnlineStatusStoreState();let q;e[15]!==k.isLoaded||e[16]!==k.onlineStatus?.isOnline?(q=()=>{k.isLoaded&&k?.onlineStatus?.isOnline===!0&&queueMicrotask(()=>o([]))},e[15]=k.isLoaded,e[16]=k.onlineStatus?.isOnline,e[17]=q):q=e[17];let N;return e[18]!==k?(N=[k],e[18]=k,e[19]=N):N=e[19],a.useEffect(q,N),c},qe=(r,n,s)=>{const e=z.c(20);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=[],e[0]=t):t=e[0];const[c,o]=a.useState(t);let u;e[1]===Symbol.for("react.memo_cache_sentinel")?(u=[],e[1]=u):u=e[1];const[,l]=Z(r,`framesubscription-${n}`,u);let m;e[2]===Symbol.for("react.memo_cache_sentinel")?(m=new Map,e[2]=m):m=e[2];const S=a.useRef(m);let f;e[3]===Symbol.for("react.memo_cache_sentinel")?(f=new Map,e[3]=f):f=e[3];const p=a.useRef(f),i=a.useRef("pending");let b;e[4]===Symbol.for("react.memo_cache_sentinel")?(b=new Map,e[4]=b):b=e[4];const R=a.useRef(b);let v,h;e[5]!==l||e[6]!==s?(v=()=>{const I=new AbortController;return Q.getFrameDefinitions().then(T=>{if(I.signal.aborted)return;const w=[];S.current.clear(),p.current.clear();for(let M=0;M<s.length;M++){const{qualifiedName:x,sourceId:$}=s[M],L=T.find(P=>($===void 0||$===""||P.sourceIdentifiers.includes($))&&P.signals.some(D=>D.qualifiedName===x));if(L){const P=L.signals.find(A=>A.qualifiedName===x);if(!P)continue;const D=V.FixedPosFrameIdentifier.create({id:L.id,sourceId:$,mux:P.multiplexValue});L.canFrameFlags&&(D.canFrameFlags=V.CanFrameFlags.create(L.canFrameFlags),D.canFrameFlags.flags=D.canFrameFlags.flags.filter(Ne));const y=_.calculateSubscriptionKey(D);if(p.current.has(y)){const A=p.current.get(y);A&&!A.includes(x)&&(A.push(x),p.current.set(y,A))}else p.current.set(y,[x]),S.current.set(y,D);const U=w.find(A=>_.deep_equal(A.frameId,D));U?U.signalIds.includes(x)||U.signalIds.push(x):w.push({frameId:D,signalIds:[x]})}}l(w),i.current==="pending"?i.current="frameKeysReady":i.current==="historicalDataReady"&&(i.current="ready")}).catch(T=>{G.error("Failed to get frame definitions:",T),i.current==="pending"?i.current="frameKeysReady":i.current==="historicalDataReady"&&(i.current="ready")}),()=>{I.abort(),i.current==="ready"?i.current="historicalDataReady":i.current="pending"}},h=[s,l],e[5]=l,e[6]=s,e[7]=v,e[8]=h):(v=e[7],h=e[8]),a.useEffect(v,h);const g=d.useMeasurementSubscriptionStoreState();let F,E;e[9]===Symbol.for("react.memo_cache_sentinel")?(F=()=>{const I=new AbortController;return Q.getMessageDataBeforeTimestamp(Number.MAX_SAFE_INTEGER,d.MAX_HISTORICAL_FRAMES).then(T=>{I.signal.aborted||(T.length>0&&T.forEach(w=>{const M=_.calculateSubscriptionKeyFromFrame(w),x=R.current.get(M);x?R.current.set(M,d.mergeAndDeduplicateFrames(x,[w])):R.current.set(M,[w])}),i.current==="pending"?i.current="historicalDataReady":i.current==="frameKeysReady"&&(i.current="ready"))}).catch(T=>{G.error("Failed to get historical data:",T),i.current==="pending"?i.current="historicalDataReady":i.current==="frameKeysReady"&&(i.current="ready")}),()=>{I.abort(),i.current==="ready"?i.current="frameKeysReady":i.current="pending"}},E=[],e[9]=F,e[10]=E):(F=e[9],E=e[10]),a.useEffect(F,E);let j;e[11]!==g.subscribedData?(j=()=>{if(i.current!=="ready"){d.mergeFrameDataMaps(R.current,g.subscribedData);return}const I=new Map(R.current);R.current.clear(),d.mergeFrameDataMaps(I,g.subscribedData);const T=[];S.current.forEach((w,M)=>{const x=w.sourceId===void 0||w.sourceId==="",$=w.tx===void 0,L=w.mux===void 0,P=[];for(const y of I.values()){const U=y[0];if(!U)continue;_.calculateSubscriptionKeyFromFrame(U,x,$,L,!0)===M&&P.push(...y)}const D=p.current.get(M)??[];P.forEach(y=>{const U=D.map(A=>{const C=y.signalValues.find(K=>K.qualifiedName===A);return C?{qualifiedName:C.qualifiedName,sourceId:y.sourceId,name:C.name,unit:C.unit,timeUs:y.timeUs,doubleValue:C.doubleValue,stringValue:C.stringValue}:null});T.push(...U.filter(Ke))})}),T.sort(We),queueMicrotask(()=>o(T))},e[11]=g.subscribedData,e[12]=j):j=e[12];let k;e[13]!==g?(k=[g],e[13]=g,e[14]=k):k=e[14],a.useEffect(j,k);const q=d.useOnlineStatusStoreState();let N;e[15]!==q.isLoaded||e[16]!==q.onlineStatus?.isOnline?(N=()=>{q.isLoaded&&q?.onlineStatus?.isOnline===!0&&queueMicrotask(()=>o([]))},e[15]=q.isLoaded,e[16]=q.onlineStatus?.isOnline,e[17]=N):N=e[17];let O;return e[18]!==q?(O=[q],e[18]=q,e[19]=O):O=e[19],a.useEffect(N,O),c},Oe=(r,n,s,e)=>{const t=z.c(40);let c;t[0]===Symbol.for("react.memo_cache_sentinel")?(c=[],t[0]=c):c=t[0];const[o,u]=a.useState(c);let l;t[1]===Symbol.for("react.memo_cache_sentinel")?(l=[],t[1]=l):l=t[1];const[,m]=Z(r,`framesubscription-${n}`,l);let S;t[2]===Symbol.for("react.memo_cache_sentinel")?(S={windowUs:3e7,width:1e3},t[2]=S):S=t[2];const[,f]=de(r,`envelopeviewwidth-${n}`,S);let p,i;t[3]!==f||t[4]!==e.endTimeUs||t[5]!==e.startTimeUs||t[6]!==e.width||t[7]!==e.windowUs?(p=()=>{const M={windowUs:e.windowUs??(e.endTimeUs!==void 0&&e.startTimeUs!==void 0?e.endTimeUs-e.startTimeUs:3e7),width:e.width??1e3};queueMicrotask(()=>f(M))},i=[f,e.endTimeUs,e.windowUs,e.startTimeUs,e.width],t[3]=f,t[4]=e.endTimeUs,t[5]=e.startTimeUs,t[6]=e.width,t[7]=e.windowUs,t[8]=p,t[9]=i):(p=t[8],i=t[9]),a.useEffect(p,i);let b;t[10]===Symbol.for("react.memo_cache_sentinel")?(b=new Map,t[10]=b):b=t[10];const R=a.useRef(b);let v;t[11]===Symbol.for("react.memo_cache_sentinel")?(v=new Map,t[11]=v):v=t[11];const h=a.useRef(v),[g,F]=a.useState(!1);let E,j;t[12]!==m||t[13]!==s?(E=()=>{const M=new AbortController;return queueMicrotask(()=>F(!1)),Q.getFrameDefinitions().then(x=>{if(M.signal.aborted)return;const $=[],L=new Map,P=new Map;for(let D=0;D<s.length;D++){const{qualifiedName:y,sourceId:U}=s[D],A=x.find(C=>(U===void 0||U===""||C.sourceIdentifiers.includes(U))&&C.signals.some(K=>K.qualifiedName===y));if(A){const C=A.signals.find(W=>W.qualifiedName===y);if(!C)continue;const K=V.FixedPosFrameIdentifier.create({id:A.id,sourceId:U,mux:C.multiplexValue});A.canFrameFlags&&(K.canFrameFlags=V.CanFrameFlags.create(A.canFrameFlags),K.canFrameFlags.flags=K.canFrameFlags.flags.filter(ze));const B=_.calculateSubscriptionKey(K);if(L.has(B)){const W=L.get(B);W&&!W.includes(y)&&(W.push(y),L.set(B,W))}else L.set(B,[y]);P.set(B,K);const X=$.find(W=>_.deep_equal(W.frameId,K));X?X.signalIds.includes(y)||X.signalIds.push(y):$.push({frameId:K,signalIds:[y]})}}m(D=>_.deep_equal(D,$)?D:$),R.current=L,h.current=P,F(!0)}).catch(x=>{M.signal.aborted||(G.error("Failed to get frame definitions:",x),R.current=new Map,h.current=new Map,m([]),F(!0))}),()=>{M.abort()}},j=[s,m],t[12]=m,t[13]=s,t[14]=E,t[15]=j):(E=t[14],j=t[15]),a.useEffect(E,j);let k,q;t[16]!==g||t[17]!==r||t[18]!==e.endTimeUs||t[19]!==e.startTimeUs?(q=()=>{if(!g||e.startTimeUs!==void 0&&e.endTimeUs!==void 0)return;queueMicrotask(()=>u([]));const M=new AbortController,x=ce.ipcRenderer.on(`mm-new-frames-envelopes-for-pane-${r}`,($,L)=>{if(!M.signal.aborted){if(L.length===0){u([]);return}u(P=>{let D=!1;const y=[...P];return L.forEach(U=>{U.envelopes.size!==0&&U.envelopes.forEach((A,C)=>{const K=_.calculateSubscriptionKey(U.frameId);if(!R.current.get(K)?.includes(C))return;const X=y.findIndex(W=>W.qualifiedName===C&&W.sourceId===U.frameId.sourceId);X!==-1&&y.splice(X,1),y.push({qualifiedName:C,sourceId:U.frameId.sourceId,timeUs:Array.from(A.timeUs),min:Array.from(A.min),max:Array.from(A.max)}),D=!0})}),D?y:P})}});return()=>{M.abort(),x()}},k=[g,r,e.endTimeUs,e.startTimeUs],t[16]=g,t[17]=r,t[18]=e.endTimeUs,t[19]=e.startTimeUs,t[20]=k,t[21]=q):(k=t[20],q=t[21]),a.useEffect(q,k);let N;t[22]!==g||t[23]!==r||t[24]!==e.endTimeUs||t[25]!==e.startTimeUs||t[26]!==e.width?(N=()=>{if(!g||e.startTimeUs===void 0||e.endTimeUs===void 0)return;const M=new AbortController,x=setTimeout(()=>{ce.ipcRenderer.invoke("mm-get-frames-envelopes-for-pane",r,e.startTimeUs,e.endTimeUs,e.width).then($=>{M.signal.aborted||u(L=>{let P=!1;const D=[...L];return $.forEach(y=>{if(y.envelopes.size===0)return;let U="";h.current.forEach((A,C)=>{_.compareFixedPosFrameIdentifiers(A,y.frameId)&&(U=C)}),U!==""&&y.envelopes.forEach((A,C)=>{if(!R.current.get(U)?.includes(C))return;const B=h.current.get(U)?.sourceId,X=D.findIndex(W=>W.qualifiedName===C&&W.sourceId===B);X!==-1&&D.splice(X,1),D.push({qualifiedName:C,sourceId:B,timeUs:Array.from(A.timeUs),min:Array.from(A.min),max:Array.from(A.max)}),P=!0})}),P?D:L})}).catch($=>{G.error(`Failed to get signal data envelopes for pane ${r}:`,$)})},200);return()=>{clearTimeout(x),M.abort()}},t[22]=g,t[23]=r,t[24]=e.endTimeUs,t[25]=e.startTimeUs,t[26]=e.width,t[27]=N):N=t[27];let O;t[28]!==g||t[29]!==r||t[30]!==e.endTimeUs||t[31]!==e.forceUpdateCounter||t[32]!==e.startTimeUs||t[33]!==e.width?(O=[g,r,e.endTimeUs,e.startTimeUs,e.width,e.forceUpdateCounter],t[28]=g,t[29]=r,t[30]=e.endTimeUs,t[31]=e.forceUpdateCounter,t[32]=e.startTimeUs,t[33]=e.width,t[34]=O):O=t[34],a.useEffect(N,O);const I=d.useOnlineStatusStoreState();let T;t[35]!==I.isLoaded||t[36]!==I.onlineStatus?.isOnline?(T=()=>{I.isLoaded&&I?.onlineStatus?.isOnline===!0&&queueMicrotask(()=>u([]))},t[35]=I.isLoaded,t[36]=I.onlineStatus?.isOnline,t[37]=T):T=t[37];let w;return t[38]!==I?(w=[I],t[38]=I,t[39]=w):w=t[39],a.useEffect(T,w),o};function $e(r){return{frameId:r,signalIds:[]}}function je(r,n){return r.timeUs.compare(n.timeUs)}function Ne(r){return r!==V.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS}function Ke(r){return r!==null}function We(r,n){return r.timeUs.compare(n.timeUs)}function ze(r){return r!==V.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS}exports.MAX_HISTORICAL_FRAMES=d.MAX_HISTORICAL_FRAMES;exports.calculateOverallStatusLevel=d.calculateOverallStatusLevel;exports.calculateOverallStatusLevelFromBusStatus=d.calculateOverallStatusLevelFromBusStatus;exports.extractProtocolsFromSources=d.extractProtocolsFromSources;exports.filterLogFileFormats=d.filterLogFileFormats;exports.mergeAndDeduplicateFrames=d.mergeAndDeduplicateFrames;exports.mergeFrameDataMaps=d.mergeFrameDataMaps;exports.useAvailableProtocols=d.useAvailableProtocols;exports.useCombinedMeasurementTraceData=d.useCombinedMeasurementTraceData;exports.useFixedPositionModeMeasurementData=d.useFixedPositionModeMeasurementData;exports.useIsOnline=d.useIsOnline;exports.useLanguage=d.useLanguage;exports.useLocalizedStrings=d.useLocalizedStrings;exports.useMaxDataBytes=d.useMaxDataBytes;exports.useMeasurementSetup=d.useMeasurementSetup;exports.useMeasurementSetupState=d.useMeasurementSetupState;exports.useMeasurementStatus=d.useMeasurementStatus;exports.useMeasurementStatusState=d.useMeasurementStatusState;exports.useMessageDatabases=d.useMessageDatabases;exports.useNewMeasurementData=d.useNewMeasurementData;exports.useNodeStatus=d.useNodeStatus;exports.useNumericRadix=d.useNumericRadix;exports.useOnlineStatus=d.useOnlineStatus;exports.useOverallStatusLevel=d.useOverallStatusLevel;exports.useRecentProjectFiles=d.useRecentProjectFiles;exports.useRunningPeriodicTransmissions=d.useRunningPeriodicTransmissions;exports.useScrollModeMeasurementData=d.useScrollModeMeasurementData;exports.useUserSettings=d.useUserSettings;exports.SignalDataInitState=ve;exports.calculateMaxActiveProjectDataIntervals=Re;exports.calculateMaxActiveSessionDataIntervals=me;exports.limitBuffer=ue;exports.mergeData=ne;exports.performRedo=Fe;exports.performSet=ye;exports.performUndo=be;exports.useDevices=Me;exports.useDevicesState=ge;exports.useLogMessages=_e;exports.useMessageData=ke;exports.useMessageLogFileFormats=Ie;exports.useOnlineStatusSync=Pe;exports.useProjectData=Ee;exports.useProjectDataSlice=Z;exports.useSessionData=we;exports.useSessionDataSlice=de;exports.useSignalData=qe;exports.useSignalDataEnvelopes=Oe;exports.useSignalLogFileFormats=Ae;exports.useUndo=xe;exports.useUndoRef=ie;exports.useUndoSessionDataSlice=Le;exports.useWorkspacePaneWithId=Ce;