@luxonis/visualizer-protobuf 2.67.1 → 2.67.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/{depth-CvvVVEb7.js → depth-CFY2W_Vf.js} +35 -18
  2. package/dist/depth-coloring.worker-DR5moFai.js +120 -0
  3. package/dist/{deserialization.worker-hk5-vVek.js → deserialization.worker-BRNDCptR.js} +2 -2
  4. package/dist/{index-CTU14EGn.js → index-2Ajz1Y1F.js} +2 -2
  5. package/dist/{index-BUWAj7RO.js → index-B3cHfrcw.js} +2 -2
  6. package/dist/{index-DpVmn8Eo.js → index-BNMXWFDA.js} +2 -2
  7. package/dist/{index-CYlHxiz2.js → index-BhLYvhjo.js} +2 -2
  8. package/dist/{index-BTaQS6zc.js → index-BuGHi09K.js} +2 -2
  9. package/dist/{index-CpDOxFKV.js → index-BzAo-6Ol.js} +2 -2
  10. package/dist/{index-BlAepdJg.js → index-C92x9EiC.js} +4 -4
  11. package/dist/{index-OiUy81OG.js → index-CCsfCpZT.js} +2 -2
  12. package/dist/{index-CrukQeVA.js → index-CLHPbWo6.js} +44 -29
  13. package/dist/{index-DGb5vWhb.js → index-CRTwfb76.js} +2 -2
  14. package/dist/{index-Cnigfgu_.js → index-CYJDY0hm.js} +1 -1
  15. package/dist/{index-B0BQ4Fwh.js → index-CZ6h7zpz.js} +2 -2
  16. package/dist/{index-DyET9xdh.js → index-CZkF1YCY.js} +2 -2
  17. package/dist/{index-DzJhlBTx.js → index-CaE-gPi_.js} +2 -2
  18. package/dist/{index-BzLeaN56.js → index-D7JYN_IN.js} +3 -3
  19. package/dist/{index-bi1RxT1w.js → index-DW9FJFJz.js} +2 -2
  20. package/dist/{index-BTT4oTs5.js → index-FM6vEyS1.js} +2 -2
  21. package/dist/{index-BGsMOjjC.js → index-HcH5t5Pw.js} +2 -2
  22. package/dist/{index-ewsVm4VI.js → index-KDfpYD4q.js} +2 -2
  23. package/dist/{index-DuHHWrO3.js → index-ugbolO1H.js} +2 -2
  24. package/dist/index.js +2 -2
  25. package/dist/lib/src/components/Panel.d.ts +1 -0
  26. package/dist/lib/src/components/Panel.d.ts.map +1 -1
  27. package/dist/lib/src/components/Panel.js +2 -2
  28. package/dist/lib/src/components/Panel.js.map +1 -1
  29. package/dist/lib/src/components/PanelToolbar.d.ts +1 -0
  30. package/dist/lib/src/components/PanelToolbar.d.ts.map +1 -1
  31. package/dist/lib/src/components/PanelToolbar.js +18 -6
  32. package/dist/lib/src/components/PanelToolbar.js.map +1 -1
  33. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js +1 -1
  34. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js.map +1 -1
  35. package/dist/lib/src/messaging/deserialization/video/depth-coloring.worker.d.ts.map +1 -1
  36. package/dist/lib/src/messaging/deserialization/video/depth-coloring.worker.js +65 -33
  37. package/dist/lib/src/messaging/deserialization/video/depth-coloring.worker.js.map +1 -1
  38. package/dist/lib/src/messaging/deserialization/video/depth.d.ts.map +1 -1
  39. package/dist/lib/src/messaging/deserialization/video/depth.js +33 -13
  40. package/dist/lib/src/messaging/deserialization/video/depth.js.map +1 -1
  41. package/dist/lib/src/messaging/message-handler.js +1 -1
  42. package/dist/lib/src/messaging/message-handler.js.map +1 -1
  43. package/dist/lib/src/panels/ImagePanel.d.ts +1 -0
  44. package/dist/lib/src/panels/ImagePanel.d.ts.map +1 -1
  45. package/dist/lib/src/panels/ImagePanel.js.map +1 -1
  46. package/dist/packages/studio-base/src/panels/ThreeDeeRender/index.d.ts.map +1 -1
  47. package/dist/packages/studio-base/src/panels/ThreeDeeRender/index.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/depth-coloring.worker-BfrTf5yN.js +0 -86
