@luxonis/visualizer-protobuf 3.1.0 → 3.1.2

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 (57) hide show
  1. package/dist/{depth-BJ1GI-lD.js → depth-DlC6A3Te.js} +65 -1
  2. package/dist/{deserialization.worker-CpadaVUC.js → deserialization.worker-YKcSaSWH.js} +376 -309
  3. package/dist/{index-B0OcF19n.js → index-BMIqHWwd.js} +2 -2
  4. package/dist/{index-M2eVbe_0.js → index-BN2v1iMN.js} +2 -2
  5. package/dist/{index-TElhyLth.js → index-Bq4VaIv3.js} +3 -3
  6. package/dist/{index-lYAUlgOC.js → index-C53DG9uU.js} +2 -2
  7. package/dist/{index-D2XLTZD6.js → index-C77lunov.js} +2 -2
  8. package/dist/{index-DcciMCSs.js → index-C9_ELgH0.js} +2 -2
  9. package/dist/{index-ruqK13K_.js → index-CA-EmEAR.js} +2 -2
  10. package/dist/{index-kX1V6BdV.js → index-D1zXLkli.js} +2 -2
  11. package/dist/{index-DEAiAkuM.js → index-D89yfNy9.js} +2 -2
  12. package/dist/{index-BFuISzq9.js → index-DmP7sjUz.js} +2 -2
  13. package/dist/{index-JtoOqqNH.js → index-DoXJbu-D.js} +2 -2
  14. package/dist/{index-BimzNWm5.js → index-DpUuSNx-.js} +2 -2
  15. package/dist/{index-DnF6OLu4.js → index-Du4IzW8k.js} +2 -2
  16. package/dist/{index-D_329r0B.js → index-Duh8rNuw.js} +2 -2
  17. package/dist/{index-BoW57zty.js → index-Dx4uEaE6.js} +2 -2
  18. package/dist/{index-oMO5wzwz.js → index-Eu-m3JKy.js} +2 -2
  19. package/dist/{index-ByH52TmT.js → index-IGydAG_o.js} +2 -2
  20. package/dist/{index-POkmkil6.js → index-X7vcFOB2.js} +2 -2
  21. package/dist/{index-BQ8ArLBu.js → index-fnrBNnsp.js} +2 -2
  22. package/dist/{index-DQuS45dq.js → index-plyilw_0.js} +61 -28
  23. package/dist/index.js +2 -2
  24. package/dist/lib/src/components/Panel.d.ts.map +1 -1
  25. package/dist/lib/src/components/Panel.js +3 -1
  26. package/dist/lib/src/components/Panel.js.map +1 -1
  27. package/dist/lib/src/connection/connection.d.ts.map +1 -1
  28. package/dist/lib/src/connection/connection.js +7 -1
  29. package/dist/lib/src/connection/connection.js.map +1 -1
  30. package/dist/lib/src/connection/foxglove-connection.d.ts +6 -0
  31. package/dist/lib/src/connection/foxglove-connection.d.ts.map +1 -1
  32. package/dist/lib/src/connection/foxglove-connection.js +24 -3
  33. package/dist/lib/src/connection/foxglove-connection.js.map +1 -1
  34. package/dist/lib/src/context/VisualizerContext.d.ts +2 -0
  35. package/dist/lib/src/context/VisualizerContext.d.ts.map +1 -1
  36. package/dist/lib/src/context/VisualizerContext.js +7 -0
  37. package/dist/lib/src/context/VisualizerContext.js.map +1 -1
  38. package/dist/lib/src/messaging/deserialization/detections/detection.d.ts.map +1 -1
  39. package/dist/lib/src/messaging/deserialization/detections/detection.js +117 -96
  40. package/dist/lib/src/messaging/deserialization/detections/detection.js.map +1 -1
  41. package/dist/lib/src/messaging/deserialization/video/h264.d.ts +2 -1
  42. package/dist/lib/src/messaging/deserialization/video/h264.d.ts.map +1 -1
  43. package/dist/lib/src/messaging/deserialization/video/h264.js +142 -97
  44. package/dist/lib/src/messaging/deserialization/video/h264.js.map +1 -1
  45. package/dist/lib/src/messaging/deserialization/video/h265.d.ts +2 -1
  46. package/dist/lib/src/messaging/deserialization/video/h265.d.ts.map +1 -1
  47. package/dist/lib/src/messaging/deserialization/video/h265.js +57 -16
  48. package/dist/lib/src/messaging/deserialization/video/h265.js.map +1 -1
  49. package/dist/lib/src/messaging/deserialization.worker.d.ts +3 -1
  50. package/dist/lib/src/messaging/deserialization.worker.d.ts.map +1 -1
  51. package/dist/lib/src/messaging/deserialization.worker.js +28 -12
  52. package/dist/lib/src/messaging/deserialization.worker.js.map +1 -1
  53. package/dist/lib/src/utils/error.d.ts +17 -4
  54. package/dist/lib/src/utils/error.d.ts.map +1 -1
  55. package/dist/lib/src/utils/error.js +59 -6
  56. package/dist/lib/src/utils/error.js.map +1 -1
  57. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-DQuS45dq.js';
