@luxonis/visualizer-protobuf 3.1.5 → 3.1.7

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 (32) hide show
  1. package/dist/{deserialization.worker-B0hsW-Sx.js → deserialization.worker-qrd_6Vrz.js} +124 -49
  2. package/dist/{index-CZ8-lPGF.js → index-B4osw0hO.js} +1 -1
  3. package/dist/{index-lZAws6q7.js → index-B7AEFuPp.js} +1 -1
  4. package/dist/{index-CKj_YAej.js → index-B8amzXr1.js} +1 -1
  5. package/dist/{index-CR3UTuQX.js → index-BRRz2Qr2.js} +1 -1
  6. package/dist/{index-Bxh1wmW1.js → index-BT5QPxw9.js} +1 -1
  7. package/dist/{index-TrCYoTV2.js → index-BYfR1cyF.js} +1 -1
  8. package/dist/{index-C4T-Iwf2.js → index-Bct_wnuo.js} +1 -1
  9. package/dist/{index-DqHG1ZHV.js → index-C224Udi8.js} +23 -23
  10. package/dist/{index-BO7SiaLV.js → index-CIJqvnFA.js} +1 -1
  11. package/dist/{index-D1l9GCRW.js → index-CX2cFxuX.js} +1 -1
  12. package/dist/{index-B1j6fp-M.js → index-CYBw60pI.js} +1 -1
  13. package/dist/{index-CnOP0bgr.js → index-CsRn_u6H.js} +1 -1
  14. package/dist/{index-CXcSzQ2x.js → index-CuuzC521.js} +1 -1
  15. package/dist/{index-CNtFMBWW.js → index-D51b4TnU.js} +1 -1
  16. package/dist/{index-0eLSwhoo.js → index-D9TRH-Hw.js} +1 -1
  17. package/dist/{index-9oE0WWCw.js → index-DEh2ngM_.js} +1 -1
  18. package/dist/{index-UaQq8TIN.js → index-DqYnHYrl.js} +1 -1
  19. package/dist/{index-CBIHWFr7.js → index-ZqqMo5Ox.js} +2 -2
  20. package/dist/{index-Dy34b3gZ.js → index-aCoqRfTl.js} +1 -1
  21. package/dist/{index-BSnV0RXL.js → index-jLxbiWrV.js} +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/lib/src/messaging/deserialization/video/h264.d.ts +7 -0
  24. package/dist/lib/src/messaging/deserialization/video/h264.d.ts.map +1 -1
  25. package/dist/lib/src/messaging/deserialization/video/h264.js +52 -22
  26. package/dist/lib/src/messaging/deserialization/video/h264.js.map +1 -1
  27. package/dist/lib/src/messaging/deserialization/video/h265.d.ts +7 -0
  28. package/dist/lib/src/messaging/deserialization/video/h265.d.ts.map +1 -1
  29. package/dist/lib/src/messaging/deserialization/video/h265.js +66 -19
  30. package/dist/lib/src/messaging/deserialization/video/h265.js.map +1 -1
  31. package/dist/lib/src/output.css +1 -1
  32. package/package.json +1 -1
