@luxonis/visualizer-protobuf 2.57.0 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/{index-NeXqwiF7.js → index-1ad9mF-6.js} +1 -1
  2. package/dist/{index-BSkbbsBs.js → index-B7TpDVXX.js} +1 -1
  3. package/dist/{index-APJLEG3F.js → index-BAxUH3rx.js} +1 -1
  4. package/dist/{index-DT1L2GJv.js → index-BcQrfdBV.js} +1 -1
  5. package/dist/{index-BJKCsj7L.js → index-Bvqv79EN.js} +1 -1
  6. package/dist/{index-CJKBGyqg.js → index-C4GhcLZP.js} +1 -1
  7. package/dist/{index-D5NVzgfB.js → index-CKLrevxv.js} +48 -39
  8. package/dist/{index-BFLpoF0o.js → index-CN1nJB-l.js} +110 -1
  9. package/dist/{index-DhMY6_f0.js → index-CeMhPaGN.js} +1 -1
  10. package/dist/{index-BwcYZrXk.js → index-ClzK6yW2.js} +1 -1
  11. package/dist/{index-CSdP9WuF.js → index-D1bBBSN8.js} +1 -1
  12. package/dist/{index-B_v4vYFq.js → index-DKlcFX6d.js} +1 -1
  13. package/dist/{index-DUahEwlc.js → index-DROES6Ao.js} +1 -1
  14. package/dist/{index-BkD-h35E.js → index-DUpvO59u.js} +1 -1
  15. package/dist/{index-DszCF1JN.js → index-DeEszsqb.js} +2 -2
  16. package/dist/{index-xOnGLFPm.js → index-IhfRddgY.js} +1 -1
  17. package/dist/{index-BQTr3SzH.js → index-JyyEtFg5.js} +1 -1
  18. package/dist/{index-BEytZkov.js → index-XibaEjom.js} +1 -1
  19. package/dist/{index-Chj4qsE1.js → index-j4EekEtI.js} +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/lib/src/components/PanelToolbar.d.ts.map +1 -1
  22. package/dist/lib/src/components/PanelToolbar.js +7 -4
  23. package/dist/lib/src/components/PanelToolbar.js.map +1 -1
  24. package/dist/lib/src/output.css +1 -1
  25. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts +2 -0
  26. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts.map +1 -1
  27. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js +109 -1
  28. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js.map +1 -1
  29. package/package.json +1 -1
@@ -3,7 +3,7 @@ import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Compo
3
3
  import ReactDOM__default from 'react-dom';
4
4
  import { Z as isSymbol, $ as toString, a0 as keys, a1 as getSymbols$1, a2 as stubArray, a3 as arrayPush, a4 as baseGetAllKeys, g as getTag, a5 as getAllKeys, k as baseGet, c as baseIteratee, j as castPath, t as toKey, a6 as arrayMap$1, a7 as baseUniq, b as baseFlatten, a8 as useMustNotChange, a9 as useCurrentLayoutActions, aa as useCurrentLayoutSelector, r as reportError, A as AppError, L as Logger, u as useGuaranteedContext, ab as usePanelMosaicId, ac as useSelectedPanels, ad as PANEL_TITLE_CONFIG_KEY, ae as noop$4, o as getPanelTypeFromId, M as useShallowMemo, T as TAB_PANEL_TYPE, J as filterMap, d as dist$2, af as useAppConfiguration, ag as useValueChangedDebugLog, V as typescript, ah as useJsonTreeTheme } from './depth-CJRDcPfJ.js';
5
5
  import { createStore, useStore } from 'zustand';
6
- import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, P as PropTypes, E as ErrorDisplay, S as Stack$1, m as makeStyles$1, _ as _extends$1, W as WorkspaceContext, u as useAnalytics, a as AppEvent, L as LeftSidebarItemKeys, R as RightSidebarItemKeys, d as useTranslation, e as usePanelCatalog, h as EmptyState, i as isEmpty, j as PanelContext, k as PanelCatalogContext, l as usePanelStateStore, n as useDefaultPanelTitle, o as useWorkspaceStore, p as WorkspaceStoreSelectors, q as difference, r as usePanelContext, s as useMessagePipeline, v as v4, t as useHoverValue, w as useSetHoverValue, x as useClearHoverValue, y as useMessagePipelineGetter, z as usePanelSettingsTreeUpdate, B as PlayerCapabilities, C as assertNever, D as PlayerPresence, F as isEqual, G as isDesktopApp, H as createTheme, I as propTypesExports, J as DEFAULT_CAMERA_STATE$1, K as format$1, M as z, N as serializeError, O as stringify$1, Q as createIntl, T as createIntlCache } from './index-D5NVzgfB.js';
6
+ import { g as generateUtilityClass, c as createAggregator, f as flatRest, b as baseSet, A as AnalyticsContext, P as PropTypes, E as ErrorDisplay, S as Stack$1, m as makeStyles$1, _ as _extends$1, W as WorkspaceContext, u as useAnalytics, a as AppEvent, L as LeftSidebarItemKeys, R as RightSidebarItemKeys, d as useTranslation, e as usePanelCatalog, h as EmptyState, i as isEmpty, j as PanelContext, k as PanelCatalogContext, l as usePanelStateStore, n as useDefaultPanelTitle, o as useWorkspaceStore, p as WorkspaceStoreSelectors, q as difference, r as usePanelContext, s as useMessagePipeline, v as v4, t as useHoverValue, w as useSetHoverValue, x as useClearHoverValue, y as useMessagePipelineGetter, z as usePanelSettingsTreeUpdate, B as PlayerCapabilities, C as assertNever, D as PlayerPresence, F as isEqual, G as isDesktopApp, H as createTheme, I as propTypesExports, J as DEFAULT_CAMERA_STATE$1, K as format$1, M as z, N as serializeError, O as stringify$1, Q as createIntl, T as createIntlCache } from './index-CKLrevxv.js';
7
7
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
8
8
  import { g as getDefaultExportFromCjs, c as commonjsGlobal, d as getAugmentedNamespace } from './protobuf-B55JS-Px.js';
9
9
  import { Link, Button, alpha, IconButton, Card, CardActionArea, CardMedia, CardContent, Typography, Container, Tooltip, Fade, ListItem, ListItemButton, ListItemText, List, TextField, InputAdornment, Popper, Grow, Paper, ClickAwayListener, Menu, MenuItem, Divider, buttonClasses, Backdrop, Chip, useTheme, alertClasses, darken, lighten, inputBaseClasses, autocompleteClasses, inputClasses, Checkbox, dialogActionsClasses, filledInputClasses, inputAdornmentClasses, listSubheaderClasses, selectClasses, tableCellClasses, ThemeProvider as ThemeProvider$1, SvgIcon, tabsClasses as tabsClasses$1, tabClasses, Tabs, Tab, ListItemIcon } from '@mui/material';