2
+ import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DQuS45dq.js';
2
+ import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { ImagePanel } from './index-kX1V6BdV.js';
2
+ import { ImagePanel } from './index-D1zXLkli.js';
3
3
  import 'react';
4
4
  import 'react-dom/client';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import './protobuf-Be0G3NFz.js';
8
8
  import './logger-Bqy1nuLj.js';
@@ -10,7 +10,7 @@ import 'zustand';
10
10
  import 'react-mosaic-component';
11
11
  import '@mui/material';
12
12
  import './isArrayLikeObject-n9ytTioB.js';
13
- import './index-DQuS45dq.js';
13
+ import './index-plyilw_0.js';
14
14
  import './utils-DmlHZWuo.js';
15
15
  import './FoxgloveServer-B98MHUu6.js';
16
16
  import 'ms';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-DQuS45dq.js';
2
+ import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DQuS45dq.js';
2
+ import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -2,9 +2,9 @@
2
2
  import * as React from 'react';
3
3
  import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Component, useContext, useState, useEffect, createContext, forwardRef, useMemo, Profiler, createElement, cloneElement, memo, StrictMode } from 'react';
4
4
  import { createRoot } from 'react-dom/client';
5
- import { W as isSymbol, X as toString, Y as keys, Z as getSymbols$1, _ as stubArray, $ as arrayPush, a0 as baseGetAllKeys, g as getTag, a1 as getAllKeys, k as baseGet, c as baseIteratee, j as castPath, t as toKey, a2 as arrayMap$1, a3 as useCurrentLayoutActions, a4 as useCurrentLayoutSelector, r as reportError, A as AppError, a5 as usePanelMosaicId, a6 as noop$4, L as Logger, a7 as useSelectedPanels, o as getPanelTypeFromId, M as useShallowMemo, T as TAB_PANEL_TYPE, J as filterMap, d as dist$2, a8 as useAppConfiguration, a9 as useJsonTreeTheme } from './depth-BJ1GI-lD.js';
5
+ import { a0 as isSymbol, a1 as toString, a2 as keys, a3 as getSymbols$1, a4 as stubArray, a5 as arrayPush, a6 as baseGetAllKeys, h as getTag, a7 as getAllKeys, l as baseGet, f as baseIteratee, k as castPath, t as toKey, a8 as arrayMap$1, a9 as useCurrentLayoutActions, aa as useCurrentLayoutSelector, r as reportError, A as AppError, ab as usePanelMosaicId, ac as noop$4, L as Logger, ad as useSelectedPanels, p as getPanelTypeFromId, N as useShallowMemo, T as TAB_PANEL_TYPE, K as filterMap, d as dist$2, ae as useAppConfiguration, af as useJsonTreeTheme } from './depth-DlC6A3Te.js';
6
6
  import { createStore, useStore } from 'zustand';
7
- import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-DQuS45dq.js';
7
+ import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-plyilw_0.js';
8
8
  import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, d as _objectWithoutProperties, e as _extends$1, f as commonjsGlobal, g as getDefaultExportFromCjs, b as _objectSpread2, i as getAugmentedNamespace, j as _asyncIterator } from './protobuf-Be0G3NFz.js';
