@luxonis/visualizer-protobuf 2.31.0 → 2.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/{index-CYOisT3v.js → index-B9ZvmN6i.js} +1 -1
  2. package/dist/{index-BLzSVsRj.js → index-BDyXMzQ6.js} +1 -1
  3. package/dist/{index-CtXB_Ic-.js → index-BL_I8-0V.js} +1 -1
  4. package/dist/{index-C-PC9tcs.js → index-BN96rKt2.js} +91 -49
  5. package/dist/{index-mw1-_qZF.js → index-BiuCJhwT.js} +1 -1
  6. package/dist/{index-MfW3v2aI.js → index-BpJwPs_P.js} +2 -2
  7. package/dist/{index-Dq45ktWT.js → index-BxwFQSQF.js} +62 -42
  8. package/dist/{index-CibWUy5U.js → index-C6r0_Z5X.js} +1 -1
  9. package/dist/{index-CUAv-KkP.js → index-CW4po4LY.js} +1 -1
  10. package/dist/{index-D1pE7RX3.js → index-C_92hNxE.js} +1 -1
  11. package/dist/{index-03HteGnu.js → index-CyuWa_3o.js} +1 -1
  12. package/dist/{index-BYSU9azz.js → index-DJ858Esn.js} +1 -1
  13. package/dist/{index-DKgS1zcJ.js → index-DY4SlwLU.js} +1 -1
  14. package/dist/{index-rK4f2g0G.js → index-DjDBKVpT.js} +1 -1
  15. package/dist/{index-DgJK4d_8.js → index-DuBamk72.js} +1 -1
  16. package/dist/{index-gH0DmVpP.js → index-Hzb-PasG.js} +1 -1
  17. package/dist/{index-BjgEJPGd.js → index-Q0j8WhNV.js} +1 -1
  18. package/dist/{index-Ceq7UJ8B.js → index-r4kFXt3E.js} +1 -1
  19. package/dist/{index-CBfnZsHo.js → index-yA1k0oVX.js} +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/lib/src/components/Panel.d.ts +1 -0
  22. package/dist/lib/src/components/Panel.d.ts.map +1 -1
  23. package/dist/lib/src/components/Panel.js +3 -2
  24. package/dist/lib/src/components/Panel.js.map +1 -1
  25. package/dist/lib/src/connection/foxglove-connection.d.ts.map +1 -1
  26. package/dist/lib/src/connection/foxglove-connection.js +7 -0
  27. package/dist/lib/src/connection/foxglove-connection.js.map +1 -1
  28. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts +1 -1
  29. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts.map +1 -1
  30. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js +28 -15
  31. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js.map +1 -1
  32. package/dist/lib/src/panels/PointCloudPanel.d.ts +1 -0
  33. package/dist/lib/src/panels/PointCloudPanel.d.ts.map +1 -1
  34. package/dist/lib/src/panels/PointCloudPanel.js +11 -10
  35. package/dist/lib/src/panels/PointCloudPanel.js.map +1 -1
  36. package/dist/lib/src/utils/poitcloud-sync.js +1 -1
  37. package/dist/packages/studio-base/src/panels/ThreeDeeRender/ThreeDeeRender.js +1 -1
  38. package/dist/packages/studio-base/src/panels/ThreeDeeRender/ThreeDeeRender.js.map +1 -1
  39. package/dist/packages/studio-base/src/panels/ThreeDeeRender/camera.js +3 -3
  40. package/dist/packages/studio-base/src/panels/ThreeDeeRender/camera.js.map +1 -1
  41. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts +5 -5
  42. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts.map +1 -1
  43. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js +54 -21
  44. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js.map +1 -1
  45. package/package.json +3 -2
