@kvaser/canking-api
Version:
CanKing API to communicate with the CanKing service using Node.js.
2 lines (1 loc) • 14.1 kB
JavaScript
;var G=Object.defineProperty;var X=(e,s,t)=>s in e?G(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t;var E=(e,s,t)=>X(e,typeof s!="symbol"?s+"":s,t);const a=require("react"),v=require("uuid");require("long");const H=require("./ElectronAPIFake.js"),y=require("./status_params.js"),g=require("react/jsx-runtime"),b=require("@mui/material"),Y=require("./ipc.js"),J=require("./models.js"),Z=(e,s,...t)=>{let o=s;for(let r=0;r<t.length;r+=1){const n=`{${r}}`;if(o.indexOf(n)!==-1){const u=t[r];o=typeof u=="string"?o.replace(n,u):o.replace(n,u.toLocaleString(e))}}return o};class K{constructor(s,t){E(this,"language");E(this,"strings");this.language=s,this.strings=t}getString(s,...t){if(this.strings&&s in this.strings){const o=this.strings[s];return t.length>0?Z(this.language,o,...t):o}return s}}const l=Y.getLogger("DataProviders"),d=window.electron??H.electronApiFake,q=e=>({palette:{mode:e,primary:{main:e==="light"?"#006782":"#03648A"},secondary:{main:e==="light"?"#44439A":"#AFA7FD"},error:{main:e==="light"?"#BA1A1A":"#FD452F"},divider:e==="light"?"#33859B":"#3583A1"},spacing:4,typography:{button:{lineHeight:1,textTransform:void 0},fontSize:12},shape:{borderRadius:4},components:{MuiButton:{defaultProps:{size:"small"}},MuiFilledInput:{defaultProps:{margin:"dense"}},MuiFormControl:{defaultProps:{margin:"dense"}},MuiFormHelperText:{defaultProps:{margin:"dense"}},MuiIconButton:{defaultProps:{size:"small"}},MuiInputBase:{defaultProps:{margin:"dense"}},MuiInputLabel:{defaultProps:{margin:"dense"}},MuiListItem:{defaultProps:{dense:!0}},MuiOutlinedInput:{defaultProps:{margin:"dense"}},MuiFab:{defaultProps:{size:"small"}},MuiTable:{defaultProps:{size:"small"}},MuiTextField:{defaultProps:{margin:"dense"}},MuiToolbar:{defaultProps:{variant:"dense"}}}});function V({children:e}){const s=S(),[t,o]=a.useState(b.createTheme(q(s.theme)));return a.useEffect(()=>{o(b.createTheme(q(s.theme)))},[s.theme]),g.jsxs(b.ThemeProvider,{theme:t,children:[g.jsx(b.CssBaseline,{}),e]})}const w=new Map,M=new Map,x=new Map,C=new Map,k=new Map,L=new Map,T=new Map,j=new Map,D=new Map,R=new Map;async function h(e,s,t,o){switch(s){case"devices-changed":{if(w.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("dm-devices-changed",n);w.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("rpc-get-devices",!1)}case"user-settings-changed":{if(M.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("user-settings-changed",n);M.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("app-get-user-settings")}case"new-log-messages":{if(x.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("new-log-messages",n);x.set(e,{remover:c,listener:n})}return Promise.resolve()}case"online-status-changed":{if(C.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("mm-is-online-changed",n);C.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("rpc-get-online-status")}case"periodic-trans-started":{if(k.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("mm-periodic-trans-started",n);k.set(e,{remover:c,listener:n})}return Promise.resolve("")}case"periodic-trans-stopped":{if(L.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("mm-periodic-trans-stopped",n);L.set(e,{remover:c,listener:n})}return Promise.resolve("")}case"new-measurement-data":{if(T.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("mm-new-measurement-data",n);T.set(e,{remover:c,listener:n})}return(o==null?void 0:o.numberOfHistoryFrames)>0?d.ipcRenderer.invoke("mm-get-latest-measurement-data",o.numberOfHistoryFrames):Promise.resolve([])}case"new-measurement-status":{if(j.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("mm-new-measurement-status",n);j.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("rpc-get-node-statuses")}case"meas-setup-changed":{if(D.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("project-meas-setup-changed",n);D.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("prj-get-meas-setup")}case"workspace-panes-changed":{if(R.has(e))l.warn("The callback has already been added as listener to this event!");else{const r=t,n=(u,i)=>r(i),c=d.ipcRenderer.on("project-workspace-panes-changed",n);R.set(e,{remover:c,listener:n})}return d.ipcRenderer.invoke("prj-get-workspace-panes")}}return Promise.reject(new Error("Invalid event type"))}const p=async(e,s)=>{switch(s){case"devices-changed":{const t=w.get(e);t?(t.remover(),w.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"user-settings-changed":{const t=M.get(e);t?(t.remover(),M.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"new-log-messages":{const t=x.get(e);t?(t.remover(),x.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"online-status-changed":{const t=C.get(e);t?(t.remover(),C.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-started":{const t=k.get(e);t?(t.remover(),k.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-stopped":{const t=L.get(e);t?(t.remover(),L.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-data":{const t=T.get(e);t?(t.remover(),T.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-status":{const t=j.get(e);t?(t.remover(),j.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"meas-setup-changed":{const t=D.get(e);t?(t.remover(),D.delete(e)):l.warn("The callback has not been added as listener to this event!")}break;case"workspace-panes-changed":{const t=R.get(e);t?(t.remover(),R.delete(e)):l.warn("The callback has not been added as listener to this event!")}break}},ee=window!=null&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches:!1,$=Object.assign({},J.defaultUserSettings,{theme:ee?"dark":"light"}),N=a.createContext($),te=({initialUserSettings:e=void 0,children:s=void 0})=>{const[t,o]=a.useState(e??$);return a.useEffect(()=>{const r=v.v4();return h(r,"user-settings-changed",o).then(n=>o(n)).catch(),()=>{p(r,"user-settings-changed")}},[]),g.jsx(N.Provider,{value:t,children:s})},I=a.createContext(null),se=({children:e=void 0})=>{const[s,t]=a.useState(null);return a.useEffect(()=>{const o=n=>{try{t(n)}catch(c){l.error("DevicesProvider",c)}},r=v.v4();return h(r,"devices-changed",o).then(n=>o(n)).catch(),()=>{p(r,"devices-changed")}},[]),g.jsx(I.Provider,{value:s,children:e})},z=a.createContext([]),ne=({children:e=void 0})=>{const[s,t]=a.useState([]);return a.useEffect(()=>{const o=n=>{try{t(n)}catch(c){l.error("MeasurementStatusProvider",c)}},r=v.v4();return h(r,"new-measurement-status",o).then(n=>o(n)).catch(),()=>{p(r,"new-measurement-status")}},[]),g.jsx(z.Provider,{value:s,children:e})},_=a.createContext({language:"en",sources:[],dataProcessors:[],targets:[]}),re=({children:e=void 0})=>{const[s,t]=a.useState({language:"en",sources:[],dataProcessors:[],targets:[]});return a.useEffect(()=>{const o=n=>{try{t(n)}catch(c){l.error("MeasurementSetupProvider",c)}},r=v.v4();return h(r,"meas-setup-changed",o).then(n=>o(n)).catch(),()=>{p(r,"meas-setup-changed")}},[]),g.jsx(_.Provider,{value:s,children:e})},A=a.createContext({isOnline:!1}),ae=({children:e=void 0})=>{const[s,t]=a.useState({isOnline:!1});return a.useEffect(()=>{const o=n=>{try{t(n)}catch(c){l.error("OnlineStatusProvider",c)}},r=v.v4();return h(r,"online-status-changed",o).then(n=>o(n)).catch(),()=>{p(r,"online-status-changed")}},[]),g.jsx(A.Provider,{value:s,children:e})},B=a.createContext([]),oe=({children:e=void 0})=>{const[s,t]=a.useState([]);return a.useEffect(()=>{const o=u=>{try{t(i=>[...i,u])}catch(i){l.error("RunningPeriodicTransmissionsProvider - started",i)}},r=u=>{try{t(i=>{const m=i.findIndex(P=>P===u);if(m===-1)return i;const f=[...i];return f.splice(m,1),f})}catch(i){l.error("RunningPeriodicTransmissionsProvider - stopped",i)}},n=v.v4();h(n,"periodic-trans-started",o);const c=v.v4();return h(c,"periodic-trans-stopped",r),()=>{p(n,"periodic-trans-started"),p(c,"periodic-trans-stopped")}},[]),g.jsx(B.Provider,{value:s,children:e})},U=a.createContext([]),ce=({children:e=void 0})=>{const s=a.useRef(new J.DataBuffer(1e3)),[t,o]=a.useState([]);return a.useEffect(()=>{const r=c=>{try{c===null?s.current.clear():s.current.push(...c),o(Array.from(s.current))}catch(u){l.error("LogMessagesProvider",u)}},n=v.v4();return h(n,"new-log-messages",r),()=>{p(n,"new-log-messages")}},[]),g.jsx(U.Provider,{value:t,children:e})},O=a.createContext([[],()=>{}]),ie=({children:e=void 0})=>{const[s,t]=a.useState(null),o=a.useCallback(r=>{if(s!==null)if(typeof r=="function"){const n=r(s);d.ipcRenderer.invoke("prj-update-project",{workspacePanes:n})}else d.ipcRenderer.invoke("prj-update-project",{workspacePanes:r})},[s]);return a.useEffect(()=>{const r=c=>{try{t(c)}catch(u){l.error("WorkspacePanesProvider",u)}},n=v.v4();return h(n,"workspace-panes-changed",r).then(c=>r(c)).catch(),()=>{p(n,"workspace-panes-changed")}},[]),g.jsx(O.Provider,{value:[s,o],children:e})},ue=({initialUserSettings:e=void 0,children:s=void 0})=>g.jsx(te,{initialUserSettings:e,children:g.jsx(se,{children:g.jsx(re,{children:g.jsx(ne,{children:g.jsx(ae,{children:g.jsx(oe,{children:g.jsx(ce,{children:g.jsx(ie,{children:g.jsx(V,{children:s})})})})})})})})}),F=window.electron??H.electronApiFake,S=()=>a.useContext(N),le=()=>{const e=S();return a.useMemo(()=>e.useHexNumericBase?16:10,[e.useHexNumericBase])},de=()=>{const e=S();return a.useMemo(()=>e.maxDataBytes,[e.maxDataBytes])},ge=()=>{const e=S();return a.useMemo(()=>e.language,[e.language])},me=()=>{const e=S();return a.useMemo(()=>new K(e.language,e.strings),[e.language,e.strings])},he=()=>{const e=S();return a.useMemo(()=>e.recentProjectFiles,[e.recentProjectFiles])},pe=()=>a.useContext(I),ve=()=>a.useContext(_),W=()=>a.useContext(z),fe=e=>{const s=W();return a.useMemo(()=>s.find(o=>o.nodeId===e)??null,[e,s])},Se=()=>{const e=W();return a.useMemo(()=>{const t=e.filter(o=>o.busStatus).map(o=>Math.max(Number(o.busStatus.busOnStatus)??y.StatusLevel.STATUS_LEVEL_NONE,Number(o.busStatus.errorStatus)??y.StatusLevel.STATUS_LEVEL_NONE,Number(o.busStatus.overrunStatus)??y.StatusLevel.STATUS_LEVEL_NONE));return Math.max(...t)},[e])},Q=()=>a.useContext(A),Pe=()=>{const e=Q();return a.useMemo(()=>(e==null?void 0:e.isOnline)===!0,[e==null?void 0:e.isOnline])},be=()=>a.useContext(B),we=()=>a.useContext(U),Me=(e,s)=>{const[t,o]=a.useState([]),[r,n]=a.useState([]);return a.useEffect(()=>{const c=v.v4();return h(c,"new-measurement-data",n,{numberOfHistoryFrames:e}).then(u=>n(u)).catch(),()=>{p(c,"new-measurement-data")}},[]),a.useEffect(()=>{r!==null&&o(c=>{const u=c.map(m=>m.hashCode),i=r.filter(m=>!u.includes(m.hashCode));if(s){const m=i.filter(s);return c.length===0&&m.length===0?c:m}return c.length===0&&i.length===0?c:i})},[r,s]),t},xe=(e,s)=>{const[t,o]=a.useContext(O),[r,n]=a.useMemo(()=>{var u;try{if(t===null)return[!1,s??{}];const i=t==null?void 0:t.find(f=>f.id===e),m=(u=i==null?void 0:i.componentData)!=null&&u.componentProps?JSON.parse(i.componentData.componentProps):{};return s!==void 0?[!0,Object.assign({},s,m)]:[!0,m]}catch{return[!1,s??{}]}},[s,e,t]),c=a.useCallback(u=>{try{o(i=>{const m=[...i],f=m.find(P=>P.id===e);if(f!=null&&f.componentData){const P=u instanceof Function?JSON.stringify(u(n)):JSON.stringify(u);return f.componentData.componentProps=P,m}return i})}catch{}},[e,n,o]);return{projectDataIsInitialized:r,projectData:n,setProjectData:c}},Ce=(e,s)=>{const[t,o]=a.useState(!1),[r,n]=a.useState(s??{});return a.useEffect(()=>{F.ipcRenderer.invoke("app-get-workspace-view-session-data",e).then(c=>{try{const u=c?JSON.parse(c):{};s!==void 0?(n(Object.assign({},s,u)),o(!0)):(n(u),o(!0))}catch{o(!1),n(s??{})}}).catch()},[s,e]),a.useEffect(()=>{try{if(t){const c=JSON.stringify(r);F.ipcRenderer.invoke("app-set-workspace-view-session-data",e,c).catch()}}catch{}},[e,r,t]),{sessionDataIsInitialized:t,sessionData:r,setSessionData:n}},ke=e=>{const[s]=a.useContext(O);return a.useMemo(()=>s.find(o=>o.id===e)??null,[e,s])},Le=(e=!1)=>{const[s,t]=a.useState([]);return a.useEffect(()=>{F.ipcRenderer.invoke("rpc-get-message-log-file-formats",e).then(o=>t(o)).catch()},[e]),s},Te=()=>{const[e,s]=a.useState([]);return a.useEffect(()=>{F.ipcRenderer.invoke("rpc-get-signal-log-file-formats").then(t=>s(t)).catch()},[]),e};exports.CanKingDataProvider=ue;exports.DevicesContext=I;exports.LocalizedStrings=K;exports.LogMessagesContext=U;exports.MeasurementSetupContext=_;exports.MeasurementStatusContext=z;exports.OnlineStatusContext=A;exports.RunningPeriodicTransmissionsContext=B;exports.UserSettingsContext=N;exports.WorkspacePanesContext=O;exports.addEventListener=h;exports.removeEventListener=p;exports.useDevices=pe;exports.useIsOnline=Pe;exports.useLanguage=ge;exports.useLocalizedStrings=me;exports.useLogMessages=we;exports.useMaxDataBytes=de;exports.useMeasurementSetup=ve;exports.useMeasurementStatus=W;exports.useMessageLogFileFormats=Le;exports.useNewMeasurementData=Me;exports.useNodeStatus=fe;exports.useNumericRadix=le;exports.useOnlineStatus=Q;exports.useOverallStatusLevel=Se;exports.useProjectData=xe;exports.useRecentProjectFiles=he;exports.useRunningPeriodicTransmissions=be;exports.useSessionData=Ce;exports.useSignalLogFileFormats=Te;exports.useUserSettings=S;exports.useWorkspacePaneWithId=ke;