@luxonis/visualizer-protobuf 2.64.0 → 2.66.0
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.
- package/dist/{index-C2I0SvM_.js → index-8i6rZL1F.js} +1 -1
- package/dist/{index-b8JQ8FbB.js → index-B5saAz5y.js} +1 -1
- package/dist/{index-CuBQ8sfd.js → index-BOiGPesM.js} +1 -1
- package/dist/{index-D7jkC67I.js → index-BPoYkz5D.js} +1 -1
- package/dist/{index-BnLSHvn1.js → index-BVdBdL0y.js} +2 -2
- package/dist/{index-btWll_X8.js → index-BVhURReD.js} +20 -20
- package/dist/{index-STYyVl4n.js → index-BjqPJJVm.js} +1 -1
- package/dist/{index-CTUZw7U6.js → index-C6EEuWeT.js} +1 -1
- package/dist/{index-Bt8NKGgQ.js → index-C8keT4BV.js} +125 -64
- package/dist/{index-B53S6byS.js → index-CB4uR2F1.js} +1 -1
- package/dist/{index-CJ0ouF_X.js → index-CGtvEVA-.js} +1 -1
- package/dist/{index-PCEpYVVD.js → index-COTQtzxD.js} +1 -1
- package/dist/{index-fCMuSW-j.js → index-CmOcsIv5.js} +1 -1
- package/dist/{index-Dy0KZSfH.js → index-CxsQZNfY.js} +1 -1
- package/dist/{index-B86puxfC.js → index-DON7EBVW.js} +1 -1
- package/dist/{index-B1iI7RoB.js → index-LwsDo_d_.js} +1 -1
- package/dist/{index-BxkJ2Rkh.js → index-YH3sx_bg.js} +1 -1
- package/dist/{index-B7nNBAQK.js → index-eLC_hXQ5.js} +1 -1
- package/dist/{index-DvvaZvBj.js → index-nm8ZXnLm.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts +4 -5
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts.map +1 -1
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js +109 -55
- package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, aa as LocalTokenGroup, ah as html, ai as parseMixed, ak as javascriptLanguage } from './index-
|
|
1
|
+
import { Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, aa as LocalTokenGroup, ah as html, ai as parseMixed, ak as javascriptLanguage } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, Y as styleTags, Z as tags, a0 as LanguageSupport, a2 as LRParser } from './index-
|
|
1
|
+
import { $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, Y as styleTags, Z as tags, a0 as LanguageSupport, a2 as LRParser } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-
|
|
1
|
+
import { Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImagePanel } from './index-
|
|
1
|
+
import { ImagePanel } from './index-C8keT4BV.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import 'react-dom';
|
|
4
4
|
import './depth-CgtekUia.js';
|
|
@@ -8,7 +8,7 @@ import 'zustand';
|
|
|
8
8
|
import 'react-mosaic-component';
|
|
9
9
|
import '@mui/material';
|
|
10
10
|
import './isArrayLikeObject-Bytw9p-q.js';
|
|
11
|
-
import './index-
|
|
11
|
+
import './index-BVhURReD.js';
|
|
12
12
|
import './comlink-DHMAu6X7.js';
|
|
13
13
|
import './utils-Hzt3wxhG.js';
|
|
14
14
|
import './FoxgloveServer-MMAMiqqQ.js';
|
|
@@ -86796,7 +86796,7 @@ function legacy(parser) {
|
|
|
86796
86796
|
return new LanguageSupport(StreamLanguage.define(parser));
|
|
86797
86797
|
}
|
|
86798
86798
|
function sql$1(dialectName) {
|
|
86799
|
-
return import('./index-
|
|
86799
|
+
return import('./index-CGtvEVA-.js').then(m => m.sql({ dialect: m[dialectName] }));
|
|
86800
86800
|
}
|
|
86801
86801
|
/**
|
|
86802
86802
|
An array of language descriptions for known language packages.
|
|
@@ -86807,7 +86807,7 @@ const languages = [
|
|
|
86807
86807
|
name: "C",
|
|
86808
86808
|
extensions: ["c", "h", "ino"],
|
|
86809
86809
|
load() {
|
|
86810
|
-
return import('./index-
|
|
86810
|
+
return import('./index-BOiGPesM.js').then(m => m.cpp());
|
|
86811
86811
|
}
|
|
86812
86812
|
}),
|
|
86813
86813
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86815,7 +86815,7 @@ const languages = [
|
|
|
86815
86815
|
alias: ["cpp"],
|
|
86816
86816
|
extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
|
|
86817
86817
|
load() {
|
|
86818
|
-
return import('./index-
|
|
86818
|
+
return import('./index-BOiGPesM.js').then(m => m.cpp());
|
|
86819
86819
|
}
|
|
86820
86820
|
}),
|
|
86821
86821
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86835,7 +86835,7 @@ const languages = [
|
|
|
86835
86835
|
name: "Go",
|
|
86836
86836
|
extensions: ["go"],
|
|
86837
86837
|
load() {
|
|
86838
|
-
return import('./index-
|
|
86838
|
+
return import('./index-C6EEuWeT.js').then(m => m.go());
|
|
86839
86839
|
}
|
|
86840
86840
|
}),
|
|
86841
86841
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86850,7 +86850,7 @@ const languages = [
|
|
|
86850
86850
|
name: "Java",
|
|
86851
86851
|
extensions: ["java"],
|
|
86852
86852
|
load() {
|
|
86853
|
-
return import('./index-
|
|
86853
|
+
return import('./index-YH3sx_bg.js').then(m => m.java());
|
|
86854
86854
|
}
|
|
86855
86855
|
}),
|
|
86856
86856
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86866,7 +86866,7 @@ const languages = [
|
|
|
86866
86866
|
alias: ["json5"],
|
|
86867
86867
|
extensions: ["json", "map"],
|
|
86868
86868
|
load() {
|
|
86869
|
-
return import('./index-
|
|
86869
|
+
return import('./index-BPoYkz5D.js').then(m => m.json());
|
|
86870
86870
|
}
|
|
86871
86871
|
}),
|
|
86872
86872
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86880,14 +86880,14 @@ const languages = [
|
|
|
86880
86880
|
name: "LESS",
|
|
86881
86881
|
extensions: ["less"],
|
|
86882
86882
|
load() {
|
|
86883
|
-
return import('./index-
|
|
86883
|
+
return import('./index-COTQtzxD.js').then(m => m.less());
|
|
86884
86884
|
}
|
|
86885
86885
|
}),
|
|
86886
86886
|
/*@__PURE__*/LanguageDescription.of({
|
|
86887
86887
|
name: "Liquid",
|
|
86888
86888
|
extensions: ["liquid"],
|
|
86889
86889
|
load() {
|
|
86890
|
-
return import('./index-
|
|
86890
|
+
return import('./index-CB4uR2F1.js').then(m => m.liquid());
|
|
86891
86891
|
}
|
|
86892
86892
|
}),
|
|
86893
86893
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86913,7 +86913,7 @@ const languages = [
|
|
|
86913
86913
|
name: "PHP",
|
|
86914
86914
|
extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
|
|
86915
86915
|
load() {
|
|
86916
|
-
return import('./index-
|
|
86916
|
+
return import('./index-DON7EBVW.js').then(m => m.php());
|
|
86917
86917
|
}
|
|
86918
86918
|
}),
|
|
86919
86919
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86930,28 +86930,28 @@ const languages = [
|
|
|
86930
86930
|
extensions: ["BUILD", "bzl", "py", "pyw"],
|
|
86931
86931
|
filename: /^(BUCK|BUILD)$/,
|
|
86932
86932
|
load() {
|
|
86933
|
-
return import('./index-
|
|
86933
|
+
return import('./index-CmOcsIv5.js').then(m => m.python());
|
|
86934
86934
|
}
|
|
86935
86935
|
}),
|
|
86936
86936
|
/*@__PURE__*/LanguageDescription.of({
|
|
86937
86937
|
name: "Rust",
|
|
86938
86938
|
extensions: ["rs"],
|
|
86939
86939
|
load() {
|
|
86940
|
-
return import('./index-
|
|
86940
|
+
return import('./index-eLC_hXQ5.js').then(m => m.rust());
|
|
86941
86941
|
}
|
|
86942
86942
|
}),
|
|
86943
86943
|
/*@__PURE__*/LanguageDescription.of({
|
|
86944
86944
|
name: "Sass",
|
|
86945
86945
|
extensions: ["sass"],
|
|
86946
86946
|
load() {
|
|
86947
|
-
return import('./index-
|
|
86947
|
+
return import('./index-BjqPJJVm.js').then(m => m.sass({ indented: true }));
|
|
86948
86948
|
}
|
|
86949
86949
|
}),
|
|
86950
86950
|
/*@__PURE__*/LanguageDescription.of({
|
|
86951
86951
|
name: "SCSS",
|
|
86952
86952
|
extensions: ["scss"],
|
|
86953
86953
|
load() {
|
|
86954
|
-
return import('./index-
|
|
86954
|
+
return import('./index-BjqPJJVm.js').then(m => m.sass());
|
|
86955
86955
|
}
|
|
86956
86956
|
}),
|
|
86957
86957
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86982,7 +86982,7 @@ const languages = [
|
|
|
86982
86982
|
name: "WebAssembly",
|
|
86983
86983
|
extensions: ["wat", "wast"],
|
|
86984
86984
|
load() {
|
|
86985
|
-
return import('./index-
|
|
86985
|
+
return import('./index-B5saAz5y.js').then(m => m.wast());
|
|
86986
86986
|
}
|
|
86987
86987
|
}),
|
|
86988
86988
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86990,7 +86990,7 @@ const languages = [
|
|
|
86990
86990
|
alias: ["rss", "wsdl", "xsd"],
|
|
86991
86991
|
extensions: ["xml", "xsl", "xsd", "svg"],
|
|
86992
86992
|
load() {
|
|
86993
|
-
return import('./index-
|
|
86993
|
+
return import('./index-LwsDo_d_.js').then(m => m.xml());
|
|
86994
86994
|
}
|
|
86995
86995
|
}),
|
|
86996
86996
|
/*@__PURE__*/LanguageDescription.of({
|
|
@@ -86998,7 +86998,7 @@ const languages = [
|
|
|
86998
86998
|
alias: ["yml"],
|
|
86999
86999
|
extensions: ["yaml", "yml"],
|
|
87000
87000
|
load() {
|
|
87001
|
-
return import('./index-
|
|
87001
|
+
return import('./index-CxsQZNfY.js').then(m => m.yaml());
|
|
87002
87002
|
}
|
|
87003
87003
|
}),
|
|
87004
87004
|
// Legacy modes ported from CodeMirror 5
|
|
@@ -87794,13 +87794,13 @@ const languages = [
|
|
|
87794
87794
|
name: "Vue",
|
|
87795
87795
|
extensions: ["vue"],
|
|
87796
87796
|
load() {
|
|
87797
|
-
return import('./index-
|
|
87797
|
+
return import('./index-8i6rZL1F.js').then(m => m.vue());
|
|
87798
87798
|
}
|
|
87799
87799
|
}),
|
|
87800
87800
|
/*@__PURE__*/LanguageDescription.of({
|
|
87801
87801
|
name: "Angular Template",
|
|
87802
87802
|
load() {
|
|
87803
|
-
return import('./index-
|
|
87803
|
+
return import('./index-nm8ZXnLm.js').then(m => m.angular());
|
|
87804
87804
|
}
|
|
87805
87805
|
})
|
|
87806
87806
|
];
|
|
@@ -166509,7 +166509,7 @@ function createRenderDelaySampler() {
|
|
|
166509
166509
|
};
|
|
166510
166510
|
}
|
|
166511
166511
|
|
|
166512
|
-
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
166512
|
+
const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BVdBdL0y.js'));
|
|
166513
166513
|
const ImagePanelBody = ({
|
|
166514
166514
|
topic,
|
|
166515
166515
|
frameRenderedEvent,
|
|
@@ -166604,7 +166604,7 @@ const DEFAULT_CAMERA_STATE = {
|
|
|
166604
166604
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
166605
166605
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
166606
166606
|
|
|
166607
|
-
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-
|
|
166607
|
+
const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-C8keT4BV.js'));
|
|
166608
166608
|
const PointCloudPanelBody = ({
|
|
166609
166609
|
topic,
|
|
166610
166610
|
frameRenderedEvent,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, X as foldNodeProp, a8 as foldInside, U as indentNodeProp, V as continuedIndent, ae as defineCSSCompletionSource, a0 as LanguageSupport } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, X as foldNodeProp, a8 as foldInside, U as indentNodeProp, V as continuedIndent, ae as defineCSSCompletionSource, a0 as LanguageSupport } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, aa as LocalTokenGroup, ab as snippetCompletion, a5 as syntaxTree, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, a3 as ifNotIn, a4 as completeFromList, ac as IterMode, ad as NodeWeakMap } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, aa as LocalTokenGroup, ab as snippetCompletion, a5 as syntaxTree, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, a3 as ifNotIn, a4 as completeFromList, ac as IterMode, ad as NodeWeakMap } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -3,7 +3,7 @@ import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Compo
|
|
|
3
3
|
import ReactDOM__default from 'react-dom';
|
|
4
4
|
import { Z as isSymbol, $ as toString, a0 as keys, a1 as getSymbols$1, a2 as stubArray, a3 as arrayPush, a4 as baseGetAllKeys, g as getTag, a5 as getAllKeys, k as baseGet, c as baseIteratee, j as castPath, t as toKey, a6 as arrayMap$1, a7 as baseUniq, b as baseFlatten, a8 as useMustNotChange, a9 as useCurrentLayoutActions, aa as useCurrentLayoutSelector, r as reportError, A as AppError, L as Logger, u as useGuaranteedContext, ab as usePanelMosaicId, ac as useSelectedPanels, ad as PANEL_TITLE_CONFIG_KEY, ae as noop$4, o as getPanelTypeFromId, M as useShallowMemo, T as TAB_PANEL_TYPE, J as filterMap, d as dist$2, af as useAppConfiguration, ag as useValueChangedDebugLog, V as typescript, ah as useJsonTreeTheme } from './depth-CgtekUia.js';
|
|
5
5
|
import { createStore, useStore } from 'zustand';
|
|
6
|
-
import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, P as PropTypes, E as ErrorDisplay, S as Stack$1, m as makeStyles$1, _ as _extends$1, W as WorkspaceContext, u as useAnalytics, a as AppEvent, L as LeftSidebarItemKeys, R as RightSidebarItemKeys, d as useTranslation, e as usePanelCatalog, h as EmptyState, i as isEmpty, j as PanelContext, k as PanelCatalogContext, l as usePanelStateStore, n as useDefaultPanelTitle, o as useWorkspaceStore, p as WorkspaceStoreSelectors, q as difference, r as usePanelContext, s as useMessagePipeline, v as v4, t as useHoverValue, w as useSetHoverValue, x as useClearHoverValue, y as useMessagePipelineGetter, z as usePanelSettingsTreeUpdate, B as PlayerCapabilities, C as assertNever, D as PlayerPresence, F as isEqual, G as isDesktopApp, H as createTheme, I as propTypesExports, J as DEFAULT_CAMERA_STATE$1, K as format$1, M as z, N as serializeError, O as stringify$1, Q as createIntl, T as createIntlCache } from './index-
|
|
6
|
+
import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, P as PropTypes, E as ErrorDisplay, S as Stack$1, m as makeStyles$1, _ as _extends$1, W as WorkspaceContext, u as useAnalytics, a as AppEvent, L as LeftSidebarItemKeys, R as RightSidebarItemKeys, d as useTranslation, e as usePanelCatalog, h as EmptyState, i as isEmpty, j as PanelContext, k as PanelCatalogContext, l as usePanelStateStore, n as useDefaultPanelTitle, o as useWorkspaceStore, p as WorkspaceStoreSelectors, q as difference, r as usePanelContext, s as useMessagePipeline, v as v4, t as useHoverValue, w as useSetHoverValue, x as useClearHoverValue, y as useMessagePipelineGetter, z as usePanelSettingsTreeUpdate, B as PlayerCapabilities, C as assertNever, D as PlayerPresence, F as isEqual, G as isDesktopApp, H as createTheme, I as propTypesExports, J as DEFAULT_CAMERA_STATE$1, K as format$1, M as z, N as serializeError, O as stringify$1, Q as createIntl, T as createIntlCache } from './index-BVhURReD.js';
|
|
7
7
|
import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
|
|
8
8
|
import { g as getDefaultExportFromCjs, c as commonjsGlobal, d as getAugmentedNamespace } from './protobuf-B55JS-Px.js';
|
|
9
9
|
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, alertClasses, darken, lighten, inputBaseClasses, autocompleteClasses, inputClasses, Checkbox, dialogActionsClasses, filledInputClasses, inputAdornmentClasses, listSubheaderClasses, selectClasses, tableCellClasses, ThemeProvider as ThemeProvider$1, SvgIcon, tabsClasses as tabsClasses$1, tabClasses, Tabs, Tab, ListItemIcon } from '@mui/material';
|
|
@@ -31965,6 +31965,13 @@ function getFrameIdFromImage(image) {
|
|
|
31965
31965
|
return image.frame_id;
|
|
31966
31966
|
}
|
|
31967
31967
|
}
|
|
31968
|
+
function getTimestampFromImage(image) {
|
|
31969
|
+
if ("header" in image) {
|
|
31970
|
+
return image.header.stamp;
|
|
31971
|
+
} else {
|
|
31972
|
+
return image.timestamp;
|
|
31973
|
+
}
|
|
31974
|
+
}
|
|
31968
31975
|
|
|
31969
31976
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
31970
31977
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
@@ -32499,6 +32506,15 @@ function getAnnotationAtPath(message, path) {
|
|
|
32499
32506
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
32500
32507
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
32501
32508
|
|
|
32509
|
+
const syncToleranceSec = Number(localStorage.getItem('viewer-syncToleranceSec')) || 0.15; // maximum acceptable time difference for selecting a “closest” annotation.
|
|
32510
|
+
const maxStalenessSec = Number(localStorage.getItem('viewer-maxStalenessSec')) || 1.1; // how long we can hold the last older annotation if no better match is available. 1s corresponds to 1 FPS + 100ms window for jitter.
|
|
32511
|
+
const hysteresisSec = Number(localStorage.getItem('viewer-hysteresisSec')) || 0.1; // how much “stickiness” we allow before switching candidates.
|
|
32512
|
+
|
|
32513
|
+
console.log("Synchronization parameters:", {
|
|
32514
|
+
syncToleranceSec,
|
|
32515
|
+
maxStalenessSec,
|
|
32516
|
+
hysteresisSec
|
|
32517
|
+
});
|
|
32502
32518
|
// Have constants for the HUD items so that they don't need to be recreated and GCed every message
|
|
32503
32519
|
const WAITING_FOR_BOTH_HUD_ITEM = {
|
|
32504
32520
|
id: WAITING_FOR_BOTH_MESSAGES_HUD_ID,
|
|
@@ -32555,13 +32571,14 @@ class MessageHandler {
|
|
|
32555
32571
|
|
|
32556
32572
|
#onAnnotationReceivedEvent;
|
|
32557
32573
|
#annotationsFpsRefreshInterval = null;
|
|
32574
|
+
// Store a small buffer of recent annotations per topic with computed seconds timestamps
|
|
32558
32575
|
annotationsMap = new Map();
|
|
32559
|
-
|
|
32560
|
-
|
|
32561
|
-
ghostTimeoutMs = 1000;
|
|
32576
|
+
// Track last selected annotation per topic to add hysteresis and reduce flicker
|
|
32577
|
+
lastSelectedByTopic = new Map();
|
|
32562
32578
|
/**
|
|
32563
|
-
*
|
|
32564
|
-
* @param config - subset of ImageMode settings required for message handling
|
|
32579
|
+
* Create a MessageHandler
|
|
32580
|
+
* @param {Immutable<Config>} config - subset of ImageMode settings required for message handling
|
|
32581
|
+
* @param {HUDItemManager} hud - HUD manager used to display informational messages on the canvas
|
|
32565
32582
|
*/
|
|
32566
32583
|
constructor(config, hud) {
|
|
32567
32584
|
this.#config = config;
|
|
@@ -32570,6 +32587,17 @@ class MessageHandler {
|
|
|
32570
32587
|
annotationsByTopic: new Map()
|
|
32571
32588
|
};
|
|
32572
32589
|
this.availableAnnotationTopics = new Set();
|
|
32590
|
+
|
|
32591
|
+
// Set default values for synchronization to local storage if they're not already set
|
|
32592
|
+
if (localStorage.getItem('viewer-syncToleranceSec') === null) {
|
|
32593
|
+
localStorage.setItem('viewer-syncToleranceSec', syncToleranceSec.toString());
|
|
32594
|
+
}
|
|
32595
|
+
if (localStorage.getItem('viewer-maxStalenessSec') === null) {
|
|
32596
|
+
localStorage.setItem('viewer-maxStalenessSec', maxStalenessSec.toString());
|
|
32597
|
+
}
|
|
32598
|
+
if (localStorage.getItem('viewer-hysteresisSec') === null) {
|
|
32599
|
+
localStorage.setItem('viewer-hysteresisSec', hysteresisSec.toString());
|
|
32600
|
+
}
|
|
32573
32601
|
}
|
|
32574
32602
|
dispose() {
|
|
32575
32603
|
if (this.#annotationsFpsRefreshInterval) {
|
|
@@ -32598,54 +32626,59 @@ class MessageHandler {
|
|
|
32598
32626
|
this.handleImage(messageEvent, normalizeCompressedImage(messageEvent.message));
|
|
32599
32627
|
};
|
|
32600
32628
|
handleImage(message, image) {
|
|
32601
|
-
|
|
32629
|
+
this.lastImage = {
|
|
32602
32630
|
...message,
|
|
32603
32631
|
message: image
|
|
32604
32632
|
};
|
|
32605
|
-
this.lastImage = normalized;
|
|
32606
32633
|
this.#emitState();
|
|
32607
32634
|
}
|
|
32608
32635
|
handleCameraInfo = message => {
|
|
32609
|
-
|
|
32610
|
-
this.#lastReceivedMessages.cameraInfo = cameraInfo;
|
|
32636
|
+
this.#lastReceivedMessages.cameraInfo = normalizeCameraInfo(message.message);
|
|
32611
32637
|
this.#emitState();
|
|
32612
32638
|
};
|
|
32613
32639
|
handleAnnotations = messageEvent => {
|
|
32614
32640
|
const list = normalizeAnnotations(messageEvent.message, messageEvent.schemaName);
|
|
32615
|
-
const
|
|
32641
|
+
const arrivalSec = performance.now() / 1000;
|
|
32616
32642
|
if (list.length > 0 && messageEvent.topic) {
|
|
32617
32643
|
this.#onAnnotationReceivedEvent?.();
|
|
32618
|
-
|
|
32619
|
-
|
|
32620
|
-
|
|
32621
|
-
|
|
32622
|
-
|
|
32623
|
-
|
|
32624
|
-
|
|
32625
|
-
|
|
32644
|
+
|
|
32645
|
+
// Prefer timestamps embedded in the annotations themselves
|
|
32646
|
+
const stampTimes = [];
|
|
32647
|
+
for (const a of list) {
|
|
32648
|
+
const sec = a.stamp?.sec;
|
|
32649
|
+
const nsec = a.stamp?.nsec;
|
|
32650
|
+
if (typeof sec === "number" && typeof nsec === "number") {
|
|
32651
|
+
stampTimes.push(sec + nsec / 1e9);
|
|
32652
|
+
}
|
|
32653
|
+
}
|
|
32654
|
+
const timeSec = stampTimes.length > 0 ? Math.max(...stampTimes) : arrivalSec;
|
|
32655
|
+
const entry = {
|
|
32626
32656
|
annotation: {
|
|
32627
32657
|
originalMessage: messageEvent,
|
|
32628
32658
|
annotations: list
|
|
32629
32659
|
},
|
|
32630
|
-
|
|
32631
|
-
|
|
32660
|
+
timeSec,
|
|
32661
|
+
arrivalSec
|
|
32662
|
+
};
|
|
32663
|
+
const topic = messageEvent.topic;
|
|
32664
|
+
const buffer = this.annotationsMap.get(topic) ?? [];
|
|
32665
|
+
buffer.push(entry);
|
|
32666
|
+
|
|
32667
|
+
// Keep unlimited buffer length, but drop entries older than 20 seconds based on arrival time
|
|
32668
|
+
const retentionSec = 20;
|
|
32669
|
+
const nowSec = performance.now() / 1000;
|
|
32670
|
+
const cutoffArrival = nowSec - retentionSec;
|
|
32671
|
+
const trimmed = buffer.filter(e => e.arrivalSec >= cutoffArrival);
|
|
32672
|
+
this.annotationsMap.set(topic, trimmed);
|
|
32632
32673
|
}
|
|
32674
|
+
|
|
32675
|
+
// Always emit; render selection logic will pick appropriate annotations for the last image
|
|
32676
|
+
this.#emitState();
|
|
32633
32677
|
if (this.#config.synchronize === false) {
|
|
32634
|
-
this.#emitState();
|
|
32635
|
-
return;
|
|
32636
|
-
}
|
|
32637
|
-
if (list.length === 0 && messageEvent.topic) {
|
|
32638
|
-
for (const [topic, annotation] of this.ghostAnnotationsMap.entries()) {
|
|
32639
|
-
if (Math.abs(timestamp - annotation.timestamp) <= this.syncToleranceMs) {
|
|
32640
|
-
this.annotationsMap.set(topic, {
|
|
32641
|
-
annotation: annotation.annotation,
|
|
32642
|
-
timestamp
|
|
32643
|
-
});
|
|
32644
|
-
}
|
|
32645
|
-
}
|
|
32646
|
-
this.#emitState();
|
|
32647
32678
|
return;
|
|
32648
32679
|
}
|
|
32680
|
+
|
|
32681
|
+
// synchronized mode does selection in #getRenderState
|
|
32649
32682
|
};
|
|
32650
32683
|
setConfig(newConfig) {
|
|
32651
32684
|
let changed = false;
|
|
@@ -32688,6 +32721,9 @@ class MessageHandler {
|
|
|
32688
32721
|
this.#lastReceivedMessages = {
|
|
32689
32722
|
annotationsByTopic: new Map()
|
|
32690
32723
|
};
|
|
32724
|
+
this.annotationsMap.clear();
|
|
32725
|
+
this.lastSelectedByTopic.clear();
|
|
32726
|
+
this.lastImage = undefined;
|
|
32691
32727
|
this.#oldRenderState = undefined;
|
|
32692
32728
|
this.#emitState();
|
|
32693
32729
|
}
|
|
@@ -32727,40 +32763,65 @@ class MessageHandler {
|
|
|
32727
32763
|
image: this.lastImage,
|
|
32728
32764
|
annotationsByTopic: new Map()
|
|
32729
32765
|
};
|
|
32730
|
-
const
|
|
32731
|
-
|
|
32732
|
-
|
|
32733
|
-
|
|
32734
|
-
|
|
32735
|
-
|
|
32736
|
-
|
|
32737
|
-
|
|
32738
|
-
|
|
32739
|
-
|
|
32766
|
+
const imageTimestampSec = (() => {
|
|
32767
|
+
const stamp = getTimestampFromImage(this.lastImage.message);
|
|
32768
|
+
const sec = stamp?.sec;
|
|
32769
|
+
const nsec = stamp?.nsec;
|
|
32770
|
+
if (typeof sec === "number" && typeof nsec === "number") {
|
|
32771
|
+
return sec + nsec / 1e9;
|
|
32772
|
+
}
|
|
32773
|
+
return performance.now() / 1000;
|
|
32774
|
+
})();
|
|
32775
|
+
for (const [topic, buffer] of this.annotationsMap.entries()) {
|
|
32776
|
+
if (buffer.length === 0) continue;
|
|
32777
|
+
|
|
32778
|
+
// Prefer newest annotation older than the image within staleness window
|
|
32779
|
+
let preferred;
|
|
32780
|
+
for (let i = buffer.length - 1; i >= 0; i--) {
|
|
32781
|
+
const entry = buffer[i];
|
|
32782
|
+
const age = imageTimestampSec - entry.timeSec;
|
|
32783
|
+
if (age >= 0 && age <= maxStalenessSec) {
|
|
32784
|
+
preferred = entry;
|
|
32785
|
+
break;
|
|
32786
|
+
}
|
|
32740
32787
|
}
|
|
32741
32788
|
|
|
32742
|
-
//
|
|
32743
|
-
|
|
32744
|
-
|
|
32745
|
-
|
|
32746
|
-
|
|
32747
|
-
|
|
32748
|
-
|
|
32749
|
-
|
|
32750
|
-
|
|
32751
|
-
|
|
32752
|
-
|
|
32753
|
-
|
|
32754
|
-
|
|
32789
|
+
// If none older within staleness, fall back to closest within tolerance
|
|
32790
|
+
let fallback = buffer[0];
|
|
32791
|
+
let fallbackDelta = Math.abs(fallback.timeSec - imageTimestampSec);
|
|
32792
|
+
for (let i = 1; i < buffer.length; i++) {
|
|
32793
|
+
const entry = buffer[i];
|
|
32794
|
+
const delta = Math.abs(entry.timeSec - imageTimestampSec);
|
|
32795
|
+
if (delta < fallbackDelta) {
|
|
32796
|
+
fallback = entry;
|
|
32797
|
+
fallbackDelta = delta;
|
|
32798
|
+
}
|
|
32799
|
+
}
|
|
32800
|
+
let candidate = preferred ?? fallback;
|
|
32801
|
+
if (!candidate) continue;
|
|
32802
|
+
const candidateDelta = Math.abs(candidate.timeSec - imageTimestampSec);
|
|
32803
|
+
const candidateAge = imageTimestampSec - candidate.timeSec;
|
|
32804
|
+
const acceptable = preferred != undefined && candidateAge >= 0 && candidateAge <= maxStalenessSec || preferred == undefined && candidateDelta <= syncToleranceSec;
|
|
32805
|
+
const notFutureFar = candidate.timeSec <= imageTimestampSec + syncToleranceSec;
|
|
32806
|
+
if (!acceptable || !notFutureFar) {
|
|
32807
|
+
continue;
|
|
32808
|
+
}
|
|
32755
32809
|
|
|
32756
|
-
if
|
|
32757
|
-
|
|
32758
|
-
|
|
32759
|
-
|
|
32760
|
-
|
|
32761
|
-
|
|
32762
|
-
|
|
32810
|
+
// Hysteresis: if previous selection is very close and still valid, keep it to avoid flicker
|
|
32811
|
+
const prevTime = this.lastSelectedByTopic.get(topic);
|
|
32812
|
+
if (prevTime != undefined) {
|
|
32813
|
+
const prevEntry = buffer.find(e => Math.abs(e.timeSec - prevTime) < 1e-6);
|
|
32814
|
+
if (prevEntry) {
|
|
32815
|
+
const prevDelta = Math.abs(prevEntry.timeSec - imageTimestampSec);
|
|
32816
|
+
const prevAge = imageTimestampSec - prevEntry.timeSec;
|
|
32817
|
+
const prevValid = prevAge >= 0 && prevAge <= maxStalenessSec || prevDelta <= syncToleranceSec;
|
|
32818
|
+
if (prevValid && Math.abs(prevEntry.timeSec - candidate.timeSec) <= hysteresisSec) {
|
|
32819
|
+
candidate = prevEntry;
|
|
32820
|
+
}
|
|
32821
|
+
}
|
|
32763
32822
|
}
|
|
32823
|
+
state.annotationsByTopic.set(topic, candidate.annotation);
|
|
32824
|
+
this.lastSelectedByTopic.set(topic, candidate.timeSec);
|
|
32764
32825
|
}
|
|
32765
32826
|
return state;
|
|
32766
32827
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { af as EditorView, ag as EditorSelection, $ as LRLanguage, Y as styleTags, Z as tags, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a0 as LanguageSupport, a2 as LRParser, a5 as syntaxTree, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-
|
|
1
|
+
import { af as EditorView, ag as EditorSelection, $ as LRLanguage, Y as styleTags, Z as tags, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a0 as LanguageSupport, a2 as LRParser, a5 as syntaxTree, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { U as indentNodeProp, V as continuedIndent, X as foldNodeProp, Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a1 as ExternalTokenizer, a2 as LRParser, a3 as ifNotIn, a4 as completeFromList, a5 as syntaxTree } from './index-
|
|
1
|
+
import { U as indentNodeProp, V as continuedIndent, X as foldNodeProp, Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a1 as ExternalTokenizer, a2 as LRParser, a3 as ifNotIn, a4 as completeFromList, a5 as syntaxTree } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as styleTags, Z as tags, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, ae as defineCSSCompletionSource, a0 as LanguageSupport, a2 as LRParser, a1 as ExternalTokenizer } from './index-
|
|
1
|
+
import { Y as styleTags, Z as tags, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, ae as defineCSSCompletionSource, a0 as LanguageSupport, a2 as LRParser, a1 as ExternalTokenizer } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, a5 as syntaxTree, a3 as ifNotIn, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ac as IterMode, a4 as completeFromList, ad as NodeWeakMap, ab as snippetCompletion } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, a5 as syntaxTree, a3 as ifNotIn, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ac as IterMode, a4 as completeFromList, ad as NodeWeakMap, ab as snippetCompletion } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ai as parseMixed } from './index-
|
|
1
|
+
import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ai as parseMixed } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, ah as html, a0 as LanguageSupport, ai as parseMixed } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, ah as html, a0 as LanguageSupport, ai as parseMixed } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, X as foldNodeProp, aj as bracketMatchingHandle, a0 as LanguageSupport, af as EditorView, a5 as syntaxTree, ag as EditorSelection } from './index-
|
|
1
|
+
import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, X as foldNodeProp, aj as bracketMatchingHandle, a0 as LanguageSupport, af as EditorView, a5 as syntaxTree, ag as EditorSelection } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-
|
|
1
|
+
import { Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-
|
|
1
|
+
import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Y as styleTags, Z as tags, ak as javascriptLanguage, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-
|
|
1
|
+
import { Y as styleTags, Z as tags, ak as javascriptLanguage, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-BVhURReD.js';
|
|
2
2
|
import './depth-CgtekUia.js';
|
|
3
3
|
import './protobuf-B55JS-Px.js';
|
|
4
4
|
import 'protobufjs/minimal';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { av as FrameStore, ao as ImagePanel, an as PanelLayout, ap as PointCloudPanel, al as VisualizerConnection, am as VisualizerContext, aq as constructKeyForTopicRenderMetrics, as as globalDecodeMetricsManager, ar as globalInputEventMetricsManager, at as globalRenderMetricsManager, au as globalThroughputMetricsManager } from './index-
|
|
1
|
+
export { av as FrameStore, ao as ImagePanel, an as PanelLayout, ap as PointCloudPanel, al as VisualizerConnection, am as VisualizerContext, aq as constructKeyForTopicRenderMetrics, as as globalDecodeMetricsManager, ar as globalInputEventMetricsManager, at as globalRenderMetricsManager, au as globalThroughputMetricsManager } from './index-BVhURReD.js';
|
|
2
2
|
export { S as getDistanceFromDepthDataForOffset } from './depth-CgtekUia.js';
|
|
3
3
|
import './comlink-DHMAu6X7.js';
|
|
4
4
|
import './utils-Hzt3wxhG.js';
|
|
@@ -39,13 +39,12 @@ export declare class MessageHandler implements IMessageHandler {
|
|
|
39
39
|
#private;
|
|
40
40
|
private lastImage?;
|
|
41
41
|
private annotationsMap;
|
|
42
|
-
private
|
|
43
|
-
private syncToleranceMs;
|
|
44
|
-
private ghostTimeoutMs;
|
|
42
|
+
private lastSelectedByTopic;
|
|
45
43
|
availableAnnotationTopics: Set<string>;
|
|
46
44
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @param config - subset of ImageMode settings required for message handling
|
|
45
|
+
* Create a MessageHandler
|
|
46
|
+
* @param {Immutable<Config>} config - subset of ImageMode settings required for message handling
|
|
47
|
+
* @param {HUDItemManager} hud - HUD manager used to display informational messages on the canvas
|
|
49
48
|
*/
|
|
50
49
|
constructor(config: Immutable<Config>, hud: HUDItemManager);
|
|
51
50
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageHandler.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,eAAe,EACf,gBAAgB,IAAI,wBAAwB,EAC5C,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,cAAc,EACf,MAAM,4DAA4D,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAC;AACxF,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"MessageHandler.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.ts"],"names":[],"mappings":"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"}
|
package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
|
+
import { getTimestampFromImage } from "@foxglove/studio-base/panels/ThreeDeeRender/renderables/Images/ImageTypes";
|
|
4
5
|
import { normalizeCompressedImage, normalizeRawImage, normalizeRosCompressedImage, normalizeRosImage, } from "@foxglove/studio-base/panels/ThreeDeeRender/renderables/Images/imageNormalizers";
|
|
5
6
|
import { normalizeCameraInfo } from "@foxglove/studio-base/panels/ThreeDeeRender/renderables/projections";
|
|
6
7
|
import { normalizeAnnotations } from "./annotations/normalizeAnnotations";
|
|
7
8
|
import { IMAGE_MODE_HUD_GROUP_ID, WAITING_FOR_BOTH_MESSAGES_HUD_ID, WAITING_FOR_CALIBRATION_HUD_ID, WAITING_FOR_IMAGES_EMPTY_HUD_ID, WAITING_FOR_IMAGES_NOTICE_ID, WAITING_FOR_SYNC_EMPTY_HUD_ID, WAITING_FOR_SYNC_NOTICE_HUD_ID, } from "./constants";
|
|
8
9
|
import { t3D } from "../../t3D";
|
|
10
|
+
const syncToleranceSec = Number(localStorage.getItem('viewer-syncToleranceSec')) || 0.15; // maximum acceptable time difference for selecting a “closest” annotation.
|
|
11
|
+
const maxStalenessSec = Number(localStorage.getItem('viewer-maxStalenessSec')) || 1.1; // how long we can hold the last older annotation if no better match is available. 1s corresponds to 1 FPS + 100ms window for jitter.
|
|
12
|
+
const hysteresisSec = Number(localStorage.getItem('viewer-hysteresisSec')) || 0.1; // how much “stickiness” we allow before switching candidates.
|
|
13
|
+
console.log("Synchronization parameters:", { syncToleranceSec, maxStalenessSec, hysteresisSec });
|
|
9
14
|
// Have constants for the HUD items so that they don't need to be recreated and GCed every message
|
|
10
15
|
export const WAITING_FOR_BOTH_HUD_ITEM = {
|
|
11
16
|
id: WAITING_FOR_BOTH_MESSAGES_HUD_ID,
|
|
@@ -68,14 +73,15 @@ export class MessageHandler {
|
|
|
68
73
|
#onAnnotationReceivedEvent;
|
|
69
74
|
#annotationsFpsRefreshInterval = null;
|
|
70
75
|
lastImage;
|
|
76
|
+
// Store a small buffer of recent annotations per topic with computed seconds timestamps
|
|
71
77
|
annotationsMap = new Map();
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
ghostTimeoutMs = 1000;
|
|
78
|
+
// Track last selected annotation per topic to add hysteresis and reduce flicker
|
|
79
|
+
lastSelectedByTopic = new Map();
|
|
75
80
|
availableAnnotationTopics;
|
|
76
81
|
/**
|
|
77
|
-
*
|
|
78
|
-
* @param config - subset of ImageMode settings required for message handling
|
|
82
|
+
* Create a MessageHandler
|
|
83
|
+
* @param {Immutable<Config>} config - subset of ImageMode settings required for message handling
|
|
84
|
+
* @param {HUDItemManager} hud - HUD manager used to display informational messages on the canvas
|
|
79
85
|
*/
|
|
80
86
|
constructor(config, hud) {
|
|
81
87
|
this.#config = config;
|
|
@@ -84,6 +90,16 @@ export class MessageHandler {
|
|
|
84
90
|
annotationsByTopic: new Map(),
|
|
85
91
|
};
|
|
86
92
|
this.availableAnnotationTopics = new Set();
|
|
93
|
+
// Set default values for synchronization to local storage if they're not already set
|
|
94
|
+
if (localStorage.getItem('viewer-syncToleranceSec') === null) {
|
|
95
|
+
localStorage.setItem('viewer-syncToleranceSec', syncToleranceSec.toString());
|
|
96
|
+
}
|
|
97
|
+
if (localStorage.getItem('viewer-maxStalenessSec') === null) {
|
|
98
|
+
localStorage.setItem('viewer-maxStalenessSec', maxStalenessSec.toString());
|
|
99
|
+
}
|
|
100
|
+
if (localStorage.getItem('viewer-hysteresisSec') === null) {
|
|
101
|
+
localStorage.setItem('viewer-hysteresisSec', hysteresisSec.toString());
|
|
102
|
+
}
|
|
87
103
|
}
|
|
88
104
|
dispose() {
|
|
89
105
|
if (this.#annotationsFpsRefreshInterval) {
|
|
@@ -112,51 +128,55 @@ export class MessageHandler {
|
|
|
112
128
|
this.handleImage(messageEvent, normalizeCompressedImage(messageEvent.message));
|
|
113
129
|
};
|
|
114
130
|
handleImage(message, image) {
|
|
115
|
-
|
|
131
|
+
this.lastImage = {
|
|
116
132
|
...message,
|
|
117
133
|
message: image,
|
|
118
134
|
};
|
|
119
|
-
this.lastImage = normalized;
|
|
120
135
|
this.#emitState();
|
|
121
136
|
}
|
|
122
137
|
handleCameraInfo = (message) => {
|
|
123
|
-
|
|
124
|
-
this.#lastReceivedMessages.cameraInfo = cameraInfo;
|
|
138
|
+
this.#lastReceivedMessages.cameraInfo = normalizeCameraInfo(message.message);
|
|
125
139
|
this.#emitState();
|
|
126
140
|
};
|
|
127
141
|
handleAnnotations = (messageEvent) => {
|
|
128
142
|
const list = normalizeAnnotations(messageEvent.message, messageEvent.schemaName);
|
|
129
|
-
const
|
|
143
|
+
const arrivalSec = performance.now() / 1000;
|
|
130
144
|
if (list.length > 0 && messageEvent.topic) {
|
|
131
145
|
this.#onAnnotationReceivedEvent?.();
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
146
|
+
// Prefer timestamps embedded in the annotations themselves
|
|
147
|
+
const stampTimes = [];
|
|
148
|
+
for (const a of list) {
|
|
149
|
+
const sec = a.stamp?.sec;
|
|
150
|
+
const nsec = a.stamp?.nsec;
|
|
151
|
+
if (typeof sec === "number" && typeof nsec === "number") {
|
|
152
|
+
stampTimes.push(sec + nsec / 1e9);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const timeSec = stampTimes.length > 0 ? Math.max(...stampTimes) : arrivalSec;
|
|
156
|
+
const entry = {
|
|
140
157
|
annotation: {
|
|
141
158
|
originalMessage: messageEvent,
|
|
142
159
|
annotations: list,
|
|
143
160
|
},
|
|
144
|
-
|
|
145
|
-
|
|
161
|
+
timeSec,
|
|
162
|
+
arrivalSec,
|
|
163
|
+
};
|
|
164
|
+
const topic = messageEvent.topic;
|
|
165
|
+
const buffer = this.annotationsMap.get(topic) ?? [];
|
|
166
|
+
buffer.push(entry);
|
|
167
|
+
// Keep unlimited buffer length, but drop entries older than 20 seconds based on arrival time
|
|
168
|
+
const retentionSec = 20;
|
|
169
|
+
const nowSec = performance.now() / 1000;
|
|
170
|
+
const cutoffArrival = nowSec - retentionSec;
|
|
171
|
+
const trimmed = buffer.filter((e) => e.arrivalSec >= cutoffArrival);
|
|
172
|
+
this.annotationsMap.set(topic, trimmed);
|
|
146
173
|
}
|
|
174
|
+
// Always emit; render selection logic will pick appropriate annotations for the last image
|
|
175
|
+
this.#emitState();
|
|
147
176
|
if (this.#config.synchronize === false) {
|
|
148
|
-
this.#emitState();
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
if (list.length === 0 && messageEvent.topic) {
|
|
152
|
-
for (const [topic, annotation] of this.ghostAnnotationsMap.entries()) {
|
|
153
|
-
if (Math.abs(timestamp - annotation.timestamp) <= this.syncToleranceMs) {
|
|
154
|
-
this.annotationsMap.set(topic, { annotation: annotation.annotation, timestamp });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
this.#emitState();
|
|
158
177
|
return;
|
|
159
178
|
}
|
|
179
|
+
// synchronized mode does selection in #getRenderState
|
|
160
180
|
};
|
|
161
181
|
setConfig(newConfig) {
|
|
162
182
|
let changed = false;
|
|
@@ -201,6 +221,9 @@ export class MessageHandler {
|
|
|
201
221
|
this.#lastReceivedMessages = {
|
|
202
222
|
annotationsByTopic: new Map(),
|
|
203
223
|
};
|
|
224
|
+
this.annotationsMap.clear();
|
|
225
|
+
this.lastSelectedByTopic.clear();
|
|
226
|
+
this.lastImage = undefined;
|
|
204
227
|
this.#oldRenderState = undefined;
|
|
205
228
|
this.#emitState();
|
|
206
229
|
}
|
|
@@ -239,34 +262,65 @@ export class MessageHandler {
|
|
|
239
262
|
image: this.lastImage,
|
|
240
263
|
annotationsByTopic: new Map(),
|
|
241
264
|
};
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
265
|
+
const imageTimestampSec = (() => {
|
|
266
|
+
const stamp = getTimestampFromImage(this.lastImage.message);
|
|
267
|
+
const sec = stamp?.sec;
|
|
268
|
+
const nsec = stamp?.nsec;
|
|
269
|
+
if (typeof sec === "number" && typeof nsec === "number") {
|
|
270
|
+
return sec + nsec / 1e9;
|
|
271
|
+
}
|
|
272
|
+
return performance.now() / 1000;
|
|
273
|
+
})();
|
|
274
|
+
for (const [topic, buffer] of this.annotationsMap.entries()) {
|
|
275
|
+
if (buffer.length === 0)
|
|
276
|
+
continue;
|
|
277
|
+
// Prefer newest annotation older than the image within staleness window
|
|
278
|
+
let preferred;
|
|
279
|
+
for (let i = buffer.length - 1; i >= 0; i--) {
|
|
280
|
+
const entry = buffer[i];
|
|
281
|
+
const age = imageTimestampSec - entry.timeSec;
|
|
282
|
+
if (age >= 0 && age <= maxStalenessSec) {
|
|
283
|
+
preferred = entry;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// If none older within staleness, fall back to closest within tolerance
|
|
288
|
+
let fallback = buffer[0];
|
|
289
|
+
let fallbackDelta = Math.abs(fallback.timeSec - imageTimestampSec);
|
|
290
|
+
for (let i = 1; i < buffer.length; i++) {
|
|
291
|
+
const entry = buffer[i];
|
|
292
|
+
const delta = Math.abs(entry.timeSec - imageTimestampSec);
|
|
293
|
+
if (delta < fallbackDelta) {
|
|
294
|
+
fallback = entry;
|
|
295
|
+
fallbackDelta = delta;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
let candidate = preferred ?? fallback;
|
|
299
|
+
if (!candidate)
|
|
300
|
+
continue;
|
|
301
|
+
const candidateDelta = Math.abs(candidate.timeSec - imageTimestampSec);
|
|
302
|
+
const candidateAge = imageTimestampSec - candidate.timeSec;
|
|
303
|
+
const acceptable = (preferred != undefined && candidateAge >= 0 && candidateAge <= maxStalenessSec) ||
|
|
304
|
+
(preferred == undefined && candidateDelta <= syncToleranceSec);
|
|
305
|
+
const notFutureFar = candidate.timeSec <= imageTimestampSec + syncToleranceSec;
|
|
306
|
+
if (!acceptable || !notFutureFar) {
|
|
252
307
|
continue;
|
|
253
308
|
}
|
|
254
|
-
//
|
|
255
|
-
const
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
isAnnotationOlderThanImageFrame // annotation has to be older than image frame within 100ms tolerance
|
|
267
|
-
) {
|
|
268
|
-
state.annotationsByTopic.set(topic, annotation.annotation);
|
|
309
|
+
// Hysteresis: if previous selection is very close and still valid, keep it to avoid flicker
|
|
310
|
+
const prevTime = this.lastSelectedByTopic.get(topic);
|
|
311
|
+
if (prevTime != undefined) {
|
|
312
|
+
const prevEntry = buffer.find((e) => Math.abs(e.timeSec - prevTime) < 1e-6);
|
|
313
|
+
if (prevEntry) {
|
|
314
|
+
const prevDelta = Math.abs(prevEntry.timeSec - imageTimestampSec);
|
|
315
|
+
const prevAge = imageTimestampSec - prevEntry.timeSec;
|
|
316
|
+
const prevValid = (prevAge >= 0 && prevAge <= maxStalenessSec) || prevDelta <= syncToleranceSec;
|
|
317
|
+
if (prevValid && Math.abs(prevEntry.timeSec - candidate.timeSec) <= hysteresisSec) {
|
|
318
|
+
candidate = prevEntry;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
269
321
|
}
|
|
322
|
+
state.annotationsByTopic.set(topic, candidate.annotation);
|
|
323
|
+
this.lastSelectedByTopic.set(topic, candidate.timeSec);
|
|
270
324
|
}
|
|
271
325
|
return state;
|
|
272
326
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.ts"],"names":[],"mappings":"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"}
|