@luxonis/visualizer-protobuf 3.1.3 → 3.1.4

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 (53) hide show
  1. package/dist/{FoxgloveServer-B98MHUu6.js → FoxgloveServer-Z9mJitqG.js} +1 -1
  2. package/dist/{communicator-Bzkx3Qfr.js → communicator-t3uE4_km.js} +1 -1
  3. package/dist/{depth-DlC6A3Te.js → depth-Ct_zm8Rq.js} +92 -92
  4. package/dist/{deserialization.worker-B0hsW-Sx.js → deserialization.worker-DvXlnMzb.js} +3 -3
  5. package/dist/{foxglove-protocol-yHdoBNaD.js → foxglove-protocol-DTBud3kT.js} +1 -1
  6. package/dist/{index-CAgbkwe6.js → index-1D5S7eR3.js} +88 -23
  7. package/dist/{index-BKgVLcTw.js → index-4r5XO2hY.js} +5 -5
  8. package/dist/{index-Dqm1x8G2.js → index-BEfrzxM3.js} +1 -1
  9. package/dist/{index-deVCx3vy.js → index-BWUFvnnr.js} +1383 -144
  10. package/dist/{index-yMt81xls.js → index-C-rWRmE5.js} +5 -5
  11. package/dist/{index-Bt_uFFS7.js → index-CEJd4Yuv.js} +5 -5
  12. package/dist/{index-B7pVdy1y.js → index-C_Rypho5.js} +7 -7
  13. package/dist/{index-TLrt2q2Z.js → index-CfSbEMmb.js} +5 -5
  14. package/dist/{index-Bk_C_6fe.js → index-CrogdRc3.js} +5 -5
  15. package/dist/{index-BY-ER3Px.js → index-CtcRTdcC.js} +5 -5
  16. package/dist/{index-yLs0wQ5Z.js → index-D4NfQEba.js} +5 -5
  17. package/dist/{index-CZgHF8IG.js → index-DRTvKm-0.js} +5 -5
  18. package/dist/{index-BWEGuIck.js → index-DUpgA7e6.js} +5 -5
  19. package/dist/{index-B4QJRCC8.js → index-DXHvsHzl.js} +5 -5
  20. package/dist/{index-CUAKp56t.js → index-Dgmw82OA.js} +5 -5
  21. package/dist/{index-DZMcM1se.js → index-DnPkbSwI.js} +5 -5
  22. package/dist/{index-DHaV44R1.js → index-DpfKCYgk.js} +5 -5
  23. package/dist/{index-CoSfKtTh.js → index-DrXETBmj.js} +5 -5
  24. package/dist/{index-BIOeAcXP.js → index-I7fQaE0_.js} +5 -5
  25. package/dist/{index-BkjTw3VS.js → index-Xp6XXYGL.js} +5 -5
  26. package/dist/{index-D0csatt1.js → index-Z2_pOHuN.js} +5 -5
  27. package/dist/index.js +5 -5
  28. package/dist/lib/src/protobuf.generated/EncodedFrame.js +1 -1
  29. package/dist/lib/src/protobuf.generated/EncodedFrame.js.map +1 -1
  30. package/dist/lib/src/protobuf.generated/Event.js +1 -1
  31. package/dist/lib/src/protobuf.generated/Event.js.map +1 -1
  32. package/dist/lib/src/protobuf.generated/IMUData.js +1 -1
  33. package/dist/lib/src/protobuf.generated/IMUData.js.map +1 -1
  34. package/dist/lib/src/protobuf.generated/ImageAnnotations.js +1 -1
  35. package/dist/lib/src/protobuf.generated/ImageAnnotations.js.map +1 -1
  36. package/dist/lib/src/protobuf.generated/ImgDetections.js +1 -1
  37. package/dist/lib/src/protobuf.generated/ImgDetections.js.map +1 -1
  38. package/dist/lib/src/protobuf.generated/ImgFrame.js +1 -1
  39. package/dist/lib/src/protobuf.generated/ImgFrame.js.map +1 -1
  40. package/dist/lib/src/protobuf.generated/PointCloudData.js +1 -1
  41. package/dist/lib/src/protobuf.generated/PointCloudData.js.map +1 -1
  42. package/dist/lib/src/protobuf.generated/RGBDData.js +1 -1
  43. package/dist/lib/src/protobuf.generated/RGBDData.js.map +1 -1
  44. package/dist/lib/src/protobuf.generated/SegmentationMask.js +1 -1
  45. package/dist/lib/src/protobuf.generated/SegmentationMask.js.map +1 -1
  46. package/dist/lib/src/protobuf.generated/SpatialImgDetections.js +1 -1
  47. package/dist/lib/src/protobuf.generated/SpatialImgDetections.js.map +1 -1
  48. package/dist/lib/src/protobuf.generated/common.js +1 -1
  49. package/dist/lib/src/protobuf.generated/common.js.map +1 -1
  50. package/dist/{protobuf-Be0G3NFz.js → protobuf-BQPUfAzh.js} +8 -8
  51. package/dist/{worker-NFznpx6V.js → worker-ChcSJthL.js} +3 -3
  52. package/dist/{worker-0Q6os6Ck.js → worker-IhN8LKNl.js} +4 -4
  53. package/package.json +2 -2
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, b as _objectSpread2, p as protobufsBySchema, c as protobufSchemaNameToType, g as getDefaultExportFromCjs, d as _objectWithoutProperties$2, e as _extends$2, f as commonjsGlobal } from './protobuf-Be0G3NFz.js';
2
+ import { _ as _classPrivateFieldLooseBase, a as _classPrivateFieldLooseKey, b as _objectSpread2, p as protobufsBySchema, c as protobufSchemaNameToType, g as getDefaultExportFromCjs, d as _objectWithoutProperties$2, e as _extends$2, f as commonjsGlobal } from './protobuf-BQPUfAzh.js';
3
3
  import { L as Logger } from './logger-Bqy1nuLj.js';
4
- import { d as dist$1, e as estimateObjectSize, c as createDecodingError, r as reportError, A as AppError, b as baseFlatten, a as baseEach, f as baseIteratee, g as baseDifference, h as getTag, i as baseKeys, j as baseIsEqual, k as castPath, t as toKey, l as baseGet, m as hasIn, s as sendNotification, n as shallowequal, u as useGuaranteedContext, o as getPanelIdsInsideTabPanels, p as getPanelTypeFromId, T as TAB_PANEL_TYPE, q as removePanelFromTabPanel, v as getPanelIdForType, w as getPathFromNode, x as updateTabPanelLayout, y as getSaveConfigsPayloadForAddedPanel, z as replaceAndRemovePanels, B as inlineTabPanelLayouts, C as getAllPanelIds, D as DEFAULT_TAB_PANEL_CONFIG, E as getConfigsForNestedPanelsInsideTab, F as reorderTabWithinTabPanel, G as moveTabBetweenTabPanels, H as isTabPanelConfig, I as addPanelToTab, J as createAddUpdates, K as filterMap, L as Logger$1, M as uniq$2, N as useShallowMemo, O as CurrentLayoutContext, P as MessageOrderTracker, Q as AppConfigurationContext, R as DecodingError } from './depth-DlC6A3Te.js';
4
+ import { L as Logger$1, d as dist$1, c as createDecodingError, r as reportError, A as AppError, b as baseFlatten, a as baseEach, e 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, D as DEFAULT_TAB_PANEL_CONFIG, C as getConfigsForNestedPanelsInsideTab, E as reorderTabWithinTabPanel, F as moveTabBetweenTabPanels, G as isTabPanelConfig, H as addPanelToTab, I as createAddUpdates, J as filterMap, K as uniq$2, M as useShallowMemo, N as CurrentLayoutContext, O as MessageOrderTracker, P as AppConfigurationContext, Q as DecodingError } from './depth-Ct_zm8Rq.js';
5
5
  import { w as wrap$3, r as releaseProxy, p as proxy } from './comlink-jf8bdrAf.js';
6
6
  import { u as uint8ArrayToUint16Array } from './utils-DmlHZWuo.js';
7
- import { B as BinaryOpcode } from './FoxgloveServer-B98MHUu6.js';
7
+ import { B as BinaryOpcode } from './FoxgloveServer-Z9mJitqG.js';
8
8
  import * as React$1 from 'react';
9
9
  import React__default, { useRef, useMemo, createContext, useContext, forwardRef, createElement, useState, Component, useCallback, useEffect, useLayoutEffect, useReducer, useImperativeHandle, Fragment as Fragment$1, Suspense } from 'react';
10
- import { p as parseFoxgloveMessage } from './foxglove-protocol-yHdoBNaD.js';
10
+ import { p as parseFoxgloveMessage } from './foxglove-protocol-DTBud3kT.js';
11
11
  import { DndProvider } from 'react-dnd';
12
12
  import { HTML5Backend } from 'react-dnd-html5-backend';
13
13
  import { getLeaves, createRemoveUpdate, updateTree, createHideUpdate, createDragToUpdates, getNodeAtPath, MosaicContext, MosaicWindowContext } from 'react-mosaic-component';
@@ -18,7 +18,7 @@ import { getContrastRatio, lighten, darken } from '@mui/system/colorManipulator'
18
18
  import require$$1 from 'object-assign';
19
19
  import { createStore, useStore } from 'zustand';
20
20
  import { s as setToString, o as overRest, i as isArray$1, b as baseRest, a as isArrayLikeObject, c as isArrayLike, d as isBuffer$1, e as isTypedArray, f as isArguments, g as isPrototype, h as isObject$4, j as isIndex } from './isArrayLikeObject-n9ytTioB.js';
21
- import { jsx as jsx$2, Fragment, jsxs } from 'react/jsx-runtime';
21
+ import { jsx as jsx$2, jsxs, Fragment } from 'react/jsx-runtime';
22
22
  import * as ReactDOM from 'react-dom';
23
23
  import ReactDOM__default from 'react-dom';
24
24
  import 'react-icons';
