@camstack/ui-library 1.2.176 → 1.2.178
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/composites/cap-settings/camera-grid-layout.d.ts +33 -0
- package/dist/generated/system-hooks.d.ts +10 -0
- package/dist/index.cjs +288 -17
- package/dist/index.js +284 -18
- package/package.json +1 -1
|
@@ -72,3 +72,36 @@ export declare function clampNormalizedRect(rect: GridNormalizedRect): GridNorma
|
|
|
72
72
|
export declare function moveNormalizedRect(rect: GridNormalizedRect, dx: number, dy: number): GridNormalizedRect;
|
|
73
73
|
/** Resize from the bottom-right corner: the origin stays put. */
|
|
74
74
|
export declare function resizeNormalizedRect(rect: GridNormalizedRect, dw: number, dh: number): GridNormalizedRect;
|
|
75
|
+
/** The eight grips on a rectangle. A corner moves two edges, an edge one. */
|
|
76
|
+
export type GridResizeHandle = 'nw' | 'n' | 'ne' | 'e' | 'se' | 's' | 'sw' | 'w';
|
|
77
|
+
/**
|
|
78
|
+
* Resize from ANY handle: the opposite side is the anchor.
|
|
79
|
+
*
|
|
80
|
+
* The editor had one grip, in the bottom-right, which meant a cell could only
|
|
81
|
+
* grow away from its origin — to move its top edge an operator had to drag the
|
|
82
|
+
* whole cell and then resize it back. The rectangle is expressed as its two
|
|
83
|
+
* edges here rather than origin+extent, because that is what makes "the
|
|
84
|
+
* opposite edge does not move" fall out instead of being arithmetic to get
|
|
85
|
+
* wrong. `clampNormalizedRect` still has the last word: the addon THROWS on a
|
|
86
|
+
* rectangle outside the unit square.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resizeNormalizedRectFrom(rect: GridNormalizedRect, handle: GridResizeHandle, dx: number, dy: number): GridNormalizedRect;
|
|
89
|
+
/**
|
|
90
|
+
* Tile the whole canvas with `count` cells, leaving no gap.
|
|
91
|
+
*
|
|
92
|
+
* Autofill exists because the useful answer to "put these four cameras up" is
|
|
93
|
+
* almost never the one hand-dragging produces: rectangles land a pixel apart
|
|
94
|
+
* and the composition shows black seams the operator cannot see in the editor
|
|
95
|
+
* but will see in the stream.
|
|
96
|
+
*
|
|
97
|
+
* The shape is the near-square one — `ceil(sqrt(n))` columns — and a short last
|
|
98
|
+
* row STRETCHES to the full width rather than leaving a hole. Three cameras
|
|
99
|
+
* become two over one, not a 2x2 with an empty quarter, which is precisely the
|
|
100
|
+
* layout autofill is asked to avoid.
|
|
101
|
+
*
|
|
102
|
+
* Aspect is deliberately not considered: these are CANVAS fractions, and what a
|
|
103
|
+
* source shows inside its cell is the crop's business (the source rectangle),
|
|
104
|
+
* not the placement's. Mixing the two here would silently re-crop every cell
|
|
105
|
+
* whenever the canvas was resized.
|
|
106
|
+
*/
|
|
107
|
+
export declare function autofillCellRects(count: number): readonly GridNormalizedRect[];
|
|
@@ -243,6 +243,16 @@ export declare const useButtonPress: typeof trpc.button.press.useMutation;
|
|
|
243
243
|
export declare const useCameraCredentialsGetCredentials: typeof trpc.cameraCredentials.getCredentials.useQuery;
|
|
244
244
|
/** Generated alias around `trpc.cameraCredentials.getStatus.useQuery`. */
|
|
245
245
|
export declare const useCameraCredentialsGetStatus: typeof trpc.cameraCredentials.getStatus.useQuery;
|
|
246
|
+
/** Generated alias around `trpc.cameraGridLayout.getLayout.useQuery`. */
|
|
247
|
+
export declare const useCameraGridLayoutGetLayout: typeof trpc.cameraGridLayout.getLayout.useQuery;
|
|
248
|
+
/** Generated alias around `trpc.cameraGridLayout.saveLayout.useMutation`. */
|
|
249
|
+
export declare const useCameraGridLayoutSaveLayout: typeof trpc.cameraGridLayout.saveLayout.useMutation;
|
|
250
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery`. */
|
|
251
|
+
export declare const useCameraGridLayoutGetDeviceSettingsContribution: typeof trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery;
|
|
252
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceLiveContribution.useQuery`. */
|
|
253
|
+
export declare const useCameraGridLayoutGetDeviceLiveContribution: typeof trpc.cameraGridLayout.getDeviceLiveContribution.useQuery;
|
|
254
|
+
/** Generated alias around `trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation`. */
|
|
255
|
+
export declare const useCameraGridLayoutApplyDeviceSettingsPatch: typeof trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation;
|
|
246
256
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery`. */
|
|
247
257
|
export declare const useCameraPipelineConfigGetDeviceSettingsContribution: typeof trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery;
|
|
248
258
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceLiveContribution.useQuery`. */
|
package/dist/index.cjs
CHANGED
|
@@ -2365,6 +2365,46 @@ var Laugh = createLucideIcon("laugh", [
|
|
|
2365
2365
|
* This source code is licensed under the ISC license.
|
|
2366
2366
|
* See the LICENSE file in the root directory of this source tree.
|
|
2367
2367
|
*/
|
|
2368
|
+
var LayoutGrid = createLucideIcon("layout-grid", [
|
|
2369
|
+
["rect", {
|
|
2370
|
+
width: "7",
|
|
2371
|
+
height: "7",
|
|
2372
|
+
x: "3",
|
|
2373
|
+
y: "3",
|
|
2374
|
+
rx: "1",
|
|
2375
|
+
key: "1g98yp"
|
|
2376
|
+
}],
|
|
2377
|
+
["rect", {
|
|
2378
|
+
width: "7",
|
|
2379
|
+
height: "7",
|
|
2380
|
+
x: "14",
|
|
2381
|
+
y: "3",
|
|
2382
|
+
rx: "1",
|
|
2383
|
+
key: "6d4xhi"
|
|
2384
|
+
}],
|
|
2385
|
+
["rect", {
|
|
2386
|
+
width: "7",
|
|
2387
|
+
height: "7",
|
|
2388
|
+
x: "14",
|
|
2389
|
+
y: "14",
|
|
2390
|
+
rx: "1",
|
|
2391
|
+
key: "nxv5o0"
|
|
2392
|
+
}],
|
|
2393
|
+
["rect", {
|
|
2394
|
+
width: "7",
|
|
2395
|
+
height: "7",
|
|
2396
|
+
x: "3",
|
|
2397
|
+
y: "14",
|
|
2398
|
+
rx: "1",
|
|
2399
|
+
key: "1bb6yr"
|
|
2400
|
+
}]
|
|
2401
|
+
]);
|
|
2402
|
+
/**
|
|
2403
|
+
* @license lucide-react v0.576.0 - ISC
|
|
2404
|
+
*
|
|
2405
|
+
* This source code is licensed under the ISC license.
|
|
2406
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2407
|
+
*/
|
|
2368
2408
|
var Leaf = createLucideIcon("leaf", [["path", {
|
|
2369
2409
|
d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
|
|
2370
2410
|
key: "nnexq3"
|
|
@@ -5319,6 +5359,16 @@ var useButtonPress = trpc.button.press.useMutation;
|
|
|
5319
5359
|
var useCameraCredentialsGetCredentials = trpc.cameraCredentials.getCredentials.useQuery;
|
|
5320
5360
|
/** Generated alias around `trpc.cameraCredentials.getStatus.useQuery`. */
|
|
5321
5361
|
var useCameraCredentialsGetStatus = trpc.cameraCredentials.getStatus.useQuery;
|
|
5362
|
+
/** Generated alias around `trpc.cameraGridLayout.getLayout.useQuery`. */
|
|
5363
|
+
var useCameraGridLayoutGetLayout = trpc.cameraGridLayout.getLayout.useQuery;
|
|
5364
|
+
/** Generated alias around `trpc.cameraGridLayout.saveLayout.useMutation`. */
|
|
5365
|
+
var useCameraGridLayoutSaveLayout = trpc.cameraGridLayout.saveLayout.useMutation;
|
|
5366
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery`. */
|
|
5367
|
+
var useCameraGridLayoutGetDeviceSettingsContribution = trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery;
|
|
5368
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceLiveContribution.useQuery`. */
|
|
5369
|
+
var useCameraGridLayoutGetDeviceLiveContribution = trpc.cameraGridLayout.getDeviceLiveContribution.useQuery;
|
|
5370
|
+
/** Generated alias around `trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation`. */
|
|
5371
|
+
var useCameraGridLayoutApplyDeviceSettingsPatch = trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation;
|
|
5322
5372
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery`. */
|
|
5323
5373
|
var useCameraPipelineConfigGetDeviceSettingsContribution = trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery;
|
|
5324
5374
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceLiveContribution.useQuery`. */
|
|
@@ -16654,13 +16704,75 @@ function moveNormalizedRect(rect, dx, dy) {
|
|
|
16654
16704
|
y: rect.y + dy
|
|
16655
16705
|
});
|
|
16656
16706
|
}
|
|
16657
|
-
/**
|
|
16658
|
-
|
|
16707
|
+
/**
|
|
16708
|
+
* Resize from ANY handle: the opposite side is the anchor.
|
|
16709
|
+
*
|
|
16710
|
+
* The editor had one grip, in the bottom-right, which meant a cell could only
|
|
16711
|
+
* grow away from its origin — to move its top edge an operator had to drag the
|
|
16712
|
+
* whole cell and then resize it back. The rectangle is expressed as its two
|
|
16713
|
+
* edges here rather than origin+extent, because that is what makes "the
|
|
16714
|
+
* opposite edge does not move" fall out instead of being arithmetic to get
|
|
16715
|
+
* wrong. `clampNormalizedRect` still has the last word: the addon THROWS on a
|
|
16716
|
+
* rectangle outside the unit square.
|
|
16717
|
+
*/
|
|
16718
|
+
function resizeNormalizedRectFrom(rect, handle, dx, dy) {
|
|
16719
|
+
const west = handle === "nw" || handle === "w" || handle === "sw";
|
|
16720
|
+
const east = handle === "ne" || handle === "e" || handle === "se";
|
|
16721
|
+
const north = handle === "nw" || handle === "n" || handle === "ne";
|
|
16722
|
+
const south = handle === "sw" || handle === "s" || handle === "se";
|
|
16723
|
+
let left = rect.x;
|
|
16724
|
+
let right = rect.x + rect.width;
|
|
16725
|
+
let top = rect.y;
|
|
16726
|
+
let bottom = rect.y + rect.height;
|
|
16727
|
+
if (west) left = Math.min(right - MIN_EXTENT, Math.max(0, left + dx));
|
|
16728
|
+
if (east) right = Math.max(left + MIN_EXTENT, Math.min(1, right + dx));
|
|
16729
|
+
if (north) top = Math.min(bottom - MIN_EXTENT, Math.max(0, top + dy));
|
|
16730
|
+
if (south) bottom = Math.max(top + MIN_EXTENT, Math.min(1, bottom + dy));
|
|
16659
16731
|
return clampNormalizedRect({
|
|
16660
|
-
|
|
16661
|
-
|
|
16662
|
-
|
|
16663
|
-
|
|
16732
|
+
x: left,
|
|
16733
|
+
y: top,
|
|
16734
|
+
width: right - left,
|
|
16735
|
+
height: bottom - top
|
|
16736
|
+
});
|
|
16737
|
+
}
|
|
16738
|
+
/**
|
|
16739
|
+
* Tile the whole canvas with `count` cells, leaving no gap.
|
|
16740
|
+
*
|
|
16741
|
+
* Autofill exists because the useful answer to "put these four cameras up" is
|
|
16742
|
+
* almost never the one hand-dragging produces: rectangles land a pixel apart
|
|
16743
|
+
* and the composition shows black seams the operator cannot see in the editor
|
|
16744
|
+
* but will see in the stream.
|
|
16745
|
+
*
|
|
16746
|
+
* The shape is the near-square one — `ceil(sqrt(n))` columns — and a short last
|
|
16747
|
+
* row STRETCHES to the full width rather than leaving a hole. Three cameras
|
|
16748
|
+
* become two over one, not a 2x2 with an empty quarter, which is precisely the
|
|
16749
|
+
* layout autofill is asked to avoid.
|
|
16750
|
+
*
|
|
16751
|
+
* Aspect is deliberately not considered: these are CANVAS fractions, and what a
|
|
16752
|
+
* source shows inside its cell is the crop's business (the source rectangle),
|
|
16753
|
+
* not the placement's. Mixing the two here would silently re-crop every cell
|
|
16754
|
+
* whenever the canvas was resized.
|
|
16755
|
+
*/
|
|
16756
|
+
function autofillCellRects(count) {
|
|
16757
|
+
if (!Number.isFinite(count) || count <= 0) return [];
|
|
16758
|
+
const cells = Math.floor(count);
|
|
16759
|
+
const columns = Math.ceil(Math.sqrt(cells));
|
|
16760
|
+
const rows = Math.ceil(cells / columns);
|
|
16761
|
+
const rects = [];
|
|
16762
|
+
let placed = 0;
|
|
16763
|
+
for (let row = 0; row < rows; row++) {
|
|
16764
|
+
const inRow = Math.min(columns, cells - placed);
|
|
16765
|
+
const height = 1 / rows;
|
|
16766
|
+
const width = 1 / inRow;
|
|
16767
|
+
for (let column = 0; column < inRow; column++) rects.push({
|
|
16768
|
+
x: column * width,
|
|
16769
|
+
y: row * height,
|
|
16770
|
+
width,
|
|
16771
|
+
height
|
|
16772
|
+
});
|
|
16773
|
+
placed += inRow;
|
|
16774
|
+
}
|
|
16775
|
+
return rects;
|
|
16664
16776
|
}
|
|
16665
16777
|
//#endregion
|
|
16666
16778
|
//#region src/composites/cap-settings/CameraGridLayoutEditor.tsx
|
|
@@ -16694,6 +16806,31 @@ var FULL_FRAME = {
|
|
|
16694
16806
|
var MAX_CELLS = 16;
|
|
16695
16807
|
/** Hoisted so `useDevices` does not re-subscribe on every render. */
|
|
16696
16808
|
var CAMERA_FILTER = { type: _camstack_types.DeviceType.Camera };
|
|
16809
|
+
/** The eight grips, in the order they are drawn. */
|
|
16810
|
+
var HANDLES = [
|
|
16811
|
+
"nw",
|
|
16812
|
+
"n",
|
|
16813
|
+
"ne",
|
|
16814
|
+
"e",
|
|
16815
|
+
"se",
|
|
16816
|
+
"s",
|
|
16817
|
+
"sw",
|
|
16818
|
+
"w"
|
|
16819
|
+
];
|
|
16820
|
+
var HANDLE_STYLE = {
|
|
16821
|
+
nw: "-top-1 -left-1 cursor-nw-resize",
|
|
16822
|
+
n: "-top-1 left-1/2 -translate-x-1/2 cursor-n-resize",
|
|
16823
|
+
ne: "-top-1 -right-1 cursor-ne-resize",
|
|
16824
|
+
e: "top-1/2 -right-1 -translate-y-1/2 cursor-e-resize",
|
|
16825
|
+
se: "-bottom-1 -right-1 cursor-se-resize",
|
|
16826
|
+
s: "-bottom-1 left-1/2 -translate-x-1/2 cursor-s-resize",
|
|
16827
|
+
sw: "-bottom-1 -left-1 cursor-sw-resize",
|
|
16828
|
+
w: "top-1/2 -left-1 -translate-y-1/2 cursor-w-resize"
|
|
16829
|
+
};
|
|
16830
|
+
/** Move or resize, from one drag and one delta. */
|
|
16831
|
+
function applyDrag(drag, dx, dy) {
|
|
16832
|
+
return drag.mode === "move" ? moveNormalizedRect(drag.origin, dx, dy) : resizeNormalizedRectFrom(drag.origin, drag.mode, dx, dy);
|
|
16833
|
+
}
|
|
16697
16834
|
function CameraGridLayoutEditor({ deviceId }) {
|
|
16698
16835
|
const system = useSystem();
|
|
16699
16836
|
const cameras = (0, react$1.useMemo)(() => system.listDeviceInfos(CAMERA_FILTER), [system, useDevices(CAMERA_FILTER)]);
|
|
@@ -16782,19 +16919,39 @@ function CameraGridLayoutEditor({ deviceId }) {
|
|
|
16782
16919
|
if (drag === null) return;
|
|
16783
16920
|
const bounds = event.currentTarget.getBoundingClientRect();
|
|
16784
16921
|
if (bounds.width === 0 || bounds.height === 0) return;
|
|
16922
|
+
if (drag.target !== "cell") return;
|
|
16785
16923
|
const dx = (event.clientX - drag.startX) / bounds.width;
|
|
16786
16924
|
const dy = (event.clientY - drag.startY) / bounds.height;
|
|
16787
|
-
patchCell(drag.index, { cell:
|
|
16925
|
+
patchCell(drag.index, { cell: applyDrag(drag, dx, dy) });
|
|
16788
16926
|
};
|
|
16789
16927
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(WidgetPanel, {
|
|
16790
16928
|
title: "Grid layout",
|
|
16791
16929
|
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Grid2x2, { className: "h-3.5 w-3.5" }),
|
|
16792
|
-
headerRight: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
16793
|
-
|
|
16794
|
-
|
|
16795
|
-
|
|
16796
|
-
|
|
16797
|
-
|
|
16930
|
+
headerRight: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
16931
|
+
className: "flex items-center gap-1",
|
|
16932
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
16933
|
+
type: "button",
|
|
16934
|
+
disabled: draft.cells.length === 0,
|
|
16935
|
+
title: "Tile every cell over the whole canvas, leaving no gap",
|
|
16936
|
+
onClick: () => {
|
|
16937
|
+
const rects = autofillCellRects(draft.cells.length);
|
|
16938
|
+
setDraft({
|
|
16939
|
+
...draft,
|
|
16940
|
+
cells: draft.cells.map((cell, index) => ({
|
|
16941
|
+
...cell,
|
|
16942
|
+
cell: rects[index] ?? cell.cell
|
|
16943
|
+
}))
|
|
16944
|
+
});
|
|
16945
|
+
},
|
|
16946
|
+
className: "flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] uppercase",
|
|
16947
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LayoutGrid, { className: "h-3 w-3" }), " Autofill"]
|
|
16948
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
16949
|
+
type: "button",
|
|
16950
|
+
disabled: saving,
|
|
16951
|
+
onClick: () => void save(),
|
|
16952
|
+
className: "flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] uppercase",
|
|
16953
|
+
children: [saving ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoaderCircle, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Save, { className: "h-3 w-3" }), "Save"]
|
|
16954
|
+
})]
|
|
16798
16955
|
}),
|
|
16799
16956
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
16800
16957
|
className: "flex flex-col gap-3",
|
|
@@ -16827,6 +16984,7 @@ function CameraGridLayoutEditor({ deviceId }) {
|
|
|
16827
16984
|
setSelected(index);
|
|
16828
16985
|
setDrag({
|
|
16829
16986
|
index,
|
|
16987
|
+
target: "cell",
|
|
16830
16988
|
mode,
|
|
16831
16989
|
startX: event.clientX,
|
|
16832
16990
|
startY: event.clientY,
|
|
@@ -16972,14 +17130,14 @@ function GridCellBox({ cell, selected, onSelect, onDragStart }) {
|
|
|
16972
17130
|
backgroundPosition,
|
|
16973
17131
|
backgroundRepeat: "no-repeat"
|
|
16974
17132
|
},
|
|
16975
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17133
|
+
children: selected && HANDLES.map((handle) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
16976
17134
|
role: "presentation",
|
|
16977
17135
|
onPointerDown: (event) => {
|
|
16978
17136
|
event.stopPropagation();
|
|
16979
|
-
onDragStart(
|
|
17137
|
+
onDragStart(handle, event);
|
|
16980
17138
|
},
|
|
16981
|
-
className:
|
|
16982
|
-
})
|
|
17139
|
+
className: `absolute h-2.5 w-2.5 bg-accent ${HANDLE_STYLE[handle]}`
|
|
17140
|
+
}, handle))
|
|
16983
17141
|
});
|
|
16984
17142
|
}
|
|
16985
17143
|
function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
@@ -17015,6 +17173,13 @@ function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
|
17015
17173
|
}, camera.id))
|
|
17016
17174
|
})]
|
|
17017
17175
|
}),
|
|
17176
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SourceCropEditor, {
|
|
17177
|
+
deviceId: cell.deviceId,
|
|
17178
|
+
source: cell.source,
|
|
17179
|
+
onChange: (source) => {
|
|
17180
|
+
onChange({ source });
|
|
17181
|
+
}
|
|
17182
|
+
}),
|
|
17018
17183
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17019
17184
|
className: "grid grid-cols-4 gap-2",
|
|
17020
17185
|
children: [
|
|
@@ -17037,6 +17202,107 @@ function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
|
17037
17202
|
]
|
|
17038
17203
|
});
|
|
17039
17204
|
}
|
|
17205
|
+
/**
|
|
17206
|
+
* The crop, on the source camera's own frame.
|
|
17207
|
+
*
|
|
17208
|
+
* The whole snapshot is drawn at full opacity behind a dimmed overlay, and the
|
|
17209
|
+
* selected rectangle is the hole in it: what is INSIDE is what the grid will
|
|
17210
|
+
* show. Drawing it the other way round — bright rectangle on a dark picture —
|
|
17211
|
+
* reads as "this part is highlighted", which is not the same claim.
|
|
17212
|
+
*
|
|
17213
|
+
* Its drag state is local. The canvas above owns cell placement and this owns
|
|
17214
|
+
* the crop; sharing one drag state would mean every pointer move on either
|
|
17215
|
+
* canvas consulted a `target` discriminator to decide whether it was for the
|
|
17216
|
+
* other one.
|
|
17217
|
+
*/
|
|
17218
|
+
function SourceCropEditor({ deviceId, source, onChange }) {
|
|
17219
|
+
const { src } = useDeviceSnapshotImage(deviceId, { width: 640 });
|
|
17220
|
+
const [drag, setDrag] = (0, react$1.useState)(null);
|
|
17221
|
+
const onPointerMove = (event) => {
|
|
17222
|
+
if (drag === null) return;
|
|
17223
|
+
const bounds = event.currentTarget.getBoundingClientRect();
|
|
17224
|
+
if (bounds.width === 0 || bounds.height === 0) return;
|
|
17225
|
+
onChange(applyDrag({
|
|
17226
|
+
...drag,
|
|
17227
|
+
index: 0,
|
|
17228
|
+
target: "source"
|
|
17229
|
+
}, (event.clientX - drag.startX) / bounds.width, (event.clientY - drag.startY) / bounds.height));
|
|
17230
|
+
};
|
|
17231
|
+
const full = source.x === 0 && source.y === 0 && source.width === 1 && source.height === 1;
|
|
17232
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
17233
|
+
className: "flex flex-col gap-1",
|
|
17234
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
17235
|
+
className: "flex items-center justify-between",
|
|
17236
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
17237
|
+
className: "uppercase text-foreground-subtle",
|
|
17238
|
+
children: "Visible part of the camera"
|
|
17239
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
17240
|
+
type: "button",
|
|
17241
|
+
disabled: full,
|
|
17242
|
+
onClick: () => {
|
|
17243
|
+
onChange(FULL_FRAME);
|
|
17244
|
+
},
|
|
17245
|
+
className: "flex items-center gap-1 rounded border border-border px-1.5 py-0.5 uppercase disabled:opacity-40",
|
|
17246
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Maximize2, { className: "h-3 w-3" }), " Whole frame"]
|
|
17247
|
+
})]
|
|
17248
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
17249
|
+
className: "relative w-full select-none overflow-hidden rounded border border-border bg-black",
|
|
17250
|
+
style: { aspectRatio: "16 / 9" },
|
|
17251
|
+
onPointerMove,
|
|
17252
|
+
onPointerUp: () => {
|
|
17253
|
+
setDrag(null);
|
|
17254
|
+
},
|
|
17255
|
+
onPointerLeave: () => {
|
|
17256
|
+
setDrag(null);
|
|
17257
|
+
},
|
|
17258
|
+
children: [
|
|
17259
|
+
src === null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17260
|
+
className: "absolute inset-0 flex items-center justify-center text-[10px] text-foreground-subtle",
|
|
17261
|
+
children: "No snapshot from this camera yet — the numbers below still apply."
|
|
17262
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
|
|
17263
|
+
src,
|
|
17264
|
+
alt: "",
|
|
17265
|
+
className: "absolute inset-0 h-full w-full object-cover"
|
|
17266
|
+
}),
|
|
17267
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-0 bg-black/55" }),
|
|
17268
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17269
|
+
role: "presentation",
|
|
17270
|
+
onPointerDown: (event) => {
|
|
17271
|
+
setDrag({
|
|
17272
|
+
mode: "move",
|
|
17273
|
+
startX: event.clientX,
|
|
17274
|
+
startY: event.clientY,
|
|
17275
|
+
origin: source
|
|
17276
|
+
});
|
|
17277
|
+
},
|
|
17278
|
+
className: "absolute cursor-move border border-accent",
|
|
17279
|
+
style: {
|
|
17280
|
+
left: `${String(source.x * 100)}%`,
|
|
17281
|
+
top: `${String(source.y * 100)}%`,
|
|
17282
|
+
width: `${String(source.width * 100)}%`,
|
|
17283
|
+
height: `${String(source.height * 100)}%`,
|
|
17284
|
+
backgroundImage: src === null ? void 0 : `url(${src})`,
|
|
17285
|
+
backgroundSize: `${String(100 / source.width)}% ${String(100 / source.height)}%`,
|
|
17286
|
+
backgroundPosition: source.width >= 1 && source.height >= 1 ? "center" : `${String(source.x / Math.max(1e-6, 1 - source.width) * 100)}% ${String(source.y / Math.max(1e-6, 1 - source.height) * 100)}%`
|
|
17287
|
+
},
|
|
17288
|
+
children: HANDLES.map((handle) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
17289
|
+
role: "presentation",
|
|
17290
|
+
onPointerDown: (event) => {
|
|
17291
|
+
event.stopPropagation();
|
|
17292
|
+
setDrag({
|
|
17293
|
+
mode: handle,
|
|
17294
|
+
startX: event.clientX,
|
|
17295
|
+
startY: event.clientY,
|
|
17296
|
+
origin: source
|
|
17297
|
+
});
|
|
17298
|
+
},
|
|
17299
|
+
className: `absolute h-2.5 w-2.5 bg-accent ${HANDLE_STYLE[handle]}`
|
|
17300
|
+
}, handle))
|
|
17301
|
+
})
|
|
17302
|
+
]
|
|
17303
|
+
})]
|
|
17304
|
+
});
|
|
17305
|
+
}
|
|
17040
17306
|
function LabelledNumber({ label, value, step = 1, onChange }) {
|
|
17041
17307
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
17042
17308
|
className: "flex flex-col gap-0.5",
|
|
@@ -51972,6 +52238,11 @@ exports.useBrokerUnsubscribe = useBrokerUnsubscribe;
|
|
|
51972
52238
|
exports.useButtonPress = useButtonPress;
|
|
51973
52239
|
exports.useCameraCredentialsGetCredentials = useCameraCredentialsGetCredentials;
|
|
51974
52240
|
exports.useCameraCredentialsGetStatus = useCameraCredentialsGetStatus;
|
|
52241
|
+
exports.useCameraGridLayoutApplyDeviceSettingsPatch = useCameraGridLayoutApplyDeviceSettingsPatch;
|
|
52242
|
+
exports.useCameraGridLayoutGetDeviceLiveContribution = useCameraGridLayoutGetDeviceLiveContribution;
|
|
52243
|
+
exports.useCameraGridLayoutGetDeviceSettingsContribution = useCameraGridLayoutGetDeviceSettingsContribution;
|
|
52244
|
+
exports.useCameraGridLayoutGetLayout = useCameraGridLayoutGetLayout;
|
|
52245
|
+
exports.useCameraGridLayoutSaveLayout = useCameraGridLayoutSaveLayout;
|
|
51975
52246
|
exports.useCameraPipelineConfigApplyDeviceSettingsPatch = useCameraPipelineConfigApplyDeviceSettingsPatch;
|
|
51976
52247
|
exports.useCameraPipelineConfigGetDeviceLiveContribution = useCameraPipelineConfigGetDeviceLiveContribution;
|
|
51977
52248
|
exports.useCameraPipelineConfigGetDeviceSettingsContribution = useCameraPipelineConfigGetDeviceSettingsContribution;
|
package/dist/index.js
CHANGED
|
@@ -2341,6 +2341,46 @@ var Laugh = createLucideIcon("laugh", [
|
|
|
2341
2341
|
* This source code is licensed under the ISC license.
|
|
2342
2342
|
* See the LICENSE file in the root directory of this source tree.
|
|
2343
2343
|
*/
|
|
2344
|
+
var LayoutGrid = createLucideIcon("layout-grid", [
|
|
2345
|
+
["rect", {
|
|
2346
|
+
width: "7",
|
|
2347
|
+
height: "7",
|
|
2348
|
+
x: "3",
|
|
2349
|
+
y: "3",
|
|
2350
|
+
rx: "1",
|
|
2351
|
+
key: "1g98yp"
|
|
2352
|
+
}],
|
|
2353
|
+
["rect", {
|
|
2354
|
+
width: "7",
|
|
2355
|
+
height: "7",
|
|
2356
|
+
x: "14",
|
|
2357
|
+
y: "3",
|
|
2358
|
+
rx: "1",
|
|
2359
|
+
key: "6d4xhi"
|
|
2360
|
+
}],
|
|
2361
|
+
["rect", {
|
|
2362
|
+
width: "7",
|
|
2363
|
+
height: "7",
|
|
2364
|
+
x: "14",
|
|
2365
|
+
y: "14",
|
|
2366
|
+
rx: "1",
|
|
2367
|
+
key: "nxv5o0"
|
|
2368
|
+
}],
|
|
2369
|
+
["rect", {
|
|
2370
|
+
width: "7",
|
|
2371
|
+
height: "7",
|
|
2372
|
+
x: "3",
|
|
2373
|
+
y: "14",
|
|
2374
|
+
rx: "1",
|
|
2375
|
+
key: "1bb6yr"
|
|
2376
|
+
}]
|
|
2377
|
+
]);
|
|
2378
|
+
/**
|
|
2379
|
+
* @license lucide-react v0.576.0 - ISC
|
|
2380
|
+
*
|
|
2381
|
+
* This source code is licensed under the ISC license.
|
|
2382
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2383
|
+
*/
|
|
2344
2384
|
var Leaf = createLucideIcon("leaf", [["path", {
|
|
2345
2385
|
d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
|
|
2346
2386
|
key: "nnexq3"
|
|
@@ -5295,6 +5335,16 @@ var useButtonPress = trpc.button.press.useMutation;
|
|
|
5295
5335
|
var useCameraCredentialsGetCredentials = trpc.cameraCredentials.getCredentials.useQuery;
|
|
5296
5336
|
/** Generated alias around `trpc.cameraCredentials.getStatus.useQuery`. */
|
|
5297
5337
|
var useCameraCredentialsGetStatus = trpc.cameraCredentials.getStatus.useQuery;
|
|
5338
|
+
/** Generated alias around `trpc.cameraGridLayout.getLayout.useQuery`. */
|
|
5339
|
+
var useCameraGridLayoutGetLayout = trpc.cameraGridLayout.getLayout.useQuery;
|
|
5340
|
+
/** Generated alias around `trpc.cameraGridLayout.saveLayout.useMutation`. */
|
|
5341
|
+
var useCameraGridLayoutSaveLayout = trpc.cameraGridLayout.saveLayout.useMutation;
|
|
5342
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery`. */
|
|
5343
|
+
var useCameraGridLayoutGetDeviceSettingsContribution = trpc.cameraGridLayout.getDeviceSettingsContribution.useQuery;
|
|
5344
|
+
/** Generated alias around `trpc.cameraGridLayout.getDeviceLiveContribution.useQuery`. */
|
|
5345
|
+
var useCameraGridLayoutGetDeviceLiveContribution = trpc.cameraGridLayout.getDeviceLiveContribution.useQuery;
|
|
5346
|
+
/** Generated alias around `trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation`. */
|
|
5347
|
+
var useCameraGridLayoutApplyDeviceSettingsPatch = trpc.cameraGridLayout.applyDeviceSettingsPatch.useMutation;
|
|
5298
5348
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery`. */
|
|
5299
5349
|
var useCameraPipelineConfigGetDeviceSettingsContribution = trpc.cameraPipelineConfig.getDeviceSettingsContribution.useQuery;
|
|
5300
5350
|
/** Generated alias around `trpc.cameraPipelineConfig.getDeviceLiveContribution.useQuery`. */
|
|
@@ -16630,13 +16680,75 @@ function moveNormalizedRect(rect, dx, dy) {
|
|
|
16630
16680
|
y: rect.y + dy
|
|
16631
16681
|
});
|
|
16632
16682
|
}
|
|
16633
|
-
/**
|
|
16634
|
-
|
|
16683
|
+
/**
|
|
16684
|
+
* Resize from ANY handle: the opposite side is the anchor.
|
|
16685
|
+
*
|
|
16686
|
+
* The editor had one grip, in the bottom-right, which meant a cell could only
|
|
16687
|
+
* grow away from its origin — to move its top edge an operator had to drag the
|
|
16688
|
+
* whole cell and then resize it back. The rectangle is expressed as its two
|
|
16689
|
+
* edges here rather than origin+extent, because that is what makes "the
|
|
16690
|
+
* opposite edge does not move" fall out instead of being arithmetic to get
|
|
16691
|
+
* wrong. `clampNormalizedRect` still has the last word: the addon THROWS on a
|
|
16692
|
+
* rectangle outside the unit square.
|
|
16693
|
+
*/
|
|
16694
|
+
function resizeNormalizedRectFrom(rect, handle, dx, dy) {
|
|
16695
|
+
const west = handle === "nw" || handle === "w" || handle === "sw";
|
|
16696
|
+
const east = handle === "ne" || handle === "e" || handle === "se";
|
|
16697
|
+
const north = handle === "nw" || handle === "n" || handle === "ne";
|
|
16698
|
+
const south = handle === "sw" || handle === "s" || handle === "se";
|
|
16699
|
+
let left = rect.x;
|
|
16700
|
+
let right = rect.x + rect.width;
|
|
16701
|
+
let top = rect.y;
|
|
16702
|
+
let bottom = rect.y + rect.height;
|
|
16703
|
+
if (west) left = Math.min(right - MIN_EXTENT, Math.max(0, left + dx));
|
|
16704
|
+
if (east) right = Math.max(left + MIN_EXTENT, Math.min(1, right + dx));
|
|
16705
|
+
if (north) top = Math.min(bottom - MIN_EXTENT, Math.max(0, top + dy));
|
|
16706
|
+
if (south) bottom = Math.max(top + MIN_EXTENT, Math.min(1, bottom + dy));
|
|
16635
16707
|
return clampNormalizedRect({
|
|
16636
|
-
|
|
16637
|
-
|
|
16638
|
-
|
|
16639
|
-
|
|
16708
|
+
x: left,
|
|
16709
|
+
y: top,
|
|
16710
|
+
width: right - left,
|
|
16711
|
+
height: bottom - top
|
|
16712
|
+
});
|
|
16713
|
+
}
|
|
16714
|
+
/**
|
|
16715
|
+
* Tile the whole canvas with `count` cells, leaving no gap.
|
|
16716
|
+
*
|
|
16717
|
+
* Autofill exists because the useful answer to "put these four cameras up" is
|
|
16718
|
+
* almost never the one hand-dragging produces: rectangles land a pixel apart
|
|
16719
|
+
* and the composition shows black seams the operator cannot see in the editor
|
|
16720
|
+
* but will see in the stream.
|
|
16721
|
+
*
|
|
16722
|
+
* The shape is the near-square one — `ceil(sqrt(n))` columns — and a short last
|
|
16723
|
+
* row STRETCHES to the full width rather than leaving a hole. Three cameras
|
|
16724
|
+
* become two over one, not a 2x2 with an empty quarter, which is precisely the
|
|
16725
|
+
* layout autofill is asked to avoid.
|
|
16726
|
+
*
|
|
16727
|
+
* Aspect is deliberately not considered: these are CANVAS fractions, and what a
|
|
16728
|
+
* source shows inside its cell is the crop's business (the source rectangle),
|
|
16729
|
+
* not the placement's. Mixing the two here would silently re-crop every cell
|
|
16730
|
+
* whenever the canvas was resized.
|
|
16731
|
+
*/
|
|
16732
|
+
function autofillCellRects(count) {
|
|
16733
|
+
if (!Number.isFinite(count) || count <= 0) return [];
|
|
16734
|
+
const cells = Math.floor(count);
|
|
16735
|
+
const columns = Math.ceil(Math.sqrt(cells));
|
|
16736
|
+
const rows = Math.ceil(cells / columns);
|
|
16737
|
+
const rects = [];
|
|
16738
|
+
let placed = 0;
|
|
16739
|
+
for (let row = 0; row < rows; row++) {
|
|
16740
|
+
const inRow = Math.min(columns, cells - placed);
|
|
16741
|
+
const height = 1 / rows;
|
|
16742
|
+
const width = 1 / inRow;
|
|
16743
|
+
for (let column = 0; column < inRow; column++) rects.push({
|
|
16744
|
+
x: column * width,
|
|
16745
|
+
y: row * height,
|
|
16746
|
+
width,
|
|
16747
|
+
height
|
|
16748
|
+
});
|
|
16749
|
+
placed += inRow;
|
|
16750
|
+
}
|
|
16751
|
+
return rects;
|
|
16640
16752
|
}
|
|
16641
16753
|
//#endregion
|
|
16642
16754
|
//#region src/composites/cap-settings/CameraGridLayoutEditor.tsx
|
|
@@ -16670,6 +16782,31 @@ var FULL_FRAME = {
|
|
|
16670
16782
|
var MAX_CELLS = 16;
|
|
16671
16783
|
/** Hoisted so `useDevices` does not re-subscribe on every render. */
|
|
16672
16784
|
var CAMERA_FILTER = { type: DeviceType.Camera };
|
|
16785
|
+
/** The eight grips, in the order they are drawn. */
|
|
16786
|
+
var HANDLES = [
|
|
16787
|
+
"nw",
|
|
16788
|
+
"n",
|
|
16789
|
+
"ne",
|
|
16790
|
+
"e",
|
|
16791
|
+
"se",
|
|
16792
|
+
"s",
|
|
16793
|
+
"sw",
|
|
16794
|
+
"w"
|
|
16795
|
+
];
|
|
16796
|
+
var HANDLE_STYLE = {
|
|
16797
|
+
nw: "-top-1 -left-1 cursor-nw-resize",
|
|
16798
|
+
n: "-top-1 left-1/2 -translate-x-1/2 cursor-n-resize",
|
|
16799
|
+
ne: "-top-1 -right-1 cursor-ne-resize",
|
|
16800
|
+
e: "top-1/2 -right-1 -translate-y-1/2 cursor-e-resize",
|
|
16801
|
+
se: "-bottom-1 -right-1 cursor-se-resize",
|
|
16802
|
+
s: "-bottom-1 left-1/2 -translate-x-1/2 cursor-s-resize",
|
|
16803
|
+
sw: "-bottom-1 -left-1 cursor-sw-resize",
|
|
16804
|
+
w: "top-1/2 -left-1 -translate-y-1/2 cursor-w-resize"
|
|
16805
|
+
};
|
|
16806
|
+
/** Move or resize, from one drag and one delta. */
|
|
16807
|
+
function applyDrag(drag, dx, dy) {
|
|
16808
|
+
return drag.mode === "move" ? moveNormalizedRect(drag.origin, dx, dy) : resizeNormalizedRectFrom(drag.origin, drag.mode, dx, dy);
|
|
16809
|
+
}
|
|
16673
16810
|
function CameraGridLayoutEditor({ deviceId }) {
|
|
16674
16811
|
const system = useSystem();
|
|
16675
16812
|
const cameras = useMemo(() => system.listDeviceInfos(CAMERA_FILTER), [system, useDevices(CAMERA_FILTER)]);
|
|
@@ -16758,19 +16895,39 @@ function CameraGridLayoutEditor({ deviceId }) {
|
|
|
16758
16895
|
if (drag === null) return;
|
|
16759
16896
|
const bounds = event.currentTarget.getBoundingClientRect();
|
|
16760
16897
|
if (bounds.width === 0 || bounds.height === 0) return;
|
|
16898
|
+
if (drag.target !== "cell") return;
|
|
16761
16899
|
const dx = (event.clientX - drag.startX) / bounds.width;
|
|
16762
16900
|
const dy = (event.clientY - drag.startY) / bounds.height;
|
|
16763
|
-
patchCell(drag.index, { cell:
|
|
16901
|
+
patchCell(drag.index, { cell: applyDrag(drag, dx, dy) });
|
|
16764
16902
|
};
|
|
16765
16903
|
return /* @__PURE__ */ jsx(WidgetPanel, {
|
|
16766
16904
|
title: "Grid layout",
|
|
16767
16905
|
icon: /* @__PURE__ */ jsx(Grid2x2, { className: "h-3.5 w-3.5" }),
|
|
16768
|
-
headerRight: /* @__PURE__ */ jsxs("
|
|
16769
|
-
|
|
16770
|
-
|
|
16771
|
-
|
|
16772
|
-
|
|
16773
|
-
|
|
16906
|
+
headerRight: /* @__PURE__ */ jsxs("div", {
|
|
16907
|
+
className: "flex items-center gap-1",
|
|
16908
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
16909
|
+
type: "button",
|
|
16910
|
+
disabled: draft.cells.length === 0,
|
|
16911
|
+
title: "Tile every cell over the whole canvas, leaving no gap",
|
|
16912
|
+
onClick: () => {
|
|
16913
|
+
const rects = autofillCellRects(draft.cells.length);
|
|
16914
|
+
setDraft({
|
|
16915
|
+
...draft,
|
|
16916
|
+
cells: draft.cells.map((cell, index) => ({
|
|
16917
|
+
...cell,
|
|
16918
|
+
cell: rects[index] ?? cell.cell
|
|
16919
|
+
}))
|
|
16920
|
+
});
|
|
16921
|
+
},
|
|
16922
|
+
className: "flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] uppercase",
|
|
16923
|
+
children: [/* @__PURE__ */ jsx(LayoutGrid, { className: "h-3 w-3" }), " Autofill"]
|
|
16924
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
16925
|
+
type: "button",
|
|
16926
|
+
disabled: saving,
|
|
16927
|
+
onClick: () => void save(),
|
|
16928
|
+
className: "flex items-center gap-1 rounded border border-border px-2 py-0.5 text-[10px] uppercase",
|
|
16929
|
+
children: [saving ? /* @__PURE__ */ jsx(LoaderCircle, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ jsx(Save, { className: "h-3 w-3" }), "Save"]
|
|
16930
|
+
})]
|
|
16774
16931
|
}),
|
|
16775
16932
|
children: /* @__PURE__ */ jsxs("div", {
|
|
16776
16933
|
className: "flex flex-col gap-3",
|
|
@@ -16803,6 +16960,7 @@ function CameraGridLayoutEditor({ deviceId }) {
|
|
|
16803
16960
|
setSelected(index);
|
|
16804
16961
|
setDrag({
|
|
16805
16962
|
index,
|
|
16963
|
+
target: "cell",
|
|
16806
16964
|
mode,
|
|
16807
16965
|
startX: event.clientX,
|
|
16808
16966
|
startY: event.clientY,
|
|
@@ -16948,14 +17106,14 @@ function GridCellBox({ cell, selected, onSelect, onDragStart }) {
|
|
|
16948
17106
|
backgroundPosition,
|
|
16949
17107
|
backgroundRepeat: "no-repeat"
|
|
16950
17108
|
},
|
|
16951
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
17109
|
+
children: selected && HANDLES.map((handle) => /* @__PURE__ */ jsx("div", {
|
|
16952
17110
|
role: "presentation",
|
|
16953
17111
|
onPointerDown: (event) => {
|
|
16954
17112
|
event.stopPropagation();
|
|
16955
|
-
onDragStart(
|
|
17113
|
+
onDragStart(handle, event);
|
|
16956
17114
|
},
|
|
16957
|
-
className:
|
|
16958
|
-
})
|
|
17115
|
+
className: `absolute h-2.5 w-2.5 bg-accent ${HANDLE_STYLE[handle]}`
|
|
17116
|
+
}, handle))
|
|
16959
17117
|
});
|
|
16960
17118
|
}
|
|
16961
17119
|
function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
@@ -16991,6 +17149,13 @@ function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
|
16991
17149
|
}, camera.id))
|
|
16992
17150
|
})]
|
|
16993
17151
|
}),
|
|
17152
|
+
/* @__PURE__ */ jsx(SourceCropEditor, {
|
|
17153
|
+
deviceId: cell.deviceId,
|
|
17154
|
+
source: cell.source,
|
|
17155
|
+
onChange: (source) => {
|
|
17156
|
+
onChange({ source });
|
|
17157
|
+
}
|
|
17158
|
+
}),
|
|
16994
17159
|
/* @__PURE__ */ jsx("div", {
|
|
16995
17160
|
className: "grid grid-cols-4 gap-2",
|
|
16996
17161
|
children: [
|
|
@@ -17013,6 +17178,107 @@ function CellInspector({ cell, index, cameras, onChange, onRemove }) {
|
|
|
17013
17178
|
]
|
|
17014
17179
|
});
|
|
17015
17180
|
}
|
|
17181
|
+
/**
|
|
17182
|
+
* The crop, on the source camera's own frame.
|
|
17183
|
+
*
|
|
17184
|
+
* The whole snapshot is drawn at full opacity behind a dimmed overlay, and the
|
|
17185
|
+
* selected rectangle is the hole in it: what is INSIDE is what the grid will
|
|
17186
|
+
* show. Drawing it the other way round — bright rectangle on a dark picture —
|
|
17187
|
+
* reads as "this part is highlighted", which is not the same claim.
|
|
17188
|
+
*
|
|
17189
|
+
* Its drag state is local. The canvas above owns cell placement and this owns
|
|
17190
|
+
* the crop; sharing one drag state would mean every pointer move on either
|
|
17191
|
+
* canvas consulted a `target` discriminator to decide whether it was for the
|
|
17192
|
+
* other one.
|
|
17193
|
+
*/
|
|
17194
|
+
function SourceCropEditor({ deviceId, source, onChange }) {
|
|
17195
|
+
const { src } = useDeviceSnapshotImage(deviceId, { width: 640 });
|
|
17196
|
+
const [drag, setDrag] = useState(null);
|
|
17197
|
+
const onPointerMove = (event) => {
|
|
17198
|
+
if (drag === null) return;
|
|
17199
|
+
const bounds = event.currentTarget.getBoundingClientRect();
|
|
17200
|
+
if (bounds.width === 0 || bounds.height === 0) return;
|
|
17201
|
+
onChange(applyDrag({
|
|
17202
|
+
...drag,
|
|
17203
|
+
index: 0,
|
|
17204
|
+
target: "source"
|
|
17205
|
+
}, (event.clientX - drag.startX) / bounds.width, (event.clientY - drag.startY) / bounds.height));
|
|
17206
|
+
};
|
|
17207
|
+
const full = source.x === 0 && source.y === 0 && source.width === 1 && source.height === 1;
|
|
17208
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
17209
|
+
className: "flex flex-col gap-1",
|
|
17210
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
17211
|
+
className: "flex items-center justify-between",
|
|
17212
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
17213
|
+
className: "uppercase text-foreground-subtle",
|
|
17214
|
+
children: "Visible part of the camera"
|
|
17215
|
+
}), /* @__PURE__ */ jsxs("button", {
|
|
17216
|
+
type: "button",
|
|
17217
|
+
disabled: full,
|
|
17218
|
+
onClick: () => {
|
|
17219
|
+
onChange(FULL_FRAME);
|
|
17220
|
+
},
|
|
17221
|
+
className: "flex items-center gap-1 rounded border border-border px-1.5 py-0.5 uppercase disabled:opacity-40",
|
|
17222
|
+
children: [/* @__PURE__ */ jsx(Maximize2, { className: "h-3 w-3" }), " Whole frame"]
|
|
17223
|
+
})]
|
|
17224
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
17225
|
+
className: "relative w-full select-none overflow-hidden rounded border border-border bg-black",
|
|
17226
|
+
style: { aspectRatio: "16 / 9" },
|
|
17227
|
+
onPointerMove,
|
|
17228
|
+
onPointerUp: () => {
|
|
17229
|
+
setDrag(null);
|
|
17230
|
+
},
|
|
17231
|
+
onPointerLeave: () => {
|
|
17232
|
+
setDrag(null);
|
|
17233
|
+
},
|
|
17234
|
+
children: [
|
|
17235
|
+
src === null ? /* @__PURE__ */ jsx("div", {
|
|
17236
|
+
className: "absolute inset-0 flex items-center justify-center text-[10px] text-foreground-subtle",
|
|
17237
|
+
children: "No snapshot from this camera yet — the numbers below still apply."
|
|
17238
|
+
}) : /* @__PURE__ */ jsx("img", {
|
|
17239
|
+
src,
|
|
17240
|
+
alt: "",
|
|
17241
|
+
className: "absolute inset-0 h-full w-full object-cover"
|
|
17242
|
+
}),
|
|
17243
|
+
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 bg-black/55" }),
|
|
17244
|
+
/* @__PURE__ */ jsx("div", {
|
|
17245
|
+
role: "presentation",
|
|
17246
|
+
onPointerDown: (event) => {
|
|
17247
|
+
setDrag({
|
|
17248
|
+
mode: "move",
|
|
17249
|
+
startX: event.clientX,
|
|
17250
|
+
startY: event.clientY,
|
|
17251
|
+
origin: source
|
|
17252
|
+
});
|
|
17253
|
+
},
|
|
17254
|
+
className: "absolute cursor-move border border-accent",
|
|
17255
|
+
style: {
|
|
17256
|
+
left: `${String(source.x * 100)}%`,
|
|
17257
|
+
top: `${String(source.y * 100)}%`,
|
|
17258
|
+
width: `${String(source.width * 100)}%`,
|
|
17259
|
+
height: `${String(source.height * 100)}%`,
|
|
17260
|
+
backgroundImage: src === null ? void 0 : `url(${src})`,
|
|
17261
|
+
backgroundSize: `${String(100 / source.width)}% ${String(100 / source.height)}%`,
|
|
17262
|
+
backgroundPosition: source.width >= 1 && source.height >= 1 ? "center" : `${String(source.x / Math.max(1e-6, 1 - source.width) * 100)}% ${String(source.y / Math.max(1e-6, 1 - source.height) * 100)}%`
|
|
17263
|
+
},
|
|
17264
|
+
children: HANDLES.map((handle) => /* @__PURE__ */ jsx("div", {
|
|
17265
|
+
role: "presentation",
|
|
17266
|
+
onPointerDown: (event) => {
|
|
17267
|
+
event.stopPropagation();
|
|
17268
|
+
setDrag({
|
|
17269
|
+
mode: handle,
|
|
17270
|
+
startX: event.clientX,
|
|
17271
|
+
startY: event.clientY,
|
|
17272
|
+
origin: source
|
|
17273
|
+
});
|
|
17274
|
+
},
|
|
17275
|
+
className: `absolute h-2.5 w-2.5 bg-accent ${HANDLE_STYLE[handle]}`
|
|
17276
|
+
}, handle))
|
|
17277
|
+
})
|
|
17278
|
+
]
|
|
17279
|
+
})]
|
|
17280
|
+
});
|
|
17281
|
+
}
|
|
17016
17282
|
function LabelledNumber({ label, value, step = 1, onChange }) {
|
|
17017
17283
|
return /* @__PURE__ */ jsxs("label", {
|
|
17018
17284
|
className: "flex flex-col gap-0.5",
|
|
@@ -51434,4 +51700,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-BvDy3x3k.js").t
|
|
|
51434
51700
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
51435
51701
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-PkYs077O.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
51436
51702
|
//#endregion
|
|
51437
|
-
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, Camera as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, createLucideIcon as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, Grid2x2 as o, openTopLayer, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resetHubMountForTests, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, routerBasename, EyeOff as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentSummaries, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingSignalGetStatus, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
51703
|
+
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, Camera as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, createLucideIcon as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, Grid2x2 as o, openTopLayer, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resetHubMountForTests, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, routerBasename, EyeOff as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentSummaries, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingSignalGetStatus, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|