@@ -72634,6 +72634,14 @@ class CameraStateSettings extends SceneExtension {
72634
72634
  #isDraggingForRotation = false;
72635
72635
  #lastMouseX = 0;
72636
72636
  #lastMouseY = 0;
72637
+
72638
+ // Keyboard panning state
72639
+ #pressedKeys = new Set();
72640
+ // Orbiting state
72641
+ #orbitActive = false;
72642
+ #orbitSpeedDegPerSec = 15; // degrees per second
72643
+ #orbitDirection = 1; // 1 or -1
72644
+
72637
72645
  constructor(renderer, canvas, aspect) {
72638
72646
  super("foxglove.CameraStateSettings", renderer);
72639
72647
  this.renderer = renderer;
@@ -72673,7 +72681,17 @@ class CameraStateSettings extends SceneExtension {
72673
72681
  this.#setDefaultCameraState(true);
72674
72682
  });
72675
72683
  const controls = this.#controls;
72684
+ // Track time between frames for consistent keyboard pan speed
72685
+ let lastTime = performance.now();
72676
72686
  const animate = () => {
72687
+ const now = performance.now();
72688
+ const dt = Math.max(0, (now - lastTime) / 1000);
72689
+ lastTime = now;
72690
+
72691
+ // Apply keyboard panning before updating controls
72692
+ this.#applyKeyboardPan(dt);
72693
+ // Apply orbiting if enabled
72694
+ this.#updateOrbit(dt);
72677
72695
  controls.update(1.0);
72678
72696
  requestAnimationFrame(animate);
72679
72697
  };
@@ -72686,6 +72704,11 @@ class CameraStateSettings extends SceneExtension {
72686
72704
  canvas.addEventListener("mouseleave", this.#handleMouseLeave);
72687
72705
  canvas.addEventListener("contextmenu", event => event.preventDefault());
72688
72706
 
72707
+ // Keyboard listeners (canvas must be focused)
72708
+ canvas.addEventListener("keydown", this.#handleKeyDown);
72709
+ canvas.addEventListener("keyup", this.#handleKeyUp);
72710
+ canvas.addEventListener("blur", this.#handleBlur);
72711
+
72689
72712
  // CAMERA "ICON"
72690
72713
  this.cameraIcon();
72691
72714
  this.#setDefaultCameraState();
@@ -72799,12 +72822,26 @@ class CameraStateSettings extends SceneExtension {
72799
72822
  window.removeEventListener("mouseup", this.#handleMouseUp);
72800
72823
  this.#canvas.removeEventListener("mouseleave", this.#handleMouseLeave);
72801
72824
  this.#canvas.removeEventListener("contextmenu", event => event.preventDefault());
72825
+ // Keyboard listeners cleanup
72826
+ this.#canvas.removeEventListener("keydown", this.#handleKeyDown);
72827
+ this.#canvas.removeEventListener("keyup", this.#handleKeyUp);
72828
+ this.#canvas.removeEventListener("blur", this.#handleBlur);
72802
72829
  this.#controls.dispose();
72803
72830
  if (this.#updateInterval) {
72804
72831
  clearInterval(this.#updateInterval);
72805
72832
  }
72806
72833
  super.dispose();
72807
72834
  }
72835
+
72836
+ // Public API to control orbiting externally
72837
+ startOrbit(speedDegPerSec, direction) {
72838
+ if (speedDegPerSec != undefined) this.#orbitSpeedDegPerSec = Math.max(0.1, speedDegPerSec);
72839
+ if (direction === 1 || direction === -1) this.#orbitDirection = direction;
72840
+ this.#orbitActive = true;
72841
+ }
72842
+ stopOrbit() {
72843
+ this.#orbitActive = false;
72844
+ }
72808
72845
  settingsNodes() {
72809
72846
  return [this.#cameraSettingsNode(), this.#frameSettingsNode()];
72810
72847
  }
@@ -73069,6 +73106,8 @@ class CameraStateSettings extends SceneExtension {
73069
73106
  }
73070
73107
  };
73071
73108
  #handleMouseDown = event => {
73109
+ // Ensure canvas has focus for keyboard input
73110
+ this.#canvas.focus();
73072
73111
  if (event.button === 0) {
73073
73112
  event.preventDefault();
73074
73113
  this.#isDraggingForRotation = true;
@@ -73076,6 +73115,76 @@ class CameraStateSettings extends SceneExtension {
73076
73115
  this.#lastMouseY = event.clientY;
73077
73116
  }
73078
73117
  };
73118
+
73119
+ // Keyboard input handlers and per-frame pan
73120
+ #handleKeyDown = event => {
73121
+ const key = event.key.toLowerCase();
73122
+
73123
+ // Orbit controls
73124
+ if (key === "o") {
73125
+ // Shift+O toggles and flips direction
73126
+ if (event.shiftKey) this.#orbitDirection *= -1;
73127
+ this.#orbitActive = !this.#orbitActive;
73128
+ event.preventDefault();
73129
+ return;
73130
+ }
73131
+ if (key === "q") {
73132
+ // slower
73133
+ this.#orbitSpeedDegPerSec = Math.max(0.5, this.#orbitSpeedDegPerSec * 0.8);
73134
+ event.preventDefault();
73135
+ return;
73136
+ }
73137
+ if (key === "e") {
73138
+ // faster
73139
+ this.#orbitSpeedDegPerSec = Math.min(360, this.#orbitSpeedDegPerSec * 1.25);
73140
+ event.preventDefault();
73141
+ return;
73142
+ }
73143
+
73144
+ // Panning keys
73145
+ if (key === "w" || key === "a" || key === "s" || key === "d" || key === "shift") {
73146
+ this.#pressedKeys.add(key);
73147
+ event.preventDefault();
73148
+ }
73149
+ };
73150
+ #handleKeyUp = event => {
73151
+ const key = event.key.toLowerCase();
73152
+ if (this.#pressedKeys.has(key)) {
73153
+ this.#pressedKeys.delete(key);
73154
+ event.preventDefault();
73155
+ }
73156
+ };
73157
+ #handleBlur = () => {
73158
+ this.#pressedKeys.clear();
73159
+ };
73160
+ #applyKeyboardPan(dt) {
73161
+ if (this.#pressedKeys.size === 0) return;
73162
+
73163
+ // Scale pan speed with camera distance for consistent feel
73164
+ const baseSpeed = Math.max(0.001, this.#controls.distance * 0.5); // world units per second
73165
+ const speed = this.#pressedKeys.has("shift") ? baseSpeed * 2 : baseSpeed;
73166
+ let dx = 0;
73167
+ let dy = 0;
73168
+ if (this.#pressedKeys.has("a")) dx -= speed * dt; // left
73169
+ if (this.#pressedKeys.has("d")) dx += speed * dt; // right
73170
+ if (this.#pressedKeys.has("w")) dy -= speed * dt; // up
73171
+ if (this.#pressedKeys.has("s")) dy += speed * dt; // down
73172
+
73173
+ if (dx !== 0 || dy !== 0) {
73174
+ // Truck pans along camera's local X/Y axes
73175
+ this.#controls.truck(dx, dy, false);
73176
+ }
73177
+ }
73178
+ #updateOrbit(dt) {
73179
+ if (!this.#orbitActive) return;
73180
+ const previousState = cloneDeep(this.renderer.config.cameraState);
73181
+ const delta = this.#orbitSpeedDegPerSec * dt * this.#orbitDirection;
73182
+ this.renderer.updateConfig(draft => {
73183
+ draft.cameraState.thetaOffset += delta;
73184
+ });
73185
+ this.#applyCameraStateToControls(this.renderer.config.cameraState, previousState);
73186
+ this.renderer.emit("cameraMove", this.renderer);
73187
+ }
73079
73188
  #handleMouseMove = event => {
73080
73189
  if (!this.#isDraggingForRotation) {
73081
73190
  return;
@@ -1,4 +1,4 @@
1
- import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ai as parseMixed } from './index-D5NVzgfB.js';
1
+ import { a9 as ContextTracker, a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ai as parseMixed } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-D5NVzgfB.js';
1
+ import { a1 as ExternalTokenizer, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { Y as styleTags, Z as tags, ak as javascriptLanguage, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-D5NVzgfB.js';
1
+ import { Y as styleTags, Z as tags, ak as javascriptLanguage, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, aa as LocalTokenGroup, ab as snippetCompletion, a5 as syntaxTree, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, a3 as ifNotIn, a4 as completeFromList, ac as IterMode, ad as NodeWeakMap } from './index-D5NVzgfB.js';
1
+ import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, aa as LocalTokenGroup, ab as snippetCompletion, a5 as syntaxTree, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, a6 as flatIndent, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, a3 as ifNotIn, a4 as completeFromList, ac as IterMode, ad as NodeWeakMap } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, Y as styleTags, Z as tags, a0 as LanguageSupport, a2 as LRParser } from './index-D5NVzgfB.js';
1
+ import { $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, Y as styleTags, Z as tags, a0 as LanguageSupport, a2 as LRParser } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, a5 as syntaxTree, a3 as ifNotIn, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ac as IterMode, a4 as completeFromList, ad as NodeWeakMap, ab as snippetCompletion } from './index-D5NVzgfB.js';
1
+ import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, a5 as syntaxTree, a3 as ifNotIn, $ as LRLanguage, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a8 as foldInside, a0 as LanguageSupport, ac as IterMode, a4 as completeFromList, ad as NodeWeakMap, ab as snippetCompletion } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { ImagePanel } from './index-BFLpoF0o.js';
1
+ import { ImagePanel } from './index-CN1nJB-l.js';
2
2
  import 'react';
3
3
  import 'react-dom';
4
4
  import './depth-CJRDcPfJ.js';
@@ -8,7 +8,7 @@ import 'zustand';
8
8
  import 'react-mosaic-component';
9
9
  import '@mui/material';
10
10
  import './isArrayLikeObject-Bytw9p-q.js';
11
- import './index-D5NVzgfB.js';
11
+ import './index-CKLrevxv.js';
12
12
  import './comlink-DHMAu6X7.js';
13
13
  import './utils-Hzt3wxhG.js';
14
14
  import './FoxgloveServer-MMAMiqqQ.js';
@@ -1,4 +1,4 @@
1
- import { af as EditorView, ag as EditorSelection, $ as LRLanguage, Y as styleTags, Z as tags, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a0 as LanguageSupport, a2 as LRParser, a5 as syntaxTree, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-D5NVzgfB.js';
1
+ import { af as EditorView, ag as EditorSelection, $ as LRLanguage, Y as styleTags, Z as tags, U as indentNodeProp, a7 as delimitedIndent, X as foldNodeProp, a0 as LanguageSupport, a2 as LRParser, a5 as syntaxTree, ah as html, ai as parseMixed, a1 as ExternalTokenizer } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, X as foldNodeProp, a8 as foldInside, U as indentNodeProp, V as continuedIndent, ae as defineCSSCompletionSource, a0 as LanguageSupport } from './index-D5NVzgfB.js';
1
+ import { a1 as ExternalTokenizer, a9 as ContextTracker, Y as styleTags, Z as tags, a2 as LRParser, $ as LRLanguage, X as foldNodeProp, a8 as foldInside, U as indentNodeProp, V as continuedIndent, ae as defineCSSCompletionSource, a0 as LanguageSupport } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, aa as LocalTokenGroup, ah as html, ai as parseMixed, ak as javascriptLanguage } from './index-D5NVzgfB.js';
1
+ import { Y as styleTags, Z as tags, $ as LRLanguage, a0 as LanguageSupport, a2 as LRParser, aa as LocalTokenGroup, ah as html, ai as parseMixed, ak as javascriptLanguage } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
@@ -1,4 +1,4 @@
1
- import { Y as styleTags, Z as tags, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, ae as defineCSSCompletionSource, a0 as LanguageSupport, a2 as LRParser, a1 as ExternalTokenizer } from './index-D5NVzgfB.js';
1
+ import { Y as styleTags, Z as tags, $ as LRLanguage, U as indentNodeProp, V as continuedIndent, X as foldNodeProp, a8 as foldInside, ae as defineCSSCompletionSource, a0 as LanguageSupport, a2 as LRParser, a1 as ExternalTokenizer } from './index-CKLrevxv.js';
2
2
  import './depth-CJRDcPfJ.js';
3
3
  import './protobuf-B55JS-Px.js';
4
4
  import 'protobufjs/minimal';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { au as FrameStore, ao as ImagePanel, an as PanelLayout, ap as PointCloudPanel, al as VisualizerConnection, am as VisualizerContext, ar as globalDecodeMetricsManager, aq as globalInputEventMetricsManager, as as globalRenderMetricsManager, at as globalThroughputMetricsManager } from './index-D5NVzgfB.js';
1
+ export { au as FrameStore, ao as ImagePanel, an as PanelLayout, ap as PointCloudPanel, al as VisualizerConnection, am as VisualizerContext, ar as globalDecodeMetricsManager, aq as globalInputEventMetricsManager, as as globalRenderMetricsManager, at as globalThroughputMetricsManager } from './index-CKLrevxv.js';
2
2
  export { S as getDistanceFromDepthDataForOffset } from './depth-CJRDcPfJ.js';
3
3
  import './comlink-DHMAu6X7.js';
4
4
  import './utils-Hzt3wxhG.js';
@@ -1 +1 @@
1
- {"version":3,"file":"PanelToolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,eAAe,CAAC;AA6BvB,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,YAAY,CAAC;AAI5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,sCAAsC,CAAC;AAkL9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2WpD,CAAC"}
1
+ {"version":3,"file":"PanelToolbar.d.ts","sourceRoot":"","sources":["../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"AAGA,OAAO,eAAe,CAAC;AA6BvB,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,YAAY,CAAC;AAI5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,sCAAsC,CAAC;AA0N9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2UpD,CAAC"}
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  // License, v2.0. If a copy of the MPL was not distributed with this
4
4
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
5
5
  import "../output.css";
6
- import { ArrowDownIcon, ArrowUpIcon, Button, CrossIcon, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Flex, FullscreenIcon, HelpIcon, Icon, Label, MoreMenuIcon, NormalText, SubHeader, Tooltip } from "@luxonis/common-fe-components";
6
+ import { ArrowDownIcon, ArrowUpIcon, Button, CrossIcon, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Flex, FullscreenIcon, HelpIcon, Icon, Label, MoreMenuIcon, NormalText, SubHeader, Tooltip, } from "@luxonis/common-fe-components";
7
7
  import { CiFilter } from "react-icons/ci";
8
8
  import { FaCaretDown, FaCaretUp } from "react-icons/fa";
9
9
  import { ImCheckboxChecked, ImCheckboxUnchecked } from "react-icons/im";
@@ -12,7 +12,10 @@ import { useDetections } from "./Panel.js";
12
12
  import { createEventLoopDelaySampler } from "./measure-event-loop-delay";
13
13
  import { useConnections } from "../context/ConnectionsProvider.js";
14
14
  import "@luxonis/common-fe-components/styles";
15
- import { constructKeyForTopicRenderMetrics, globalInputEventMetricsManager, globalRenderMetricsManager } from "../utils/metrics-manager";
15
+ import { constructKeyForTopicRenderMetrics, globalInputEventMetricsManager, globalRenderMetricsManager, } from "../utils/metrics-manager";
16
+ function PointCloudPanelInstructions() {
17
+ return (_jsxs(_Fragment, { children: [_jsx(Label, { text: "To move camera:" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Scroll:" }), " Zoom In and Out"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Left-click + Drag:" }), " Rotate Camera"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Right-click + Drag:" }), " Move Camera (X and Y axes)"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "WASD:" }), " Pan Camera"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "SHIFT+WASD:" }), " Pan Camera (Faster)"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "O:" }), " Orbit Camera"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "SHIFT+O:" }), " Orbit Camera (Opposite Direction)"] })] }), _jsx(Label, { text: "While orbiting:" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Q:" }), " Slow Down"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "E:" }), " Speed Up"] })] })] }));
18
+ }
16
19
  const METRICS_UPDATE_INTERVAL = 500;
