@luxonis/visualizer-protobuf 2.28.0 → 2.30.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 (59) hide show
  1. package/dist/{communicator-D49kmBTQ.js → communicator-1cvNRjMr.js} +1 -1
  2. package/dist/{deserialization.worker-DsCOJqEa.js → deserialization.worker-d0xuPKYs.js} +1 -1
  3. package/dist/{index-CLPc3bUH.js → index--ExGcWRF.js} +1 -1
  4. package/dist/{index-DE0_tKGA.js → index-3y-FxBOU.js} +1 -1
  5. package/dist/{index-LmBY2nOo.js → index-5qLvVfXR.js} +1 -1
  6. package/dist/{index-DZgY6A3h.js → index-BDGOyJit.js} +1 -1
  7. package/dist/{index-B1pNpslP.js → index-BJVD4ja7.js} +1 -1
  8. package/dist/{index-CJSOG1CX.js → index-BoavvIJ0.js} +2 -2
  9. package/dist/{index-I0XgHBlj.js → index-BtVYSyU9.js} +1 -1
  10. package/dist/{index-BuRQ7ljn.js → index-C4GjAqu3.js} +111 -38
  11. package/dist/{index-CdXrBVPC.js → index-CdxzudUl.js} +37 -1
  12. package/dist/{index-CGXxFWjz.js → index-CgyrzKmo.js} +1 -1
  13. package/dist/{index-DsO3GPWF.js → index-D3e3XAuV.js} +1 -1
  14. package/dist/{index-pwNtzQuf.js → index-D7zKsndC.js} +1 -1
  15. package/dist/{index-CXdNn-IZ.js → index-DBfT810F.js} +1 -1
  16. package/dist/{index-BZ8z044k.js → index-DC1kmt3c.js} +1 -1
  17. package/dist/{index-B5_Aa-W3.js → index-DEnq90TB.js} +1 -1
  18. package/dist/{index-DbT8vr6l.js → index-DG1LjJ38.js} +1 -1
  19. package/dist/{index-BNXdmaeO.js → index-Dn4LK93L.js} +1 -1
  20. package/dist/{index-CIHmVsn2.js → index-TJDtDUfC.js} +1 -1
  21. package/dist/{index-B4d7dS8a.js → index-gihFGAxa.js} +1 -1
  22. package/dist/index.js +1 -1
  23. package/dist/lib/src/components/PanelToolbar.d.ts.map +1 -1
  24. package/dist/lib/src/components/PanelToolbar.js +3 -3
  25. package/dist/lib/src/components/PanelToolbar.js.map +1 -1
  26. package/dist/lib/src/connection/connection.d.ts.map +1 -1
  27. package/dist/lib/src/connection/connection.js +3 -0
  28. package/dist/lib/src/connection/connection.js.map +1 -1
  29. package/dist/lib/src/connection/foxglove-connection.d.ts +4 -1
  30. package/dist/lib/src/connection/foxglove-connection.d.ts.map +1 -1
  31. package/dist/lib/src/connection/foxglove-connection.js +7 -4
  32. package/dist/lib/src/connection/foxglove-connection.js.map +1 -1
  33. package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js +11 -9
  34. package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js.map +1 -1
  35. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts +2 -1
  36. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts.map +1 -1
  37. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js +42 -6
  38. package/dist/lib/src/messaging/deserialization/pointcloud/poitcloudPoolManager.js.map +1 -1
  39. package/dist/lib/src/output.css +9 -0
  40. package/dist/lib/src/protobuf.generated/EncodedFrame.js +1 -1
  41. package/dist/lib/src/protobuf.generated/Event.js +1 -1
  42. package/dist/lib/src/protobuf.generated/IMUData.js +1 -1
  43. package/dist/lib/src/protobuf.generated/ImageAnnotations.js +1 -1
  44. package/dist/lib/src/protobuf.generated/ImgDetections.js +1 -1
  45. package/dist/lib/src/protobuf.generated/ImgFrame.js +1 -1
  46. package/dist/lib/src/protobuf.generated/PointCloudData.js +1 -1
  47. package/dist/lib/src/protobuf.generated/SpatialImgDetections.js +1 -1
  48. package/dist/lib/src/protobuf.generated/common.js +1 -1
  49. package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.d.ts.map +1 -1
  50. package/dist/packages/studio-base/src/panels/ThreeDeeRender/Renderer.js.map +1 -1
  51. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts +1 -0
  52. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.d.ts.map +1 -1
  53. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js +31 -0
  54. package/dist/packages/studio-base/src/panels/ThreeDeeRender/renderables/CameraStateSettings.js.map +1 -1
  55. package/dist/{pointcloudFromDepth.worker-JVTJ-r5q.js → pointcloudFromDepth.worker-hil48rbC.js} +11 -9
  56. package/dist/{protobuf-Cr0sn6Ua.js → protobuf-By8duXQO.js} +7 -7
  57. package/dist/{worker-aVL4LGa3.js → worker-B7qK-cxf.js} +2 -2
  58. package/dist/{worker-B5OJw-Fq.js → worker-CzUjMpCN.js} +2 -2
  59. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { p as protobufsBySchema } from './protobuf-Cr0sn6Ua.js';
1
+ import { p as protobufsBySchema } from './protobuf-By8duXQO.js';
2
2
 
3
3
  // This Source Code Form is subject to the terms of the Mozilla Public
