@luxonis/visualizer-protobuf 2.64.0 → 2.65.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.
Files changed (25) hide show
  1. package/dist/{index-Bt8NKGgQ.js → index-1c6__YmG.js} +123 -62
  2. package/dist/{index-B7nNBAQK.js → index-4zBZhITl.js} +1 -1
  3. package/dist/{index-D7jkC67I.js → index-7qy5F51w.js} +1 -1
  4. package/dist/{index-fCMuSW-j.js → index-BKgrv32b.js} +1 -1
  5. package/dist/{index-BxkJ2Rkh.js → index-BTg1Juch.js} +1 -1
  6. package/dist/{index-B53S6byS.js → index-BaC6YOFz.js} +1 -1
  7. package/dist/{index-PCEpYVVD.js → index-Bc_qkAT2.js} +1 -1
  8. package/dist/{index-C2I0SvM_.js → index-BmFISqbo.js} +1 -1
  9. package/dist/{index-Dy0KZSfH.js → index-C1xd4eqI.js} +1 -1
  10. package/dist/{index-DvvaZvBj.js → index-Cc9XbP2A.js} +1 -1
  11. package/dist/{index-B1iI7RoB.js → index-D1VQYW7r.js} +1 -1
  12. package/dist/{index-CTUZw7U6.js → index-D7OE7wIR.js} +1 -1
  13. package/dist/{index-STYyVl4n.js → index-Dn_s4esG.js} +1 -1
  14. package/dist/{index-CJ0ouF_X.js → index-DyDtgl5_.js} +1 -1
  15. package/dist/{index-b8JQ8FbB.js → index-IOA4ZGmc.js} +1 -1
  16. package/dist/{index-BnLSHvn1.js → index-O7Hd0ZQa.js} +2 -2
  17. package/dist/{index-CuBQ8sfd.js → index-j9SA4AnC.js} +1 -1
  18. package/dist/{index-B86puxfC.js → index-rblj1gA1.js} +1 -1
  19. package/dist/{index-btWll_X8.js → index-ynJe1rwL.js} +20 -20
  20. package/dist/index.js +1 -1
  21. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts +1 -3
  22. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts.map +1 -1
  23. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js +108 -53
  24. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js.map +1 -1
  25. package/package.json +1 -1
