@luxonis/visualizer-protobuf 1.6.2 → 1.7.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 (137) hide show
  1. package/dist/apl-NdZ6-T1z.js +142 -0
  2. package/dist/apps/depthai-visualizer/lib/src/components/Panel.d.ts +2 -0
  3. package/dist/apps/depthai-visualizer/lib/src/components/Panel.d.ts.map +1 -1
  4. package/dist/apps/depthai-visualizer/lib/src/components/Panel.js +2 -2
  5. package/dist/apps/depthai-visualizer/lib/src/components/Panel.js.map +1 -1
  6. package/dist/apps/depthai-visualizer/lib/src/components/PanelToolbar.d.ts +4 -1
  7. package/dist/apps/depthai-visualizer/lib/src/components/PanelToolbar.d.ts.map +1 -1
  8. package/dist/apps/depthai-visualizer/lib/src/components/PanelToolbar.js +25 -13
  9. package/dist/apps/depthai-visualizer/lib/src/components/PanelToolbar.js.map +1 -1
  10. package/dist/apps/depthai-visualizer/lib/src/panels/ImagePanel.d.ts +2 -8
  11. package/dist/apps/depthai-visualizer/lib/src/panels/ImagePanel.d.ts.map +1 -1
  12. package/dist/apps/depthai-visualizer/lib/src/panels/ImagePanel.js +1 -1
  13. package/dist/apps/depthai-visualizer/lib/src/panels/ImagePanel.js.map +1 -1
  14. package/dist/apps/depthai-visualizer/lib/src/panels/PointCloudPanel.js +2 -2
  15. package/dist/apps/depthai-visualizer/lib/src/panels/PointCloudPanel.js.map +1 -1
  16. package/dist/asciiarmor-CmJEbAuq.js +56 -0
  17. package/dist/asn1-CG_zvzH1.js +192 -0
  18. package/dist/asterisk-D6r__RMF.js +187 -0
  19. package/dist/brainfuck-COwWCBpq.js +70 -0
  20. package/dist/clike-BjlaHgsH.js +1018 -0
  21. package/dist/clojure-C2XPrGCa.js +274 -0
  22. package/dist/cmake-BGrEgXCL.js +81 -0
  23. package/dist/cobol-BfwG5XeO.js +235 -0
  24. package/dist/coffeescript-BG8vTfSz.js +329 -0
  25. package/dist/commonlisp-8oE2EpEe.js +108 -0
  26. package/dist/crystal--rIRMl16.js +419 -0
  27. package/dist/css-C_ZeEwz2.js +847 -0
  28. package/dist/cypher-Bayei42D.js +122 -0
  29. package/dist/d-B0hhz6be.js +205 -0
  30. package/dist/diff-DQutOIXs.js +30 -0
  31. package/dist/dockerfile-FAjn0vs9.js +199 -0
  32. package/dist/dtd-C1CeYVnM.js +121 -0
  33. package/dist/dylan-Dm9-uD-A.js +337 -0
  34. package/dist/ebnf-jWG_1Yly.js +151 -0
  35. package/dist/ecl-CgJPA6z9.js +190 -0
  36. package/dist/eiffel-lj7uLahq.js +146 -0
  37. package/dist/elm-Cz7o1ijk.js +230 -0
  38. package/dist/erlang-CyL5QOyR.js +581 -0
  39. package/dist/factor-B0KnwW_L.js +65 -0
  40. package/dist/fcl-DiozYjc8.js +154 -0
  41. package/dist/forth-B7vn5ze0.js +164 -0
  42. package/dist/fortran-D2XNEnBT.js +172 -0
  43. package/dist/gas-B_Tj57Ve.js +343 -0
  44. package/dist/gherkin-CJ6Qk4EZ.js +147 -0
  45. package/dist/groovy-BD9p_7sW.js +230 -0
  46. package/dist/haskell-BHnm1B83.js +239 -0
  47. package/dist/haxe-DWtZc5G9.js +490 -0
  48. package/dist/http-BOd5SYCT.js +89 -0
  49. package/dist/idl-FSFk8_xX.js +274 -0
  50. package/dist/index-B2YTRRfg.js +77 -0
  51. package/dist/{index-B8tJ5E-v.js → index-Beii0-_3.js} +7 -4
  52. package/dist/index-BjWYigIi.js +124 -0
  53. package/dist/index-Bx-Bh4nu.js +114 -0
  54. package/dist/index-Bya68zyH.js +154265 -0
  55. package/dist/index-C3_VkVgd.js +626 -0
  56. package/dist/index-CIOyzzeT.js +199 -0
  57. package/dist/index-CY_MdHWz.js +810 -0
  58. package/dist/index-D8b2daZv.js +155 -0
  59. package/dist/index-DW9KaYNb.js +149 -0
  60. package/dist/index-DZ4eTPnT.js +497 -0
  61. package/dist/index-DZeM9OAW.js +356 -0
  62. package/dist/index-DgQXSEwG.js +348 -0
  63. package/dist/index-DuTu94nj.js +436 -0
  64. package/dist/{index-CDLN8AQd.js → index-KZ3VqQGp.js} +88 -35
  65. package/dist/index-WQmqQNn4.js +205 -0
  66. package/dist/index-o4kozweh.js +458 -0
  67. package/dist/index-rTpSqKsn.js +103 -0
  68. package/dist/index-tmy4XtHv.js +346 -0
  69. package/dist/index.js +7 -3
  70. package/dist/javascript-CWIx5LQU.js +922 -0
  71. package/dist/jinja2-D9k5QrXv.js +171 -0
  72. package/dist/julia-DM42tOPB.js +369 -0
  73. package/dist/livescript-Jd_p-LwX.js +259 -0
  74. package/dist/lua-CByQu4v6.js +137 -0
  75. package/dist/mathematica-Dkv0uCYF.js +153 -0
  76. package/dist/mbox-CYTvs5kC.js +114 -0
  77. package/dist/mirc-DpgP3GCo.js +176 -0
  78. package/dist/mllike-Ti5DOjKW.js +346 -0
  79. package/dist/modelica-CR6hTSce.js +192 -0
  80. package/dist/mscgen-D0GXtzMS.js +149 -0
  81. package/dist/mumps-Bf1EyDa6.js +129 -0
  82. package/dist/nginx-By9Phklj.js +163 -0
  83. package/dist/nsis-27gzqCGG.js +80 -0
  84. package/dist/ntriples-C7VJ7pnm.js +141 -0
  85. package/dist/octave-6yR_ix15.js +112 -0
  86. package/dist/oz-CEUnktiQ.js +235 -0
  87. package/dist/package.json +1 -0
  88. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts +1 -1
  89. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.d.ts.map +1 -1
  90. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js +47 -18
  91. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/ImageMode/MessageHandler.js.map +1 -1
  92. package/dist/pascal-AdN1jbEG.js +124 -0
  93. package/dist/perl-B99DUQQt.js +819 -0
  94. package/dist/pig-DFeDRta6.js +149 -0
  95. package/dist/powershell-DhwsNWMx.js +381 -0
  96. package/dist/properties-o21uErwC.js +62 -0
  97. package/dist/protobuf-YxlANsmD.js +54 -0
  98. package/dist/pug-OXF_6qhs.js +504 -0
  99. package/dist/puppet-B8WICGYE.js +205 -0
  100. package/dist/python-D3FFx1Id.js +389 -0
  101. package/dist/q-D2Hjhl2C.js +123 -0
  102. package/dist/r-D73k5lac.js +174 -0
  103. package/dist/rpm-Duv_WH0z.js +89 -0
  104. package/dist/ruby-DGCVqZDt.js +287 -0
  105. package/dist/sas-XjPv1Vy5.js +268 -0
  106. package/dist/scheme-DeaA28vt.js +263 -0
  107. package/dist/shell-Bx6QZTgx.js +145 -0
  108. package/dist/sieve-CWCD62sW.js +178 -0
  109. package/dist/simple-mode-DAYwfn8M.js +135 -0
  110. package/dist/smalltalk-DSQbF4MF.js +153 -0
  111. package/dist/solr-v_XRf31C.js +80 -0
  112. package/dist/sparql-BrfDqf0-.js +170 -0
  113. package/dist/spreadsheet-Csn84Pef.js +98 -0
  114. package/dist/sql-Bhuc3u9R.js +481 -0
  115. package/dist/stex-DBkktma-.js +246 -0
  116. package/dist/stylus-dNd_pqKl.js +750 -0
  117. package/dist/swift-CHbTprt3.js +202 -0
  118. package/dist/tcl-BRlMUELr.js +125 -0
  119. package/dist/textile-CqfTUjd4.js +441 -0
  120. package/dist/tiddlywiki-BrsoM8KB.js +278 -0
  121. package/dist/tiki-D-ivWPkc.js +289 -0
  122. package/dist/toml-t_IhJu83.js +75 -0
  123. package/dist/troff-DckGF2AE.js +64 -0
  124. package/dist/ttcn-DlN2TOzU.js +257 -0
  125. package/dist/ttcn-cfg-pHSvg1fS.js +201 -0
  126. package/dist/turtle-D9Js0BlL.js +141 -0
  127. package/dist/vb-CbIGLrpY.js +249 -0
  128. package/dist/vbscript-8ANWle9n.js +320 -0
  129. package/dist/velocity-D6hz3Hzw.js +186 -0
  130. package/dist/verilog-DIV442at.js +565 -0
  131. package/dist/vhdl-BlTiZo_v.js +174 -0
  132. package/dist/webidl-Cp3tcqdk.js +179 -0
  133. package/dist/xquery-BOQU-_D-.js +425 -0
  134. package/dist/yacas-DQ1WucF0.js +182 -0
  135. package/dist/z80-P1j44jDI.js +102 -0
  136. package/package.json +2 -1
  137. package/dist/index-BoCFgPcb.js +0 -23123
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Component, useContext, useState, useEffect, createContext, forwardRef, createElement, cloneElement, useMemo, Profiler, StrictMode } from 'react';
3
- import ReactDOM from 'react-dom';
4
- import { i as isSymbol, t as toString, k as keys, g as getSymbols$1, s as stubArray, a as arrayPush, b as baseGetAllKeys, c as getTag, d as getAllKeys, e as createAggregator, f as baseGet, h as baseIteratee, j as castPath, l as toKey, m as flatRest, n as arrayMap$1, o as baseSet, p as baseUniq, q as baseFlatten, A as AnalyticsContext, u as useMustNotChange, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, r as useCurrentLayoutActions, v as useCurrentLayoutSelector, w as reportError, x as AppError, E as ErrorDisplay, S as Stack$1, y as makeStyles$1, z as _extends$1, L as Logger, B as useGuaranteedContext, W as WorkspaceContext, C as useAnalytics, D as AppEvent, F as LeftSidebarItemKeys, R as RightSidebarItemKeys, G as usePanelMosaicId, H as useTranslation, I as usePanelCatalog, J as EmptyState, K as isEmpty, M as PanelContext, N as PanelCatalogContext, O as useSelectedPanels, Q as usePanelStateStore, T as useDefaultPanelTitle, U as PANEL_TITLE_CONFIG_KEY, V as noop$4, X as getPanelTypeFromId, Y as useWorkspaceStore, Z as useShallowMemo, $ as TAB_PANEL_TYPE, a0 as WorkspaceStoreSelectors, a1 as difference, a2 as filterMap, a3 as dist$3, a4 as usePanelContext, a5 as useMessagePipeline, a6 as v4, a7 as useHoverValue, a8 as useSetHoverValue, a9 as useClearHoverValue, aa as useAppConfiguration, ab as useMessagePipelineGetter, ac as usePanelSettingsTreeUpdate, ad as PlayerCapabilities, ae as useValueChangedDebugLog, af as assertNever, ag as PlayerPresence, ah as typescript, ai as isEqual, aj as isDesktopApp, ak as generateUtilityClasses, al as createTheme, am as propTypesExports, an as useJsonTreeTheme } from './index-BoCFgPcb.js';
3
+ import ReactDOM__default from 'react-dom';
4
+ import { i as isSymbol, t as toString, k as keys, g as getSymbols$1, s as stubArray, a as arrayPush, b as baseGetAllKeys, c as getTag, d as getAllKeys, e as createAggregator, f as baseGet, h as baseIteratee, j as castPath, l as toKey, m as flatRest, n as arrayMap$1, o as baseSet, p as baseUniq, q as baseFlatten, r as generateUtilityClass, A as AnalyticsContext, u as useMustNotChange, P as PropTypes, v as useCurrentLayoutActions, w as useCurrentLayoutSelector, x as reportError, y as AppError, E as ErrorDisplay, S as Stack$1, z as makeStyles$1, _ as _extends$1, L as Logger, B as useGuaranteedContext, W as WorkspaceContext, C as useAnalytics, D as AppEvent, F as LeftSidebarItemKeys, R as RightSidebarItemKeys, G as usePanelMosaicId, H as useTranslation, I as usePanelCatalog, J as EmptyState, K as isEmpty, M as PanelContext, N as PanelCatalogContext, O as useSelectedPanels, Q as usePanelStateStore, T as useDefaultPanelTitle, U as PANEL_TITLE_CONFIG_KEY, V as noop$4, X as getPanelTypeFromId, Y as useWorkspaceStore, Z as useShallowMemo, $ as TAB_PANEL_TYPE, a0 as WorkspaceStoreSelectors, a1 as difference, a2 as filterMap, a3 as dist$3, a4 as usePanelContext, a5 as useMessagePipeline, a6 as v4, a7 as useHoverValue, a8 as useSetHoverValue, a9 as useClearHoverValue, aa as useAppConfiguration, ab as useMessagePipelineGetter, ac as usePanelSettingsTreeUpdate, ad as PlayerCapabilities, ae as useValueChangedDebugLog, af as assertNever, ag as PlayerPresence, ah as typescript, ai as isEqual, aj as isDesktopApp, ak as createTheme, al as propTypesExports, am as useJsonTreeTheme } from './index-Bya68zyH.js';
5
5
  import { createStore, useStore } from 'zustand';
