@luxonis/visualizer-protobuf 1.9.0 → 2.0.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.
- package/dist/apps/depthai-visualizer/src/components/Panel.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/components/Panel.js +7 -6
- package/dist/apps/depthai-visualizer/src/components/Panel.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/components/PanelToolbar.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js +5 -5
- package/dist/apps/depthai-visualizer/src/components/PanelToolbar.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/connection/{ws/Adapter.d.ts → adapter.d.ts} +13 -12
- package/dist/apps/depthai-visualizer/src/connection/adapter.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/{ws/Adapter.js → adapter.js} +19 -15
- package/dist/apps/depthai-visualizer/src/connection/adapter.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/communicator.d.ts +84 -0
- package/dist/apps/depthai-visualizer/src/connection/communicator.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/communicator.js +110 -0
- package/dist/apps/depthai-visualizer/src/connection/communicator.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/connection.d.ts +43 -0
- package/dist/apps/depthai-visualizer/src/connection/connection.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/connection.js +64 -0
- package/dist/apps/depthai-visualizer/src/connection/connection.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/{BaseConnection.d.ts → foxglove-connection.d.ts} +4 -29
- package/dist/apps/depthai-visualizer/src/connection/foxglove-connection.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/{BaseConnection.js → foxglove-connection.js} +2 -4
- package/dist/apps/depthai-visualizer/src/connection/foxglove-connection.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.d.ts +33 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.js +114 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker-utils.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.d.ts +2 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.d.ts.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.js +6 -0
- package/dist/apps/depthai-visualizer/src/connection/webrtc/worker.js.map +1 -0
- package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.d.ts +11 -76
- package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.js +32 -113
- package/dist/apps/depthai-visualizer/src/connection/ws/worker-utils.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts +3 -3
- package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.js +3 -0
- package/dist/apps/depthai-visualizer/src/context/ConnectionsProvider.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/VisualizerContext.d.ts +2 -2
- package/dist/apps/depthai-visualizer/src/context/VisualizerContext.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/VisualizerContext.js +1 -1
- package/dist/apps/depthai-visualizer/src/context/VisualizerContext.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/VisualizerFlatContext.d.ts +3 -3
- package/dist/apps/depthai-visualizer/src/context/VisualizerFlatContext.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/context/VisualizerFlatContext.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/index.d.ts +4 -3
- package/dist/apps/depthai-visualizer/src/index.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/index.js +2 -1
- package/dist/apps/depthai-visualizer/src/index.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/constants.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/constants.js +3 -0
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/constants.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/custom.d.ts +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/custom.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/custom.js +3 -3
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/custom.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/detection.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/detection.js +2 -2
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/detection.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/utils.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/utils.js +3 -0
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/detections/utils.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/imu/imu.d.ts +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/imu/imu.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/pointcloud/point-cloud.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/pointcloud/point-cloud.js +5 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/pointcloud/point-cloud.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/color.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/color.js +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/color.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/depth.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/depth.js +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/depth.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/h264.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/h264.js +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/h264.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mjpeg.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mjpeg.js +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mjpeg.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mono.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mono.js +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization/video/mono.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization.d.ts +2 -2
- package/dist/apps/depthai-visualizer/src/messaging/deserialization.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/deserialization.js +3 -3
- package/dist/apps/depthai-visualizer/src/messaging/deserialization.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/message-handler.d.ts +2 -2
- package/dist/apps/depthai-visualizer/src/messaging/message-handler.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/protobuf.d.ts +2 -2
- package/dist/apps/depthai-visualizer/src/messaging/protobuf.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/messaging/protobuf.js +5 -2
- package/dist/apps/depthai-visualizer/src/messaging/protobuf.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/panels/PointCloudPanel.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/panels/PointCloudPanel.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.d.ts +2 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.js +22 -2
- package/dist/apps/depthai-visualizer/src/protobuf.generated/EncodedFrame.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.js +3 -0
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImageAnnotations.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.d.ts +2 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.js +21 -2
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgDetections.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.d.ts +2 -2
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.js +13 -10
- package/dist/apps/depthai-visualizer/src/protobuf.generated/ImgFrame.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.js +3 -0
- package/dist/apps/depthai-visualizer/src/protobuf.generated/PointCloudData.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.d.ts +2 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.js +21 -2
- package/dist/apps/depthai-visualizer/src/protobuf.generated/SpatialImgDetections.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/common.d.ts +14 -36
- package/dist/apps/depthai-visualizer/src/protobuf.generated/common.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/protobuf.generated/common.js +103 -280
- package/dist/apps/depthai-visualizer/src/protobuf.generated/common.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/callback-manager.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/callback-manager.js +3 -0
- package/dist/apps/depthai-visualizer/src/utils/callback-manager.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/compatibility.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/compatibility.js +3 -0
- package/dist/apps/depthai-visualizer/src/utils/compatibility.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/encoding.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/encoding.js +3 -0
- package/dist/apps/depthai-visualizer/src/utils/encoding.js.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/metrics-manager.d.ts.map +1 -1
- package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js +3 -0
- package/dist/apps/depthai-visualizer/src/utils/metrics-manager.js.map +1 -1
- package/dist/{worker-utils-Jii8lIsy.js → communicator-D_EeiIbd.js} +1997 -3432
- package/dist/{index-DSLjhjen.js → index-Al0pDnqr.js} +4 -2
- package/dist/{index-Bay9MnxH.js → index-BOSrUvKZ.js} +4 -2
- package/dist/{index-DKfQ_S8i.js → index-BeQsiPfT.js} +4 -2
- package/dist/{index-B8Cado6g.js → index-BfF6NM_p.js} +4 -2
- package/dist/{index-BkQgkjmO.js → index-BtdqjdG0.js} +4 -2
- package/dist/{index-2SFix7KY.js → index-By94udNp.js} +4 -2
- package/dist/{index-BEcWpcB1.js → index-CgoOLCnB.js} +5 -3
- package/dist/{index-B8FQDMoh.js → index-CnbrHWCd.js} +4 -2
- package/dist/{index-7n6fnp2B.js → index-D-Et9RVh.js} +4 -2
- package/dist/{index-BvNZUlo_.js → index-D0vwBTE3.js} +4 -2
- package/dist/{index-CNWGMhCW.js → index-DQCAxiet.js} +255 -179
- package/dist/{index-GbwWdY6w.js → index-DpXY8ing.js} +4 -2
- package/dist/{index-otpYhpPx.js → index-DudYiuIt.js} +4 -2
- package/dist/{index-B8t-Gi4x.js → index-FOw7-sDA.js} +4 -2
- package/dist/{index-Cp3omW6p.js → index-IoSJKto7.js} +5 -3
- package/dist/{index-Dn-E1-20.js → index-M-zdB4A1.js} +4 -2
- package/dist/{index-Bk6p8-al.js → index-QNisWGZ4.js} +4 -2
- package/dist/{index-txFQeh8N.js → index-doJtQKmP.js} +4 -2
- package/dist/{index-ChQWCJEj.js → index-r1jTO4Ay.js} +4 -2
- package/dist/index.js +5 -3
- package/dist/{worker-D2k1TTky.js → worker-1z9jlpUn.js} +2 -1
- package/dist/worker-DNYPTnyn.js +9 -0
- package/dist/worker-utils-BbyBpOVt.js +453 -0
- package/dist/worker-utils-DfViKOHw.js +1332 -0
- package/package.json +2 -1
- package/dist/apps/depthai-visualizer/src/connection/BaseConnection.d.ts.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/BaseConnection.js.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/webrtc/Connection.d.ts +0 -12
- package/dist/apps/depthai-visualizer/src/connection/webrtc/Connection.d.ts.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/webrtc/Connection.js +0 -79
- package/dist/apps/depthai-visualizer/src/connection/webrtc/Connection.js.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/ws/Adapter.d.ts.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/ws/Adapter.js.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/ws/Connection.d.ts +0 -11
- package/dist/apps/depthai-visualizer/src/connection/ws/Connection.d.ts.map +0 -1
- package/dist/apps/depthai-visualizer/src/connection/ws/Connection.js +0 -45
- package/dist/apps/depthai-visualizer/src/connection/ws/Connection.js.map +0 -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;
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,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,CAkDtC,CAAC"}
|
|
@@ -2,31 +2,32 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
3
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
4
4
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
5
|
+
import { Stack } from "@mui/material";
|
|
5
6
|
import { Suspense } from "react";
|
|
6
7
|
import EmptyState from "@foxglove/studio-base/components/EmptyState.js";
|
|
7
8
|
import ErrorBoundary from "@foxglove/studio-base/components/ErrorBoundary.js";
|
|
8
9
|
import RemountOnValueChange from "@foxglove/studio-base/components/RemountOnValueChange.js";
|
|
9
10
|
import { PanelToolbar } from "./PanelToolbar.js";
|
|
10
|
-
import { Stack } from "@mui/material";
|
|
11
11
|
import '../fonts/fonts.css';
|
|
12
12
|
const DetectionContext = React.createContext({ detections: [] });
|
|
13
13
|
export const useDetections = () => {
|
|
14
14
|
return React.useContext(DetectionContext);
|
|
15
15
|
};
|
|
16
|
-
const rawToAnnotations = (rawAnnotations,
|
|
16
|
+
const rawToAnnotations = (rawAnnotations, kind, current) => rawAnnotations.map((annotationTopic) => ({
|
|
17
17
|
name: annotationTopic,
|
|
18
|
-
extra,
|
|
19
|
-
enabled: current.find(({ name }) => name === annotationTopic)?.enabled ??
|
|
18
|
+
extra: kind === 'extra',
|
|
19
|
+
enabled: current.find(({ name }) => name === annotationTopic)?.enabled ?? kind === 'main'
|
|
20
20
|
}));
|
|
21
21
|
export const Panel = ({ children, kind, topic, disableAnnotations = false, annotationTopics = [], extraAnnotationTopics = [] }) => {
|
|
22
22
|
const [detections, setDetections] = React.useState([]);
|
|
23
23
|
React.useEffect(() => {
|
|
24
24
|
if (!disableAnnotations) {
|
|
25
25
|
setDetections(current => [
|
|
26
|
-
...rawToAnnotations(annotationTopics,
|
|
27
|
-
...rawToAnnotations(extraAnnotationTopics,
|
|
26
|
+
...rawToAnnotations(annotationTopics, 'main', current),
|
|
27
|
+
...rawToAnnotations(extraAnnotationTopics, 'extra', current)
|
|
28
28
|
]);
|
|
29
29
|
}
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
31
|
}, [JSON.stringify(annotationTopics), JSON.stringify(extraAnnotationTopics)]);
|
|
31
32
|
return (_jsx(RemountOnValueChange, { value: "internal-player", children: _jsx(ErrorBoundary, { children: _jsx(DetectionContext.Provider, { value: { detections }, children: _jsxs(Stack, { flexGrow: 1, overflow: "hidden", border: "1px solid #d3d3d3d9", style: { borderRadius: "8px" }, children: [_jsx(PanelToolbar, { kind: kind, topic: topic, setDetections: setDetections, disableAnnotations: disableAnnotations }), _jsx(Suspense, { fallback: _jsx(EmptyState, { children: _jsx("div", { children: "Loading..." }) }), children: _jsx(RemountOnValueChange, { value: detections, children: children }) })] }) }) }) }));
|
|
32
33
|
};
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"Panel.js","sourceRoot":"","sources":["../../../../../src/components/Panel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,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;AAEjD,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,IAAsB,EAAE,OAAqB,EAAgB,EAAE,CACjH,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,IAAI,KAAK,OAAO;IACvB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,OAAO,IAAI,IAAI,KAAK,MAAM;CAC1F,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,MAAM,EAAE,OAAO,CAAC;gBACtD,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC;aAC7D,CAAC,CAAC;QACL,CAAC;QACD,uDAAuD;IACzD,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":"
|
|
1
|
+
{"version":3,"file":"PanelToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"AASA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,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,CA2IpD,CAAC"}
|
|
@@ -2,11 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
3
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
4
4
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
5
|
-
import { useDetections } from "./Panel.js";
|
|
6
5
|
import { ArrowDownIcon, ArrowUpIcon, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Flex, HelpIcon, Icon, Label, NormalText, SubHeader, Tooltip } from "@luxonis/common-fe-components";
|
|
7
6
|
import { ImCheckboxChecked, ImCheckboxUnchecked } from "react-icons/im";
|
|
8
|
-
import
|
|
7
|
+
import { useDetections } from "./Panel.js";
|
|
9
8
|
import { useConnections } from "../context/ConnectionsProvider.js";
|
|
9
|
+
import '@luxonis/common-fe-components/styles';
|
|
10
10
|
const PanelAnnotationButton = ({ topic, onClick }) => {
|
|
11
11
|
const handleClick = React.useCallback(event => {
|
|
12
12
|
event.preventDefault();
|
|
@@ -22,7 +22,7 @@ export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations =
|
|
|
22
22
|
const interval = setInterval(() => {
|
|
23
23
|
setMetrics(connections[0]?.getTopicMetrics(topic));
|
|
24
24
|
}, 500);
|
|
25
|
-
return () => clearInterval(interval);
|
|
25
|
+
return () => { clearInterval(interval); };
|
|
26
26
|
}, []);
|
|
27
27
|
const [annotationsOpened, setAnnotationsOpened] = React.useState(false);
|
|
28
28
|
const hasExtra = React.useMemo(() => detections.some((topic) => topic.extra && !topic.enabled), [detections]);
|
|
@@ -44,11 +44,11 @@ export const PanelToolbar = ({ topic, kind, setDetections, disableAnnotations =
|
|
|
44
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: {
|
|
45
45
|
borderRadius: 0,
|
|
46
46
|
borderTopRightRadius: 8,
|
|
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: {
|
|
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: {
|
|
48
48
|
borderRadius: 4,
|
|
49
49
|
}, children: extraVisible ? "Less" : "More" })), extraVisible &&
|
|
50
50
|
detections.map((topic) => topic.extra &&
|
|
51
|
-
!topic.enabled && (_jsx(PanelAnnotationButton, { topic: topic, onClick: () => onToggleTopic(topic.name) }, topic.name)))] })] })), kind === 'pointCloud' && (_jsx(Tooltip, { content: _jsxs(_Fragment, { children: [_jsx(Label, { text: "To move camera:" }), _jsxs("ul", { children: [_jsx("li", { children: "w - Move camera forward" }), _jsx("li", { children: "a - Move camera backward" }), _jsx("li", { children: "s - Move camera to the left" }), _jsx("li", { children: "d - Move camera to the right" }), _jsx("li", { children: "Scroll \u2013 Zoom in and out" }), _jsx("li", { children: "Drag \u2013 Move camera parallel to the ground" }), _jsx("li", { children: "Right-click + Drag horizontally \u2013 Rotate the camera around the world's z-axis" }), _jsx("li", { children: "Right-click + Drag vertically \u2013 Pan the camera around the world's x- and y- axes" })] })] }), children: _jsx(Button, { variant: "ghost", colorVariant: "white", cursor: "help", icon: HelpIcon, style: {
|
|
51
|
+
!topic.enabled && (_jsx(PanelAnnotationButton, { topic: topic, onClick: () => { onToggleTopic(topic.name); } }, topic.name)))] })] })), kind === 'pointCloud' && (_jsx(Tooltip, { content: _jsxs(_Fragment, { children: [_jsx(Label, { text: "To move camera:" }), _jsxs("ul", { children: [_jsx("li", { children: "w - Move camera forward" }), _jsx("li", { children: "a - Move camera backward" }), _jsx("li", { children: "s - Move camera to the left" }), _jsx("li", { children: "d - Move camera to the right" }), _jsx("li", { children: "Scroll \u2013 Zoom in and out" }), _jsx("li", { children: "Drag \u2013 Move camera parallel to the ground" }), _jsx("li", { children: "Right-click + Drag horizontally \u2013 Rotate the camera around the world's z-axis" }), _jsx("li", { children: "Right-click + Drag vertically \u2013 Pan the camera around the world's x- and y- axes" })] })] }), children: _jsx(Button, { variant: "ghost", colorVariant: "white", cursor: "help", icon: HelpIcon, style: {
|
|
52
52
|
borderRadius: 0,
|
|
53
53
|
borderTopRightRadius: 8
|
|
54
54
|
} }) }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;
|
|
1
|
+
{"version":3,"file":"PanelToolbar.js","sourceRoot":"","sources":["../../../../../src/components/PanelToolbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
topic: string;
|
|
4
|
-
schema: string;
|
|
5
|
-
buffer: DataView;
|
|
6
|
-
};
|
|
1
|
+
import { FoxgloveAdapterInputMessage } from "./communicator.js";
|
|
2
|
+
import { PublicChannelData, VisualizerConnection, ServiceRequestArgs } from "./connection.js";
|
|
7
3
|
export type EventData = {
|
|
8
4
|
channels: PublicChannelData[] | null;
|
|
9
5
|
services: string[] | null;
|
|
10
6
|
};
|
|
11
|
-
export
|
|
7
|
+
export declare class FoxgloveWebSocketAdapter extends EventTarget implements WebSocket {
|
|
12
8
|
#private;
|
|
13
9
|
binaryType: "blob" | "arraybuffer";
|
|
14
10
|
protocol: string;
|
|
@@ -28,11 +24,16 @@ export default class Adapter extends EventTarget implements WebSocket {
|
|
|
28
24
|
readonly CLOSING: 2;
|
|
29
25
|
/** The connection is closed or couldn't be opened. */
|
|
30
26
|
readonly CLOSED: 3;
|
|
31
|
-
constructor(
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
constructor(data: (FoxgloveAdapterInputMessage & {
|
|
28
|
+
type: 'open';
|
|
29
|
+
})['data'], worker: Worker);
|
|
30
|
+
on: VisualizerConnection["on"];
|
|
31
|
+
off: VisualizerConnection["off"];
|
|
34
32
|
close(): void;
|
|
35
33
|
request({ name, timeout, ignoreResponse, body }: ServiceRequestArgs): Promise<DataView | null>;
|
|
36
|
-
send(data: string | ArrayBuffer | ArrayBufferView
|
|
34
|
+
send(data: string | ArrayBuffer | ArrayBufferView | {
|
|
35
|
+
channel: 'system' | 'message';
|
|
36
|
+
message: string;
|
|
37
|
+
}): void;
|
|
37
38
|
}
|
|
38
|
-
//# sourceMappingURL=
|
|
39
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../../src/connection/adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAgC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI9F,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3B,CAAA;AAED,qBAAa,wBAAyB,SAAQ,WAAY,YAAW,SAAS;;IAIrE,UAAU,EAAE,MAAM,GAAG,aAAa,CAAiB;IACnD,QAAQ,EAAE,MAAM,CAAM;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAM;IACxB,cAAc,EAAE,MAAM,CAAK;IAC3B,UAAU,EAAE,MAAM,CAAoB;IAEtC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAC7E,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAC5E,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAC7E,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAEtF,sCAAsC;IACtC,SAAgB,UAAU,IAAwB;IAClD,wDAAwD;IACxD,SAAgB,IAAI,IAAkB;IACtC,oDAAoD;IACpD,SAAgB,OAAO,IAAqB;IAC5C,uDAAuD;IACvD,SAAgB,MAAM,IAAoB;gBAuEvB,IAAI,EAAE,CAAC,2BAA2B,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM;IAU1F,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAQpC;IAEM,GAAG,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAErC;IAEK,KAAK,IAAI,IAAI;IAQP,OAAO,CAAC,EACnB,IAAI,EACJ,OAAkC,EAClC,cAAsB,EACtB,IAAS,EACV,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwCzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG;QAAE,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAGrH"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
-
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
|
-
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
1
|
const REQUEST_RESPONSE_TIMEOUT = 10_000;
|
|
5
|
-
export
|
|
2
|
+
export class FoxgloveWebSocketAdapter extends EventTarget {
|
|
6
3
|
#worker;
|
|
7
4
|
#connectionClosed = false;
|
|
8
5
|
binaryType = "arraybuffer";
|
|
@@ -32,7 +29,7 @@ export default class Adapter extends EventTarget {
|
|
|
32
29
|
this.#worker.postMessage(message, transferable);
|
|
33
30
|
}
|
|
34
31
|
#handleMessageEvents() {
|
|
35
|
-
const onWorkerError = (error) => console.error(`WebWorker error:`, error);
|
|
32
|
+
const onWorkerError = (error) => { console.error(`WebWorker error:`, error); };
|
|
36
33
|
this.#worker.addEventListener("error", onWorkerError);
|
|
37
34
|
this.#worker.addEventListener("messageerror", onWorkerError);
|
|
38
35
|
const onClose = () => {
|
|
@@ -77,16 +74,20 @@ export default class Adapter extends EventTarget {
|
|
|
77
74
|
}
|
|
78
75
|
case 'custom': {
|
|
79
76
|
this.dispatchEvent(new MessageEvent('custom', event.data));
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
default: {
|
|
80
|
+
// Ignore
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
|
-
constructor(
|
|
85
|
+
constructor(data, worker) {
|
|
85
86
|
super();
|
|
86
|
-
this.url = wsUrl;
|
|
87
|
-
this.#worker = worker
|
|
87
|
+
this.url = 'wsUrl' in data ? data.wsUrl : '';
|
|
88
|
+
this.#worker = worker;
|
|
88
89
|
this.#handleMessageEvents();
|
|
89
|
-
this.#sendToWorker({ type: "open", data
|
|
90
|
+
this.#sendToWorker({ type: "open", data });
|
|
90
91
|
}
|
|
91
92
|
on = (name, listener) => {
|
|
92
93
|
this.addEventListener(name, listener);
|
|
@@ -97,7 +98,9 @@ export default class Adapter extends EventTarget {
|
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
};
|
|
100
|
-
off = (name, listener) =>
|
|
101
|
+
off = (name, listener) => {
|
|
102
|
+
this.removeEventListener(name, listener);
|
|
103
|
+
};
|
|
101
104
|
close() {
|
|
102
105
|
if (!this.#connectionClosed) {
|
|
103
106
|
this.#connectionClosed = true;
|
|
@@ -105,14 +108,14 @@ export default class Adapter extends EventTarget {
|
|
|
105
108
|
this.dispatchEvent(new Event("close"));
|
|
106
109
|
}
|
|
107
110
|
}
|
|
108
|
-
request({ name, timeout = REQUEST_RESPONSE_TIMEOUT, ignoreResponse = false, body = {} }) {
|
|
109
|
-
return new Promise((resolve) => {
|
|
111
|
+
async request({ name, timeout = REQUEST_RESPONSE_TIMEOUT, ignoreResponse = false, body = {} }) {
|
|
112
|
+
return await new Promise((resolve) => {
|
|
110
113
|
const serviceCallId = ++this.#serviceCallId;
|
|
111
114
|
const listener = ({ data: message }) => {
|
|
112
115
|
if (message.type !== 'service_response') {
|
|
113
116
|
return;
|
|
114
117
|
}
|
|
115
|
-
if (message.data
|
|
118
|
+
if (message.data.serviceCallId === serviceCallId) {
|
|
116
119
|
clearTimeout(rejectionTimer);
|
|
117
120
|
if (!message.data.ok) {
|
|
118
121
|
console.error(`Service "${name}" response failed`, message.data.error);
|
|
@@ -141,8 +144,9 @@ export default class Adapter extends EventTarget {
|
|
|
141
144
|
}
|
|
142
145
|
});
|
|
143
146
|
}
|
|
147
|
+
// @ts-expect-error TODO: WebRTC hack
|
|
144
148
|
send(data) {
|
|
145
|
-
this.#sendToWorker({ type: "send", data });
|
|
149
|
+
this.#sendToWorker({ type: "send", data: data });
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
|
-
//# sourceMappingURL=
|
|
152
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../../src/connection/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { WebRtcConfig } from "@luxonis/remote-connection";
|
|
2
|
+
import { Service, Channel, ServiceCallPayload, ServiceCallResponse } from "@foxglove/ws-protocol";
|
|
3
|
+
import { PublicChannelData } from "./connection";
|
|
4
|
+
export type FoxgloveMessage = {
|
|
5
|
+
topic: string;
|
|
6
|
+
schema: string;
|
|
7
|
+
buffer: DataView;
|
|
8
|
+
};
|
|
9
|
+
export type FoxgloveAdapterInputMessage = {
|
|
10
|
+
type: "open";
|
|
11
|
+
data: {
|
|
12
|
+
wsUrl: string;
|
|
13
|
+
} | {
|
|
14
|
+
config: WebRtcConfig;
|
|
15
|
+
};
|
|
16
|
+
} | {
|
|
17
|
+
type: "send";
|
|
18
|
+
data: string | ArrayBuffer | ArrayBufferView;
|
|
19
|
+
} | {
|
|
20
|
+
type: "close";
|
|
21
|
+
data: null;
|
|
22
|
+
} | {
|
|
23
|
+
type: "call_service";
|
|
24
|
+
data: {
|
|
25
|
+
name: string;
|
|
26
|
+
serviceCallId: number;
|
|
27
|
+
body?: Record<string, any>;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export type FoxgloveAdapterOutputMessage = {
|
|
31
|
+
type: "open";
|
|
32
|
+
} | {
|
|
33
|
+
type: "close";
|
|
34
|
+
} | {
|
|
35
|
+
type: "reconnect";
|
|
36
|
+
} | {
|
|
37
|
+
type: "error";
|
|
38
|
+
error: unknown;
|
|
39
|
+
} | {
|
|
40
|
+
type: "channels";
|
|
41
|
+
data: PublicChannelData[];
|
|
42
|
+
} | {
|
|
43
|
+
type: "services";
|
|
44
|
+
data: string[];
|
|
45
|
+
} | {
|
|
46
|
+
type: "service_response";
|
|
47
|
+
data: {
|
|
48
|
+
name: string;
|
|
49
|
+
serviceCallId: number;
|
|
50
|
+
} & ({
|
|
51
|
+
ok: true;
|
|
52
|
+
error: null;
|
|
53
|
+
buffer: DataView;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
error: string;
|
|
57
|
+
buffer: null;
|
|
58
|
+
});
|
|
59
|
+
} | {
|
|
60
|
+
type: "message";
|
|
61
|
+
data: FoxgloveMessage;
|
|
62
|
+
} | {
|
|
63
|
+
type: "custom";
|
|
64
|
+
data: any;
|
|
65
|
+
};
|
|
66
|
+
export declare abstract class FoxgloveCommunicator {
|
|
67
|
+
#private;
|
|
68
|
+
protected abstract isReady(): boolean;
|
|
69
|
+
protected abstract send(message: FoxgloveAdapterOutputMessage): void;
|
|
70
|
+
protected abstract sendWithTransfer(message: FoxgloveAdapterOutputMessage, transfer: ArrayBuffer[]): void;
|
|
71
|
+
protected abstract sendServiceCallRequest(request: ServiceCallPayload): void;
|
|
72
|
+
protected abstract subscribe(channel: number): number;
|
|
73
|
+
protected handleReconnect(): void;
|
|
74
|
+
protected handleChannelsAdvertisement(channels: Channel[]): void;
|
|
75
|
+
protected handleChannelsUnadvertisement(channels: number[]): void;
|
|
76
|
+
protected handleServicesAdvertisement(services: Service[]): void;
|
|
77
|
+
protected handleServicesUnadvertisement(services: number[]): void;
|
|
78
|
+
protected handleServiceResponses(response: ServiceCallResponse): void;
|
|
79
|
+
protected handleGenericMessage(subscriptionId: number, data: DataView): void;
|
|
80
|
+
protected callService({ name, serviceCallId, body }: (FoxgloveAdapterInputMessage & {
|
|
81
|
+
type: "call_service";
|
|
82
|
+
})["data"]): void;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=communicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"communicator.d.ts","sourceRoot":"","sources":["../../../../../src/connection/communicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
|
+
import { protobufsBySchema } from "../messaging/protobuf";
|
|
5
|
+
import { recordToDataView } from "../utils/encoding";
|
|
6
|
+
export class FoxgloveCommunicator {
|
|
7
|
+
#subscriptions = new Map();
|
|
8
|
+
#services = new Map();
|
|
9
|
+
#serviceCalls = new Map();
|
|
10
|
+
#getPublicChannels() {
|
|
11
|
+
return [...this.#subscriptions.values()].map(({ kind, topic }) => ({ kind, topic }));
|
|
12
|
+
}
|
|
13
|
+
#getPublicServices() {
|
|
14
|
+
return [...this.#services.values()].map(service => service.name);
|
|
15
|
+
}
|
|
16
|
+
handleReconnect() {
|
|
17
|
+
this.#services.clear();
|
|
18
|
+
this.#subscriptions.clear();
|
|
19
|
+
this.send({ type: "reconnect" });
|
|
20
|
+
}
|
|
21
|
+
handleChannelsAdvertisement(channels) {
|
|
22
|
+
const data = this.#getPublicChannels();
|
|
23
|
+
for (const channel of channels) {
|
|
24
|
+
const subscriptionId = this.subscribe(channel.id);
|
|
25
|
+
const kind = protobufsBySchema[channel.schemaName]?.kind ?? 'annotations';
|
|
26
|
+
this.#subscriptions.set(subscriptionId, {
|
|
27
|
+
topic: channel.topic,
|
|
28
|
+
schema: channel.schemaName,
|
|
29
|
+
kind
|
|
30
|
+
});
|
|
31
|
+
data.push({ topic: channel.topic, kind });
|
|
32
|
+
}
|
|
33
|
+
this.send({ type: "channels", data });
|
|
34
|
+
}
|
|
35
|
+
handleChannelsUnadvertisement(channels) {
|
|
36
|
+
for (const channel of channels) {
|
|
37
|
+
this.#subscriptions.delete(channel);
|
|
38
|
+
}
|
|
39
|
+
const data = this.#getPublicChannels();
|
|
40
|
+
this.send({ type: "channels", data });
|
|
41
|
+
}
|
|
42
|
+
handleServicesAdvertisement(services) {
|
|
43
|
+
const data = this.#getPublicServices();
|
|
44
|
+
for (const service of services) {
|
|
45
|
+
this.#services.set(service.name, service);
|
|
46
|
+
data.push(service.name);
|
|
47
|
+
}
|
|
48
|
+
this.send({ type: "services", data });
|
|
49
|
+
}
|
|
50
|
+
handleServicesUnadvertisement(services) {
|
|
51
|
+
for (const unadvertisedService of services) {
|
|
52
|
+
for (const [name, service] of this.#services) {
|
|
53
|
+
if (service.id === unadvertisedService) {
|
|
54
|
+
this.#services.delete(name);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const data = this.#getPublicServices();
|
|
59
|
+
this.send({ type: "services", data });
|
|
60
|
+
}
|
|
61
|
+
handleServiceResponses(response) {
|
|
62
|
+
const name = this.#serviceCalls.get(response.callId) ?? 'unknown';
|
|
63
|
+
this.#serviceCalls.delete(response.callId);
|
|
64
|
+
this.sendWithTransfer({
|
|
65
|
+
type: "service_response",
|
|
66
|
+
data: {
|
|
67
|
+
name,
|
|
68
|
+
ok: true,
|
|
69
|
+
serviceCallId: response.callId,
|
|
70
|
+
buffer: response.data,
|
|
71
|
+
error: null
|
|
72
|
+
}
|
|
73
|
+
}, [response.data.buffer]);
|
|
74
|
+
}
|
|
75
|
+
handleGenericMessage(subscriptionId, data) {
|
|
76
|
+
const subscription = this.#subscriptions.get(subscriptionId);
|
|
77
|
+
if (subscription) {
|
|
78
|
+
this.sendWithTransfer({
|
|
79
|
+
type: "message",
|
|
80
|
+
data: { ...subscription, buffer: data }
|
|
81
|
+
}, [data.buffer]);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
callService({ name, serviceCallId, body = {} }) {
|
|
85
|
+
const service = this.#services.get(name);
|
|
86
|
+
if (!service) {
|
|
87
|
+
this.send({
|
|
88
|
+
type: "service_response",
|
|
89
|
+
data: {
|
|
90
|
+
name,
|
|
91
|
+
serviceCallId,
|
|
92
|
+
ok: false,
|
|
93
|
+
error: "Service was not advertised",
|
|
94
|
+
buffer: null
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (this.isReady()) {
|
|
100
|
+
this.#serviceCalls.set(serviceCallId, name);
|
|
101
|
+
this.sendServiceCallRequest({
|
|
102
|
+
serviceId: service.id,
|
|
103
|
+
callId: serviceCallId,
|
|
104
|
+
encoding: "json",
|
|
105
|
+
data: recordToDataView(body)
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=communicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"communicator.js","sourceRoot":"","sources":["../../../../../src/connection/communicator.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAO1D,OAAO,EAAgB,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkDrD,MAAM,OAAgB,oBAAoB;IACxC,cAAc,GAAG,IAAI,GAAG,EAA8E,CAAC;IACvG,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IACvC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAS1C,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAES,eAAe;QACvB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACnC,CAAC;IAES,2BAA2B,CAAC,QAAmB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,IAAI,aAAa,CAAC;YAC1E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE;gBACtC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,UAAU;gBAC1B,IAAI;aACL,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAES,6BAA6B,CAAC,QAAkB;QACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAES,2BAA2B,CAAC,QAAmB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAES,6BAA6B,CAAC,QAAkB;QACxD,KAAK,MAAM,mBAAmB,IAAI,QAAQ,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7C,IAAI,OAAO,CAAC,EAAE,KAAK,mBAAmB,EAAE,CAAC;oBACvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAES,sBAAsB,CAAC,QAA6B;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CACnB;YACE,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE;gBACJ,IAAI;gBACJ,EAAE,EAAE,IAAI;gBACR,aAAa,EAAE,QAAQ,CAAC,MAAM;gBAC9B,MAAM,EAAE,QAAQ,CAAC,IAAI;gBACrB,KAAK,EAAE,IAAI;aACZ;SACF,EACD,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CACvB,CAAC;IACJ,CAAC;IAES,oBAAoB,CAAC,cAAsB,EAAE,IAAc;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,gBAAgB,CACnB;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;aACxC,EACD,CAAC,IAAI,CAAC,MAAM,CAAC,CACd,CAAC;QACJ,CAAC;IACH,CAAC;IAES,WAAW,CAAC,EACpB,IAAI,EACJ,aAAa,EACb,IAAI,GAAG,EAAE,EACwD;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE;oBACJ,IAAI;oBACJ,aAAa;oBACb,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,4BAA4B;oBACnC,MAAM,EAAE,IAAI;iBACb;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAE5C,IAAI,CAAC,sBAAsB,CAAC;gBAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { WebRtcConfig } from "@luxonis/remote-connection";
|
|
2
|
+
import { FoxgloveConnection } from "./foxglove-connection.js";
|
|
3
|
+
import { ProtobufKind } from "../messaging/protobuf.js";
|
|
4
|
+
export type PublicChannelData = {
|
|
5
|
+
topic: string;
|
|
6
|
+
kind: ProtobufKind;
|
|
7
|
+
};
|
|
8
|
+
export type ConnectionEventMap<CustomMessage> = {
|
|
9
|
+
custom: (message: globalThis.MessageEvent<CustomMessage>) => void;
|
|
10
|
+
open: () => void;
|
|
11
|
+
close: () => void;
|
|
12
|
+
channels: (channels: globalThis.MessageEvent<PublicChannelData[]>) => void;
|
|
13
|
+
services: (services: globalThis.MessageEvent<string[]>) => void;
|
|
14
|
+
};
|
|
15
|
+
export type ServiceRequestArgs = {
|
|
16
|
+
name: string;
|
|
17
|
+
timeout?: number;
|
|
18
|
+
body?: Record<string, any>;
|
|
19
|
+
ignoreResponse?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type VisualizerConnectionArgs = ({
|
|
22
|
+
type: 'ws';
|
|
23
|
+
data: {
|
|
24
|
+
connectionUrl: string;
|
|
25
|
+
};
|
|
26
|
+
} | {
|
|
27
|
+
type: 'webrtc';
|
|
28
|
+
data: {
|
|
29
|
+
config: WebRtcConfig;
|
|
30
|
+
};
|
|
31
|
+
}) & {
|
|
32
|
+
worker?: Worker;
|
|
33
|
+
};
|
|
34
|
+
export declare class VisualizerConnection<CustomMessage = never> extends FoxgloveConnection {
|
|
35
|
+
#private;
|
|
36
|
+
constructor({ type, data, worker }: VisualizerConnectionArgs);
|
|
37
|
+
close(): void;
|
|
38
|
+
on<E extends keyof ConnectionEventMap<CustomMessage>>(name: E, listener: ConnectionEventMap<CustomMessage>[E]): void;
|
|
39
|
+
off<E extends keyof ConnectionEventMap<CustomMessage>>(name: E, listener: ConnectionEventMap<CustomMessage>[E]): void;
|
|
40
|
+
request(args: ServiceRequestArgs): Promise<DataView | null>;
|
|
41
|
+
get connected(): boolean;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/connection/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,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,MAAM,MAAM,wBAAwB,GAAG,CAAC;IACtC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C,GAAG;IACF,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,YAAY,CAAA;KAAE,CAAA;CAC/C,CAAC,GAAG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,qBAAa,oBAAoB,CAAC,aAAa,GAAG,KAAK,CAAE,SAAQ,kBAAkB;;gBAK9D,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,wBAAwB;IAe5D,KAAK,IAAI,IAAI;IAIb,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,CAAC,aAAa,CAAC,EACzD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI;IAIA,GAAG,CAAC,CAAC,SAAS,MAAM,kBAAkB,CAAC,aAAa,CAAC,EAC1D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC7C,IAAI;IAIM,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAMxE,IAAW,SAAS,IAAI,OAAO,CAE9B;CA8BF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
|
+
import { PlayerPresence } from "@foxglove/studio-base/players/types";
|
|
5
|
+
import { FoxgloveWebSocketAdapter } from "./adapter.js";
|
|
6
|
+
import { FoxgloveConnection } from "./foxglove-connection.js";
|
|
7
|
+
export class VisualizerConnection extends FoxgloveConnection {
|
|
8
|
+
#url = null;
|
|
9
|
+
#config = null;
|
|
10
|
+
#adapter;
|
|
11
|
+
constructor({ type, data, worker }) {
|
|
12
|
+
super(type === 'ws' ? data.connectionUrl : data.config.clientId);
|
|
13
|
+
let finalWorker = worker;
|
|
14
|
+
if (type === 'ws') {
|
|
15
|
+
this.#url = data.connectionUrl;
|
|
16
|
+
finalWorker ??= new Worker(new URL("./ws/worker", import.meta.url), { type: "module" });
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.#config = data.config;
|
|
20
|
+
finalWorker ??= new Worker(new URL("./webrtc/worker", import.meta.url), { type: "module" });
|
|
21
|
+
}
|
|
22
|
+
this.#open(finalWorker);
|
|
23
|
+
}
|
|
24
|
+
close() {
|
|
25
|
+
this.#adapter?.close();
|
|
26
|
+
}
|
|
27
|
+
on(name, listener) {
|
|
28
|
+
this.#adapter?.on(name, listener);
|
|
29
|
+
}
|
|
30
|
+
off(name, listener) {
|
|
31
|
+
this.#adapter?.off(name, listener);
|
|
32
|
+
}
|
|
33
|
+
async request(args) {
|
|
34
|
+
const response = await this.#adapter?.request(args);
|
|
35
|
+
return response ?? null;
|
|
36
|
+
}
|
|
37
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
38
|
+
get connected() {
|
|
39
|
+
return Boolean(this.#adapter?.readyState === WebSocket.OPEN);
|
|
40
|
+
}
|
|
41
|
+
#open = (worker) => {
|
|
42
|
+
this.#adapter = new FoxgloveWebSocketAdapter({ wsUrl: this.#url, config: this.#config }, worker);
|
|
43
|
+
this.#adapter.addEventListener("open", this.#onOpen.bind(this));
|
|
44
|
+
this.#adapter.addEventListener("message", (event) => {
|
|
45
|
+
this.onMessagePacket.bind(this)(event);
|
|
46
|
+
});
|
|
47
|
+
this.#adapter.addEventListener("close", this.#onClose.bind(this));
|
|
48
|
+
this.#adapter.onerror = this.#onError.bind(this);
|
|
49
|
+
};
|
|
50
|
+
#onOpen = () => {
|
|
51
|
+
this.playerPresence = PlayerPresence.PRESENT;
|
|
52
|
+
this.emitState();
|
|
53
|
+
};
|
|
54
|
+
#onClose = () => {
|
|
55
|
+
this.playerPresence = PlayerPresence.NOT_PRESENT;
|
|
56
|
+
this.emitState();
|
|
57
|
+
};
|
|
58
|
+
#onError = (_event) => {
|
|
59
|
+
this.messageEvent = null;
|
|
60
|
+
this.playerPresence = PlayerPresence.ERROR;
|
|
61
|
+
this.emitState();
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/connection/connection.ts"],"names":[],"mappings":"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"}
|