@@ -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-btWll_X8.js';
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-ynJe1rwL.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')) || 0.5; // how long we can hold the last older annotation if no better match is available.
32511
+ const hysteresisSec = Number(localStorage.getItem('viewer-hysteresisSec')) || 0.03; // 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,10 +32571,10 @@ 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
- ghostAnnotationsMap = new Map();
32560
- syncToleranceMs = 150;
32561
- ghostTimeoutMs = 1000;
32576
+ // Track last selected annotation per topic to add hysteresis and reduce flicker
32577
+ lastSelectedByTopic = new Map();
32562
32578
  /**
32563
32579
  *
32564
32580
  * @param config - subset of ImageMode settings required for message handling
@@ -32570,6 +32586,17 @@ class MessageHandler {
32570
32586
  annotationsByTopic: new Map()
32571
32587
  };
32572
32588
  this.availableAnnotationTopics = new Set();
32589
+
32590
+ // Set default values for synchronization to local storage if they're not already set
32591
+ if (localStorage.getItem('viewer-syncToleranceSec') === null) {
32592
+ localStorage.setItem('viewer-syncToleranceSec', syncToleranceSec.toString());
32593
+ }
32594
+ if (localStorage.getItem('viewer-maxStalenessSec') === null) {
32595
+ localStorage.setItem('viewer-maxStalenessSec', maxStalenessSec.toString());
32596
+ }
32597
+ if (localStorage.getItem('viewer-hysteresisSec') === null) {
32598
+ localStorage.setItem('viewer-hysteresisSec', hysteresisSec.toString());
32599
+ }
32573
32600
  }
32574
32601
  dispose() {
32575
32602
  if (this.#annotationsFpsRefreshInterval) {
@@ -32598,54 +32625,60 @@ class MessageHandler {
32598
32625
  this.handleImage(messageEvent, normalizeCompressedImage(messageEvent.message));
32599
32626
  };
32600
32627
  handleImage(message, image) {
32601
- const normalized = {
32628
+ this.lastImage = {
32602
32629
  ...message,
32603
32630
  message: image
32604
32631
  };
32605
- this.lastImage = normalized;
32606
32632
  this.#emitState();
32607
32633
  }
32608
32634
  handleCameraInfo = message => {
32609
- const cameraInfo = normalizeCameraInfo(message.message);
32610
- this.#lastReceivedMessages.cameraInfo = cameraInfo;
32635
+ this.#lastReceivedMessages.cameraInfo = normalizeCameraInfo(message.message);
32611
32636
  this.#emitState();
32612
32637
  };
32613
32638
  handleAnnotations = messageEvent => {
32614
32639
  const list = normalizeAnnotations(messageEvent.message, messageEvent.schemaName);
32615
- const timestamp = performance.now();
32640
+ const arrivalSec = performance.now() / 1000;
32616
32641
  if (list.length > 0 && messageEvent.topic) {
32617
32642
  this.#onAnnotationReceivedEvent?.();
32618
- this.annotationsMap.set(messageEvent.topic, {
32619
- annotation: {
32620
- originalMessage: messageEvent,
32621
- annotations: list
32622
- },
32623
- timestamp: timestamp
32624
- });
32625
- this.ghostAnnotationsMap.set(messageEvent.topic, {
32643
+
32644
+ // Prefer timestamps embedded in the annotations themselves
32645
+ const stampTimes = [];
32646
+ for (const a of list) {
32647
+ const sec = a.stamp?.sec;
32648
+ const nsec = a.stamp?.nsec;
32649
+ if (typeof sec === "number" && typeof nsec === "number") {
32650
+ stampTimes.push(sec + nsec / 1e9);
32651
+ }
32652
+ }
32653
+ const timeSec = stampTimes.length > 0 ? Math.max(...stampTimes) : arrivalSec;
32654
+ const entry = {
32626
32655
  annotation: {
32627
32656
  originalMessage: messageEvent,
32628
32657
  annotations: list
32629
32658
  },
32630
- timestamp: timestamp
32631
- });
32659
+ timeSec,
32660
+ arrivalSec
32661
+ };
32662
+ const topic = messageEvent.topic;
32663
+ const buffer = this.annotationsMap.get(topic) ?? [];
32664
+ buffer.push(entry);
32665
+ const maxLen = 60;
32666
+ const retentionSec = 2;
32667
+ const cutoff = timeSec - retentionSec;
32668
+ const trimmed = buffer.filter(e => e.timeSec >= cutoff);
32669
+ while (trimmed.length > maxLen) {
32670
+ trimmed.shift();
32671
+ }
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 imageTimestamp = this.lastImage.receiveTime ? Number(`${this.lastImage.receiveTime.sec}.${this.lastImage.receiveTime.nsec}`) : performance.now();
32731
- const now = performance.now();
32732
- for (const [topic, annotation] of this.annotationsMap.entries()) {
32733
- // FIXME: We can liekly get this value better from the annotation message itself
32734
- const annotationTimestamp = Number.parseFloat(`${annotation.annotation.originalMessage.receiveTime?.sec}.${annotation.annotation.originalMessage.receiveTime?.nsec}`);
32735
-
32736
- // In case the annotation timestamp is not available, we just continue
32737
- if (Number.isNaN(annotationTimestamp)) {
32738
- console.warn("Skipping annotation with no/invalid timestamp", annotation);
32739
- continue;
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
- // We only want to show annotations that are older (or same) than the image frame with 100ms tolerance
32743
- const isAnnotationOlderThanImageFrame = annotationTimestamp <= imageTimestamp + 0.1;
32744
-
32745
- //console.log({
32746
- // annotation,
32747
- // imageTimestamp,
32748
- // annotationTimestamp,
32749
- // isAnnotationOlderThanImageFrame,
32750
- //});
32751
-
32752
- const annotationGhost = now - annotation.timestamp < this.ghostTimeoutMs;
32753
-
32754
- // console.log({ now, annotationTimestamp: annotation.timestamp, annotationGhost });
32789
+ // If none older within staleness, fall back to closest within tolerance
32790
+ let fallback;
32791
+ let fallbackDelta = Number.POSITIVE_INFINITY;
32792
+ for (let i = 0; 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 ((Math.abs(imageTimestamp - annotation.timestamp) <= this.syncToleranceMs ||
32757
- // within tolerance
32758
- annotationGhost) &&
32759
- // I think this says "or annotation is newer than 1s"
32760
- isAnnotationOlderThanImageFrame // annotation has to be older than image frame within 100ms tolerance
32761
- ) {
32762
- state.annotationsByTopic.set(topic, annotation.annotation);
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 { 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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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 { 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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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, a0 as LanguageSupport, a2 as LRParser, aa as LocalTokenGroup, ah as html, ai as parseMixed, ak as javascriptLanguage } from './index-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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, $ as LRLanguage, X as foldNodeProp, a8 as foldInside, U as indentNodeProp, V as continuedIndent, ae as defineCSSCompletionSource, a0 as LanguageSupport } from './index-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.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-Bt8NKGgQ.js';
1
+ import { ImagePanel } from './index-1c6__YmG.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-btWll_X8.js';
11
+ import './index-ynJe1rwL.js';
12
12
  import './comlink-DHMAu6X7.js';
13
13
  import './utils-Hzt3wxhG.js';
14
14
  import './FoxgloveServer-MMAMiqqQ.js';
@@ -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-btWll_X8.js';
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-ynJe1rwL.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-btWll_X8.js';
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-ynJe1rwL.js';
2
2
  import './depth-CgtekUia.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -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-CJ0ouF_X.js').then(m => m.sql({ dialect: m[dialectName] }));
86799
+ return import('./index-DyDtgl5_.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-CuBQ8sfd.js').then(m => m.cpp());
86810
+ return import('./index-j9SA4AnC.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-CuBQ8sfd.js').then(m => m.cpp());
86818
+ return import('./index-j9SA4AnC.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-CTUZw7U6.js').then(m => m.go());
86838
+ return import('./index-D7OE7wIR.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-BxkJ2Rkh.js').then(m => m.java());
86853
+ return import('./index-BTg1Juch.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-D7jkC67I.js').then(m => m.json());
86869
+ return import('./index-7qy5F51w.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-PCEpYVVD.js').then(m => m.less());
86883
+ return import('./index-Bc_qkAT2.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-B53S6byS.js').then(m => m.liquid());
86890
+ return import('./index-BaC6YOFz.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-B86puxfC.js').then(m => m.php());
86916
+ return import('./index-rblj1gA1.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-fCMuSW-j.js').then(m => m.python());
86933
+ return import('./index-BKgrv32b.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-B7nNBAQK.js').then(m => m.rust());
86940
+ return import('./index-4zBZhITl.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-STYyVl4n.js').then(m => m.sass({ indented: true }));
86947
+ return import('./index-Dn_s4esG.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-STYyVl4n.js').then(m => m.sass());
86954
+ return import('./index-Dn_s4esG.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-b8JQ8FbB.js').then(m => m.wast());
86985
+ return import('./index-IOA4ZGmc.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-B1iI7RoB.js').then(m => m.xml());
86993
+ return import('./index-D1VQYW7r.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-Dy0KZSfH.js').then(m => m.yaml());
87001
+ return import('./index-C1xd4eqI.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-C2I0SvM_.js').then(m => m.vue());
87797
+ return import('./index-BmFISqbo.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-DvvaZvBj.js').then(m => m.angular());
87803
+ return import('./index-Cc9XbP2A.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-BnLSHvn1.js'));
166512
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-O7Hd0ZQa.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-Bt8NKGgQ.js'));
166607
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-1c6__YmG.js'));
166608
166608
  const PointCloudPanelBody = ({
166609
166609
  topic,
166610
166610
  frameRenderedEvent,
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-btWll_X8.js';
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-ynJe1rwL.js';
2
2
  export { S as getDistanceFromDepthDataForOffset } from './depth-CgtekUia.js';
3
3
  import './comlink-DHMAu6X7.js';
4
4
  import './utils-Hzt3wxhG.js';
@@ -39,9 +39,7 @@ export declare class MessageHandler implements IMessageHandler {
39
39
  #private;
40
40
  private lastImage?;
41
41
  private annotationsMap;
42
- private ghostAnnotationsMap;
43
- private syncToleranceMs;
44
- private ghostTimeoutMs;
42
+ private lastSelectedByTopic;
45
43
  availableAnnotationTopics: Set<string>;
46
44
  /**
47
45
  *
@@ -1 +1 @@
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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"}
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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"}
@@ -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')) || 0.5; // how long we can hold the last older annotation if no better match is available.
12
+ const hysteresisSec = Number(localStorage.getItem('viewer-hysteresisSec')) || 0.03; // 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,10 +73,10 @@ 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
- ghostAnnotationsMap = new Map();
73
- syncToleranceMs = 150;
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
82
  *
@@ -84,6 +89,16 @@ export class MessageHandler {
84
89
  annotationsByTopic: new Map(),
85
90
  };
86
91
  this.availableAnnotationTopics = new Set();
92
+ // Set default values for synchronization to local storage if they're not already set
93
+ if (localStorage.getItem('viewer-syncToleranceSec') === null) {
94
+ localStorage.setItem('viewer-syncToleranceSec', syncToleranceSec.toString());
95
+ }
96
+ if (localStorage.getItem('viewer-maxStalenessSec') === null) {
97
+ localStorage.setItem('viewer-maxStalenessSec', maxStalenessSec.toString());
98
+ }
99
+ if (localStorage.getItem('viewer-hysteresisSec') === null) {
100
+ localStorage.setItem('viewer-hysteresisSec', hysteresisSec.toString());
101
+ }
87
102
  }
88
103
  dispose() {
89
104
  if (this.#annotationsFpsRefreshInterval) {
@@ -112,51 +127,57 @@ export class MessageHandler {
112
127
  this.handleImage(messageEvent, normalizeCompressedImage(messageEvent.message));
113
128
  };
114
129
  handleImage(message, image) {
115
- const normalized = {
130
+ this.lastImage = {
116
131
  ...message,
117
132
  message: image,
118
133
  };
119
- this.lastImage = normalized;
120
134
  this.#emitState();
121
135
  }
122
136
  handleCameraInfo = (message) => {
123
- const cameraInfo = normalizeCameraInfo(message.message);
124
- this.#lastReceivedMessages.cameraInfo = cameraInfo;
137
+ this.#lastReceivedMessages.cameraInfo = normalizeCameraInfo(message.message);
125
138
  this.#emitState();
126
139
  };
127
140
  handleAnnotations = (messageEvent) => {
128
141
  const list = normalizeAnnotations(messageEvent.message, messageEvent.schemaName);
129
- const timestamp = performance.now();
142
+ const arrivalSec = performance.now() / 1000;
130
143
  if (list.length > 0 && messageEvent.topic) {
131
144
  this.#onAnnotationReceivedEvent?.();
132
- this.annotationsMap.set(messageEvent.topic, {
133
- annotation: {
134
- originalMessage: messageEvent,
135
- annotations: list,
136
- },
137
- timestamp: timestamp,
138
- });
139
- this.ghostAnnotationsMap.set(messageEvent.topic, {
145
+ // Prefer timestamps embedded in the annotations themselves
146
+ const stampTimes = [];
147
+ for (const a of list) {
148
+ const sec = a.stamp?.sec;
149
+ const nsec = a.stamp?.nsec;
150
+ if (typeof sec === "number" && typeof nsec === "number") {
151
+ stampTimes.push(sec + nsec / 1e9);
152
+ }
153
+ }
154
+ const timeSec = stampTimes.length > 0 ? Math.max(...stampTimes) : arrivalSec;
155
+ const entry = {
140
156
  annotation: {
141
157
  originalMessage: messageEvent,
142
158
  annotations: list,
143
159
  },
144
- timestamp: timestamp,
145
- });
160
+ timeSec,
161
+ arrivalSec,
162
+ };
163
+ const topic = messageEvent.topic;
164
+ const buffer = this.annotationsMap.get(topic) ?? [];
165
+ buffer.push(entry);
166
+ const maxLen = 60;
167
+ const retentionSec = 2;
168
+ const cutoff = timeSec - retentionSec;
169
+ const trimmed = buffer.filter((e) => e.timeSec >= cutoff);
170
+ while (trimmed.length > maxLen) {
171
+ trimmed.shift();
172
+ }
173
+ this.annotationsMap.set(topic, trimmed);
146
174
  }
175
+ // Always emit; render selection logic will pick appropriate annotations for the last image
176
+ this.#emitState();
147
177
  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
178
  return;
159
179
  }
180
+ // synchronized mode does selection in #getRenderState
160
181
  };
161
182
  setConfig(newConfig) {
162
183
  let changed = false;
@@ -201,6 +222,9 @@ export class MessageHandler {
201
222
  this.#lastReceivedMessages = {
202
223
  annotationsByTopic: new Map(),
203
224
  };
225
+ this.annotationsMap.clear();
226
+ this.lastSelectedByTopic.clear();
227
+ this.lastImage = undefined;
204
228
  this.#oldRenderState = undefined;
205
229
  this.#emitState();
206
230
  }
@@ -239,34 +263,65 @@ export class MessageHandler {
239
263
  image: this.lastImage,
240
264
  annotationsByTopic: new Map(),
241
265
  };
242
- const imageTimestamp = this.lastImage.receiveTime
243
- ? Number(`${this.lastImage.receiveTime.sec}.${this.lastImage.receiveTime.nsec}`)
244
- : performance.now();
245
- const now = performance.now();
246
- for (const [topic, annotation] of this.annotationsMap.entries()) {
247
- // FIXME: We can liekly get this value better from the annotation message itself
248
- const annotationTimestamp = Number.parseFloat(`${annotation.annotation.originalMessage.receiveTime?.sec}.${annotation.annotation.originalMessage.receiveTime?.nsec}`);
249
- // In case the annotation timestamp is not available, we just continue
250
- if (Number.isNaN(annotationTimestamp)) {
251
- console.warn("Skipping annotation with no/invalid timestamp", annotation);
266
+ const imageTimestampSec = (() => {
267
+ const stamp = getTimestampFromImage(this.lastImage.message);
268
+ const sec = stamp?.sec;
269
+ const nsec = stamp?.nsec;
270
+ if (typeof sec === "number" && typeof nsec === "number") {
271
+ return sec + nsec / 1e9;
272
+ }
273
+ return performance.now() / 1000;
274
+ })();
275
+ for (const [topic, buffer] of this.annotationsMap.entries()) {
276
+ if (buffer.length === 0)
252
277
  continue;
278
+ // Prefer newest annotation older than the image within staleness window
279
+ let preferred;
280
+ for (let i = buffer.length - 1; i >= 0; i--) {
281
+ const entry = buffer[i];
282
+ const age = imageTimestampSec - entry.timeSec;
283
+ if (age >= 0 && age <= maxStalenessSec) {
284
+ preferred = entry;
285
+ break;
286
+ }
253
287
  }
254
- // We only want to show annotations that are older (or same) than the image frame with 100ms tolerance
255
- const isAnnotationOlderThanImageFrame = annotationTimestamp <= imageTimestamp + 0.1;
256
- //console.log({
257
- // annotation,
258
- // imageTimestamp,
259
- // annotationTimestamp,
260
- // isAnnotationOlderThanImageFrame,
261
- //});
262
- const annotationGhost = now - annotation.timestamp < this.ghostTimeoutMs;
263
- // console.log({ now, annotationTimestamp: annotation.timestamp, annotationGhost });
264
- if ((Math.abs(imageTimestamp - annotation.timestamp) <= this.syncToleranceMs || // within tolerance
265
- annotationGhost) && // I think this says "or annotation is newer than 1s"
266
- isAnnotationOlderThanImageFrame // annotation has to be older than image frame within 100ms tolerance
267
- ) {
268
- state.annotationsByTopic.set(topic, annotation.annotation);
288
+ // If none older within staleness, fall back to closest within tolerance
289
+ let fallback;
290
+ let fallbackDelta = Number.POSITIVE_INFINITY;
291
+ for (let i = 0; i < buffer.length; i++) {
292
+ const entry = buffer[i];
293
+ const delta = Math.abs(entry.timeSec - imageTimestampSec);
294
+ if (delta < fallbackDelta) {
295
+ fallback = entry;
296
+ fallbackDelta = delta;
297
+ }
298
+ }
299
+ let candidate = preferred ?? fallback;
300
+ if (!candidate)
301
+ continue;
302
+ const candidateDelta = Math.abs(candidate.timeSec - imageTimestampSec);
303
+ const candidateAge = imageTimestampSec - candidate.timeSec;
304
+ const acceptable = (preferred != undefined && candidateAge >= 0 && candidateAge <= maxStalenessSec) ||
305
+ (preferred == undefined && candidateDelta <= syncToleranceSec);
306
+ const notFutureFar = candidate.timeSec <= imageTimestampSec + syncToleranceSec;
307
+ if (!acceptable || !notFutureFar) {
308
+ continue;
309
+ }
310
+ // Hysteresis: if previous selection is very close and still valid, keep it to avoid flicker
311
+ const prevTime = this.lastSelectedByTopic.get(topic);
312
+ if (prevTime != undefined) {
313
+ const prevEntry = buffer.find((e) => Math.abs(e.timeSec - prevTime) < 1e-6);
314
+ if (prevEntry) {
315
+ const prevDelta = Math.abs(prevEntry.timeSec - imageTimestampSec);
316
+ const prevAge = imageTimestampSec - prevEntry.timeSec;
317
+ const prevValid = (prevAge >= 0 && prevAge <= maxStalenessSec) || prevDelta <= syncToleranceSec;
318
+ if (prevValid && Math.abs(prevEntry.timeSec - candidate.timeSec) <= hysteresisSec) {
319
+ candidate = prevEntry;
320
+ }
321
+ }
269
322
  }
323
+ state.annotationsByTopic.set(topic, candidate.annotation);
324
+ this.lastSelectedByTopic.set(topic, candidate.timeSec);
270
325
  }
271
326
  return state;
272
327
  }
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxonis/visualizer-protobuf",
3
- "version": "2.64.0",
3
+ "version": "2.65.0",
4
4
  "type": "module",
5
5
  "description": "RobotHub Visualizer Library",
6
6
  "author": "Luxonis Corp",