6
6
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
7
7
  import { a as getDefaultExportFromCjs, c as commonjsGlobal, g as getAugmentedNamespace } from './protobuf-CjDCjqx3.js';
@@ -23,9 +23,12 @@ import require$$2$1 from 'lodash.curry';
23
23
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
24
24
  import 'react-dnd-html5-backend';
25
25
  import 'object-assign';
26
- import '@mui/icons-material';
27
26
  import 'react/jsx-runtime';
28
- import '@emotion/styled';
27
+ import 'react-syntax-highlighter/dist/esm/styles/prism';
28
+ import 'react-syntax-highlighter';
29
+ import 'extend';
30
+ import 'react-icons';
31
+ import '@pandacss/dev';
29
32
  import 'protobufjs/minimal';
30
33
 
31
34
  /** Used to match a single whitespace character. */
@@ -3147,6 +3150,18 @@ var createCache = function createCache(options) {
3147
3150
  return cache;
3148
3151
  };
3149
3152
 
3153
+ function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {
3154
+ const result = {};
3155
+ slots.forEach(slot => {
3156
+ result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);
3157
+ });
3158
+ return result;
3159
+ }
3160
+
3161
+ function commonjsRequire(path) {
3162
+ throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
3163
+ }
3164
+
3150
3165
  // This Source Code Form is subject to the terms of the Mozilla Public