17
20
  function PanelToolbarMetrics({ targetFps, metrics, inDropdown, topic, isPointcloud, }) {
18
21
  const [renderMetricsKey, annotationsMetricsKey] = React.useMemo(() => {
@@ -139,7 +142,7 @@ export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations =
139
142
  const wrapperRef = React.useRef(null);
140
143
  const wrapperBreakpointRef = React.useRef(null);
141
144
  const parentContainer = wrapperBreakpointRef.current ?? wrapperRef.current ?? document.body;
142
- return (_jsx(Flex, { direction: "row", gap: "xs", align: "center", justify: "space-between", className: "px-4 bg-white", ref: wrapperRef, children: _jsxs(Flex, { direction: "row", gap: "xs", align: "center", justify: touchesBreakpoint ? "space-between" : "start", width: "full", paddingY: "xs", children: [_jsxs(Flex, { width: "fit", gap: "xxs", className: "flex-col xl:flex-row items-start xl:items-end", children: [_jsx(SubHeader, { text: name, className: "whitespace-nowrap text-[20px]/[20px]" }), resolution && (_jsx(Label, { text: `(${resolution})`, className: "text-[14px]/[14px] xl:pb-[2px]" }))] }), touchesBreakpoint ? (_jsxs(Flex, { direction: "row", gap: "xs", align: "center", children: [actions, _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { icon: MoreMenuIcon, variant: "outline", colorVariant: "white", size: "sm" }) }), _jsxs(DropdownMenuContent, { ref: wrapperBreakpointRef, children: [_jsx(PanelToolbarMetrics, { targetFps: targetFps, metrics: metrics, topic: topic, inDropdown: true, isPointcloud: kind === "pointCloud" }), kind === "pointCloud" && (_jsx(Tooltip, { parentContainer: parentContainer, side: "bottom", content: _jsxs(_Fragment, { children: [_jsx(Label, { text: "To move camera:" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Scroll:" }), " Zoom In and Out"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Left-click + Drag:" }), " Rotate Camera"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Right-click + Drag:" }), " Move Camera (X and Y axes)"] })] })] }), children: _jsx(DropdownMenuItem, { icon: HelpIcon, onClick: (e) => {
145
+ return (_jsx(Flex, { direction: "row", gap: "xs", align: "center", justify: "space-between", className: "px-4 bg-white", ref: wrapperRef, children: _jsxs(Flex, { direction: "row", gap: "xs", align: "center", justify: touchesBreakpoint ? "space-between" : "start", width: "full", paddingY: "xs", children: [_jsxs(Flex, { width: "fit", gap: "xxs", className: "flex-col xl:flex-row items-start xl:items-end", children: [_jsx(SubHeader, { text: name, className: "whitespace-nowrap text-[20px]/[20px]" }), resolution && (_jsx(Label, { text: `(${resolution})`, className: "text-[14px]/[14px] xl:pb-[2px]" }))] }), touchesBreakpoint ? (_jsxs(Flex, { direction: "row", gap: "xs", align: "center", children: [actions, _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { icon: MoreMenuIcon, variant: "outline", colorVariant: "white", size: "sm" }) }), _jsxs(DropdownMenuContent, { ref: wrapperBreakpointRef, children: [_jsx(PanelToolbarMetrics, { targetFps: targetFps, metrics: metrics, topic: topic, inDropdown: true, isPointcloud: kind === "pointCloud" }), kind === "pointCloud" && (_jsx(Tooltip, { parentContainer: parentContainer, side: "bottom", content: _jsx(PointCloudPanelInstructions, {}), children: _jsx(DropdownMenuItem, { icon: HelpIcon, onClick: (e) => {
143
146
  e.stopPropagation();
144
147
  e.preventDefault();
145
148
  }, cursor: "help", children: "Point Cloud Details" }) })), !disableAnnotations && kind === "image" && (_jsxs(DropdownMenuSub, { children: [_jsx(DropdownMenuSubTrigger, { disabled: detections.length === 0, style: { opacity: detections.length === 0 ? 0.5 : 1 }, children: "Annotations" }), _jsxs(DropdownMenuSubContent, { children: [detections.map((detection) => makeDetection(detection, { extra: false })), hasExtra && (_jsx(Button, { width: "full", paddingY: "xs", variant: "ghost", "aria-expanded": extraVisible ? "true" : undefined, onClick: () => {
@@ -152,6 +155,6 @@ export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations =
152
155
  }, icon: extraVisible ? ArrowUpIcon : ArrowDownIcon, style: {
153
156
  borderRadius: 4,
154
157
  }, children: extraVisible ? "Less" : "More" })), extraVisible &&
155
- detections.map((detection) => makeDetection(detection, { extra: true }))] })] })), kind === "pointCloud" && (_jsx(Flex, { children: _jsx(Tooltip, { parentContainer: parentContainer, side: "bottom", content: _jsxs(_Fragment, { children: [_jsx(Label, { text: "To move camera:" }), _jsxs("ul", { children: [_jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Scroll:" }), " Zoom In and Out"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Left-click + Drag:" }), " Rotate Camera"] }), _jsxs("li", { children: [_jsx("b", { className: "font-semibold", children: "Right-click + Drag:" }), " Move Camera (X and Y axes)"] })] })] }), children: _jsx(Button, { icon: HelpIcon, variant: "outline", colorVariant: "white", size: "sm", className: "text-gray-700" }) }) })), _jsx(Tooltip, { content: "Move Panel Up", parentContainer: parentContainer, children: _jsx(Button, { icon: FaCaretUp, variant: "outline", colorVariant: "white", size: "sm", disabled: !canMoveUp, onClick: moveUp }) }), _jsx(Tooltip, { content: "Move Panel Down", parentContainer: parentContainer, children: _jsx(Button, { icon: FaCaretDown, variant: "outline", colorVariant: "white", size: "sm", disabled: !canMoveDown, onClick: moveDown }) }), toggleFullscreen && (_jsx(Tooltip, { content: "Fullscreen", parentContainer: parentContainer, children: _jsx(Button, { icon: FullscreenIcon, variant: "outline", colorVariant: "white", size: "sm", onClick: toggleFullscreen }) })), actions, _jsx(Tooltip, { content: "Close Stream", parentContainer: parentContainer, children: _jsx(Button, { icon: CrossIcon, variant: "outline", colorVariant: "white", size: "sm", onClick: () => toggleTopic?.(name) }) })] })] }))] }) }));
158
+ detections.map((detection) => makeDetection(detection, { extra: true }))] })] })), kind === "pointCloud" && (_jsx(Flex, { children: _jsx(Tooltip, { parentContainer: parentContainer, side: "bottom", content: _jsx(PointCloudPanelInstructions, {}), children: _jsx(Button, { icon: HelpIcon, variant: "outline", colorVariant: "white", size: "sm", className: "text-gray-700" }) }) })), _jsx(Tooltip, { content: "Move Panel Up", parentContainer: parentContainer, children: _jsx(Button, { icon: FaCaretUp, variant: "outline", colorVariant: "white", size: "sm", disabled: !canMoveUp, onClick: moveUp }) }), _jsx(Tooltip, { content: "Move Panel Down", parentContainer: parentContainer, children: _jsx(Button, { icon: FaCaretDown, variant: "outline", colorVariant: "white", size: "sm", disabled: !canMoveDown, onClick: moveDown }) }), toggleFullscreen && (_jsx(Tooltip, { content: "Fullscreen", parentContainer: parentContainer, children: _jsx(Button, { icon: FullscreenIcon, variant: "outline", colorVariant: "white", size: "sm", onClick: toggleFullscreen }) })), actions, _jsx(Tooltip, { content: "Close Stream", parentContainer: parentContainer, children: _jsx(Button, { icon: CrossIcon, variant: "outline", colorVariant: "white", size: "sm", onClick: () => toggleTopic?.(name) }) })] })] }))] }) }));
156
159
  };