@@ -513,6 +513,90 @@ class Condvar {
513
513
  // License, v2.0. If a copy of the MPL was not distributed with this
514
514
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
515
515
 
516
+ const log$7 = Logger$1.getLogger("src/index.ts");
517
+ /**
518
+ * Values of the contants below are a (more or less) informed guesses and not guaranteed to be accurate.
519
+ */
520
+ const COMPRESSED_POINTER_SIZE = 4; // Pointers use 4 bytes (also on 64-bit systems) due to pointer compression
521
+ const OBJECT_BASE_SIZE = 3 * COMPRESSED_POINTER_SIZE; // 3 compressed pointers
522
+ // Arrays have an additional length property (1 pointer) and a backing store header (2 pointers)
523
+ // See https://stackoverflow.com/a/70550693.
524
+ const ARRAY_BASE_SIZE = OBJECT_BASE_SIZE + 3 * COMPRESSED_POINTER_SIZE;
525
+ const TYPED_ARRAY_BASE_SIZE = 25 * COMPRESSED_POINTER_SIZE; // byteLength, byteOffset, ..., see https://stackoverflow.com/a/45808835
526
+ const SMALL_INTEGER_SIZE = COMPRESSED_POINTER_SIZE; // Small integers (up to 31 bits), pointer tagging
527
+ const HEAP_NUMBER_SIZE = 8 + 2 * COMPRESSED_POINTER_SIZE; // 4-byte map pointer + 8-byte payload + property pointer
528
+ const MAX_NUM_FAST_PROPERTIES = 1020;
529
+
530
+ /**
531
+ * Estimate the size in bytes of an arbitrary object or primitive.
532
+ * @param obj Object or primitive to estimate the size for
533
+ * @returns Estimated size in bytes
534
+ */
535
+ function estimateObjectSize(obj) {
536
+ // catches null and undefined
537
+ // typeof null == "object"
538
+ if (obj == undefined) {
539
+ return SMALL_INTEGER_SIZE;
540
+ }
541
+ switch (typeof obj) {
542
+ case "undefined":
543
+ case "boolean":
544
+ {
545
+ return SMALL_INTEGER_SIZE;
546
+ }
547
+ case "number":
548
+ {
549
+ return Number.isInteger(obj) ? SMALL_INTEGER_SIZE : HEAP_NUMBER_SIZE;
550
+ }
551
+ case "bigint":
552
+ {
553
+ return HEAP_NUMBER_SIZE;
554
+ }
555
+ case "string":
556
+ {
557
+ // The string length is rounded up to the next multiple of 4.
558
+ return COMPRESSED_POINTER_SIZE + OBJECT_BASE_SIZE + Math.ceil(obj.length / 4) * 4;
559
+ }
560
+ case "object":
561
+ {
562
+ if (Array.isArray(obj)) {
563
+ return COMPRESSED_POINTER_SIZE + ARRAY_BASE_SIZE + Object.values(obj).reduce((acc, val) => acc + estimateObjectSize(val), 0);
564
+ } else if (ArrayBuffer.isView(obj)) {
565
+ return TYPED_ARRAY_BASE_SIZE + obj.byteLength;
566
+ } else if (obj instanceof Set) {
567
+ return COMPRESSED_POINTER_SIZE + OBJECT_BASE_SIZE + Array.from(obj.values()).reduce((acc, val) => acc + estimateObjectSize(val), 0);
568
+ } else if (obj instanceof Map) {
569
+ return COMPRESSED_POINTER_SIZE + OBJECT_BASE_SIZE + Array.from(obj.entries()).reduce((acc, [key, val]) => acc + estimateObjectSize(key) + estimateObjectSize(val), 0);
570
+ }
571
+ let propertiesSize = 0;
572
+ const numProps = Object.keys(obj).length;
573
+ if (numProps > MAX_NUM_FAST_PROPERTIES) {
574
+ // If there are too many properties, V8 stores Objects in dictionary mode (slow properties)
575
+ // with each object having a self-contained dictionary. This dictionary contains the key, value
576
+ // and details of properties. Below we estimate the size of this additional dictionary. Formula
577
+ // adapted from
578
+ // medium.com/@bpmxmqd/v8-engine-jsobject-structure-analysis-and-memory-optimization-ideas-be30cfcdcd16
579
+ const propertiesDictSize = 16 + 5 * 8 + 2 ** Math.ceil(Math.log2((numProps + 2) * 1.5)) * 3 * 4;
580
+ // In return, properties are no longer stored in the properties array, so we subtract that.
581
+ propertiesSize = propertiesDictSize - numProps * COMPRESSED_POINTER_SIZE;
582
+ }
583
+ const valuesSize = Object.values(obj).reduce((acc, val) => acc + estimateObjectSize(val), 0);
584
+ return OBJECT_BASE_SIZE + propertiesSize + valuesSize;
585
+ }
586
+ case "symbol":
587
+ case "function":
588
+ {
589
+ throw new Error(`Can't estimate size of type '${typeof obj}'`);
590
+ }
591
+ }
592
+ log$7.error(`Can't estimate size of type '${typeof obj}'`);
593
+ return SMALL_INTEGER_SIZE;
594
+ }
595
+
596
+ // This Source Code Form is subject to the terms of the Mozilla Public
597
+ // License, v2.0. If a copy of the MPL was not distributed with this
598
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
599
+
516
600
 
517
601
  /**
518
602
  * Wraps an instantiated `Worker` and exposes its API in the same way that `Comlink.wrap` does
@@ -975,7 +1059,7 @@ ConfigStore.instance = void 0;
975
1059
 
976
1060
  var _localStorage$getItem;
977
1061
  function initWorker(callback) {
978
- const worker = new Worker(new URL("deserialization.worker-B0hsW-Sx.js", import.meta.url), {
1062
+ const worker = new Worker(new URL("deserialization.worker-DvXlnMzb.js", import.meta.url), {
979
1063
  type: "module",
980
1064
  name: `message-decoder`
981
1065
  });
@@ -1612,7 +1696,6 @@ class EventEmitter {
1612
1696
  }
1613
1697
 
1614
1698
  function makeChunks(data, chunkSize = 16 * 1024) {
1615
- console.log("Creating chunks for data of size", data.byteLength, "with chunk size", chunkSize);
1616
1699
  const chunks = [];
1617
1700
  const overheadSize = 4 + 4; // totalChunks + chunkIndex
1618
1701
  const maxPayloadSize = chunkSize - overheadSize;
@@ -1682,7 +1765,6 @@ class WebRtcDataChannel {
1682
1765
  });
1683
1766
  }
1684
1767
  appendChunk(messageId, bytes) {
1685
- console.warn("Received chunk for message", messageId, "with size", bytes.byteLength);
1686
1768
  const buffer = this.buffers.get(messageId);
1687
1769
  const newBuffer = new Uint8Array((buffer?.byteLength ?? 0) + bytes.byteLength);
1688
1770
  if (buffer) {
@@ -18616,7 +18698,7 @@ const defaultLogger$1 = buildLogger$1('default', {
18616
18698
  format: parseLogFormat$1(globalThis.ENV?.LOG_FORMAT),
18617
18699
  runtime: globalThis.ENV?.RUNTIME ?? 'development',
18618
18700
  });
18619
- const log$4 = defaultLogger$1;
18701
+ const log$6 = defaultLogger$1;
18620
18702
  globalThis.log = defaultLogger$1;
18621
18703
 
18622
18704
  const customFormats$1 = {
@@ -18648,7 +18730,7 @@ const customFormats$1 = {
18648
18730
  };
18649
18731
  const onIntlError$1 = (error) => {
18650
18732
  if (typeof window !== 'undefined') {
18651
- log$4.fatal(error);
18733
+ log$6.fatal(error);
18652
18734
  }
18653
18735
  };
18654
18736
  const cache$2 = createIntlCache();
@@ -22313,7 +22395,7 @@ class WebRtcBridge extends ArtificialWorker {
22313
22395
  writable: true,
22314
22396
  value: null
22315
22397
  });
22316
- _classPrivateFieldLooseBase(this, _worker)[_worker] = new Worker(new URL("worker-0Q6os6Ck.js", import.meta.url), {
22398
+ _classPrivateFieldLooseBase(this, _worker)[_worker] = new Worker(new URL("worker-IhN8LKNl.js", import.meta.url), {
22317
22399
  type: "module"
22318
22400
  });
22319
22401
  _classPrivateFieldLooseBase(this, _setupArtificialWorker)[_setupArtificialWorker]();
@@ -22634,7 +22716,7 @@ class VisualizerConnection extends FoxgloveConnection {
22634
22716
  let _worker;
22635
22717
  if (type === "ws") {
22636
22718
  _classPrivateFieldLooseBase(this, _url)[_url] = data.connectionUrl;
22637
- _worker = new Worker(new URL("worker-NFznpx6V.js", import.meta.url), {
22719
+ _worker = new Worker(new URL("worker-ChcSJthL.js", import.meta.url), {
22638
22720
  type: "module"
22639
22721
  });
22640
22722
  } else {
@@ -26942,7 +27024,7 @@ n$1(css$a,{});
26942
27024
  var css$9 = "/* latin */\n@font-face {\n font-family: \"IBM Plex Mono\";\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(\"@foxglove/studio-base/styles/assets/PlexMono-Italic.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,\n U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n font-family: \"IBM Plex Mono\";\n font-style: italic;\n font-weight: 600;\n font-display: swap;\n src: url(\"@foxglove/studio-base/styles/assets/PlexMono-BoldItalic.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,\n U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n font-family: \"IBM Plex Mono\";\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(\"@foxglove/studio-base/styles/assets/PlexMono.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,\n U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* latin */\n@font-face {\n font-family: \"IBM Plex Mono\";\n font-style: normal;\n font-weight: 600;\n font-display: swap;\n src: url(\"@foxglove/studio-base/styles/assets/PlexMono-Bold.woff2\") format(\"woff2\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F,\n U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n";
26943
27025
  n$1(css$9,{});
26944
27026
 
26945
- const useStyles$3 = makeStyles()(({
27027
+ const useStyles$4 = makeStyles()(({
26946
27028
  palette,
26947
27029
  typography
26948
27030
  }) => ({
@@ -27147,14 +27229,14 @@ const useStyles$3 = makeStyles()(({
27147
27229
  function CssBaseline(props) {
27148
27230
  const {
27149
27231
  classes
27150
- } = useStyles$3();
27232
+ } = useStyles$4();
27151
27233
  return /*#__PURE__*/React__default.createElement("div", {
27152
27234
  className: classes.root
27153
27235
  }, props.children);
27154
27236
  }
27155
27237
 
27156
27238
  const _excluded$7 = ["alignItems", "alignSelf", "children", "className", "direction", "flex", "flexBasis", "flexGrow", "flexShrink", "flexWrap", "fullHeight", "fullWidth", "gap", "gapX", "gapY", "inline", "justifyContent", "order", "overflow", "overflowX", "overflowY", "padding", "paddingBottom", "paddingLeft", "paddingRight", "paddingTop", "paddingX", "paddingY", "paddingBlock", "paddingBlockStart", "paddingBlockEnd", "paddingInline", "paddingInlineStart", "paddingInlineEnd", "position", "style", "zeroMinWidth"];
27157
- const useStyles$2 = makeStyles({
27239
+ const useStyles$3 = makeStyles({
27158
27240
  name: "FoxgloveStack"
27159
27241
  })((theme, props) => ({
27160
27242
  root: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
@@ -27216,7 +27298,7 @@ const useStyles$2 = makeStyles({
27216
27298
  paddingInlineEnd: theme.spacing(props.paddingInlineEnd)
27217
27299
  })
27218
27300
  }));
27219
- var Stack$1 = /*#__PURE__*/forwardRef(function Stack(props, ref) {
27301
+ var Stack$2 = /*#__PURE__*/forwardRef(function Stack(props, ref) {
27220
27302
  const {
27221
27303
  alignItems,
27222
27304
  alignSelf,
@@ -27260,7 +27342,7 @@ var Stack$1 = /*#__PURE__*/forwardRef(function Stack(props, ref) {
27260
27342
  const {
27261
27343
  classes,
27262
27344
  cx
27263
- } = useStyles$2({
27345
+ } = useStyles$3({
27264
27346
  alignItems,
27265
27347
  alignSelf,
27266
27348
  direction,
@@ -27303,7 +27385,7 @@ var Stack$1 = /*#__PURE__*/forwardRef(function Stack(props, ref) {
27303
27385
  }, rest), children);
27304
27386
  });
27305
27387
 
27306
- const useStyles$1 = makeStyles()(theme => ({
27388
+ const useStyles$2 = makeStyles()(theme => ({
27307
27389
  grid: {
27308
27390
  display: "grid",
27309
27391
  gridTemplateRows: "auto 1fr auto",
@@ -27341,7 +27423,7 @@ function ErrorStacktrace({
27341
27423
  }) {
27342
27424
  const {
27343
27425
  classes
27344
- } = useStyles$1();
27426
+ } = useStyles$2();
27345
27427
  const lines = (hideSourceLocations ? sanitizeStack(stack) : stack).trim().replace(/^\s*at /gm, "").split("\n").map(line => line.trim());
27346
27428
  return /*#__PURE__*/React__default.createElement("pre", {
27347
27429
  className: classes.errorDetailStack
@@ -27359,7 +27441,7 @@ function ErrorDisplay(props) {
27359
27441
  var _props$showErrorDetai, _props$title;
27360
27442
  const {
27361
27443
  classes
27362
- } = useStyles$1();
27444
+ } = useStyles$2();
27363
27445
  const {
27364
27446
  error,
27365
27447
  errorInfo,
@@ -27390,10 +27472,10 @@ function ErrorDisplay(props) {
27390
27472
  }, [error, errorInfo, hideErrorSourceLocations, showErrorDetails]);
27391
27473
  return /*#__PURE__*/React__default.createElement("div", {
27392
27474
  className: classes.grid
27393
- }, /*#__PURE__*/React__default.createElement(Stack$1, {
27475
+ }, /*#__PURE__*/React__default.createElement(Stack$2, {
27394
27476
  gap: 2,
27395
27477
  paddingBottom: 2
27396
- }, /*#__PURE__*/React__default.createElement(Stack$1, null, /*#__PURE__*/React__default.createElement(Typography, {
27478
+ }, /*#__PURE__*/React__default.createElement(Stack$2, null, /*#__PURE__*/React__default.createElement(Typography, {
27397
27479
  variant: "h4",
27398
27480
  gutterBottom: true
27399
27481
  }, (_props$title = props.title) !== null && _props$title !== void 0 ? _props$title : "The app encountered an unexpected error"), /*#__PURE__*/React__default.createElement(Typography, {
@@ -27414,7 +27496,7 @@ function ErrorDisplay(props) {
27414
27496
  }, props.actions));
27415
27497
  }
27416
27498
 
27417
- class ErrorBoundary extends Component {
27499
+ let ErrorBoundary$1 = class ErrorBoundary extends Component {
27418
27500
  constructor(...args) {
27419
27501
  super(...args);
27420
27502
  this.state = {
@@ -27433,7 +27515,7 @@ class ErrorBoundary extends Component {
27433
27515
  render() {
27434
27516
  if (this.state.currentError) {
27435
27517
  var _this$props$actions;
27436
- const actions = (_this$props$actions = this.props.actions) !== null && _this$props$actions !== void 0 ? _this$props$actions : /*#__PURE__*/React__default.createElement(Stack$1, {
27518
+ const actions = (_this$props$actions = this.props.actions) !== null && _this$props$actions !== void 0 ? _this$props$actions : /*#__PURE__*/React__default.createElement(Stack$2, {
27437
27519
  fullHeight: true,
27438
27520
  flex: "auto",
27439
27521
  alignItems: "flex-end",
@@ -27466,7 +27548,7 @@ class ErrorBoundary extends Component {
27466
27548
  }
27467
27549
  return this.props.children;
27468
27550
  }
27469
- }
27551
+ };
27470
27552
 
27471
27553
  /** GlobalCss component configures html, body, and #root with theme elements */
27472
27554
  function GlobalCss() {
@@ -33539,7 +33621,7 @@ const moveTab = (panelsState, {
33539
33621
  });
33540
33622
  return savePanelConfigs(panelsState, saveConfigsPayload);
33541
33623
  };
33542
- const addPanel$1 = (panelsState, {
33624
+ const addPanel$3 = (panelsState, {
33543
33625
  tabId,
33544
33626
  id,
33545
33627
  config
@@ -33943,7 +34025,7 @@ function panelsReducer (panelsState, action) {
33943
34025
  case "MOVE_TAB":
33944
34026
  return moveTab(panelsState, action.payload);
33945
34027
  case "ADD_PANEL":
33946
- return addPanel$1(panelsState, action.payload);
34028
+ return addPanel$3(panelsState, action.payload);
33947
34029
  case "DROP_PANEL":
33948
34030
  return dropPanel(panelsState, action.payload);
33949
34031
  case "START_DRAG":
@@ -34297,7 +34379,7 @@ function IncompatibleLayoutVersionAlert(props) {
34297
34379
  }, "OK")));
34298
34380
  }
34299
34381
 
34300
- const log$3 = Logger$1.getLogger("src/index.ts");
34382
+ const log$5 = Logger$1.getLogger("src/index.ts");
34301
34383
  const MAX_SUPPORTED_LAYOUT_VERSION = 1;
34302
34384
 
34303
34385
  /**
@@ -34368,7 +34450,7 @@ function CurrentLayoutProvider({
34368
34450
  // The panel state did not change, so no need to perform layout state
34369
34451
  // updates or layout manager updates.
34370
34452
  if (isEqual(oldData, newData)) {
34371
- log$3.warn("Panel action resulted in identical config:", action);
34453
+ log$5.warn("Panel action resulted in identical config:", action);
34372
34454
  return;
34373
34455
  }
34374
34456
 
@@ -35100,7 +35182,7 @@ const VisualizerContext = /*#__PURE__*/React__default.memo(function VisualizerCo
35100
35182
  value: appConfiguration
35101
35183
  }, /*#__PURE__*/React__default.createElement(DndProvider, {
35102
35184
  backend: HTML5Backend
35103
- }, /*#__PURE__*/React__default.createElement(GlobalCss, null), /*#__PURE__*/React__default.createElement(CssBaseline, null, /*#__PURE__*/React__default.createElement(ErrorBoundary, null, /*#__PURE__*/React__default.createElement(TimelineInteractionStateProvider, null, /*#__PURE__*/React__default.createElement(CurrentLayoutProvider, null, /*#__PURE__*/React__default.createElement(ConnectionsProvider, {
35185
+ }, /*#__PURE__*/React__default.createElement(GlobalCss, null), /*#__PURE__*/React__default.createElement(CssBaseline, null, /*#__PURE__*/React__default.createElement(ErrorBoundary$1, null, /*#__PURE__*/React__default.createElement(TimelineInteractionStateProvider, null, /*#__PURE__*/React__default.createElement(CurrentLayoutProvider, null, /*#__PURE__*/React__default.createElement(ConnectionsProvider, {
35104
35186
  value: connections
35105
35187
  }, /*#__PURE__*/React__default.createElement(MessagePipelineProvider, null, /*#__PURE__*/React__default.createElement(EventsProvider, null, /*#__PURE__*/React__default.createElement(MosaicContext.Provider, {
35106
35188
  value: mosaicContext
@@ -35111,6 +35193,126 @@ const VisualizerContext = /*#__PURE__*/React__default.memo(function VisualizerCo
35111
35193
  }, /*#__PURE__*/React__default.createElement(PanelStateContextProvider, null, children)))))))))))));
35112
35194
  });
35113
35195
 
35196
+ const useStyles$1 = makeStyles({ name: "FoxgloveStack" })((theme, props) => ({
35197
+ root: {
35198
+ display: props.inline === true ? "inline-flex" : "flex",
35199
+ flexDirection: props.direction,
35200
+ flex: props.flex,
35201
+ flexBasis: props.flexBasis,
35202
+ flexShrink: props.flexShrink,
35203
+ flexGrow: props.flexGrow,
35204
+ flexWrap: props.flexWrap,
35205
+ justifyContent: props.justifyContent,
35206
+ alignItems: props.alignItems,
35207
+ alignContent: props.alignContent,
35208
+ alignSelf: props.alignSelf,
35209
+ order: props.order,
35210
+ overflow: props.overflow,
35211
+ overflowX: props.overflowX,
35212
+ overflowY: props.overflowY,
35213
+ position: props.position,
35214
+ ...(props.zeroMinWidth === true && {
35215
+ minWidth: 0,
35216
+ }),
35217
+ ...(props.fullHeight === true && {
35218
+ height: "100%",
35219
+ }),
35220
+ ...(props.fullWidth === true && {
35221
+ width: "100%",
35222
+ }),
35223
+ ...(props.gap != undefined && {
35224
+ gap: theme.spacing(props.gap),
35225
+ }),
35226
+ ...(props.gapX != undefined && {
35227
+ rowGap: theme.spacing(props.gapX),
35228
+ }),
35229
+ ...(props.gapY != undefined && {
35230
+ columnGap: theme.spacing(props.gapY),
35231
+ }),
35232
+ ...(props.padding != undefined && {
35233
+ padding: theme.spacing(props.padding),
35234
+ }),
35235
+ ...(props.paddingX != undefined && {
35236
+ paddingLeft: theme.spacing(props.paddingX),
35237
+ paddingRight: theme.spacing(props.paddingX),
35238
+ }),
35239
+ ...(props.paddingY != undefined && {
35240
+ paddingTop: theme.spacing(props.paddingY),
35241
+ paddingBottom: theme.spacing(props.paddingY),
35242
+ }),
35243
+ ...(props.paddingTop != undefined && {
35244
+ paddingTop: theme.spacing(props.paddingTop),
35245
+ }),
35246
+ ...(props.paddingBottom != undefined && {
35247
+ paddingBottom: theme.spacing(props.paddingBottom),
35248
+ }),
35249
+ ...(props.paddingLeft != undefined && {
35250
+ paddingLeft: theme.spacing(props.paddingLeft),
35251
+ }),
35252
+ ...(props.paddingRight != undefined && {
35253
+ paddingRight: theme.spacing(props.paddingRight),
35254
+ }),
35255
+ ...(props.paddingBlock != undefined && {
35256
+ paddingBlock: theme.spacing(props.paddingBlock),
35257
+ }),
35258
+ ...(props.paddingBlockStart != undefined && {
35259
+ paddingBlockStart: theme.spacing(props.paddingBlockStart),
35260
+ }),
35261
+ ...(props.paddingBlockEnd != undefined && {
35262
+ paddingBlockEnd: theme.spacing(props.paddingBlockEnd),
35263
+ }),
35264
+ ...(props.paddingInline != undefined && {
35265
+ paddingInline: theme.spacing(props.paddingInline),
35266
+ }),
35267
+ ...(props.paddingInlineStart != undefined && {
35268
+ paddingInlineStart: theme.spacing(props.paddingInlineStart),
35269
+ }),
35270
+ ...(props.paddingInlineEnd != undefined && {
35271
+ paddingInlineEnd: theme.spacing(props.paddingInlineEnd),
35272
+ }),
35273
+ },
35274
+ }));
35275
+ var Stack$1 = forwardRef(function Stack(props, ref) {
35276
+ const { alignItems, alignSelf, children, className, direction = "column", flex, flexBasis, flexGrow, flexShrink, flexWrap, fullHeight = false, fullWidth = false, gap, gapX, gapY, inline = false, justifyContent, order, overflow, overflowX, overflowY, padding, paddingBottom, paddingLeft, paddingRight, paddingTop, paddingX, paddingY, paddingBlock, paddingBlockStart, paddingBlockEnd, paddingInline, paddingInlineStart, paddingInlineEnd, position, style, zeroMinWidth = false, ...rest } = props;
35277
+ const { classes, cx } = useStyles$1({
35278
+ alignItems,
35279
+ alignSelf,
35280
+ direction,
35281
+ flex,
35282
+ flexBasis,
35283
+ flexGrow,
35284
+ flexShrink,
35285
+ flexWrap,
35286
+ fullHeight,
35287
+ fullWidth,
35288
+ gap,
35289
+ gapX,
35290
+ gapY,
35291
+ inline,
35292
+ justifyContent,
35293
+ order,
35294
+ overflow,
35295
+ overflowX,
35296
+ overflowY,
35297
+ padding,
35298
+ paddingBottom,
35299
+ paddingLeft,
35300
+ paddingRight,
35301
+ paddingTop,
35302
+ paddingX,
35303
+ paddingY,
35304
+ paddingBlock,
35305
+ paddingBlockStart,
35306
+ paddingBlockEnd,
35307
+ paddingInline,
35308
+ paddingInlineStart,
35309
+ paddingInlineEnd,
35310
+ position,
35311
+ zeroMinWidth,
35312
+ });
35313
+ return (jsx$2("div", { ref: ref, className: cx(classes.root, className), style: style, ...rest, children: children }));
35314
+ });
35315
+
35114
35316
  function _classCallCheck(a, n) {
35115
35317
  if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
35116
35318
  }
@@ -35494,7 +35696,7 @@ Browser.type = 'languageDetector';
35494
35696
  // License, v2.0. If a copy of the MPL was not distributed with this
35495
35697
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35496
35698
 
35497
- const addPanel = {
35699
+ const addPanel$2 = {
35498
35700
  addPanel: "Add panel",
35499
35701
  noLayoutSelected: "<selectLayoutLink>Select a layout</selectLayoutLink> to get started!",
35500
35702
  noPanelsMatchSearchCriteria: "No panels match search criteria.",
@@ -35506,7 +35708,7 @@ const addPanel = {
35506
35708
  // License, v2.0. If a copy of the MPL was not distributed with this
35507
35709
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35508
35710
 
35509
- const appBar = {
35711
+ const appBar$2 = {
35510
35712
  about: "About",
35511
35713
  addPanel: "Add panel",
35512
35714
  documentation: "Documentation",
@@ -35544,7 +35746,7 @@ const appBar = {
35544
35746
  // License, v2.0. If a copy of the MPL was not distributed with this
35545
35747
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35546
35748
 
35547
- const appSettings = {
35749
+ const appSettings$2 = {
35548
35750
  about: "About",
35549
35751
  advanced: "Advanced",
35550
35752
  askEachTime: "Ask each time",
@@ -35577,7 +35779,7 @@ const appSettings = {
35577
35779
  // License, v2.0. If a copy of the MPL was not distributed with this
35578
35780
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35579
35781
 
35580
- const dataSourceInfo = {
35782
+ const dataSourceInfo$2 = {
35581
35783
  currentSource: "Current source",
35582
35784
  dataSource: "Data source",
35583
35785
  duration: "Duration",
@@ -35590,7 +35792,7 @@ const dataSourceInfo = {
35590
35792
  // License, v2.0. If a copy of the MPL was not distributed with this
35591
35793
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35592
35794
 
35593
- const desktopWindow = {
35795
+ const desktopWindow$2 = {
35594
35796
  advanced: "Advanced",
35595
35797
  checkForUpdates: "Check for Updates…",
35596
35798
  edit: "Edit",
@@ -35607,7 +35809,7 @@ const desktopWindow = {
35607
35809
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35608
35810
 
35609
35811
  // Generic global translation
35610
- const general = {
35812
+ const general$2 = {
35611
35813
  foxglove: "Foxglove",
35612
35814
  learnMore: "Learn more",
35613
35815
  on: "On",
@@ -35619,7 +35821,7 @@ const general = {
35619
35821
  // License, v2.0. If a copy of the MPL was not distributed with this
35620
35822
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35621
35823
 
35622
- const incompatibleLayoutVersion = {
35824
+ const incompatibleLayoutVersion$2 = {
35623
35825
  desktopText: "This layout was created with a newer version of Foxglove Studio. Please update to the latest version at ",
35624
35826
  title: "Incompatible layout version",
35625
35827
  webText: "This layout was created with a newer version of Foxglove Studio. Please refresh your browser."
@@ -35629,7 +35831,7 @@ const incompatibleLayoutVersion = {
35629
35831
  // License, v2.0. If a copy of the MPL was not distributed with this
35630
35832
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35631
35833
 
35632
- const log$2 = {
35834
+ const log$4 = {
35633
35835
  hideAll: "Hide all",
35634
35836
  minLogLevel: "Log level",
35635
35837
  nameFilter: "Namespaces",
@@ -35642,7 +35844,7 @@ const log$2 = {
35642
35844
  // License, v2.0. If a copy of the MPL was not distributed with this
35643
35845
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35644
35846
 
35645
- const openDialog = {
35847
+ const openDialog$2 = {
35646
35848
  canBeShared: "Share data files, visualization layouts, and custom extensions with teammates",
35647
35849
  collaborateTitle: "Accelerate development with Foxglove",
35648
35850
  convenientWebInterface: "Use a convenient web interface to tag, search, and retrieve data at lightning speed",
@@ -35679,7 +35881,7 @@ const openDialog = {
35679
35881
  // License, v2.0. If a copy of the MPL was not distributed with this
35680
35882
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35681
35883
 
35682
- const panelConfigVersionGuard = {
35884
+ const panelConfigVersionGuard$2 = {
35683
35885
  instructions: "Please update to the latest version of the app.",
35684
35886
  warning: "This layout requires a more recent version of this panel."
35685
35887
  };
@@ -35688,7 +35890,7 @@ const panelConfigVersionGuard = {
35688
35890
  // License, v2.0. If a copy of the MPL was not distributed with this
35689
35891
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35690
35892
 
35691
- const panels = {
35893
+ const panels$2 = {
35692
35894
  "3D": "3D",
35693
35895
  "3DPanelDescription": "Display markers, camera images, meshes, URDFs, and more in a 3D scene.",
35694
35896
  callService: "Service Call",
@@ -35738,7 +35940,7 @@ const panels = {
35738
35940
  // License, v2.0. If a copy of the MPL was not distributed with this
35739
35941
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35740
35942
 
35741
- const panelSettings = {
35943
+ const panelSettings$2 = {
35742
35944
  currentSettingsPanelName: "{{title}} panel settings",
35743
35945
  importOrExportSettings: "Import/export settings",
35744
35946
  importOrExportSettingsWithEllipsis: "Import/export settings…",
@@ -35755,7 +35957,7 @@ const panelSettings = {
35755
35957
  // License, v2.0. If a copy of the MPL was not distributed with this
35756
35958
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35757
35959
 
35758
- const panelToolbar = {
35960
+ const panelToolbar$2 = {
35759
35961
  changePanel: "Change panel",
35760
35962
  fullscreen: "Fullscreen",
35761
35963
  more: "More",
@@ -35768,7 +35970,7 @@ const panelToolbar = {
35768
35970
  // License, v2.0. If a copy of the MPL was not distributed with this
35769
35971
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35770
35972
 
35771
- const plot = {
35973
+ const plot$2 = {
35772
35974
  accumulatedPath: "Path (accumulated)",
35773
35975
  addSeries: "Add series",
35774
35976
  clickToAddASeries: "Click to add a series",
@@ -35809,7 +36011,7 @@ const plot = {
35809
36011
  // License, v2.0. If a copy of the MPL was not distributed with this
35810
36012
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35811
36013
 
35812
- const problemsList = {
36014
+ const problemsList$2 = {
35813
36015
  noDetailsProvided: "No details provided",
35814
36016
  noProblemsFound: "No problems found"
35815
36017
  };
@@ -35818,7 +36020,7 @@ const problemsList = {
35818
36020
  // License, v2.0. If a copy of the MPL was not distributed with this
35819
36021
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35820
36022
 
35821
- const stateTransitions = {
36023
+ const stateTransitions$2 = {
35822
36024
  max: "Max",
35823
36025
  maxXError: "X max must be greater than X min.",
35824
36026
  min: "Min",
@@ -35830,7 +36032,7 @@ const stateTransitions = {
35830
36032
  // License, v2.0. If a copy of the MPL was not distributed with this
35831
36033
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35832
36034
 
35833
- const threeDee = {
36035
+ const threeDee$2 = {
35834
36036
  // Common
35835
36037
  color: "Color",
35836
36038
  colorMode: "Color mode",
@@ -35977,7 +36179,7 @@ const threeDee = {
35977
36179
  // License, v2.0. If a copy of the MPL was not distributed with this
35978
36180
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35979
36181
 
35980
- const topicList = {
36182
+ const topicList$2 = {
35981
36183
  anErrorOccurred: "An error occurred",
35982
36184
  clearFilter: "Clear filter",
35983
36185
  copyMessagePath: "Copy message path",
@@ -35997,7 +36199,7 @@ const topicList = {
35997
36199
  // License, v2.0. If a copy of the MPL was not distributed with this
35998
36200
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
35999
36201
 
36000
- const workspace = {
36202
+ const workspace$2 = {
36001
36203
  events: "Events",
36002
36204
  panel: "Panel",
36003
36205
  performance: "Performance",
@@ -36012,6 +36214,1048 @@ const workspace = {
36012
36214
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
36013
36215
 
36014
36216
  var en = /*#__PURE__*/Object.freeze({
36217
+ __proto__: null,
36218
+ addPanel: addPanel$2,
36219
+ appBar: appBar$2,
36220
+ appSettings: appSettings$2,
36221
+ dataSourceInfo: dataSourceInfo$2,
36222
+ desktopWindow: desktopWindow$2,
36223
+ general: general$2,
36224
+ incompatibleLayoutVersion: incompatibleLayoutVersion$2,
36225
+ log: log$4,
36226
+ openDialog: openDialog$2,
36227
+ panelConfigVersionGuard: panelConfigVersionGuard$2,
36228
+ panelSettings: panelSettings$2,
36229
+ panelToolbar: panelToolbar$2,
36230
+ panels: panels$2,
36231
+ plot: plot$2,
36232
+ problemsList: problemsList$2,
36233
+ stateTransitions: stateTransitions$2,
36234
+ threeDee: threeDee$2,
36235
+ topicList: topicList$2,
36236
+ workspace: workspace$2
36237
+ });
36238
+
36239
+ // This Source Code Form is subject to the terms of the Mozilla Public
36240
+ // License, v2.0. If a copy of the MPL was not distributed with this
36241
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36242
+ const addPanel$1 = {
36243
+ addPanel: "パネルを追加",
36244
+ noLayoutSelected: "<selectLayoutLink>レイアウトを選択</selectLayoutLink>して始めましょう!",
36245
+ noPanelsMatchSearchCriteria: "検索条件に一致するパネルがありません。",
36246
+ searchPanels: "パネルを検索",
36247
+ selectPanelToAddToLayout: "下のパネルを選択してレイアウトに追加してください。",
36248
+ };
36249
+
36250
+ // This Source Code Form is subject to the terms of the Mozilla Public
36251
+ // License, v2.0. If a copy of the MPL was not distributed with this
36252
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36253
+ const appBar$1 = {
36254
+ about: "情報",
36255
+ addPanel: "パネルを追加",
36256
+ documentation: "ドキュメンテーション",
36257
+ exploreSampleData: "サンプルデータを探索する",
36258
+ exportLayoutToFile: "レイアウトをファイルにエクスポート",
36259
+ extensions: "拡張機能",
36260
+ file: "ファイル",
36261
+ help: "ヘルプ",
36262
+ importLayoutFromFile: "ファイルからレイアウトをインポート",
36263
+ joinOurSlack: "Slackに参加する",
36264
+ joinSlackCommunity: "Slackコミュニティに参加する",
36265
+ noDataSource: "データソースがありません",
36266
+ open: "を開く",
36267
+ openConnection: "接続を開く",
36268
+ openLocalFile: "ローカルファイルを開く",
36269
+ recentDataSources: "最近のデータソース",
36270
+ settings: "設定",
36271
+ signIn: "ログイン",
36272
+ signOut: "ログアウト",
36273
+ unknown: "不明",
36274
+ userProfile: "ユーザープロファイル",
36275
+ view: "表示",
36276
+ viewData: "データを見る",
36277
+ viewOurDocs: "ドキュメンテーションを見る",
36278
+ profile: undefined,
36279
+ };
36280
+
36281
+ // This Source Code Form is subject to the terms of the Mozilla Public
36282
+ // License, v2.0. If a copy of the MPL was not distributed with this
36283
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36284
+ const appSettings$1 = {
36285
+ about: "情報",
36286
+ advanced: "高度な設定",
36287
+ askEachTime: "毎回確認する",
36288
+ colorScheme: "カラースキーム",
36289
+ dark: "ダーク",
36290
+ debugModeDescription: "Foxgloveのデバッグ用のパネルと機能を有効にする",
36291
+ desktopApp: "デスクトップアプリ",
36292
+ displayTimestampsIn: "タイムスタンプを表示",
36293
+ experimentalFeatures: "実験的機能",
36294
+ experimentalFeaturesDescription: "これらの機能は挙動が不安定なため、日々の利用は推奨されません。",
36295
+ extensions: "拡張機能",
36296
+ followSystem: "システムに従う",
36297
+ general: "一般",
36298
+ language: "言語",
36299
+ layoutDebugging: "レイアウトデバッグ",
36300
+ layoutDebuggingDescription: "レイアウトストレージの開発およびデバッグ用の追加コントロールを表示する。",
36301
+ light: "ライト",
36302
+ messageRate: "メッセージレート",
36303
+ noExperimentalFeatures: "現在、実験的機能はありません。",
36304
+ openLinksIn: "リンクを開く",
36305
+ ros: "ROS",
36306
+ settings: "設定",
36307
+ timestampFormat: "タイムスタンプ形式",
36308
+ webApp: "ウェブアプリ",
36309
+ };
36310
+
36311
+ // This Source Code Form is subject to the terms of the Mozilla Public
36312
+ // License, v2.0. If a copy of the MPL was not distributed with this
36313
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36314
+ const dataSourceInfo$1 = {
36315
+ currentSource: "現在のデータソース",
36316
+ dataSource: "データソース",
36317
+ duration: "所要時間",
36318
+ endTime: "終了時刻",
36319
+ startTime: "開始時刻",
36320
+ waitingForConnection: "接続待機中…",
36321
+ };
36322
+
36323
+ // This Source Code Form is subject to the terms of the Mozilla Public
36324
+ // License, v2.0. If a copy of the MPL was not distributed with this
36325
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36326
+ const desktopWindow$1 = {
36327
+ advanced: "高度な設定",
36328
+ checkForUpdates: "更新を確認する…",
36329
+ edit: "編集",
36330
+ file: "ファイル",
36331
+ inspectSharedWorker: "共有ワーカーを検査する…",
36332
+ newWindow: "新しいウィンドウ",
36333
+ noSharedWorkers: "共有ワーカーがありません",
36334
+ settings: "設定…",
36335
+ view: "表示",
36336
+ };
36337
+
36338
+ // This Source Code Form is subject to the terms of the Mozilla Public
36339
+ // License, v2.0. If a copy of the MPL was not distributed with this
36340
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36341
+ // Generic global translation
36342
+ const general$1 = {
36343
+ // Note that we use the term `Foxglove` as an English word rather than a Japanese
36344
+ // word since it would sound very different - フォックスグローブ (Fokusugorobu).
36345
+ foxglove: "Foxglove",
36346
+ learnMore: "もっと学ぶ",
36347
+ on: undefined,
36348
+ off: undefined,
36349
+ auto: undefined,
36350
+ };
36351
+
36352
+ // This Source Code Form is subject to the terms of the Mozilla Public
36353
+ // License, v2.0. If a copy of the MPL was not distributed with this
36354
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36355
+ const incompatibleLayoutVersion$1 = {
36356
+ desktopText: "このレイアウトはFoxglove Studioの新しいバージョンで作成されました。最新バージョンに更新してください ",
36357
+ title: "互換性のないレイアウトバージョン",
36358
+ webText: "このレイアウトはFoxglove Studioの新しいバージョンで作成されました。ブラウザを更新してください。",
36359
+ };
36360
+
36361
+ // This Source Code Form is subject to the terms of the Mozilla Public
36362
+ // License, v2.0. If a copy of the MPL was not distributed with this
36363
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36364
+ const log$3 = {
36365
+ hideAll: "すべて隠す",
36366
+ minLogLevel: "ログレベル",
36367
+ nameFilter: "ネームスペース",
36368
+ showAll: "すべて表示",
36369
+ topic: "トピック",
36370
+ topicError: "{{topic}}というトピックは利用できません。",
36371
+ };
36372
+
36373
+ // This Source Code Form is subject to the terms of the Mozilla Public
36374
+ // License, v2.0. If a copy of the MPL was not distributed with this
36375
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36376
+ const openDialog$1 = {
36377
+ canBeShared: "チームメイトとデータファイル、可視化レイアウト、およびカスタム拡張子を共有できます",
36378
+ collaborateTitle: "Foxglove で開発を加速する",
36379
+ convenientWebInterface: "便利なWebインターフェースを使用して、データをタグ付け、検索、および高速に取得",
36380
+ createAFreeAccount: "無料のアカウントを作成する",
36381
+ exploreSampleData: "サンプルデータを探索する",
36382
+ joinOurCommunity: "コミュニティに参加する",
36383
+ joinOurCommunityDescription: "SlackやGitHubに参加して、ヘルプを得たり、機能リクエストを行ったり、バグを報告しましょう。",
36384
+ joinOurSlack: "Slackに参加する",
36385
+ learnMore: "詳細を見る",
36386
+ needHelp: "ヘルプが必要ですか?",
36387
+ needHelpDescription: "ドキュメンテーションを見たり、Foxgloveブログのチュートリアルをチェックしてみましょう。",
36388
+ newToFoxgloveStudio: "Foxglove を初めてご利用ですか?",
36389
+ newToFoxgloveStudioDescription: "サンプルデータセットを探索したり、ドキュメンテーションをチェックして開始してください。",
36390
+ openAGitHubIssue: "GitHubの問題を開く",
36391
+ openConnection: "接続を開く",
36392
+ openConnectionDescription: "ライブロボットまたはサーバーに接続します。",
36393
+ openDataSource: "データソースを開く",
36394
+ openLocalFile: "ローカルファイルを開く",
36395
+ openLocalFileDescription: "ローカルファイルシステムから直接データを可視化します。",
36396
+ openUrl: "データをアップロードして共有する",
36397
+ openUrlDescription: "Foxglove を使用して、チームとデータを共有します。",
36398
+ recentDataSources: "最近のデータソース",
36399
+ secureStorageOfData: "ROSまたはカスタムデータをペタバイト単位で安全に保存",
36400
+ seeTutorials: "チュートリアルを見る",
36401
+ shareLayouts: "レイアウトを共有する",
36402
+ signIn: "ログイン",
36403
+ startCollaborating: "Foxgloveの組織とコラボレーションを開始する",
36404
+ startCollaboratingDescription: "Foxgloveアカウントを最大限に活用しましょう。たとえば、データを詳細に分析したり、チームメイトとツールを共有したりすることができます。",
36405
+ uploadToDataPlatform: "Data Platformにアップロードする",
36406
+ viewOurDocs: "ドキュメンテーションを見る",
36407
+ };
36408
+
36409
+ const panelConfigVersionGuard$1 = {
36410
+ instructions: "アプリを最新バージョンに更新してください。",
36411
+ warning: "このレイアウトは、より新しいバージョンのパネルを必要とします。",
36412
+ };
36413
+
36414
+ // This Source Code Form is subject to the terms of the Mozilla Public
36415
+ // License, v2.0. If a copy of the MPL was not distributed with this
36416
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36417
+ const panels$1 = {
36418
+ "3D": "3D",
36419
+ "3DPanelDescription": "マーカーやカメラ映像、メッシュ、URDFなどを3Dシーンで表示します。",
36420
+ callService: "サービスを呼び出す",
36421
+ callServiceDescription: "サービスを呼び出し、サービス呼び出し結果を表示する",
36422
+ dataSourceInfo: "データソース情報",
36423
+ dataSourceInfoDescription: "現在のデータソースに関するトピックやタイムスタンプなどの詳細を表示します。",
36424
+ gauge: "ゲージ",
36425
+ gaugeDescription: "連続値に基づく色付きのゲージを表示します。",
36426
+ image: "画像",
36427
+ imageDescription: "注釈付きの画像を表示します。",
36428
+ indicator: "インジケーター",
36429
+ indicatorDescription: "閾値に基づいた色やテキストで表示されるインジケーターを表示します。",
36430
+ log: "ログ",
36431
+ logDescription: "ノードと重要度レベル別にログを表示します。",
36432
+ map: "地図",
36433
+ mapDescription: "地図上に点を表示します。",
36434
+ parameters: "パラメーター",
36435
+ parametersDescription: "データソースのパラメーターを読み取り、設定します。",
36436
+ plot: "プロット",
36437
+ plotDescription: "時間または他の値に対する数値をプロットします。",
36438
+ publish: "パブリッシュ",
36439
+ publishDescription: "データソースにメッセージをパブリッシュします(ライブ接続のみ)。 ",
36440
+ rawMessages: "生データのメッセージ",
36441
+ rawMessagesDescription: "トピックメッセージを検査します。",
36442
+ ROSDiagnosticsDetail: "診断 - 詳細 (ROS)",
36443
+ ROSDiagnosticsDetailDescription: "特定のhardware_idのROS DiagnosticArrayメッセージを表示します。",
36444
+ ROSDiagnosticSummary: "診断 - 概要 (ROS)",
36445
+ ROSDiagnosticSummaryDescription: "すべてのROS DiagnosticArrayメッセージの概要を表示します。",
36446
+ stateTransitions: "ステートトランジション",
36447
+ stateTransitionsDescription: "時間とともに値が変化するときを追跡します。",
36448
+ tab: "タブ",
36449
+ tabDescription: "複数のパネルをタブでグループ化して表示します。",
36450
+ table: "テーブル",
36451
+ tableDescription: "トピックメッセージを表形式で表示します。",
36452
+ teleop: "Teleop",
36453
+ teleopDescription: "ライブ接続でロボットを操作します。",
36454
+ topicGraph: "トピックグラフ",
36455
+ topicGraphDescription: "アクティブなノード、トピック、サービスのグラフを表示します。",
36456
+ userScripts: "ユーザースクリプト",
36457
+ userScriptsDescription: "TypeScriptでカスタムデータ変換を記述します。以前はNode Playgroundとして知られていました。",
36458
+ variableSlider: "変数スライダー",
36459
+ variableSliderDescription: "レイアウトの数値変数を更新します。",
36460
+ settings: undefined,
36461
+ };
36462
+
36463
+ // This Source Code Form is subject to the terms of the Mozilla Public
36464
+ // License, v2.0. If a copy of the MPL was not distributed with this
36465
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36466
+ const panelSettings$1 = {
36467
+ currentSettingsPanelName: "{{title}}パネルの設定",
36468
+ importOrExportSettings: "設定のインポート/エクスポート",
36469
+ importOrExportSettingsWithEllipsis: "設定のインポート/エクスポート…",
36470
+ loadingPanelSettings: "パネル設定を読み込んでいます…",
36471
+ panelDoesNotHaveSettings: "このパネルには設定がありません。",
36472
+ panelName: "{{title}}パネル",
36473
+ panelSettings: "パネル設定",
36474
+ resetToDefaults: "デフォルトにリセット",
36475
+ selectAPanelToEditItsSettings: "編集するパネルを選択してください。",
36476
+ unknown: "不明",
36477
+ };
36478
+
36479
+ // This Source Code Form is subject to the terms of the Mozilla Public
36480
+ // License, v2.0. If a copy of the MPL was not distributed with this
36481
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36482
+ const panelToolbar$1 = {
36483
+ changePanel: "パネルを変更",
36484
+ fullscreen: "全画面表示",
36485
+ more: "もっと見る",
36486
+ removePanel: "パネルを削除",
36487
+ splitDown: "下に分割",
36488
+ splitRight: "右に分割",
36489
+ };
36490
+
36491
+ // This Source Code Form is subject to the terms of the Mozilla Public
36492
+ // License, v2.0. If a copy of the MPL was not distributed with this
36493
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36494
+ const plot$1 = {
36495
+ accumulatedPath: "パス(累積)",
36496
+ addSeries: "シリーズを追加する",
36497
+ clickToAddASeries: "シリーズを追加するにはクリック",
36498
+ color: "カラー",
36499
+ currentPath: "パス(現在)",
36500
+ deleteSeries: "シリーズを削除する",
36501
+ floating: "フローティング",
36502
+ general: "一般的な",
36503
+ headerStamp: "ヘッダースタンプ",
36504
+ hidden: "隠す",
36505
+ index: "インデックス",
36506
+ label: "ラベル",
36507
+ left: "左",
36508
+ legend: "凡例",
36509
+ lineSize: undefined,
36510
+ max: "最大",
36511
+ maxXError: "X最大値は、X最小値より大きくなければなりません。",
36512
+ maxYError: "Y最大値は、Y最小値より大きくなければなりません。",
36513
+ messagePath: "メッセージパス",
36514
+ min: "最小",
36515
+ position: "ポジション",
36516
+ receiveTime: "受信時間",
36517
+ secondsRange: "範囲(秒数)",
36518
+ series: "シリーズ",
36519
+ showLabels: "ラベルを表示する",
36520
+ showLine: undefined,
36521
+ showValues: "値を表示する",
36522
+ syncWithOtherPlots: "他のプロットと同期する",
36523
+ timestamp: "タイムスタンプ",
36524
+ top: "上",
36525
+ value: "値",
36526
+ xAxis: "X軸",
36527
+ yAxis: "Y軸",
36528
+ resetView: undefined,
36529
+ };
36530
+
36531
+ // This Source Code Form is subject to the terms of the Mozilla Public
36532
+ // License, v2.0. If a copy of the MPL was not distributed with this
36533
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36534
+ const problemsList$1 = {
36535
+ noDetailsProvided: "詳細は提供されていません",
36536
+ noProblemsFound: "問題は見つかりませんでした",
36537
+ };
36538
+
36539
+ // This Source Code Form is subject to the terms of the Mozilla Public
36540
+ // License, v2.0. If a copy of the MPL was not distributed with this
36541
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36542
+ const settingsEditor$1 = {
36543
+ clearSearch: "検索をクリアする",
36544
+ filterList: "リストをフィルタリングする",
36545
+ filterListHelp: "可視性でリストをフィルタリングする",
36546
+ general: "一般的な",
36547
+ hideAll: "すべて非表示",
36548
+ labels: "ラベル",
36549
+ listAll: "すべてのリスト",
36550
+ listInvisible: "非表示のリスト",
36551
+ listVisible: "表示されているリスト",
36552
+ searchPanelSettings: "検索パネルの設定…",
36553
+ showAll: "すべて表示",
36554
+ title: "タイトル",
36555
+ };
36556
+
36557
+ // This Source Code Form is subject to the terms of the Mozilla Public
36558
+ // License, v2.0. If a copy of the MPL was not distributed with this
36559
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36560
+ const stateTransitions$1 = {
36561
+ max: "最大",
36562
+ maxXError: "Xの最大値はXの最小値より大きくなければなりません。",
36563
+ min: "最小",
36564
+ secondsRange: "範囲(秒)",
36565
+ xAxis: "X軸",
36566
+ };
36567
+
36568
+ // This Source Code Form is subject to the terms of the Mozilla Public
36569
+ // License, v2.0. If a copy of the MPL was not distributed with this
36570
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36571
+ const threeDee$1 = {
36572
+ // Common
36573
+ color: "色",
36574
+ colorMode: "カラーモード",
36575
+ frame: "フレーム",
36576
+ lineWidth: "ライン幅",
36577
+ position: "位置",
36578
+ reset: "リセット",
36579
+ rotation: "回転",
36580
+ scale: "スケール",
36581
+ gradient: "グラデーション",
36582
+ type: "タイプ",
36583
+ topic: "トピック",
36584
+ // Frame
36585
+ age: "経過時間",
36586
+ axisScale: "軸のスケール",
36587
+ displayFrame: "フレームを表示する",
36588
+ displayFrameHelp: "カメラを配置するための座標フレームです。カメラの位置と向きは、このフレームの原点を基準とした相対的なものとなります。",
36589
+ editable: "編集可能",
36590
+ enablePreloading: "事前の読み込みを有効にする",
36591
+ fixed: "固定",
36592
+ followMode: "フォローモード",
36593
+ followModeHelp: "再生中のカメラの動作を変更し、表示フレームをフォローするかどうかを選択できます。",
36594
+ frameNotFound: "フレーム {{frameId}} が見つかりません",
36595
+ hideAll: "すべて非表示",
36596
+ historySize: "履歴サイズ",
36597
+ labels: "ラベル",
36598
+ labelSize: "ラベルのサイズ",
36599
+ lineColor: "ラインの色",
36600
+ noCoordinateFramesFound: "座標フレームが見つかりません",
36601
+ parent: "親",
36602
+ pose: "ポーズ",
36603
+ rotationOffset: "回転オフセット",
36604
+ settings: "設定",
36605
+ showAll: "すべて表示",
36606
+ transforms: "変換",
36607
+ translation: "変換",
36608
+ translationOffset: "変換オフセット",
36609
+ // Scene
36610
+ background: "背景",
36611
+ debugPicking: "デバッグピッキング",
36612
+ ignoreColladaUpAxis: "COLLADA <up_axis> を無視",
36613
+ ignoreColladaUpAxisHelp: "COLLADA ファイル内の <up_axis> タグを無視することで、rviz の動作に合わせます。",
36614
+ labelScale: "ラベルのスケール",
36615
+ labelScaleHelp: "すべてのラベルに適用するスケールファクター",
36616
+ meshUpAxis: "メッシュの上軸",
36617
+ meshUpAxisHelp: "方向を使用してメッシュを読み込むときに '上' として使用する方向(STL および OBJ)",
36618
+ renderStats: "レンダリングの統計情報",
36619
+ scene: "シーン",
36620
+ takeEffectAfterReboot: "この設定は再起動後に有効になります。",
36621
+ YUp: "Y-up",
36622
+ ZUp: "Z-up",
36623
+ // Camera
36624
+ distance: "距離",
36625
+ far: "Far",
36626
+ fovy: "Y軸 FOV",
36627
+ near: "Near",
36628
+ perspective: "遠近法",
36629
+ phi: "Phi",
36630
+ planarProjectionFactor: "平面投影係数",
36631
+ syncCamera: "カメラを同期する",
36632
+ syncCameraHelp: "この設定が有効になっている他のパネルとカメラを同期します。",
36633
+ target: "ターゲット",
36634
+ theta: "Theta",
36635
+ view: "ビュー",
36636
+ // Topics
36637
+ topics: "トピック",
36638
+ // Custom layers
36639
+ addGrid: "グリッドを追加する",
36640
+ addURDF: "URDF を追加する",
36641
+ customLayers: "カスタムレイヤー",
36642
+ delete: "削除",
36643
+ divisions: "分割数",
36644
+ grid: "グリッド",
36645
+ size: "サイズ",
36646
+ // Image annotations
36647
+ imageAnnotations: "画像アノテーション",
36648
+ resetView: "ビューをリセット",
36649
+ // Images
36650
+ cameraInfo: "カメラ情報",
36651
+ // Occupancy Grids
36652
+ colorModeCustom: "カスタム",
36653
+ colorModeRaw: "生データ",
36654
+ colorModeRvizCostmap: "Costmap",
36655
+ colorModeRvizMap: "Map",
36656
+ frameLock: "フレームロック",
36657
+ invalidColor: "無効な色",
36658
+ maxColor: "最大色",
36659
+ minColor: "最小色",
36660
+ unknownColor: "不明な色",
36661
+ // Point Extension Utils
36662
+ decayTime: "減衰時間",
36663
+ decayTimeDefaultZeroSeconds: "0秒",
36664
+ pointShape: "ポイント形状",
36665
+ pointShapeCircle: "円",
36666
+ pointShapeSquare: "四角",
36667
+ pointSize: "ポイントサイズ",
36668
+ // Color Mode
36669
+ colorBy: "色指定",
36670
+ colorModeBgraPacked: "BGRA(パック)",
36671
+ colorModeBgrPacked: "BGR(パック)",
36672
+ colorModeColorMap: "カラーマップ",
36673
+ colorModeFlat: "フラット",
36674
+ colorModeRgbaSeparateFields: "RGBA(個別フィールド)",
36675
+ flatColor: "フラットカラー",
36676
+ opacity: "不透明度",
36677
+ valueMax: "最大値",
36678
+ valueMin: "最小値",
36679
+ // Markers
36680
+ selectionVariable: "選択変数",
36681
+ selectionVariableHelp: "マーカーを選択すると、このグローバル変数がマーカーIDに設定されます",
36682
+ showOutline: "アウトラインを表示",
36683
+ // Poses
36684
+ covariance: "共分散",
36685
+ covarianceColor: "共分散色",
36686
+ poseDisplayTypeArrow: "矢印",
36687
+ poseDisplayTypeAxis: "軸",
36688
+ poseDisplayTypeLine: "ライン",
36689
+ // Publish
36690
+ publish: "公開",
36691
+ publishTopicHelp: "公開するトピック",
36692
+ publishTypeHelp: "シーンをクリックする際に公開するメッセージのタイプ",
36693
+ publishTypePoint: "ポイント(geometry_msgs/Point)",
36694
+ publishTypePose: "ポーズ(geometry_msgs/PoseStamped)",
36695
+ publishTypePoseEstimate: "ポーズ推定(geometry_msgs/PoseWithCovarianceStamped)",
36696
+ thetaDeviation: "シータ偏差",
36697
+ thetaDeviationHelp: "ポーズ推定で公開するシータの標準偏差",
36698
+ xDeviation: "X偏差",
36699
+ xDeviationHelp: "ポーズ推定で公開するXの標準偏差",
36700
+ yDeviation: "Y偏差",
36701
+ yDeviationHelp: "ポーズ推定で公開するYの標準偏差",
36702
+ };
36703
+
36704
+ const topicList$1 = {
36705
+ anErrorOccurred: "エラーが発生しました",
36706
+ clearFilter: "フィルターをクリア",
36707
+ copyMessagePath: "メッセージパスをコピー",
36708
+ copyMessagePaths: "選択したメッセージパスをコピー",
36709
+ copySchemaName: "スキーマ名をコピー",
36710
+ copyTopicName: "トピック名をコピー",
36711
+ copyTopicNames: "選択したトピック名をコピー",
36712
+ noDataSourceSelected: "データソースが選択されていません",
36713
+ noTopicsAvailable: "利用可能なトピックがありません。",
36714
+ noTopicsOrDatatypesMatching: "一致するトピックやデータタイプがありません",
36715
+ searchBarPlaceholder: "トピックまたはスキーマ名でフィルター…",
36716
+ waitingForConnection: "接続を待っています",
36717
+ waitingForData: "データ待ち…",
36718
+ };
36719
+
36720
+ // This Source Code Form is subject to the terms of the Mozilla Public
36721
+ // License, v2.0. If a copy of the MPL was not distributed with this
36722
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36723
+ const workspace$1 = {
36724
+ events: "イベント",
36725
+ panel: "パネル",
36726
+ performance: "パフォーマンス",
36727
+ problems: "問題",
36728
+ studioLogs: "ログ",
36729
+ topics: "トピック",
36730
+ variables: "変数",
36731
+ };
36732
+
36733
+ // This Source Code Form is subject to the terms of the Mozilla Public
36734
+ // License, v2.0. If a copy of the MPL was not distributed with this
36735
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36736
+
36737
+ var ja = /*#__PURE__*/Object.freeze({
36738
+ __proto__: null,
36739
+ addPanel: addPanel$1,
36740
+ appBar: appBar$1,
36741
+ appSettings: appSettings$1,
36742
+ dataSourceInfo: dataSourceInfo$1,
36743
+ desktopWindow: desktopWindow$1,
36744
+ general: general$1,
36745
+ incompatibleLayoutVersion: incompatibleLayoutVersion$1,
36746
+ log: log$3,
36747
+ openDialog: openDialog$1,
36748
+ panelConfigVersionGuard: panelConfigVersionGuard$1,
36749
+ panelSettings: panelSettings$1,
36750
+ panelToolbar: panelToolbar$1,
36751
+ panels: panels$1,
36752
+ plot: plot$1,
36753
+ problemsList: problemsList$1,
36754
+ settingsEditor: settingsEditor$1,
36755
+ stateTransitions: stateTransitions$1,
36756
+ threeDee: threeDee$1,
36757
+ topicList: topicList$1,
36758
+ workspace: workspace$1
36759
+ });
36760
+
36761
+ const addPanel = {
36762
+ addPanel: "添加面板",
36763
+ noLayoutSelected: "<selectLayoutLink>选择一个布局</selectLayoutLink>来开始使用!",
36764
+ noPanelsMatchSearchCriteria: "没有符合搜索条件的面板。",
36765
+ searchPanels: "搜索面板",
36766
+ selectPanelToAddToLayout: "在下面选择一个面板,将其添加到你的布局中。",
36767
+ };
36768
+
36769
+ // This Source Code Form is subject to the terms of the Mozilla Public
36770
+ // License, v2.0. If a copy of the MPL was not distributed with this
36771
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36772
+ const appBar = {
36773
+ about: "关于",
36774
+ addPanel: "添加面板",
36775
+ documentation: "文档",
36776
+ exploreSampleData: "探索样本数据",
36777
+ exportLayoutToFile: "导出布局到文件……",
36778
+ extensions: "扩展",
36779
+ file: "文件",
36780
+ help: "帮助",
36781
+ hideLeftSidebar: "隐藏左侧边栏",
36782
+ hideRightSidebar: "隐藏右侧边栏",
36783
+ importLayoutFromFile: "通过文件导入布局……",
36784
+ joinOurSlack: "加入我们的 Slack",
36785
+ joinSlackCommunity: "加入 Slack 社区",
36786
+ noDataSource: "没有数据源",
36787
+ open: "打开……",
36788
+ openConnection: "打开连接……",
36789
+ openLocalFile: "打开本地文件……",
36790
+ recentDataSources: "最近使用的数据源",
36791
+ settings: "设置",
36792
+ showLeftSidebar: "显示左侧边栏",
36793
+ showRightSidebar: "显示右侧边栏",
36794
+ signIn: "登录",
36795
+ signOut: "登出",
36796
+ unknown: "未知",
36797
+ userProfile: "用户资料",
36798
+ view: "查看",
36799
+ viewData: "查看数据",
36800
+ viewOurDocs: "查看我们的文档",
36801
+ profile: "个人资料",
36802
+ };
36803
+
36804
+ // This Source Code Form is subject to the terms of the Mozilla Public
36805
+ // License, v2.0. If a copy of the MPL was not distributed with this
36806
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36807
+ const appSettings = {
36808
+ about: "关于",
36809
+ advanced: "高级",
36810
+ askEachTime: "每次询问",
36811
+ colorScheme: "配色方案",
36812
+ dark: "暗色",
36813
+ debugModeDescription: "启用调试 Foxglove 的面板和功能",
36814
+ desktopApp: "桌面应用",
36815
+ displayTimestampsIn: "显示时间戳在",
36816
+ experimentalFeatures: "实验性功能",
36817
+ experimentalFeaturesDescription: "这些功能不稳定,不建议日常使用。",
36818
+ extensions: "扩展",
36819
+ followSystem: "跟随系统",
36820
+ general: "通用",
36821
+ language: "语言",
36822
+ layoutDebugging: "布局调试",
36823
+ layoutDebuggingDescription: "显示用于开发和调试布局存储的额外控件。",
36824
+ light: "亮色",
36825
+ messageRate: "消息速率",
36826
+ noExperimentalFeatures: "目前没有实验性的功能。",
36827
+ openLinksIn: "打开链接",
36828
+ ros: "ROS",
36829
+ settings: "设置",
36830
+ timestampFormat: "时间戳格式",
36831
+ webApp: "网页应用",
36832
+ };
36833
+
36834
+ // This Source Code Form is subject to the terms of the Mozilla Public
36835
+ // License, v2.0. If a copy of the MPL was not distributed with this
36836
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36837
+ const dataSourceInfo = {
36838
+ currentSource: "当前源",
36839
+ dataSource: "数据源",
36840
+ duration: "持续时间",
36841
+ endTime: "结束时间",
36842
+ startTime: "开始时间",
36843
+ waitingForConnection: "等待连接……",
36844
+ };
36845
+
36846
+ // This Source Code Form is subject to the terms of the Mozilla Public
36847
+ // License, v2.0. If a copy of the MPL was not distributed with this
36848
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36849
+ const desktopWindow = {
36850
+ advanced: "高级",
36851
+ checkForUpdates: "检查更新……",
36852
+ edit: "编辑",
36853
+ file: "文件",
36854
+ inspectSharedWorker: "检查共享工作者……",
36855
+ newWindow: "新建窗口",
36856
+ noSharedWorkers: "没有共享工作者",
36857
+ settings: "设置……",
36858
+ view: "视图",
36859
+ };
36860
+
36861
+ // This Source Code Form is subject to the terms of the Mozilla Public
36862
+ // License, v2.0. If a copy of the MPL was not distributed with this
36863
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36864
+ // Generic global translation
36865
+ const general = {
36866
+ foxglove: "Foxglove",
36867
+ learnMore: "了解更多",
36868
+ on: "开",
36869
+ off: "关",
36870
+ auto: "自动",
36871
+ };
36872
+
36873
+ // This Source Code Form is subject to the terms of the Mozilla Public
36874
+ // License, v2.0. If a copy of the MPL was not distributed with this
36875
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36876
+ const incompatibleLayoutVersion = {
36877
+ desktopText: "此版面是使用较新版本的 Foxglove Studio 制作的。请从以下网址更新至最新版本 ",
36878
+ title: "布局版本不兼容",
36879
+ webText: "此版面是使用较新版本的 Foxglove Studio 制作的。请刷新浏览器。",
36880
+ };
36881
+
36882
+ // This Source Code Form is subject to the terms of the Mozilla Public
36883
+ // License, v2.0. If a copy of the MPL was not distributed with this
36884
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36885
+ const log$2 = {
36886
+ topicError: "话题 {{topic}} 不可用",
36887
+ topic: "话题",
36888
+ hideAll: "隐藏全部",
36889
+ minLogLevel: "日志级别",
36890
+ nameFilter: "命名空间",
36891
+ showAll: "显示全部",
36892
+ };
36893
+
36894
+ // This Source Code Form is subject to the terms of the Mozilla Public
36895
+ // License, v2.0. If a copy of the MPL was not distributed with this
36896
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36897
+ const openDialog = {
36898
+ canBeShared: "与队友分享数据文件、可视化布局和自定义扩展程序",
36899
+ collaborateTitle: "使用 Foxglove 数据平台加速开发",
36900
+ convenientWebInterface: "使用一个方便的网络界面,以闪电般的速度标记、搜索和检索数据",
36901
+ createAFreeAccount: "创建免费帐户",
36902
+ exploreSampleData: "探索样本数据",
36903
+ joinOurCommunity: "加入我们的社区",
36904
+ joinOurCommunityDescription: "在 Slack 上与我们的开发人员和用户交流,或在 GitHub 上提出问题。",
36905
+ joinOurSlack: "加入我们的 Slack",
36906
+ learnMore: "了解更多",
36907
+ needHelp: "需要帮助?",
36908
+ needHelpDescription: "查看我们的文档,或查看 Foxglove 博客上的教程。",
36909
+ newToFoxgloveStudio: "第一次使用 Foxglove?",
36910
+ newToFoxgloveStudioDescription: "从探索一个样本数据集开始,或查看我们的文档。",
36911
+ openAGitHubIssue: "打开 GitHub issue",
36912
+ openConnection: "打开连接",
36913
+ openConnectionDescription: "连接到实时机器人或服务器。",
36914
+ openDataSource: "打开数据源",
36915
+ openLocalFile: "打开本地文件",
36916
+ openLocalFileDescription: "直接从本地文件系统可视化数据。",
36917
+ openUrl: "上传和共享数据",
36918
+ openUrlDescription: "使用 Foxglove 数据平台与您的团队共享数据。",
36919
+ recentDataSources: "最近使用的数据源",
36920
+ secureStorageOfData: "安全地存储 PB 级的 ROS 或自定义数据",
36921
+ seeTutorials: "查看教程",
36922
+ shareLayouts: "分享布局",
36923
+ signIn: "登录",
36924
+ startCollaborating: "与您的 Foxglove 组织开始合作",
36925
+ startCollaboratingDescription: "充分利用你的 Foxglove 账户——无论你想深入研究你的数据还是与你的团队成员分享工具。",
36926
+ uploadToDataPlatform: "上传到数据平台",
36927
+ viewOurDocs: "查看我们的文档",
36928
+ };
36929
+
36930
+ const panelConfigVersionGuard = {
36931
+ instructions: "请更新至最新版本的应用程序。",
36932
+ warning: "该布局需要该面板的最新版本。",
36933
+ };
36934
+
36935
+ // This Source Code Form is subject to the terms of the Mozilla Public
36936
+ // License, v2.0. If a copy of the MPL was not distributed with this
36937
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36938
+ const panels = {
36939
+ "3D": "三维",
36940
+ "3DPanelDescription": "在三维场景中显示标记、相机图像、网格、URDF 和其他内容。",
36941
+ callService: "调用服务",
36942
+ callServiceDescription: "调用服务并查看服务调用结果。",
36943
+ dataSourceInfo: "数据源信息",
36944
+ dataSourceInfoDescription: "查看当前数据源的主题和时间戳等详细信息。",
36945
+ gauge: "仪表",
36946
+ gaugeDescription: "基于连续值显示彩色仪表。",
36947
+ image: "图像",
36948
+ imageDescription: "显示带注释的图像。",
36949
+ indicator: "指示器",
36950
+ indicatorDescription: "基于阈值值显示彩色和/或文本指示器。",
36951
+ log: "日志",
36952
+ logDescription: "按节点和严重程度级别显示日志。",
36953
+ map: "地图",
36954
+ mapDescription: "在地图上显示点。",
36955
+ parameters: "参数",
36956
+ parametersDescription: "读取和设置数据源的参数。",
36957
+ plot: "图表",
36958
+ plotDescription: "绘制随时间或其他值变化的数字值。",
36959
+ publish: "发布",
36960
+ publishDescription: "向数据源发布消息(仅限实时连接)。",
36961
+ rawMessages: "原始消息",
36962
+ rawMessagesDescription: "检查主题消息。",
36963
+ ROSDiagnosticsDetail: "诊断 - 详细信息(ROS)",
36964
+ ROSDiagnosticsDetailDescription: "显示特定 hardware_id 的 ROS DiagnosticArray 消息。",
36965
+ ROSDiagnosticSummary: "诊断 - 概要(ROS)",
36966
+ ROSDiagnosticSummaryDescription: "显示所有 ROS DiagnosticArray 消息的摘要。",
36967
+ stateTransitions: "状态转换",
36968
+ stateTransitionsDescription: "跟踪值随时间变化的情况。",
36969
+ tab: "选项卡",
36970
+ tabDescription: "将面板分组在选项卡界面中。",
36971
+ table: "表格",
36972
+ tableDescription: "以表格格式显示主题消息。",
36973
+ teleop: "远程操纵",
36974
+ teleopDescription: "通过实时连接远程操纵机器人。",
36975
+ topicGraph: "主题图",
36976
+ topicGraphDescription: "显示活动节点、主题和服务的图形。",
36977
+ userScripts: "用户脚本",
36978
+ userScriptsDescription: "使用 TypeScript 编写自定义数据转换。以前称为 Node Playground。",
36979
+ variableSlider: "变量滑块",
36980
+ variableSliderDescription: "更新布局的数字变量值。",
36981
+ settings: "设置",
36982
+ };
36983
+
36984
+ // This Source Code Form is subject to the terms of the Mozilla Public
36985
+ // License, v2.0. If a copy of the MPL was not distributed with this
36986
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
36987
+ const panelSettings = {
36988
+ currentSettingsPanelName: "{{title}}面板设置",
36989
+ importOrExportSettings: "导入/导出设置",
36990
+ importOrExportSettingsWithEllipsis: "导入/导出设置……",
36991
+ loadingPanelSettings: "正在加载面板设置……",
36992
+ panelDoesNotHaveSettings: "此面板没有任何设置",
36993
+ panelName: "{{title}}面板",
36994
+ panelSettings: "面板设置",
36995
+ resetToDefaults: "重置为默认值",
36996
+ selectAPanelToEditItsSettings: "选择一个面板来编辑其设置。",
36997
+ unknown: "未知",
36998
+ };
36999
+
37000
+ // This Source Code Form is subject to the terms of the Mozilla Public
37001
+ // License, v2.0. If a copy of the MPL was not distributed with this
37002
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37003
+ const panelToolbar = {
37004
+ changePanel: "更改面板",
37005
+ fullscreen: "全屏",
37006
+ more: "更多",
37007
+ removePanel: "删除面板",
37008
+ splitDown: "向下拆分",
37009
+ splitRight: "向右拆分",
37010
+ };
37011
+
37012
+ // This Source Code Form is subject to the terms of the Mozilla Public
37013
+ // License, v2.0. If a copy of the MPL was not distributed with this
37014
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37015
+ const plot = {
37016
+ accumulatedPath: "地址(累积)",
37017
+ addSeries: "添加数据系列",
37018
+ clickToAddASeries: "点击来添加数据系列",
37019
+ color: "颜色",
37020
+ currentPath: "地址(当前)",
37021
+ deleteSeries: "删除数据系列",
37022
+ floating: "浮动",
37023
+ general: "通用",
37024
+ headerStamp: "头时间戳",
37025
+ hidden: "隐藏",
37026
+ index: "索引",
37027
+ label: "标签",
37028
+ left: "左",
37029
+ legend: "图例",
37030
+ lineSize: "线宽",
37031
+ max: "最大值",
37032
+ maxXError: "X 的最大值必须大于 X 的最小值。",
37033
+ maxYError: "Y 的最大值必须大于 Y 的最小值。",
37034
+ messagePath: "消息地址",
37035
+ min: "最小值",
37036
+ position: "位置",
37037
+ receiveTime: "接收时间",
37038
+ secondsRange: "范围(秒)",
37039
+ series: "数据系列",
37040
+ showLabels: "显示标签",
37041
+ showLine: "显示线条",
37042
+ showValues: "显示值",
37043
+ syncWithOtherPlots: "与其他图表同步",
37044
+ timestamp: "时间戳",
37045
+ top: "上",
37046
+ value: "值",
37047
+ xAxis: "X 轴",
37048
+ yAxis: "Y 轴",
37049
+ resetView: "重置视图",
37050
+ };
37051
+
37052
+ // This Source Code Form is subject to the terms of the Mozilla Public
37053
+ // License, v2.0. If a copy of the MPL was not distributed with this
37054
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37055
+ const problemsList = {
37056
+ noDetailsProvided: "没有提供细节",
37057
+ noProblemsFound: "没有发现问题",
37058
+ };
37059
+
37060
+ // This Source Code Form is subject to the terms of the Mozilla Public
37061
+ // License, v2.0. If a copy of the MPL was not distributed with this
37062
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37063
+ const settingsEditor = {
37064
+ clearSearch: "清空搜索",
37065
+ filterList: "过滤列表",
37066
+ filterListHelp: "按照可见性过滤列表",
37067
+ general: "通用",
37068
+ hideAll: "隐藏全部",
37069
+ labels: "标签",
37070
+ listAll: "列出全部",
37071
+ listInvisible: "列出不可见",
37072
+ listVisible: "列出可见",
37073
+ searchPanelSettings: "搜索面板设置……",
37074
+ showAll: "显示全部",
37075
+ title: "标题",
37076
+ };
37077
+
37078
+ // This Source Code Form is subject to the terms of the Mozilla Public
37079
+ // License, v2.0. If a copy of the MPL was not distributed with this
37080
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37081
+ const stateTransitions = {
37082
+ max: "最大",
37083
+ maxXError: "X 最大值必须大于 X 最小值。",
37084
+ min: "最小",
37085
+ secondsRange: "范围(秒)",
37086
+ xAxis: "X 轴",
37087
+ };
37088
+
37089
+ // This Source Code Form is subject to the terms of the Mozilla Public
37090
+ // License, v2.0. If a copy of the MPL was not distributed with this
37091
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37092
+ const threeDee = {
37093
+ // Common
37094
+ color: "颜色",
37095
+ colorMode: "颜色模式",
37096
+ frame: "参考系",
37097
+ lineWidth: "线宽",
37098
+ position: "位置",
37099
+ reset: "重置",
37100
+ rotation: "旋转",
37101
+ scale: "刻度",
37102
+ gradient: "渐变",
37103
+ type: "类型",
37104
+ topic: "话题",
37105
+ // Frame
37106
+ age: "陈旧度",
37107
+ axisScale: "轴比例",
37108
+ displayFrame: "展示参考系",
37109
+ displayFrameHelp: "放置相机用于显示坐标系。相机的位置和方向将相对于该坐标系的原点。",
37110
+ editable: "可编辑",
37111
+ enablePreloading: "启用预加载",
37112
+ fixed: "固定",
37113
+ followMode: "跟踪模式",
37114
+ followModeHelp: "更改回放期间相机的行为,是否跟踪显示坐标系。",
37115
+ frameNotFound: "未找到参考系 {{frameId}}",
37116
+ hideAll: "隐藏全部",
37117
+ historySize: "历史长度",
37118
+ labels: "标签",
37119
+ labelSize: "标签大小",
37120
+ lineColor: "线颜色",
37121
+ noCoordinateFramesFound: "未找到坐标系",
37122
+ parent: "父变换",
37123
+ pose: "姿态",
37124
+ rotationOffset: "旋转偏移",
37125
+ settings: "设置",
37126
+ showAll: "显示全部",
37127
+ transforms: "变换",
37128
+ translation: "平移",
37129
+ translationOffset: "平移偏移",
37130
+ // Scene
37131
+ background: "背景",
37132
+ debugPicking: "调试拾取",
37133
+ ignoreColladaUpAxis: "忽略 COLLADA 的 <up_axis>",
37134
+ ignoreColladaUpAxisHelp: "通过忽略 COLLADA 文件中的 <up_axis> 标记,匹配 rviz 的行为",
37135
+ labelScale: "标签比例",
37136
+ labelScaleHelp: "应用于所有标签的比例因子",
37137
+ meshUpAxis: "网格上轴",
37138
+ meshUpAxisHelp: "加载缺少方向信息的网格(STL 和 OBJ)时使用的“上”方向",
37139
+ renderStats: "渲染统计",
37140
+ scene: "场景",
37141
+ takeEffectAfterReboot: "此设置需要重新启动以生效",
37142
+ YUp: "Y-up",
37143
+ ZUp: "Z-up",
37144
+ // Camera
37145
+ distance: "距离",
37146
+ far: "远面",
37147
+ fovy: "Y轴视野",
37148
+ near: "近面",
37149
+ perspective: "透视",
37150
+ phi: "方向角",
37151
+ planarProjectionFactor: "平面投影因子",
37152
+ syncCamera: "同步相机",
37153
+ syncCameraHelp: "将相机与其他启用此设置的面板同步。",
37154
+ target: "目标",
37155
+ theta: "极角",
37156
+ view: "视图",
37157
+ // Topics
37158
+ topics: "话题",
37159
+ // Custom layers
37160
+ addGrid: "添加网格",
37161
+ addURDF: "添加 URDF",
37162
+ customLayers: "自定义图层",
37163
+ delete: "删除",
37164
+ divisions: "划分",
37165
+ grid: "网格",
37166
+ size: "大小",
37167
+ // Image annotations
37168
+ imageAnnotations: "图像注释",
37169
+ resetView: "重置视图",
37170
+ // Images
37171
+ cameraInfo: "相机信息",
37172
+ // Occupancy Grids
37173
+ colorModeCustom: "自定义",
37174
+ colorModeRaw: "原始",
37175
+ colorModeRvizCostmap: "Costmap",
37176
+ colorModeRvizMap: "Map",
37177
+ frameLock: "锁定参考系",
37178
+ invalidColor: "无效值颜色",
37179
+ maxColor: "最大值颜色",
37180
+ minColor: "最小值颜色",
37181
+ unknownColor: "未知值颜色",
37182
+ // Point Extension Utils
37183
+ decayTime: "衰减时间",
37184
+ pointShape: "点形状",
37185
+ pointShapeCircle: "圆形",
37186
+ pointShapeSquare: "方形",
37187
+ pointSize: "点大小",
37188
+ decayTimeDefaultZeroSeconds: "0 秒",
37189
+ // Color Mode
37190
+ colorBy: "颜色映射值",
37191
+ colorModeBgraPacked: "BGRA (堆积)",
37192
+ colorModeBgrPacked: "BGR (堆积)",
37193
+ colorModeColorMap: "色板",
37194
+ colorModeFlat: "单色",
37195
+ colorModeRgbaSeparateFields: "RGBA (独立字段)",
37196
+ flatColor: "单色",
37197
+ opacity: "透明度",
37198
+ valueMax: "最大值",
37199
+ valueMin: "最小值",
37200
+ // Markers
37201
+ selectionVariable: "选择变量",
37202
+ selectionVariableHelp: "选择标记时,该全局变量将被设置为标记 ID",
37203
+ showOutline: "展示轮廓",
37204
+ // Poses
37205
+ covariance: "协方差",
37206
+ covarianceColor: "协方差颜色",
37207
+ poseDisplayTypeArrow: "箭头",
37208
+ poseDisplayTypeAxis: "轴",
37209
+ poseDisplayTypeLine: "线",
37210
+ // Publish
37211
+ publish: "发布",
37212
+ publishTopicHelp: "发布的主题",
37213
+ publishTypeHelp: "在场景中点击时要发布的信息类型",
37214
+ publishTypePoint: "点 (geometry_msgs/Point)",
37215
+ publishTypePose: "姿态 (geometry_msgs/PoseStamped)",
37216
+ publishTypePoseEstimate: "姿态估计 (geometry_msgs/PoseWithCovarianceStamped)",
37217
+ thetaDeviation: "Theta 偏差",
37218
+ thetaDeviationHelp: "与姿势估计值一起发布的 Theta 标准偏差",
37219
+ xDeviation: "X 偏差",
37220
+ xDeviationHelp: "与姿势估计值一起公布的 X 标准偏差",
37221
+ yDeviation: "Y 偏差",
37222
+ yDeviationHelp: "与姿势估计值一起发布的 Y 标准偏差",
37223
+ };
37224
+
37225
+ const topicList = {
37226
+ anErrorOccurred: "发生错误",
37227
+ clearFilter: "清除筛选",
37228
+ copyMessagePath: "复制消息路径",
37229
+ copyMessagePaths: "复制所选的消息路径",
37230
+ copySchemaName: "复制 schema 名称",
37231
+ copyTopicName: "复制主题名称",
37232
+ copyTopicNames: "复制所选的主题路径",
37233
+ noDataSourceSelected: "未选择数据源",
37234
+ noTopicsAvailable: "暂无主题。 ",
37235
+ noTopicsOrDatatypesMatching: "没有匹配的主题或数据类型",
37236
+ searchBarPlaceholder: "按主题或 schema 名称筛选……",
37237
+ waitingForConnection: "等待连接",
37238
+ waitingForData: "等待数据……",
37239
+ };
37240
+
37241
+ // This Source Code Form is subject to the terms of the Mozilla Public
37242
+ // License, v2.0. If a copy of the MPL was not distributed with this
37243
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37244
+ const workspace = {
37245
+ events: "事件",
37246
+ panel: "面板",
37247
+ performance: "性能",
37248
+ problems: "问题",
37249
+ studioLogs: "日志",
37250
+ topics: "话题",
37251
+ variables: "变量",
37252
+ };
37253
+
37254
+ // This Source Code Form is subject to the terms of the Mozilla Public
37255
+ // License, v2.0. If a copy of the MPL was not distributed with this
37256
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
37257
+
37258
+ var zh = /*#__PURE__*/Object.freeze({
36015
37259
  __proto__: null,
36016
37260
  addPanel: addPanel,
36017
37261
  appBar: appBar,
@@ -36028,6 +37272,7 @@ var en = /*#__PURE__*/Object.freeze({
36028
37272
  panels: panels,
36029
37273
  plot: plot,
36030
37274
  problemsList: problemsList,
37275
+ settingsEditor: settingsEditor,
36031
37276
  stateTransitions: stateTransitions,
36032
37277
  threeDee: threeDee,
36033
37278
  topicList: topicList,
@@ -36037,31 +37282,25 @@ var en = /*#__PURE__*/Object.freeze({
36037
37282
  // This Source Code Form is subject to the terms of the Mozilla Public
36038
37283
  // License, v2.0. If a copy of the MPL was not distributed with this
36039
37284
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
36040
-
36041
- const translations = {
36042
- en
36043
- };
37285
+ const translations = { en, zh, ja };
36044
37286
  const defaultNS = "general";
36045
37287
  async function initI18n(options) {
36046
- const {
36047
- context = "browser"
36048
- } = options !== null && options !== void 0 ? options : {};
36049
- if (context === "browser") {
36050
- instance.use(initReactI18next);
36051
- instance.use(Browser);
36052
- }
36053
- await instance.init({
36054
- resources: translations,
36055
- detection: context === "browser" ? {
36056
- order: ["localStorage", "navigator"],
36057
- caches: ["localStorage"]
36058
- } : undefined,
36059
- fallbackLng: "en",
36060
- defaultNS,
36061
- interpolation: {
36062
- escapeValue: false
36063
- }
36064
- });
37288
+ const { context = "browser" } = options ?? {};
37289
+ if (context === "browser") {
37290
+ instance.use(initReactI18next);
37291
+ instance.use(Browser);
37292
+ }
37293
+ await instance.init({
37294
+ resources: translations,
37295
+ detection: context === "browser"
37296
+ ? { order: ["localStorage", "navigator"], caches: ["localStorage"] }
37297
+ : undefined,
37298
+ fallbackLng: "en",
37299
+ defaultNS,
37300
+ interpolation: {
37301
+ escapeValue: false, // not needed for react as it escapes by default
37302
+ },
37303
+ });
36065
37304
  }
36066
37305
 
36067
37306
  // This Source Code Form is subject to the terms of the Mozilla Public
@@ -36088,37 +37327,40 @@ const PanelLayout = ({
36088
37327
  }, children);
36089
37328
  };
36090
37329
 
36091
- const useStyles = makeStyles()(theme => ({
36092
- root: {
36093
- whiteSpace: "pre-line",
36094
- code: {
36095
- color: theme.palette.primary.main,
36096
- background: "transparent",
36097
- padding: 0
36098
- }
36099
- }
37330
+ const useStyles = makeStyles()((theme) => ({
37331
+ root: {
37332
+ whiteSpace: "pre-line",
37333
+ code: {
37334
+ color: theme.palette.primary.main,
37335
+ background: "transparent",
37336
+ padding: 0,
37337
+ },
37338
+ },
36100
37339
  }));
36101
- function EmptyState({
36102
- children,
36103
- className
36104
- }) {
36105
- const {
36106
- classes,
36107
- cx
36108
- } = useStyles();
36109
- return /*#__PURE__*/React__default.createElement(Stack$1, {
36110
- className: cx(classes.root, className),
36111
- flex: "auto",
36112
- alignItems: "center",
36113
- justifyContent: "center",
36114
- fullHeight: true,
36115
- paddingX: 1
36116
- }, /*#__PURE__*/React__default.createElement(Typography, {
36117
- variant: "body2",
36118
- color: "text.secondary",
36119
- lineHeight: 1.4,
36120
- align: "center"
36121
- }, children));
37340
+ function EmptyState({ children, className, }) {
37341
+ const { classes, cx } = useStyles();
37342
+ return (jsx$2(Stack$2, { className: cx(classes.root, className), flex: "auto", alignItems: "center", justifyContent: "center", fullHeight: true, paddingX: 1, children: jsx$2(Typography, { variant: "body2", color: "text.secondary", lineHeight: 1.4, align: "center", children: children }) }));
37343
+ }
37344
+
37345
+ class ErrorBoundary extends Component {
37346
+ state = {
37347
+ currentError: undefined,
37348
+ };
37349
+ componentDidCatch(error, errorInfo) {
37350
+ reportError(new AppError(error, errorInfo));
37351
+ this.setState({ currentError: { error, errorInfo } });
37352
+ }
37353
+ render() {
37354
+ if (this.state.currentError) {
37355
+ const actions = this.props.actions ?? (jsx$2(Stack$2, { fullHeight: true, flex: "auto", alignItems: "flex-end", justifyContent: "flex-end", direction: "row", children: jsx$2(Button$2, { variant: "outlined", color: "secondary", onClick: () => {
37356
+ this.setState({ currentError: undefined });
37357
+ }, children: "Dismiss" }) }));
37358
+ return (jsx$2(ErrorDisplay, { showErrorDetails: this.props.showErrorDetails, hideErrorSourceLocations: this.props.hideErrorSourceLocations, error: this.state.currentError.error, errorInfo: this.state.currentError.errorInfo, content: jsxs(Typography, { children: ["Something went wrong.", " ", jsx$2(Link, { color: "inherit", onClick: () => {
37359
+ this.setState({ currentError: undefined });
37360
+ }, children: "Dismiss this error" }), " ", "to continue using the app. If the issue persists, try restarting the app."] }), actions: actions }));
37361
+ }
37362
+ return this.props.children;
37363
+ }
36122
37364
  }
36123
37365
 
36124
37366
  /**
@@ -36129,15 +37371,13 @@ function EmptyState({
36129
37371
  * last resort nuclear option when you think that an entire subtree should be purged.
36130
37372
  */
36131
37373
  function RemountOnValueChange(props) {
36132
- // When the value changes, useCallback will create a new component by returning a new
36133
- // function instance. Since this is a completely new component it will remount its entire tree.
36134
- const Parent = useCallback(({
36135
- children
36136
- }) => {
36137
- void props.value; // to suppress eslint complaining about the value in the deps list
36138
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, children);
36139
- }, [props.value]);
36140
- return /*#__PURE__*/React__default.createElement(Parent, null, props.children);
37374
+ // When the value changes, useCallback will create a new component by returning a new
37375
+ // function instance. Since this is a completely new component it will remount its entire tree.
37376
+ const Parent = useCallback(({ children }) => {
37377
+ void props.value; // to suppress eslint complaining about the value in the deps list
37378
+ return jsx$2(Fragment, { children: children });
37379
+ }, [props.value]);
37380
+ return jsx$2(Parent, { children: props.children });
36141
37381
  }
36142
37382
 
36143
37383
  var css$8 = "@layer reset, base, tokens, recipes, utilities;\n\n.fake-password-input {\n\t-webkit-text-security: disc;\n}\n";
@@ -88704,7 +89944,7 @@ function legacy(parser) {
88704
89944
  return new LanguageSupport(StreamLanguage.define(parser));
88705
89945
  }
88706
89946
  function sql$1(dialectName) {
88707
- return import('./index-B4QJRCC8.js').then(m => m.sql({ dialect: m[dialectName] }));
89947
+ return import('./index-DXHvsHzl.js').then(m => m.sql({ dialect: m[dialectName] }));
88708
89948
  }
88709
89949
  /**
88710
89950
  An array of language descriptions for known language packages.
@@ -88715,7 +89955,7 @@ const languages = [
88715
89955
  name: "C",
88716
89956
  extensions: ["c", "h", "ino"],
88717
89957
  load() {
88718
- return import('./index-BWEGuIck.js').then(m => m.cpp());
89958
+ return import('./index-DUpgA7e6.js').then(m => m.cpp());
88719
89959
  }
88720
89960
  }),
88721
89961
  /*@__PURE__*/LanguageDescription.of({
@@ -88723,7 +89963,7 @@ const languages = [
88723
89963
  alias: ["cpp"],
88724
89964
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
88725
89965
  load() {
88726
- return import('./index-BWEGuIck.js').then(m => m.cpp());
89966
+ return import('./index-DUpgA7e6.js').then(m => m.cpp());
88727
89967
  }
88728
89968
  }),
88729
89969
  /*@__PURE__*/LanguageDescription.of({
@@ -88743,7 +89983,7 @@ const languages = [
88743
89983
  name: "Go",
88744
89984
  extensions: ["go"],
88745
89985
  load() {
88746
- return import('./index-BIOeAcXP.js').then(m => m.go());
89986
+ return import('./index-I7fQaE0_.js').then(m => m.go());
88747
89987
  }
88748
89988
  }),
88749
89989
  /*@__PURE__*/LanguageDescription.of({
@@ -88758,7 +89998,7 @@ const languages = [
88758
89998
  name: "Java",
88759
89999
  extensions: ["java"],
88760
90000
  load() {
88761
- return import('./index-CZgHF8IG.js').then(m => m.java());
90001
+ return import('./index-DRTvKm-0.js').then(m => m.java());
88762
90002
  }
88763
90003
  }),
88764
90004
  /*@__PURE__*/LanguageDescription.of({
@@ -88773,7 +90013,7 @@ const languages = [
88773
90013
  name: "Jinja",
88774
90014
  extensions: ["j2", "jinja", "jinja2"],
88775
90015
  load() {
88776
- return import('./index-CoSfKtTh.js').then(m => m.jinja());
90016
+ return import('./index-DrXETBmj.js').then(m => m.jinja());
88777
90017
  }
88778
90018
  }),
88779
90019
  /*@__PURE__*/LanguageDescription.of({
@@ -88781,7 +90021,7 @@ const languages = [
88781
90021
  alias: ["json5"],
88782
90022
  extensions: ["json", "map"],
88783
90023
  load() {
88784
- return import('./index-Bk_C_6fe.js').then(m => m.json());
90024
+ return import('./index-CrogdRc3.js').then(m => m.json());
88785
90025
  }
88786
90026
  }),
88787
90027
  /*@__PURE__*/LanguageDescription.of({
@@ -88795,14 +90035,14 @@ const languages = [
88795
90035
  name: "LESS",
88796
90036
  extensions: ["less"],
88797
90037
  load() {
88798
- return import('./index-BY-ER3Px.js').then(m => m.less());
90038
+ return import('./index-CtcRTdcC.js').then(m => m.less());
88799
90039
  }
88800
90040
  }),
88801
90041
  /*@__PURE__*/LanguageDescription.of({
88802
90042
  name: "Liquid",
88803
90043
  extensions: ["liquid"],
88804
90044
  load() {
88805
- return import('./index-DHaV44R1.js').then(m => m.liquid());
90045
+ return import('./index-DpfKCYgk.js').then(m => m.liquid());
88806
90046
  }
88807
90047
  }),
88808
90048
  /*@__PURE__*/LanguageDescription.of({
@@ -88828,7 +90068,7 @@ const languages = [
88828
90068
  name: "PHP",
88829
90069
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
88830
90070
  load() {
88831
- return import('./index-D0csatt1.js').then(m => m.php());
90071
+ return import('./index-Z2_pOHuN.js').then(m => m.php());
88832
90072
  }
88833
90073
  }),
88834
90074
  /*@__PURE__*/LanguageDescription.of({
@@ -88845,28 +90085,28 @@ const languages = [
88845
90085
  extensions: ["BUILD", "bzl", "py", "pyw"],
88846
90086
  filename: /^(BUCK|BUILD)$/,
88847
90087
  load() {
88848
- return import('./index-DZMcM1se.js').then(m => m.python());
90088
+ return import('./index-DnPkbSwI.js').then(m => m.python());
88849
90089
  }
88850
90090
  }),
88851
90091
  /*@__PURE__*/LanguageDescription.of({
88852
90092
  name: "Rust",
88853
90093
  extensions: ["rs"],
88854
90094
  load() {
88855
- return import('./index-CUAKp56t.js').then(m => m.rust());
90095
+ return import('./index-Dgmw82OA.js').then(m => m.rust());
88856
90096
  }
88857
90097
  }),
88858
90098
  /*@__PURE__*/LanguageDescription.of({
88859
90099
  name: "Sass",
88860
90100
  extensions: ["sass"],
88861
90101
  load() {
88862
- return import('./index-Bt_uFFS7.js').then(m => m.sass({ indented: true }));
90102
+ return import('./index-CEJd4Yuv.js').then(m => m.sass({ indented: true }));
88863
90103
  }
88864
90104
  }),
88865
90105
  /*@__PURE__*/LanguageDescription.of({
88866
90106
  name: "SCSS",
88867
90107
  extensions: ["scss"],
88868
90108
  load() {
88869
- return import('./index-Bt_uFFS7.js').then(m => m.sass());
90109
+ return import('./index-CEJd4Yuv.js').then(m => m.sass());
88870
90110
  }
88871
90111
  }),
88872
90112
  /*@__PURE__*/LanguageDescription.of({
@@ -88897,7 +90137,7 @@ const languages = [
88897
90137
  name: "WebAssembly",
88898
90138
  extensions: ["wat", "wast"],
88899
90139
  load() {
88900
- return import('./index-BkjTw3VS.js').then(m => m.wast());
90140
+ return import('./index-Xp6XXYGL.js').then(m => m.wast());
88901
90141
  }
88902
90142
  }),
88903
90143
  /*@__PURE__*/LanguageDescription.of({
@@ -88905,7 +90145,7 @@ const languages = [
88905
90145
  alias: ["rss", "wsdl", "xsd"],
88906
90146
  extensions: ["xml", "xsl", "xsd", "svg"],
88907
90147
  load() {
88908
- return import('./index-BKgVLcTw.js').then(m => m.xml());
90148
+ return import('./index-4r5XO2hY.js').then(m => m.xml());
88909
90149
  }
88910
90150
  }),
88911
90151
  /*@__PURE__*/LanguageDescription.of({
@@ -88913,7 +90153,7 @@ const languages = [
88913
90153
  alias: ["yml"],
88914
90154
  extensions: ["yaml", "yml"],
88915
90155
  load() {
88916
- return import('./index-yLs0wQ5Z.js').then(m => m.yaml());
90156
+ return import('./index-D4NfQEba.js').then(m => m.yaml());
88917
90157
  }
88918
90158
  }),
88919
90159
  // Legacy modes ported from CodeMirror 5
@@ -89702,13 +90942,13 @@ const languages = [
89702
90942
  name: "Vue",
89703
90943
  extensions: ["vue"],
89704
90944
  load() {
89705
- return import('./index-TLrt2q2Z.js').then(m => m.vue());
90945
+ return import('./index-CfSbEMmb.js').then(m => m.vue());
89706
90946
  }
89707
90947
  }),
89708
90948
  /*@__PURE__*/LanguageDescription.of({
89709
90949
  name: "Angular Template",
89710
90950
  load() {
89711
- return import('./index-yMt81xls.js').then(m => m.angular());
90951
+ return import('./index-C-rWRmE5.js').then(m => m.angular());
89712
90952
  }
89713
90953
  })
89714
90954
  ];
@@ -174762,7 +176002,7 @@ function createRenderDelaySampler() {
174762
176002
  };
174763
176003
  }
174764
176004
 
174765
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-B7pVdy1y.js'));
176005
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-C_Rypho5.js'));
174766
176006
  const ImagePanelBody = ({
174767
176007
  topic,
174768
176008
  frameRenderedEvent,
@@ -174839,25 +176079,24 @@ const ImagePanel = /*#__PURE__*/React__default.memo(function ImagePanel(props) {
174839
176079
  // This Source Code Form is subject to the terms of the Mozilla Public
174840
176080
  // License, v2.0. If a copy of the MPL was not distributed with this
174841
176081
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
174842
-
174843
176082
  const DEFAULT_CAMERA_STATE = {
174844
- distance: -500,
174845
- perspective: localStorage.getItem("perspective") ? localStorage.getItem("perspective") === "true" : true,
174846
- phi: 89,
174847
- target: [0, 0, 0],
174848
- targetOffset: [0, 0, 0],
174849
- targetOrientation: [0, 1, 1, 1],
174850
- thetaOffset: 180,
174851
- fovy: 60,
174852
- near: 2,
174853
- far: 20000
176083
+ distance: -500,
176084
+ perspective: true,
176085
+ phi: 89,
176086
+ target: [0, 0, 0],
176087
+ targetOffset: [0, 0, 0],
176088
+ targetOrientation: [0, 1, 1, 1],
176089
+ thetaOffset: 180,
176090
+ fovy: 60,
176091
+ near: 2,
176092
+ far: 20000,
174854
176093
  };
174855
176094
 
174856
176095
  // This Source Code Form is subject to the terms of the Mozilla Public
174857
176096
  // License, v2.0. If a copy of the MPL was not distributed with this
174858
176097
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
174859
176098
 
174860
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CAgbkwe6.js'));
176099
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-1D5S7eR3.js'));
174861
176100
  const PointCloudPanelBody = ({
174862
176101
  topic,
174863
176102
  frameRenderedEvent,
@@ -174966,4 +176205,4 @@ const PointCloudPanel = /*#__PURE__*/React__default.memo(function PointCloudPane
174966
176205
  }));
174967
176206
  });
174968
176207
 
174969
- export { ifNotIn as $, AnalyticsContext as A, isEqual as B, AppEvent as C, isDesktopApp as D, ErrorDisplay as E, createTheme$1 as F, propTypesExports as G, DEFAULT_CAMERA_STATE as H, format as I, stringType as J, serializeError as K, stringify$3 as L, createIntl as M, createIntlCache as N, useAnalytics as O, PropTypes as P, indentNodeProp as Q, continuedIndent as R, Stack$1 as S, foldNodeProp as T, styleTags as U, tags$1 as V, LRLanguage as W, LanguageSupport as X, ExternalTokenizer as Y, LRParser as Z, _objectWithoutPropertiesLoose$2 as _, makeStyles as a, completeFromList as a0, syntaxTree as a1, LocalTokenGroup as a2, flatIndent as a3, delimitedIndent as a4, foldInside as a5, ContextTracker as a6, snippetCompletion as a7, IterMode as a8, NodeWeakMap as a9, EditorView as aa, EditorSelection as ab, html$6 as ac, parseMixed as ad, defineCSSCompletionSource as ae, bracketMatchingHandle as af, javascriptLanguage as ag, VisualizerConnection as ah, VisualizerContext as ai, PanelLayout as aj, ImagePanel as ak, PointCloudPanel as al, constructKeyForTopicRenderMetrics as am, globalInputEventMetricsManager as an, globalDecodeMetricsManager as ao, globalRenderMetricsManager as ap, globalThroughputMetricsManager as aq, FrameStore as ar, getIMUEventEmitter as as, baseSet as b, createAggregator as c, usePanelCatalog as d, EmptyState as e, flatRest as f, generateUtilityClass as g, PanelContext as h, isEmpty as i, PanelCatalogContext as j, usePanelStateStore as k, difference as l, murmur2 as m, usePanelContext as n, useMessagePipeline as o, useDefaultPanelTitle as p, useHoverValue as q, useSetHoverValue as r, useClearHoverValue as s, useMessagePipelineGetter as t, useTranslation as u, v4$1 as v, usePanelSettingsTreeUpdate as w, PlayerCapabilities as x, assertNever as y, PlayerPresence as z };
176208
+ export { syntaxTree as $, AnalyticsContext as A, AppEvent as B, isDesktopApp as C, createTheme$1 as D, ErrorDisplay as E, propTypesExports as F, format as G, stringType as H, serializeError as I, stringify$3 as J, createIntl as K, createIntlCache as L, useAnalytics as M, indentNodeProp as N, continuedIndent as O, PropTypes as P, foldNodeProp as Q, styleTags as R, Stack$2 as S, tags$1 as T, LRLanguage as U, LanguageSupport as V, ExternalTokenizer as W, LRParser as X, ifNotIn as Y, completeFromList as Z, _objectWithoutPropertiesLoose$2 as _, makeStyles as a, LocalTokenGroup as a0, flatIndent as a1, delimitedIndent as a2, foldInside as a3, ContextTracker as a4, snippetCompletion as a5, IterMode as a6, NodeWeakMap as a7, EditorView as a8, EditorSelection as a9, html$6 as aa, parseMixed as ab, defineCSSCompletionSource as ac, bracketMatchingHandle as ad, javascriptLanguage as ae, VisualizerConnection as af, VisualizerContext as ag, PanelLayout as ah, ImagePanel as ai, PointCloudPanel as aj, constructKeyForTopicRenderMetrics as ak, globalInputEventMetricsManager as al, globalDecodeMetricsManager as am, globalRenderMetricsManager as an, globalThroughputMetricsManager as ao, FrameStore as ap, getIMUEventEmitter as aq, baseSet as b, createAggregator as c, usePanelCatalog as d, PanelContext as e, flatRest as f, generateUtilityClass as g, PanelCatalogContext as h, isEmpty as i, usePanelStateStore as j, difference as k, usePanelContext as l, murmur2 as m, useMessagePipeline as n, useDefaultPanelTitle as o, useHoverValue as p, useSetHoverValue as q, useClearHoverValue as r, useMessagePipelineGetter as s, usePanelSettingsTreeUpdate as t, useTranslation as u, v4$1 as v, PlayerCapabilities as w, assertNever as x, PlayerPresence as y, isEqual as z };