9
9
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
10
10
  import { Link, Button, alpha, IconButton, Card, CardActionArea, CardMedia, CardContent, Typography, Container, Tooltip, Fade, ListItem, ListItemButton, ListItemText, List, TextField, InputAdornment, Popper, Grow, Paper, ClickAwayListener, Menu, MenuItem, Divider, buttonClasses, Backdrop, Chip, useTheme, inputBaseClasses, autocompleteClasses, inputClasses, Checkbox, dialogActionsClasses, filledInputClasses, inputAdornmentClasses, listSubheaderClasses, selectClasses, tableCellClasses, ThemeProvider as ThemeProvider$1, tabsClasses as tabsClasses$1, tabClasses, Tabs, Tab, ListItemIcon } from '@mui/material';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DQuS45dq.js';
2
+ import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-DQuS45dq.js';
2
+ import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-DQuS45dq.js';
2
+ import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-DQuS45dq.js';
2
+ import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DQuS45dq.js';
2
+ import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-DQuS45dq.js';
2
+ import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DQuS45dq.js';
2
+ import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-DQuS45dq.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-plyilw_0.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
- import './depth-BJ1GI-lD.js';
5
+ import './depth-DlC6A3Te.js';
6
6
  import './comlink-jf8bdrAf.js';
7
7
  import 'react';
8
8
  import 'zustand';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, b as _objectSpread2, p as protobufsBySchema, c as protobufSchemaNameToType, g as getDefaultExportFromCjs, d as _objectWithoutProperties$2, e as _extends$2, f as commonjsGlobal } from './protobuf-Be0G3NFz.js';
3
3
  import { L as Logger } from './logger-Bqy1nuLj.js';
4
- import { d as dist$1, e as estimateObjectSize, r as reportError, A as AppError, b as baseFlatten, a as baseEach, c as baseIteratee, f as baseDifference, g as getTag, h as baseKeys, i as baseIsEqual, j as castPath, t as toKey, k as baseGet, l as hasIn, s as sendNotification, m as shallowequal, u as useGuaranteedContext, n as getPanelIdsInsideTabPanels, o as getPanelTypeFromId, T as TAB_PANEL_TYPE, p as removePanelFromTabPanel, q as getPanelIdForType, v as getPathFromNode, w as updateTabPanelLayout, x as getSaveConfigsPayloadForAddedPanel, y as replaceAndRemovePanels, z as inlineTabPanelLayouts, B as getAllPanelIds, D as DEFAULT_TAB_PANEL_CONFIG, C as getConfigsForNestedPanelsInsideTab, E as reorderTabWithinTabPanel, F as moveTabBetweenTabPanels, G as isTabPanelConfig, H as addPanelToTab, I as createAddUpdates, J as filterMap, L as Logger$1, K as uniq$2, M as useShallowMemo, N as CurrentLayoutContext, O as MessageOrderTracker, P as AppConfigurationContext } from './depth-BJ1GI-lD.js';
4
+ import { d as dist$1, e as estimateObjectSize, c as createDecodingError, r as reportError, A as AppError, b as baseFlatten, a as baseEach, f as baseIteratee, g as baseDifference, h as getTag, i as baseKeys, j as baseIsEqual, k as castPath, t as toKey, l as baseGet, m as hasIn, s as sendNotification, n as shallowequal, u as useGuaranteedContext, o as getPanelIdsInsideTabPanels, p as getPanelTypeFromId, T as TAB_PANEL_TYPE, q as removePanelFromTabPanel, v as getPanelIdForType, w as getPathFromNode, x as updateTabPanelLayout, y as getSaveConfigsPayloadForAddedPanel, z as replaceAndRemovePanels, B as inlineTabPanelLayouts, C as getAllPanelIds, D as DEFAULT_TAB_PANEL_CONFIG, E as getConfigsForNestedPanelsInsideTab, F as reorderTabWithinTabPanel, G as moveTabBetweenTabPanels, H as isTabPanelConfig, I as addPanelToTab, J as createAddUpdates, K as filterMap, L as Logger$1, M as uniq$2, N as useShallowMemo, O as CurrentLayoutContext, P as MessageOrderTracker, Q as AppConfigurationContext, R as DecodingError } from './depth-DlC6A3Te.js';
5
5
  import { w as wrap$3, r as releaseProxy, p as proxy } from './comlink-jf8bdrAf.js';
6
6
  import { u as uint8ArrayToUint16Array } from './utils-DmlHZWuo.js';
7
7
  import { B as BinaryOpcode } from './FoxgloveServer-B98MHUu6.js';
@@ -975,7 +975,7 @@ ConfigStore.instance = void 0;
975
975
 
976
976
  var _localStorage$getItem;
