@kvaser/canking-api 7.4.0 → 7.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/dist/hooks/index.d.ts +0 -6
  2. package/dist/index.js +1 -1
  3. package/dist/index.mjs +159 -152
  4. package/doc/enums/models.AccessMode.html +2 -2
  5. package/doc/enums/models.CanChannelCap.html +2 -2
  6. package/doc/enums/models.CanConfigMode.html +2 -2
  7. package/doc/enums/models.CanFrameFlag.html +2 -2
  8. package/doc/enums/models.CanMessageFilterType.html +2 -2
  9. package/doc/enums/models.CanMode.html +2 -2
  10. package/doc/enums/models.DecimalChar.html +2 -2
  11. package/doc/enums/models.FileConflictAction.html +2 -2
  12. package/doc/enums/models.LinFrameFlag.html +2 -2
  13. package/doc/enums/models.LogFileFormat.html +2 -2
  14. package/doc/enums/models.LogLevel.html +2 -2
  15. package/doc/enums/models.LogReplayState.html +2 -2
  16. package/doc/enums/models.LoggerState.html +2 -2
  17. package/doc/enums/models.Separator.html +2 -2
  18. package/doc/enums/models.SignalEncoding.html +2 -2
  19. package/doc/enums/models.SignalType.html +2 -2
  20. package/doc/enums/models.SignalValueTriggerOperator.html +2 -2
  21. package/doc/enums/models.StatusLevel.html +2 -2
  22. package/doc/enums/models.TimeReference.html +2 -2
  23. package/doc/enums/models.TriggerOperator.html +2 -2
  24. package/doc/functions/controls.CanChannelSelectControl.html +2 -2
  25. package/doc/functions/controls.CanIdentifierControl.html +2 -2
  26. package/doc/functions/controls.CanIdentifierFrameControl.html +2 -2
  27. package/doc/functions/controls.CanIdentifierGeneratorControl.html +2 -2
  28. package/doc/functions/controls.CanIdentifierGeneratorSettingsControl.html +2 -2
  29. package/doc/functions/controls.CanKingDataProvider.html +2 -2
  30. package/doc/functions/controls.CheckboxControl.html +2 -2
  31. package/doc/functions/controls.ColorControl.html +2 -2
  32. package/doc/functions/controls.ColumnItemControl.html +2 -2
  33. package/doc/functions/controls.ContextMenu.html +2 -2
  34. package/doc/functions/controls.DropdownButton.html +2 -2
  35. package/doc/functions/controls.DropdownButtonTextItems.html +2 -2
  36. package/doc/functions/controls.DropdownPanel.html +2 -2
  37. package/doc/functions/controls.FormControlRow.html +2 -2
  38. package/doc/functions/controls.InlineEditor.html +2 -2
  39. package/doc/functions/controls.LinChannelSelectControl.html +2 -2
  40. package/doc/functions/controls.LinIdentifierControl.html +2 -2
  41. package/doc/functions/controls.LinIdentifierFrameControl.html +2 -2
  42. package/doc/functions/controls.LinIdentifierGeneratorControl.html +2 -2
  43. package/doc/functions/controls.LinIdentifierGeneratorSettingsControl.html +2 -2
  44. package/doc/functions/controls.NumberRangeControl.html +2 -2
  45. package/doc/functions/controls.RadioControl.html +2 -2
  46. package/doc/functions/controls.RadioGroupControl.html +2 -2
  47. package/doc/functions/controls.SectionControl.html +2 -2
  48. package/doc/functions/controls.SelectControl.html +2 -2
  49. package/doc/functions/controls.SelectMessageDialog.html +2 -2
  50. package/doc/functions/controls.SelectSignalDialog.html +2 -2
  51. package/doc/functions/controls.SelectSignalsControl.html +2 -2
  52. package/doc/functions/controls.TableControl.html +2 -2
  53. package/doc/functions/controls.TextControl.html +2 -2
  54. package/doc/functions/controls.ToolbarControl.html +2 -2
  55. package/doc/functions/controls.ValidateableTextControl.html +2 -2
  56. package/doc/functions/controls.useColumnItem.html +2 -2
  57. package/doc/functions/controls.useColumnItems.html +2 -2
  58. package/doc/functions/controls.useMessageDatabases.html +2 -2
  59. package/doc/functions/hooks.useAvailableProtocols.html +2 -2
  60. package/doc/functions/hooks.useDevices.html +2 -2
  61. package/doc/functions/hooks.useFixedPositionModeMeasurementData.html +2 -2
  62. package/doc/functions/hooks.useIsOnline.html +2 -2
  63. package/doc/functions/hooks.useLanguage.html +2 -2
  64. package/doc/functions/hooks.useLocalizedStrings.html +2 -2
  65. package/doc/functions/hooks.useLogMessages.html +2 -2
  66. package/doc/functions/hooks.useMaxDataBytes.html +2 -2
  67. package/doc/functions/hooks.useMeasurementSetup.html +2 -2
  68. package/doc/functions/hooks.useMeasurementStatus.html +2 -2
  69. package/doc/functions/hooks.useMessageData.html +2 -2
  70. package/doc/functions/hooks.useMessageLogFileFormats.html +2 -2
  71. package/doc/functions/hooks.useNewMeasurementData.html +2 -2
  72. package/doc/functions/hooks.useNodeStatus.html +2 -2
  73. package/doc/functions/hooks.useNumericRadix.html +2 -2
  74. package/doc/functions/hooks.useOnlineStatus.html +2 -2
  75. package/doc/functions/hooks.useOnlineStatusSync.html +2 -2
  76. package/doc/functions/hooks.useOverallStatusLevel.html +2 -2
  77. package/doc/functions/hooks.useProjectData.html +2 -2
  78. package/doc/functions/hooks.useProjectDataSlice.html +2 -2
  79. package/doc/functions/hooks.useRecentProjectFiles.html +2 -2
  80. package/doc/functions/hooks.useRunningPeriodicTransmissions.html +2 -2
  81. package/doc/functions/hooks.useScrollModeMeasurementData.html +2 -2
  82. package/doc/functions/hooks.useSessionData.html +2 -2
  83. package/doc/functions/hooks.useSessionDataSlice.html +2 -2
  84. package/doc/functions/hooks.useSignalData.html +2 -2
  85. package/doc/functions/hooks.useSignalDataEnvelopes.html +2 -2
  86. package/doc/functions/hooks.useSignalLogFileFormats.html +2 -2
  87. package/doc/functions/hooks.useUndo.html +2 -2
  88. package/doc/functions/hooks.useUndoRef.html +2 -2
  89. package/doc/functions/hooks.useUndoSessionDataSlice.html +2 -2
  90. package/doc/functions/hooks.useUserSettings.html +2 -2
  91. package/doc/functions/hooks.useWorkspacePaneWithId.html +2 -2
  92. package/doc/functions/ipc.addDataProcessor.html +2 -2
  93. package/doc/functions/ipc.addSource.html +2 -2
  94. package/doc/functions/ipc.addTarget.html +2 -2
  95. package/doc/functions/ipc.clearLinMessage.html +2 -2
  96. package/doc/functions/ipc.connectNodes.html +2 -2
  97. package/doc/functions/ipc.deleteDataProcessor.html +2 -2
  98. package/doc/functions/ipc.deleteSource.html +2 -2
  99. package/doc/functions/ipc.deleteTarget.html +2 -2
  100. package/doc/functions/ipc.disableNode.html +2 -2
  101. package/doc/functions/ipc.disconnectNodes.html +2 -2
  102. package/doc/functions/ipc.enableNode.html +2 -2
  103. package/doc/functions/ipc.getFirstAndLatestTimestamp.html +2 -2
  104. package/doc/functions/ipc.getFirstTimestamp.html +2 -2
  105. package/doc/functions/ipc.getFrameDefinitions.html +2 -2
  106. package/doc/functions/ipc.getLatestTimestamp.html +2 -2
  107. package/doc/functions/ipc.getLogger.html +2 -2
  108. package/doc/functions/ipc.getMessageDataBeforeTimestamp.html +2 -2
  109. package/doc/functions/ipc.getMessageLogFileFormats.html +2 -2
  110. package/doc/functions/ipc.getSignalLogFileFormats.html +2 -2
  111. package/doc/functions/ipc.requestLinMessage.html +2 -2
  112. package/doc/functions/ipc.sendCanMessage.html +2 -2
  113. package/doc/functions/ipc.sendMessage.html +2 -2
  114. package/doc/functions/ipc.showMessageBox.html +2 -2
  115. package/doc/functions/ipc.showQuestionBox.html +2 -2
  116. package/doc/functions/ipc.startLogReplay.html +2 -2
  117. package/doc/functions/ipc.startMeasurement.html +2 -2
  118. package/doc/functions/ipc.startPeriodicTransmission.html +2 -2
  119. package/doc/functions/ipc.stopLogReplay.html +2 -2
  120. package/doc/functions/ipc.stopMeasurement.html +2 -2
  121. package/doc/functions/ipc.stopPeriodicTransmission.html +2 -2
  122. package/doc/functions/ipc.updateDataProcessor.html +2 -2
  123. package/doc/functions/ipc.updateLinMessage.html +2 -2
  124. package/doc/functions/ipc.updatePeriodicTransmission.html +2 -2
  125. package/doc/functions/ipc.updateSource.html +2 -2
  126. package/doc/functions/ipc.updateTarget.html +2 -2
  127. package/doc/functions/models.decimalToFixed.html +2 -2
  128. package/doc/functions/models.decimalToHex.html +2 -2
  129. package/doc/functions/models.deep_equal.html +2 -2
  130. package/doc/functions/models.deserializeFrame.html +2 -2
  131. package/doc/functions/models.jsonReplacer.html +2 -2
  132. package/doc/functions/models.jsonReviver.html +2 -2
  133. package/doc/functions/models.longToNumber.html +2 -2
  134. package/doc/functions/models.serializeFrame.html +2 -2
  135. package/doc/hierarchy.html +1 -1
  136. package/doc/index.html +2 -2
  137. package/doc/interfaces/controls.ButtonGroupProps.html +2 -2
  138. package/doc/interfaces/controls.ButtonProps.html +2 -2
  139. package/doc/interfaces/controls.CanChannelSelectControlProps.html +2 -2
  140. package/doc/interfaces/controls.CanIdentifierControlProps.html +2 -2
  141. package/doc/interfaces/controls.CanIdentifierFrameControlProps.html +2 -2
  142. package/doc/interfaces/controls.CanIdentifierGeneratorControlProps.html +2 -2
  143. package/doc/interfaces/controls.CanIdentifierGeneratorSettingsControlProps.html +2 -2
  144. package/doc/interfaces/controls.CheckboxControlProps.html +2 -2
  145. package/doc/interfaces/controls.ContextMenuProps.html +2 -2
  146. package/doc/interfaces/controls.DropdownButtonChildrenProps.html +2 -2
  147. package/doc/interfaces/controls.DropdownButtonProps.html +2 -2
  148. package/doc/interfaces/controls.DropdownButtonTextItemsProps.html +2 -2
  149. package/doc/interfaces/controls.DropdownPanelProps.html +2 -2
  150. package/doc/interfaces/controls.FormControlRowProps.html +2 -2
  151. package/doc/interfaces/controls.IExtensionWorkspaceViewProps.html +2 -2
  152. package/doc/interfaces/controls.ILocalizedStrings.html +2 -2
  153. package/doc/interfaces/controls.IMessageDatabase.html +2 -2
  154. package/doc/interfaces/controls.InlineEditorProps.html +2 -2
  155. package/doc/interfaces/controls.LabelProps.html +2 -2
  156. package/doc/interfaces/controls.LinChannelSelectControlProps.html +2 -2
  157. package/doc/interfaces/controls.LinIdentifierControlProps.html +2 -2
  158. package/doc/interfaces/controls.LinIdentifierFrameControlProps.html +2 -2
  159. package/doc/interfaces/controls.LinIdentifierGeneratorControlProps.html +2 -2
  160. package/doc/interfaces/controls.LinIdentifierGeneratorSettingsControlProps.html +2 -2
  161. package/doc/interfaces/controls.NumberRangeControlProps.html +2 -2
  162. package/doc/interfaces/controls.RadioControlProps.html +2 -2
  163. package/doc/interfaces/controls.RadioGroupControlProps.html +2 -2
  164. package/doc/interfaces/controls.SectionControlProps.html +2 -2
  165. package/doc/interfaces/controls.SelectControlProps.html +2 -2
  166. package/doc/interfaces/controls.SelectMessageDialogProps.html +2 -2
  167. package/doc/interfaces/controls.SelectSignalDialogProps.html +2 -2
  168. package/doc/interfaces/controls.SelectSignalsControlProps.html +2 -2
  169. package/doc/interfaces/controls.SelectedSignalInfo.html +2 -2
  170. package/doc/interfaces/controls.SelectedSignalInfoChangeArgs.html +2 -2
  171. package/doc/interfaces/controls.TableColumn.html +2 -2
  172. package/doc/interfaces/controls.TableControlProps.html +2 -2
  173. package/doc/interfaces/controls.TextControlProps.html +2 -2
  174. package/doc/interfaces/controls.ToggleButtonGroupProps.html +2 -2
  175. package/doc/interfaces/controls.ToggleButtonProps.html +2 -2
  176. package/doc/interfaces/controls.ToolbarControlProps.html +2 -2
  177. package/doc/interfaces/controls.ValidateableTextControlProps.html +2 -2
  178. package/doc/interfaces/controls.toolbarItem.html +2 -2
  179. package/doc/interfaces/hooks.IEnvelopeView.html +2 -2
  180. package/doc/interfaces/hooks.ISignalData.html +2 -2
  181. package/doc/interfaces/hooks.ISignalDataEnvelope.html +2 -2
  182. package/doc/interfaces/hooks.IUndoObject.html +2 -2
  183. package/doc/interfaces/hooks.IUndoState.html +2 -2
  184. package/doc/interfaces/ipc.ILogger.html +2 -2
  185. package/doc/interfaces/models.BaseNodeProperties.html +2 -2
  186. package/doc/interfaces/models.BusStatus.html +2 -2
  187. package/doc/interfaces/models.CanBusParamLimits.html +2 -2
  188. package/doc/interfaces/models.CanBusParams.html +2 -2
  189. package/doc/interfaces/models.CanChannelCapacity.html +2 -2
  190. package/doc/interfaces/models.CanChannelConfiguration.html +2 -2
  191. package/doc/interfaces/models.CanFrameFlags.html +2 -2
  192. package/doc/interfaces/models.CanMessageFilterSettings.html +2 -2
  193. package/doc/interfaces/models.Channel.html +2 -2
  194. package/doc/interfaces/models.ChannelSettings.html +2 -2
  195. package/doc/interfaces/models.DataProcessingStatus.html +2 -2
  196. package/doc/interfaces/models.DataProcessorNodeProperties.html +2 -2
  197. package/doc/interfaces/models.DatabasesSettings.html +2 -2
  198. package/doc/interfaces/models.Device.html +2 -2
  199. package/doc/interfaces/models.Devices.html +2 -2
  200. package/doc/interfaces/models.Empty.html +2 -2
  201. package/doc/interfaces/models.ErrorStatus.html +2 -2
  202. package/doc/interfaces/models.FixedPosFrameIdentifier.html +2 -2
  203. package/doc/interfaces/models.Frame.html +2 -2
  204. package/doc/interfaces/models.FrameDefinition.html +2 -2
  205. package/doc/interfaces/models.FrameDefinitions.html +2 -2
  206. package/doc/interfaces/models.FramePropertyValue.html +2 -2
  207. package/doc/interfaces/models.FrameReceivedTrigger.html +2 -2
  208. package/doc/interfaces/models.Frames.html +2 -2
  209. package/doc/interfaces/models.IUserSettings.html +2 -2
  210. package/doc/interfaces/models.IWorkspaceComponentPaneData.html +2 -2
  211. package/doc/interfaces/models.IWorkspaceContainerPaneData.html +2 -2
  212. package/doc/interfaces/models.IWorkspacePaneData.html +2 -2
  213. package/doc/interfaces/models.InterpreterSettings.html +2 -2
  214. package/doc/interfaces/models.J1939InterpreterSettings.html +2 -2
  215. package/doc/interfaces/models.LinChannelConfiguration.html +2 -2
  216. package/doc/interfaces/models.LinFrameFlags.html +2 -2
  217. package/doc/interfaces/models.LogMessage.html +2 -2
  218. package/doc/interfaces/models.LogMessages.html +2 -2
  219. package/doc/interfaces/models.LogReplaySettings.html +2 -2
  220. package/doc/interfaces/models.LogReplayStatus.html +2 -2
  221. package/doc/interfaces/models.LoggerStatus.html +2 -2
  222. package/doc/interfaces/models.MeasurementSetup.html +2 -2
  223. package/doc/interfaces/models.MessageLoggerSettings.html +2 -2
  224. package/doc/interfaces/models.NodeStatus.html +2 -2
  225. package/doc/interfaces/models.NodeStatuses.html +2 -2
  226. package/doc/interfaces/models.OnlineStatus.html +2 -2
  227. package/doc/interfaces/models.PeriodicTransmissionSettings.html +2 -2
  228. package/doc/interfaces/models.ServiceExtensionSettings.html +2 -2
  229. package/doc/interfaces/models.SignalDefinition.html +2 -2
  230. package/doc/interfaces/models.SignalDefinitions.html +2 -2
  231. package/doc/interfaces/models.SignalFilterSettings.html +2 -2
  232. package/doc/interfaces/models.SignalLoggerSettings.html +2 -2
  233. package/doc/interfaces/models.SignalValue.html +2 -2
  234. package/doc/interfaces/models.SignalValueTrigger.html +2 -2
  235. package/doc/interfaces/models.SourceNodeProperties.html +2 -2
  236. package/doc/interfaces/models.TargetNodeProperties.html +2 -2
  237. package/doc/interfaces/models.TdcConfiguration.html +2 -2
  238. package/doc/interfaces/models.TriggerSettings.html +2 -2
  239. package/doc/interfaces/models.WriteFrame.html +2 -2
  240. package/doc/modules/controls.html +2 -2
  241. package/doc/modules/hooks.html +2 -2
  242. package/doc/modules/ipc.html +2 -2
  243. package/doc/modules/models.html +2 -2
  244. package/doc/modules.html +1 -1
  245. package/doc/types/controls.ContextMenuOption.html +2 -2
  246. package/doc/types/controls.SelectOption.html +2 -2
  247. package/doc/types/controls.StringsMap.html +2 -2
  248. package/doc/types/controls.canIdentifierGeneratorType.html +2 -2
  249. package/doc/types/controls.canIdentifierType.html +2 -2
  250. package/doc/types/controls.linIdentifierGeneratorType.html +2 -2
  251. package/doc/types/hooks.OnGoingOfflineCallback.html +2 -2
  252. package/doc/types/hooks.OnGoingOnlineCallback.html +2 -2
  253. package/doc/types/models.SerializableFrame.html +2 -2
  254. package/doc/variables/controls.FillBox.html +2 -2
  255. package/doc/variables/controls.OneLineButton.html +2 -2
  256. package/doc/variables/controls.SizedBox.html +2 -2
  257. package/doc/variables/controls.TabsPanel.html +2 -2
  258. package/doc/variables/models.defaultUserSettings.html +2 -2
  259. package/doc_md/README.md +1 -1
  260. package/doc_md/controls/README.md +1 -1
  261. package/doc_md/controls/functions/CanChannelSelectControl.md +1 -1
  262. package/doc_md/controls/functions/CanIdentifierControl.md +1 -1
  263. package/doc_md/controls/functions/CanIdentifierFrameControl.md +1 -1
  264. package/doc_md/controls/functions/CanIdentifierGeneratorControl.md +1 -1
  265. package/doc_md/controls/functions/CanIdentifierGeneratorSettingsControl.md +1 -1
  266. package/doc_md/controls/functions/CanKingDataProvider.md +1 -1
  267. package/doc_md/controls/functions/CheckboxControl.md +1 -1
  268. package/doc_md/controls/functions/ColorControl.md +1 -1
  269. package/doc_md/controls/functions/ColumnItemControl.md +1 -1
  270. package/doc_md/controls/functions/ContextMenu.md +1 -1
  271. package/doc_md/controls/functions/DropdownButton.md +1 -1
  272. package/doc_md/controls/functions/DropdownButtonTextItems.md +1 -1
  273. package/doc_md/controls/functions/DropdownPanel.md +1 -1
  274. package/doc_md/controls/functions/FormControlRow.md +1 -1
  275. package/doc_md/controls/functions/InlineEditor.md +1 -1
  276. package/doc_md/controls/functions/LinChannelSelectControl.md +1 -1
  277. package/doc_md/controls/functions/LinIdentifierControl.md +1 -1
  278. package/doc_md/controls/functions/LinIdentifierFrameControl.md +1 -1
  279. package/doc_md/controls/functions/LinIdentifierGeneratorControl.md +1 -1
  280. package/doc_md/controls/functions/LinIdentifierGeneratorSettingsControl.md +1 -1
  281. package/doc_md/controls/functions/NumberRangeControl.md +1 -1
  282. package/doc_md/controls/functions/RadioControl.md +1 -1
  283. package/doc_md/controls/functions/RadioGroupControl.md +1 -1
  284. package/doc_md/controls/functions/SectionControl.md +1 -1
  285. package/doc_md/controls/functions/SelectControl.md +1 -1
  286. package/doc_md/controls/functions/SelectMessageDialog.md +1 -1
  287. package/doc_md/controls/functions/SelectSignalDialog.md +1 -1
  288. package/doc_md/controls/functions/SelectSignalsControl.md +1 -1
  289. package/doc_md/controls/functions/TableControl.md +1 -1
  290. package/doc_md/controls/functions/TextControl.md +1 -1
  291. package/doc_md/controls/functions/ToolbarControl.md +1 -1
  292. package/doc_md/controls/functions/ValidateableTextControl.md +1 -1
  293. package/doc_md/controls/functions/useColumnItem.md +1 -1
  294. package/doc_md/controls/functions/useColumnItems.md +1 -1
  295. package/doc_md/controls/functions/useMessageDatabases.md +1 -1
  296. package/doc_md/controls/interfaces/ButtonGroupProps.md +1 -1
  297. package/doc_md/controls/interfaces/ButtonProps.md +1 -1
  298. package/doc_md/controls/interfaces/CanChannelSelectControlProps.md +1 -1
  299. package/doc_md/controls/interfaces/CanIdentifierControlProps.md +1 -1
  300. package/doc_md/controls/interfaces/CanIdentifierFrameControlProps.md +1 -1
  301. package/doc_md/controls/interfaces/CanIdentifierGeneratorControlProps.md +1 -1
  302. package/doc_md/controls/interfaces/CanIdentifierGeneratorSettingsControlProps.md +1 -1
  303. package/doc_md/controls/interfaces/CheckboxControlProps.md +1 -1
  304. package/doc_md/controls/interfaces/ContextMenuProps.md +1 -1
  305. package/doc_md/controls/interfaces/DropdownButtonChildrenProps.md +1 -1
  306. package/doc_md/controls/interfaces/DropdownButtonProps.md +1 -1
  307. package/doc_md/controls/interfaces/DropdownButtonTextItemsProps.md +1 -1
  308. package/doc_md/controls/interfaces/DropdownPanelProps.md +1 -1
  309. package/doc_md/controls/interfaces/FormControlRowProps.md +1 -1
  310. package/doc_md/controls/interfaces/IExtensionWorkspaceViewProps.md +1 -1
  311. package/doc_md/controls/interfaces/ILocalizedStrings.md +1 -1
  312. package/doc_md/controls/interfaces/IMessageDatabase.md +1 -1
  313. package/doc_md/controls/interfaces/InlineEditorProps.md +1 -1
  314. package/doc_md/controls/interfaces/LabelProps.md +1 -1
  315. package/doc_md/controls/interfaces/LinChannelSelectControlProps.md +1 -1
  316. package/doc_md/controls/interfaces/LinIdentifierControlProps.md +1 -1
  317. package/doc_md/controls/interfaces/LinIdentifierFrameControlProps.md +1 -1
  318. package/doc_md/controls/interfaces/LinIdentifierGeneratorControlProps.md +1 -1
  319. package/doc_md/controls/interfaces/LinIdentifierGeneratorSettingsControlProps.md +1 -1
  320. package/doc_md/controls/interfaces/NumberRangeControlProps.md +1 -1
  321. package/doc_md/controls/interfaces/RadioControlProps.md +1 -1
  322. package/doc_md/controls/interfaces/RadioGroupControlProps.md +1 -1
  323. package/doc_md/controls/interfaces/SectionControlProps.md +1 -1
  324. package/doc_md/controls/interfaces/SelectControlProps.md +1 -1
  325. package/doc_md/controls/interfaces/SelectMessageDialogProps.md +1 -1
  326. package/doc_md/controls/interfaces/SelectSignalDialogProps.md +1 -1
  327. package/doc_md/controls/interfaces/SelectSignalsControlProps.md +1 -1
  328. package/doc_md/controls/interfaces/SelectedSignalInfo.md +1 -1
  329. package/doc_md/controls/interfaces/SelectedSignalInfoChangeArgs.md +1 -1
  330. package/doc_md/controls/interfaces/TableColumn.md +1 -1
  331. package/doc_md/controls/interfaces/TableControlProps.md +1 -1
  332. package/doc_md/controls/interfaces/TextControlProps.md +1 -1
  333. package/doc_md/controls/interfaces/ToggleButtonGroupProps.md +1 -1
  334. package/doc_md/controls/interfaces/ToggleButtonProps.md +1 -1
  335. package/doc_md/controls/interfaces/ToolbarControlProps.md +1 -1
  336. package/doc_md/controls/interfaces/ValidateableTextControlProps.md +1 -1
  337. package/doc_md/controls/interfaces/toolbarItem.md +1 -1
  338. package/doc_md/controls/type-aliases/ContextMenuOption.md +1 -1
  339. package/doc_md/controls/type-aliases/SelectOption.md +1 -1
  340. package/doc_md/controls/type-aliases/StringsMap.md +1 -1
  341. package/doc_md/controls/type-aliases/canIdentifierGeneratorType.md +1 -1
  342. package/doc_md/controls/type-aliases/canIdentifierType.md +1 -1
  343. package/doc_md/controls/type-aliases/linIdentifierGeneratorType.md +1 -1
  344. package/doc_md/controls/variables/FillBox.md +1 -1
  345. package/doc_md/controls/variables/OneLineButton.md +1 -1
  346. package/doc_md/controls/variables/SizedBox.md +1 -1
  347. package/doc_md/controls/variables/TabsPanel.md +1 -1
  348. package/doc_md/hooks/README.md +1 -1
  349. package/doc_md/hooks/functions/useAvailableProtocols.md +1 -1
  350. package/doc_md/hooks/functions/useDevices.md +1 -1
  351. package/doc_md/hooks/functions/useFixedPositionModeMeasurementData.md +1 -1
  352. package/doc_md/hooks/functions/useIsOnline.md +1 -1
  353. package/doc_md/hooks/functions/useLanguage.md +1 -1
  354. package/doc_md/hooks/functions/useLocalizedStrings.md +1 -1
  355. package/doc_md/hooks/functions/useLogMessages.md +1 -1
  356. package/doc_md/hooks/functions/useMaxDataBytes.md +1 -1
  357. package/doc_md/hooks/functions/useMeasurementSetup.md +1 -1
  358. package/doc_md/hooks/functions/useMeasurementStatus.md +1 -1
  359. package/doc_md/hooks/functions/useMessageData.md +1 -1
  360. package/doc_md/hooks/functions/useMessageLogFileFormats.md +1 -1
  361. package/doc_md/hooks/functions/useNewMeasurementData.md +1 -1
  362. package/doc_md/hooks/functions/useNodeStatus.md +1 -1
  363. package/doc_md/hooks/functions/useNumericRadix.md +1 -1
  364. package/doc_md/hooks/functions/useOnlineStatus.md +1 -1
  365. package/doc_md/hooks/functions/useOnlineStatusSync.md +1 -1
  366. package/doc_md/hooks/functions/useOverallStatusLevel.md +1 -1
  367. package/doc_md/hooks/functions/useProjectData.md +1 -1
  368. package/doc_md/hooks/functions/useProjectDataSlice.md +1 -1
  369. package/doc_md/hooks/functions/useRecentProjectFiles.md +1 -1
  370. package/doc_md/hooks/functions/useRunningPeriodicTransmissions.md +1 -1
  371. package/doc_md/hooks/functions/useScrollModeMeasurementData.md +1 -1
  372. package/doc_md/hooks/functions/useSessionData.md +1 -1
  373. package/doc_md/hooks/functions/useSessionDataSlice.md +1 -1
  374. package/doc_md/hooks/functions/useSignalData.md +1 -1
  375. package/doc_md/hooks/functions/useSignalDataEnvelopes.md +1 -1
  376. package/doc_md/hooks/functions/useSignalLogFileFormats.md +1 -1
  377. package/doc_md/hooks/functions/useUndo.md +1 -1
  378. package/doc_md/hooks/functions/useUndoRef.md +1 -1
  379. package/doc_md/hooks/functions/useUndoSessionDataSlice.md +1 -1
  380. package/doc_md/hooks/functions/useUserSettings.md +1 -1
  381. package/doc_md/hooks/functions/useWorkspacePaneWithId.md +1 -1
  382. package/doc_md/hooks/interfaces/IEnvelopeView.md +1 -1
  383. package/doc_md/hooks/interfaces/ISignalData.md +1 -1
  384. package/doc_md/hooks/interfaces/ISignalDataEnvelope.md +1 -1
  385. package/doc_md/hooks/interfaces/IUndoObject.md +1 -1
  386. package/doc_md/hooks/interfaces/IUndoState.md +1 -1
  387. package/doc_md/hooks/type-aliases/OnGoingOfflineCallback.md +1 -1
  388. package/doc_md/hooks/type-aliases/OnGoingOnlineCallback.md +1 -1
  389. package/doc_md/ipc/README.md +1 -1
  390. package/doc_md/ipc/functions/addDataProcessor.md +1 -1
  391. package/doc_md/ipc/functions/addSource.md +1 -1
  392. package/doc_md/ipc/functions/addTarget.md +1 -1
  393. package/doc_md/ipc/functions/clearLinMessage.md +1 -1
  394. package/doc_md/ipc/functions/connectNodes.md +1 -1
  395. package/doc_md/ipc/functions/deleteDataProcessor.md +1 -1
  396. package/doc_md/ipc/functions/deleteSource.md +1 -1
  397. package/doc_md/ipc/functions/deleteTarget.md +1 -1
  398. package/doc_md/ipc/functions/disableNode.md +1 -1
  399. package/doc_md/ipc/functions/disconnectNodes.md +1 -1
  400. package/doc_md/ipc/functions/enableNode.md +1 -1
  401. package/doc_md/ipc/functions/getFirstAndLatestTimestamp.md +1 -1
  402. package/doc_md/ipc/functions/getFirstTimestamp.md +1 -1
  403. package/doc_md/ipc/functions/getFrameDefinitions.md +1 -1
  404. package/doc_md/ipc/functions/getLatestTimestamp.md +1 -1
  405. package/doc_md/ipc/functions/getLogger.md +1 -1
  406. package/doc_md/ipc/functions/getMessageDataBeforeTimestamp.md +1 -1
  407. package/doc_md/ipc/functions/getMessageLogFileFormats.md +1 -1
  408. package/doc_md/ipc/functions/getSignalLogFileFormats.md +1 -1
  409. package/doc_md/ipc/functions/requestLinMessage.md +1 -1
  410. package/doc_md/ipc/functions/sendCanMessage.md +1 -1
  411. package/doc_md/ipc/functions/sendMessage.md +1 -1
  412. package/doc_md/ipc/functions/showMessageBox.md +1 -1
  413. package/doc_md/ipc/functions/showQuestionBox.md +1 -1
  414. package/doc_md/ipc/functions/startLogReplay.md +1 -1
  415. package/doc_md/ipc/functions/startMeasurement.md +1 -1
  416. package/doc_md/ipc/functions/startPeriodicTransmission.md +1 -1
  417. package/doc_md/ipc/functions/stopLogReplay.md +1 -1
  418. package/doc_md/ipc/functions/stopMeasurement.md +1 -1
  419. package/doc_md/ipc/functions/stopPeriodicTransmission.md +1 -1
  420. package/doc_md/ipc/functions/updateDataProcessor.md +1 -1
  421. package/doc_md/ipc/functions/updateLinMessage.md +1 -1
  422. package/doc_md/ipc/functions/updatePeriodicTransmission.md +1 -1
  423. package/doc_md/ipc/functions/updateSource.md +1 -1
  424. package/doc_md/ipc/functions/updateTarget.md +1 -1
  425. package/doc_md/ipc/interfaces/ILogger.md +1 -1
  426. package/doc_md/models/README.md +1 -1
  427. package/doc_md/models/enumerations/AccessMode.md +1 -1
  428. package/doc_md/models/enumerations/CanChannelCap.md +1 -1
  429. package/doc_md/models/enumerations/CanConfigMode.md +1 -1
  430. package/doc_md/models/enumerations/CanFrameFlag.md +1 -1
  431. package/doc_md/models/enumerations/CanMessageFilterType.md +1 -1
  432. package/doc_md/models/enumerations/CanMode.md +1 -1
  433. package/doc_md/models/enumerations/DecimalChar.md +1 -1
  434. package/doc_md/models/enumerations/FileConflictAction.md +1 -1
  435. package/doc_md/models/enumerations/LinFrameFlag.md +1 -1
  436. package/doc_md/models/enumerations/LogFileFormat.md +1 -1
  437. package/doc_md/models/enumerations/LogLevel.md +1 -1
  438. package/doc_md/models/enumerations/LogReplayState.md +1 -1
  439. package/doc_md/models/enumerations/LoggerState.md +1 -1
  440. package/doc_md/models/enumerations/Separator.md +1 -1
  441. package/doc_md/models/enumerations/SignalEncoding.md +1 -1
  442. package/doc_md/models/enumerations/SignalType.md +1 -1
  443. package/doc_md/models/enumerations/SignalValueTriggerOperator.md +1 -1
  444. package/doc_md/models/enumerations/StatusLevel.md +1 -1
  445. package/doc_md/models/enumerations/TimeReference.md +1 -1
  446. package/doc_md/models/enumerations/TriggerOperator.md +1 -1
  447. package/doc_md/models/functions/decimalToFixed.md +1 -1
  448. package/doc_md/models/functions/decimalToHex.md +1 -1
  449. package/doc_md/models/functions/deep_equal.md +1 -1
  450. package/doc_md/models/functions/deserializeFrame.md +1 -1
  451. package/doc_md/models/functions/jsonReplacer.md +1 -1
  452. package/doc_md/models/functions/jsonReviver.md +1 -1
  453. package/doc_md/models/functions/longToNumber.md +1 -1
  454. package/doc_md/models/functions/serializeFrame.md +1 -1
  455. package/doc_md/models/interfaces/BaseNodeProperties.md +1 -1
  456. package/doc_md/models/interfaces/BusStatus.md +1 -1
  457. package/doc_md/models/interfaces/CanBusParamLimits.md +1 -1
  458. package/doc_md/models/interfaces/CanBusParams.md +1 -1
  459. package/doc_md/models/interfaces/CanChannelCapacity.md +1 -1
  460. package/doc_md/models/interfaces/CanChannelConfiguration.md +1 -1
  461. package/doc_md/models/interfaces/CanFrameFlags.md +1 -1
  462. package/doc_md/models/interfaces/CanMessageFilterSettings.md +1 -1
  463. package/doc_md/models/interfaces/Channel.md +1 -1
  464. package/doc_md/models/interfaces/ChannelSettings.md +1 -1
  465. package/doc_md/models/interfaces/DataProcessingStatus.md +1 -1
  466. package/doc_md/models/interfaces/DataProcessorNodeProperties.md +1 -1
  467. package/doc_md/models/interfaces/DatabasesSettings.md +1 -1
  468. package/doc_md/models/interfaces/Device.md +1 -1
  469. package/doc_md/models/interfaces/Devices.md +1 -1
  470. package/doc_md/models/interfaces/Empty.md +1 -1
  471. package/doc_md/models/interfaces/ErrorStatus.md +1 -1
  472. package/doc_md/models/interfaces/FixedPosFrameIdentifier.md +1 -1
  473. package/doc_md/models/interfaces/Frame.md +1 -1
  474. package/doc_md/models/interfaces/FrameDefinition.md +1 -1
  475. package/doc_md/models/interfaces/FrameDefinitions.md +1 -1
  476. package/doc_md/models/interfaces/FramePropertyValue.md +1 -1
  477. package/doc_md/models/interfaces/FrameReceivedTrigger.md +1 -1
  478. package/doc_md/models/interfaces/Frames.md +1 -1
  479. package/doc_md/models/interfaces/IUserSettings.md +1 -1
  480. package/doc_md/models/interfaces/IWorkspaceComponentPaneData.md +1 -1
  481. package/doc_md/models/interfaces/IWorkspaceContainerPaneData.md +1 -1
  482. package/doc_md/models/interfaces/IWorkspacePaneData.md +1 -1
  483. package/doc_md/models/interfaces/InterpreterSettings.md +1 -1
  484. package/doc_md/models/interfaces/J1939InterpreterSettings.md +1 -1
  485. package/doc_md/models/interfaces/LinChannelConfiguration.md +1 -1
  486. package/doc_md/models/interfaces/LinFrameFlags.md +1 -1
  487. package/doc_md/models/interfaces/LogMessage.md +1 -1
  488. package/doc_md/models/interfaces/LogMessages.md +1 -1
  489. package/doc_md/models/interfaces/LogReplaySettings.md +1 -1
  490. package/doc_md/models/interfaces/LogReplayStatus.md +1 -1
  491. package/doc_md/models/interfaces/LoggerStatus.md +1 -1
  492. package/doc_md/models/interfaces/MeasurementSetup.md +1 -1
  493. package/doc_md/models/interfaces/MessageLoggerSettings.md +1 -1
  494. package/doc_md/models/interfaces/NodeStatus.md +1 -1
  495. package/doc_md/models/interfaces/NodeStatuses.md +1 -1
  496. package/doc_md/models/interfaces/OnlineStatus.md +1 -1
  497. package/doc_md/models/interfaces/PeriodicTransmissionSettings.md +1 -1
  498. package/doc_md/models/interfaces/ServiceExtensionSettings.md +1 -1
  499. package/doc_md/models/interfaces/SignalDefinition.md +1 -1
  500. package/doc_md/models/interfaces/SignalDefinitions.md +1 -1
  501. package/doc_md/models/interfaces/SignalFilterSettings.md +1 -1
  502. package/doc_md/models/interfaces/SignalLoggerSettings.md +1 -1
  503. package/doc_md/models/interfaces/SignalValue.md +1 -1
  504. package/doc_md/models/interfaces/SignalValueTrigger.md +1 -1
  505. package/doc_md/models/interfaces/SourceNodeProperties.md +1 -1
  506. package/doc_md/models/interfaces/TargetNodeProperties.md +1 -1
  507. package/doc_md/models/interfaces/TdcConfiguration.md +1 -1
  508. package/doc_md/models/interfaces/TriggerSettings.md +1 -1
  509. package/doc_md/models/interfaces/WriteFrame.md +1 -1
  510. package/doc_md/models/type-aliases/SerializableFrame.md +1 -1
  511. package/doc_md/models/variables/defaultUserSettings.md +1 -1
  512. package/doc_md/modules.md +2 -2
  513. package/package.json +1 -1