157
160
  //# sourceMappingURL=PanelToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,OAAO,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,MAAM,EACN,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,OAAO,EACR,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAmB,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,sCAAsC,CAAC;AAC9C,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAelC,MAAM,uBAAuB,GAAG,GAAY,CAAC;AAI7C,SAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,OAAO,EACP,UAAU,EACV,KAAK,EACL,YAAY,GACa;IACzB,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACnE,OAAO;YACL,iCAAiC,CAC/B,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,kBAAkB,EAC3D,KAAK,CACN;YACD,iCAAiC,CAAC,wBAAwB,EAAE,KAAK,CAAC;SACnE,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAClD,0BAA0B,CAAC,SAAS,CAAC,gBAAgB,CAAC,CACvD,CAAC;IACF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CACxD,0BAA0B,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAC5D,CAAC;IAEF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAElG,MAAM,cAAc,GAAG,2BAA2B,EAAE,CAAC;IAErD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE1D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,UAAU,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC;YACvE,UAAU,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,4CAA4C;IAC5C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACvE,iBAAiB,CAAC,8BAA8B,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACrF,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAE5B,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;IAEhE,MAAM,YAAY,GAAkB;QAClC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;QACtF,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;YAC3C,CAAC,CAAC;gBACE,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,OAAQ,CAAC,mBAAmB;gBACnC,IAAI,EAAE,KAAK;aACZ;YACH,CAAC,CAAC,IAAI;QACR,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;YAC1C,CAAC,CAAC;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,OAAQ,CAAC,kBAAkB;gBAClC,IAAI,EAAE,KAAK;aACZ;YACH,CAAC,CAAC,IAAI;QACR,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7F,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC7B,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE;YAC9D,CAAC,CAAC,IAAI;QACR,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;YACzC,CAAC,CAAC;gBACE,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,OAAQ,CAAC,iBAAiB;gBACjC,IAAI,EAAE,MAAM;aACb;YACH,CAAC,CAAC,IAAI;QACR,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;KAC1E,CAAC,MAAM,CAAC,OAAO,CAAkB,CAAC;IAEnC,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM,YACzF,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,OAAO,IACN,eAAe,EAAE,eAAe,EAChC,OAAO,EACL,uBACG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,yBACE,aAAG,SAAS,EAAC,eAAe,aAAE,IAAI,CAAC,KAAK,UAAO,EAC9C,IAAI,CAAC,KAAK,YAAQ,IAAI,CAAC,IAAI,KAFrB,IAAI,CAAC,KAAK,CAGd,CACN,CAAC,GACC,EAEP,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAC,SAAS,YAElB,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,gBAAgB,IACf,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACtB,CAAC,EACD,MAAM,EAAC,MAAM,EACb,IAAI,EAAE,aAAa,kCAGF,CACpB,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,IAAI,EAAE,aAAa,EACnB,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,eAAe,GACzB,CACH,GACO,CACX,CAAC,CAAC,CAAC,CACF,4BACG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,KAAC,KAAK,IAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,EAAE,IAAO,IAAI,CAAC,KAAK,CAAI,CACnF,CAAC,GACD,CACJ,GACI,CACR,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAyC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IACzF,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACnC,CAAC,KAAK,EAAE,EAAE;QACR,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,OAAO,CACL,KAAC,gBAAgB,IAAC,OAAO,EAAE,WAAW,YACpC,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,GAAG,EAAC,IAAI,aAC3B,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,GAAI,EACtF,KAAC,UAAU,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,IAC3B,GACU,CACpB,CAAC;AACJ,CAAC,CAAC;AAqBF,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,IAAI,EACJ,aAAa,EACb,kBAAkB,GAAG,KAAK,EAC1B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,OAAO,GACR,EAAE,EAAE;IACH,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAW,CAAC;IAExD,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,cAAc;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAC3E,CAAC,UAAU,CAAC,CACb,CAAC;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,eAAuB,EAAE,EAAE;QAC1B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,SAAS;YACZ,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,IAAI,IAAI;gBACxC,OAAO,EAAE,CAAC,SAAS,CAAC,OAAO;aAC5B,CAAC;SACH,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEnD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,IAAI,OAAO,EAAE,mBAAmB,IAAI,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACzF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,OAAO,CAAC,mBAAmB,IAAI,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;oBACjF,YAAY,EAAE,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,OAAO,GAAG,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,SAAqB,EAAE,EAAE,KAAK,EAAsB,EAAE,EAAE,CACvD,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CACzF,KAAC,qBAAqB,IAEpB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,GAAG,EAAE;YACZ,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,IAJI,SAAS,CAAC,IAAI,CAKnB,CACH,EACH,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACtD,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;IAE5F,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAC,KAAK,EACf,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,eAAe,EACvB,SAAS,EAAC,eAAe,EACzB,GAAG,EAAE,UAAU,YAEf,MAAC,IAAI,IACH,SAAS,EAAC,KAAK,EACf,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EACtD,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAC,IAAI,aAEb,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,SAAS,EAAC,+CAA+C,aACnF,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,sCAAsC,GAAG,EACzE,UAAU,IAAI,CACb,KAAC,KAAK,IAAC,IAAI,EAAE,IAAI,UAAU,GAAG,EAAE,SAAS,EAAC,gCAAgC,GAAG,CAC9E,IACI,EAEN,iBAAiB,CAAC,CAAC,CAAC,CACnB,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,KAAK,EAAC,QAAQ,aAC1C,OAAO,EAER,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,KAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,GAAG,GAC3D,EACtB,MAAC,mBAAmB,IAAC,GAAG,EAAE,oBAAoB,aAC5C,KAAC,mBAAmB,IAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,UAAU,QACV,YAAY,EAAE,IAAI,KAAK,YAAY,GACnC,EACD,IAAI,KAAK,YAAY,IAAI,CACxB,KAAC,OAAO,IACN,eAAe,EAAE,eAAe,EAChC,IAAI,EAAC,QAAQ,EACb,OAAO,EACL,8BACE,KAAC,KAAK,IAAC,IAAI,EAAC,iBAAiB,GAAG,EAChC,yBACE,yBACE,YAAG,SAAS,EAAC,eAAe,wBAAY,wBACrC,EACL,yBACE,YAAG,SAAS,EAAC,eAAe,mCAAuB,sBAChD,EACL,yBACE,YAAG,SAAS,EAAC,eAAe,oCAAwB,mCAEjD,IACF,IACJ,YAGL,KAAC,gBAAgB,IACf,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oDACb,CAAC,CAAC,eAAe,EAAE,CAAC;oDACpB,CAAC,CAAC,cAAc,EAAE,CAAC;gDACrB,CAAC,EACD,MAAM,EAAC,MAAM,oCAGI,GACX,CACX,EACA,CAAC,kBAAkB,IAAI,IAAI,KAAK,OAAO,IAAI,CAC1C,MAAC,eAAe,eACd,KAAC,sBAAsB,IACrB,QAAQ,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,EACjC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,4BAG9B,EACzB,MAAC,sBAAsB,eACpB,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACzE,QAAQ,IAAI,CACX,KAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAC,IAAI,EACb,OAAO,EAAC,OAAO,mBACA,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,GAAG,EAAE;gEACZ,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4DACzC,CAAC,EACD,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAChD,KAAK,EAAE;gEACL,YAAY,EAAE,CAAC;6DAChB,YAEA,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GACxB,CACV,EACA,YAAY;4DACX,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IACnD,IACT,CACnB,EACD,KAAC,gBAAgB,IAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,8BAErD,EACnB,KAAC,gBAAgB,IAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,gCAE3D,EAClB,gBAAgB,IAAI,CACnB,KAAC,gBAAgB,IAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,2BAE9C,CACpB,EACD,KAAC,gBAAgB,IACf,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAClC,QAAQ,EAAE,CAAC,WAAW,EACtB,IAAI,EAAE,SAAS,6BAGE,IACC,IACT,IACV,CACR,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,mBAAmB,IAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,GAC1B,EAEF,MAAC,IAAI,IACH,SAAS,EAAC,KAAK,EACf,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,OAAO,EACf,UAAU,EAAC,MAAM,EACjB,KAAK,EAAC,KAAK,aAEV,CAAC,kBAAkB,IAAI,IAAI,KAAK,OAAO,IAAI,CAC1C,MAAC,YAAY,eACX,KAAC,OAAO,IAAC,OAAO,EAAC,aAAa,EAAC,eAAe,EAAE,eAAe,YAC7D,KAAC,mBAAmB,IAAC,OAAO,QAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,YAC5D,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC,GACjC,GACkB,GACd,EAEV,MAAC,mBAAmB,IAAC,eAAe,EAAE,eAAe,aAClD,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EACzE,QAAQ,IAAI,CACX,KAAC,MAAM,IACL,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAC,IAAI,EACb,OAAO,EAAC,OAAO,mBACA,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,GAAG,EAAE;wDACZ,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oDACzC,CAAC,EACD,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAChD,KAAK,EAAE;wDACL,YAAY,EAAE,CAAC;qDAChB,YAEA,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GACxB,CACV,EACA,YAAY;oDACX,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IACtD,IACT,CAChB,EAEA,IAAI,KAAK,YAAY,IAAI,CACxB,KAAC,IAAI,cACH,KAAC,OAAO,IACN,eAAe,EAAE,eAAe,EAChC,IAAI,EAAC,QAAQ,EACb,OAAO,EACL,8BACE,KAAC,KAAK,IAAC,IAAI,EAAC,iBAAiB,GAAG,EAChC,yBACE,yBACE,YAAG,SAAS,EAAC,eAAe,wBAAY,wBACrC,EACL,yBACE,YAAG,SAAS,EAAC,eAAe,mCAAuB,sBAChD,EACL,yBACE,YAAG,SAAS,EAAC,eAAe,oCAAwB,mCAEjD,IACF,IACJ,YAGL,KAAC,MAAM,IACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,eAAe,GACzB,GACM,GACL,CACR,EAED,KAAC,OAAO,IAAC,OAAO,EAAC,eAAe,EAAC,eAAe,EAAE,eAAe,YAC/D,KAAC,MAAM,IACL,IAAI,EAAE,SAAS,EACf,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,CAAC,SAAS,EACpB,OAAO,EAAE,MAAM,GACf,GACM,EAEV,KAAC,OAAO,IAAC,OAAO,EAAC,iBAAiB,EAAC,eAAe,EAAE,eAAe,YACjE,KAAC,MAAM,IACL,IAAI,EAAE,WAAW,EACjB,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,CAAC,WAAW,EACtB,OAAO,EAAE,QAAQ,GACjB,GACM,EAET,gBAAgB,IAAI,CACnB,KAAC,OAAO,IAAC,OAAO,EAAC,YAAY,EAAC,eAAe,EAAE,eAAe,YAC5D,KAAC,MAAM,IACL,IAAI,EAAE,cAAc,EACpB,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,gBAAgB,GACzB,GACM,CACX,EAEA,OAAO,EAER,KAAC,OAAO,IAAC,OAAO,EAAC,cAAc,EAAC,eAAe,EAAE,eAAe,YAC9D,KAAC,MAAM,IACL,IAAI,EAAE,SAAS,EACf,OAAO,EAAC,SAAS,EACjB,YAAY,EAAC,OAAO,EACpB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAClC,GACM,IACL,IACN,CACJ,IACI,GACF,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */
2
2
  @layer properties;
3
3
  @layer theme, base, components, utilities;
4
4
  @layer theme {
@@ -13,6 +13,8 @@ export declare class CameraStateSettings extends SceneExtension implements ICame
13
13
  constructor(renderer: IRenderer, canvas: HTMLCanvasElement, aspect: number);
14
14
  private cameraIcon;
15
15
  dispose(): void;
16
+ startOrbit(speedDegPerSec?: number, direction?: 1 | -1): void;
17
+ stopOrbit(): void;
16
18
  settingsNodes(): SettingsTreeEntry[];
17
19
  handleSettingsAction: (action: SettingsTreeAction) => void;
18
20
  startFrame(currentTime: bigint, renderFrameId: AnyFrameId, fixedFrameId: AnyFrameId): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CameraStateSettings.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wEAAwE,CAAC;AAC7G,OAAO,EACL,KAAK,UAAU,EAEf,KAAK,IAAI,EAGV,MAAM,wDAAwD,CAAC;AAEhE,OAAO,KAAK,EAAc,SAAS,EAAkB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAG,KAAK,WAAW,EAAwB,MAAM,WAAW,CAAC;AAgBpE,qBAAa,mBACb,SAAQ,cACR,YAAW,cAAc;;IAEvB,SAAkB,QAAQ,EAAE,SAAS,CAAC;IAO/B,oBAAoB,EAAE,IAAI,GAAG,SAAS,CAAC;gBAoB5C,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM;IA8JhB,OAAO,CAAC,UAAU;IA8CF,OAAO,IAAI,IAAI;IAuBf,aAAa,IAAI,iBAAiB,EAAE;IAoJpC,oBAAoB,WAAY,kBAAkB,KAAG,IAAI,CA8EvE;IAEc,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,UAAU,GACvB,IAAI;IA6PA,eAAe,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,kBAAkB;IAMrE,YAAY,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,IAAI;IAMA,cAAc,IAAI,WAAW;IAI7B,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAmFtD"}
1
+ {"version":3,"file":"CameraStateSettings.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wEAAwE,CAAC;AAC7G,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,IAAI,EAEV,MAAM,wDAAwD,CAAC;AAEhE,OAAO,KAAK,EAAc,SAAS,EAAkB,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,WAAW,EAAwB,MAAM,WAAW,CAAC;AAgBnE,qBAAa,mBACb,SAAQ,cACR,YAAW,cAAc;;IAEvB,SAAkB,QAAQ,EAAE,SAAS,CAAC;IAO/B,oBAAoB,EAAE,IAAI,GAAG,SAAS,CAAC;gBA0B5C,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM;IA8KhB,OAAO,CAAC,UAAU;IA8CF,OAAO,IAAI,IAAI;IA4BxB,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;IAM7D,SAAS,IAAI,IAAI;IAIR,aAAa,IAAI,iBAAiB,EAAE;IAoJpC,oBAAoB,WAAY,kBAAkB,KAAG,IAAI,CA8EvE;IAEc,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,UAAU,GACvB,IAAI;IA6UA,eAAe,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,kBAAkB;IAMrE,YAAY,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,IAAI;IAMA,cAAc,IAAI,WAAW;IAI7B,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;CAmFtD"}
@@ -5,7 +5,7 @@ import { t } from "i18next";
5
5
  import * as _ from "lodash-es";
6
6
  import * as THREE from "three";
7
7
  import CameraControls from "camera-controls";
8
- import { CoordinateFrame, makePose, } from "@foxglove/studio-base/panels/ThreeDeeRender/transforms";
8
+ import { CoordinateFrame, makePose } from "@foxglove/studio-base/panels/ThreeDeeRender/transforms";
9
9
  import { SceneExtension } from "../SceneExtension";
10
10
  import { DEFAULT_CAMERA_STATE } from "../camera";
11
11
  import { PRECISION_DEGREES, PRECISION_DISTANCE } from "../settings";
@@ -35,6 +35,12 @@ export class CameraStateSettings extends SceneExtension {
35
35
  #isDraggingForRotation = false;
36
36
  #lastMouseX = 0;
37
37
  #lastMouseY = 0;
38
+ // Keyboard panning state
39
+ #pressedKeys = new Set();
40
+ // Orbiting state
41
+ #orbitActive = false;
42
+ #orbitSpeedDegPerSec = 15; // degrees per second
43
+ #orbitDirection = 1; // 1 or -1
38
44
  constructor(renderer, canvas, aspect) {
39
45
  super("foxglove.CameraStateSettings", renderer);
40
46
  this.renderer = renderer;
@@ -72,7 +78,16 @@ export class CameraStateSettings extends SceneExtension {
72
78
  this.#setDefaultCameraState(true);
73
79
  });
74
80
  const controls = this.#controls;
81
+ // Track time between frames for consistent keyboard pan speed
82
+ let lastTime = performance.now();
75
83
  const animate = () => {
84
+ const now = performance.now();
85
+ const dt = Math.max(0, (now - lastTime) / 1000);
86
+ lastTime = now;
87
+ // Apply keyboard panning before updating controls
88
+ this.#applyKeyboardPan(dt);
89
+ // Apply orbiting if enabled
90
+ this.#updateOrbit(dt);
76
91
  controls.update(1.0);
77
92
  requestAnimationFrame(animate);
78
93
  };
@@ -84,6 +99,10 @@ export class CameraStateSettings extends SceneExtension {
84
99
  window.addEventListener("mouseup", this.#handleMouseUp);
85
100
  canvas.addEventListener("mouseleave", this.#handleMouseLeave);
86
101
  canvas.addEventListener("contextmenu", (event) => event.preventDefault());
102
+ // Keyboard listeners (canvas must be focused)
103
+ canvas.addEventListener("keydown", this.#handleKeyDown);
104
+ canvas.addEventListener("keyup", this.#handleKeyUp);
105
+ canvas.addEventListener("blur", this.#handleBlur);
87
106
  // CAMERA "ICON"
88
107
  this.cameraIcon();
89
108
  this.#setDefaultCameraState();
@@ -192,12 +211,27 @@ export class CameraStateSettings extends SceneExtension {
192
211
  window.removeEventListener("mouseup", this.#handleMouseUp);
193
212
  this.#canvas.removeEventListener("mouseleave", this.#handleMouseLeave);
194
213
  this.#canvas.removeEventListener("contextmenu", (event) => event.preventDefault());
214
+ // Keyboard listeners cleanup
215
+ this.#canvas.removeEventListener("keydown", this.#handleKeyDown);
216
+ this.#canvas.removeEventListener("keyup", this.#handleKeyUp);
217
+ this.#canvas.removeEventListener("blur", this.#handleBlur);
195
218
  this.#controls.dispose();
196
219
  if (this.#updateInterval) {
197
220
  clearInterval(this.#updateInterval);
198
221
  }
199
222
  super.dispose();
200
223
  }
224
+ // Public API to control orbiting externally
225
+ startOrbit(speedDegPerSec, direction) {
226
+ if (speedDegPerSec != undefined)
227
+ this.#orbitSpeedDegPerSec = Math.max(0.1, speedDegPerSec);
228
+ if (direction === 1 || direction === -1)
229
+ this.#orbitDirection = direction;
230
+ this.#orbitActive = true;
231
+ }
232
+ stopOrbit() {
233
+ this.#orbitActive = false;
234
+ }
201
235
  settingsNodes() {
202
236
  return [this.#cameraSettingsNode(), this.#frameSettingsNode()];
203
237
  }
@@ -477,6 +511,8 @@ export class CameraStateSettings extends SceneExtension {
477
511
  }
478
512
  };
479
513
  #handleMouseDown = (event) => {
514
+ // Ensure canvas has focus for keyboard input
515
+ this.#canvas.focus();
480
516
  if (event.button === 0) {
481
517
  event.preventDefault();
482
518
  this.#isDraggingForRotation = true;
@@ -484,6 +520,78 @@ export class CameraStateSettings extends SceneExtension {
484
520
  this.#lastMouseY = event.clientY;
485
521
  }
486
522
  };
523
+ // Keyboard input handlers and per-frame pan
524
+ #handleKeyDown = (event) => {
525
+ const key = event.key.toLowerCase();
526
+ // Orbit controls
527
+ if (key === "o") {
528
+ // Shift+O toggles and flips direction
529
+ if (event.shiftKey)
530
+ this.#orbitDirection *= -1;
531
+ this.#orbitActive = !this.#orbitActive;
532
+ event.preventDefault();
533
+ return;
534
+ }
535
+ if (key === "q") {
536
+ // slower
537
+ this.#orbitSpeedDegPerSec = Math.max(0.5, this.#orbitSpeedDegPerSec * 0.8);
538
+ event.preventDefault();
539
+ return;
540
+ }
541
+ if (key === "e") {
542
+ // faster
543
+ this.#orbitSpeedDegPerSec = Math.min(360, this.#orbitSpeedDegPerSec * 1.25);
544
+ event.preventDefault();
545
+ return;
546
+ }
547
+ // Panning keys
548
+ if (key === "w" || key === "a" || key === "s" || key === "d" || key === "shift") {
549
+ this.#pressedKeys.add(key);
550
+ event.preventDefault();
551
+ }
552
+ };
553
+ #handleKeyUp = (event) => {
554
+ const key = event.key.toLowerCase();
555
+ if (this.#pressedKeys.has(key)) {
556
+ this.#pressedKeys.delete(key);
557
+ event.preventDefault();
558
+ }
559
+ };
560
+ #handleBlur = () => {
561
+ this.#pressedKeys.clear();
562
+ };
563
+ #applyKeyboardPan(dt) {
564
+ if (this.#pressedKeys.size === 0)
565
+ return;
566
+ // Scale pan speed with camera distance for consistent feel
567
+ const baseSpeed = Math.max(0.001, this.#controls.distance * 0.5); // world units per second
568
+ const speed = this.#pressedKeys.has("shift") ? baseSpeed * 2 : baseSpeed;
569
+ let dx = 0;
570
+ let dy = 0;
571
+ if (this.#pressedKeys.has("a"))
572
+ dx -= speed * dt; // left
573
+ if (this.#pressedKeys.has("d"))
574
+ dx += speed * dt; // right
575
+ if (this.#pressedKeys.has("w"))
576
+ dy -= speed * dt; // up
577
+ if (this.#pressedKeys.has("s"))
578
+ dy += speed * dt; // down
579
+ if (dx !== 0 || dy !== 0) {
580
+ // Truck pans along camera's local X/Y axes
581
+ this.#controls.truck(dx, dy, false);
582
+ }
583
+ }
584
+ #updateOrbit(dt) {
585
+ if (!this.#orbitActive)
586
+ return;
587
+ const previousState = _.cloneDeep(this.renderer.config.cameraState);
588
+ const delta = this.#orbitSpeedDegPerSec * dt * this.#orbitDirection;
589
+ this.renderer.updateConfig((draft) => {
590
+ draft.cameraState.thetaOffset += delta;
591
+ });
592
+ this.#applyCameraStateToControls(this.renderer.config.cameraState, previousState);
593
+ this.renderer.emit("cameraMove", this.renderer);
594
+ }
487
595
  #handleMouseMove = (event) => {
488
596
  if (!this.#isDraggingForRotation) {
489
597
  return;