@luxonis/visualizer-protobuf 1.8.8 → 1.9.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 (51) hide show
  1. package/dist/apps/depthai-visualizer/src/components/Panel.d.ts.map +1 -1
  2. package/dist/apps/depthai-visualizer/src/components/Panel.js.map +1 -1
  3. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.d.ts.map +1 -1
  4. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js +14 -1
  5. package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js.map +1 -1
  6. package/dist/apps/depthai-visualizer/src/connection/BaseConnection.d.ts +10 -3
  7. package/dist/apps/depthai-visualizer/src/connection/BaseConnection.d.ts.map +1 -1
  8. package/dist/apps/depthai-visualizer/src/connection/BaseConnection.js +23 -38
  9. package/dist/apps/depthai-visualizer/src/connection/BaseConnection.js.map +1 -1
  10. package/dist/apps/depthai-visualizer/src/connection/ws/Connection.d.ts.map +1 -1
  11. package/dist/apps/depthai-visualizer/src/connection/ws/Connection.js +1 -2
  12. package/dist/apps/depthai-visualizer/src/connection/ws/Connection.js.map +1 -1
  13. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts +4 -0
  14. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts.map +1 -0
  15. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.js +4 -0
  16. package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.js.map +1 -0
  17. package/dist/apps/depthai-visualizer/src/context/MessagePipelineProvider.d.ts +1 -4
  18. package/dist/apps/depthai-visualizer/src/context/MessagePipelineProvider.d.ts.map +1 -1
  19. package/dist/apps/depthai-visualizer/src/context/MessagePipelineProvider.js +3 -2
  20. package/dist/apps/depthai-visualizer/src/context/MessagePipelineProvider.js.map +1 -1
  21. package/dist/apps/depthai-visualizer/src/context/VisualizerContext.d.ts.map +1 -1
  22. package/dist/apps/depthai-visualizer/src/context/VisualizerContext.js +3 -1
  23. package/dist/apps/depthai-visualizer/src/context/VisualizerContext.js.map +1 -1
  24. package/dist/apps/depthai-visualizer/src/panels/ImagePanel.d.ts +4 -2
  25. package/dist/apps/depthai-visualizer/src/panels/ImagePanel.d.ts.map +1 -1
  26. package/dist/apps/depthai-visualizer/src/panels/ImagePanel.js.map +1 -1
  27. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.d.ts +6 -0
  28. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.d.ts.map +1 -0
  29. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js +25 -0
  30. package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js.map +1 -0
  31. package/dist/{index-DCbNqqQc.js → index-2SFix7KY.js} +1 -1
  32. package/dist/{index-DlKZDt0v.js → index-7n6fnp2B.js} +1 -1
  33. package/dist/{index-ovt0UKFi.js → index-B8Cado6g.js} +1 -1
  34. package/dist/{index-zKmjws_7.js → index-B8FQDMoh.js} +1 -1
  35. package/dist/{index-lDSplInz.js → index-B8t-Gi4x.js} +1 -1
  36. package/dist/{index-0Q6EqxBW.js → index-BEcWpcB1.js} +1 -1
  37. package/dist/{index-DkQzCBNS.js → index-Bay9MnxH.js} +1 -1
  38. package/dist/{index-F8-9liAo.js → index-Bk6p8-al.js} +1 -1
  39. package/dist/{index-CbLiW7lk.js → index-BkQgkjmO.js} +1 -1
  40. package/dist/{index-Cl5tDqdc.js → index-BvNZUlo_.js} +1 -1
  41. package/dist/{index-BBXW7Wxj.js → index-CNWGMhCW.js} +94 -71
  42. package/dist/{index-DAPJpbdc.js → index-ChQWCJEj.js} +1 -1
  43. package/dist/{index-DUnP2Xma.js → index-Cp3omW6p.js} +2 -2
  44. package/dist/{index-QEJn3K9v.js → index-DKfQ_S8i.js} +1 -1
  45. package/dist/{index-Bpjac43y.js → index-DSLjhjen.js} +1 -1
  46. package/dist/{index-pNYe-U8V.js → index-Dn-E1-20.js} +1 -1
  47. package/dist/{index-W-M5T20d.js → index-GbwWdY6w.js} +1 -1
  48. package/dist/{index-H6bxF3CN.js → index-otpYhpPx.js} +1 -1
  49. package/dist/{index-CF21cEJo.js → index-txFQeh8N.js} +1 -1
  50. package/dist/index.js +1 -1
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,oBAAoB,CAAC;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAIF,eAAO,MAAM,aAAa,QAAO,aAEhC,CAAC;AASF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAiDtC,CAAC"}
1
+ {"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,oBAAoB,CAAC;AAG5B,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAIF,eAAO,MAAM,aAAa,QAAO,aAEhC,CAAC;AASF,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAiDtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Panel.js","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,UAAU,MAAM,gDAAgD,CAAC;AACxE,OAAO,aAAa,MAAM,mDAAmD,CAAC;AAC9E,OAAO,oBAAoB,MAAM,0DAA0D,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,oBAAoB,CAAC;AAsB5B,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAgB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAkB,EAAE;IAC/C,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,cAAwB,EAAE,KAAc,EAAE,OAAqB,EAAgB,EAAE,CACzG,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE,eAAe;IACrB,KAAK;IACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK;CACjF,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,kBAAkB,GAAG,KAAK,EAC1B,gBAAgB,GAAG,EAAE,EACrB,qBAAqB,GAAG,EAAE,EAC3B,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAe,EAAE,CAAC,CAAC;IAErE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC;gBACrD,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAE9E,OAAO,CACL,KAAC,oBAAoB,IAAC,KAAK,EAAC,iBAAiB,YAC3C,KAAC,aAAa,cACZ,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,YAC9C,MAAC,KAAK,IACJ,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAC,QAAQ,EACjB,MAAM,EAAC,qBAAqB,EAC5B,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAE9B,KAAC,YAAY,IACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,GACtC,EACF,KAAC,QAAQ,IACP,QAAQ,EACN,KAAC,UAAU,cACT,uCAAqB,GACV,YAGf,KAAC,oBAAoB,IAAC,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAwB,GACjE,IACL,GACkB,GACd,GACK,CACxB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Panel.js","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,UAAU,MAAM,gDAAgD,CAAC;AACxE,OAAO,aAAa,MAAM,mDAAmD,CAAC;AAC9E,OAAO,oBAAoB,MAAM,0DAA0D,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,oBAAoB,CAAC;AAuB5B,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAgB,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAkB,EAAE;IAC/C,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,cAAwB,EAAE,KAAc,EAAE,OAAqB,EAAgB,EAAE,CACzG,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE,eAAe;IACrB,KAAK;IACL,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,OAAO,IAAI,CAAC,KAAK;CACjF,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,KAAK,GAAyB,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,kBAAkB,GAAG,KAAK,EAC1B,gBAAgB,GAAG,EAAE,EACrB,qBAAqB,GAAG,EAAE,EAC3B,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAe,EAAE,CAAC,CAAC;IAErE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvB,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC;gBACrD,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,IAAI,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAE9E,OAAO,CACL,KAAC,oBAAoB,IAAC,KAAK,EAAC,iBAAiB,YAC3C,KAAC,aAAa,cACZ,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,YAC9C,MAAC,KAAK,IACJ,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAC,QAAQ,EACjB,MAAM,EAAC,qBAAqB,EAC5B,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAE9B,KAAC,YAAY,IACX,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,kBAAkB,GACtC,EACF,KAAC,QAAQ,IACP,QAAQ,EACN,KAAC,UAAU,cACT,uCAAqB,GACV,YAGf,KAAC,oBAAoB,IAAC,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAwB,GACjE,IACL,GACkB,GACd,GACK,CACxB,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PanelToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKxD,OAAO,sCAAsC,CAAC;AAuB9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6HpD,CAAC"}
1
+ {"version":3,"file":"PanelToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAKxD,OAAO,sCAAsC,CAAC;AAyB9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2IpD,CAAC"}
@@ -6,6 +6,7 @@ import { useDetections } from "./Panel.js";
6
6
  import { ArrowDownIcon, ArrowUpIcon, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Flex, HelpIcon, Icon, Label, NormalText, SubHeader, Tooltip } from "@luxonis/common-fe-components";
7
7
  import { ImCheckboxChecked, ImCheckboxUnchecked } from "react-icons/im";
8
8
  import '@luxonis/common-fe-components/styles';