3151
3166
  // License, v2.0. If a copy of the MPL was not distributed with this
3152
3167
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
@@ -4424,6 +4439,19 @@ const TabDesktopMultiple20Regular = /*#__PURE__*/createFluentIcon('TabDesktopMul
4424
4439
 
4425
4440
  const Warning20Regular = /*#__PURE__*/createFluentIcon('Warning20Regular', "20", ["M9.56 3.26a.5.5 0 0 1 .88 0l6.5 12a.5.5 0 0 1-.44.74h-13a.5.5 0 0 1-.44-.74l6.5-12Zm1.76-.47a1.5 1.5 0 0 0-2.64 0l-6.5 12A1.5 1.5 0 0 0 3.5 17h13a1.5 1.5 0 0 0 1.32-2.21l-6.5-12ZM10.5 7.5a.5.5 0 0 0-1 0v4a.5.5 0 1 0 1 0v-4Zm.25 6.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z"]);
4426
4441
 
4442
+ function _objectWithoutPropertiesLoose$1(source, excluded) {
4443
+ if (source == null) return {};
4444
+ var target = {};
4445
+ var sourceKeys = Object.keys(source);
4446
+ var key, i;
4447
+ for (i = 0; i < sourceKeys.length; i++) {
4448
+ key = sourceKeys[i];
4449
+ if (excluded.indexOf(key) >= 0) continue;
4450
+ target[key] = source[key];
4451
+ }
4452
+ return target;
4453
+ }
4454
+
4427
4455
  function _setPrototypeOf(o, p) {
4428
4456
  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
4429
4457
  o.__proto__ = p;
@@ -4686,7 +4714,7 @@ var Transition$1 = /*#__PURE__*/function (_React$Component) {
4686
4714
 
4687
4715
  if (nextStatus === ENTERING$1) {
4688
4716
  if (this.props.unmountOnExit || this.props.mountOnEnter) {
4689
- var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749
4717
+ var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749
4690
4718
  // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.
4691
4719
  // To make the animation happen, we have to separate each rendering and avoid being processed as batched.
4692
4720
 
@@ -4710,7 +4738,7 @@ var Transition$1 = /*#__PURE__*/function (_React$Component) {
4710
4738
  var enter = this.props.enter;
4711
4739
  var appearing = this.context ? this.context.isMounting : mounting;
4712
4740
 
4713
- var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],
4741
+ var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM__default.findDOMNode(this), appearing],
4714
4742
  maybeNode = _ref2[0],
4715
4743
  maybeAppearing = _ref2[1];
4716
4744
 
@@ -4748,7 +4776,7 @@ var Transition$1 = /*#__PURE__*/function (_React$Component) {
4748
4776
 
4749
4777
  var exit = this.props.exit;
4750
4778
  var timeouts = this.getTimeouts();
4751
- var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED
4779
+ var maybeNode = this.props.nodeRef ? undefined : ReactDOM__default.findDOMNode(this); // no exit animation skip right to EXITED
4752
4780
 
4753
4781
  if (!exit || config.disabled) {
4754
4782
  this.safeSetState({
@@ -4812,7 +4840,7 @@ var Transition$1 = /*#__PURE__*/function (_React$Component) {
4812
4840
 
4813
4841
  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {
4814
4842
  this.setNextCallback(handler);
4815
- var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);
4843
+ var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM__default.findDOMNode(this);
4816
4844
  var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;
4817
4845
 
4818
4846
  if (!node || doesNotHaveTimeoutOrListener) {
@@ -33232,6 +33260,13 @@ class MessageHandler {
33232
33260
  /** listener functions that are called when the state changes. */
33233
33261
  #listeners = [];
33234
33262
 
33263
+ /** Holds what annotations are currently available on the given source. These are needed because annotations
33264
+ * that are marked as visible may be present in the layout/config, but are not present on the source.
33265
+ * This can cause synchronized annotations to never resolve if the source does not have the annotation topic
33266
+ * with no indication to the user that the annotation is not available.
33267
+ */
33268
+ #availableAnnotationTopics;
33269
+
33235
33270
  /**
33236
33271
  *
33237
33272
  * @param config - subset of ImageMode settings required for message handling
@@ -33243,6 +33278,7 @@ class MessageHandler {
33243
33278
  annotationsByTopic: new Map()
33244
33279
  };
33245
33280
  this.#tree = new dist$1.AVLTree(dist$3.compare);
33281
+ this.#availableAnnotationTopics = new Set();
33246
33282
  }
33247
33283
  addListener(listener) {
33248
33284
  this.#listeners.push(listener);
@@ -33303,6 +33339,15 @@ class MessageHandler {
33303
33339
  }
33304
33340
  }
33305
33341
  }
33342
+ #visibleAnnotations() {
33343
+ const visibleAnnotations = new Set();
33344
+ for (const [topic, settings] of Object.entries(this.#config.annotations ?? {})) {
33345
+ if (settings?.visible === true && this.#availableAnnotationTopics.has(topic)) {
33346
+ visibleAnnotations.add(topic);
33347
+ }
33348
+ }
33349
+ return visibleAnnotations;
33350
+ }
33306
33351
  handleCameraInfo = message => {
33307
33352
  const cameraInfo = normalizeCameraInfo(message.message);
33308
33353
  this.#lastReceivedMessages.cameraInfo = cameraInfo;
@@ -33398,7 +33443,8 @@ class MessageHandler {
33398
33443
  this.#emitState();
33399
33444
  }
33400
33445
  }
33401
- setAvailableAnnotationTopics(_topicNames) {
33446
+ setAvailableAnnotationTopics(topicNames) {
33447
+ this.#availableAnnotationTopics = new Set(topicNames);
33402
33448
  this.#emitState();
33403
33449
  }
33404
33450
  clear() {
@@ -33437,7 +33483,7 @@ class MessageHandler {
33437
33483
  }
33438
33484
  #getRenderState() {
33439
33485
  if (this.#config.synchronize === true) {
33440
- const result = findSynchronizedSetAndRemoveOlderItems(this.#tree);
33486
+ const result = findSynchronizedSetAndRemoveOlderItems(this.#tree, this.#visibleAnnotations());
33441
33487
  if (result.found) {
33442
33488
  return {
33443
33489
  cameraInfo: this.#lastReceivedMessages.cameraInfo,
@@ -33456,7 +33502,7 @@ class MessageHandler {
33456
33502
  };
33457
33503
  }
33458
33504
  }
33459
- const ACCEPT_LAST_INDEX = 10;
33505
+ const ACCEPT_LAST_INDEX = 5;
33460
33506
 
33461
33507
  /**
33462
33508
  * Find the newest entry where we have everything synchronized and remove all older entries from tree.
@@ -33464,29 +33510,40 @@ const ACCEPT_LAST_INDEX = 10;
33464
33510
  * @param visibleAnnotations - visible annotation topics
33465
33511
  * @returns - the newest synchronized item with all active annotations and image, or set of missing annotations if synchronization failed
33466
33512
  */
33467
- function findSynchronizedSetAndRemoveOlderItems(tree) {
33513
+ function findSynchronizedSetAndRemoveOlderItems(tree, visibleAnnotations) {
33514
+ let lastEntry = undefined;
33515
+
33468
33516
  // Find ACCEPT_LAST_INDEX frame from the end
33469
33517
  let imageEntries = 0;
33470
- for (const [_, state] of tree.entries()) {
33471
- if (state.image) {
33518
+ for (const entry of tree.entries()) {
33519
+ if (entry[1].image) {
33472
33520
  imageEntries += 1;
33521
+ lastEntry = entry;
33473
33522
  }
33474
33523
  }
33475
- let acceptableIndex = imageEntries - ACCEPT_LAST_INDEX + 1;
33476
- if (acceptableIndex < 0) {
33477
- acceptableIndex = 0;
33478
- }
33479
33524
  let validEntry = undefined;
33480
- let index = 0;
33481
- for (const entry of tree.entries()) {
33482
- if (!entry[1].image) {
33483
- continue;
33484
- }
33485
- if (index === acceptableIndex) {
33486
- validEntry = entry;
33487
- break;
33525
+ if (visibleAnnotations.size !== 0) {
33526
+ let acceptableIndex = imageEntries - ACCEPT_LAST_INDEX + 1;
33527
+ if (acceptableIndex < 0) {
33528
+ acceptableIndex = 0;
33529
+ }
33530
+ let index = 0;
33531
+ for (const entry of tree.entries()) {
33532
+ if (!entry[1].image) {
33533
+ continue;
33534
+ }
33535
+ if (index === acceptableIndex) {
33536
+ validEntry = entry;
33537
+ } else if (index > acceptableIndex) {
33538
+ const hasAllAnnotations = Array.from(visibleAnnotations).every(topic => entry[1].annotationsByTopic.has(topic));
33539
+ if (hasAllAnnotations) {
33540
+ validEntry = entry;
33541
+ }
33542
+ }
33543
+ index += 1;
33488
33544
  }
33489
- index += 1;
33545
+ } else {
33546
+ validEntry = lastEntry;
33490
33547
  }
33491
33548
  if (validEntry) {
33492
33549
  // Drop older messages
@@ -64455,10 +64512,6 @@ function isTypicalFilterName(name) {
64455
64512
 
64456
64513
  var momentDurationFormat = {exports: {}};
64457
64514
 
64458
- function commonjsRequire(path) {
64459
- throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
64460
- }
64461
-
64462
64515
  var moment$2 = {exports: {}};
64463
64516
 
64464
64517
  var hasRequiredMoment;
@@ -77637,7 +77690,7 @@ function ThreeDeeRender(props) {
77637
77690
  // function has finished executing. This allows scene extensions that call
77638
77691
  // renderer.updateConfig to read out the new config value and configure their renderables
77639
77692
  // before the render occurs.
77640
- ReactDOM.unstable_batchedUpdates(() => {
77693
+ ReactDOM__default.unstable_batchedUpdates(() => {
77641
77694
  if (renderer) {
77642
77695
  const initialCameraState = renderer.getCameraState();
77643
77696
  renderer.settings.handleAction(action);
@@ -77736,7 +77789,7 @@ function ThreeDeeRender(props) {
77736
77789
  // Establish a connection to the message pipeline with context.watch and context.onRender
77737
77790
  useLayoutEffect(() => {
77738
77791
  context.onRender = (renderState, done) => {
77739
- ReactDOM.unstable_batchedUpdates(() => {
77792
+ ReactDOM__default.unstable_batchedUpdates(() => {
77740
77793
  if (renderState.currentTime) {
77741
77794
  setCurrentTime(renderState.currentTime);
77742
77795
  }
@@ -78143,7 +78196,7 @@ function initPanel(args, context) {
78143
78196
  customSceneExtensions
78144
78197
  } = args;
78145
78198
  // eslint-disable-next-line react/no-deprecated
78146
- ReactDOM.render( /*#__PURE__*/React__default.createElement(StrictMode, null, /*#__PURE__*/React__default.createElement(CaptureErrorBoundary, {
78199
+ ReactDOM__default.render( /*#__PURE__*/React__default.createElement(StrictMode, null, /*#__PURE__*/React__default.createElement(CaptureErrorBoundary, {
78147
78200
  onError: crash
78148
78201
  }, /*#__PURE__*/React__default.createElement(ForwardAnalyticsContextProvider, {
78149
78202
  forwardedAnalytics: forwardedAnalytics
@@ -78155,7 +78208,7 @@ function initPanel(args, context) {
78155
78208
  })))), context.panelElement);
78156
78209
  return () => {
78157
78210
  // eslint-disable-next-line react/no-deprecated
78158
- ReactDOM.unmountComponentAtNode(context.panelElement);
78211
+ ReactDOM__default.unmountComponentAtNode(context.panelElement);
78159
78212
  };
78160
78213
  }
78161
78214
  function ThreeDeeRenderAdapter(interfaceMode, props) {