@@ -1,4 +1,4 @@
1
- import { a2 as ContextTracker, U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, M as foldNodeProp, ac as bracketMatchingHandle, T as LanguageSupport, a8 as EditorView, Z as syntaxTree, a9 as EditorSelection } from './index-C-PC9tcs.js';
1
+ import { a3 as ContextTracker, V as ExternalTokenizer, O as styleTags, Q as tags, X as LRParser, T as LRLanguage, K as indentNodeProp, N as foldNodeProp, ad as bracketMatchingHandle, U as LanguageSupport, a9 as EditorView, $ as syntaxTree, aa as EditorSelection } from './index-BN96rKt2.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, aa as html, T as LanguageSupport, ab as parseMixed } from './index-C-PC9tcs.js';
1
+ import { V as ExternalTokenizer, O as styleTags, Q as tags, X as LRParser, T as LRLanguage, K as indentNodeProp, M as continuedIndent, a1 as delimitedIndent, N as foldNodeProp, a2 as foldInside, ab as html, U as LanguageSupport, ac as parseMixed } from './index-BN96rKt2.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, a7 as defineCSSCompletionSource, T as LanguageSupport, V as LRParser, U as ExternalTokenizer } from './index-C-PC9tcs.js';
1
+ import { O as styleTags, Q as tags, T as LRLanguage, K as indentNodeProp, M as continuedIndent, N as foldNodeProp, a2 as foldInside, a8 as defineCSSCompletionSource, U as LanguageSupport, X as LRParser, V as ExternalTokenizer } from './index-BN96rKt2.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -523,7 +523,10 @@ class ThroughputMetricsManager {
523
523
  /* eslint-disable @foxglove/strict-equality */
524
524
  const WORKER_COUNT = 4;
525
525
  const DEFAULT_TARGET_FPS = 9;