@@ -1,4 +1,4 @@
1
- import { t as transfer, w as wrap } from './comlink-CsH1ih07.js';
1
+ import { w as wrap, t as transfer } from './comlink-CsH1ih07.js';
2
2
  import { useContext, useRef, useLayoutEffect, createContext, useReducer, useState, useCallback } from 'react';
3
3
  import 'zustand';
4
4
  import { isParent, getLeaves, createRemoveUpdate, updateTree, getNodeAtPath } from 'react-mosaic-component';
@@ -4189,12 +4189,31 @@ function parseMessage(message) {
4189
4189
  // License, v2.0. If a copy of the MPL was not distributed with this
4190
4190
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
4191
4191
 
4192
- let depthWorker = null;
4192
+ let workerIndex = 0;
4193
+ const WORKER_COUNT = 3;
4194
+ const workerPool = Array.from({
4195
+ length: WORKER_COUNT
4196
+ }, () => ({
4197
+ remote: wrap(new Worker(new URL("depth-coloring.worker-DR5moFai.js", import.meta.url))),
4198
+ busy: false
4199
+ }));
4193
4200
  function getDepthWorker() {
4194
- if (!depthWorker) {
4195
- depthWorker = wrap(new Worker(new URL("depth-coloring.worker-BfrTf5yN.js", import.meta.url)));
4201
+ for (let i = 0; i < workerPool.length; i++) {
4202
+ const idx = (workerIndex + i) % workerPool.length;
4203
+ const slot = workerPool[idx];
4204
+ if (!slot?.busy) {
4205
+ slot.busy = true;
4206
+ workerIndex = (idx + 1) % workerPool.length;
4207
+ return slot.remote;
4208
+ }
4209
+ }
4210
+ return null;
4211
+ }
4212
+ function releaseWorker(remote) {
4213
+ const slot = workerPool.find(s => s.remote === remote);
4214
+ if (slot) {
4215
+ slot.busy = false;
4196
4216
  }
4197
- return depthWorker;
4198
4217
  }
4199
4218
  async function deserializeDepthFrame({
4200
4219
  topic,
@@ -4209,14 +4228,19 @@ async function deserializeDepthFrame({
4209
4228
  height
4210
4229
  } = parseMessage(message);
4211
4230
  const worker = getDepthWorker();
4212
-
4213
- // Transfer the underlying ArrayBuffer to the worker to avoid cloning and allow GC on the main thread
4231
+ if (!worker) {
4232
+ console.warn("All depth workers busy, dropping frame");
4233
+ return;
4234
+ }
4214
4235
  let colorizedData;
4215
4236
  try {
4216
4237
  colorizedData = await worker.colorDepht(transfer(message.data, [message.data.buffer]), encoding, width, height, maxStereoDepth);
4217
4238
  } catch (err) {
4218
- // Fallback in case the buffer is not transferable (e.g., SharedArrayBuffer)
4219
- colorizedData = await worker.colorDepht(message.data, encoding, width, height, maxStereoDepth);
4239
+ console.error("Error in depth worker:", err);
4240
+ releaseWorker(worker);
4241
+ throw err;
4242
+ } finally {
4243
+ releaseWorker(worker);
4220
4244
  }
4221
4245
  const foxgloveMessage = {
4222
4246
  timestamp: receiveTime,
@@ -4243,17 +4267,11 @@ function getDistanceFromDepthDataForOffset(depthData, width, height, xOffset, yO
4243
4267
  });
4244
4268
  return undefined;
4245
4269
  }
4246
-
4247
- // Compute the pixel index corresponding to the offsets, clamped to image bounds
4248
4270
  const xCenter = Math.min(width - 1, Math.max(0, Math.floor(xOffset * width)));
4249
4271
  const yCenter = Math.min(height - 1, Math.max(0, Math.floor(yOffset * height)));
4250
- const pointStride = 16; // bytes per point
4251
- const zByteOffset = 8; // z is at byte offset 8 within each point
4252
-
4253
- // Prepare a DataView over the provided depthData for efficient reads
4272
+ const pointStride = 16;
4273
+ const zByteOffset = 8;
4254
4274
  const view = new DataView(depthData.buffer, depthData.byteOffset, depthData.byteLength);
4255
-
4256
- // Average z over a 5x5 window centered at (xCenter, yCenter)
4257
4275
  const radius = 2;
4258
4276
  let sum = 0;
4259
4277
  let count = 0;
@@ -4269,7 +4287,6 @@ function getDistanceFromDepthDataForOffset(depthData, width, height, xOffset, yO
4269
4287
  }
4270
4288
  const idx = y * width + x;
4271
4289
  const offset = idx * pointStride + zByteOffset;
4272
- // Ensure we have enough bytes to read a float32
4273
4290
  if (offset + 4 > depthData.byteLength) {
4274
4291
  continue;
4275
4292
  }
@@ -0,0 +1,120 @@
1
+ import { e as expose, t as transfer } from './comlink-CsH1ih07.js';
2
+
3
+ // This Source Code Form is subject to the terms of the Mozilla Public
4
+ // License, v2.0. If a copy of the MPL was not distributed with this
5
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
6
+
7
+
8
+ // Reusable buffers to avoid allocations
9
+ let depthBuffer = null;
10
+ let colorBuffer = null;
11
+ function colorDepht(data, encoding, width, height, maxSteroDepth) {
12
+ const pixelCount = width * height;
13
+ if (!depthBuffer || depthBuffer.length < pixelCount) {
14
+ depthBuffer = new Float32Array(pixelCount);
15
+ }
16
+ if (!colorBuffer || colorBuffer.length < pixelCount * 3) {
17
+ colorBuffer = new Uint8Array(pixelCount * 3);
18
+ }
19
+ parseDepthData(data, encoding, width, height, depthBuffer);
20
+ colorizeDepthFrame(depthBuffer, width, height, maxSteroDepth, colorBuffer);
21
+ const result = new Uint8Array(pixelCount * 3);
22
+ result.set(colorBuffer.subarray(0, pixelCount * 3));
23
+ return transfer(result, [result.buffer]);
24
+ }
25
+ function parseDepthData(data, encoding, width, height, depthData) {
26
+ const pixelCount = width * height;
27
+ if (encoding === "mono16" || encoding === "16UC1") {
28
+ const byteOffset = data.byteOffset;
29
+ const byteLength = data.byteLength;
30
+ if (byteOffset % 2 === 0 && byteLength >= pixelCount * 2) {
31
+ const uint16View = new Uint16Array(data.buffer, byteOffset, pixelCount);
32
+ for (let i = 0; i < pixelCount; i++) {
33
+ depthData[i] = uint16View[i] * 0.001;
34
+ }
35
+ } else {
36
+ // Fallback: use DataView for unaligned data
37
+ const view = new DataView(data.buffer, byteOffset, byteLength);
38
+ for (let i = 0; i < pixelCount; i++) {
39
+ depthData[i] = view.getUint16(i * 2, true) * 0.001;
40
+ }
41
+ }
42
+ } else if (encoding === "32FC1") {
43
+ const byteOffset = data.byteOffset;
44
+ const byteLength = data.byteLength;
45
+ if (byteOffset % 4 === 0 && byteLength >= pixelCount * 4) {
46
+ const float32View = new Float32Array(data.buffer, byteOffset, pixelCount);
47
+ for (let i = 0; i < pixelCount; i++) {
48
+ depthData[i] = float32View[i];
49
+ }
50
+ } else {
51
+ const view = new DataView(data.buffer, byteOffset, byteLength);
52
+ for (let i = 0; i < pixelCount; i++) {
53
+ depthData[i] = view.getFloat32(i * 4, true);
54
+ }
55
+ }
56
+ } else {
57
+ throw new Error(`Unsupported depth encoding: ${encoding}`);
58
+ }
59
+ }
60
+ expose({
61
+ colorDepht
62
+ });
63
+ function colorizeDepthFrame(depthData, width, height, maxDepth, colorizedData) {
64
+ const pixelCount = width * height;
65
+ const colormap = getJetColormap();
66
+ const invMaxDepth = 255 / maxDepth;
67
+ for (let i = 0; i < pixelCount; i++) {
68
+ const depth = depthData[i];
69
+ const clipped = depth < 0 ? 0 : depth > maxDepth ? maxDepth : depth;
70
+ const normalized = Math.floor(clipped * invMaxDepth);
71
+ const colorOffset = normalized * 3;
72
+ const offset = i * 3;
73
+ colorizedData[offset] = colormap[colorOffset];
74
+ colorizedData[offset + 1] = colormap[colorOffset + 1];
75
+ colorizedData[offset + 2] = colormap[colorOffset + 2];
76
+ }
77
+ }
78
+ let cachedColormapFlat = null;
79
+ function getJetColormap() {
80
+ if (cachedColormapFlat) {
81
+ return cachedColormapFlat;
82
+ }
83
+ const colormap = new Uint8Array(256 * 3);
84
+ for (let i = 0; i < 256; i++) {
85
+ const value = i / 255.0;
86
+ let r, g, b;
87
+ if (value < 0.125) {
88
+ r = 0;
89
+ g = 0;
90
+ b = 0.5 + 0.5 * (value / 0.125);
91
+ } else if (value < 0.375) {
92
+ r = 0;
93
+ g = (value - 0.125) / 0.25;
94
+ b = 1;
95
+ } else if (value < 0.625) {
96
+ r = (value - 0.375) / 0.25;
97
+ g = 1;
98
+ b = 1 - (value - 0.375) / 0.25;
99
+ } else if (value < 0.875) {
100
+ r = 1;
101
+ g = 1 - (value - 0.625) / 0.25;
102
+ b = 0;
103
+ } else {
104
+ r = 1 - 0.5 * (value - 0.875) / 0.125;
105
+ g = 0;
106
+ b = 0;
107
+ }
108
+ const offset = i * 3;
109
+ colormap[offset] = Math.floor(r * 255);
110
+ colormap[offset + 1] = Math.floor(g * 255);
111
+ colormap[offset + 2] = Math.floor(b * 255);
112
+ }
113
+ colormap[0] = 0;
114
+ colormap[1] = 0;
115
+ colormap[2] = 0;
116
+ cachedColormapFlat = colormap;
117
+ return colormap;
118
+ }
119
+
120
+ export { colorDepht };
@@ -1,6 +1,6 @@
1
1
  import { e as expose } from './comlink-CsH1ih07.js';
2
- import { t as typescript } from './index-Cnigfgu_.js';
3
- import { U as parseMessage, e as estimateObjectSize, V as fromMillis, d as dist, W as parsePixelFormat, X as deserializeDepthFrame } from './depth-CvvVVEb7.js';
2
+ import { t as typescript } from './index-CYJDY0hm.js';
3
+ import { U as parseMessage, e as estimateObjectSize, V as fromMillis, d as dist, W as parsePixelFormat, X as deserializeDepthFrame } from './depth-CFY2W_Vf.js';
4
4
  import { P as PointsAnnotationType, p as protobufsBySchema, T as Type, b as Profile } from './protobuf-BFCtaU7c.js';
5
5
  import { i as isCapableOfEncodedStream } from './encoding-DqlhpFR2.js';
6
6
  import 'react';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,7 +1,7 @@
1
- import { ImagePanel } from './index-BzLeaN56.js';
1
+ import { ImagePanel } from './index-D7JYN_IN.js';
2
2
  import 'react';
3
3
  import 'react-dom';
4
- import './depth-CvvVVEb7.js';
4
+ import './depth-CFY2W_Vf.js';
5
5
  import './comlink-CsH1ih07.js';
6
6
  import 'zustand';
7
7
  import 'react-mosaic-component';
@@ -9,7 +9,7 @@ import './protobuf-BFCtaU7c.js';
9
9
  import 'protobufjs/minimal';
10
10
  import '@mui/material';
11
11
  import './isArrayLikeObject-Bytw9p-q.js';
12
- import './index-CrukQeVA.js';
12
+ import './index-CLHPbWo6.js';
13
13
  import './utils-Hzt3wxhG.js';
14
14
  import './FoxgloveServer-h5m-pXp3.js';
15
15
  import 'ms';
@@ -32,7 +32,7 @@ import '@mui/icons-material/MoreVert';
32
32
  import '@mui/icons-material/Cancel';
33
33
  import '@mui/icons-material/Search';
34
34
  import './decodeImage-DAWmFdMI.js';
35
- import './index-Cnigfgu_.js';
35
+ import './index-CYJDY0hm.js';
36
36
  import '@mui/material/styles/createTypography';
37
37
  import 'color';
38
38
  import 'lodash.curry';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,4 +1,4 @@
1
- import { d as dist$1, e as estimateObjectSize, r as reportError, A as AppError, b as baseFlatten, a as baseEach, c as baseIteratee, f as baseDifference, g as getTag, h as baseKeys, i as baseIsEqual, j as castPath, t as toKey, k as baseGet, l as hasIn, s as sendNotification, m as shallowequal, u as useGuaranteedContext, n as getPanelIdsInsideTabPanels, o as getPanelTypeFromId, T as TAB_PANEL_TYPE, p as removePanelFromTabPanel, q as getPanelIdForType, v as getPathFromNode, w as updateTabPanelLayout, x as getSaveConfigsPayloadForAddedPanel, y as replaceAndRemovePanels, z as inlineTabPanelLayouts, B as getAllPanelIds, C as getConfigsForNestedPanelsInsideTab, D as reorderTabWithinTabPanel, E as moveTabBetweenTabPanels, F as isTabPanelConfig, G as DEFAULT_TAB_PANEL_CONFIG, H as addPanelToTab, I as createAddUpdates, J as filterMap, L as Logger, K as uniq$2, M as useShallowMemo, N as CurrentLayoutContext, O as MessageOrderTracker, P as AppConfigurationContext, _ as __assign$8, Q as __rest$5, R as __spreadArray$5 } from './depth-CvvVVEb7.js';
1
+ import { d as dist$1, e as estimateObjectSize, r as reportError, A as AppError, b as baseFlatten, a as baseEach, c as baseIteratee, f as baseDifference, g as getTag, h as baseKeys, i as baseIsEqual, j as castPath, t as toKey, k as baseGet, l as hasIn, s as sendNotification, m as shallowequal, u as useGuaranteedContext, n as getPanelIdsInsideTabPanels, o as getPanelTypeFromId, T as TAB_PANEL_TYPE, p as removePanelFromTabPanel, q as getPanelIdForType, v as getPathFromNode, w as updateTabPanelLayout, x as getSaveConfigsPayloadForAddedPanel, y as replaceAndRemovePanels, z as inlineTabPanelLayouts, B as getAllPanelIds, C as getConfigsForNestedPanelsInsideTab, D as reorderTabWithinTabPanel, E as moveTabBetweenTabPanels, F as isTabPanelConfig, G as DEFAULT_TAB_PANEL_CONFIG, H as addPanelToTab, I as createAddUpdates, J as filterMap, L as Logger, K as uniq$2, M as useShallowMemo, N as CurrentLayoutContext, O as MessageOrderTracker, P as AppConfigurationContext, _ as __assign$8, Q as __rest$5, R as __spreadArray$5 } from './depth-CFY2W_Vf.js';
2
2
  import { w as wrap$3, p as proxy } from './comlink-CsH1ih07.js';
3
3
  import { u as uint8ArrayToUint16Array } from './utils-Hzt3wxhG.js';
4
4
  import { p as protobufsBySchema, a as protobufSchemaNameToType, g as getDefaultExportFromCjs, c as commonjsGlobal } from './protobuf-BFCtaU7c.js';
@@ -653,7 +653,7 @@ class DepthToPointcloudWorkerPool {
653
653
  // biome-ignore lint/style/noNonNullAssertion: <explanation>
654
654
  const workerApi = this.workerApis[workerIndex];
655
655
  this.lastUsedWorkerIndex = (this.lastUsedWorkerIndex + 1) % WORKER_COUNT;
656
- workerApi.depthToPointcloudGPU(depthDataArray, width, height, fx, fy, cx, cy, i420DataArray, i420Width, i420Height, Number(localStorage.getItem("stereoDepthMaxValue") ?? "5.0"), {
656
+ workerApi.depthToPointcloudGPU(depthDataArray, width, height, fx, fy, cx, cy, i420DataArray, i420Width, i420Height, Number(localStorage.getItem("stereoDepthMaxValue") ?? "8000"), {
657
657
  hasGPU: this.#isWebGpuSupported
658
658
  }).then(results => {
659
659
  if (results.length === batchToProcess.length) {
@@ -790,7 +790,7 @@ class ConfigStore {
790
790
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
791
791
 
792
792
  function initWorker(callback) {
793
- const workerWrap = wrap$3(new Worker(new URL("deserialization.worker-hk5-vVek.js", import.meta.url), {
793
+ const workerWrap = wrap$3(new Worker(new URL("deserialization.worker-BRNDCptR.js", import.meta.url), {
794
794
  type: "module",
795
795
  name: `message-decoder`
796
796
  }));
@@ -818,7 +818,7 @@ function createMessageHandler(callback) {
818
818
  buffer,
819
819
  topic,
820
820
  neuralCameraIntrinsics,
821
- stereoDepthMaxValue: Number(localStorage.getItem("stereoDepthMaxValue") ?? "5.0")
821
+ stereoDepthMaxValue: Number(localStorage.getItem("stereoDepthMaxValue") ?? "8000")
822
822
  }, ConfigStore.getInstance(), proxiedCallback);
823
823
  }
824
824
  };
@@ -86841,7 +86841,7 @@ function legacy(parser) {
86841
86841
  return new LanguageSupport(StreamLanguage.define(parser));
86842
86842
  }
86843
86843
  function sql$1(dialectName) {
86844
- return import('./index-DpVmn8Eo.js').then(m => m.sql({ dialect: m[dialectName] }));
86844
+ return import('./index-BNMXWFDA.js').then(m => m.sql({ dialect: m[dialectName] }));
86845
86845
  }
86846
86846
  /**
86847
86847
  An array of language descriptions for known language packages.
@@ -86852,7 +86852,7 @@ const languages = [
86852
86852
  name: "C",
86853
86853
  extensions: ["c", "h", "ino"],
86854
86854
  load() {
86855
- return import('./index-BTaQS6zc.js').then(m => m.cpp());
86855
+ return import('./index-BuGHi09K.js').then(m => m.cpp());
86856
86856
  }
86857
86857
  }),
86858
86858
  /*@__PURE__*/LanguageDescription.of({
@@ -86860,7 +86860,7 @@ const languages = [
86860
86860
  alias: ["cpp"],
86861
86861
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
86862
86862
  load() {
86863
- return import('./index-BTaQS6zc.js').then(m => m.cpp());
86863
+ return import('./index-BuGHi09K.js').then(m => m.cpp());
86864
86864
  }
86865
86865
  }),
86866
86866
  /*@__PURE__*/LanguageDescription.of({
@@ -86880,7 +86880,7 @@ const languages = [
86880
86880
  name: "Go",
86881
86881
  extensions: ["go"],
86882
86882
  load() {
86883
- return import('./index-BUWAj7RO.js').then(m => m.go());
86883
+ return import('./index-B3cHfrcw.js').then(m => m.go());
86884
86884
  }
86885
86885
  }),
86886
86886
  /*@__PURE__*/LanguageDescription.of({
@@ -86895,7 +86895,7 @@ const languages = [
86895
86895
  name: "Java",
86896
86896
  extensions: ["java"],
86897
86897
  load() {
86898
- return import('./index-DzJhlBTx.js').then(m => m.java());
86898
+ return import('./index-CaE-gPi_.js').then(m => m.java());
86899
86899
  }
86900
86900
  }),
86901
86901
  /*@__PURE__*/LanguageDescription.of({
@@ -86911,7 +86911,7 @@ const languages = [
86911
86911
  alias: ["json5"],
86912
86912
  extensions: ["json", "map"],
86913
86913
  load() {
86914
- return import('./index-ewsVm4VI.js').then(m => m.json());
86914
+ return import('./index-KDfpYD4q.js').then(m => m.json());
86915
86915
  }
86916
86916
  }),
86917
86917
  /*@__PURE__*/LanguageDescription.of({
@@ -86925,14 +86925,14 @@ const languages = [
86925
86925
  name: "LESS",
86926
86926
  extensions: ["less"],
86927
86927
  load() {
86928
- return import('./index-bi1RxT1w.js').then(m => m.less());
86928
+ return import('./index-DW9FJFJz.js').then(m => m.less());
86929
86929
  }
86930
86930
  }),
86931
86931
  /*@__PURE__*/LanguageDescription.of({
86932
86932
  name: "Liquid",
86933
86933
  extensions: ["liquid"],
86934
86934
  load() {
86935
- return import('./index-OiUy81OG.js').then(m => m.liquid());
86935
+ return import('./index-CCsfCpZT.js').then(m => m.liquid());
86936
86936
  }
86937
86937
  }),
86938
86938
  /*@__PURE__*/LanguageDescription.of({
@@ -86958,7 +86958,7 @@ const languages = [
86958
86958
  name: "PHP",
86959
86959
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
86960
86960
  load() {
86961
- return import('./index-CpDOxFKV.js').then(m => m.php());
86961
+ return import('./index-BzAo-6Ol.js').then(m => m.php());
86962
86962
  }
86963
86963
  }),
86964
86964
  /*@__PURE__*/LanguageDescription.of({
@@ -86975,28 +86975,28 @@ const languages = [
86975
86975
  extensions: ["BUILD", "bzl", "py", "pyw"],
86976
86976
  filename: /^(BUCK|BUILD)$/,
86977
86977
  load() {
86978
- return import('./index-BGsMOjjC.js').then(m => m.python());
86978
+ return import('./index-HcH5t5Pw.js').then(m => m.python());
86979
86979
  }
86980
86980
  }),
86981
86981
  /*@__PURE__*/LanguageDescription.of({
86982
86982
  name: "Rust",
86983
86983
  extensions: ["rs"],
86984
86984
  load() {
86985
- return import('./index-DuHHWrO3.js').then(m => m.rust());
86985
+ return import('./index-ugbolO1H.js').then(m => m.rust());
86986
86986
  }
86987
86987
  }),
86988
86988
  /*@__PURE__*/LanguageDescription.of({
86989
86989
  name: "Sass",
86990
86990
  extensions: ["sass"],
86991
86991
  load() {
86992
- return import('./index-B0BQ4Fwh.js').then(m => m.sass({ indented: true }));
86992
+ return import('./index-CZ6h7zpz.js').then(m => m.sass({ indented: true }));
86993
86993
  }
86994
86994
  }),
86995
86995
  /*@__PURE__*/LanguageDescription.of({
86996
86996
  name: "SCSS",
86997
86997
  extensions: ["scss"],
86998
86998
  load() {
86999
- return import('./index-B0BQ4Fwh.js').then(m => m.sass());
86999
+ return import('./index-CZ6h7zpz.js').then(m => m.sass());
87000
87000
  }
87001
87001
  }),
87002
87002
  /*@__PURE__*/LanguageDescription.of({
@@ -87027,7 +87027,7 @@ const languages = [
87027
87027
  name: "WebAssembly",
87028
87028
  extensions: ["wat", "wast"],
87029
87029
  load() {
87030
- return import('./index-BTT4oTs5.js').then(m => m.wast());
87030
+ return import('./index-FM6vEyS1.js').then(m => m.wast());
87031
87031
  }
87032
87032
  }),
87033
87033
  /*@__PURE__*/LanguageDescription.of({
@@ -87035,7 +87035,7 @@ const languages = [
87035
87035
  alias: ["rss", "wsdl", "xsd"],
87036
87036
  extensions: ["xml", "xsl", "xsd", "svg"],
87037
87037
  load() {
87038
- return import('./index-DyET9xdh.js').then(m => m.xml());
87038
+ return import('./index-CZkF1YCY.js').then(m => m.xml());
87039
87039
  }
87040
87040
  }),
87041
87041
  /*@__PURE__*/LanguageDescription.of({
@@ -87043,7 +87043,7 @@ const languages = [
87043
87043
  alias: ["yml"],
87044
87044
  extensions: ["yaml", "yml"],
87045
87045
  load() {
87046
- return import('./index-DGb5vWhb.js').then(m => m.yaml());
87046
+ return import('./index-CRTwfb76.js').then(m => m.yaml());
87047
87047
  }
87048
87048
  }),
87049
87049
  // Legacy modes ported from CodeMirror 5
@@ -87839,13 +87839,13 @@ const languages = [
87839
87839
  name: "Vue",
87840
87840
  extensions: ["vue"],
87841
87841
  load() {
87842
- return import('./index-CTU14EGn.js').then(m => m.vue());
87842
+ return import('./index-2Ajz1Y1F.js').then(m => m.vue());
87843
87843
  }
87844
87844
  }),
87845
87845
  /*@__PURE__*/LanguageDescription.of({
87846
87846
  name: "Angular Template",
87847
87847
  load() {
87848
- return import('./index-CYlHxiz2.js').then(m => m.angular());
87848
+ return import('./index-BhLYvhjo.js').then(m => m.angular());
87849
87849
  }
87850
87850
  })
87851
87851
  ];
@@ -166179,6 +166179,7 @@ const PanelAnnotationButton = ({
166179
166179
  };
166180
166180
  const PanelToolbar = ({
166181
166181
  topic,
166182
+ fakedAs,
166182
166183
  kind,
166183
166184
  setDetections,
166184
166185
  disableAnnotations = false,
@@ -166195,6 +166196,7 @@ const PanelToolbar = ({
166195
166196
  actions
166196
166197
  }) => {
166197
166198
  const [metrics, setMetrics] = React__default.useState();
166199
+ const [fakedMetrics, setFakedMetrics] = React__default.useState();
166198
166200
  const [showResolution, setShowResolution] = React__default.useState(false);
166199
166201
  const {
166200
166202
  detections
@@ -166205,18 +166207,29 @@ const PanelToolbar = ({
166205
166207
  const wrapperBreakpointRef = React__default.useRef(null);
166206
166208
  const parentContainer = wrapperBreakpointRef.current ?? wrapperRef.current ?? document.body;
166207
166209
  React__default.useEffect(() => {
166208
- // Initial set
166209
166210
  if (!metrics) {
166210
166211
  setMetrics(connections.at(0)?.getTopicMetrics(topic));
166211
166212
  }
166212
166213
  const interval = setInterval(() => {
166213
- setMetrics(connections[0]?.getTopicMetrics(topic));
166214
+ const m = connections[0]?.getTopicMetrics(topic);
166215
+ setMetrics(m);
166216
+ if (fakedAs) {
166217
+ const mFakedAs = connections[0]?.getTopicMetrics(fakedAs);
166218
+ if (mFakedAs) {
166219
+ setFakedMetrics({
166220
+ resolutions: m?.resolutions ?? new Map(),
166221
+ incomingMessagesFps: mFakedAs.incomingMessagesFps,
166222
+ decodedMessagesFps: mFakedAs.decodedMessagesFps,
166223
+ messageThroughput: mFakedAs.messageThroughput
166224
+ });
166225
+ }
166226
+ }
166214
166227
  }, 500);
166215
166228
  return () => {
166216
166229
  clearInterval(interval);
166217
166230
  };
166218
166231
  // eslint-disable-next-line react-hooks/exhaustive-deps
166219
- }, []);
166232
+ }, [connections, topic, fakedAs]);
166220
166233
  React__default.useEffect(() => {
166221
166234
  if (wrapperWidth && wrapperWidth < 600) {
166222
166235
  setShowResolution(false);
@@ -166301,7 +166314,7 @@ const PanelToolbar = ({
166301
166314
  ref: wrapperBreakpointRef
166302
166315
  }, /*#__PURE__*/React__default.createElement(PanelToolbarMetrics, {
166303
166316
  targetFps: targetFps,
166304
- metrics: metrics,
166317
+ metrics: fakedMetrics ?? metrics,
166305
166318
  topic: topic,
166306
166319
  inDropdown: true,
166307
166320
  isPointcloud: kind === "pointCloud"
@@ -166354,7 +166367,7 @@ const PanelToolbar = ({
166354
166367
  icon: MdClose
166355
166368
  }, "Close Stream")))) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(PanelToolbarMetrics, {
166356
166369
  targetFps: targetFps,
166357
- metrics: metrics,
166370
+ metrics: fakedMetrics ?? metrics,
166358
166371
  topic: topic,
166359
166372
  isPointcloud: isPointcloud
166360
166373
  }), /*#__PURE__*/React__default.createElement(Flex, {
@@ -166479,6 +166492,7 @@ const Panel = ({
166479
166492
  canMoveDown,
166480
166493
  moveDown,
166481
166494
  panelOverlay,
166495
+ fakedAs,
166482
166496
  panelToolbarActions
166483
166497
  }) => {
166484
166498
  const [detections, setDetections] = React__default.useState([]);
@@ -166505,6 +166519,7 @@ const Panel = ({
166505
166519
  className: "flex flex-col grow border border-solid border-[#d3d3d3d9] overflow-hidden rounded-lg",
166506
166520
  ref: sectionRef
166507
166521
  }, panelOverlay, !hideToolbar && /*#__PURE__*/React__default.createElement(PanelToolbar, {
166522
+ fakedAs: fakedAs,
166508
166523
  kind: kind,
166509
166524
  topic: topic,
166510
166525
  setDetections: setDetections,
@@ -166554,7 +166569,7 @@ function createRenderDelaySampler() {
166554
166569
  };
166555
166570
  }
166556
166571
 
166557
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BlAepdJg.js'));
166572
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-C92x9EiC.js'));
166558
166573
  const ImagePanelBody = ({
166559
166574
  topic,
166560
166575
  frameRenderedEvent,
@@ -166649,7 +166664,7 @@ const DEFAULT_CAMERA_STATE = {
166649
166664
  // License, v2.0. If a copy of the MPL was not distributed with this
166650
166665
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
166651
166666
 
166652
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BzLeaN56.js'));
166667
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-D7JYN_IN.js'));
166653
166668
  const PointCloudPanelBody = ({
166654
166669
  topic,
166655
166670
  frameRenderedEvent,
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,4 +1,4 @@
1
- import { ah as tslib_es6 } from './depth-CvvVVEb7.js';
1
+ import { ah as tslib_es6 } from './depth-CFY2W_Vf.js';
2
2
  import { d as getAugmentedNamespace } from './protobuf-BFCtaU7c.js';
3
3
 
4
4
  var typescript = {};
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';
@@ -1,5 +1,5 @@
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-CrukQeVA.js';
2
- import './depth-CvvVVEb7.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-CLHPbWo6.js';
2
+ import './depth-CFY2W_Vf.js';
3
3
  import './comlink-CsH1ih07.js';
4
4
  import 'react';
5
5
  import 'zustand';