9
+ import { useConnections } from "../context/ConnectionsProvider.js";
9
10
  const PanelAnnotationButton = ({ topic, onClick }) => {
10
11
  const handleClick = React.useCallback(event => {
11
12
  event.preventDefault();
@@ -15,6 +16,14 @@ const PanelAnnotationButton = ({ topic, onClick }) => {
15
16
  };
16
17
  export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations = false }) => {
17
18
  const { detections } = useDetections();
19
+ const connections = useConnections();
20
+ const [metrics, setMetrics] = React.useState();
21
+ React.useEffect(() => {
22
+ const interval = setInterval(() => {
23
+ setMetrics(connections[0]?.getTopicMetrics(topic));
24
+ }, 500);
25
+ return () => clearInterval(interval);
26
+ }, []);
18
27
  const [annotationsOpened, setAnnotationsOpened] = React.useState(false);
19
28
  const hasExtra = React.useMemo(() => detections.some((topic) => topic.extra && !topic.enabled), [detections]);
20
29
  const [extraVisible, setExtraVisible] = React.useState(false);
@@ -26,9 +35,13 @@ export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations =
26
35
  })
27
36
  })));
28
37
  }, [detections, setDetections]);
38
+ // TODO: show only when debug mode is ON
39
+ const name = React.useMemo(() => {
40
+ return `${topic} - ${metrics?.inputFPS || 0}/${metrics?.postDecodeFPS || 0} FPS`;
41
+ }, [topic, metrics]);
29
42
  return (_jsxs(Flex, { direction: "row", gap: "sm", align: "center", justify: "space-between", style: {
30
43
  paddingLeft: 16
31
- }, children: [_jsx(SubHeader, { text: topic }), !disableAnnotations && kind === 'image' && (_jsxs(DropdownMenu, { onOpenChange: setAnnotationsOpened, children: [_jsx(DropdownMenuTrigger, { asChild: true, disabled: detections.length === 0, children: _jsx(Button, { variant: "outline", label: "Annotations", "aria-controls": annotationsOpened ? "basic-menu" : undefined, "aria-haspopup": "true", "aria-expanded": annotationsOpened ? "true" : undefined, icon: annotationsOpened ? ArrowUpIcon : ArrowDownIcon, disabled: detections.length === 0, style: {
44
+ }, children: [_jsx(SubHeader, { text: name }), !disableAnnotations && kind === 'image' && (_jsxs(DropdownMenu, { onOpenChange: setAnnotationsOpened, children: [_jsx(DropdownMenuTrigger, { asChild: true, disabled: detections.length === 0, children: _jsx(Button, { variant: "outline", label: "Annotations", "aria-controls": annotationsOpened ? "basic-menu" : undefined, "aria-haspopup": "true", "aria-expanded": annotationsOpened ? "true" : undefined, icon: annotationsOpened ? ArrowUpIcon : ArrowDownIcon, disabled: detections.length === 0, style: {
32
45
  borderRadius: 0,
33
46
  borderTopRightRadius: 8,
34
47
  } }) }), _jsxs(DropdownMenuContent, { children: [detections.map((topic) => (!topic.extra || topic.enabled) && (_jsx(PanelAnnotationButton, { topic: topic, onClick: () => onToggleTopic(topic.name) }, topic.name))), hasExtra && (_jsx(Button, { width: "full", paddingY: "xs", variant: "ghost", "aria-expanded": extraVisible ? "true" : undefined, onClick: () => setExtraVisible((current) => !current), icon: extraVisible ? ArrowUpIcon : ArrowDownIcon, style: {
@@ -1 +1 @@
1
- {"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,11 @@ import { MessageEvent, PlayerState, PlayerPresence, PlayerProblem } from "@foxgl
3
3
  import { MessageHandler } from "../messaging/message-handler.js";
4
4
  import { WebSocketConnectionMessage } from "./ws/Adapter.js";
5
5
  import { ProtobufKind } from "../messaging/protobuf.js";
6
+ import { MetricsManager } from "../utils/metrics-manager.js";
7
+ export type Metrics = {
8
+ inputFPS: number;
9
+ postDecodeFPS: number;
10
+ };
6
11
  declare class ProblemManager {
7
12
  protected problems: PlayerProblem[];
8
13
  addProblem(problem: PlayerProblem): void;
@@ -14,8 +19,7 @@ declare abstract class FoxgloveConnection {
14
19
  protected id: string;
15
20
  protected playerPresence: PlayerPresence;
16
21
  protected playerCapabilities: string[];
17
- protected parsedMessages: MessageEvent[];
18
- protected parsedMessagesBytes: number;
22
+ protected messageEvent: MessageEvent | null;
19
23
  protected receivedBytes: number;
20
24
  protected startTime?: Time;
21
25
  protected endTime?: Time;
@@ -24,6 +28,8 @@ declare abstract class FoxgloveConnection {
24
28
  protected subscribedTopics: Map<any, any>;
25
29
  protected advertisedServices: Map<any, any>;
26
30
  protected problems: ProblemManager;
31
+ protected inputMetrics: MetricsManager;
32
+ protected decodeMetrics: MetricsManager;
27
33
  protected messageHandler: MessageHandler;
28
34
  protected topics: {
29
35
  [key: string]: {
@@ -33,9 +39,10 @@ declare abstract class FoxgloveConnection {
33
39
  };
34
40
  constructor(id: string);
35
41
  setListener(listener: (playerState: PlayerState) => Promise<void>): void;
42
+ getTopicMetrics(topic: string): Metrics;
36
43
  protected getCurrentTime(): Time;
37
44
  protected onMessagePacket(event: globalThis.MessageEvent<WebSocketConnectionMessage>): void;
38
- protected handleMessageEvents(event: MessageEvent): void;
45
+ protected handleParsedMessage(event: MessageEvent): void;
39
46
  protected emitState: (() => void) & {
40
47
  currentPromise?: Promise<void>;
41
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../../../../src/connection/BaseConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../../../../src/connection/BaseConnection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAyC,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAwB,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,cAAM,cAAc;IAClB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAM;IAElC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIxC,aAAa,IAAI,IAAI;IAIrB,WAAW,IAAI,aAAa,EAAE;CAGtC;AAED,uBAAe,kBAAkB;IAC/B,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC;IAGrB,SAAS,CAAC,cAAc,EAAE,cAAc,CAA8B;IACtE,SAAS,CAAC,kBAAkB,WAAwC;IAGpE,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC3B,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IAEzB,SAAS,CAAC,UAAU,gBAAa;IACjC,SAAS,CAAC,eAAe,gBAAa;IACtC,SAAS,CAAC,gBAAgB,gBAAa;IACvC,SAAS,CAAC,kBAAkB,gBAAa;IAEzC,SAAS,CAAC,QAAQ,iBAAwB;IAC1C,SAAS,CAAC,YAAY,iBAAwB;IAC9C,SAAS,CAAC,aAAa,iBAAwB;IAG/C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAS,CAAC,MAAM,EAAE;QAChB,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAM;gBAEY,EAAE,EAAE,MAAM;IAKtB,WAAW,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAKxE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAO9C,SAAS,CAAC,cAAc,IAAI,IAAI;IAIhC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,0BAA0B,CAAC,GAAG,IAAI;IAK3F,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IASxD,SAAS,CAAC,SAAS;;MAwDhB;CACJ;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,aAAa,IAAI;IAC9C,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAClE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3E,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,8BAAsB,cAAc,CAAC,aAAa,GAAG,KAAK,CAAE,SAAQ,kBAAkB;aACpE,KAAK,IAAI,IAAI;aAEb,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,CAAC,aAAa,CAAC,EAClE,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI;aAES,GAAG,CAAC,CAAC,SAAS,MAAM,kBAAkB,CAAC,aAAa,CAAC,EACnE,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI;aAES,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAE3E,aAAoB,SAAS,IAAI,OAAO,CAAC;CAC1C"}
@@ -6,7 +6,7 @@ import { fromMillis, isGreaterThan, isLessThan } from "@foxglove/rostime";
6
6
  import { estimateObjectSize } from "@foxglove/studio-base/players/messageMemoryEstimation";
7
7
  import { PlayerPresence, PlayerCapabilities } from "@foxglove/studio-base/players/types";
8
8
  import { createMessageHandler } from "../messaging/message-handler.js";
9
- const CURRENT_FRAME_MAXIMUM_SIZE_BYTES = 100 * 1024 * 1024;
9
+ import { MetricsManager } from "../utils/metrics-manager.js";
10
10
  class ProblemManager {
11
11
  problems = [];
12
12
  addProblem(problem) {
@@ -26,8 +26,7 @@ class FoxgloveConnection {
26
26
  playerPresence = PlayerPresence.NOT_PRESENT;
27
27
  playerCapabilities = [PlayerCapabilities.playbackControl];
28
28
  // state options
29
- parsedMessages = [];
30
- parsedMessagesBytes = 0;
29
+ messageEvent = null;
31
30
  receivedBytes = 0;
32
31
  startTime;
33
32
  endTime;
@@ -36,55 +35,43 @@ class FoxgloveConnection {
36
35
  subscribedTopics = new Map();
37
36
  advertisedServices = new Map();
38
37
  problems = new ProblemManager();
38
+ inputMetrics = new MetricsManager();
39
+ decodeMetrics = new MetricsManager();
39
40
  // message handler
40
41
  messageHandler;
41
42
  topics = {};
42
43
  constructor(id) {
43
44
  this.id = id;
44
- this.messageHandler = createMessageHandler(this.handleMessageEvents.bind(this));
45
+ this.messageHandler = createMessageHandler(this.handleParsedMessage.bind(this));
45
46
  }
46
47
  setListener(listener) {
47
48
  this.listener = listener;
48
49
  this.emitState();
49
50
  }
51
+ getTopicMetrics(topic) {
52
+ return {
53
+ inputFPS: this.inputMetrics.calculate(topic),
54
+ postDecodeFPS: this.decodeMetrics.calculate(topic),
55
+ };
56
+ }
50
57
  getCurrentTime() {
51
58
  return fromMillis(Date.now());
52
59
  }
53
60
  onMessagePacket(event) {
61
+ this.inputMetrics.registerEvent(event.data.topic);
54
62
  this.messageHandler.handle(event.data);
55
63
  }
56
- handleMessageEvents(event) {
64
+ handleParsedMessage(event) {
65
+ this.decodeMetrics.registerEvent(event.topic);
57
66
  const messageSize = estimateObjectSize(event.message);
58
67
  event.sizeInBytes = messageSize;
59
- this.parsedMessagesBytes += messageSize;
60
- this.parsedMessages.push(event);
61
- if (this.parsedMessagesBytes > CURRENT_FRAME_MAXIMUM_SIZE_BYTES) {
62
- // console.debug(
63
- // `WebSocketPlayer maximum frame size (${(
64
- // CURRENT_FRAME_MAXIMUM_SIZE_BYTES / 1024 / 1024
65
- // ).toFixed(
66
- // 2,
67
- // )}MB) reached. Dropping old messages. This accumulation can occur if the browser tab has been inactive.`,
68
- // );
69
- // Amortize cost of dropping messages by dropping parsedMessages size to
70
- // 80% so that it doesn't happen for every message after reaching the limit
71
- const evictUntilSize = 0.8 * CURRENT_FRAME_MAXIMUM_SIZE_BYTES;
72
- let droppedBytes = 0;
73
- let indexToCutBefore = 0;
74
- while (this.parsedMessagesBytes - droppedBytes > evictUntilSize) {
75
- droppedBytes += this.parsedMessages[indexToCutBefore].sizeInBytes;
76
- indexToCutBefore++;
77
- }
78
- this.parsedMessages.splice(0, indexToCutBefore);
79
- this.parsedMessagesBytes -= droppedBytes;
80
- }
68
+ this.messageEvent = event;
81
69
  this.emitState();
82
70
  }
83
71
  emitState = debouncePromise(async () => {
84
- const messages = this.parsedMessages;
85
- this.parsedMessages = [];
86
- this.parsedMessagesBytes = 0;
87
- if (!this.listener) {
72
+ const message = this.messageEvent;
73
+ this.messageEvent = null;
74
+ if (!this.listener || !message) {
88
75
  await Promise.resolve();
89
76
  return;
90
77
  }
@@ -97,12 +84,10 @@ class FoxgloveConnection {
97
84
  }
98
85
  const problems = this.problems.getProblems();
99
86
  this.problems.clearProblems();
100
- for (const message of messages) {
101
- this.topics[message.topic] = {
102
- name: message.topic,
103
- schemaName: message.schemaName
104
- };
105
- }
87
+ this.topics[message.topic] = {
88
+ name: message.topic,
89
+ schemaName: message.schemaName
90
+ };
106
91
  const newPlayerState = {
107
92
  name: this.id,
108
93
  presence: this.playerPresence,
@@ -113,7 +98,7 @@ class FoxgloveConnection {
113
98
  problems,
114
99
  urlState: undefined,
115
100
  activeData: {
116
- messages,
101
+ messages: [message],
117
102
  totalBytesReceived: this.receivedBytes,
118
103
  startTime: this.startTime,
119
104
  endTime: this.endTime,
@@ -1 +1 @@
1
- {"version":3,"file":"BaseConnection.js","sourceRoot":"","sources":["../../../../../src/connection/BaseConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseConnection.js","sourceRoot":"","sources":["../../../../../src/connection/BaseConnection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/ws/Connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAE,SAAQ,cAAc,CAAC,aAAa,CAAC;;gBAIxE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOxC,EAAE,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAA2C;IAClF,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAA4C;IACrF,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CACN;IAC3C,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAgC;IAEpF,IAAW,SAAS,YAEnB;CA+BF"}
1
+ {"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../../../../src/connection/ws/Connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,mBAAmB,CAAC,aAAa,GAAG,KAAK,CAAE,SAAQ,cAAc,CAAC,aAAa,CAAC;;gBAIxE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOxC,EAAE,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAA2C;IAClF,GAAG,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAA4C;IACrF,OAAO,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CACN;IAC3C,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAgC;IAEpF,IAAW,SAAS,YAEnB;CA8BF"}
@@ -37,8 +37,7 @@ export class WebSocketConnection extends BaseConnection {
37
37
  this.emitState();
38
38
  };
39
39
  #onError = (_event) => {
40
- this.parsedMessages = [];
41
- this.parsedMessagesBytes = 0;
40
+ this.messageEvent = null;
42
41
  this.playerPresence = PlayerPresence.ERROR;
43
42
  this.emitState();
44
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../../../../../src/connection/ws/Connection.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,OAAuC,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,OAAO,mBAA2C,SAAQ,cAA6B;IAC3F,IAAI,CAAS;IACb,QAAQ,CAAW;IAEnB,YAAmB,GAAW,EAAE,MAAe;QAC7C,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEM,EAAE,GAAwC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClF,GAAG,GAAyC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,GAA6C,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,CAC3E,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3C,KAAK,GAA2C,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEpF,IAAW,SAAS;QAClB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,GAA8B,CAAC,MAAM,EAAE,EAAE;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAA4D,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,OAAO,GAAe,GAAG,EAAE;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,GAAe,GAAG,EAAE;QAC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,GAA6B,CAAC,MAAM,EAAE,EAAE;QAC9C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../../../../../src/connection/ws/Connection.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,OAAuC,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,OAAO,mBAA2C,SAAQ,cAA6B;IAC3F,IAAI,CAAS;IACb,QAAQ,CAAW;IAEnB,YAAmB,GAAW,EAAE,MAAe;QAC7C,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAEM,EAAE,GAAwC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAClF,GAAG,GAAyC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,GAA6C,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,CAC3E,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;IAC3C,KAAK,GAA2C,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;IAEpF,IAAW,SAAS;QAClB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,GAA8B,CAAC,MAAM,EAAE,EAAE;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAA4D,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,OAAO,GAAe,GAAG,EAAE;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,GAAe,GAAG,EAAE;QAC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,GAA6B,CAAC,MAAM,EAAE,EAAE;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;QAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC,CAAC;CACH"}
@@ -0,0 +1,4 @@
1
+ import { BaseConnection } from "../connection/BaseConnection.js";
2
+ export declare const ConnectionsProvider: import("react").Provider<BaseConnection<never>[]>;
3
+ export declare const useConnections: () => BaseConnection<never>[];
4
+ //# sourceMappingURL=ConnectionsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionsProvider.d.ts","sourceRoot":"","sources":["../../../../../src/context/ConnectionsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAIjE,eAAO,MAAM,mBAAmB,mDAAmB,CAAC;AACpD,eAAO,MAAM,cAAc,+BAAkC,CAAC"}
@@ -0,0 +1,4 @@
1
+ const Context = React.createContext([]);
2
+ export const ConnectionsProvider = Context.Provider;
3
+ export const useConnections = () => React.useContext(Context);
4
+ //# sourceMappingURL=ConnectionsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionsProvider.js","sourceRoot":"","sources":["../../../../../src/context/ConnectionsProvider.tsx"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAmB,EAAE,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;AACpD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC"}
@@ -1,8 +1,5 @@
1
1
  import { PropsWithChildren } from "react";
2
2
  import { MessagePipelineContext } from "@foxglove/studio-base/components/MessagePipeline/types";
3
- import { BaseConnection } from "../connection/BaseConnection";
4
3
  export type { MessagePipelineContext };
5
- export declare function MessagePipelineProvider(props: PropsWithChildren<{
6
- connections: BaseConnection[];
7
- }>): React.ReactElement;
4
+ export declare function MessagePipelineProvider(props: PropsWithChildren): React.ReactElement;
8
5
  //# sourceMappingURL=MessagePipelineProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessagePipelineProvider.d.ts","sourceRoot":"","sources":["../../../../../src/context/MessagePipelineProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAMhG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAIvC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAC/D,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC,GAAG,KAAK,CAAC,YAAY,CAyCtB"}
1
+ {"version":3,"file":"MessagePipelineProvider.d.ts","sourceRoot":"","sources":["../../../../../src/context/MessagePipelineProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AAOf,OAAO,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AAQhG,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAIvC,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAyCpF"}
@@ -8,10 +8,11 @@ import { ContextInternal } from "@foxglove/studio-base/components/MessagePipelin
8
8
  import MessageOrderTracker from "@foxglove/studio-base/components/MessagePipeline/MessageOrderTracker";
9
9
  import { pauseFrameForPromises } from "@foxglove/studio-base/components/MessagePipeline/pauseFrameForPromise";
10
10
  import { createMessagePipelineStore, defaultPlayerState } from "@foxglove/studio-base/components/MessagePipeline/store";
11
+ import { useConnections } from "./ConnectionsProvider.js";
11
12
  const selectRenderDone = (state) => state.renderDone;
12
13
  export function MessagePipelineProvider(props) {
14
+ const connections = useConnections();
13
15
  const promisesToWaitForRef = useRef([]);
14
- const { children, connections } = props;
15
16
  const store = useMemo(() => {
16
17
  return createMessagePipelineStore({ promisesToWaitForRef, initialPlayer: undefined });
17
18
  }, []);
@@ -40,7 +41,7 @@ export function MessagePipelineProvider(props) {
40
41
  });
41
42
  };
42
43
  }, [connections, store]);
43
- return _jsx(ContextInternal.Provider, { value: store, children: children });
44
+ return _jsx(ContextInternal.Provider, { value: store, children: props.children });
44
45
  }
45
46
  function createMessageListener(args) {
46
47
  const { promisesToWaitForRef, store } = args;
@@ -1 +1 @@
1
- {"version":3,"file":"MessagePipelineProvider.js","sourceRoot":"","sources":["../../../../../src/context/MessagePipelineProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessagePipelineProvider.js","sourceRoot":"","sources":["../../../../../src/context/MessagePipelineProvider.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VisualizerContext.d.ts","sourceRoot":"","sources":["../../../../../src/context/VisualizerContext.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAQpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,wBAAgB,iBAAiB,IAAI,SAAS,aAAa,EAAE,CAE5D;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,iBAAiB,oDA4F5B,CAAC"}
1
+ {"version":3,"file":"VisualizerContext.d.ts","sourceRoot":"","sources":["../../../../../src/context/VisualizerContext.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAQpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,wBAAgB,iBAAiB,IAAI,SAAS,aAAa,EAAE,CAE5D;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,eAAO,MAAM,iBAAiB,oDA+F5B,CAAC"}
@@ -18,6 +18,7 @@ import { PanelStateContextProvider } from "@foxglove/studio-base/providers/Panel
18
18
  import TimelineInteractionStateProvider from "@foxglove/studio-base/providers/TimelineInteractionStateProvider";
19
19
  import WorkspaceContextProvider from "@foxglove/studio-base/providers/WorkspaceContextProvider";
20
20
  import { MessagePipelineProvider } from "./MessagePipelineProvider";
21
+ import { ConnectionsProvider } from "./ConnectionsProvider.js";
21
22
  export function useSourceProblems() {
22
23
  return useMessagePipeline((ctx) => ctx.playerState.problems ?? []);
23
24
  }
@@ -75,6 +76,7 @@ export const VisualizerContext = React.memo(function VisualizerContext({ childre
75
76
  return undefined;
76
77
  },
77
78
  };
78
- return (_jsx(AppConfigurationContext.Provider, { value: appConfiguration, children: _jsx(DndProvider, { backend: HTML5Backend, children: _jsxs(WorkspaceContextProvider, { children: [_jsx(GlobalCss, {}), _jsx(CssBaseline, { children: _jsx(ErrorBoundary, { children: _jsx(TimelineInteractionStateProvider, { children: _jsx(CurrentLayoutProvider, { children: _jsx(MessagePipelineProvider, { connections: connections, children: _jsx(EventsProvider, { children: _jsx(MosaicContext.Provider, { value: mosaicContext, children: _jsx(MosaicWindowContext.Provider, { value: mosaicWindowContext, children: _jsx(PanelCatalogContext.Provider, { value: panelCatalog, children: _jsx(PanelStateContextProvider, { children: children }) }) }) }) }) }) }) }) }) })] }) }) }));
79
+ // TODO: Simplify
80
+ return (_jsx(AppConfigurationContext.Provider, { value: appConfiguration, children: _jsx(DndProvider, { backend: HTML5Backend, children: _jsxs(WorkspaceContextProvider, { children: [_jsx(GlobalCss, {}), _jsx(CssBaseline, { children: _jsx(ErrorBoundary, { children: _jsx(TimelineInteractionStateProvider, { children: _jsx(CurrentLayoutProvider, { children: _jsx(ConnectionsProvider, { value: connections, children: _jsx(MessagePipelineProvider, { children: _jsx(EventsProvider, { children: _jsx(MosaicContext.Provider, { value: mosaicContext, children: _jsx(MosaicWindowContext.Provider, { value: mosaicWindowContext, children: _jsx(PanelCatalogContext.Provider, { value: panelCatalog, children: _jsx(PanelStateContextProvider, { children: children }) }) }) }) }) }) }) }) }) }) })] }) }) }));
79
81
  });
80
82
  //# sourceMappingURL=VisualizerContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VisualizerContext.js","sourceRoot":"","sources":["../../../../../src/context/VisualizerContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisualizerContext.js","sourceRoot":"","sources":["../../../../../src/context/VisualizerContext.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import { PanelProps } from "../components/Panel.js";
3
- export type ImagePanelProps = {
3
+ type ImagePanelBodyProps = {
4
4
  topic: string;
5
5
  };
6
- export declare const ImagePanel: React.NamedExoticComponent<Omit<PanelProps, "kind"> & ImagePanelProps>;
6
+ export type ImagePanelProps = Omit<PanelProps, 'kind' | 'metrics'> & ImagePanelBodyProps;
7
+ export declare const ImagePanel: React.NamedExoticComponent<ImagePanelProps>;
8
+ export {};
7
9
  //# sourceMappingURL=ImagePanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImagePanel.d.ts","sourceRoot":"","sources":["../../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAS,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AAM1E,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAyBF,eAAO,MAAM,UAAU,wEAMrB,CAAC"}
1
+ {"version":3,"file":"ImagePanel.d.ts","sourceRoot":"","sources":["../../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAS,UAAU,EAAiB,MAAM,wBAAwB,CAAC;AAM1E,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAyBF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,mBAAmB,CAAC;AAEzF,eAAO,MAAM,UAAU,6CAMrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImagePanel.js","sourceRoot":"","sources":["../../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAc,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1E,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAC/D,CAAC;AAMF,MAAM,cAAc,GAA8B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IAEvC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE;YACT,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,CAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,EAAE,EAAE;gBAClB,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;aAC/B,CAAC,CACH;YACD,SAAS,EAAE,UAAmB;SAC/B;KACF,CAAC,EACF,CAAC,UAAU,EAAE,KAAK,CAAC,CACpB,CAAC;IAEF,OAAO,KAAC,mBAAmB,IAAC,cAAc,EAAE,aAAa,GAAI,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,KAAiD;IACxG,OAAO,CACL,KAAC,KAAK,IAAC,IAAI,EAAC,OAAO,KAAK,KAAK,YAC3B,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,GAChC,CACT,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ImagePanel.js","sourceRoot":"","sources":["../../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAc,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1E,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAC/D,CAAC;AAMF,MAAM,cAAc,GAAkC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAClE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAC;IAEvC,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,GAAG,EAAE,CAAC,CAAC;QACL,SAAS,EAAE;YACT,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,CAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC5B,SAAS,CAAC,IAAI,EAAE,EAAE;gBAClB,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;aAC/B,CAAC,CACH;YACD,SAAS,EAAE,UAAmB;SAC/B;KACF,CAAC,EACF,CAAC,UAAU,EAAE,KAAK,CAAC,CACpB,CAAC;IAEF,OAAO,KAAC,mBAAmB,IAAC,cAAc,EAAE,aAAa,GAAI,CAAC;AAChE,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,KAAsB;IAC7E,OAAO,CACL,KAAC,KAAK,IAAC,IAAI,EAAC,OAAO,KAAK,KAAK,YAC3B,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,GAChC,CACT,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class MetricsManager {
2
+ metrics: Record<string, number[]>;
3
+ registerEvent(topic: string): void;
4
+ calculate(topic: string): number;
5
+ }
6
+ //# sourceMappingURL=metrics-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-manager.d.ts","sourceRoot":"","sources":["../../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAEvC,aAAa,CAAC,KAAK,EAAE,MAAM;IAO3B,SAAS,CAAC,KAAK,EAAE,MAAM;CAkB/B"}
@@ -0,0 +1,25 @@
1
+ export class MetricsManager {
2
+ metrics = {};
3
+ registerEvent(topic) {
4
+ const currentTime = performance.now();
5
+ this.metrics[topic] ??= [];
6
+ this.metrics[topic].unshift(currentTime);
7
+ this.metrics[topic].length = 100;
8
+ }
9
+ calculate(topic) {
10
+ const topicMetrics = this.metrics[topic];
11
+ if (!topicMetrics) {
12
+ return 0;
13
+ }
14
+ let totalInterval = 0;
15
+ for (let i = 1; i < topicMetrics.length; ++i) {
16
+ totalInterval += topicMetrics[i - 1] - topicMetrics[i];
17
+ }
18
+ if (isNaN(totalInterval)) {
19
+ return 0;
20
+ }
21
+ const fps = 1_000 / (totalInterval / (topicMetrics.length - 1));
22
+ return Math.round(fps);
23
+ }
24
+ }
25
+ //# sourceMappingURL=metrics-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-manager.js","sourceRoot":"","sources":["../../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAClB,OAAO,GAA6B,EAAE,CAAC;IAEvC,aAAa,CAAC,KAAa;QAChC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,CAAC,MAAM,GAAG,GAAG,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,KAAa;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,aAAa,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;QAC3D,CAAC;QAED,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { aI as EditorView, aJ as EditorSelection, as as LRLanguage, aq as styleTags, ar as tags, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, at as LanguageSupport, av as LRParser, ay as syntaxTree, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-BBXW7Wxj.js';
1
+ import { aI as EditorView, aJ as EditorSelection, as as LRLanguage, aq as styleTags, ar as tags, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, at as LanguageSupport, av as LRParser, ay as syntaxTree, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aq as styleTags, ar as tags, aN as javascriptLanguage, as as LRLanguage, at as LanguageSupport, av as LRParser, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-BBXW7Wxj.js';
1
+ import { aq as styleTags, ar as tags, aN as javascriptLanguage, as as LRLanguage, at as LanguageSupport, av as LRParser, aK as html, aL as parseMixed, au as ExternalTokenizer } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aC as ContextTracker, au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ap as foldNodeProp, aM as bracketMatchingHandle, at as LanguageSupport, aI as EditorView, ay as syntaxTree, aJ as EditorSelection } from './index-BBXW7Wxj.js';
1
+ import { aC as ContextTracker, au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ap as foldNodeProp, aM as bracketMatchingHandle, at as LanguageSupport, aI as EditorView, ay as syntaxTree, aJ as EditorSelection } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, aD as LocalTokenGroup, aE as snippetCompletion, ay as syntaxTree, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aw as ifNotIn, ax as completeFromList, aF as IterMode, aG as NodeWeakMap } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, aD as LocalTokenGroup, aE as snippetCompletion, ay as syntaxTree, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aw as ifNotIn, ax as completeFromList, aF as IterMode, aG as NodeWeakMap } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, ay as syntaxTree, aw as ifNotIn, as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aF as IterMode, ax as completeFromList, aG as NodeWeakMap, aE as snippetCompletion } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, ay as syntaxTree, aw as ifNotIn, as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aF as IterMode, ax as completeFromList, aG as NodeWeakMap, aE as snippetCompletion } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { useReducer, useRef, useCallback, useLayoutEffect, Component, useContext, useState, useEffect, createContext, forwardRef, createElement, cloneElement, useMemo, Profiler, StrictMode } from 'react';
3
3
  import ReactDOM__default from 'react-dom';
4
- import { i as isSymbol, t as toString, k as keys, g as getSymbols$1, s as stubArray, a as arrayPush, b as baseGetAllKeys, c as getTag, d as getAllKeys, e as createAggregator, f as baseGet, h as baseIteratee, j as castPath, l as toKey, m as flatRest, n as arrayMap$1, o as baseSet, p as baseUniq, q as baseFlatten, r as generateUtilityClass, A as AnalyticsContext, u as useMustNotChange, P as PropTypes, v as useCurrentLayoutActions, w as useCurrentLayoutSelector, x as reportError, y as AppError, E as ErrorDisplay, S as Stack$1, z as makeStyles$1, _ as _extends$1, L as Logger, B as useGuaranteedContext, W as WorkspaceContext, C as useAnalytics, D as AppEvent, F as LeftSidebarItemKeys, R as RightSidebarItemKeys, G as usePanelMosaicId, H as useTranslation, I as usePanelCatalog, J as EmptyState, K as isEmpty, M as PanelContext, N as PanelCatalogContext, O as useSelectedPanels, Q as usePanelStateStore, T as useDefaultPanelTitle, U as PANEL_TITLE_CONFIG_KEY, V as noop$4, X as getPanelTypeFromId, Y as useWorkspaceStore, Z as useShallowMemo, $ as TAB_PANEL_TYPE, a0 as WorkspaceStoreSelectors, a1 as difference, a2 as filterMap, a3 as dist$3, a4 as usePanelContext, a5 as useMessagePipeline, a6 as v4, a7 as useHoverValue, a8 as useSetHoverValue, a9 as useClearHoverValue, aa as useAppConfiguration, ab as useMessagePipelineGetter, ac as usePanelSettingsTreeUpdate, ad as PlayerCapabilities, ae as useValueChangedDebugLog, af as assertNever, ag as PlayerPresence, ah as typescript, ai as isEqual, aj as isDesktopApp, ak as createTheme, al as propTypesExports, am as useJsonTreeTheme } from './index-BBXW7Wxj.js';
4
+ import { i as isSymbol, t as toString, k as keys, g as getSymbols$1, s as stubArray, a as arrayPush, b as baseGetAllKeys, c as getTag, d as getAllKeys, e as createAggregator, f as baseGet, h as baseIteratee, j as castPath, l as toKey, m as flatRest, n as arrayMap$1, o as baseSet, p as baseUniq, q as baseFlatten, r as generateUtilityClass, A as AnalyticsContext, u as useMustNotChange, P as PropTypes, v as useCurrentLayoutActions, w as useCurrentLayoutSelector, x as reportError, y as AppError, E as ErrorDisplay, S as Stack$1, z as makeStyles$1, _ as _extends$1, L as Logger, B as useGuaranteedContext, W as WorkspaceContext, C as useAnalytics, D as AppEvent, F as LeftSidebarItemKeys, R as RightSidebarItemKeys, G as usePanelMosaicId, H as useTranslation, I as usePanelCatalog, J as EmptyState, K as isEmpty, M as PanelContext, N as PanelCatalogContext, O as useSelectedPanels, Q as usePanelStateStore, T as useDefaultPanelTitle, U as PANEL_TITLE_CONFIG_KEY, V as noop$4, X as getPanelTypeFromId, Y as useWorkspaceStore, Z as useShallowMemo, $ as TAB_PANEL_TYPE, a0 as WorkspaceStoreSelectors, a1 as difference, a2 as filterMap, a3 as dist$3, a4 as usePanelContext, a5 as useMessagePipeline, a6 as v4, a7 as useHoverValue, a8 as useSetHoverValue, a9 as useClearHoverValue, aa as useAppConfiguration, ab as useMessagePipelineGetter, ac as usePanelSettingsTreeUpdate, ad as PlayerCapabilities, ae as useValueChangedDebugLog, af as assertNever, ag as PlayerPresence, ah as typescript, ai as isEqual, aj as isDesktopApp, ak as createTheme, al as propTypesExports, am as useJsonTreeTheme } from './index-CNWGMhCW.js';
5
5
  import { createStore, useStore } from 'zustand';
6
6
  import { MosaicDragType, MosaicContext, MosaicWindowContext, getOtherBranch, getNodeAtPath } from 'react-mosaic-component';
7
7
  import { a as getDefaultExportFromCjs, c as commonjsGlobal, g as getAugmentedNamespace, E as EventEmitter } from './worker-utils-Jii8lIsy.js';
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, aq as styleTags, ar as tags, at as LanguageSupport, av as LRParser } from './index-BBXW7Wxj.js';
1
+ import { as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, aq as styleTags, ar as tags, at as LanguageSupport, av as LRParser } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aC as ContextTracker, au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aL as parseMixed } from './index-BBXW7Wxj.js';
1
+ import { aC as ContextTracker, au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport, aL as parseMixed } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-BBXW7Wxj.js';
1
+ import { aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, az as flatIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -11632,11 +11632,35 @@ function createMessageHandler(callback) {
11632
11632
  };
11633
11633
  }
11634
11634
 
11635
+ class MetricsManager {
11636
+ metrics = {};
11637
+ registerEvent(topic) {
11638
+ const currentTime = performance.now();
11639
+ this.metrics[topic] ??= [];
11640
+ this.metrics[topic].unshift(currentTime);
11641
+ this.metrics[topic].length = 100;
11642
+ }
11643
+ calculate(topic) {
11644
+ const topicMetrics = this.metrics[topic];
11645
+ if (!topicMetrics) {
11646
+ return 0;
11647
+ }
11648
+ let totalInterval = 0;
11649
+ for (let i = 1; i < topicMetrics.length; ++i) {
11650
+ totalInterval += topicMetrics[i - 1] - topicMetrics[i];
11651
+ }
11652
+ if (isNaN(totalInterval)) {
11653
+ return 0;
11654
+ }
11655
+ const fps = 1_000 / (totalInterval / (topicMetrics.length - 1));
11656
+ return Math.round(fps);
11657
+ }
11658
+ }
11659
+
11635
11660
  // This Source Code Form is subject to the terms of the Mozilla Public
11636
11661
  // License, v2.0. If a copy of the MPL was not distributed with this
11637
11662
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
11638
11663
 
11639
- const CURRENT_FRAME_MAXIMUM_SIZE_BYTES = 100 * 1024 * 1024;
11640
11664
  class ProblemManager {
11641
11665
  problems = [];
11642
11666
  addProblem(problem) {
@@ -11655,65 +11679,51 @@ class FoxgloveConnection {
11655
11679
  playerCapabilities = [PlayerCapabilities.playbackControl];
11656
11680
 
11657
11681
  // state options
11658
- parsedMessages = [];
11659
- parsedMessagesBytes = 0;
11682
+ messageEvent = null;
11660
11683
  receivedBytes = 0;
11661
11684
  parameters = new Map();
11662
11685
  publishedTopics = new Map();
11663
11686
  subscribedTopics = new Map();
11664
11687
  advertisedServices = new Map();
11665
11688
  problems = new ProblemManager();
11689
+ inputMetrics = new MetricsManager();
11690
+ decodeMetrics = new MetricsManager();
11666
11691
 
11667
11692
  // message handler
11668
11693
 
11669
11694
  topics = {};
11670
11695
  constructor(id) {
11671
11696
  this.id = id;
11672
- this.messageHandler = createMessageHandler(this.handleMessageEvents.bind(this));
11697
+ this.messageHandler = createMessageHandler(this.handleParsedMessage.bind(this));
11673
11698
  }
11674
11699
  setListener(listener) {
11675
11700
  this.listener = listener;
11676
11701
  this.emitState();
11677
11702
  }
11703
+ getTopicMetrics(topic) {
11704
+ return {
11705
+ inputFPS: this.inputMetrics.calculate(topic),
11706
+ postDecodeFPS: this.decodeMetrics.calculate(topic)
11707
+ };
11708
+ }
11678
11709
  getCurrentTime() {
11679
11710
  return dist$1.fromMillis(Date.now());
11680
11711
  }
11681
11712
  onMessagePacket(event) {
11713
+ this.inputMetrics.registerEvent(event.data.topic);
11682
11714
  this.messageHandler.handle(event.data);
11683
11715
  }
11684
- handleMessageEvents(event) {
11716
+ handleParsedMessage(event) {
11717
+ this.decodeMetrics.registerEvent(event.topic);
11685
11718
  const messageSize = estimateObjectSize(event.message);
11686
11719
  event.sizeInBytes = messageSize;
11687
- this.parsedMessagesBytes += messageSize;
11688
- this.parsedMessages.push(event);
11689
- if (this.parsedMessagesBytes > CURRENT_FRAME_MAXIMUM_SIZE_BYTES) {
11690
- // console.debug(
11691
- // `WebSocketPlayer maximum frame size (${(
11692
- // CURRENT_FRAME_MAXIMUM_SIZE_BYTES / 1024 / 1024
11693
- // ).toFixed(
11694
- // 2,
11695
- // )}MB) reached. Dropping old messages. This accumulation can occur if the browser tab has been inactive.`,
11696
- // );
11697
-
11698
- // Amortize cost of dropping messages by dropping parsedMessages size to
11699
- // 80% so that it doesn't happen for every message after reaching the limit
11700
- const evictUntilSize = 0.8 * CURRENT_FRAME_MAXIMUM_SIZE_BYTES;
11701
- let droppedBytes = 0;
11702
- let indexToCutBefore = 0;
11703
- while (this.parsedMessagesBytes - droppedBytes > evictUntilSize) {
11704
- droppedBytes += this.parsedMessages[indexToCutBefore].sizeInBytes;
11705
- indexToCutBefore++;
11706
- }
11707
- this.parsedMessages.splice(0, indexToCutBefore);
11708
- this.parsedMessagesBytes -= droppedBytes;
11709
- }
11720
+ this.messageEvent = event;
11710
11721
  this.emitState();
11711
11722
  }
11712
11723
  emitState = debouncePromise(async () => {
11713
- const messages = this.parsedMessages;
11714
- this.parsedMessages = [];
11715
- this.parsedMessagesBytes = 0;
11716
- if (!this.listener) {
11724
+ const message = this.messageEvent;
11725
+ this.messageEvent = null;
11726
+ if (!this.listener || !message) {
11717
11727
  await Promise.resolve();
11718
11728
  return;
11719
11729
  }
@@ -11726,12 +11736,10 @@ class FoxgloveConnection {
11726
11736
  }
11727
11737
  const problems = this.problems.getProblems();
11728
11738
  this.problems.clearProblems();
11729
- for (const message of messages) {
11730
- this.topics[message.topic] = {
11731
- name: message.topic,
11732
- schemaName: message.schemaName
11733
- };
11734
- }
11739
+ this.topics[message.topic] = {
11740
+ name: message.topic,
11741
+ schemaName: message.schemaName
11742
+ };
11735
11743
  const newPlayerState = {
11736
11744
  name: this.id,
11737
11745
  presence: this.playerPresence,
@@ -11742,7 +11750,7 @@ class FoxgloveConnection {
11742
11750
  problems,
11743
11751
  urlState: undefined,
11744
11752
  activeData: {
11745
- messages,
11753
+ messages: [message],
11746
11754
  totalBytesReceived: this.receivedBytes,
11747
11755
  startTime: this.startTime,
11748
11756
  endTime: this.endTime,
@@ -11802,8 +11810,7 @@ class WebSocketConnection extends BaseConnection {
11802
11810
  this.emitState();
11803
11811
  };
11804
11812
  #onError = _event => {
11805
- this.parsedMessages = [];
11806
- this.parsedMessagesBytes = 0;
11813
+ this.messageEvent = null;
11807
11814
  this.playerPresence = PlayerPresence.ERROR;
11808
11815
  this.emitState();
11809
11816
  };
@@ -19177,13 +19184,14 @@ function WorkspaceContextProvider(props) {
19177
19184
  }, children);
19178
19185
  }
19179
19186
 
19187
+ const Context$2 = React__default.createContext([]);
19188
+ const ConnectionsProvider = Context$2.Provider;
19189
+ const useConnections = () => React__default.useContext(Context$2);
19190
+
19180
19191
  const selectRenderDone = state => state.renderDone;
19181
19192
  function MessagePipelineProvider(props) {
19193
+ const connections = useConnections();
19182
19194
  const promisesToWaitForRef = useRef([]);
19183
- const {
19184
- children,
19185
- connections
19186
- } = props;
19187
19195
  const store = useMemo(() => {
19188
19196
  return createMessagePipelineStore({
19189
19197
  promisesToWaitForRef,
@@ -19221,7 +19229,7 @@ function MessagePipelineProvider(props) {
19221
19229
  }, [connections, store]);
19222
19230
  return /*#__PURE__*/React__default.createElement(ContextInternal.Provider, {
19223
19231
  value: store
19224
- }, children);
19232
+ }, props.children);
19225
19233
  }
19226
19234
  function createMessageListener(args) {
19227
19235
  const {
@@ -19374,19 +19382,21 @@ const VisualizerContext = /*#__PURE__*/React__default.memo(function VisualizerCo
19374
19382
  return undefined;
19375
19383
  }
19376
19384
  };
19385
+
19386
+ // TODO: Simplify
19377
19387
  return /*#__PURE__*/React__default.createElement(AppConfigurationContext.Provider, {
19378
19388
  value: appConfiguration
19379
19389
  }, /*#__PURE__*/React__default.createElement(DndProvider, {
19380
19390
  backend: HTML5Backend
19381
- }, /*#__PURE__*/React__default.createElement(WorkspaceContextProvider, null, /*#__PURE__*/React__default.createElement(GlobalCss, null), /*#__PURE__*/React__default.createElement(CssBaseline, null, /*#__PURE__*/React__default.createElement(ErrorBoundary, null, /*#__PURE__*/React__default.createElement(TimelineInteractionStateProvider, null, /*#__PURE__*/React__default.createElement(CurrentLayoutProvider, null, /*#__PURE__*/React__default.createElement(MessagePipelineProvider, {
19382
- connections: connections
19383
- }, /*#__PURE__*/React__default.createElement(EventsProvider, null, /*#__PURE__*/React__default.createElement(MosaicContext.Provider, {
19391
+ }, /*#__PURE__*/React__default.createElement(WorkspaceContextProvider, null, /*#__PURE__*/React__default.createElement(GlobalCss, null), /*#__PURE__*/React__default.createElement(CssBaseline, null, /*#__PURE__*/React__default.createElement(ErrorBoundary, null, /*#__PURE__*/React__default.createElement(TimelineInteractionStateProvider, null, /*#__PURE__*/React__default.createElement(CurrentLayoutProvider, null, /*#__PURE__*/React__default.createElement(ConnectionsProvider, {
19392
+ value: connections
19393
+ }, /*#__PURE__*/React__default.createElement(MessagePipelineProvider, null, /*#__PURE__*/React__default.createElement(EventsProvider, null, /*#__PURE__*/React__default.createElement(MosaicContext.Provider, {
19384
19394
  value: mosaicContext
19385
19395
  }, /*#__PURE__*/React__default.createElement(MosaicWindowContext.Provider, {
19386
19396
  value: mosaicWindowContext
19387
19397
  }, /*#__PURE__*/React__default.createElement(PanelCatalogContext.Provider, {
19388
19398
  value: panelCatalog
19389
- }, /*#__PURE__*/React__default.createElement(PanelStateContextProvider, null, children)))))))))))));
19399
+ }, /*#__PURE__*/React__default.createElement(PanelStateContextProvider, null, children))))))))))))));
19390
19400
  });
19391
19401
 
19392
19402
  function _classCallCheck(instance, Constructor) {
@@ -82973,7 +82983,7 @@ function legacy(parser) {
82973
82983
  return new LanguageSupport(StreamLanguage.define(parser));
82974
82984
  }
82975
82985
  function sql$1(dialectName) {
82976
- return import('./index-pNYe-U8V.js').then(m => m.sql({ dialect: m[dialectName] }));
82986
+ return import('./index-Dn-E1-20.js').then(m => m.sql({ dialect: m[dialectName] }));
82977
82987
  }
82978
82988
  /**
82979
82989
  An array of language descriptions for known language packages.
@@ -82984,7 +82994,7 @@ const languages = [
82984
82994
  name: "C",
82985
82995
  extensions: ["c", "h", "ino"],
82986
82996
  load() {
82987
- return import('./index-DkQzCBNS.js').then(m => m.cpp());
82997
+ return import('./index-Bay9MnxH.js').then(m => m.cpp());
82988
82998
  }
82989
82999
  }),
82990
83000
  /*@__PURE__*/LanguageDescription.of({
@@ -82992,7 +83002,7 @@ const languages = [
82992
83002
  alias: ["cpp"],
82993
83003
  extensions: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"],
82994
83004
  load() {
82995
- return import('./index-DkQzCBNS.js').then(m => m.cpp());
83005
+ return import('./index-Bay9MnxH.js').then(m => m.cpp());
82996
83006
  }
82997
83007
  }),
82998
83008
  /*@__PURE__*/LanguageDescription.of({
@@ -83012,7 +83022,7 @@ const languages = [
83012
83022
  name: "Go",
83013
83023
  extensions: ["go"],
83014
83024
  load() {
83015
- return import('./index-zKmjws_7.js').then(m => m.go());
83025
+ return import('./index-B8FQDMoh.js').then(m => m.go());
83016
83026
  }
83017
83027
  }),
83018
83028
  /*@__PURE__*/LanguageDescription.of({
@@ -83027,7 +83037,7 @@ const languages = [
83027
83037
  name: "Java",
83028
83038
  extensions: ["java"],
83029
83039
  load() {
83030
- return import('./index-Cl5tDqdc.js').then(m => m.java());
83040
+ return import('./index-BvNZUlo_.js').then(m => m.java());
83031
83041
  }
83032
83042
  }),
83033
83043
  /*@__PURE__*/LanguageDescription.of({
@@ -83043,7 +83053,7 @@ const languages = [
83043
83053
  alias: ["json5"],
83044
83054
  extensions: ["json", "map"],
83045
83055
  load() {
83046
- return import('./index-H6bxF3CN.js').then(m => m.json());
83056
+ return import('./index-otpYhpPx.js').then(m => m.json());
83047
83057
  }
83048
83058
  }),
83049
83059
  /*@__PURE__*/LanguageDescription.of({
@@ -83057,14 +83067,14 @@ const languages = [
83057
83067
  name: "LESS",
83058
83068
  extensions: ["less"],
83059
83069
  load() {
83060
- return import('./index-W-M5T20d.js').then(m => m.less());
83070
+ return import('./index-GbwWdY6w.js').then(m => m.less());
83061
83071
  }
83062
83072
  }),
83063
83073
  /*@__PURE__*/LanguageDescription.of({
83064
83074
  name: "Liquid",
83065
83075
  extensions: ["liquid"],
83066
83076
  load() {
83067
- return import('./index-DCbNqqQc.js').then(m => m.liquid());
83077
+ return import('./index-2SFix7KY.js').then(m => m.liquid());
83068
83078
  }
83069
83079
  }),
83070
83080
  /*@__PURE__*/LanguageDescription.of({
@@ -83090,7 +83100,7 @@ const languages = [
83090
83100
  name: "PHP",
83091
83101
  extensions: ["php", "php3", "php4", "php5", "php7", "phtml"],
83092
83102
  load() {
83093
- return import('./index-DAPJpbdc.js').then(m => m.php());
83103
+ return import('./index-ChQWCJEj.js').then(m => m.php());
83094
83104
  }
83095
83105
  }),
83096
83106
  /*@__PURE__*/LanguageDescription.of({
@@ -83107,28 +83117,28 @@ const languages = [
83107
83117
  extensions: ["BUILD", "bzl", "py", "pyw"],
83108
83118
  filename: /^(BUCK|BUILD)$/,
83109
83119
  load() {
83110
- return import('./index-lDSplInz.js').then(m => m.python());
83120
+ return import('./index-B8t-Gi4x.js').then(m => m.python());
83111
83121
  }
83112
83122
  }),
83113
83123
  /*@__PURE__*/LanguageDescription.of({
83114
83124
  name: "Rust",
83115
83125
  extensions: ["rs"],
83116
83126
  load() {
83117
- return import('./index-Bpjac43y.js').then(m => m.rust());
83127
+ return import('./index-DSLjhjen.js').then(m => m.rust());
83118
83128
  }
83119
83129
  }),
83120
83130
  /*@__PURE__*/LanguageDescription.of({
83121
83131
  name: "Sass",
83122
83132
  extensions: ["sass"],
83123
83133
  load() {
83124
- return import('./index-CF21cEJo.js').then(m => m.sass({ indented: true }));
83134
+ return import('./index-txFQeh8N.js').then(m => m.sass({ indented: true }));
83125
83135
  }
83126
83136
  }),
83127
83137
  /*@__PURE__*/LanguageDescription.of({
83128
83138
  name: "SCSS",
83129
83139
  extensions: ["scss"],
83130
83140
  load() {
83131
- return import('./index-CF21cEJo.js').then(m => m.sass());
83141
+ return import('./index-txFQeh8N.js').then(m => m.sass());
83132
83142
  }
83133
83143
  }),
83134
83144
  /*@__PURE__*/LanguageDescription.of({
@@ -83159,7 +83169,7 @@ const languages = [
83159
83169
  name: "WebAssembly",
83160
83170
  extensions: ["wat", "wast"],
83161
83171
  load() {
83162
- return import('./index-F8-9liAo.js').then(m => m.wast());
83172
+ return import('./index-Bk6p8-al.js').then(m => m.wast());
83163
83173
  }
83164
83174
  }),
83165
83175
  /*@__PURE__*/LanguageDescription.of({
@@ -83167,7 +83177,7 @@ const languages = [
83167
83177
  alias: ["rss", "wsdl", "xsd"],
83168
83178
  extensions: ["xml", "xsl", "xsd", "svg"],
83169
83179
  load() {
83170
- return import('./index-ovt0UKFi.js').then(m => m.xml());
83180
+ return import('./index-B8Cado6g.js').then(m => m.xml());
83171
83181
  }
83172
83182
  }),
83173
83183
  /*@__PURE__*/LanguageDescription.of({
@@ -83175,7 +83185,7 @@ const languages = [
83175
83185
  alias: ["yml"],
83176
83186
  extensions: ["yaml", "yml"],
83177
83187
  load() {
83178
- return import('./index-CbLiW7lk.js').then(m => m.yaml());
83188
+ return import('./index-BkQgkjmO.js').then(m => m.yaml());
83179
83189
  }
83180
83190
  }),
83181
83191
  // Legacy modes ported from CodeMirror 5
@@ -83971,13 +83981,13 @@ const languages = [
83971
83981
  name: "Vue",
83972
83982
  extensions: ["vue"],
83973
83983
  load() {
83974
- return import('./index-QEJn3K9v.js').then(m => m.vue());
83984
+ return import('./index-DKfQ_S8i.js').then(m => m.vue());
83975
83985
  }
83976
83986
  }),
83977
83987
  /*@__PURE__*/LanguageDescription.of({
83978
83988
  name: "Angular Template",
83979
83989
  load() {
83980
- return import('./index-DlKZDt0v.js').then(m => m.angular());
83990
+ return import('./index-7n6fnp2B.js').then(m => m.angular());
83981
83991
  }
83982
83992
  })
83983
83993
  ];
@@ -154040,6 +154050,14 @@ const PanelToolbar = ({
154040
154050
  const {
154041
154051
  detections
154042
154052
  } = useDetections();
154053
+ const connections = useConnections();
154054
+ const [metrics, setMetrics] = React__default.useState();
154055
+ React__default.useEffect(() => {
154056
+ const interval = setInterval(() => {
154057
+ setMetrics(connections[0]?.getTopicMetrics(topic));
154058
+ }, 500);
154059
+ return () => clearInterval(interval);
154060
+ }, []);
154043
154061
  const [annotationsOpened, setAnnotationsOpened] = React__default.useState(false);
154044
154062
  const hasExtra = React__default.useMemo(() => detections.some(topic => topic.extra && !topic.enabled), [detections]);
154045
154063
  const [extraVisible, setExtraVisible] = React__default.useState(false);
@@ -154051,6 +154069,11 @@ const PanelToolbar = ({
154051
154069
  })
154052
154070
  })));
154053
154071
  }, [detections, setDetections]);
154072
+
154073
+ // TODO: show only when debug mode is ON
154074
+ const name = React__default.useMemo(() => {
154075
+ return `${topic} - ${metrics?.inputFPS || 0}/${metrics?.postDecodeFPS || 0} FPS`;
154076
+ }, [topic, metrics]);
154054
154077
  return /*#__PURE__*/React__default.createElement(Flex, {
154055
154078
  direction: "row",
154056
154079
  gap: "sm",
@@ -154060,7 +154083,7 @@ const PanelToolbar = ({
154060
154083
  paddingLeft: 16
154061
154084
  }
154062
154085
  }, /*#__PURE__*/React__default.createElement(SubHeader, {
154063
- text: topic
154086
+ text: name
154064
154087
  }), !disableAnnotations && kind === 'image' && /*#__PURE__*/React__default.createElement(DropdownMenu, {
154065
154088
  onOpenChange: setAnnotationsOpened
154066
154089
  }, /*#__PURE__*/React__default.createElement(DropdownMenuTrigger, {
@@ -154167,7 +154190,7 @@ const Panel = ({
154167
154190
  }, children))))));
154168
154191
  };
154169
154192
 
154170
- const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-DUnP2Xma.js'));
154193
+ const ImagePanelComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-Cp3omW6p.js'));
154171
154194
  const ImagePanelBody = ({
154172
154195
  topic
154173
154196
  }) => {
@@ -154202,7 +154225,7 @@ const ImagePanel = /*#__PURE__*/React__default.memo(function ImagePanel(props) {
154202
154225
  // License, v2.0. If a copy of the MPL was not distributed with this
154203
154226
  // file, You can obtain one at http://mozilla.org/MPL/2.0/
154204
154227
 
154205
- const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-0Q6EqxBW.js'));
154228
+ const ThreeDeeRenderComponent = /*#__PURE__*/React__default.lazy(async () => await import('./index-BEcWpcB1.js'));
154206
154229
  const PointCloudPanelBody = ({
154207
154230
  topic
154208
154231
  }) => {
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, aK as html, at as LanguageSupport, aL as parseMixed } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, aA as delimitedIndent, ap as foldNodeProp, aB as foldInside, aK as html, at as LanguageSupport, aL as parseMixed } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,7 +1,7 @@
1
- import { ImagePanel } from './index-0Q6EqxBW.js';
1
+ import { ImagePanel } from './index-BEcWpcB1.js';
2
2
  import 'react';
3
3
  import 'react-dom';
4
- import './index-BBXW7Wxj.js';
4
+ import './index-CNWGMhCW.js';
5
5
  import './worker-utils-Jii8lIsy.js';
6
6
  import 'hydrated-ws';
7
7
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aq as styleTags, ar as tags, as as LRLanguage, at as LanguageSupport, av as LRParser, aD as LocalTokenGroup, aK as html, aL as parseMixed, aN as javascriptLanguage } from './index-BBXW7Wxj.js';
1
+ import { aq as styleTags, ar as tags, as as LRLanguage, at as LanguageSupport, av as LRParser, aD as LocalTokenGroup, aK as html, aL as parseMixed, aN as javascriptLanguage } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aq as styleTags, ar as tags, as as LRLanguage, at as LanguageSupport, au as ExternalTokenizer, av as LRParser, aw as ifNotIn, ax as completeFromList, ay as syntaxTree } from './index-BBXW7Wxj.js';
1
+ import { an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aq as styleTags, ar as tags, as as LRLanguage, at as LanguageSupport, au as ExternalTokenizer, av as LRParser, aw as ifNotIn, ax as completeFromList, ay as syntaxTree } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aq as styleTags, ar as tags, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, aH as defineCSSCompletionSource, at as LanguageSupport, av as LRParser, au as ExternalTokenizer } from './index-BBXW7Wxj.js';
1
+ import { aq as styleTags, ar as tags, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, aH as defineCSSCompletionSource, at as LanguageSupport, av as LRParser, au as ExternalTokenizer } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-BBXW7Wxj.js';
1
+ import { aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, an as indentNodeProp, ao as continuedIndent, ap as foldNodeProp, aB as foldInside, at as LanguageSupport } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
@@ -1,4 +1,4 @@
1
- import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, ap as foldNodeProp, aB as foldInside, an as indentNodeProp, ao as continuedIndent, aH as defineCSSCompletionSource, at as LanguageSupport } from './index-BBXW7Wxj.js';
1
+ import { au as ExternalTokenizer, aC as ContextTracker, aq as styleTags, ar as tags, av as LRParser, as as LRLanguage, ap as foldNodeProp, aB as foldInside, an as indentNodeProp, ao as continuedIndent, aH as defineCSSCompletionSource, at as LanguageSupport } from './index-CNWGMhCW.js';
2
2
  import './worker-utils-Jii8lIsy.js';
3
3
  import 'hydrated-ws';
4
4
  import 'ms';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { aR as ImagePanel, aQ as PanelLayout, aS as PointCloudPanel, aP as VisualizerContext, aO as WebSocketConnection } from './index-BBXW7Wxj.js';
1
+ export { aR as ImagePanel, aQ as PanelLayout, aS as PointCloudPanel, aP as VisualizerContext, aO as WebSocketConnection } from './index-CNWGMhCW.js';
2
2
  export { d as createWsWorkerMessageListener } from './worker-utils-Jii8lIsy.js';
3
3
  import 'react';
4
4
  import 'zustand';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxonis/visualizer-protobuf",
3
- "version": "1.8.8",
3
+ "version": "1.9.0",
4
4
  "type": "module",
5
5
  "description": "RobotHub Visualizer Library",
6
6
  "author": "Luxonis Corp",