526
- const DEFAULT_MAX_PROCESSED_QUEUE_SIZE = 100;
526
+ const DEFAULT_MAX_PROCESSED_QUEUE_SIZE = 25;
527
+ const DISPATCH_INTERVAL_MS = 100; // The interval in which the pool will dispatch frames. NOTE: Lower values may result in lag spikes.
528
+ const DISPATCH_INTERVAL_FRACTION = 1000 / DISPATCH_INTERVAL_MS;
529
+ const MAX_BATCH_SIZE = 3;
527
530
  class DepthToPointcloudWorkerPool {
528
531
  lastUsedWorkerIndex = 0;
529
532
  #frameQueue = [];
@@ -532,14 +535,14 @@ class DepthToPointcloudWorkerPool {
532
535
  #metrics;
533
536
  #maximumStorageBufferSize;
534
537
  #FRAME_BATCH_SIZE;
535
- #targetDispatchIntervalMs;
536
538
  #maxProcessedQueueSize;
537
539
  #prevColorFrameWidth;
538
540
  #prevDepthFrameWidth;
539
541
  #dispatchCallback;
542
+ #targetDispatchIntervalMs;
540
543
  #isProcessing = false;
541
544
  #dispatchTimeoutId = undefined;
542
- constructor(callback, batchSize = 10, targetFps = DEFAULT_TARGET_FPS, maxProcessedQueueSize = DEFAULT_MAX_PROCESSED_QUEUE_SIZE) {
545
+ constructor(callback, batchSize = MAX_BATCH_SIZE, targetFps = DEFAULT_TARGET_FPS, maxProcessedQueueSize = DEFAULT_MAX_PROCESSED_QUEUE_SIZE) {
543
546
  if (typeof navigator.gpu !== "undefined") {
544
547
  void navigator.gpu.requestAdapter().then(gpuAdapter => {
545
548
  if (!gpuAdapter) {
@@ -563,7 +566,7 @@ class DepthToPointcloudWorkerPool {
563
566
  this.#prevColorFrameWidth = 0;
564
567
  this.#dispatchCallback = callback;
565
568
  this.#FRAME_BATCH_SIZE = Math.max(1, batchSize);
566
- this.#targetDispatchIntervalMs = 1000 / Math.max(1, targetFps);
569
+ this.#targetDispatchIntervalMs = DISPATCH_INTERVAL_MS / Math.max(1, Math.round(targetFps / DISPATCH_INTERVAL_FRACTION)) * this.#calculateBatchMultiplier();
567
570
  this.#maxProcessedQueueSize = Math.max(1, maxProcessedQueueSize);
568
571
  this.workerApis = new Array(WORKER_COUNT).fill(undefined).map(() => wrap$3(new Worker(new URL("pointcloudFromDepth.worker-hil48rbC.js", import.meta.url), {
569
572
  type: "module"
@@ -598,8 +601,9 @@ class DepthToPointcloudWorkerPool {
598
601
  if (currentOutSize > this.#maximumStorageBufferSize) {
599
602
  console.warn(`GPU queue size ${currentOutSize} exceeds maximum storage buffer size ${this.#maximumStorageBufferSize}. Reducing batch size.`);
600
603
  const frameBatchSize = Math.floor(this.#maximumStorageBufferSize / (numPixelsPerFrame * 16));
601
- this.#FRAME_BATCH_SIZE = Math.max(1, frameBatchSize);
604
+ this.#FRAME_BATCH_SIZE = Math.min(Math.max(1, frameBatchSize), MAX_BATCH_SIZE);
602
605
  if (frameBatchSize < 1) {
606
+ // We can't fit one color and depth frame in GPU memory. So it's better to fallback to CPU
603
607
  console.warn("Output buffer size is too small to process. Falling back to CPU.");
604
608
  this.#isWebGpuSupported = false;
605
609
  }
@@ -611,7 +615,7 @@ class DepthToPointcloudWorkerPool {
611
615
  this.#metrics?.registerEvent("pcl-pool.batchSent");
612
616
  const fps = this.#metrics?.calculate("pcl-pool.batchSent");
613
617
  if (fps && fps > 0) {
614
- this.#targetDispatchIntervalMs = 1000 / Math.max(4, fps);
618
+ this.#targetDispatchIntervalMs = DISPATCH_INTERVAL_MS / Math.max(1, Math.round(fps / DISPATCH_INTERVAL_FRACTION)) * this.#calculateBatchMultiplier();
615
619
  }
616
620
  if ((this.#isProcessing || this.#frameQueue.length < this.#FRAME_BATCH_SIZE) && !force) {
617
621
  return;
@@ -635,7 +639,7 @@ class DepthToPointcloudWorkerPool {
635
639
  const i420Height = firstFrame.i420Height;
636
640
  try {
637
641
  const depthDataArray = batchToProcess.map(f => uint8ArrayToUint16Array(f.depthFrame.data));
638
- // @ts-expect-error - ITS unknow
642
+ // @ts-expect-error - ITS unknown
639
643
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
640
644
  const i420DataArray = batchToProcess.map(f => f.colorFrame.message.data);
641
645
  const workerIndex = this.lastUsedWorkerIndex;
@@ -701,11 +705,20 @@ class DepthToPointcloudWorkerPool {
701
705
  this.tryProcessBatch();
702
706
  }
703
707
  }
708
+ #calculateBatchMultiplier() {
709
+ if (this.#processedFrameQueue.length > this.#maxProcessedQueueSize / 2) {
710
+ return 1.2;
711
+ }
712
+ if (this.#processedFrameQueue.length >= this.#maxProcessedQueueSize - this.#maxProcessedQueueSize / 5) {
713
+ return 0.75;
714
+ }
715
+ return 1.3;
716
+ }
704
717
  #addToProcessedQueue(processedFrame) {
705
718
  if (this.#processedFrameQueue.length >= this.#maxProcessedQueueSize) {
706
719
  const fps = this.#metrics?.calculate("pcl-pool.batchSent");
707
720
  if (fps && fps > 0) {
708
- this.#targetDispatchIntervalMs = 1000 / Math.max(4, fps + 1);
721
+ this.#targetDispatchIntervalMs = DISPATCH_INTERVAL_MS / Math.max(1, Math.round(fps / DISPATCH_INTERVAL_FRACTION)) * this.#calculateBatchMultiplier();
709
722
  }
710
723
  this.#processedFrameQueue.shift();
711
724
  console.warn(`Processed frame queue full (>= ${this.#maxProcessedQueueSize}). Dropping oldest frame.`);
@@ -719,9 +732,13 @@ class DepthToPointcloudWorkerPool {
719
732
  if (this.#dispatchTimeoutId !== undefined) {
720
733
  clearTimeout(this.#dispatchTimeoutId);
721
734
  }
722
- if (this.#processedFrameQueue.length > 0) {
723
- this.#dispatchTimeoutId = setTimeout(this.#dispatchNextFrame, this.#targetDispatchIntervalMs);
724
- } else {
735
+ const fps = this.#metrics?.calculate("pcl-pool.batchSent");
736
+ if (fps && fps > 0) {
737
+ const MIN_DISPATCH_INTERVAL_MS = 100;
738
+ this.#targetDispatchIntervalMs = Math.min(MIN_DISPATCH_INTERVAL_MS, DISPATCH_INTERVAL_MS / Math.max(1, Math.round(fps / DISPATCH_INTERVAL_FRACTION)) * this.#calculateBatchMultiplier());
739
+ }
740
+ this.#dispatchTimeoutId = setTimeout(this.#dispatchNextFrame, this.#targetDispatchIntervalMs);
741
+ if (this.#processedFrameQueue.length <= 0) {
725
742
  this.#dispatchTimeoutId = undefined;
726
743
  }
727
744
  }
@@ -733,10 +750,8 @@ class DepthToPointcloudWorkerPool {
733
750
  } catch (error) {
734
751
  console.error("Error in dispatchCallback:", error);
735
752
  }
736
- } else {
737
- console.warn("Dispatch timer fired but processed queue was empty.");
738
753
  }
739
- this.#scheduleNextDispatch();
754
+ this.#dispatchTimeoutId = setTimeout(this.#dispatchNextFrame, this.#targetDispatchIntervalMs);
740
755
  };
741
756
  destroy() {
742
757
  if (this.#dispatchTimeoutId !== undefined) {
@@ -843,7 +858,7 @@ class PoitCloudSyncFramework {
843
858
  };
844
859
  }
845
860
  storedFrames = [];
846
- #MAX_DELAY_SEC = 0.075;
861
+ #MAX_DELAY_SEC = 0.065;
847
862
  #MAX_STORED_FRAMES = 100;
848
863
  getFrame(nsec) {
849
864
  const {
@@ -1005,6 +1020,13 @@ class FoxgloveConnection {
1005
1020
  this.emitState();
1006
1021
  const poitcloudColorFrameName = this.subscribedTopics.get("_Point Cloud Color") ? "_Point Cloud Color" : "H.264 Stream";
1007
1022
  if (event.topic === poitcloudColorFrameName) {
1023
+ /* Good for performance testing
1024
+ const date = Date.now();
1025
+ event.publishTime= {
1026
+ sec: Math.floor(date / 1000),
1027
+ nsec: date *10 ** 6,
1028
+ };
1029
+ */
1008
1030
  void this.handleParsePoitcloudMessage(event);
1009
1031
  }
1010
1032
  }
@@ -85462,7 +85484,7 @@ function legacy(parser) {
85462
85484
  return new LanguageSupport(StreamLanguage.define(parser));
85463
85485
  }
85464
85486
  function sql$1(dialectName) {
85465
- return import('./index-CBfnZsHo.js').then(m => m.sql({ dialect: m[dialectName] }));
85487
+ return import('./index-yA1k0oVX.js').then(m => m.sql({ dialect: m[dialectName] }));
85466
85488
  }
85467
85489
  /**
85468
85490
  An array of language descriptions for known language packages.
@@ -85473,7 +85495,7 @@ const languages = [
85473
85495
  name: "C",
85474
85496
  extensions: ["c", "h", "ino"],
85475
85497
  load() {
85476
- return import('./index-mw1-_qZF.js').then(m => m.cpp());
85498
+ return import('./index-BiuCJhwT.js').then(m => m.cpp());
85477
85499
  }
85478
85500
  }),
85479
85501
  /*@__PURE__*/LanguageDescription.of({
@@ -85481,7 +85503,7 @@ const languages = [
85481
85503
  alias: ["cpp"],
85482
85504
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
85483
85505
  load() {
85484
- return import('./index-mw1-_qZF.js').then(m => m.cpp());
85506
+ return import('./index-BiuCJhwT.js').then(m => m.cpp());
85485
85507
  }
85486
85508
  }),
85487
85509
  /*@__PURE__*/LanguageDescription.of({
@@ -85501,7 +85523,7 @@ const languages = [
85501
85523
  name: "Go",
85502
85524
  extensions: ["go"],
85503
85525
  load() {
85504
- return import('./index-DKgS1zcJ.js').then(m => m.go());
85526
+ return import('./index-DY4SlwLU.js').then(m => m.go());
85505
85527
  }
85506
85528
  }),
85507
85529
  /*@__PURE__*/LanguageDescription.of({
@@ -85516,7 +85538,7 @@ const languages = [
85516
85538
  name: "Java",
85517
85539
  extensions: ["java"],
85518
85540
  load() {
85519
- return import('./index-CUAv-KkP.js').then(m => m.java());
85541
+ return import('./index-CW4po4LY.js').then(m => m.java());
85520
85542
  }
85521
85543
  }),
85522
85544
  /*@__PURE__*/LanguageDescription.of({
@@ -85532,7 +85554,7 @@ const languages = [
85532
85554
  alias: ["json5"],
85533
85555
  extensions: ["json", "map"],
85534
85556
  load() {
85535
- return import('./index-rK4f2g0G.js').then(m => m.json());
85557
+ return import('./index-DjDBKVpT.js').then(m => m.json());
85536
85558
  }
85537
85559
  }),
85538
85560
  /*@__PURE__*/LanguageDescription.of({
@@ -85546,14 +85568,14 @@ const languages = [
85546
85568
  name: "LESS",
85547
85569
  extensions: ["less"],
85548
85570
  load() {
85549
- return import('./index-CtXB_Ic-.js').then(m => m.less());
85571
+ return import('./index-BL_I8-0V.js').then(m => m.less());
85550
85572
  }
85551
85573
  }),
85552
85574
  /*@__PURE__*/LanguageDescription.of({
85553
85575
  name: "Liquid",
85554
85576
  extensions: ["liquid"],
85555
85577
  load() {
85556
- return import('./index-BjgEJPGd.js').then(m => m.liquid());
85578
+ return import('./index-Q0j8WhNV.js').then(m => m.liquid());
85557
85579
  }
85558
85580
  }),
85559
85581
  /*@__PURE__*/LanguageDescription.of({
@@ -85579,7 +85601,7 @@ const languages = [
85579
85601
  name: "PHP",
85580
85602
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
85581
85603
  load() {
85582
- return import('./index-BLzSVsRj.js').then(m => m.php());
85604
+ return import('./index-BDyXMzQ6.js').then(m => m.php());
85583
85605
  }
85584
85606
  }),
85585
85607
  /*@__PURE__*/LanguageDescription.of({
@@ -85596,28 +85618,28 @@ const languages = [
85596
85618
  extensions: ["BUILD", "bzl", "py", "pyw"],
85597
85619
  filename: /^(BUCK|BUILD)$/,
85598
85620
  load() {
85599
- return import('./index-CibWUy5U.js').then(m => m.python());
85621
+ return import('./index-C6r0_Z5X.js').then(m => m.python());
85600
85622
  }
85601
85623
  }),
85602
85624
  /*@__PURE__*/LanguageDescription.of({
85603
85625
  name: "Rust",
85604
85626
  extensions: ["rs"],
85605
85627
  load() {
85606
- return import('./index-03HteGnu.js').then(m => m.rust());
85628
+ return import('./index-CyuWa_3o.js').then(m => m.rust());
85607
85629
  }
85608
85630
  }),
85609
85631
  /*@__PURE__*/LanguageDescription.of({
85610
85632
  name: "Sass",
85611
85633
  extensions: ["sass"],
85612
85634
  load() {
85613
- return import('./index-DgJK4d_8.js').then(m => m.sass({ indented: true }));
85635
+ return import('./index-DuBamk72.js').then(m => m.sass({ indented: true }));
85614
85636
  }
85615
85637
  }),
85616
85638
  /*@__PURE__*/LanguageDescription.of({
85617
85639
  name: "SCSS",
85618
85640
  extensions: ["scss"],
85619
85641
  load() {
85620
- return import('./index-DgJK4d_8.js').then(m => m.sass());
85642
+ return import('./index-DuBamk72.js').then(m => m.sass());
85621
85643
  }
85622
85644
  }),
85623
85645
  /*@__PURE__*/LanguageDescription.of({
@@ -85648,7 +85670,7 @@ const languages = [
85648
85670
  name: "WebAssembly",
85649
85671
  extensions: ["wat", "wast"],
85650
85672
  load() {
85651
- return import('./index-Ceq7UJ8B.js').then(m => m.wast());
85673
+ return import('./index-r4kFXt3E.js').then(m => m.wast());
85652
85674
  }
85653
85675
  }),
85654
85676
  /*@__PURE__*/LanguageDescription.of({
@@ -85656,7 +85678,7 @@ const languages = [
85656
85678
  alias: ["rss", "wsdl", "xsd"],
85657
85679
  extensions: ["xml", "xsl", "xsd", "svg"],
85658
85680
  load() {
85659
- return import('./index-CYOisT3v.js').then(m => m.xml());
85681
+ return import('./index-B9ZvmN6i.js').then(m => m.xml());
85660
85682
  }
85661
85683
  }),
85662
85684
  /*@__PURE__*/LanguageDescription.of({
@@ -85664,7 +85686,7 @@ const languages = [
85664
85686
  alias: ["yml"],
85665
85687
  extensions: ["yaml", "yml"],
85666
85688
  load() {
85667
- return import('./index-BYSU9azz.js').then(m => m.yaml());
85689
+ return import('./index-DJ858Esn.js').then(m => m.yaml());
85668
85690
  }
85669
85691
  }),
85670
85692
  // Legacy modes ported from CodeMirror 5
@@ -86460,13 +86482,13 @@ const languages = [
86460
86482
  name: "Vue",
86461
86483
  extensions: ["vue"],
86462
86484
  load() {
86463
- return import('./index-D1pE7RX3.js').then(m => m.vue());
86485
+ return import('./index-C_92hNxE.js').then(m => m.vue());
86464
86486
  }
86465
86487
  }),
86466
86488
  /*@__PURE__*/LanguageDescription.of({
86467
86489
  name: "Angular Template",
86468
86490
  load() {
86469
- return import('./index-gH0DmVpP.js').then(m => m.angular());
86491
+ return import('./index-Hzb-PasG.js').then(m => m.angular());
86470
86492
  }
86471
86493
  })
86472
86494
  ];
@@ -162498,7 +162520,8 @@ const Panel = ({
162498
162520
  annotationsFps,
162499
162521
  renderDelay,
162500
162522
  toggleTopic,
162501
- triggerToast
162523
+ triggerToast,
162524
+ hideToolbar = false
162502
162525
  }) => {
162503
162526
  const [detections, setDetections] = React__default.useState([]);
162504
162527
  React__default.useEffect(() => {
@@ -162520,7 +162543,7 @@ const Panel = ({
162520
162543
  style: {
162521
162544
  borderRadius: "8px"
162522
162545
  }
162523
- }, /*#__PURE__*/React__default.createElement(PanelToolbar, {
162546
+ }, !hideToolbar && /*#__PURE__*/React__default.createElement(PanelToolbar, {
162524
162547
  kind: kind,
162525
162548
  topic: topic,
162526
162549
  setDetections: setDetections,
@@ -162564,7 +162587,7 @@ function createRenderDelaySampler() {
162564
162587
  };
162565
162588
  }
162566
162589
 
162567
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-MfW3v2aI.js'));
162590
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BpJwPs_P.js'));
162568
162591
  const ImagePanelBody = ({
162569
162592
  topic,
162570
162593
  frameRenderedEvent,
@@ -162641,7 +162664,24 @@ const ImagePanel = /*#__PURE__*/React__default.memo(function ImagePanel(props) {
162641
162664
  // License, v2.0. If a copy of the MPL was not distributed with this
162642
162665
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
162643
162666
 
162644
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-Dq45ktWT.js'));
162667
+ const DEFAULT_CAMERA_STATE = {
162668
+ distance: -500,
162669
+ perspective: true,
162670
+ phi: 89,
162671
+ target: [0, 0, 0],
162672
+ targetOffset: [0, 0, 0],
162673
+ targetOrientation: [0, 1, 1, 1],
162674
+ thetaOffset: 180,
162675
+ fovy: 60,
162676
+ near: 2,
162677
+ far: 20000
162678
+ };
162679
+
162680
+ // This Source Code Form is subject to the terms of the Mozilla Public
162681
+ // License, v2.0. If a copy of the MPL was not distributed with this
162682
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
162683
+
162684
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BxwFQSQF.js'));
162645
162685
  const PointCloudPanelBody = ({
162646
162686
  topic,
162647
162687
  frameRenderedEvent
@@ -162670,16 +162710,16 @@ const PointCloudPanelBody = ({
162670
162710
  }
162671
162711
  },
162672
162712
  cameraState: {
162673
- distance: -1000,
162674
- perspective: true,
162713
+ distance: DEFAULT_CAMERA_STATE.distance,
162714
+ perspective: DEFAULT_CAMERA_STATE.perspective,
162675
162715
  phi: 89,
162676
- target: [0, 0, 0],
162677
- targetOffset: [0, 0, 0],
162678
- targetOrientation: [0, 1, 1, 1],
162679
- thetaOffset: 180,
162680
- fovy: getFovy(),
162681
- near: 5,
162682
- far: 20000
162716
+ target: DEFAULT_CAMERA_STATE.target,
162717
+ targetOffset: DEFAULT_CAMERA_STATE.targetOffset,
162718
+ targetOrientation: DEFAULT_CAMERA_STATE.targetOrientation,
162719
+ thetaOffset: DEFAULT_CAMERA_STATE.thetaOffset,
162720
+ near: DEFAULT_CAMERA_STATE.near,
162721
+ far: DEFAULT_CAMERA_STATE.far,
162722
+ fovy: getFovy()
162683
162723
  },
162684
162724
  imageMode: {
162685
162725
  colorMode: "rgba-fields"
@@ -162693,7 +162733,8 @@ const PointCloudPanelBody = ({
162693
162733
  const PointCloudPanel = /*#__PURE__*/React__default.memo(function PointCloudPanel({
162694
162734
  topic,
162695
162735
  toggleTopic,
162696
- targetFps
162736
+ targetFps,
162737
+ hideToolbar = false
162697
162738
  }) {
162698
162739
  const renderedFpsMetricsManagerRef = React__default.useRef(null);
162699
162740
  const [renderedFps, setRenderedFps] = React__default.useState(undefined);
@@ -162729,11 +162770,12 @@ const PointCloudPanel = /*#__PURE__*/React__default.memo(function PointCloudPane
162729
162770
  renderedFps: renderedFps,
162730
162771
  renderDelay: averageFrameDelay,
162731
162772
  disableAnnotations: true,
162732
- targetFps: targetFps
162773
+ targetFps: targetFps,
162774
+ hideToolbar: hideToolbar
162733
162775
  }, /*#__PURE__*/React__default.createElement(PointCloudPanelBody, {
162734
162776
  topic: topic,
162735
162777
  frameRenderedEvent: handleFrameRendered
162736
162778
  }));
162737
162779
  });
162738
162780
 
162739
- export { flatIndent as $, AnalyticsContext as A, PlayerCapabilities as B, assertNever as C, PlayerPresence as D, ErrorDisplay as E, isEqual as F, isDesktopApp as G, createTheme$1 as H, propTypesExports as I, indentNodeProp as J, continuedIndent as K, LeftSidebarItemKeys as L, foldNodeProp as M, styleTags as N, tags$1 as O, PropTypes as P, LRLanguage as Q, RightSidebarItemKeys as R, Stack$1 as S, LanguageSupport as T, ExternalTokenizer as U, LRParser as V, WorkspaceContext as W, ifNotIn as X, completeFromList as Y, syntaxTree as Z, _extends$3 as _, AppEvent as a, delimitedIndent as a0, foldInside as a1, ContextTracker as a2, LocalTokenGroup as a3, snippetCompletion as a4, IterMode as a5, NodeWeakMap as a6, defineCSSCompletionSource as a7, EditorView as a8, EditorSelection as a9, html$4 as aa, parseMixed as ab, bracketMatchingHandle as ac, javascriptLanguage as ad, VisualizerConnection as ae, VisualizerContext as af, PanelLayout as ag, ImagePanel as ah, PointCloudPanel as ai, EventMetricsManager as aj, ThroughputMetricsManager as ak, baseSet as b, createAggregator as c, useTranslation as d, usePanelCatalog as e, flatRest as f, generateUtilityClass as g, EmptyState as h, isEmpty as i, PanelContext as j, PanelCatalogContext as k, usePanelStateStore as l, makeStyles as m, useDefaultPanelTitle as n, useWorkspaceStore as o, WorkspaceStoreSelectors as p, difference as q, usePanelContext as r, useMessagePipeline as s, useHoverValue as t, useAnalytics as u, v4 as v, useSetHoverValue as w, useClearHoverValue as x, useMessagePipelineGetter as y, usePanelSettingsTreeUpdate as z };
162781
+ export { syntaxTree as $, AnalyticsContext as A, PlayerCapabilities as B, assertNever as C, PlayerPresence as D, ErrorDisplay as E, isEqual as F, isDesktopApp as G, createTheme$1 as H, propTypesExports as I, DEFAULT_CAMERA_STATE as J, indentNodeProp as K, LeftSidebarItemKeys as L, continuedIndent as M, foldNodeProp as N, styleTags as O, PropTypes as P, tags$1 as Q, RightSidebarItemKeys as R, Stack$1 as S, LRLanguage as T, LanguageSupport as U, ExternalTokenizer as V, WorkspaceContext as W, LRParser as X, ifNotIn as Y, completeFromList as Z, _extends$3 as _, AppEvent as a, flatIndent as a0, delimitedIndent as a1, foldInside as a2, ContextTracker as a3, LocalTokenGroup as a4, snippetCompletion as a5, IterMode as a6, NodeWeakMap as a7, defineCSSCompletionSource as a8, EditorView as a9, EditorSelection as aa, html$4 as ab, parseMixed as ac, bracketMatchingHandle as ad, javascriptLanguage as ae, VisualizerConnection as af, VisualizerContext as ag, PanelLayout as ah, ImagePanel as ai, PointCloudPanel as aj, EventMetricsManager as ak, ThroughputMetricsManager as al, baseSet as b, createAggregator as c, useTranslation as d, usePanelCatalog as e, flatRest as f, generateUtilityClass as g, EmptyState as h, isEmpty as i, PanelContext as j, PanelCatalogContext as k, usePanelStateStore as l, makeStyles as m, useDefaultPanelTitle as n, useWorkspaceStore as o, WorkspaceStoreSelectors as p, difference as q, usePanelContext as r, useMessagePipeline as s, useHoverValue as t, useAnalytics as u, v4 as v, useSetHoverValue as w, useClearHoverValue as x, useMessagePipelineGetter as y, usePanelSettingsTreeUpdate as z };
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-C-PC9tcs.js';
1
+ import { V as ExternalTokenizer, O as styleTags, Q as tags, X as LRParser, T as LRLanguage, K as indentNodeProp, M as continuedIndent, a0 as flatIndent, a1 as delimitedIndent, N as foldNodeProp, a2 as foldInside, U as LanguageSupport } from './index-BN96rKt2.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { ImagePanel } from './index-Dq45ktWT.js';
1
+ import { ImagePanel } from './index-BxwFQSQF.js';
2
2
  import 'react';
3
3
  import 'react-dom';
4
4
  import './tslib.es6-C73eoP_E.js';
@@ -7,7 +7,7 @@ import './_commonjsHelpers-E-ZsRS8r.js';
7
7
  import '@mui/material';
8
8
  import './isArrayLikeObject-Bytw9p-q.js';
9
9
  import 'zustand';
10
- import './index-C-PC9tcs.js';
10
+ import './index-BN96rKt2.js';
11
11
  import './comlink-DHMAu6X7.js';
12
12
  import './utils-Hzt3wxhG.js';
13
13
  import './FoxgloveServer-C39Uooyk.js';