977
977
  function initWorker(callback) {
978
- const worker = new Worker(new URL("deserialization.worker-CpadaVUC.js", import.meta.url), {
978
+ const worker = new Worker(new URL("deserialization.worker-YKcSaSWH.js", import.meta.url), {
979
979
  type: "module",
980
980
  name: `message-decoder`
981
981
  });
@@ -1314,6 +1314,7 @@ class FoxgloveConnection {
1314
1314
  this.publishedTopics = new Map();
1315
1315
  this.subscribedTopics = new Map();
1316
1316
  this.unsupportedTopics = new Set();
1317
+ this.topicDecodingErrors = new Map();
1317
1318
  this.advertisedServices = new Map();
1318
1319
  this.problems = new ProblemManager();
1319
1320
  this.resolutions = new Map();
@@ -1357,7 +1358,16 @@ class FoxgloveConnection {
1357
1358
  this.emitState = debouncePromise(async function () {
1358
1359
  const messages = _this.messageEvents;
1359
1360
  _this.messageEvents = [];
1360
- if (!_this.listener || messages.length === 0) {
1361
+ const activeDecodingProblems = [..._this.topicDecodingErrors.values()].map(error => ({
1362
+ severity: "error",
1363
+ message: `Unable to decode topic "${error.topicName}"`,
1364
+ tip: error.message,
1365
+ error
1366
+ }));
1367
+ const transientProblems = _this.problems.getProblems();
1368
+ _this.problems.clearProblems();
1369
+ const problems = activeDecodingProblems.concat(transientProblems);
1370
+ if (!_this.listener || messages.length === 0 && problems.length === 0) {
1361
1371
  await Promise.resolve();
1362
1372
  return;
1363
1373
  }
@@ -1368,8 +1378,6 @@ class FoxgloveConnection {
1368
1378
  if (!_this.endTime || dist$1.isGreaterThan(currentTime, _this.endTime)) {
1369
1379
  _this.endTime = currentTime;
1370
1380
  }
1371
- const problems = _this.problems.getProblems();
1372
- _this.problems.clearProblems();
1373
1381
  for (const message of messages) {
1374
1382
  _this.topics[message.topic] = {
1375
1383
  name: message.topic,
@@ -1503,6 +1511,7 @@ class FoxgloveConnection {
1503
1511
  };
1504
1512
  }
1505
1513
  handleParsedMessage(event) {
1514
+ this.topicDecodingErrors.delete(event.topic);
1506
1515
  this.decodeMetrics.registerEvent(event.topic);
1507
1516
 
1508
1517
  // FIXME: This isn't pretty but PC frames are transformed inside submitPointcloudFrameCallback
@@ -1538,6 +1547,16 @@ class FoxgloveConnection {
1538
1547
  void this.handleParsePointcloudMessage(event);
1539
1548
  }
1540
1549
  }
1550
+ handleDeserializationError(errorCode, topic, errorData) {
1551
+ const nextError = createDecodingError(errorCode, topic, errorData === null || errorData === void 0 ? void 0 : errorData.message);
1552
+ const previousError = this.topicDecodingErrors.get(topic);
1553
+ if ((previousError === null || previousError === void 0 ? void 0 : previousError.code) === nextError.code && previousError.message === nextError.message) {
1554
+ return false;
1555
+ }
1556
+ this.topicDecodingErrors.set(topic, nextError);
1557
+ void this.emitState();
1558
+ return true;
1559
+ }
1541
1560
  isMessageTypeDominant(packetType, topic) {
1542
1561
  var _fpsPerPacketTypeList;
1543
1562
  const fpsPerPacketTypeList = [{
@@ -22584,8 +22603,14 @@ class VisualizerConnection extends FoxgloveConnection {
22584
22603
  // Clean up pointcloud worker pool
22585
22604
  this.depthToPointcloudWorkerPool.destroy();
22586
22605
  };
22606
+ const wrappedErrorCallback = (errorCode, topic, errorData) => {
22607
+ const shouldForwardError = this.handleDeserializationError(errorCode, topic, errorData);
22608
+ if (shouldForwardError) {
22609
+ errorCallback === null || errorCallback === void 0 || errorCallback(errorCode, topic, errorData);
22610
+ }
22611
+ };
22587
22612
  const messageListener = event => {
22588
- this.onMessagePacket.bind(this)(event, errorCallback);
22613
+ this.onMessagePacket.bind(this)(event, wrappedErrorCallback);
22589
22614
  };
22590
22615
  _classPrivateFieldLooseBase(this, _adapter)[_adapter].addEventListener("open", openListener);
22591
22616
  _classPrivateFieldLooseBase(this, _adapter)[_adapter].addEventListener("close", closeListener);
@@ -35001,6 +35026,13 @@ function concatProblems(origState, problems) {
35001
35026
  // License, v2.0. If a copy of the MPL was not distributed with this
35002
35027
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35003
35028
 
35029
+ function useTopicDecodingError(topic) {
35030
+ return useMessagePipeline(ctx => {
35031
+ var _ctx$playerState$prob2, _problems$find;
35032
+ const problems = (_ctx$playerState$prob2 = ctx.playerState.problems) !== null && _ctx$playerState$prob2 !== void 0 ? _ctx$playerState$prob2 : [];
35033
+ return (_problems$find = problems.find(problem => problem.error instanceof DecodingError && problem.error.topicName === topic)) === null || _problems$find === void 0 ? void 0 : _problems$find.error;
35034
+ });
35035
+ }
35004
35036
  const VisualizerContext = /*#__PURE__*/React__default.memo(function VisualizerContext({
35005
35037
  children,
35006
35038
  connections
@@ -88672,7 +88704,7 @@ function legacy(parser) {
88672
88704
  return new LanguageSupport(StreamLanguage.define(parser));
88673
88705
  }
88674
88706
  function sql$1(dialectName) {
88675
- return import('./index-BimzNWm5.js').then(m => m.sql({ dialect: m[dialectName] }));
88707
+ return import('./index-DpUuSNx-.js').then(m => m.sql({ dialect: m[dialectName] }));
88676
88708
  }
88677
88709
  /**
88678
88710
  An array of language descriptions for known language packages.
@@ -88683,7 +88715,7 @@ const languages = [
88683
88715
  name: "C",
88684
88716
  extensions: ["c", "h", "ino"],
88685
88717
  load() {
88686
- return import('./index-DcciMCSs.js').then(m => m.cpp());
88718
+ return import('./index-C9_ELgH0.js').then(m => m.cpp());
88687
88719
  }
88688
88720
  }),
88689
88721
  /*@__PURE__*/LanguageDescription.of({
@@ -88691,7 +88723,7 @@ const languages = [
88691
88723
  alias: ["cpp"],
88692
88724
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
88693
88725
  load() {
88694
- return import('./index-DcciMCSs.js').then(m => m.cpp());
88726
+ return import('./index-C9_ELgH0.js').then(m => m.cpp());
88695
88727
  }
88696
88728
  }),
88697
88729
  /*@__PURE__*/LanguageDescription.of({
@@ -88711,7 +88743,7 @@ const languages = [
88711
88743
  name: "Go",
88712
88744
  extensions: ["go"],
88713
88745
  load() {
88714
- return import('./index-BQ8ArLBu.js').then(m => m.go());
88746
+ return import('./index-fnrBNnsp.js').then(m => m.go());
88715
88747
  }
88716
88748
  }),
88717
88749
  /*@__PURE__*/LanguageDescription.of({
@@ -88726,7 +88758,7 @@ const languages = [
88726
88758
  name: "Java",
88727
88759
  extensions: ["java"],
88728
88760
  load() {
88729
- return import('./index-DEAiAkuM.js').then(m => m.java());
88761
+ return import('./index-D89yfNy9.js').then(m => m.java());
88730
88762
  }
88731
88763
  }),
88732
88764
  /*@__PURE__*/LanguageDescription.of({
@@ -88741,7 +88773,7 @@ const languages = [
88741
88773
  name: "Jinja",
88742
88774
  extensions: ["j2", "jinja", "jinja2"],
88743
88775
  load() {
88744
- return import('./index-ruqK13K_.js').then(m => m.jinja());
88776
+ return import('./index-CA-EmEAR.js').then(m => m.jinja());
88745
88777
  }
88746
88778
  }),
88747
88779
  /*@__PURE__*/LanguageDescription.of({
@@ -88749,7 +88781,7 @@ const languages = [
88749
88781
  alias: ["json5"],
88750
88782
  extensions: ["json", "map"],
88751
88783
  load() {
88752
- return import('./index-BoW57zty.js').then(m => m.json());
88784
+ return import('./index-Dx4uEaE6.js').then(m => m.json());
88753
88785
  }
88754
88786
  }),
88755
88787
  /*@__PURE__*/LanguageDescription.of({
@@ -88763,14 +88795,14 @@ const languages = [
88763
88795
  name: "LESS",
88764
88796
  extensions: ["less"],
88765
88797
  load() {
88766
- return import('./index-JtoOqqNH.js').then(m => m.less());
88798
+ return import('./index-DoXJbu-D.js').then(m => m.less());
88767
88799
  }
88768
88800
  }),
88769
88801
  /*@__PURE__*/LanguageDescription.of({
88770
88802
  name: "Liquid",
88771
88803
  extensions: ["liquid"],
88772
88804
  load() {
88773
- return import('./index-POkmkil6.js').then(m => m.liquid());
88805
+ return import('./index-X7vcFOB2.js').then(m => m.liquid());
88774
88806
  }
88775
88807
  }),
88776
88808
  /*@__PURE__*/LanguageDescription.of({
@@ -88796,7 +88828,7 @@ const languages = [
88796
88828
  name: "PHP",
88797
88829
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
88798
88830
  load() {
88799
- return import('./index-DnF6OLu4.js').then(m => m.php());
88831
+ return import('./index-Du4IzW8k.js').then(m => m.php());
88800
88832
  }
88801
88833
  }),
88802
88834
  /*@__PURE__*/LanguageDescription.of({
@@ -88813,28 +88845,28 @@ const languages = [
88813
88845
  extensions: ["BUILD", "bzl", "py", "pyw"],
88814
88846
  filename: /^(BUCK|BUILD)$/,
88815
88847
  load() {
88816
- return import('./index-D_329r0B.js').then(m => m.python());
88848
+ return import('./index-Duh8rNuw.js').then(m => m.python());
88817
88849
  }
88818
88850
  }),
88819
88851
  /*@__PURE__*/LanguageDescription.of({
88820
88852
  name: "Rust",
88821
88853
  extensions: ["rs"],
88822
88854
  load() {
88823
- return import('./index-oMO5wzwz.js').then(m => m.rust());
88855
+ return import('./index-Eu-m3JKy.js').then(m => m.rust());
88824
88856
  }
88825
88857
  }),
88826
88858
  /*@__PURE__*/LanguageDescription.of({
88827
88859
  name: "Sass",
88828
88860
  extensions: ["sass"],
88829
88861
  load() {
88830
- return import('./index-D2XLTZD6.js').then(m => m.sass({ indented: true }));
88862
+ return import('./index-C77lunov.js').then(m => m.sass({ indented: true }));
88831
88863
  }
88832
88864
  }),
88833
88865
  /*@__PURE__*/LanguageDescription.of({
88834
88866
  name: "SCSS",
88835
88867
  extensions: ["scss"],
88836
88868
  load() {
88837
- return import('./index-D2XLTZD6.js').then(m => m.sass());
88869
+ return import('./index-C77lunov.js').then(m => m.sass());
88838
88870
  }
88839
88871
  }),
88840
88872
  /*@__PURE__*/LanguageDescription.of({
@@ -88865,7 +88897,7 @@ const languages = [
88865
88897
  name: "WebAssembly",
88866
88898
  extensions: ["wat", "wast"],
88867
88899
  load() {
88868
- return import('./index-ByH52TmT.js').then(m => m.wast());
88900
+ return import('./index-IGydAG_o.js').then(m => m.wast());
88869
88901
  }
88870
88902
  }),
88871
88903
  /*@__PURE__*/LanguageDescription.of({
@@ -88873,7 +88905,7 @@ const languages = [
88873
88905
  alias: ["rss", "wsdl", "xsd"],
88874
88906
  extensions: ["xml", "xsl", "xsd", "svg"],
88875
88907
  load() {
88876
- return import('./index-BFuISzq9.js').then(m => m.xml());
88908
+ return import('./index-DmP7sjUz.js').then(m => m.xml());
88877
88909
  }
88878
88910
  }),
88879
88911
  /*@__PURE__*/LanguageDescription.of({
@@ -88881,7 +88913,7 @@ const languages = [
88881
88913
  alias: ["yml"],
88882
88914
  extensions: ["yaml", "yml"],
88883
88915
  load() {
88884
- return import('./index-lYAUlgOC.js').then(m => m.yaml());
88916
+ return import('./index-C53DG9uU.js').then(m => m.yaml());
88885
88917
  }
88886
88918
  }),
88887
88919
  // Legacy modes ported from CodeMirror 5
@@ -89670,13 +89702,13 @@ const languages = [
89670
89702
  name: "Vue",
89671
89703
  extensions: ["vue"],
89672
89704
  load() {
89673
- return import('./index-B0OcF19n.js').then(m => m.vue());
89705
+ return import('./index-BMIqHWwd.js').then(m => m.vue());
89674
89706
  }
89675
89707
  }),
89676
89708
  /*@__PURE__*/LanguageDescription.of({
89677
89709
  name: "Angular Template",
89678
89710
  load() {
89679
- return import('./index-M2eVbe_0.js').then(m => m.angular());
89711
+ return import('./index-BN2v1iMN.js').then(m => m.angular());
89680
89712
  }
89681
89713
  })
89682
89714
  ];
@@ -174655,6 +174687,7 @@ const Panel = ({
174655
174687
  var _sectionRef$current;
174656
174688
  const [detections, setDetections] = React__default.useState([]);
174657
174689
  const sectionRef = useRef(null);
174690
+ const decodingError = useTopicDecodingError(topic);
174658
174691
  React__default.useEffect(() => {
174659
174692
  if (!_disableAnnotations) {
174660
174693
  setDetections(current => [...rawToAnnotations(_annotationTopics, "main", current), ...rawToAnnotations(_extraAnnotationTopics, "extra", current)]);
@@ -174698,7 +174731,7 @@ const Panel = ({
174698
174731
  actions: panelToolbarActions
174699
174732
  }), /*#__PURE__*/React__default.createElement(Suspense, {
174700
174733
  fallback: /*#__PURE__*/React__default.createElement(EmptyState, null, /*#__PURE__*/React__default.createElement("span", null, "Loading..."))
174701
- }, /*#__PURE__*/React__default.createElement(RemountOnValueChange, {
174734
+ }, decodingError ? /*#__PURE__*/React__default.createElement(EmptyState, null, /*#__PURE__*/React__default.createElement("strong", null, topic), /*#__PURE__*/React__default.createElement("br", null), decodingError.message) : /*#__PURE__*/React__default.createElement(RemountOnValueChange, {
174702
174735
  value: detections
174703
174736
  }, children))))));
174704
174737
  };
@@ -174729,7 +174762,7 @@ function createRenderDelaySampler() {
174729
174762
  };
174730
174763
  }
174731
174764
 
174732
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-TElhyLth.js'));
174765
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-Bq4VaIv3.js'));
174733
174766
  const ImagePanelBody = ({
174734
174767
  topic,
174735
174768
  frameRenderedEvent,
@@ -174824,7 +174857,7 @@ const DEFAULT_CAMERA_STATE = {
174824
174857
  // License, v2.0. If a copy of the MPL was not distributed with this
174825
174858
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
174826
174859
 
174827
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-kX1V6BdV.js'));
174860
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-D1zXLkli.js'));
174828
174861
  const PointCloudPanelBody = ({
174829
174862
  topic,
174830
174863
  frameRenderedEvent,
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-DQuS45dq.js';
3
- export { Q as getDistanceFromDepthDataForOffset } from './depth-BJ1GI-lD.js';
2
+ export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-plyilw_0.js';
3
+ export { S as getDistanceFromDepthDataForOffset } from './depth-DlC6A3Te.js';
4
4
  import './protobuf-Be0G3NFz.js';
5
5
  import './logger-Bqy1nuLj.js';
6
6
  import './comlink-jf8bdrAf.js';
@@ -1 +1 @@
1
- {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../src/components/Panel.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,OAAO,CAAC;AAO3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,sDAAsD,CAAC;AAEhF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAC,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,mBAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAIF,eAAO,MAAM,aAAa,QAAO,aAEhC,CAAC;AAaF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA2FtC,CAAC"}
1
+ {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../src/components/Panel.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,sDAAsD,CAAC;AAEhF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAC,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,mBAAmB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAClC,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAIF,eAAO,MAAM,aAAa,QAAO,aAEhC,CAAC;AAaF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAoGtC,CAAC"}
@@ -7,6 +7,7 @@ import EmptyState from "@foxglove/studio-base/components/EmptyState.js";
7
7
  import ErrorBoundary from "@foxglove/studio-base/components/ErrorBoundary.js";
8
8
  import RemountOnValueChange from "@foxglove/studio-base/components/RemountOnValueChange.js";
9
9
  import { PanelToolbar } from "./PanelToolbar.js";
10
+ import { useTopicDecodingError } from "../context/VisualizerContext.js";
10
11
  import "../fonts/fonts.css";
11
12
  import React from "react";
12
13
  const DetectionContext = React.createContext({ detections: [] });
@@ -21,6 +22,7 @@ const rawToAnnotations = (rawAnnotations, kind, current) => rawAnnotations.map((
21
22
  export const Panel = ({ children, kind, topic, disableAnnotations = false, annotationTopics = [], extraAnnotationTopics = [], targetFps, renderDelay, toggleTopic, triggerToast, hideToolbar = false, toggleFullscreen, canMoveUp, moveUp, canMoveDown, moveDown, panelOverlay, fakedAs, panelToolbarActions, }) => {
22
23
  const [detections, setDetections] = React.useState([]);
23
24
  const sectionRef = useRef(null);
25
+ const decodingError = useTopicDecodingError(topic);
24
26
  React.useEffect(() => {
25
27
  if (!disableAnnotations) {
26
28
  setDetections((current) => [
@@ -39,6 +41,6 @@ export const Panel = ({ children, kind, topic, disableAnnotations = false, annot
39
41
  }
40
42
  toggleFullscreen(sectionRef);
41
43
  };
42
- return (_jsx(RemountOnValueChange, { value: "internal-player", children: _jsx(ErrorBoundary, { children: _jsx(DetectionContext.Provider, { value: { detections }, children: _jsxs("section", { className: "flex flex-col grow border border-solid border-[#d3d3d3d9] overflow-hidden rounded-lg", ref: sectionRef, children: [panelOverlay, !hideToolbar && (_jsx(PanelToolbar, { fakedAs: fakedAs, kind: kind, topic: topic, setDetections: setDetections, disableAnnotations: disableAnnotations, targetFps: targetFps, renderDelay: renderDelay, toggleTopic: toggleTopic, toggleFullscreen: toggleFullscreenForThisPanel, triggerToast: triggerToast, canMoveUp: canMoveUp, moveUp: moveUp, canMoveDown: canMoveDown, moveDown: moveDown, touchesBreakpoint: sectionRef.current?.clientWidth ? sectionRef.current.clientWidth <= 550 : false, isPointcloud: kind === "pointCloud", actions: panelToolbarActions })), _jsx(Suspense, { fallback: _jsx(EmptyState, { children: _jsx("span", { children: "Loading..." }) }), children: _jsx(RemountOnValueChange, { value: detections, children: children }) })] }) }) }) }));
44
+ return (_jsx(RemountOnValueChange, { value: "internal-player", children: _jsx(ErrorBoundary, { children: _jsx(DetectionContext.Provider, { value: { detections }, children: _jsxs("section", { className: "flex flex-col grow border border-solid border-[#d3d3d3d9] overflow-hidden rounded-lg", ref: sectionRef, children: [panelOverlay, !hideToolbar && (_jsx(PanelToolbar, { fakedAs: fakedAs, kind: kind, topic: topic, setDetections: setDetections, disableAnnotations: disableAnnotations, targetFps: targetFps, renderDelay: renderDelay, toggleTopic: toggleTopic, toggleFullscreen: toggleFullscreenForThisPanel, triggerToast: triggerToast, canMoveUp: canMoveUp, moveUp: moveUp, canMoveDown: canMoveDown, moveDown: moveDown, touchesBreakpoint: sectionRef.current?.clientWidth ? sectionRef.current.clientWidth <= 550 : false, isPointcloud: kind === "pointCloud", actions: panelToolbarActions })), _jsx(Suspense, { fallback: _jsx(EmptyState, { children: _jsx("span", { children: "Loading..." }) }), children: decodingError ? (_jsxs(EmptyState, { children: [_jsx("strong", { children: topic }), _jsx("br", {}), decodingError.message] })) : (_jsx(RemountOnValueChange, { value: detections, children: children })) })] }) }) }) }));
43
45
  };
44
46
  //# sourceMappingURL=Panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Panel.js","sourceRoot":"","sources":["../../../../src/components/Panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Panel.js","sourceRoot":"","sources":["../../../../src/components/Panel.tsx"],"names":[],"mappings":"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"}