@@ -797,12 +797,17 @@ function ensureWebCodecsSupported(target) {
797
797
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
798
798
 
799
799
  const logger$2 = Logger.getLogger();
800
- function configureDecoder(decoder) {
800
+ function configureDecoder$1(decoder) {
801
801
  decoder.configure({
802
802
  codec: "avc1.42001E",
803
803
  optimizeForLatency: true
804
804
  });
805
805
  }
806
+ function ensureDecoderConfigured$1(decoder) {
807
+ if (decoder.state === "unconfigured") {
808
+ configureDecoder$1(decoder);
809
+ }
810
+ }
806
811
  function closeDecoder$1(decoder) {
807
812
  if (!decoder) {
808
813
  return;
@@ -821,11 +826,43 @@ function closeTopicDecoder$1(topic, topicDecoders) {
821
826
  closeDecoder$1(decoderInfo === null || decoderInfo === void 0 ? void 0 : decoderInfo.decoder);
822
827
  decoderInfo === null || decoderInfo === void 0 || decoderInfo.timing.clear();
823
828
  decoderInfo === null || decoderInfo === void 0 || decoderInfo.transformations.clear();
829
+ if (decoderInfo) {
830
+ decoderInfo.pendingFrame = undefined;
831
+ }
824
832
  }
825
833
  function isIgnorableInitialDecodeError(error) {
826
834
  const message = error instanceof Error ? error.message : String(error);
827
835
  return message.includes("A key frame is required after configure() or flush()");
828
836
  }
837
+ function decodePendingFrame$1(topic, topicDecoders, onError) {
838
+ const decoderInfo = topicDecoders.get(topic);
839
+ if (!decoderInfo || decoderInfo.decoder.state === "closed" || decoderInfo.decoder.decodeQueueSize > 0) {
840
+ return;
841
+ }
842
+ const pendingFrame = decoderInfo.pendingFrame;
843
+ if (!pendingFrame) {
844
+ return;
845
+ }
846
+ decoderInfo.pendingFrame = undefined;
847
+ decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
848
+ decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
849
+ try {
850
+ ensureDecoderConfigured$1(decoderInfo.decoder);
851
+ const chunk = new EncodedVideoChunk({
852
+ type: "key",
853
+ data: pendingFrame.data,
854
+ timestamp: pendingFrame.timestamp
855
+ });
856
+ decoderInfo.decoder.decode(chunk);
857
+ } catch (error) {
858
+ if (isIgnorableInitialDecodeError(error)) {
859
+ closeTopicDecoder$1(topic, topicDecoders);
860
+ return;
861
+ }
862
+ closeTopicDecoder$1(topic, topicDecoders);
863
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
864
+ }
865
+ }
829
866
  function packedToI420(packed, width, height, stride, format, cropLeft = 0, cropTop = 0) {
830
867
  if ((width & 1) !== 0 || (height & 1) !== 0) {
831
868
  throw new Error("I420 requires even width and height.");
@@ -940,7 +977,7 @@ function createVideoDecoder$1({
940
977
  let hasProducedFrame = false;
941
978
  return new VideoDecoder({
942
979
  output: async frame => {
943
- var _visibleRect$width, _visibleRect$height, _visibleRect$x, _visibleRect$y, _topicDecoders$get$ti, _topicDecoders$get, _topicDecoders$get2, _topicDecoders$get3;
980
+ var _visibleRect$width, _visibleRect$height, _visibleRect$x, _visibleRect$y, _topicDecoders$get$ti, _topicDecoders$get, _topicDecoders$get2, _topicDecoders$get3, _topicDecoders$get4;
944
981
  hasProducedFrame = true;
945
982
  const visibleRect = frame.visibleRect;
946
983
  const frameWidth = (_visibleRect$width = visibleRect === null || visibleRect === void 0 ? void 0 : visibleRect.width) !== null && _visibleRect$width !== void 0 ? _visibleRect$width : frame.codedWidth;
@@ -984,8 +1021,9 @@ function createVideoDecoder$1({
984
1021
  logger$2.warn("H264 decoder received unexpected frame format:", frame.format);
985
1022
  }
986
1023
  const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$get = topicDecoders.get(topic)) === null || _topicDecoders$get === void 0 ? void 0 : _topicDecoders$get.timing.get(frame.timestamp)) !== null && _topicDecoders$get$ti !== void 0 ? _topicDecoders$get$ti : dist.fromMicros(frame.timestamp);
987
- const transformation = (_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 ? void 0 : _topicDecoders$get2.transformations.get(frame.timestamp);
988
- (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 || _topicDecoders$get3.transformations.delete(frame.timestamp);
1024
+ (_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 || _topicDecoders$get2.timing.delete(frame.timestamp);
1025
+ const transformation = (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 ? void 0 : _topicDecoders$get3.transformations.get(frame.timestamp);
1026
+ (_topicDecoders$get4 = topicDecoders.get(topic)) === null || _topicDecoders$get4 === void 0 || _topicDecoders$get4.transformations.delete(frame.timestamp);
989
1027
  const foxgloveMessage = {
990
1028
  timestamp: receiveTime,
991
1029
  frame_id: `h264-${topic}-frame`,
@@ -1004,6 +1042,7 @@ function createVideoDecoder$1({
1004
1042
  depthaiTransformation: transformation
1005
1043
  });
1006
1044
  frame.close();
1045
+ decodePendingFrame$1(topic, topicDecoders, onError);
1007
1046
  },
1008
1047
  error: error => {
1009
1048
  if (!hasProducedFrame && isIgnorableInitialDecodeError(error)) {
@@ -1040,7 +1079,7 @@ async function deserializeEncodedFrameH264({
1040
1079
  onError
1041
1080
  });
1042
1081
  try {
1043
- configureDecoder(decoder);
1082
+ configureDecoder$1(decoder);
1044
1083
  } catch (error) {
1045
1084
  closeDecoder$1(decoder);
1046
1085
  onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to configure H.264 decoder."));
@@ -1050,18 +1089,21 @@ async function deserializeEncodedFrameH264({
1050
1089
  existingDecoderInfo.decoder = decoder;
1051
1090
  existingDecoderInfo.timing.clear();
1052
1091
  existingDecoderInfo.transformations.clear();
1092
+ existingDecoderInfo.pendingFrame = undefined;
1053
1093
  } else {
1054
1094
  topicDecoders.set(topic, {
1055
1095
  decoder,
1056
1096
  timing: new Map(),
1057
- transformations: new Map()
1097
+ transformations: new Map(),
1098
+ pendingFrame: undefined
1058
1099
  });
1059
1100
  }
1060
1101
  } else if (existingDecoderInfo.decoder.state === "unconfigured") {
1061
1102
  try {
1062
- configureDecoder(existingDecoderInfo.decoder);
1103
+ ensureDecoderConfigured$1(existingDecoderInfo.decoder);
1063
1104
  existingDecoderInfo.timing.clear();
1064
1105
  existingDecoderInfo.transformations.clear();
1106
+ existingDecoderInfo.pendingFrame = undefined;
1065
1107
  } catch (error) {
1066
1108
  closeTopicDecoder$1(topic, topicDecoders);
1067
1109
  onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.264 decoder."));
@@ -1072,31 +1114,19 @@ async function deserializeEncodedFrameH264({
1072
1114
  if (!decoderInfo) {
1073
1115
  return;
1074
1116
  }
1075
- if (decoderInfo.decoder.decodeQueueSize > 60) {
1076
- decoderInfo.decoder.reset();
1077
- decoderInfo.timing.clear();
1078
- decoderInfo.transformations.clear();
1079
- return;
1080
- }
1081
1117
  const microTimestamp = receiveTime.sec * 1000000 + Math.floor(receiveTime.nsec / 1000);
1082
- decoderInfo.timing.set(microTimestamp, receiveTime);
1083
- decoderInfo.transformations.set(microTimestamp, message.transformation);
1084
1118
  const frame = {
1085
- type: 'key',
1086
1119
  data: message.data,
1087
- timestamp: microTimestamp
1120
+ timestamp: microTimestamp,
1121
+ receiveTime,
1122
+ transformation: message.transformation
1088
1123
  };
1089
- try {
1090
- const chunk = new EncodedVideoChunk(frame);
1091
- decoderInfo.decoder.decode(chunk);
1092
- } catch (error) {
1093
- if (isIgnorableInitialDecodeError(error)) {
1094
- closeTopicDecoder$1(topic, topicDecoders);
1095
- return;
1096
- }
1097
- closeTopicDecoder$1(topic, topicDecoders);
1098
- onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
1124
+ if (decoderInfo.decoder.decodeQueueSize > 0) {
1125
+ decoderInfo.pendingFrame = frame;
1126
+ return;
1099
1127
  }
1128
+ decoderInfo.pendingFrame = frame;
1129
+ decodePendingFrame$1(topic, topicDecoders, onError);
1100
1130
  }
1101
1131
 
1102
1132
  // This Source Code Form is subject to the terms of the Mozilla Public
@@ -1104,6 +1134,17 @@ async function deserializeEncodedFrameH264({
1104
1134
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
1105
1135
 
1106
1136
  const logger$1 = Logger.getLogger();
1137
+ function configureDecoder(decoder) {
1138
+ decoder.configure({
1139
+ codec: "hev1.1.6.L93.B0",
1140
+ optimizeForLatency: true
1141
+ });
1142
+ }
1143
+ function ensureDecoderConfigured(decoder) {
1144
+ if (decoder.state === "unconfigured") {
1145
+ configureDecoder(decoder);
1146
+ }
1147
+ }
1107
1148
  function closeDecoder(decoder) {
1108
1149
  if (!decoder) {
1109
1150
  return;
@@ -1122,6 +1163,34 @@ function closeTopicDecoder(topic, topicDecoders) {
1122
1163
  closeDecoder(decoderInfo === null || decoderInfo === void 0 ? void 0 : decoderInfo.decoder);
1123
1164
  decoderInfo === null || decoderInfo === void 0 || decoderInfo.timing.clear();
1124
1165
  decoderInfo === null || decoderInfo === void 0 || decoderInfo.transformations.clear();
1166
+ if (decoderInfo) {
1167
+ decoderInfo.pendingFrame = undefined;
1168
+ }
1169
+ }
1170
+ function decodePendingFrame(topic, topicDecoders, onError) {
1171
+ const decoderInfo = topicDecoders.get(topic);
1172
+ if (!decoderInfo || decoderInfo.decoder.state === "closed" || decoderInfo.decoder.decodeQueueSize > 0) {
1173
+ return;
1174
+ }
1175
+ const pendingFrame = decoderInfo.pendingFrame;
1176
+ if (!pendingFrame) {
1177
+ return;
1178
+ }
1179
+ decoderInfo.pendingFrame = undefined;
1180
+ decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
1181
+ decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
1182
+ try {
1183
+ ensureDecoderConfigured(decoderInfo.decoder);
1184
+ const chunk = new EncodedVideoChunk({
1185
+ type: "key",
1186
+ data: pendingFrame.data,
1187
+ timestamp: pendingFrame.timestamp
1188
+ });
1189
+ decoderInfo.decoder.decode(chunk);
1190
+ } catch (error) {
1191
+ closeTopicDecoder(topic, topicDecoders);
1192
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
1193
+ }
1125
1194
  }
1126
1195
  function createVideoDecoder({
1127
1196
  topic,
@@ -1131,12 +1200,13 @@ function createVideoDecoder({
1131
1200
  }) {
1132
1201
  return new VideoDecoder({
1133
1202
  output: async frame => {
1134
- var _topicDecoders$get$ti, _topicDecoders$get, _topicDecoders$get2, _topicDecoders$get3;
1203
+ var _topicDecoders$get$ti, _topicDecoders$get, _topicDecoders$get2, _topicDecoders$get3, _topicDecoders$get4;
1135
1204
  const buffer = new Uint8Array(frame.allocationSize());
1136
1205
  await frame.copyTo(buffer);
1137
1206
  const receiveTime = (_topicDecoders$get$ti = (_topicDecoders$get = topicDecoders.get(topic)) === null || _topicDecoders$get === void 0 ? void 0 : _topicDecoders$get.timing.get(frame.timestamp)) !== null && _topicDecoders$get$ti !== void 0 ? _topicDecoders$get$ti : dist.fromMicros(frame.timestamp);
1138
- const transformation = (_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 ? void 0 : _topicDecoders$get2.transformations.get(frame.timestamp);
1139
- (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 || _topicDecoders$get3.transformations.delete(frame.timestamp);
1207
+ (_topicDecoders$get2 = topicDecoders.get(topic)) === null || _topicDecoders$get2 === void 0 || _topicDecoders$get2.timing.delete(frame.timestamp);
1208
+ const transformation = (_topicDecoders$get3 = topicDecoders.get(topic)) === null || _topicDecoders$get3 === void 0 ? void 0 : _topicDecoders$get3.transformations.get(frame.timestamp);
1209
+ (_topicDecoders$get4 = topicDecoders.get(topic)) === null || _topicDecoders$get4 === void 0 || _topicDecoders$get4.transformations.delete(frame.timestamp);
1140
1210
  const [encoding, step] = parsePixelFormat(frame.format);
1141
1211
  const foxgloveMessage = {
1142
1212
  timestamp: receiveTime,
@@ -1156,6 +1226,7 @@ function createVideoDecoder({
1156
1226
  depthaiTransformation: transformation
1157
1227
  });
1158
1228
  frame.close();
1229
+ decodePendingFrame(topic, topicDecoders, onError);
1159
1230
  },
1160
1231
  error: error => {
1161
1232
  logger$1.error(error);
@@ -1187,10 +1258,7 @@ async function deserializeEncodedFrameH265({
1187
1258
  onError
1188
1259
  });
1189
1260
  try {
1190
- decoder.configure({
1191
- codec: "hev1.1.6.L93.B0",
1192
- optimizeForLatency: true
1193
- });
1261
+ configureDecoder(decoder);
1194
1262
  } catch (error) {
1195
1263
  closeDecoder(decoder);
1196
1264
  onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to configure H.265 decoder."));
@@ -1200,37 +1268,44 @@ async function deserializeEncodedFrameH265({
1200
1268
  existingDecoderInfo.decoder = decoder;
1201
1269
  existingDecoderInfo.timing.clear();
1202
1270
  existingDecoderInfo.transformations.clear();
1271
+ existingDecoderInfo.pendingFrame = undefined;
1203
1272
  } else {
1204
1273
  topicDecoders.set(topic, {
1205
1274
  decoder,
1206
1275
  timing: new Map(),
1207
- transformations: new Map()
1276
+ transformations: new Map(),
1277
+ pendingFrame: undefined
1208
1278
  });
1209
1279
  }
1280
+ } else if (existingDecoderInfo.decoder.state === "unconfigured") {
1281
+ try {
1282
+ ensureDecoderConfigured(existingDecoderInfo.decoder);
1283
+ existingDecoderInfo.timing.clear();
1284
+ existingDecoderInfo.transformations.clear();
1285
+ existingDecoderInfo.pendingFrame = undefined;
1286
+ } catch (error) {
1287
+ closeTopicDecoder(topic, topicDecoders);
1288
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.265 decoder."));
1289
+ return;
1290
+ }
1210
1291
  }
1211
1292
  const decoderInfo = topicDecoders.get(topic);
1212
1293
  if (!decoderInfo) {
1213
1294
  return;
1214
1295
  }
1215
- if (decoderInfo.decoder.decodeQueueSize > 60) {
1216
- decoderInfo.decoder.reset();
1217
- return;
1218
- }
1219
1296
  const microTimestamp = receiveTime.sec * 1000000 + Math.floor(receiveTime.nsec / 1000);
1220
- decoderInfo.timing.set(microTimestamp, receiveTime);
1221
- decoderInfo.transformations.set(microTimestamp, message.transformation);
1222
1297
  const frame = {
1223
- type: 'key',
1224
1298
  data: message.data,
1225
- timestamp: microTimestamp
1299
+ timestamp: microTimestamp,
1300
+ receiveTime,
1301
+ transformation: message.transformation
1226
1302
  };
1227
- try {
1228
- const chunk = new EncodedVideoChunk(frame);
1229
- decoderInfo.decoder.decode(chunk);
1230
- } catch (error) {
1231
- closeTopicDecoder(topic, topicDecoders);
1232
- onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
1303
+ if (decoderInfo.decoder.decodeQueueSize > 0) {
1304
+ decoderInfo.pendingFrame = frame;
1305
+ return;
1233
1306
  }
1307
+ decoderInfo.pendingFrame = frame;
1308
+ decodePendingFrame(topic, topicDecoders, onError);
1234
1309
  }
1235
1310
 
1236
1311
  // This Source Code Form is subject to the terms of the Mozilla Public
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-DqHG1ZHV.js';
2
+ import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, T as foldNodeProp, af as bracketMatchingHandle, X as LanguageSupport, aa as EditorView, a1 as syntaxTree, ab as EditorSelection } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, T as foldNodeProp, a5 as foldInside, Q as indentNodeProp, R as continuedIndent, ae as defineCSSCompletionSource, X as LanguageSupport } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -4,7 +4,7 @@ import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Compo
4
4
  import { createRoot } from 'react-dom/client';
5
5
  import { a0 as isSymbol, a1 as toString, a2 as keys, a3 as getSymbols$1, a4 as stubArray, a5 as arrayPush, a6 as baseGetAllKeys, h as getTag, a7 as getAllKeys, l as baseGet, f as baseIteratee, k as castPath, t as toKey, a8 as arrayMap$1, a9 as useCurrentLayoutActions, aa as useCurrentLayoutSelector, r as reportError, A as AppError, ab as usePanelMosaicId, ac as noop$4, L as Logger, ad as useSelectedPanels, p as getPanelTypeFromId, N as useShallowMemo, T as TAB_PANEL_TYPE, K as filterMap, d as dist$2, ae as useAppConfiguration, af as useJsonTreeTheme } from './depth-DlC6A3Te.js';
6
6
  import { createStore, useStore } from 'zustand';
7
- import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-DqHG1ZHV.js';
7
+ import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, m as murmur2, P as PropTypes, _ as _objectWithoutPropertiesLoose$1, E as ErrorDisplay, S as Stack$1, a as makeStyles$1, u as useTranslation, d as usePanelCatalog, e as EmptyState, i as isEmpty, h as PanelContext, j as PanelCatalogContext, k as usePanelStateStore, l as difference, n as usePanelContext, o as useMessagePipeline, v as v4, p as useDefaultPanelTitle, q as useHoverValue, r as useSetHoverValue, s as useClearHoverValue, t as useMessagePipelineGetter, w as usePanelSettingsTreeUpdate, x as PlayerCapabilities, y as assertNever, z as PlayerPresence, B as isEqual, C as AppEvent, D as isDesktopApp, F as createTheme, G as propTypesExports, H as DEFAULT_CAMERA_STATE$1, I as format$1, J as stringType, K as serializeError, L as stringify$1, M as createIntl, N as createIntlCache, O as useAnalytics } from './index-C224Udi8.js';
8
8
  import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, d as _objectWithoutProperties, e as _extends$1, f as commonjsGlobal, g as getDefaultExportFromCjs, b as _objectSpread2, i as getAugmentedNamespace, j as _asyncIterator } from './protobuf-Be0G3NFz.js';
9
9
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
10
10
  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, inputBaseClasses, autocompleteClasses, inputClasses, Checkbox, dialogActionsClasses, filledInputClasses, inputAdornmentClasses, listSubheaderClasses, selectClasses, tableCellClasses, ThemeProvider as ThemeProvider$1, tabsClasses as tabsClasses$1, tabClasses, Tabs, Tab, ListItemIcon } from '@mui/material';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, ac as html, X as LanguageSupport, ad as parseMixed } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DqHG1ZHV.js';
2
+ import { U as styleTags, V as tags, ag as javascriptLanguage, W as LRLanguage, X as LanguageSupport, Z as LRParser, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DqHG1ZHV.js';
2
+ import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, a7 as snippetCompletion, a1 as syntaxTree, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, $ as ifNotIn, a0 as completeFromList, a8 as IterMode, a9 as NodeWeakMap } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -29,7 +29,7 @@ import { defineGlobalStyles, defineTokens as defineTokens$1, defineKeyframes, de
29
29
 
30
30
  var e=[],t$1=[];function n$1(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t$1[u]={}),a=t$1[u]&&t$1[u][s]?t$1[u][s]:t$1[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
31
31
 
32
- var css$b = "/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-700: oklch(0.373 0.034 259.733);\n --color-white: #fff;\n --spacing: 0.25rem;\n --font-weight-semibold: 600;\n --radius-lg: 0.5rem;\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .static {\n position: static;\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .end {\n inset-inline-end: var(--spacing);\n }\n .ml-auto {\n margin-left: auto;\n }\n .flex {\n display: flex;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[60\\%\\%\\] {\n max-width: 60%%;\n }\n .grow {\n flex-grow: 1;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-start {\n align-items: flex-start;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#d3d3d3d9\\] {\n border-color: #d3d3d3d9;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .text-\\[14px\\]\\/\\[14px\\] {\n font-size: 14px;\n line-height: 14px;\n }\n .text-\\[20px\\]\\/\\[20px\\] {\n font-size: 20px;\n line-height: 20px;\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-nowrap {\n text-wrap: nowrap;\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .xl\\:flex-row {\n @media (width >= 80rem) {\n flex-direction: row;\n }\n }\n .xl\\:items-end {\n @media (width >= 80rem) {\n align-items: flex-end;\n }\n }\n .xl\\:pb-\\[2px\\] {\n @media (width >= 80rem) {\n padding-bottom: 2px;\n }\n }\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-outline-style: solid;\n }\n }\n}\n";
32
+ var css$b = "/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-700: oklch(0.373 0.034 259.733);\n --color-white: #fff;\n --spacing: 0.25rem;\n --font-weight-semibold: 600;\n --radius-lg: 0.5rem;\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .static {\n position: static;\n }\n .start {\n inset-inline-start: var(--spacing);\n }\n .end {\n inset-inline-end: var(--spacing);\n }\n .ml-auto {\n margin-left: auto;\n }\n .flex {\n display: flex;\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[60\\%\\%\\] {\n max-width: 60%%;\n }\n .grow {\n flex-grow: 1;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-start {\n align-items: flex-start;\n }\n .overflow-hidden {\n overflow: hidden;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#d3d3d3d9\\] {\n border-color: #d3d3d3d9;\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .text-\\[14px\\]\\/\\[14px\\] {\n font-size: 14px;\n line-height: 14px;\n }\n .text-\\[20px\\]\\/\\[20px\\] {\n font-size: 20px;\n line-height: 20px;\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .text-nowrap {\n text-wrap: nowrap;\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .xl\\:flex-row {\n @media (width >= 80rem) {\n flex-direction: row;\n }\n }\n .xl\\:items-end {\n @media (width >= 80rem) {\n align-items: flex-end;\n }\n }\n .xl\\:pb-\\[2px\\] {\n @media (width >= 80rem) {\n padding-bottom: 2px;\n }\n }\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-font-weight: initial;\n --tw-outline-style: solid;\n }\n }\n}\n";
33
33
  n$1(css$b,{});
34
34
 
35
35
  // This Source Code Form is subject to the terms of the Mozilla Public
@@ -975,7 +975,7 @@ ConfigStore.instance = void 0;
975
975
 
976
976
  var _localStorage$getItem;
977
977
  function initWorker(callback) {
978
- const worker = new Worker(new URL("deserialization.worker-B0hsW-Sx.js", import.meta.url), {
978
+ const worker = new Worker(new URL("deserialization.worker-qrd_6Vrz.js", import.meta.url), {
979
979
  type: "module",
980
980
  name: `message-decoder`
981
981
  });
@@ -88702,7 +88702,7 @@ function legacy(parser) {
88702
88702
  return new LanguageSupport(StreamLanguage.define(parser));
88703
88703
  }
88704
88704
  function sql$1(dialectName) {
88705
- return import('./index-BO7SiaLV.js').then(m => m.sql({ dialect: m[dialectName] }));
88705
+ return import('./index-CIJqvnFA.js').then(m => m.sql({ dialect: m[dialectName] }));
88706
88706
  }
88707
88707
  /**
88708
88708
  An array of language descriptions for known language packages.
@@ -88713,7 +88713,7 @@ const languages = [
88713
88713
  name: "C",
88714
88714
  extensions: ["c", "h", "ino"],
88715
88715
  load() {
88716
- return import('./index-0eLSwhoo.js').then(m => m.cpp());
88716
+ return import('./index-D9TRH-Hw.js').then(m => m.cpp());
88717
88717
  }
88718
88718
  }),
88719
88719
  /*@__PURE__*/LanguageDescription.of({
@@ -88721,7 +88721,7 @@ const languages = [
88721
88721
  alias: ["cpp"],
88722
88722
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
88723
88723
  load() {
88724
- return import('./index-0eLSwhoo.js').then(m => m.cpp());
88724
+ return import('./index-D9TRH-Hw.js').then(m => m.cpp());
88725
88725
  }
88726
88726
  }),
88727
88727
  /*@__PURE__*/LanguageDescription.of({
@@ -88741,7 +88741,7 @@ const languages = [
88741
88741
  name: "Go",
88742
88742
  extensions: ["go"],
88743
88743
  load() {
88744
- return import('./index-C4T-Iwf2.js').then(m => m.go());
88744
+ return import('./index-Bct_wnuo.js').then(m => m.go());
88745
88745
  }
88746
88746
  }),
88747
88747
  /*@__PURE__*/LanguageDescription.of({
@@ -88756,7 +88756,7 @@ const languages = [
88756
88756
  name: "Java",
88757
88757
  extensions: ["java"],
88758
88758
  load() {
88759
- return import('./index-CNtFMBWW.js').then(m => m.java());
88759
+ return import('./index-D51b4TnU.js').then(m => m.java());
88760
88760
  }
88761
88761
  }),
88762
88762
  /*@__PURE__*/LanguageDescription.of({
@@ -88771,7 +88771,7 @@ const languages = [
88771
88771
  name: "Jinja",
88772
88772
  extensions: ["j2", "jinja", "jinja2"],
88773
88773
  load() {
88774
- return import('./index-CnOP0bgr.js').then(m => m.jinja());
88774
+ return import('./index-CsRn_u6H.js').then(m => m.jinja());
88775
88775
  }
88776
88776
  }),
88777
88777
  /*@__PURE__*/LanguageDescription.of({
@@ -88779,7 +88779,7 @@ const languages = [
88779
88779
  alias: ["json5"],
88780
88780
  extensions: ["json", "map"],
88781
88781
  load() {
88782
- return import('./index-UaQq8TIN.js').then(m => m.json());
88782
+ return import('./index-DqYnHYrl.js').then(m => m.json());
88783
88783
  }
88784
88784
  }),
88785
88785
  /*@__PURE__*/LanguageDescription.of({
@@ -88793,14 +88793,14 @@ const languages = [
88793
88793
  name: "LESS",
88794
88794
  extensions: ["less"],
88795
88795
  load() {
88796
- return import('./index-BSnV0RXL.js').then(m => m.less());
88796
+ return import('./index-jLxbiWrV.js').then(m => m.less());
88797
88797
  }
88798
88798
  }),
88799
88799
  /*@__PURE__*/LanguageDescription.of({
88800
88800
  name: "Liquid",
88801
88801
  extensions: ["liquid"],
88802
88802
  load() {
88803
- return import('./index-TrCYoTV2.js').then(m => m.liquid());
88803
+ return import('./index-BYfR1cyF.js').then(m => m.liquid());
88804
88804
  }
88805
88805
  }),
88806
88806
  /*@__PURE__*/LanguageDescription.of({
@@ -88826,7 +88826,7 @@ const languages = [
88826
88826
  name: "PHP",
88827
88827
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
88828
88828
  load() {
88829
- return import('./index-CR3UTuQX.js').then(m => m.php());
88829
+ return import('./index-BRRz2Qr2.js').then(m => m.php());
88830
88830
  }
88831
88831
  }),
88832
88832
  /*@__PURE__*/LanguageDescription.of({
@@ -88843,28 +88843,28 @@ const languages = [
88843
88843
  extensions: ["BUILD", "bzl", "py", "pyw"],
88844
88844
  filename: /^(BUCK|BUILD)$/,
88845
88845
  load() {
88846
- return import('./index-Dy34b3gZ.js').then(m => m.python());
88846
+ return import('./index-aCoqRfTl.js').then(m => m.python());
88847
88847
  }
88848
88848
  }),
88849
88849
  /*@__PURE__*/LanguageDescription.of({
88850
88850
  name: "Rust",
88851
88851
  extensions: ["rs"],
88852
88852
  load() {
88853
- return import('./index-CXcSzQ2x.js').then(m => m.rust());
88853
+ return import('./index-CuuzC521.js').then(m => m.rust());
88854
88854
  }
88855
88855
  }),
88856
88856
  /*@__PURE__*/LanguageDescription.of({
88857
88857
  name: "Sass",
88858
88858
  extensions: ["sass"],
88859
88859
  load() {
88860
- return import('./index-lZAws6q7.js').then(m => m.sass({ indented: true }));
88860
+ return import('./index-B7AEFuPp.js').then(m => m.sass({ indented: true }));
88861
88861
  }
88862
88862
  }),
88863
88863
  /*@__PURE__*/LanguageDescription.of({
88864
88864
  name: "SCSS",
88865
88865
  extensions: ["scss"],
88866
88866
  load() {
88867
- return import('./index-lZAws6q7.js').then(m => m.sass());
88867
+ return import('./index-B7AEFuPp.js').then(m => m.sass());
88868
88868
  }
88869
88869
  }),
88870
88870
  /*@__PURE__*/LanguageDescription.of({
@@ -88895,7 +88895,7 @@ const languages = [
88895
88895
  name: "WebAssembly",
88896
88896
  extensions: ["wat", "wast"],
88897
88897
  load() {
88898
- return import('./index-D1l9GCRW.js').then(m => m.wast());
88898
+ return import('./index-CX2cFxuX.js').then(m => m.wast());
88899
88899
  }
88900
88900
  }),
88901
88901
  /*@__PURE__*/LanguageDescription.of({
@@ -88903,7 +88903,7 @@ const languages = [
88903
88903
  alias: ["rss", "wsdl", "xsd"],
88904
88904
  extensions: ["xml", "xsl", "xsd", "svg"],
88905
88905
  load() {
88906
- return import('./index-CZ8-lPGF.js').then(m => m.xml());
88906
+ return import('./index-B4osw0hO.js').then(m => m.xml());
88907
88907
  }
88908
88908
  }),
88909
88909
  /*@__PURE__*/LanguageDescription.of({
@@ -88911,7 +88911,7 @@ const languages = [
88911
88911
  alias: ["yml"],
88912
88912
  extensions: ["yaml", "yml"],
88913
88913
  load() {
88914
- return import('./index-9oE0WWCw.js').then(m => m.yaml());
88914
+ return import('./index-DEh2ngM_.js').then(m => m.yaml());
88915
88915
  }
88916
88916
  }),
88917
88917
  // Legacy modes ported from CodeMirror 5
@@ -89700,13 +89700,13 @@ const languages = [
89700
89700
  name: "Vue",
89701
89701
  extensions: ["vue"],
89702
89702
  load() {
89703
- return import('./index-B1j6fp-M.js').then(m => m.vue());
89703
+ return import('./index-CYBw60pI.js').then(m => m.vue());
89704
89704
  }
89705
89705
  }),
89706
89706
  /*@__PURE__*/LanguageDescription.of({
89707
89707
  name: "Angular Template",
89708
89708
  load() {
89709
- return import('./index-Bxh1wmW1.js').then(m => m.angular());
89709
+ return import('./index-BT5QPxw9.js').then(m => m.angular());
89710
89710
  }
89711
89711
  })
89712
89712
  ];
@@ -174760,7 +174760,7 @@ function createRenderDelaySampler() {
174760
174760
  };
174761
174761
  }
174762
174762
 
174763
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CBIHWFr7.js'));
174763
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-ZqqMo5Ox.js'));
174764
174764
  const ImagePanelBody = ({
174765
174765
  topic,
174766
174766
  frameRenderedEvent,
@@ -174855,7 +174855,7 @@ const DEFAULT_CAMERA_STATE = {
174855
174855
  // License, v2.0. If a copy of the MPL was not distributed with this
174856
174856
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
174857
174857
 
174858
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CKj_YAej.js'));
174858
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-B8amzXr1.js'));
174859
174859
  const PointCloudPanelBody = ({
174860
174860
  topic,
174861
174861
  frameRenderedEvent,
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-DqHG1ZHV.js';
2
+ import { Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Y as ExternalTokenizer, Z as LRParser, $ as ifNotIn, a0 as completeFromList, a1 as syntaxTree } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-DqHG1ZHV.js';
2
+ import { W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, U as styleTags, V as tags, X as LanguageSupport, Z as LRParser } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-DqHG1ZHV.js';
2
+ import { U as styleTags, V as tags, W as LRLanguage, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, ac as html, ad as parseMixed, ag as javascriptLanguage } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-DqHG1ZHV.js';
2
+ import { aa as EditorView, ab as EditorSelection, W as LRLanguage, U as styleTags, V as tags, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, X as LanguageSupport, Z as LRParser, a2 as LocalTokenGroup, a1 as syntaxTree, ac as html, ad as parseMixed, Y as ExternalTokenizer } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DqHG1ZHV.js';
2
+ import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, a2 as LocalTokenGroup, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, a3 as flatIndent, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-DqHG1ZHV.js';
2
+ import { a6 as ContextTracker, Y as ExternalTokenizer, U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, ad as parseMixed } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-DqHG1ZHV.js';
2
+ import { U as styleTags, V as tags, Z as LRParser, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { ImagePanel } from './index-CKj_YAej.js';
2
+ import { ImagePanel } from './index-B8amzXr1.js';
3
3
  import 'react';
4
4
  import 'react-dom/client';
5
5
  import './depth-DlC6A3Te.js';
@@ -10,7 +10,7 @@ import 'zustand';
10
10
  import 'react-mosaic-component';
11
11
  import '@mui/material';
12
12
  import './isArrayLikeObject-n9ytTioB.js';
13
- import './index-DqHG1ZHV.js';
13
+ import './index-C224Udi8.js';
14
14
  import './utils-DmlHZWuo.js';
15
15
  import './FoxgloveServer-B98MHUu6.js';
16
16
  import 'ms';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-DqHG1ZHV.js';
2
+ import { Y as ExternalTokenizer, a6 as ContextTracker, U as styleTags, V as tags, Z as LRParser, a1 as syntaxTree, $ as ifNotIn, W as LRLanguage, Q as indentNodeProp, a4 as delimitedIndent, T as foldNodeProp, a5 as foldInside, X as LanguageSupport, a8 as IterMode, a0 as completeFromList, a9 as NodeWeakMap, a7 as snippetCompletion } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-DqHG1ZHV.js';
2
+ import { U as styleTags, V as tags, W as LRLanguage, Q as indentNodeProp, R as continuedIndent, T as foldNodeProp, a5 as foldInside, ae as defineCSSCompletionSource, X as LanguageSupport, Z as LRParser, Y as ExternalTokenizer } from './index-C224Udi8.js';
3
3
  import './protobuf-Be0G3NFz.js';
4
4
  import './logger-Bqy1nuLj.js';
5
5
  import './depth-DlC6A3Te.js';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-DqHG1ZHV.js';
2
+ export { ar as FrameStore, ak as ImagePanel, aj as PanelLayout, al as PointCloudPanel, ah as VisualizerConnection, ai as VisualizerContext, am as constructKeyForTopicRenderMetrics, as as getIMUEventEmitter, ao as globalDecodeMetricsManager, an as globalInputEventMetricsManager, ap as globalRenderMetricsManager, aq as globalThroughputMetricsManager } from './index-C224Udi8.js';
3
3
  export { S as getDistanceFromDepthDataForOffset } from './depth-DlC6A3Te.js';
4
4
  import './protobuf-Be0G3NFz.js';
5
5
  import './logger-Bqy1nuLj.js';
@@ -6,7 +6,14 @@ export type TopicDecoders = Map<string, {
6
6
  decoder: VideoDecoder;
7
7
  timing: Map<number, Timestamp>;
8
8
  transformations: Map<number, ImgTransformation | undefined>;
9
+ pendingFrame?: PendingFrame;
9
10
  }>;
11
+ type PendingFrame = {
12
+ data: Uint8Array;
13
+ timestamp: number;
14
+ receiveTime: Timestamp;
15
+ transformation: ImgTransformation | undefined;
16
+ };
10
17
  type DeserializeEncodedFrameH264Args = {
11
18
  topic: string;
12
19
  message: EncodedFrame | ImgFrame;
@@ -1 +1 @@
1
- {"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAQrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;CAC7D,CACF,CAAC;AAmUF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FjD"}
1
+ {"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAQrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CACF,CAAC;AAWF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC/C,CAAC;AA8WF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EjD"}
@@ -14,6 +14,11 @@ function configureDecoder(decoder) {
14
14
  optimizeForLatency: true,
15
15
  });
16
16
  }
17
+ function ensureDecoderConfigured(decoder) {
18
+ if (decoder.state === "unconfigured") {
19
+ configureDecoder(decoder);
20
+ }
21
+ }
17
22
  function closeDecoder(decoder) {
18
23
  if (!decoder) {
19
24
  return;
@@ -33,11 +38,44 @@ function closeTopicDecoder(topic, topicDecoders) {
33
38
  closeDecoder(decoderInfo?.decoder);
34
39
  decoderInfo?.timing.clear();
35
40
  decoderInfo?.transformations.clear();
41
+ if (decoderInfo) {
42
+ decoderInfo.pendingFrame = undefined;
43
+ }
36
44
  }
37
45
  function isIgnorableInitialDecodeError(error) {
38
46
  const message = error instanceof Error ? error.message : String(error);
39
47
  return message.includes("A key frame is required after configure() or flush()");
40
48
  }
49
+ function decodePendingFrame(topic, topicDecoders, onError) {
50
+ const decoderInfo = topicDecoders.get(topic);
51
+ if (!decoderInfo || decoderInfo.decoder.state === "closed" || decoderInfo.decoder.decodeQueueSize > 0) {
52
+ return;
53
+ }
54
+ const pendingFrame = decoderInfo.pendingFrame;
55
+ if (!pendingFrame) {
56
+ return;
57
+ }
58
+ decoderInfo.pendingFrame = undefined;
59
+ decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
60
+ decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
61
+ try {
62
+ ensureDecoderConfigured(decoderInfo.decoder);
63
+ const chunk = new EncodedVideoChunk({
64
+ type: "key",
65
+ data: pendingFrame.data,
66
+ timestamp: pendingFrame.timestamp,
67
+ });
68
+ decoderInfo.decoder.decode(chunk);
69
+ }
70
+ catch (error) {
71
+ if (isIgnorableInitialDecodeError(error)) {
72
+ closeTopicDecoder(topic, topicDecoders);
73
+ return;
74
+ }
75
+ closeTopicDecoder(topic, topicDecoders);
76
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
77
+ }
78
+ }
41
79
  function packedToI420(packed, width, height, stride, format, cropLeft = 0, cropTop = 0) {
42
80
  if ((width & 1) !== 0 || (height & 1) !== 0) {
43
81
  throw new Error("I420 requires even width and height.");
@@ -197,6 +235,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
197
235
  const receiveTime = topicDecoders.get(topic)?.timing.get(frame.timestamp)
198
236
  ??
199
237
  fromMicros(frame.timestamp);
238
+ topicDecoders.get(topic)?.timing.delete(frame.timestamp);
200
239
  const transformation = topicDecoders.get(topic)?.transformations.get(frame.timestamp);
201
240
  topicDecoders.get(topic)?.transformations.delete(frame.timestamp);
202
241
  const foxgloveMessage = {
@@ -217,6 +256,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
217
256
  depthaiTransformation: transformation,
218
257
  });
219
258
  frame.close();
259
+ decodePendingFrame(topic, topicDecoders, onError);
220
260
  },
221
261
  error: (error) => {
222
262
  if (!hasProducedFrame && isIgnorableInitialDecodeError(error)) {
@@ -251,20 +291,23 @@ export async function deserializeEncodedFrameH264({ topic, message, topicDecoder
251
291
  existingDecoderInfo.decoder = decoder;
252
292
  existingDecoderInfo.timing.clear();
253
293
  existingDecoderInfo.transformations.clear();
294
+ existingDecoderInfo.pendingFrame = undefined;
254
295
  }
255
296
  else {
256
297
  topicDecoders.set(topic, {
257
298
  decoder,
258
299
  timing: new Map(),
259
300
  transformations: new Map(),
301
+ pendingFrame: undefined,
260
302
  });
261
303
  }
262
304
  }
263
305
  else if (existingDecoderInfo.decoder.state === "unconfigured") {
264
306
  try {
265
- configureDecoder(existingDecoderInfo.decoder);
307
+ ensureDecoderConfigured(existingDecoderInfo.decoder);
266
308
  existingDecoderInfo.timing.clear();
267
309
  existingDecoderInfo.transformations.clear();
310
+ existingDecoderInfo.pendingFrame = undefined;
268
311
  }
269
312
  catch (error) {
270
313
  closeTopicDecoder(topic, topicDecoders);
@@ -276,31 +319,18 @@ export async function deserializeEncodedFrameH264({ topic, message, topicDecoder
276
319
  if (!decoderInfo) {
277
320
  return;
278
321
  }
279
- if (decoderInfo.decoder.decodeQueueSize > 60) {
280
- decoderInfo.decoder.reset();
281
- decoderInfo.timing.clear();
282
- decoderInfo.transformations.clear();
283
- return;
284
- }
285
322
  const microTimestamp = receiveTime.sec * 1_000_000 + Math.floor(receiveTime.nsec / 1_000);
286
- decoderInfo.timing.set(microTimestamp, receiveTime);
287
- decoderInfo.transformations.set(microTimestamp, message.transformation);
288
323
  const frame = {
289
- type: 'key',
290
324
  data: message.data,
291
- timestamp: microTimestamp
325
+ timestamp: microTimestamp,
326
+ receiveTime,
327
+ transformation: message.transformation,
292
328
  };
293
- try {
294
- const chunk = new EncodedVideoChunk(frame);
295
- decoderInfo.decoder.decode(chunk);
296
- }
297
- catch (error) {
298
- if (isIgnorableInitialDecodeError(error)) {
299
- closeTopicDecoder(topic, topicDecoders);
300
- return;
301
- }
302
- closeTopicDecoder(topic, topicDecoders);
303
- onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.264 frame."));
329
+ if (decoderInfo.decoder.decodeQueueSize > 0) {
330
+ decoderInfo.pendingFrame = frame;
331
+ return;
304
332
  }
333
+ decoderInfo.pendingFrame = frame;
334
+ decodePendingFrame(topic, topicDecoders, onError);
305
335
  }
306
336
  //# sourceMappingURL=h264.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,14 @@ export type TopicDecoders = Map<string, {
6
6
  decoder: VideoDecoder;
7
7
  timing: Map<number, Timestamp>;
8
8
  transformations: Map<number, ImgTransformation | undefined>;
9
+ pendingFrame?: PendingFrame;
9
10
  }>;
11
+ type PendingFrame = {
12
+ data: Uint8Array;
13
+ timestamp: number;
14
+ receiveTime: Timestamp;
15
+ transformation: ImgTransformation | undefined;
16
+ };
10
17
  type DeserializeEncodedFrameH265Args = {
11
18
  topic: string;
12
19
  message: EncodedFrame | ImgFrame;
@@ -1 +1 @@
1
- {"version":3,"file":"h265.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AA+BrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;CAC7D,CACF,CAAC;AA2DF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjD"}
1
+ {"version":3,"file":"h265.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AA+CrF,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CACF,CAAC;AASF,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC/C,CAAC;AA4FF,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EjD"}
@@ -8,6 +8,17 @@ import { DecoderRuntimeError } from "../../../utils/error.js";
8
8
  import { Logger } from "../../../utils/logger";
9
9
  import { parseMessage, parsePixelFormat } from "../../utils.js";
10
10
  const logger = Logger.getLogger();
11
+ function configureDecoder(decoder) {
12
+ decoder.configure({
13
+ codec: "hev1.1.6.L93.B0",
14
+ optimizeForLatency: true,
15
+ });
16
+ }
17
+ function ensureDecoderConfigured(decoder) {
18
+ if (decoder.state === "unconfigured") {
19
+ configureDecoder(decoder);
20
+ }
21
+ }
11
22
  function closeDecoder(decoder) {
12
23
  if (!decoder) {
13
24
  return;
@@ -27,6 +38,35 @@ function closeTopicDecoder(topic, topicDecoders) {
27
38
  closeDecoder(decoderInfo?.decoder);
28
39
  decoderInfo?.timing.clear();
29
40
  decoderInfo?.transformations.clear();
41
+ if (decoderInfo) {
42
+ decoderInfo.pendingFrame = undefined;
43
+ }
44
+ }
45
+ function decodePendingFrame(topic, topicDecoders, onError) {
46
+ const decoderInfo = topicDecoders.get(topic);
47
+ if (!decoderInfo || decoderInfo.decoder.state === "closed" || decoderInfo.decoder.decodeQueueSize > 0) {
48
+ return;
49
+ }
50
+ const pendingFrame = decoderInfo.pendingFrame;
51
+ if (!pendingFrame) {
52
+ return;
53
+ }
54
+ decoderInfo.pendingFrame = undefined;
55
+ decoderInfo.timing.set(pendingFrame.timestamp, pendingFrame.receiveTime);
56
+ decoderInfo.transformations.set(pendingFrame.timestamp, pendingFrame.transformation);
57
+ try {
58
+ ensureDecoderConfigured(decoderInfo.decoder);
59
+ const chunk = new EncodedVideoChunk({
60
+ type: "key",
61
+ data: pendingFrame.data,
62
+ timestamp: pendingFrame.timestamp,
63
+ });
64
+ decoderInfo.decoder.decode(chunk);
65
+ }
66
+ catch (error) {
67
+ closeTopicDecoder(topic, topicDecoders);
68
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
69
+ }
30
70
  }
31
71
  function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
32
72
  return new VideoDecoder({
@@ -36,6 +76,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
36
76
  const receiveTime = topicDecoders.get(topic)?.timing.get(frame.timestamp)
37
77
  ??
38
78
  fromMicros(frame.timestamp);
79
+ topicDecoders.get(topic)?.timing.delete(frame.timestamp);
39
80
  const transformation = topicDecoders.get(topic)?.transformations.get(frame.timestamp);
40
81
  topicDecoders.get(topic)?.transformations.delete(frame.timestamp);
41
82
  const [encoding, step] = parsePixelFormat(frame.format);
@@ -57,6 +98,7 @@ function createVideoDecoder({ topic, callback, topicDecoders, onError, }) {
57
98
  depthaiTransformation: transformation,
58
99
  });
59
100
  frame.close();
101
+ decodePendingFrame(topic, topicDecoders, onError);
60
102
  },
61
103
  error: (error) => {
62
104
  logger.error(error);
@@ -75,10 +117,7 @@ export async function deserializeEncodedFrameH265({ topic, message, topicDecoder
75
117
  if (!existingDecoderInfo || existingDecoderInfo.decoder.state === "closed") {
76
118
  const decoder = createVideoDecoder({ topic, callback, topicDecoders, onError });
77
119
  try {
78
- decoder.configure({
79
- codec: "hev1.1.6.L93.B0",
80
- optimizeForLatency: true
81
- });
120
+ configureDecoder(decoder);
82
121
  }
83
122
  catch (error) {
84
123
  closeDecoder(decoder);
@@ -89,38 +128,46 @@ export async function deserializeEncodedFrameH265({ topic, message, topicDecoder
89
128
  existingDecoderInfo.decoder = decoder;
90
129
  existingDecoderInfo.timing.clear();
91
130
  existingDecoderInfo.transformations.clear();
131
+ existingDecoderInfo.pendingFrame = undefined;
92
132
  }
93
133
  else {
94
134
  topicDecoders.set(topic, {
95
135
  decoder,
96
136
  timing: new Map(),
97
137
  transformations: new Map(),
138
+ pendingFrame: undefined,
98
139
  });
99
140
  }
100
141
  }
142
+ else if (existingDecoderInfo.decoder.state === "unconfigured") {
143
+ try {
144
+ ensureDecoderConfigured(existingDecoderInfo.decoder);
145
+ existingDecoderInfo.timing.clear();
146
+ existingDecoderInfo.transformations.clear();
147
+ existingDecoderInfo.pendingFrame = undefined;
148
+ }
149
+ catch (error) {
150
+ closeTopicDecoder(topic, topicDecoders);
151
+ onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to reconfigure H.265 decoder."));
152
+ return;
153
+ }
154
+ }
101
155
  const decoderInfo = topicDecoders.get(topic);
102
156
  if (!decoderInfo) {
103
157
  return;
104
158
  }
105
- if (decoderInfo.decoder.decodeQueueSize > 60) {
106
- decoderInfo.decoder.reset();
107
- return;
108
- }
109
159
  const microTimestamp = receiveTime.sec * 1_000_000 + Math.floor(receiveTime.nsec / 1_000);
110
- decoderInfo.timing.set(microTimestamp, receiveTime);
111
- decoderInfo.transformations.set(microTimestamp, message.transformation);
112
160
  const frame = {
113
- type: 'key',
114
161
  data: message.data,
115
- timestamp: microTimestamp
162
+ timestamp: microTimestamp,
163
+ receiveTime,
164
+ transformation: message.transformation,
116
165
  };
117
- try {
118
- const chunk = new EncodedVideoChunk(frame);
119
- decoderInfo.decoder.decode(chunk);
120
- }
121
- catch (error) {
122
- closeTopicDecoder(topic, topicDecoders);
123
- onError(new DecoderRuntimeError(topic, error instanceof Error ? error.message : "Failed to decode H.265 frame."));
166
+ if (decoderInfo.decoder.decodeQueueSize > 0) {
167
+ decoderInfo.pendingFrame = frame;
168
+ return;
124
169
  }
170
+ decoderInfo.pendingFrame = frame;
171
+ decodePendingFrame(topic, topicDecoders, onError);
125
172
  }
126
173
  //# sourceMappingURL=h265.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"h265.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"h265.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h265.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxonis/visualizer-protobuf",
3
- "version": "3.1.5",
3
+ "version": "3.1.7",
4
4
  "type": "module",
5
5
  "description": "RobotHub Visualizer Library",
6
6
  "author": "Luxonis Corp",