4
4
  // License, v2.0. If a copy of the MPL was not distributed with this
@@ -1,7 +1,7 @@
1
1
  import { e as expose } from './comlink-DHMAu6X7.js';
2
2
  import { t as typescript } from './useMessageReducer-jNx5e6JW.js';
3
3
  import { e as estimateObjectSize, d as dist } from './tslib.es6-C73eoP_E.js';
4
- import { T as Type, P as PointsAnnotationType, p as protobufsBySchema, a as Profile } from './protobuf-Cr0sn6Ua.js';
4
+ import { T as Type, P as PointsAnnotationType, p as protobufsBySchema, a as Profile } from './protobuf-By8duXQO.js';
5
5
  import 'react';
6
6
  import './_commonjsHelpers-E-ZsRS8r.js';
7
7
  import 'zustand';
@@ -1,4 +1,4 @@
1
- import { a8 as EditorView, a9 as EditorSelection, Q as LRLanguage, N as styleTags, O as tags, J as indentNodeProp, a0 as delimitedIndent, M as foldNodeProp, T as LanguageSupport, V as LRParser, Z as syntaxTree, aa as html, ab as parseMixed, U as ExternalTokenizer } from './index-BuRQ7ljn.js';
1
+ import { a8 as EditorView, a9 as EditorSelection, Q as LRLanguage, N as styleTags, O as tags, J as indentNodeProp, a0 as delimitedIndent, M as foldNodeProp, T as LanguageSupport, V as LRParser, Z as syntaxTree, aa as html, ab as parseMixed, U as ExternalTokenizer } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-BuRQ7ljn.js';
1
+ import { N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, ad as javascriptLanguage, Q as LRLanguage, T as LanguageSupport, V as LRParser, aa as html, ab as parseMixed, U as ExternalTokenizer } from './index-BuRQ7ljn.js';
1
+ import { N as styleTags, O as tags, ad as javascriptLanguage, Q as LRLanguage, T as LanguageSupport, V as LRParser, aa as html, ab as parseMixed, U as ExternalTokenizer } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { J as indentNodeProp, K as continuedIndent, M as foldNodeProp, N as styleTags, O as tags, Q as LRLanguage, T as LanguageSupport, U as ExternalTokenizer, V as LRParser, X as ifNotIn, Y as completeFromList, Z as syntaxTree } from './index-BuRQ7ljn.js';
1
+ import { J as indentNodeProp, K as continuedIndent, M as foldNodeProp, N as styleTags, O as tags, Q as LRLanguage, T as LanguageSupport, U as ExternalTokenizer, V as LRParser, X as ifNotIn, Y as completeFromList, Z as syntaxTree } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, a7 as defineCSSCompletionSource, T as LanguageSupport, V as LRParser, U as ExternalTokenizer } from './index-BuRQ7ljn.js';
1
+ import { N as styleTags, O as tags, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, a7 as defineCSSCompletionSource, T as LanguageSupport, V as LRParser, U as ExternalTokenizer } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { ImagePanel } from './index-CdXrBVPC.js';
1
+ import { ImagePanel } from './index-CdxzudUl.js';
2
2
  import 'react';
3
3
  import 'react-dom';
4
4
  import './tslib.es6-C73eoP_E.js';
@@ -7,7 +7,7 @@ import './_commonjsHelpers-E-ZsRS8r.js';
7
7
  import '@mui/material';
8
8
  import './isArrayLikeObject-Bytw9p-q.js';
9
9
  import 'zustand';
10
- import './index-BuRQ7ljn.js';
10
+ import './index-C4GjAqu3.js';
11
11
  import './comlink-DHMAu6X7.js';
12
12
  import './utils-Hzt3wxhG.js';