@@ -198,12 +198,6 @@ export declare enum SignalDataInitState {
198
198
  * This hook buffers incoming frame data during initialization (before frame keys and historical data are ready)
199
199
  * and merges it with historical data once available. This ensures no data is lost during the startup phase.
200
200
  *
201
- * @privateRemarks
202
- * Initialization follows a state machine:
203
- * - PENDING: Initial state, waiting for both frame keys and historical data
204
- * - FRAME_KEYS_READY/HISTORICAL_DATA_READY: One component is ready
205
- * - READY: Both components ready, processing live data
206
- *
207
201
  * @param id - The unique id of the view. This is passed to the view component as the `id` prop.
208
202
  * @param subscriptionName - The subscription name for the data. Must be unique per view. To avoid conflicts, use a descriptive name.
209
203
  * @param subscribedSignals - The signals to extract data for, including optional source identifiers. To avoid unnecessary re-renders, make sure to memoize this object.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var $e=Object.defineProperty;var We=(e,n,t)=>n in e?$e(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var de=(e,n,t)=>We(e,typeof n!="symbol"?n+"":n,t);const a=require("react"),k=require("uuid"),M=require("./models.js"),P=require("react/jsx-runtime"),V=require("@mui/material"),W=require("./ipc.js"),j=require("./status_params.js"),He=(e,n,...t)=>{let r=n;for(let s=0;s<t.length;s+=1){const c=`{${s}}`;if(r.indexOf(c)!==-1){const i=t[s];r=typeof i=="string"?r.replace(c,i):r.replace(c,i.toLocaleString(e))}}return r};class Ae{constructor(n,t){de(this,"language");de(this,"strings");this.language=n,this.strings=t}getString(n,...t){if(this.strings&&n in this.strings){const r=this.strings[n];return t.length>0?He(this.language,r,...t):r}return n}}const D=W.getLogger("DataProviders"),y=window.electron??M.electronApiFake,Q=new Map,Y=new Map,G=new Map,Z=new Map,ee=new Map,te=new Map,re=new Map,ne=new Map,se=new Map,ae=new Map;async function A(e,n,t,r){switch(n){case"devices-changed":{if(Q.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("dm-devices-changed",c);Q.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-devices",!1)}case"user-settings-changed":{if(Y.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("user-settings-changed",c);Y.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("app-get-user-settings")}case"new-log-messages":{if(G.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("new-log-messages",c);G.set(e,{remover:o,listener:c})}return Promise.resolve()}case"online-status-changed":{if(Z.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-is-online-changed",c);Z.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-online-status")}case"periodic-trans-started":{if(ee.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-periodic-trans-started",c);ee.set(e,{remover:o,listener:c})}return Promise.resolve("")}case"periodic-trans-stopped":{if(te.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-periodic-trans-stopped",c);te.set(e,{remover:o,listener:c})}return Promise.resolve("")}case"new-measurement-data":{if(re.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-new-measurement-data",c);re.set(e,{remover:o,listener:c})}return(r==null?void 0:r.numberOfHistoryFrames)>0?y.ipcRenderer.invoke("mm-get-measurement-data-before-timestamp",Number.MAX_SAFE_INTEGER,r.numberOfHistoryFrames):Promise.resolve([])}case"new-measurement-status":{if(ne.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-new-measurement-status",c);ne.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-node-statuses")}case"meas-setup-changed":{if(se.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("project-meas-setup-changed",c);se.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("prj-get-meas-setup")}case"workspace-panes-changed":{if(ae.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("project-workspace-panes-changed",c);ae.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("prj-get-workspace-panes")}}return Promise.reject(new Error("Invalid event type"))}const I=async(e,n)=>{switch(n){case"devices-changed":{const t=Q.get(e);t?(t.remover(),Q.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"user-settings-changed":{const t=Y.get(e);t?(t.remover(),Y.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-log-messages":{const t=G.get(e);t?(t.remover(),G.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"online-status-changed":{const t=Z.get(e);t?(t.remover(),Z.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-started":{const t=ee.get(e);t?(t.remover(),ee.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-stopped":{const t=te.get(e);t?(t.remover(),te.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-data":{const t=re.get(e);t?(t.remover(),re.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-status":{const t=ne.get(e);t?(t.remover(),ne.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"meas-setup-changed":{const t=se.get(e);t?(t.remover(),se.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"workspace-panes-changed":{const t=ae.get(e);t?(t.remover(),ae.delete(e)):D.warn("The callback has not been added as listener to this event!")}break}},Ee=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 Ve({children:e}){const n=K(),[t,r]=a.useState(V.createTheme(Ee(n.theme)));return a.useEffect(()=>{r(V.createTheme(Ee(n.theme)))},[n.theme]),P.jsxs(V.ThemeProvider,{theme:t,children:[P.jsx(V.CssBaseline,{}),e]})}const Xe=window!=null&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches:!1,Ie=Object.assign({},M.defaultUserSettings,{theme:Xe?"dark":"light"}),pe=a.createContext(Ie),Je=({initialUserSettings:e=void 0,children:n=void 0})=>{const[t,r]=a.useState(e??Ie);return a.useEffect(()=>{const s=new AbortController,c=k.v4();return A(c,"user-settings-changed",r).then(o=>{s.signal.aborted||r(o)}).catch(o=>{D.error("Failed to add user settings listener:",o)}),()=>{s.abort(),I(c,"user-settings-changed")}},[]),P.jsx(pe.Provider,{value:t,children:n})},he=a.createContext(null),Qe=({children:e=void 0})=>{const[n,t]=a.useState(null);return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("DevicesProvider",i)}},c=k.v4();return A(c,"devices-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add devices listener:",o)}),()=>{r.abort(),I(c,"devices-changed")}},[]),P.jsx(he.Provider,{value:n,children:e})},ve=a.createContext([]),Ye=({children:e=void 0})=>{const[n,t]=a.useState([]);return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("MeasurementStatusProvider",i)}},c=k.v4();return A(c,"new-measurement-status",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement status listener:",o)}),()=>{r.abort(),I(c,"new-measurement-status")}},[]),P.jsx(ve.Provider,{value:n,children:e})},ce=a.createContext({subscribedData:new Map}),Ge=({children:e=void 0})=>{const[n,t]=a.useState({subscribedData:new Map});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;const i=new Map;o.length>0&&o.forEach(u=>{const l=M.deserializeFrame(u),p=M.calculateSubscriptionKeyFromFrame(l);i.has(p)||i.set(p,[]);const d=i.get(p);d&&d.push(l)}),t(()=>({subscribedData:i}))}catch(i){D.error("MeasurementDataProvider",i)}},c=k.v4();return A(c,"new-measurement-data",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement data listener:",o)}),()=>{r.abort(),I(c,"new-measurement-data")}},[]),P.jsx(ce.Provider,{value:n,children:e})},ie=a.createContext({scrollData:[],fixedPositionData:[]}),Ze=({children:e=void 0})=>{const n=a.useRef(new M.DataBuffer(500)),t=a.useRef(new Map),[r,s]=a.useState({scrollData:[],fixedPositionData:[]});a.useEffect(()=>{const o=new AbortController,i=l=>{try{if(o.signal.aborted)return;const p=l.map(d=>M.deserializeFrame(d));p.length===0?n.current.clear():n.current.push(...p.slice(Math.max(0,p.length-500))),p.length===0?t.current.clear():p.forEach(d=>{t.current.set(d.fixedPosIdentifier??"",d)}),s(()=>({scrollData:Array.from(n.current),fixedPositionData:Array.from(t.current.values())}))}catch(p){D.error("MeasurementTraceDataProvider",p)}},u=k.v4();return A(u,"new-measurement-data",i,{numberOfHistoryFrames:500}).then(l=>i(l)).catch(l=>{D.error("Failed to add measurement data listener:",l)}),()=>{o.abort(),I(u,"new-measurement-data")}},[]);const c=a.useContext(q);return a.useEffect(()=>{c.isLoaded&&c.onlineStatus.isOnline&&(n.current.clear(),t.current.clear(),s({scrollData:[],fixedPositionData:[]}))},[c]),P.jsx(ie.Provider,{value:r,children:e})},Se=a.createContext({language:"en",sources:[],dataProcessors:[],targets:[]}),et=({children:e=void 0})=>{const[n,t]=a.useState({language:"en",sources:[],dataProcessors:[],targets:[]});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("MeasurementSetupProvider",i)}},c=k.v4();return A(c,"meas-setup-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement setup listener:",o)}),()=>{r.abort(),I(c,"meas-setup-changed")}},[]),P.jsx(Se.Provider,{value:n,children:e})},q=a.createContext({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!1}),tt=({children:e=void 0})=>{const[n,t]=a.useState({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!1});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t({onlineStatus:o,isLoaded:!0})}catch(i){D.error("OnlineStatusProvider",i),t({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!0})}},c=k.v4();return A(c,"online-status-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add online status listener:",o),t({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!0})}),()=>{r.abort(),I(c,"online-status-changed")}},[]),P.jsx(q.Provider,{value:n,children:e})},be=a.createContext([]),rt=({children:e=void 0})=>{const[n,t]=a.useState([]);return a.useEffect(()=>{t([]);const r=new AbortController,s=u=>{try{if(r.signal.aborted)return;t(l=>[...l,u])}catch(l){D.error("RunningPeriodicTransmissionsProvider - started",l)}},c=u=>{try{if(r.signal.aborted)return;t(l=>{const p=l.findIndex(h=>h===u);if(p===-1)return l;const d=[...l];return d.splice(p,1),d})}catch(l){D.error("RunningPeriodicTransmissionsProvider - stopped",l)}},o=k.v4();A(o,"periodic-trans-started",s);const i=k.v4();return A(i,"periodic-trans-stopped",c),()=>{r.abort(),I(o,"periodic-trans-started"),I(i,"periodic-trans-stopped")}},[]),P.jsx(be.Provider,{value:n,children:e})},xe=a.createContext([]),nt=({children:e=void 0})=>{const n=a.useRef(new M.DataBuffer(1e3)),[t,r]=a.useState([]);return a.useEffect(()=>{const s=new AbortController,c=i=>{try{if(s.signal.aborted)return;i===null?n.current.clear():n.current.push(...i),r(Array.from(n.current))}catch(u){D.error("LogMessagesProvider",u)}},o=k.v4();return A(o,"new-log-messages",c),()=>{s.abort(),I(o,"new-log-messages")}},[]),P.jsx(xe.Provider,{value:t,children:e})},B=a.createContext([[],()=>{}]),st=({children:e=void 0})=>{const[n,t]=a.useState(null),r=a.useCallback(s=>{if(n!==null)if(typeof s=="function"){const c=s(n);y.ipcRenderer.invoke("prj-update-project",{workspacePanes:c})}else y.ipcRenderer.invoke("prj-update-project",{workspacePanes:s})},[n]);return a.useEffect(()=>{const s=new AbortController,c=i=>{try{if(s.signal.aborted)return;t(u=>M.deep_equal(u,i)?u:i)}catch(u){D.error("WorkspacePanesProvider",u)}},o=k.v4();return A(o,"workspace-panes-changed",c).then(i=>c(i)).catch(i=>{D.error("Failed to add workspace panes listener:",i)}),()=>{s.abort(),I(o,"workspace-panes-changed")}},[]),P.jsx(B.Provider,{value:[n,r],children:e})},at=({initialUserSettings:e=void 0,children:n=void 0})=>P.jsx(Je,{initialUserSettings:e,children:P.jsx(Qe,{children:P.jsx(et,{children:P.jsx(Ye,{children:P.jsx(tt,{children:P.jsx(Ge,{children:P.jsx(Ze,{children:P.jsx(rt,{children:P.jsx(nt,{children:P.jsx(st,{children:P.jsx(Ve,{children:n})})})})})})})})})})}),U=window.electron??M.electronApiFake,L=W.getLogger("hooks"),K=()=>a.useContext(pe),ot=()=>{const e=K();return a.useMemo(()=>e.useHexNumericBase?16:10,[e.useHexNumericBase])},ct=()=>{const e=K();return a.useMemo(()=>e.maxDataBytes,[e.maxDataBytes])},it=()=>{const e=K();return a.useMemo(()=>e.language,[e.language])},ut=()=>{const e=K();return a.useMemo(()=>new Ae(e.language,e.strings),[e.language,e.strings])},lt=()=>{const e=K();return a.useMemo(()=>e.recentProjectFiles,[e.recentProjectFiles])},dt=()=>a.useContext(xe),ft=(e=!1)=>{const[n,t]=a.useState([]),r=we();return a.useEffect(()=>{const s=new AbortController;return U.ipcRenderer.invoke("rpc-get-message-log-file-formats",e).then(c=>{if(s.signal.aborted)return;const o=c.filter(i=>!i.supportedProtocols||i.supportedProtocols.length===0?!0:i.supportedProtocols.some(u=>r.includes(u)));t(o)}).catch(),()=>{s.abort()}},[r,e]),n},mt=()=>{const[e,n]=a.useState([]),t=we();return a.useEffect(()=>{const r=new AbortController;return U.ipcRenderer.invoke("rpc-get-signal-log-file-formats").then(s=>{if(r.signal.aborted)return;const c=s.filter(o=>!o.supportedProtocols||o.supportedProtocols.length===0?!0:o.supportedProtocols.some(i=>t.includes(i)));n(c)}).catch(),()=>{r.abort()}},[t]),e},gt=()=>a.useContext(he),Le=()=>a.useContext(Se),we=()=>{const e=Le(),[n,t]=a.useState(["CAN"]);return a.useEffect(()=>{var c;const r=new Set;(c=e.sources)==null||c.forEach(o=>{var i;(i=o.channelSettings)!=null&&i.protocols&&o.channelSettings.protocols.forEach(u=>r.add(u))}),r.size===0&&r.add("CAN");const s=Array.from(r).sort();t(o=>M.deep_equal(o,s)?o:s)},[e]),n},De=()=>a.useContext(ve),pt=e=>{const n=De();return a.useMemo(()=>n.find(r=>r.nodeId===e)??null,[e,n])};function ke(e){if(!e)return j.StatusLevel.STATUS_LEVEL_NONE;const n=Number(e.busOnStatus),t=Number(e.errorStatus),r=Number(e.overrunStatus);return Math.max(isNaN(n)?j.StatusLevel.STATUS_LEVEL_NONE:n,isNaN(t)?j.StatusLevel.STATUS_LEVEL_NONE:t,isNaN(r)?j.StatusLevel.STATUS_LEVEL_NONE:r)}function _e(e){const n=e.filter(t=>t.busStatus).map(t=>ke(t.busStatus));return n.length===0?j.StatusLevel.STATUS_LEVEL_NONE:Math.max(...n)}const ht=()=>{const e=De();return a.useMemo(()=>_e(e),[e])},je=()=>a.useContext(q).onlineStatus,vt=()=>{const e=je();return a.useMemo(()=>(e==null?void 0:e.isOnline)===!0,[e==null?void 0:e.isOnline])},St=()=>a.useContext(be),bt=(e,n)=>{const[t,r]=a.useState([]),[s,c]=a.useState([]);return a.useEffect(()=>{const o=new AbortController,i=l=>{o.signal.aborted||c(l.map(p=>M.deserializeFrame(p)))},u=k.v4();return A(u,"new-measurement-data",i,{numberOfHistoryFrames:e}).then(i).catch(),()=>{I(u,"new-measurement-data"),o.abort()}},[e]),a.useEffect(()=>{s!==null&&r(o=>{const i=o.map(l=>l.hashCode),u=s.filter(l=>!i.includes(l.hashCode));if(n){const l=u.filter(n);return o.length===0&&l.length===0?o:l}return o.length===0&&u.length===0?o:u})},[s,n]),t},xt=e=>{const n=a.useContext(ie);return a.useMemo(()=>{const r=n.scrollData??[];return e!==void 0?r.filter(s=>s.timeUs.greaterThanOrEqual(e)):r},[n,e])},wt=e=>{const n=a.useContext(ie);return a.useMemo(()=>{const r=n.fixedPositionData??[];return e!==void 0?r.filter(s=>s.timeUs.greaterThanOrEqual(e)):r},[n,e])},Oe=2e3;function ue(e,n){const t=[...e,...n];return Array.from(new Map(t.map(s=>[s.time,s])).values())}function H(e,n){for(const[t,r]of n)if(e.has(t)){const s=e.get(t);e.set(t,ue(s,r))}else e.set(t,[...r]);return e}const Dt=(e,n,t)=>{const[r,s]=a.useState([]),[c,o]=z(e,`framesubscription-${n}`,[]),i=a.useRef(new Map),u=a.useRef(!1),l=a.useRef(new Map);a.useEffect(()=>{i.current.clear(),t.forEach(h=>{i.current.set(M.calculateSubscriptionKey(h),h)}),o(t.map(h=>({frameId:h,signalIds:[]})))},[t,o]);const p=a.useContext(ce);a.useEffect(()=>{const h=new AbortController;return U.ipcRenderer.invoke("mm-get-measurement-data-before-timestamp",Number.MAX_SAFE_INTEGER,Oe).then(f=>{h.signal.aborted||(f.length>0&&f.forEach(S=>{const b=M.deserializeFrame(S),v=M.calculateSubscriptionKeyFromFrame(b),w=l.current.get(v);w?l.current.set(v,ue(w,[b])):l.current.set(v,[b])}),u.current=!0)}).catch(f=>{L.error("Failed to get historical data:",f),u.current=!0}),()=>{h.abort(),u.current=!1}},[]),a.useEffect(()=>{if(!u.current){H(l.current,p.subscribedData);return}const h=new Map(l.current);l.current.clear(),H(h,p.subscribedData);const f=[];i.current.forEach((S,b)=>{const v=S.sourceId===void 0||S.sourceId==="",w=S.tx===void 0,g=S.mux===void 0,m=Array(h.values()).flatMap(x=>{const C=x[0];return C?M.calculateSubscriptionKeyFromFrame(C,v,w,g)===b?x:[]:[]});f.push(...m)}),f.sort((S,b)=>S.time-b.time),s(f)},[c,p]);const d=a.useContext(q);return a.useEffect(()=>{d.isLoaded&&d.onlineStatus.isOnline&&s([])},[d]),r};var Ne=(e=>(e.PENDING="pending",e.FRAME_KEYS_READY="frameKeysReady",e.HISTORICAL_DATA_READY="historicalDataReady",e.READY="ready",e))(Ne||{});const Ct=(e,n,t)=>{const[r,s]=a.useState([]),[,c]=z(e,`framesubscription-${n}`,[]),o=a.useRef(new Map),i=a.useRef(new Map),u=a.useRef("pending"),l=a.useRef(new Map);a.useEffect(()=>{const h=new AbortController;return W.getFrameDefinitions().then(f=>{if(h.signal.aborted)return;const S=[];o.current.clear(),i.current.clear();for(let b=0;b<t.length;b++){const{qualifiedName:v,sourceId:w}=t[b],g=f.find(m=>(w===void 0||w===""||m.sourceIdentifiers.includes(w))&&m.signals.some(x=>x.qualifiedName===v));if(g){const m=g.signals.find(R=>R.qualifiedName===v);if(!m)continue;const x=j.FixedPosFrameIdentifier.create({id:g.id,sourceId:w,mux:m.multiplexValue});g.canFrameFlags&&(x.canFrameFlags=j.CanFrameFlags.create(g.canFrameFlags),x.canFrameFlags.flags=x.canFrameFlags.flags.filter(R=>R!==j.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS));const C=M.calculateSubscriptionKey(x);if(i.current.has(C)){const R=i.current.get(C);R&&!R.includes(v)&&(R.push(v),i.current.set(C,R))}else i.current.set(C,[v]),o.current.set(C,x);const F=S.find(R=>M.deep_equal(R.frameId,x));F?F.signalIds.includes(v)||F.signalIds.push(v):S.push({frameId:x,signalIds:[v]})}}c(S),u.current==="pending"?u.current="frameKeysReady":u.current==="historicalDataReady"&&(u.current="ready")}).catch(f=>{L.error("Failed to get frame definitions:",f),u.current==="pending"?u.current="frameKeysReady":u.current==="historicalDataReady"&&(u.current="ready")}),()=>{h.abort(),u.current==="ready"?u.current="historicalDataReady":u.current="pending"}},[t,c]);const p=a.useContext(ce);a.useEffect(()=>{const h=new AbortController;return W.getMessageDataBeforeTimestamp(Number.MAX_SAFE_INTEGER,Oe).then(f=>{h.signal.aborted||(f.length>0&&f.forEach(S=>{const b=M.calculateSubscriptionKeyFromFrame(S),v=l.current.get(b);v?l.current.set(b,ue(v,[S])):l.current.set(b,[S])}),u.current==="pending"?u.current="historicalDataReady":u.current==="frameKeysReady"&&(u.current="ready"))}).catch(f=>{L.error("Failed to get historical data:",f),u.current==="pending"?u.current="historicalDataReady":u.current==="frameKeysReady"&&(u.current="ready")}),()=>{h.abort(),u.current==="ready"?u.current="frameKeysReady":u.current="pending"}},[]),a.useEffect(()=>{if(u.current!=="ready"){H(l.current,p.subscribedData);return}const h=new Map(l.current);l.current.clear(),H(h,p.subscribedData);const f=[];o.current.forEach((S,b)=>{const v=S.sourceId===void 0||S.sourceId==="",w=S.tx===void 0,g=S.mux===void 0,m=Array(h.values()).flatMap(C=>{const F=C[0];return F?M.calculateSubscriptionKeyFromFrame(F,v,w,g,!0)===b?C:[]:[]}),x=i.current.get(b)??[];m.forEach(C=>{const F=x.map(R=>{const E=C.signalValues.find(_=>_.qualifiedName===R);return E?{qualifiedName:E.qualifiedName,sourceId:C.sourceId,name:E.name,unit:E.unit,time:C.time,timeUs:C.timeUs,doubleValue:E.doubleValue,stringValue:E.stringValue}:null});f.push(...F.filter(R=>R!==null))})}),f.sort((S,b)=>S.time-b.time),s(f)},[p]);const d=a.useContext(q);return a.useEffect(()=>{d.isLoaded&&d.onlineStatus.isOnline&&s([])},[d]),r},Mt=(e,n,t,r)=>{const[s,c]=a.useState([]),[,o]=z(e,`framesubscription-${n}`,[]),[,i]=Re(e,`envelopeviewwidth-${n}`,{windowUs:3e7,width:1e3});a.useEffect(()=>{i({windowUs:r.windowUs??(r.endTimeUs!==void 0&&r.startTimeUs!==void 0?r.endTimeUs-r.startTimeUs:3e7),width:r.width??1e3})},[i,r.endTimeUs,r.windowUs,r.startTimeUs,r.width]);const u=a.useRef(new Map),l=a.useRef(new Map),[p,d]=a.useState(!1);a.useEffect(()=>{const f=new AbortController;return d(!1),W.getFrameDefinitions().then(S=>{if(f.signal.aborted)return;const b=[],v=new Map,w=new Map;for(let g=0;g<t.length;g++){const{qualifiedName:m,sourceId:x}=t[g],C=S.find(F=>(x===void 0||x===""||F.sourceIdentifiers.includes(x))&&F.signals.some(R=>R.qualifiedName===m));if(C){const F=C.signals.find(T=>T.qualifiedName===m);if(!F)continue;const R=j.FixedPosFrameIdentifier.create({id:C.id,sourceId:x,mux:F.multiplexValue});C.canFrameFlags&&(R.canFrameFlags=j.CanFrameFlags.create(C.canFrameFlags),R.canFrameFlags.flags=R.canFrameFlags.flags.filter(T=>T!==j.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS));const E=M.calculateSubscriptionKey(R);if(v.has(E)){const T=v.get(E);T&&!T.includes(m)&&(T.push(m),v.set(E,T))}else v.set(E,[m]);w.set(E,R);const _=b.find(T=>M.deep_equal(T.frameId,R));_?_.signalIds.includes(m)||_.signalIds.push(m):b.push({frameId:R,signalIds:[m]})}}o(g=>M.deep_equal(g,b)?g:b),u.current=v,l.current=w,d(!0)}).catch(S=>{f.signal.aborted||(L.error("Failed to get frame definitions:",S),u.current=new Map,l.current=new Map,o([]),d(!0))}),()=>{f.abort()}},[t,o]),a.useEffect(()=>{if(!p||r.startTimeUs!==void 0&&r.endTimeUs!==void 0)return;c([]);const f=new AbortController,S=U.ipcRenderer.on(`mm-new-frames-envelopes-for-pane-${e}`,(b,v)=>{if(!f.signal.aborted){if(v.length===0){c([]);return}c(w=>{let g=!1;const m=[...w];return v.forEach(x=>{x.envelopes.size!==0&&x.envelopes.forEach((C,F)=>{var T;const R=M.calculateSubscriptionKey(x.frameId);if(!((T=u.current.get(R))==null?void 0:T.includes(F)))return;const _=m.findIndex($=>$.qualifiedName===F&&$.sourceId===x.frameId.sourceId);_!==-1&&m.splice(_,1),m.push({qualifiedName:F,sourceId:x.frameId.sourceId,timeUs:Array.from(C.timeUs),min:Array.from(C.min),max:Array.from(C.max)}),g=!0})}),g?m:w})}});return()=>{f.abort(),S()}},[p,e,r.endTimeUs,r.startTimeUs]),a.useEffect(()=>{if(!p||r.startTimeUs===void 0||r.endTimeUs===void 0)return;const f=new AbortController,S=setTimeout(()=>{U.ipcRenderer.invoke("mm-get-frames-envelopes-for-pane",e,r.startTimeUs,r.endTimeUs,r.width).then(b=>{f.signal.aborted||c(v=>{let w=!1;const g=[...v];return b.forEach(m=>{if(m.envelopes.size===0)return;let x="";l.current.forEach((C,F)=>{M.compareFixedPosFrameIdentifiers(C,m.frameId)&&(x=F)}),x!==""&&m.envelopes.forEach((C,F)=>{var T,$;if(!((T=u.current.get(x))==null?void 0:T.includes(F)))return;const E=($=l.current.get(x))==null?void 0:$.sourceId,_=g.findIndex(ye=>ye.qualifiedName===F&&ye.sourceId===E);_!==-1&&g.splice(_,1),g.push({qualifiedName:F,sourceId:E,timeUs:Array.from(C.timeUs),min:Array.from(C.min),max:Array.from(C.max)}),w=!0})}),w?g:v})}).catch(b=>{L.error(`Failed to get signal data envelopes for pane ${e}:`,b)})},200);return()=>{clearTimeout(S),f.abort()}},[p,e,r.endTimeUs,r.startTimeUs,r.width,r.forceUpdateCounter]);const h=a.useContext(q);return a.useEffect(()=>{h.isLoaded&&h.onlineStatus.isOnline&&c([])},[h]),s};function Ce(e){const{enabled:n,intervalMs:t=5e3,stateRef:r,lastSavedStateRef:s,queueSave:c,intervals:o,maxIntervals:i,warnLabel:u,canSave:l}=e;a.useEffect(()=>{if(!n)return;o.size>=i&&L.warn(`Too many active auto-save intervals (${o.size}/${i}), consider optimizing ${u} usage`);const p=setInterval(()=>{if(l&&!l())return;const d=r.current;d!=null&&!M.deep_equal(d,s.current)&&(c(d),s.current=d)},t);return o.add(p),()=>{clearInterval(p),o.delete(p)}},[n,t,o,i,u,c,l,r,s])}const Rt="project-data-internal-v1";function le(e,n){return e==null?n:Array.isArray(n)&&Array.isArray(e)?e:typeof n=="object"&&!Array.isArray(n)&&typeof e=="object"&&!Array.isArray(e)?{...n,...e}:e}const O=[];let X=null;const fe=100,Ft=new Set;function Ue(e){return Math.max(15,e*7)}function Te(e,n,t,r,s=200){const c=`${e}:${n}`;if(!c||t===void 0)return;const o=O.find(i=>i.key===c);o?o.state=t:(O.push({key:c,state:t,id:e,slice:n}),O.length>fe&&(L.warn(`Project data save queue exceeded ${fe} items, removing oldest entries`),O.splice(0,O.length-fe))),X&&clearTimeout(X),X=setTimeout(()=>{if(!O.length)return;const i=[...O];O.length=0,X=null;try{r(u=>{const l=[...u];let p=!1;for(const d of i){const h=l.find(f=>f.id===d.id);if(h!=null&&h.componentData){const f=h.componentData.componentPropSlices[d.slice]?JSON.parse(h.componentData.componentPropSlices[d.slice],M.jsonReviver):{};M.deep_equal(f,d.state)||(h.componentData.componentPropSlices[d.slice]=JSON.stringify(d.state,M.jsonReplacer),p=!0)}}return p?l:u})}catch(u){L.error("Failed to save project data batch:",u)}},s)}const z=(e,n,t,r)=>{const[s,c]=a.useContext(B),o=a.useRef(typeof t=="function"?t():t),[i,u]=a.useState(()=>o.current),[l,p]=a.useState(!1),d=a.useRef(i),h=a.useRef(),f=a.useRef(!1),S=a.useRef(!1);a.useEffect(()=>{d.current=i},[i]),a.useEffect(()=>{f.current=l},[l]),a.useEffect(()=>{var w,g;if(!(s===null||f.current)){try{const m=s==null?void 0:s.find(F=>F.id===e),x=(w=m==null?void 0:m.componentData)!=null&&w.componentPropSlices[n]&&((g=m==null?void 0:m.componentData)==null?void 0:g.componentPropSlices[n])!==""?JSON.parse(m.componentData.componentPropSlices[n],M.jsonReviver):o.current,C=le(x,o.current);u(C),d.current=C,r&&!S.current&&(S.current=!0,r(C))}catch(m){L.error(`Failed to load project data slice ${n}:`,m),u(o.current),d.current=o.current,r&&!S.current&&(S.current=!0,r(o.current))}finally{p(!0),f.current=!0}return()=>{p(!1),f.current=!1}}},[e,r,n,s]);const b=a.useCallback(w=>Te(e,n,w,c),[e,c,n]);Ce({enabled:l,stateRef:d,lastSavedStateRef:h,queueSave:b,intervals:Ft,maxIntervals:Ue((s==null?void 0:s.length)??0),warnLabel:"project data",canSave:()=>f.current});const v=a.useCallback(w=>{if(!f.current)return;const g=d.current,m=typeof w=="function"?w(g):w;M.deep_equal(m,g)||(u(m),d.current=m,M.deep_equal(m,h.current)||(Te(e,n,m,c),h.current=m))},[e,c,n]);return[i,v,l]},Pt=(e,n)=>{const[t,r,s]=z(e,Rt,n);return{projectDataIsInitialized:s,projectData:t,setProjectData:r}},N=[];let J=null;const me=100,qe=new Set;function Me(e){return Math.max(15,e*7)}function oe(e,n,t=200){if(!e||n===void 0)return;const r=N.find(s=>s.key===e);r?r.state=n:(N.push({key:e,state:n}),N.length>me&&(L.warn(`Session data save queue exceeded ${me} items, removing oldest entries`),N.splice(0,N.length-me))),J&&clearTimeout(J),J=setTimeout(()=>{if(!N.length)return;const s=[...N];N.length=0,J=null;try{U.ipcRenderer.invoke("app-set-workspace-view-session-data-batch",s)}catch(c){L.error("Failed to send batch:",c)}},t)}const yt=(e,n,t)=>{const r=a.useRef(typeof n=="function"?n():n),[s,c]=a.useState(()=>r.current),[o,i]=a.useState(!1),[u]=a.useContext(B),l=a.useRef(s),p=a.useRef(),d=a.useRef(!1),h=a.useRef(!1),f=a.useRef(!1);a.useEffect(()=>{l.current=s},[s]),a.useEffect(()=>(d.current=!0,(async()=>{try{const v=await U.ipcRenderer.invoke("app-get-workspace-view-session-data-object",e.toString());if(!d.current)return;const w=le(v,r.current);c(w),l.current=w,t&&!h.current&&(h.current=!0,t(w))}catch(v){L.error(`Failed to load session data for view ${e}:`,v),c(r.current),l.current=r.current,t&&!h.current&&(h.current=!0,t(r.current))}finally{i(!0),f.current=!0}})(),()=>{d.current=!1,f.current=!1}),[e,t]);const S=a.useCallback(v=>oe(e.toString(),v),[e]);Ce({enabled:o,stateRef:l,lastSavedStateRef:p,queueSave:S,intervals:qe,maxIntervals:Me((u==null?void 0:u.length)??0),warnLabel:"session data",canSave:()=>d.current});const b=a.useCallback(v=>{if(!f.current)return;const w=l.current,g=typeof v=="function"?v(w):v;M.deep_equal(g,w)||(c(g),l.current=g,M.deep_equal(g,p.current)||(oe(e.toString(),g),p.current=g))},[e]);return{sessionDataIsInitialized:o,sessionData:s,setSessionData:b}};function Re(e,n,t,r){const s=`${e}:${n}`,[c]=a.useContext(B),o=a.useRef(typeof t=="function"?t():t),[i,u]=a.useState(()=>o.current),[l,p]=a.useState(!1),d=a.useRef(i),h=a.useRef(),f=a.useRef(!1),S=a.useRef(!1),b=a.useRef(!1);a.useEffect(()=>{d.current=i},[i]),a.useEffect(()=>(f.current=!0,(async()=>{try{const g=await U.ipcRenderer.invoke("app-get-workspace-view-session-data-slice",s);if(!f.current)return;const m=le(g,o.current);u(m),d.current=m,r&&!S.current&&(S.current=!0,r(m))}catch(g){L.error(`Failed to load session data slice ${s}:`,g),u(o.current),d.current=o.current,r&&!S.current&&(S.current=!0,r(o.current))}finally{p(!0),b.current=!0}})(),()=>{f.current=!1,b.current=!1}),[s,r]);const v=a.useCallback(g=>oe(s,g),[s]);Ce({enabled:l,stateRef:d,lastSavedStateRef:h,queueSave:v,intervals:qe,maxIntervals:Me((c==null?void 0:c.length)??0),warnLabel:"session data",canSave:()=>f.current&&b.current});const w=a.useCallback(g=>{if(!b.current)return;const m=d.current,x=typeof g=="function"?g(m):g;M.deep_equal(x,m)||(u(x),d.current=x,M.deep_equal(x,h.current)||(oe(s,x),h.current=x))},[s]);return[i,w,l]}function Et(e,n,t){const r=Pe(t),[,s,c]=Re(e,n,r.state,o=>{r.reset(o.current,o.previous,o.next)});return a.useEffect(()=>{var i;return c?(i=r.subscribe)==null?void 0:i.call(r,()=>{s(r.state)}):void 0},[c,s,r]),[r,c]}const Tt=e=>{const[n]=a.useContext(B);return a.useMemo(()=>n.find(r=>r.id===e)??null,[e,n])};function At(e,n,t,r){const s=a.useRef(!0),c=a.useContext(q),o=a.useRef(null),[i,u,l]=z(n,"useOnlineStatusSync-isNewWorkspaceView",!0);return a.useEffect(()=>{!e||!l||!c.isLoaded||(c.onlineStatus.isOnline&&(o.current!==c.onlineStatus.isOnline||s.current)?t(i,s.current,c.onlineStatus.onlineCounter):!c.onlineStatus.isOnline&&(o.current!==c.onlineStatus.isOnline||s.current)&&r(i,s.current,c.onlineStatus.onlineCounter),o.current=c.onlineStatus.isOnline,s.current=!1,u(!1))},[i,l,r,t,c.isLoaded,c.onlineStatus.isOnline,c.onlineStatus.onlineCounter,e,u]),c.onlineStatus.isOnline}const ge=25;function Fe(e,n){return e.length>=n?e.slice(1):e}function Ke(e,n){if(e.previous.length===0)return e;const t=e.previous[e.previous.length-1],r=e.previous.slice(0,e.previous.length-1),s=e.current===void 0?e.next:e.next.length===n?[e.current,...e.next.slice(0,n-1)]:[e.current,...e.next];return{previous:r,current:t,next:s}}function Be(e,n){if(e.next.length===0)return e;const t=e.next[0],r=e.next.slice(1);return{previous:e.current===void 0?e.previous:[...Fe(e.previous,n),e.current],current:t,next:r}}function ze(e,n,t,r){return r&&r(e.current,n)?null:{previous:e.current===void 0?e.previous:[...Fe(e.previous,t),e.current],current:n,next:[]}}function Pe(e){const n=a.useRef(),t=a.useRef(new Set),r=a.useCallback(()=>{t.current.forEach(s=>s())},[]);if(!n.current){const s={state:{previous:(e==null?void 0:e.previous)||[],current:e==null?void 0:e.current,next:(e==null?void 0:e.next)||[]},canUndo:()=>s.state.previous.length!==0,canRedo:()=>s.state.next.length!==0,undo:()=>{s.canUndo()&&(s.state=Ke(s.state,ge),r())},redo:()=>{s.canRedo()&&(s.state=Be(s.state,ge),r())},set:c=>{const o=typeof c=="function"?c(s.state.current):c,i=ze(s.state,o,ge,M.deep_equal);i&&(s.state=i,r())},reset:(c,o=[],i=[])=>{s.state={previous:o,current:c,next:i},r()},subscribe:c=>(t.current.add(c),()=>{t.current.delete(c)})};n.current=s}return n.current}function It(e){const[,n]=a.useState({}),t=Pe(e);return a.useEffect(()=>{var s;return(s=t.subscribe)==null?void 0:s.call(t,()=>{n({})})},[t]),t}exports.CanKingDataProvider=at;exports.DevicesContext=he;exports.LocalizedStrings=Ae;exports.LogMessagesContext=xe;exports.MeasurementSetupContext=Se;exports.MeasurementStatusContext=ve;exports.MeasurementSubscriptionDataProviderContext=ce;exports.MeasurementTraceDataContext=ie;exports.OnlineStatusContext=q;exports.RunningPeriodicTransmissionsContext=be;exports.SignalDataInitState=Ne;exports.UserSettingsContext=pe;exports.WorkspacePanesContext=B;exports.addEventListener=A;exports.calculateMaxActiveProjectDataIntervals=Ue;exports.calculateMaxActiveSessionDataIntervals=Me;exports.calculateOverallStatusLevel=_e;exports.calculateOverallStatusLevelFromBusStatus=ke;exports.limitBuffer=Fe;exports.mergeAndDeduplicateFrames=ue;exports.mergeData=le;exports.mergeFrameDataMaps=H;exports.performRedo=Be;exports.performSet=ze;exports.performUndo=Ke;exports.removeEventListener=I;exports.useAvailableProtocols=we;exports.useDevices=gt;exports.useFixedPositionModeMeasurementData=wt;exports.useIsOnline=vt;exports.useLanguage=it;exports.useLocalizedStrings=ut;exports.useLogMessages=dt;exports.useMaxDataBytes=ct;exports.useMeasurementSetup=Le;exports.useMeasurementStatus=De;exports.useMessageData=Dt;exports.useMessageLogFileFormats=ft;exports.useNewMeasurementData=bt;exports.useNodeStatus=pt;exports.useNumericRadix=ot;exports.useOnlineStatus=je;exports.useOnlineStatusSync=At;exports.useOverallStatusLevel=ht;exports.useProjectData=Pt;exports.useProjectDataSlice=z;exports.useRecentProjectFiles=lt;exports.useRunningPeriodicTransmissions=St;exports.useScrollModeMeasurementData=xt;exports.useSessionData=yt;exports.useSessionDataSlice=Re;exports.useSignalData=Ct;exports.useSignalDataEnvelopes=Mt;exports.useSignalLogFileFormats=mt;exports.useUndo=It;exports.useUndoRef=Pe;exports.useUndoSessionDataSlice=Et;exports.useUserSettings=K;exports.useWorkspacePaneWithId=Tt;
1
+ "use strict";var $e=Object.defineProperty;var We=(e,n,t)=>n in e?$e(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var de=(e,n,t)=>We(e,typeof n!="symbol"?n+"":n,t);const a=require("react"),k=require("uuid"),M=require("./models.js"),P=require("react/jsx-runtime"),V=require("@mui/material"),W=require("./ipc.js"),j=require("./status_params.js"),He=(e,n,...t)=>{let r=n;for(let s=0;s<t.length;s+=1){const c=`{${s}}`;if(r.indexOf(c)!==-1){const i=t[s];r=typeof i=="string"?r.replace(c,i):r.replace(c,i.toLocaleString(e))}}return r};class Ae{constructor(n,t){de(this,"language");de(this,"strings");this.language=n,this.strings=t}getString(n,...t){if(this.strings&&n in this.strings){const r=this.strings[n];return t.length>0?He(this.language,r,...t):r}return n}}const D=W.getLogger("DataProviders"),y=window.electron??M.electronApiFake,Q=new Map,Y=new Map,G=new Map,Z=new Map,ee=new Map,te=new Map,re=new Map,ne=new Map,se=new Map,ae=new Map;async function A(e,n,t,r){switch(n){case"devices-changed":{if(Q.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("dm-devices-changed",c);Q.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-devices",!1)}case"user-settings-changed":{if(Y.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("user-settings-changed",c);Y.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("app-get-user-settings")}case"new-log-messages":{if(G.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("new-log-messages",c);G.set(e,{remover:o,listener:c})}return Promise.resolve()}case"online-status-changed":{if(Z.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-is-online-changed",c);Z.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-online-status")}case"periodic-trans-started":{if(ee.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-periodic-trans-started",c);ee.set(e,{remover:o,listener:c})}return Promise.resolve("")}case"periodic-trans-stopped":{if(te.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-periodic-trans-stopped",c);te.set(e,{remover:o,listener:c})}return Promise.resolve("")}case"new-measurement-data":{if(re.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-new-measurement-data",c);re.set(e,{remover:o,listener:c})}return(r==null?void 0:r.numberOfHistoryFrames)>0?y.ipcRenderer.invoke("mm-get-measurement-data-before-timestamp",Number.MAX_SAFE_INTEGER,r.numberOfHistoryFrames):Promise.resolve([])}case"new-measurement-status":{if(ne.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("mm-new-measurement-status",c);ne.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("rpc-get-node-statuses")}case"meas-setup-changed":{if(se.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("project-meas-setup-changed",c);se.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("prj-get-meas-setup")}case"workspace-panes-changed":{if(ae.has(e))D.warn("The callback has already been added as listener to this event!");else{const s=t,c=(i,u)=>s(u),o=y.ipcRenderer.on("project-workspace-panes-changed",c);ae.set(e,{remover:o,listener:c})}return y.ipcRenderer.invoke("prj-get-workspace-panes")}}return Promise.reject(new Error("Invalid event type"))}const I=async(e,n)=>{switch(n){case"devices-changed":{const t=Q.get(e);t?(t.remover(),Q.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"user-settings-changed":{const t=Y.get(e);t?(t.remover(),Y.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-log-messages":{const t=G.get(e);t?(t.remover(),G.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"online-status-changed":{const t=Z.get(e);t?(t.remover(),Z.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-started":{const t=ee.get(e);t?(t.remover(),ee.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"periodic-trans-stopped":{const t=te.get(e);t?(t.remover(),te.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-data":{const t=re.get(e);t?(t.remover(),re.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"new-measurement-status":{const t=ne.get(e);t?(t.remover(),ne.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"meas-setup-changed":{const t=se.get(e);t?(t.remover(),se.delete(e)):D.warn("The callback has not been added as listener to this event!")}break;case"workspace-panes-changed":{const t=ae.get(e);t?(t.remover(),ae.delete(e)):D.warn("The callback has not been added as listener to this event!")}break}},Ee=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 Ve({children:e}){const n=K(),[t,r]=a.useState(V.createTheme(Ee(n.theme)));return a.useEffect(()=>{r(V.createTheme(Ee(n.theme)))},[n.theme]),P.jsxs(V.ThemeProvider,{theme:t,children:[P.jsx(V.CssBaseline,{}),e]})}const Xe=window!=null&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)").matches:!1,Ie=Object.assign({},M.defaultUserSettings,{theme:Xe?"dark":"light"}),pe=a.createContext(Ie),Je=({initialUserSettings:e=void 0,children:n=void 0})=>{const[t,r]=a.useState(e??Ie);return a.useEffect(()=>{const s=new AbortController,c=k.v4();return A(c,"user-settings-changed",r).then(o=>{s.signal.aborted||r(o)}).catch(o=>{D.error("Failed to add user settings listener:",o)}),()=>{s.abort(),I(c,"user-settings-changed")}},[]),P.jsx(pe.Provider,{value:t,children:n})},he=a.createContext(null),Qe=({children:e=void 0})=>{const[n,t]=a.useState(null);return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("DevicesProvider",i)}},c=k.v4();return A(c,"devices-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add devices listener:",o)}),()=>{r.abort(),I(c,"devices-changed")}},[]),P.jsx(he.Provider,{value:n,children:e})},ve=a.createContext([]),Ye=({children:e=void 0})=>{const[n,t]=a.useState([]);return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("MeasurementStatusProvider",i)}},c=k.v4();return A(c,"new-measurement-status",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement status listener:",o)}),()=>{r.abort(),I(c,"new-measurement-status")}},[]),P.jsx(ve.Provider,{value:n,children:e})},ce=a.createContext({subscribedData:new Map}),Ge=({children:e=void 0})=>{const[n,t]=a.useState({subscribedData:new Map});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;const i=new Map;o.length>0&&o.forEach(u=>{const l=M.deserializeFrame(u),p=M.calculateSubscriptionKeyFromFrame(l);i.has(p)||i.set(p,[]);const d=i.get(p);d&&d.push(l)}),t(()=>({subscribedData:i}))}catch(i){D.error("MeasurementDataProvider",i)}},c=k.v4();return A(c,"new-measurement-data",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement data listener:",o)}),()=>{r.abort(),I(c,"new-measurement-data")}},[]),P.jsx(ce.Provider,{value:n,children:e})},ie=a.createContext({scrollData:[],fixedPositionData:[]}),Ze=({children:e=void 0})=>{const n=a.useRef(new M.DataBuffer(500)),t=a.useRef(new Map),[r,s]=a.useState({scrollData:[],fixedPositionData:[]});a.useEffect(()=>{const o=new AbortController,i=l=>{try{if(o.signal.aborted)return;const p=l.map(d=>M.deserializeFrame(d));p.length===0?n.current.clear():n.current.push(...p.slice(Math.max(0,p.length-500))),p.length===0?t.current.clear():p.forEach(d=>{t.current.set(d.fixedPosIdentifier??"",d)}),s(()=>({scrollData:Array.from(n.current),fixedPositionData:Array.from(t.current.values())}))}catch(p){D.error("MeasurementTraceDataProvider",p)}},u=k.v4();return A(u,"new-measurement-data",i,{numberOfHistoryFrames:500}).then(l=>i(l)).catch(l=>{D.error("Failed to add measurement data listener:",l)}),()=>{o.abort(),I(u,"new-measurement-data")}},[]);const c=a.useContext(q);return a.useEffect(()=>{c.isLoaded&&c.onlineStatus.isOnline&&(n.current.clear(),t.current.clear(),s({scrollData:[],fixedPositionData:[]}))},[c]),P.jsx(ie.Provider,{value:r,children:e})},Se=a.createContext({language:"en",sources:[],dataProcessors:[],targets:[]}),et=({children:e=void 0})=>{const[n,t]=a.useState({language:"en",sources:[],dataProcessors:[],targets:[]});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t(o)}catch(i){D.error("MeasurementSetupProvider",i)}},c=k.v4();return A(c,"meas-setup-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add measurement setup listener:",o)}),()=>{r.abort(),I(c,"meas-setup-changed")}},[]),P.jsx(Se.Provider,{value:n,children:e})},q=a.createContext({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!1}),tt=({children:e=void 0})=>{const[n,t]=a.useState({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!1});return a.useEffect(()=>{const r=new AbortController,s=o=>{try{if(r.signal.aborted)return;t({onlineStatus:o,isLoaded:!0})}catch(i){D.error("OnlineStatusProvider",i),t({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!0})}},c=k.v4();return A(c,"online-status-changed",s).then(o=>s(o)).catch(o=>{D.error("Failed to add online status listener:",o),t({onlineStatus:{isOnline:!1,onlineCounter:0},isLoaded:!0})}),()=>{r.abort(),I(c,"online-status-changed")}},[]),P.jsx(q.Provider,{value:n,children:e})},be=a.createContext([]),rt=({children:e=void 0})=>{const[n,t]=a.useState([]);return a.useEffect(()=>{t([]);const r=new AbortController,s=u=>{try{if(r.signal.aborted)return;t(l=>[...l,u])}catch(l){D.error("RunningPeriodicTransmissionsProvider - started",l)}},c=u=>{try{if(r.signal.aborted)return;t(l=>{const p=l.findIndex(h=>h===u);if(p===-1)return l;const d=[...l];return d.splice(p,1),d})}catch(l){D.error("RunningPeriodicTransmissionsProvider - stopped",l)}},o=k.v4();A(o,"periodic-trans-started",s);const i=k.v4();return A(i,"periodic-trans-stopped",c),()=>{r.abort(),I(o,"periodic-trans-started"),I(i,"periodic-trans-stopped")}},[]),P.jsx(be.Provider,{value:n,children:e})},xe=a.createContext([]),nt=({children:e=void 0})=>{const n=a.useRef(new M.DataBuffer(1e3)),[t,r]=a.useState([]);return a.useEffect(()=>{const s=new AbortController,c=i=>{try{if(s.signal.aborted)return;i===null?n.current.clear():n.current.push(...i),r(Array.from(n.current))}catch(u){D.error("LogMessagesProvider",u)}},o=k.v4();return A(o,"new-log-messages",c),()=>{s.abort(),I(o,"new-log-messages")}},[]),P.jsx(xe.Provider,{value:t,children:e})},B=a.createContext([[],()=>{}]),st=({children:e=void 0})=>{const[n,t]=a.useState(null),r=a.useCallback(s=>{if(n!==null)if(typeof s=="function"){const c=s(n);y.ipcRenderer.invoke("prj-update-project",{workspacePanes:c})}else y.ipcRenderer.invoke("prj-update-project",{workspacePanes:s})},[n]);return a.useEffect(()=>{const s=new AbortController,c=i=>{try{if(s.signal.aborted)return;t(u=>M.deep_equal(u,i)?u:i)}catch(u){D.error("WorkspacePanesProvider",u)}},o=k.v4();return A(o,"workspace-panes-changed",c).then(i=>c(i)).catch(i=>{D.error("Failed to add workspace panes listener:",i)}),()=>{s.abort(),I(o,"workspace-panes-changed")}},[]),P.jsx(B.Provider,{value:[n,r],children:e})},at=({initialUserSettings:e=void 0,children:n=void 0})=>P.jsx(Je,{initialUserSettings:e,children:P.jsx(Qe,{children:P.jsx(et,{children:P.jsx(Ye,{children:P.jsx(tt,{children:P.jsx(Ge,{children:P.jsx(Ze,{children:P.jsx(rt,{children:P.jsx(nt,{children:P.jsx(st,{children:P.jsx(Ve,{children:n})})})})})})})})})})}),U=window.electron??M.electronApiFake,L=W.getLogger("hooks"),K=()=>a.useContext(pe),ot=()=>{const e=K();return a.useMemo(()=>e.useHexNumericBase?16:10,[e.useHexNumericBase])},ct=()=>{const e=K();return a.useMemo(()=>e.maxDataBytes,[e.maxDataBytes])},it=()=>{const e=K();return a.useMemo(()=>e.language,[e.language])},ut=()=>{const e=K();return a.useMemo(()=>new Ae(e.language,e.strings),[e.language,e.strings])},lt=()=>{const e=K();return a.useMemo(()=>e.recentProjectFiles,[e.recentProjectFiles])},dt=()=>a.useContext(xe),ft=(e=!1)=>{const[n,t]=a.useState([]),r=we();return a.useEffect(()=>{const s=new AbortController;return U.ipcRenderer.invoke("rpc-get-message-log-file-formats",e).then(c=>{if(s.signal.aborted)return;const o=c.filter(i=>!i.supportedProtocols||i.supportedProtocols.length===0?!0:i.supportedProtocols.some(u=>r.includes(u)));t(o)}).catch(),()=>{s.abort()}},[r,e]),n},mt=()=>{const[e,n]=a.useState([]),t=we();return a.useEffect(()=>{const r=new AbortController;return U.ipcRenderer.invoke("rpc-get-signal-log-file-formats").then(s=>{if(r.signal.aborted)return;const c=s.filter(o=>!o.supportedProtocols||o.supportedProtocols.length===0?!0:o.supportedProtocols.some(i=>t.includes(i)));n(c)}).catch(),()=>{r.abort()}},[t]),e},gt=()=>a.useContext(he),Le=()=>a.useContext(Se),we=()=>{const e=Le(),[n,t]=a.useState(["CAN"]);return a.useEffect(()=>{var c;const r=new Set;(c=e.sources)==null||c.forEach(o=>{var i;(i=o.channelSettings)!=null&&i.protocols&&o.channelSettings.protocols.forEach(u=>r.add(u))}),r.size===0&&r.add("CAN");const s=Array.from(r).sort();t(o=>M.deep_equal(o,s)?o:s)},[e]),n},De=()=>a.useContext(ve),pt=e=>{const n=De();return a.useMemo(()=>n.find(r=>r.nodeId===e)??null,[e,n])};function ke(e){if(!e)return j.StatusLevel.STATUS_LEVEL_NONE;const n=Number(e.busOnStatus),t=Number(e.errorStatus),r=Number(e.overrunStatus);return Math.max(isNaN(n)?j.StatusLevel.STATUS_LEVEL_NONE:n,isNaN(t)?j.StatusLevel.STATUS_LEVEL_NONE:t,isNaN(r)?j.StatusLevel.STATUS_LEVEL_NONE:r)}function _e(e){const n=e.filter(t=>t.busStatus).map(t=>ke(t.busStatus));return n.length===0?j.StatusLevel.STATUS_LEVEL_NONE:Math.max(...n)}const ht=()=>{const e=De();return a.useMemo(()=>_e(e),[e])},je=()=>a.useContext(q).onlineStatus,vt=()=>{const e=je();return a.useMemo(()=>(e==null?void 0:e.isOnline)===!0,[e==null?void 0:e.isOnline])},St=()=>a.useContext(be),bt=(e,n)=>{const[t,r]=a.useState([]),[s,c]=a.useState([]);return a.useEffect(()=>{const o=new AbortController,i=l=>{o.signal.aborted||c(l.map(p=>M.deserializeFrame(p)))},u=k.v4();return A(u,"new-measurement-data",i,{numberOfHistoryFrames:e}).then(i).catch(),()=>{I(u,"new-measurement-data"),o.abort()}},[e]),a.useEffect(()=>{s!==null&&r(o=>{const i=o.map(l=>l.hashCode),u=s.filter(l=>!i.includes(l.hashCode));if(n){const l=u.filter(n);return o.length===0&&l.length===0?o:l}return o.length===0&&u.length===0?o:u})},[s,n]),t},xt=e=>{const n=a.useContext(ie);return a.useMemo(()=>{const r=n.scrollData??[];return e!==void 0?r.filter(s=>s.timeUs.greaterThanOrEqual(e)):r},[n,e])},wt=e=>{const n=a.useContext(ie);return a.useMemo(()=>{const r=n.fixedPositionData??[];return e!==void 0?r.filter(s=>s.timeUs.greaterThanOrEqual(e)):r},[n,e])},Oe=2e3;function ue(e,n){const t=[...e,...n];return Array.from(new Map(t.map(s=>[s.time,s])).values())}function H(e,n){for(const[t,r]of n)if(e.has(t)){const s=e.get(t);e.set(t,ue(s,r))}else e.set(t,[...r]);return e}const Dt=(e,n,t)=>{const[r,s]=a.useState([]),[c,o]=z(e,`framesubscription-${n}`,[]),i=a.useRef(new Map),u=a.useRef(!1),l=a.useRef(new Map);a.useEffect(()=>{i.current.clear(),t.forEach(h=>{i.current.set(M.calculateSubscriptionKey(h),h)}),o(t.map(h=>({frameId:h,signalIds:[]})))},[t,o]);const p=a.useContext(ce);a.useEffect(()=>{const h=new AbortController;return U.ipcRenderer.invoke("mm-get-measurement-data-before-timestamp",Number.MAX_SAFE_INTEGER,Oe).then(m=>{h.signal.aborted||(m.length>0&&m.forEach(S=>{const b=M.deserializeFrame(S),v=M.calculateSubscriptionKeyFromFrame(b),w=l.current.get(v);w?l.current.set(v,ue(w,[b])):l.current.set(v,[b])}),u.current=!0)}).catch(m=>{L.error("Failed to get historical data:",m),u.current=!0}),()=>{h.abort(),u.current=!1}},[]),a.useEffect(()=>{if(!u.current){H(l.current,p.subscribedData);return}const h=new Map(l.current);l.current.clear(),H(h,p.subscribedData);const m=[];i.current.forEach((S,b)=>{const v=S.sourceId===void 0||S.sourceId==="",w=S.tx===void 0,g=S.mux===void 0,f=[];for(const x of h.values()){const C=x[0];if(!C)continue;M.calculateSubscriptionKeyFromFrame(C,v,w,g,!0)===b&&f.push(...x)}m.push(...f)}),m.sort((S,b)=>S.time-b.time),s(m)},[c,p]);const d=a.useContext(q);return a.useEffect(()=>{d.isLoaded&&d.onlineStatus.isOnline&&s([])},[d]),r};var Ne=(e=>(e.PENDING="pending",e.FRAME_KEYS_READY="frameKeysReady",e.HISTORICAL_DATA_READY="historicalDataReady",e.READY="ready",e))(Ne||{});const Ct=(e,n,t)=>{const[r,s]=a.useState([]),[,c]=z(e,`framesubscription-${n}`,[]),o=a.useRef(new Map),i=a.useRef(new Map),u=a.useRef("pending"),l=a.useRef(new Map);a.useEffect(()=>{const h=new AbortController;return W.getFrameDefinitions().then(m=>{if(h.signal.aborted)return;const S=[];o.current.clear(),i.current.clear();for(let b=0;b<t.length;b++){const{qualifiedName:v,sourceId:w}=t[b],g=m.find(f=>(w===void 0||w===""||f.sourceIdentifiers.includes(w))&&f.signals.some(x=>x.qualifiedName===v));if(g){const f=g.signals.find(R=>R.qualifiedName===v);if(!f)continue;const x=j.FixedPosFrameIdentifier.create({id:g.id,sourceId:w,mux:f.multiplexValue});g.canFrameFlags&&(x.canFrameFlags=j.CanFrameFlags.create(g.canFrameFlags),x.canFrameFlags.flags=x.canFrameFlags.flags.filter(R=>R!==j.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS));const C=M.calculateSubscriptionKey(x);if(i.current.has(C)){const R=i.current.get(C);R&&!R.includes(v)&&(R.push(v),i.current.set(C,R))}else i.current.set(C,[v]),o.current.set(C,x);const F=S.find(R=>M.deep_equal(R.frameId,x));F?F.signalIds.includes(v)||F.signalIds.push(v):S.push({frameId:x,signalIds:[v]})}}c(S),u.current==="pending"?u.current="frameKeysReady":u.current==="historicalDataReady"&&(u.current="ready")}).catch(m=>{L.error("Failed to get frame definitions:",m),u.current==="pending"?u.current="frameKeysReady":u.current==="historicalDataReady"&&(u.current="ready")}),()=>{h.abort(),u.current==="ready"?u.current="historicalDataReady":u.current="pending"}},[t,c]);const p=a.useContext(ce);a.useEffect(()=>{const h=new AbortController;return W.getMessageDataBeforeTimestamp(Number.MAX_SAFE_INTEGER,Oe).then(m=>{h.signal.aborted||(m.length>0&&m.forEach(S=>{const b=M.calculateSubscriptionKeyFromFrame(S),v=l.current.get(b);v?l.current.set(b,ue(v,[S])):l.current.set(b,[S])}),u.current==="pending"?u.current="historicalDataReady":u.current==="frameKeysReady"&&(u.current="ready"))}).catch(m=>{L.error("Failed to get historical data:",m),u.current==="pending"?u.current="historicalDataReady":u.current==="frameKeysReady"&&(u.current="ready")}),()=>{h.abort(),u.current==="ready"?u.current="frameKeysReady":u.current="pending"}},[]),a.useEffect(()=>{if(u.current!=="ready"){H(l.current,p.subscribedData);return}const h=new Map(l.current);l.current.clear(),H(h,p.subscribedData);const m=[];o.current.forEach((S,b)=>{const v=S.sourceId===void 0||S.sourceId==="",w=S.tx===void 0,g=S.mux===void 0,f=[];for(const C of h.values()){const F=C[0];if(!F)continue;M.calculateSubscriptionKeyFromFrame(F,v,w,g,!0)===b&&f.push(...C)}const x=i.current.get(b)??[];f.forEach(C=>{const F=x.map(R=>{const E=C.signalValues.find(_=>_.qualifiedName===R);return E?{qualifiedName:E.qualifiedName,sourceId:C.sourceId,name:E.name,unit:E.unit,time:C.time,timeUs:C.timeUs,doubleValue:E.doubleValue,stringValue:E.stringValue}:null});m.push(...F.filter(R=>R!==null))})}),m.sort((S,b)=>S.time-b.time),s(m)},[p]);const d=a.useContext(q);return a.useEffect(()=>{d.isLoaded&&d.onlineStatus.isOnline&&s([])},[d]),r},Mt=(e,n,t,r)=>{const[s,c]=a.useState([]),[,o]=z(e,`framesubscription-${n}`,[]),[,i]=Re(e,`envelopeviewwidth-${n}`,{windowUs:3e7,width:1e3});a.useEffect(()=>{i({windowUs:r.windowUs??(r.endTimeUs!==void 0&&r.startTimeUs!==void 0?r.endTimeUs-r.startTimeUs:3e7),width:r.width??1e3})},[i,r.endTimeUs,r.windowUs,r.startTimeUs,r.width]);const u=a.useRef(new Map),l=a.useRef(new Map),[p,d]=a.useState(!1);a.useEffect(()=>{const m=new AbortController;return d(!1),W.getFrameDefinitions().then(S=>{if(m.signal.aborted)return;const b=[],v=new Map,w=new Map;for(let g=0;g<t.length;g++){const{qualifiedName:f,sourceId:x}=t[g],C=S.find(F=>(x===void 0||x===""||F.sourceIdentifiers.includes(x))&&F.signals.some(R=>R.qualifiedName===f));if(C){const F=C.signals.find(T=>T.qualifiedName===f);if(!F)continue;const R=j.FixedPosFrameIdentifier.create({id:C.id,sourceId:x,mux:F.multiplexValue});C.canFrameFlags&&(R.canFrameFlags=j.CanFrameFlags.create(C.canFrameFlags),R.canFrameFlags.flags=R.canFrameFlags.flags.filter(T=>T!==j.CanFrameFlag.CAN_FRAME_FLAG_FD_BRS));const E=M.calculateSubscriptionKey(R);if(v.has(E)){const T=v.get(E);T&&!T.includes(f)&&(T.push(f),v.set(E,T))}else v.set(E,[f]);w.set(E,R);const _=b.find(T=>M.deep_equal(T.frameId,R));_?_.signalIds.includes(f)||_.signalIds.push(f):b.push({frameId:R,signalIds:[f]})}}o(g=>M.deep_equal(g,b)?g:b),u.current=v,l.current=w,d(!0)}).catch(S=>{m.signal.aborted||(L.error("Failed to get frame definitions:",S),u.current=new Map,l.current=new Map,o([]),d(!0))}),()=>{m.abort()}},[t,o]),a.useEffect(()=>{if(!p||r.startTimeUs!==void 0&&r.endTimeUs!==void 0)return;c([]);const m=new AbortController,S=U.ipcRenderer.on(`mm-new-frames-envelopes-for-pane-${e}`,(b,v)=>{if(!m.signal.aborted){if(v.length===0){c([]);return}c(w=>{let g=!1;const f=[...w];return v.forEach(x=>{x.envelopes.size!==0&&x.envelopes.forEach((C,F)=>{var T;const R=M.calculateSubscriptionKey(x.frameId);if(!((T=u.current.get(R))==null?void 0:T.includes(F)))return;const _=f.findIndex($=>$.qualifiedName===F&&$.sourceId===x.frameId.sourceId);_!==-1&&f.splice(_,1),f.push({qualifiedName:F,sourceId:x.frameId.sourceId,timeUs:Array.from(C.timeUs),min:Array.from(C.min),max:Array.from(C.max)}),g=!0})}),g?f:w})}});return()=>{m.abort(),S()}},[p,e,r.endTimeUs,r.startTimeUs]),a.useEffect(()=>{if(!p||r.startTimeUs===void 0||r.endTimeUs===void 0)return;const m=new AbortController,S=setTimeout(()=>{U.ipcRenderer.invoke("mm-get-frames-envelopes-for-pane",e,r.startTimeUs,r.endTimeUs,r.width).then(b=>{m.signal.aborted||c(v=>{let w=!1;const g=[...v];return b.forEach(f=>{if(f.envelopes.size===0)return;let x="";l.current.forEach((C,F)=>{M.compareFixedPosFrameIdentifiers(C,f.frameId)&&(x=F)}),x!==""&&f.envelopes.forEach((C,F)=>{var T,$;if(!((T=u.current.get(x))==null?void 0:T.includes(F)))return;const E=($=l.current.get(x))==null?void 0:$.sourceId,_=g.findIndex(ye=>ye.qualifiedName===F&&ye.sourceId===E);_!==-1&&g.splice(_,1),g.push({qualifiedName:F,sourceId:E,timeUs:Array.from(C.timeUs),min:Array.from(C.min),max:Array.from(C.max)}),w=!0})}),w?g:v})}).catch(b=>{L.error(`Failed to get signal data envelopes for pane ${e}:`,b)})},200);return()=>{clearTimeout(S),m.abort()}},[p,e,r.endTimeUs,r.startTimeUs,r.width,r.forceUpdateCounter]);const h=a.useContext(q);return a.useEffect(()=>{h.isLoaded&&h.onlineStatus.isOnline&&c([])},[h]),s};function Ce(e){const{enabled:n,intervalMs:t=5e3,stateRef:r,lastSavedStateRef:s,queueSave:c,intervals:o,maxIntervals:i,warnLabel:u,canSave:l}=e;a.useEffect(()=>{if(!n)return;o.size>=i&&L.warn(`Too many active auto-save intervals (${o.size}/${i}), consider optimizing ${u} usage`);const p=setInterval(()=>{if(l&&!l())return;const d=r.current;d!=null&&!M.deep_equal(d,s.current)&&(c(d),s.current=d)},t);return o.add(p),()=>{clearInterval(p),o.delete(p)}},[n,t,o,i,u,c,l,r,s])}const Rt="project-data-internal-v1";function le(e,n){return e==null?n:Array.isArray(n)&&Array.isArray(e)?e:typeof n=="object"&&!Array.isArray(n)&&typeof e=="object"&&!Array.isArray(e)?{...n,...e}:e}const O=[];let X=null;const fe=100,Ft=new Set;function Ue(e){return Math.max(15,e*7)}function Te(e,n,t,r,s=200){const c=`${e}:${n}`;if(!c||t===void 0)return;const o=O.find(i=>i.key===c);o?o.state=t:(O.push({key:c,state:t,id:e,slice:n}),O.length>fe&&(L.warn(`Project data save queue exceeded ${fe} items, removing oldest entries`),O.splice(0,O.length-fe))),X&&clearTimeout(X),X=setTimeout(()=>{if(!O.length)return;const i=[...O];O.length=0,X=null;try{r(u=>{const l=[...u];let p=!1;for(const d of i){const h=l.find(m=>m.id===d.id);if(h!=null&&h.componentData){const m=h.componentData.componentPropSlices[d.slice]?JSON.parse(h.componentData.componentPropSlices[d.slice],M.jsonReviver):{};M.deep_equal(m,d.state)||(h.componentData.componentPropSlices[d.slice]=JSON.stringify(d.state,M.jsonReplacer),p=!0)}}return p?l:u})}catch(u){L.error("Failed to save project data batch:",u)}},s)}const z=(e,n,t,r)=>{const[s,c]=a.useContext(B),o=a.useRef(typeof t=="function"?t():t),[i,u]=a.useState(()=>o.current),[l,p]=a.useState(!1),d=a.useRef(i),h=a.useRef(),m=a.useRef(!1),S=a.useRef(!1);a.useEffect(()=>{d.current=i},[i]),a.useEffect(()=>{m.current=l},[l]),a.useEffect(()=>{var w,g;if(!(s===null||m.current)){try{const f=s==null?void 0:s.find(F=>F.id===e),x=(w=f==null?void 0:f.componentData)!=null&&w.componentPropSlices[n]&&((g=f==null?void 0:f.componentData)==null?void 0:g.componentPropSlices[n])!==""?JSON.parse(f.componentData.componentPropSlices[n],M.jsonReviver):o.current,C=le(x,o.current);u(C),d.current=C,r&&!S.current&&(S.current=!0,r(C))}catch(f){L.error(`Failed to load project data slice ${n}:`,f),u(o.current),d.current=o.current,r&&!S.current&&(S.current=!0,r(o.current))}finally{p(!0),m.current=!0}return()=>{p(!1),m.current=!1}}},[e,r,n,s]);const b=a.useCallback(w=>Te(e,n,w,c),[e,c,n]);Ce({enabled:l,stateRef:d,lastSavedStateRef:h,queueSave:b,intervals:Ft,maxIntervals:Ue((s==null?void 0:s.length)??0),warnLabel:"project data",canSave:()=>m.current});const v=a.useCallback(w=>{if(!m.current)return;const g=d.current,f=typeof w=="function"?w(g):w;M.deep_equal(f,g)||(u(f),d.current=f,M.deep_equal(f,h.current)||(Te(e,n,f,c),h.current=f))},[e,c,n]);return[i,v,l]},Pt=(e,n)=>{const[t,r,s]=z(e,Rt,n);return{projectDataIsInitialized:s,projectData:t,setProjectData:r}},N=[];let J=null;const me=100,qe=new Set;function Me(e){return Math.max(15,e*7)}function oe(e,n,t=200){if(!e||n===void 0)return;const r=N.find(s=>s.key===e);r?r.state=n:(N.push({key:e,state:n}),N.length>me&&(L.warn(`Session data save queue exceeded ${me} items, removing oldest entries`),N.splice(0,N.length-me))),J&&clearTimeout(J),J=setTimeout(()=>{if(!N.length)return;const s=[...N];N.length=0,J=null;try{U.ipcRenderer.invoke("app-set-workspace-view-session-data-batch",s)}catch(c){L.error("Failed to send batch:",c)}},t)}const yt=(e,n,t)=>{const r=a.useRef(typeof n=="function"?n():n),[s,c]=a.useState(()=>r.current),[o,i]=a.useState(!1),[u]=a.useContext(B),l=a.useRef(s),p=a.useRef(),d=a.useRef(!1),h=a.useRef(!1),m=a.useRef(!1);a.useEffect(()=>{l.current=s},[s]),a.useEffect(()=>(d.current=!0,(async()=>{try{const v=await U.ipcRenderer.invoke("app-get-workspace-view-session-data-object",e.toString());if(!d.current)return;const w=le(v,r.current);c(w),l.current=w,t&&!h.current&&(h.current=!0,t(w))}catch(v){L.error(`Failed to load session data for view ${e}:`,v),c(r.current),l.current=r.current,t&&!h.current&&(h.current=!0,t(r.current))}finally{i(!0),m.current=!0}})(),()=>{d.current=!1,m.current=!1}),[e,t]);const S=a.useCallback(v=>oe(e.toString(),v),[e]);Ce({enabled:o,stateRef:l,lastSavedStateRef:p,queueSave:S,intervals:qe,maxIntervals:Me((u==null?void 0:u.length)??0),warnLabel:"session data",canSave:()=>d.current});const b=a.useCallback(v=>{if(!m.current)return;const w=l.current,g=typeof v=="function"?v(w):v;M.deep_equal(g,w)||(c(g),l.current=g,M.deep_equal(g,p.current)||(oe(e.toString(),g),p.current=g))},[e]);return{sessionDataIsInitialized:o,sessionData:s,setSessionData:b}};function Re(e,n,t,r){const s=`${e}:${n}`,[c]=a.useContext(B),o=a.useRef(typeof t=="function"?t():t),[i,u]=a.useState(()=>o.current),[l,p]=a.useState(!1),d=a.useRef(i),h=a.useRef(),m=a.useRef(!1),S=a.useRef(!1),b=a.useRef(!1);a.useEffect(()=>{d.current=i},[i]),a.useEffect(()=>(m.current=!0,(async()=>{try{const g=await U.ipcRenderer.invoke("app-get-workspace-view-session-data-slice",s);if(!m.current)return;const f=le(g,o.current);u(f),d.current=f,r&&!S.current&&(S.current=!0,r(f))}catch(g){L.error(`Failed to load session data slice ${s}:`,g),u(o.current),d.current=o.current,r&&!S.current&&(S.current=!0,r(o.current))}finally{p(!0),b.current=!0}})(),()=>{m.current=!1,b.current=!1}),[s,r]);const v=a.useCallback(g=>oe(s,g),[s]);Ce({enabled:l,stateRef:d,lastSavedStateRef:h,queueSave:v,intervals:qe,maxIntervals:Me((c==null?void 0:c.length)??0),warnLabel:"session data",canSave:()=>m.current&&b.current});const w=a.useCallback(g=>{if(!b.current)return;const f=d.current,x=typeof g=="function"?g(f):g;M.deep_equal(x,f)||(u(x),d.current=x,M.deep_equal(x,h.current)||(oe(s,x),h.current=x))},[s]);return[i,w,l]}function Et(e,n,t){const r=Pe(t),[,s,c]=Re(e,n,r.state,o=>{r.reset(o.current,o.previous,o.next)});return a.useEffect(()=>{var i;return c?(i=r.subscribe)==null?void 0:i.call(r,()=>{s(r.state)}):void 0},[c,s,r]),[r,c]}const Tt=e=>{const[n]=a.useContext(B);return a.useMemo(()=>n.find(r=>r.id===e)??null,[e,n])};function At(e,n,t,r){const s=a.useRef(!0),c=a.useContext(q),o=a.useRef(null),[i,u,l]=z(n,"useOnlineStatusSync-isNewWorkspaceView",!0);return a.useEffect(()=>{!e||!l||!c.isLoaded||(c.onlineStatus.isOnline&&(o.current!==c.onlineStatus.isOnline||s.current)?t(i,s.current,c.onlineStatus.onlineCounter):!c.onlineStatus.isOnline&&(o.current!==c.onlineStatus.isOnline||s.current)&&r(i,s.current,c.onlineStatus.onlineCounter),o.current=c.onlineStatus.isOnline,s.current=!1,u(!1))},[i,l,r,t,c.isLoaded,c.onlineStatus.isOnline,c.onlineStatus.onlineCounter,e,u]),c.onlineStatus.isOnline}const ge=25;function Fe(e,n){return e.length>=n?e.slice(1):e}function Ke(e,n){if(e.previous.length===0)return e;const t=e.previous[e.previous.length-1],r=e.previous.slice(0,e.previous.length-1),s=e.current===void 0?e.next:e.next.length===n?[e.current,...e.next.slice(0,n-1)]:[e.current,...e.next];return{previous:r,current:t,next:s}}function Be(e,n){if(e.next.length===0)return e;const t=e.next[0],r=e.next.slice(1);return{previous:e.current===void 0?e.previous:[...Fe(e.previous,n),e.current],current:t,next:r}}function ze(e,n,t,r){return r&&r(e.current,n)?null:{previous:e.current===void 0?e.previous:[...Fe(e.previous,t),e.current],current:n,next:[]}}function Pe(e){const n=a.useRef(),t=a.useRef(new Set),r=a.useCallback(()=>{t.current.forEach(s=>s())},[]);if(!n.current){const s={state:{previous:(e==null?void 0:e.previous)||[],current:e==null?void 0:e.current,next:(e==null?void 0:e.next)||[]},canUndo:()=>s.state.previous.length!==0,canRedo:()=>s.state.next.length!==0,undo:()=>{s.canUndo()&&(s.state=Ke(s.state,ge),r())},redo:()=>{s.canRedo()&&(s.state=Be(s.state,ge),r())},set:c=>{const o=typeof c=="function"?c(s.state.current):c,i=ze(s.state,o,ge,M.deep_equal);i&&(s.state=i,r())},reset:(c,o=[],i=[])=>{s.state={previous:o,current:c,next:i},r()},subscribe:c=>(t.current.add(c),()=>{t.current.delete(c)})};n.current=s}return n.current}function It(e){const[,n]=a.useState({}),t=Pe(e);return a.useEffect(()=>{var s;return(s=t.subscribe)==null?void 0:s.call(t,()=>{n({})})},[t]),t}exports.CanKingDataProvider=at;exports.DevicesContext=he;exports.LocalizedStrings=Ae;exports.LogMessagesContext=xe;exports.MeasurementSetupContext=Se;exports.MeasurementStatusContext=ve;exports.MeasurementSubscriptionDataProviderContext=ce;exports.MeasurementTraceDataContext=ie;exports.OnlineStatusContext=q;exports.RunningPeriodicTransmissionsContext=be;exports.SignalDataInitState=Ne;exports.UserSettingsContext=pe;exports.WorkspacePanesContext=B;exports.addEventListener=A;exports.calculateMaxActiveProjectDataIntervals=Ue;exports.calculateMaxActiveSessionDataIntervals=Me;exports.calculateOverallStatusLevel=_e;exports.calculateOverallStatusLevelFromBusStatus=ke;exports.limitBuffer=Fe;exports.mergeAndDeduplicateFrames=ue;exports.mergeData=le;exports.mergeFrameDataMaps=H;exports.performRedo=Be;exports.performSet=ze;exports.performUndo=Ke;exports.removeEventListener=I;exports.useAvailableProtocols=we;exports.useDevices=gt;exports.useFixedPositionModeMeasurementData=wt;exports.useIsOnline=vt;exports.useLanguage=it;exports.useLocalizedStrings=ut;exports.useLogMessages=dt;exports.useMaxDataBytes=ct;exports.useMeasurementSetup=Le;exports.useMeasurementStatus=De;exports.useMessageData=Dt;exports.useMessageLogFileFormats=ft;exports.useNewMeasurementData=bt;exports.useNodeStatus=pt;exports.useNumericRadix=ot;exports.useOnlineStatus=je;exports.useOnlineStatusSync=At;exports.useOverallStatusLevel=ht;exports.useProjectData=Pt;exports.useProjectDataSlice=z;exports.useRecentProjectFiles=lt;exports.useRunningPeriodicTransmissions=St;exports.useScrollModeMeasurementData=xt;exports.useSessionData=yt;exports.useSessionDataSlice=Re;exports.useSignalData=Ct;exports.useSignalDataEnvelopes=Mt;exports.useSignalLogFileFormats=mt;exports.useUndo=It;exports.useUndoRef=Pe;exports.useUndoSessionDataSlice=Et;exports.useUserSettings=K;exports.useWorkspacePaneWithId=Tt;