13
13
  import './FoxgloveServer-C39Uooyk.js';
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-BuRQ7ljn.js';
1
+ import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -27,7 +27,7 @@ import { defineGlobalStyles, defineTokens as defineTokens$1, defineKeyframes, de
27
27
 
28
28
  var e=[],t$1=[];function n$1(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t$1[u]={}),a=t$1[u]&&t$1[u][s]?t$1[u][s]:t$1[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
29
29
 
30
- var css$b = "/*! tailwindcss v4.0.17 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-700: oklch(0.373 0.034 259.733);\n --spacing: 0.25rem;\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .ml-auto {\n margin-left: auto;\n }\n .hidden {\n display: none;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-start {\n align-items: flex-start;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .text-\\[14px\\]\\/\\[14px\\] {\n font-size: 14px;\n line-height: 14px;\n }\n .text-\\[20px\\]\\/\\[20px\\] {\n font-size: 20px;\n line-height: 20px;\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .xl\\:flex-row {\n @media (width >= 80rem) {\n flex-direction: row;\n }\n }\n .xl\\:items-end {\n @media (width >= 80rem) {\n align-items: flex-end;\n }\n }\n .xl\\:pb-\\[2px\\] {\n @media (width >= 80rem) {\n padding-bottom: 2px;\n }\n }\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n";
30
+ var css$b = "/*! tailwindcss v4.0.17 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-700: oklch(0.373 0.034 259.733);\n --spacing: 0.25rem;\n --font-weight-semibold: 600;\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: color-mix(in oklab, currentColor 50%, transparent);\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .visible {\n visibility: visible;\n }\n .fixed {\n position: fixed;\n }\n .ml-auto {\n margin-left: auto;\n }\n .hidden {\n display: none;\n }\n .flex-col {\n flex-direction: column;\n }\n .items-start {\n align-items: flex-start;\n }\n .rounded {\n border-radius: 0.25rem;\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n .text-\\[14px\\]\\/\\[14px\\] {\n font-size: 14px;\n line-height: 14px;\n }\n .text-\\[20px\\]\\/\\[20px\\] {\n font-size: 20px;\n line-height: 20px;\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .whitespace-nowrap {\n white-space: nowrap;\n }\n .text-gray-700 {\n color: var(--color-gray-700);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .xl\\:flex-row {\n @media (width >= 80rem) {\n flex-direction: row;\n }\n }\n .xl\\:items-end {\n @media (width >= 80rem) {\n align-items: flex-end;\n }\n }\n .xl\\:pb-\\[2px\\] {\n @media (width >= 80rem) {\n padding-bottom: 2px;\n }\n }\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n";
31
31
  n$1(css$b,{});
32
32
 
33
33
  // This Source Code Form is subject to the terms of the Mozilla Public
@@ -530,9 +530,12 @@ class DepthToPointcloudWorkerPool {
530
530
  #processedFrameQueue = [];
531
531
  #isWebGpuSupported = false;
532
532
  #metrics;
533
+ #maximumStorageBufferSize;
533
534
  #FRAME_BATCH_SIZE;
534
535
  #targetDispatchIntervalMs;
535
536
  #maxProcessedQueueSize;
537
+ #prevColorFrameWidth;
538
+ #prevDepthFrameWidth;
536
539
  #dispatchCallback;
537
540
  #isProcessing = false;
538
541
  #dispatchTimeoutId = undefined;
@@ -544,6 +547,7 @@ class DepthToPointcloudWorkerPool {
544
547
  console.warn("WebGPU adapter not found. Falling back to CPU for all frames.");
545
548
  } else {
546
549
  this.#isWebGpuSupported = true;
550
+ this.#maximumStorageBufferSize = gpuAdapter.limits.maxStorageBufferBindingSize / 16;
547
551
  console.info("WebGPU potentially supported. Will attempt GPU processing.");
548
552
  }
549
553
  }).catch(err => {
@@ -554,33 +558,62 @@ class DepthToPointcloudWorkerPool {
554
558
  console.warn("navigator.gpu is undefined. WebGPU not supported. Falling back to CPU for all frames.");
555
559
  this.#isWebGpuSupported = false;
556
560
  }
561
+ this.#maximumStorageBufferSize = -1;
562
+ this.#prevDepthFrameWidth = 0;
563
+ this.#prevColorFrameWidth = 0;
557
564
  this.#dispatchCallback = callback;
558
565
  this.#FRAME_BATCH_SIZE = Math.max(1, batchSize);
559
566
  this.#targetDispatchIntervalMs = 1000 / Math.max(1, targetFps);
560
567
  this.#maxProcessedQueueSize = Math.max(1, maxProcessedQueueSize);
561
- this.workerApis = new Array(WORKER_COUNT).fill(undefined).map(() => wrap$3(new Worker(new URL("pointcloudFromDepth.worker-JVTJ-r5q.js", import.meta.url), {
568
+ this.workerApis = new Array(WORKER_COUNT).fill(undefined).map(() => wrap$3(new Worker(new URL("pointcloudFromDepth.worker-hil48rbC.js", import.meta.url), {
562
569
  type: "module"
563
570
  })));
564
571
  this.#metrics = new EventMetricsManager();
565
572
  this.#metrics.registerEvent("pcl-pool.frameInput");
566
573
  }
567
574
  async queueDepthFrame(data) {
568
- // @ts-expect-error
575
+ // @ts-expect-error - Known
569
576
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
570
577
  if (!(data.colorFrame.message?.data instanceof Uint8Array)) {
571
578
  console.warn("Skipping frame: colorFrame.message.data is not a Uint8Array", data.colorFrame);
572
579
  return;
573
580
  }
574
- this.#frameQueue.push(data);
575
- this.tryProcessBatch();
581
+ if (data.width !== this.#prevDepthFrameWidth || data.i420Width !== this.#prevColorFrameWidth) {
582
+ this.setMaxGpuQueueSize(data.width, data.height);
583
+ this.#prevDepthFrameWidth = data.width;
584
+ this.#prevColorFrameWidth = data.i420Width;
585
+ this.#frameQueue = [];
586
+ }
587
+ if (data.width === data.i420Width && data.height === data.i420Height) {
588
+ this.#frameQueue.push(data);
589
+ this.tryProcessBatch();
590
+ }
591
+ }
592
+ setMaxGpuQueueSize(width, height) {
593
+ if (!this.#isWebGpuSupported) {
594
+ return;
595
+ }
596
+ const numPixelsPerFrame = width * height;
597
+ const currentOutSize = numPixelsPerFrame * 16 * this.#FRAME_BATCH_SIZE;
598
+ if (currentOutSize > this.#maximumStorageBufferSize) {
599
+ console.warn(`GPU queue size ${currentOutSize} exceeds maximum storage buffer size ${this.#maximumStorageBufferSize}. Reducing batch size.`);
600
+ const frameBatchSize = Math.floor(this.#maximumStorageBufferSize / (numPixelsPerFrame * 16));
601
+ this.#FRAME_BATCH_SIZE = Math.max(1, frameBatchSize);
602
+ if (frameBatchSize < 1) {
603
+ console.warn("Output buffer size is too small to process. Falling back to CPU.");
604
+ this.#isWebGpuSupported = false;
605
+ }
606
+ }
576
607
  }
577
- tryProcessBatch() {
608
+
609
+ // eslint-disable-next-line @foxglove/no-boolean-parameters
610
+ tryProcessBatch(force = false) {
578
611
  this.#metrics?.registerEvent("pcl-pool.batchSent");
579
612
  const fps = this.#metrics?.calculate("pcl-pool.batchSent");
580
613
  if (fps && fps > 0) {
581
614
  this.#targetDispatchIntervalMs = 1000 / Math.max(4, fps);
582
615
  }
583
- if (this.#isProcessing || this.#frameQueue.length < this.#FRAME_BATCH_SIZE) {
616
+ if ((this.#isProcessing || this.#frameQueue.length < this.#FRAME_BATCH_SIZE) && !force) {
584
617
  return;
585
618
  }
586
619
  this.#isProcessing = true;
@@ -602,7 +635,7 @@ class DepthToPointcloudWorkerPool {
602
635
  const i420Height = firstFrame.i420Height;
603
636
  try {
604
637
  const depthDataArray = batchToProcess.map(f => uint8ArrayToUint16Array(f.depthFrame.data));
605
- // @ts-expect-error
638
+ // @ts-expect-error - ITS unknow
606
639
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
607
640
  const i420DataArray = batchToProcess.map(f => f.colorFrame.message.data);
608
641
  const workerIndex = this.lastUsedWorkerIndex;
@@ -670,6 +703,10 @@ class DepthToPointcloudWorkerPool {
670
703
  }
671
704
  #addToProcessedQueue(processedFrame) {
672
705
  if (this.#processedFrameQueue.length >= this.#maxProcessedQueueSize) {
706
+ const fps = this.#metrics?.calculate("pcl-pool.batchSent");
707
+ if (fps && fps > 0) {
708
+ this.#targetDispatchIntervalMs = 1000 / Math.max(4, fps + 1);
709
+ }
673
710
  this.#processedFrameQueue.shift();
674
711
  console.warn(`Processed frame queue full (>= ${this.#maxProcessedQueueSize}). Dropping oldest frame.`);
675
712
  }
@@ -717,7 +754,7 @@ class DepthToPointcloudWorkerPool {
717
754
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
718
755
 
719
756
  function initWorker(callback) {
720
- const workerWrap = wrap$3(new Worker(new URL("deserialization.worker-DsCOJqEa.js", import.meta.url), {
757
+ const workerWrap = wrap$3(new Worker(new URL("deserialization.worker-d0xuPKYs.js", import.meta.url), {
721
758
  type: "module",
722
759
  name: `message-decoder`
723
760
  }));
@@ -917,6 +954,10 @@ class FoxgloveConnection {
917
954
  }
918
955
  async handleParsePoitcloudMessage(coloredEvent) {
919
956
  const poitcloudFrame = this.PoitCloudSyncFramework.getFrame(coloredEvent.receiveTime.nsec);
957
+ const {
958
+ width: colorWith,
959
+ height: colorHeight
960
+ } = this.parseResolutionFromMessage(coloredEvent.message, coloredEvent.topic);
920
961
  if (poitcloudFrame) {
921
962
  const neuralCameraIntrinsics = JSON.parse(localStorage.getItem("neuralCameraIntrinsics") ?? "{}");
922
963
  await this.depthToPointcloudWorkerPool.queueDepthFrame({
@@ -928,18 +969,25 @@ class FoxgloveConnection {
928
969
  cx: neuralCameraIntrinsics.right.principalPoint.x,
929
970
  cy: neuralCameraIntrinsics.right.principalPoint.y,
930
971
  colorFrame: coloredEvent,
931
- i420Width: poitcloudFrame.width ?? 0,
932
- i420Height: poitcloudFrame.height ?? 0
972
+ i420Width: colorWith ?? poitcloudFrame.width ?? 0,
973
+ i420Height: colorHeight ?? poitcloudFrame.height ?? 0
933
974
  });
934
975
  }
935
976
  }
936
977
  parseResolutionFromMessage(message, topic) {
937
978
  // Check if usual width/height attributes are present
938
- // @ts-ignore
979
+ // @ts-expect-error - ITS unknow
939
980
  if ('width' in message && 'height' in message) {
940
981
  this.resolutions.set(topic, `${message.width}x${message.height}`);
941
- return;
982
+ return {
983
+ width: message.width,
984
+ height: message.height
985
+ };
942
986
  }
987
+ return {
988
+ width: undefined,
989
+ height: undefined
990
+ };
943
991
  }
944
992
  handleParsedMessage(event) {
945
993
  this.decodeMetrics.registerEvent(event.topic);
@@ -955,7 +1003,8 @@ class FoxgloveConnection {
955
1003
  event.sizeInBytes = messageSize;
956
1004
  this.messageEvents.push(event);
957
1005
  this.emitState();
958
- if (event.topic === "H.264 Stream") {
1006
+ const poitcloudColorFrameName = this.subscribedTopics.get("_Point Cloud Color") ? "_Point Cloud Color" : "H.264 Stream";
1007
+ if (event.topic === poitcloudColorFrameName) {
959
1008
  void this.handleParsePoitcloudMessage(event);
960
1009
  }
961
1010
  }
@@ -19103,7 +19152,7 @@ class WebRtcBridge extends ArtificialWorker {
19103
19152
  constructor(automaticTokenRefresh) {
19104
19153
  super();
19105
19154
  this.automaticTokenRefresh = automaticTokenRefresh;
19106
- this.#worker = new Worker(new URL("worker-B5OJw-Fq.js", import.meta.url), {
19155
+ this.#worker = new Worker(new URL("worker-CzUjMpCN.js", import.meta.url), {
19107
19156
  type: "module"
19108
19157
  });
19109
19158
  this.#setupArtificialWorker();
@@ -19319,7 +19368,7 @@ class VisualizerConnection extends FoxgloveConnection {
19319
19368
  let worker;
19320
19369
  if (type === 'ws') {
19321
19370
  this.#url = data.connectionUrl;
19322
- worker = new Worker(new URL("worker-aVL4LGa3.js", import.meta.url), {
19371
+ worker = new Worker(new URL("worker-B7qK-cxf.js", import.meta.url), {
19323
19372
  type: "module"
19324
19373
  });
19325
19374
  } else {
@@ -19343,6 +19392,9 @@ class VisualizerConnection extends FoxgloveConnection {
19343
19392
  }
19344
19393
  subscribe(args) {
19345
19394
  this.#adapter?.subscribe(args);
19395
+ for (const topic of args.topics) {
19396
+ this.subscribedTopics.set(topic, topic);
19397
+ }
19346
19398
  }
19347
19399
  unsubscribe(args) {
19348
19400
  this.#adapter?.unsubscribe(args);
@@ -85410,7 +85462,7 @@ function legacy(parser) {
85410
85462
  return new LanguageSupport(StreamLanguage.define(parser));
85411
85463
  }
85412
85464
  function sql$1(dialectName) {
85413
- return import('./index-DZgY6A3h.js').then(m => m.sql({ dialect: m[dialectName] }));
85465
+ return import('./index-BDGOyJit.js').then(m => m.sql({ dialect: m[dialectName] }));
85414
85466
  }
85415
85467
  /**
85416
85468
  An array of language descriptions for known language packages.
@@ -85421,7 +85473,7 @@ const languages = [
85421
85473
  name: "C",
85422
85474
  extensions: ["c", "h", "ino"],
85423
85475
  load() {
85424
- return import('./index-I0XgHBlj.js').then(m => m.cpp());
85476
+ return import('./index-BtVYSyU9.js').then(m => m.cpp());
85425
85477
  }
85426
85478
  }),
85427
85479
  /*@__PURE__*/LanguageDescription.of({
@@ -85429,7 +85481,7 @@ const languages = [
85429
85481
  alias: ["cpp"],
85430
85482
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
85431
85483
  load() {
85432
- return import('./index-I0XgHBlj.js').then(m => m.cpp());
85484
+ return import('./index-BtVYSyU9.js').then(m => m.cpp());
85433
85485
  }
85434
85486
  }),
85435
85487
  /*@__PURE__*/LanguageDescription.of({
@@ -85449,7 +85501,7 @@ const languages = [
85449
85501
  name: "Go",
85450
85502
  extensions: ["go"],
85451
85503
  load() {
85452
- return import('./index-pwNtzQuf.js').then(m => m.go());
85504
+ return import('./index-D7zKsndC.js').then(m => m.go());
85453
85505
  }
85454
85506
  }),
85455
85507
  /*@__PURE__*/LanguageDescription.of({
@@ -85464,7 +85516,7 @@ const languages = [
85464
85516
  name: "Java",
85465
85517
  extensions: ["java"],
85466
85518
  load() {
85467
- return import('./index-DE0_tKGA.js').then(m => m.java());
85519
+ return import('./index-3y-FxBOU.js').then(m => m.java());
85468
85520
  }
85469
85521
  }),
85470
85522
  /*@__PURE__*/LanguageDescription.of({
@@ -85480,7 +85532,7 @@ const languages = [
85480
85532
  alias: ["json5"],
85481
85533
  extensions: ["json", "map"],
85482
85534
  load() {
85483
- return import('./index-BZ8z044k.js').then(m => m.json());
85535
+ return import('./index-DC1kmt3c.js').then(m => m.json());
85484
85536
  }
85485
85537
  }),
85486
85538
  /*@__PURE__*/LanguageDescription.of({
@@ -85494,14 +85546,14 @@ const languages = [
85494
85546
  name: "LESS",
85495
85547
  extensions: ["less"],
85496
85548
  load() {
85497
- return import('./index-B1pNpslP.js').then(m => m.less());
85549
+ return import('./index-BJVD4ja7.js').then(m => m.less());
85498
85550
  }
85499
85551
  }),
85500
85552
  /*@__PURE__*/LanguageDescription.of({
85501
85553
  name: "Liquid",
85502
85554
  extensions: ["liquid"],
85503
85555
  load() {
85504
- return import('./index-CLPc3bUH.js').then(m => m.liquid());
85556
+ return import('./index--ExGcWRF.js').then(m => m.liquid());
85505
85557
  }
85506
85558
  }),
85507
85559
  /*@__PURE__*/LanguageDescription.of({
@@ -85527,7 +85579,7 @@ const languages = [
85527
85579
  name: "PHP",
85528
85580
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
85529
85581
  load() {
85530
- return import('./index-DsO3GPWF.js').then(m => m.php());
85582
+ return import('./index-D3e3XAuV.js').then(m => m.php());
85531
85583
  }
85532
85584
  }),
85533
85585
  /*@__PURE__*/LanguageDescription.of({
@@ -85544,28 +85596,28 @@ const languages = [
85544
85596
  extensions: ["BUILD", "bzl", "py", "pyw"],
85545
85597
  filename: /^(BUCK|BUILD)$/,
85546
85598
  load() {
85547
- return import('./index-BNXdmaeO.js').then(m => m.python());
85599
+ return import('./index-Dn4LK93L.js').then(m => m.python());
85548
85600
  }
85549
85601
  }),
85550
85602
  /*@__PURE__*/LanguageDescription.of({
85551
85603
  name: "Rust",
85552
85604
  extensions: ["rs"],
85553
85605
  load() {
85554
- return import('./index-B5_Aa-W3.js').then(m => m.rust());
85606
+ return import('./index-DEnq90TB.js').then(m => m.rust());
85555
85607
  }
85556
85608
  }),
85557
85609
  /*@__PURE__*/LanguageDescription.of({
85558
85610
  name: "Sass",
85559
85611
  extensions: ["sass"],
85560
85612
  load() {
85561
- return import('./index-CGXxFWjz.js').then(m => m.sass({ indented: true }));
85613
+ return import('./index-CgyrzKmo.js').then(m => m.sass({ indented: true }));
85562
85614
  }
85563
85615
  }),
85564
85616
  /*@__PURE__*/LanguageDescription.of({
85565
85617
  name: "SCSS",
85566
85618
  extensions: ["scss"],
85567
85619
  load() {
85568
- return import('./index-CGXxFWjz.js').then(m => m.sass());
85620
+ return import('./index-CgyrzKmo.js').then(m => m.sass());
85569
85621
  }
85570
85622
  }),
85571
85623
  /*@__PURE__*/LanguageDescription.of({
@@ -85596,7 +85648,7 @@ const languages = [
85596
85648
  name: "WebAssembly",
85597
85649
  extensions: ["wat", "wast"],
85598
85650
  load() {
85599
- return import('./index-CIHmVsn2.js').then(m => m.wast());
85651
+ return import('./index-TJDtDUfC.js').then(m => m.wast());
85600
85652
  }
85601
85653
  }),
85602
85654
  /*@__PURE__*/LanguageDescription.of({
@@ -85604,7 +85656,7 @@ const languages = [
85604
85656
  alias: ["rss", "wsdl", "xsd"],
85605
85657
  extensions: ["xml", "xsl", "xsd", "svg"],
85606
85658
  load() {
85607
- return import('./index-B4d7dS8a.js').then(m => m.xml());
85659
+ return import('./index-gihFGAxa.js').then(m => m.xml());
85608
85660
  }
85609
85661
  }),
85610
85662
  /*@__PURE__*/LanguageDescription.of({
@@ -85612,7 +85664,7 @@ const languages = [
85612
85664
  alias: ["yml"],
85613
85665
  extensions: ["yaml", "yml"],
85614
85666
  load() {
85615
- return import('./index-DbT8vr6l.js').then(m => m.yaml());
85667
+ return import('./index-DG1LjJ38.js').then(m => m.yaml());
85616
85668
  }
85617
85669
  }),
85618
85670
  // Legacy modes ported from CodeMirror 5
@@ -86408,13 +86460,13 @@ const languages = [
86408
86460
  name: "Vue",
86409
86461
  extensions: ["vue"],
86410
86462
  load() {
86411
- return import('./index-CXdNn-IZ.js').then(m => m.vue());
86463
+ return import('./index-DBfT810F.js').then(m => m.vue());
86412
86464
  }
86413
86465
  }),
86414
86466
  /*@__PURE__*/LanguageDescription.of({
86415
86467
  name: "Angular Template",
86416
86468
  load() {
86417
- return import('./index-LmBY2nOo.js').then(m => m.angular());
86469
+ return import('./index-5qLvVfXR.js').then(m => m.angular());
86418
86470
  }
86419
86471
  })
86420
86472
  ];
@@ -162206,7 +162258,21 @@ function PanelToolbarMetrics({
162206
162258
  ref: descriptionRef,
162207
162259
  width: "full"
162208
162260
  }, variant === "compact" ? /*#__PURE__*/React__default.createElement(Tooltip, {
162209
- content: /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, "Camera: ", !targetFps || targetFps === 0 ? "-" : targetFps, " FPS"), /*#__PURE__*/React__default.createElement("li", null, "Network:", " ", !metrics || metrics?.incomingMessagesFps === 0 ? "-" : metrics.incomingMessagesFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, "Decoding:", " ", !metrics || metrics?.decodedMessagesFps === 0 ? "-" : metrics.decodedMessagesFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, "Rendering: ", !renderedFps || renderedFps === 0 ? "-" : renderedFps, " FPS"), /*#__PURE__*/React__default.createElement("li", null, "Annotations:", " ", !annotationsFps || annotationsFps === 0 || !Number.isFinite(annotationsFps) ? "-" : annotationsFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, "Throughput:", " ", !metrics || metrics?.messageThroughput === 0 ? "-" : metrics.messageThroughput, " ", "Mbps"), /*#__PURE__*/React__default.createElement("li", null, "Frontend Delay: ", eventLoopDelay.toFixed(2), " ms")),
162261
+ content: /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162262
+ className: "font-semibold"
162263
+ }, " Camera:"), " ", !targetFps || targetFps === 0 ? "-" : targetFps, " FPS"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162264
+ className: "font-semibold"
162265
+ }, "Network:", " "), !metrics || metrics?.incomingMessagesFps === 0 ? "-" : metrics.incomingMessagesFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162266
+ className: "font-semibold"
162267
+ }, "Decoding:", " "), !metrics || metrics?.decodedMessagesFps === 0 ? "-" : metrics.decodedMessagesFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162268
+ className: "font-semibold"
162269
+ }, "Rendering:"), " ", !renderedFps || renderedFps === 0 ? "-" : renderedFps, " FPS"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162270
+ className: "font-semibold"
162271
+ }, "Annotations:", " "), !annotationsFps || annotationsFps === 0 || !Number.isFinite(annotationsFps) ? "-" : annotationsFps, " ", "FPS"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162272
+ className: "font-semibold"
162273
+ }, "Throughput:", " "), !metrics || metrics?.messageThroughput === 0 ? "-" : metrics.messageThroughput, " ", "Mbps"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162274
+ className: "font-semibold"
162275
+ }, "Frontend Delay: "), eventLoopDelay.toFixed(2), " ms")),
162210
162276
  direction: "bottom",
162211
162277
  className: "ml-auto"
162212
162278
  }, /*#__PURE__*/React__default.createElement(Button, {
@@ -162377,9 +162443,16 @@ const PanelToolbar = ({
162377
162443
  }, extraVisible ? "Less" : "More"), extraVisible && detections.map(detection => makeDetection(detection, {
162378
162444
  extra: true
162379
162445
  })))), kind === "pointCloud" && /*#__PURE__*/React__default.createElement(Flex, null, /*#__PURE__*/React__default.createElement(Tooltip, {
162446
+ side: "bottom",
162380
162447
  content: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Label$3, {
162381
162448
  text: "To move camera:"
162382
- }), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, "W - Move camera forward"), /*#__PURE__*/React__default.createElement("li", null, "A - Move camera backward"), /*#__PURE__*/React__default.createElement("li", null, "S - Move camera to the left"), /*#__PURE__*/React__default.createElement("li", null, "D - Move camera to the right"), /*#__PURE__*/React__default.createElement("li", null, "Scroll \u2013 Zoom in and out"), /*#__PURE__*/React__default.createElement("li", null, "Drag \u2013 Move camera parallel to the ground"), /*#__PURE__*/React__default.createElement("li", null, `Right-click + Drag horizontally – Rotate the camera around the world's z-axis`), /*#__PURE__*/React__default.createElement("li", null, `Right-click + Drag vertically – Pan the camera around the world's x- and y- axes`)))
162449
+ }), /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162450
+ className: "font-semibold"
162451
+ }, "Scroll:"), " Zoom In and Out"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162452
+ className: "font-semibold"
162453
+ }, "Left-click + Drag:"), " Rotate Camera"), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("b", {
162454
+ className: "font-semibold"
162455
+ }, "Right-click + Drag:"), " Move Camera (X and Y axes)")))
162383
162456
  }, /*#__PURE__*/React__default.createElement(Button, {
162384
162457
  icon: MdHelpOutline,
162385
162458
  variant: "outline",
@@ -162491,7 +162564,7 @@ function createRenderDelaySampler() {
162491
162564
  };
162492
162565
  }
162493
162566
 
162494
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CJSOG1CX.js'));
162567
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BoavvIJ0.js'));
162495
162568
  const ImagePanelBody = ({
162496
162569
  topic,
162497
162570
  frameRenderedEvent,
@@ -162568,7 +162641,7 @@ const ImagePanel = /*#__PURE__*/React__default.memo(function ImagePanel(props) {
162568
162641
  // License, v2.0. If a copy of the MPL was not distributed with this
162569
162642
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
162570
162643
 
162571
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CdXrBVPC.js'));
162644
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-CdxzudUl.js'));
162572
162645
  const PointCloudPanelBody = ({
162573
162646
  topic,
162574
162647
  frameRenderedEvent
@@ -3,7 +3,7 @@ import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Compo
3
3
  import ReactDOM__default from 'react-dom';
4
4
  import { S as isSymbol, U as toString, V as keys, W as getSymbols$1, X as stubArray, Y as arrayPush, Z as baseGetAllKeys, g as getTag, $ as getAllKeys, k as baseGet, c as baseIteratee, j as castPath, t as toKey, a0 as arrayMap$1, a1 as baseUniq, b as baseFlatten, a2 as useMustNotChange, a3 as useCurrentLayoutActions, a4 as useCurrentLayoutSelector, r as reportError, A as AppError, L as Logger, u as useGuaranteedContext, a5 as usePanelMosaicId, a6 as useSelectedPanels, a7 as PANEL_TITLE_CONFIG_KEY, a8 as noop$4, o as getPanelTypeFromId, M as useShallowMemo, T as TAB_PANEL_TYPE, J as filterMap, d as dist$3, a9 as useAppConfiguration, aa as useValueChangedDebugLog, ab as useJsonTreeTheme } from './tslib.es6-C73eoP_E.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 } from './index-BuRQ7ljn.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 } from './index-C4GjAqu3.js';
7
7
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
8
8
  import { t as typescript } from './useMessageReducer-jNx5e6JW.js';
9
9
  import { g as getDefaultExportFromCjs, c as commonjsGlobal, a as getAugmentedNamespace } from './_commonjsHelpers-E-ZsRS8r.js';
@@ -60211,6 +60211,9 @@ class CameraStateSettings extends SceneExtension {
60211
60211
  canvas.addEventListener("mouseleave", this.#handleMouseLeave);
60212
60212
  canvas.addEventListener("contextmenu", event => event.preventDefault());
60213
60213
 
60214
+ // CAMERA "ICON"
60215
+ this.cameraIcon();
60216
+
60214
60217
  // Set camera state to default
60215
60218
  setTimeout(() => {
60216
60219
  const activeCamera = this.getActiveCamera();
@@ -60236,6 +60239,39 @@ class CameraStateSettings extends SceneExtension {
60236
60239
  this.renderer.queueAnimationFrame();
60237
60240
  }, 100);
60238
60241
  }
60242
+ cameraIcon() {
60243
+ const dotRadius = 7.5;
60244
+ const rodRadius = 2;
60245
+ const rodLength = 60;
60246
+ const rodColor = 0x5724E8;
60247
+ const dotColor = 0xffffff;
60248
+ const numRods = 4;
60249
+ const forwardTiltAngle = -Math.PI / 6;
60250
+ const dotMaterial = new MeshBasicMaterial({
60251
+ color: dotColor
60252
+ });
60253
+ const rodMaterial = new MeshBasicMaterial({
60254
+ color: rodColor
60255
+ });
60256
+ const dotGeometry = new SphereGeometry(dotRadius, 16, 16);
60257
+ const rodGeometry = new CylinderGeometry(rodRadius, rodRadius, rodLength, 8);
60258
+ const compositeObject = new Group();
60259
+ const dotMesh = new Mesh(dotGeometry, dotMaterial);
60260
+ compositeObject.add(dotMesh);
60261
+ for (let i = 0; i < numRods; i++) {
60262
+ const pivot = new Object3D();
60263
+ const angle = Math.PI / 4 + i * (Math.PI / 2);
60264
+ pivot.rotation.y = angle;
60265
+ pivot.rotation.z = forwardTiltAngle;
60266
+ const rodMesh = new Mesh(rodGeometry, rodMaterial);
60267
+ rodMesh.rotation.z = Math.PI / 2;
60268
+ rodMesh.position.x = rodLength / 2;
60269
+ pivot.add(rodMesh);
60270
+ compositeObject.add(pivot);
60271
+ }
60272
+ compositeObject.rotation.x = Math.PI / 2 * 3;
60273
+ this.add(compositeObject);
60274
+ }
60239
60275
  dispose() {
60240
60276
  this.renderer.off("transformTreeUpdated", this.#handleTransformTreeUpdated);
60241
60277
  this.renderer.settings.errors.off("update", this.#handleErrorChange);
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, a2 as ContextTracker, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, M as foldNodeProp, a1 as foldInside, J as indentNodeProp, K as continuedIndent, a7 as defineCSSCompletionSource, T as LanguageSupport } from './index-BuRQ7ljn.js';
1
+ import { U as ExternalTokenizer, a2 as ContextTracker, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, M as foldNodeProp, a1 as foldInside, J as indentNodeProp, K as continuedIndent, a7 as defineCSSCompletionSource, T as LanguageSupport } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, aa as html, T as LanguageSupport, ab as parseMixed } from './index-BuRQ7ljn.js';
1
+ import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, aa as html, T as LanguageSupport, ab as parseMixed } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, a2 as ContextTracker, N as styleTags, O as tags, V as LRParser, a3 as LocalTokenGroup, a4 as snippetCompletion, Z as syntaxTree, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport, X as ifNotIn, Y as completeFromList, a5 as IterMode, a6 as NodeWeakMap } from './index-BuRQ7ljn.js';
1
+ import { U as ExternalTokenizer, a2 as ContextTracker, N as styleTags, O as tags, V as LRParser, a3 as LocalTokenGroup, a4 as snippetCompletion, Z as syntaxTree, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, $ as flatIndent, a0 as delimitedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport, X as ifNotIn, Y as completeFromList, a5 as IterMode, a6 as NodeWeakMap } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, Q as LRLanguage, T as LanguageSupport, V as LRParser, a3 as LocalTokenGroup, aa as html, ab as parseMixed, ad as javascriptLanguage } from './index-BuRQ7ljn.js';
1
+ import { N as styleTags, O as tags, Q as LRLanguage, T as LanguageSupport, V as LRParser, a3 as LocalTokenGroup, aa as html, ab as parseMixed, ad as javascriptLanguage } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-BuRQ7ljn.js';
1
+ import { N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';
@@ -1,4 +1,4 @@
1
- import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-BuRQ7ljn.js';
1
+ import { U as ExternalTokenizer, N as styleTags, O as tags, V as LRParser, Q as LRLanguage, J as indentNodeProp, K as continuedIndent, M as foldNodeProp, a1 as foldInside, T as LanguageSupport } from './index-C4GjAqu3.js';
2
2
  import './tslib.es6-C73eoP_E.js';
3
3
  import 'react';
4
4
  import 'react-mosaic-component';