@camstack/ui-library 1.2.78 → 1.2.80
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/data-table.d.ts +34 -1
- package/dist/composites/device-list/sort.d.ts +4 -0
- package/dist/composites/index.d.ts +4 -0
- package/dist/composites/sort-header-button.d.ts +11 -0
- package/dist/composites/table-sort.d.ts +77 -0
- package/dist/generated/system-hooks.d.ts +6 -2
- package/dist/index.cjs +181 -19
- package/dist/index.js +174 -19
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { TableMobileMode } from './data-table-layout';
|
|
3
|
+
import { TableSortState, TableSortValue } from './table-sort';
|
|
3
4
|
export interface DataColumn<T> {
|
|
4
5
|
/** Stable key for React reconciliation + tests. */
|
|
5
6
|
readonly key: string;
|
|
@@ -15,6 +16,28 @@ export interface DataColumn<T> {
|
|
|
15
16
|
readonly render: (row: T, rowIndex: number) => ReactNode;
|
|
16
17
|
/** Optional explicit Tailwind width class (e.g. `'w-24'`). */
|
|
17
18
|
readonly width?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Opt this column into column sorting. Return the row's value for THIS
|
|
21
|
+
* column: a number for numeric columns (never a formatted string — "100"
|
|
22
|
+
* sorts before "9"), a string for text, and `null` when the row has no
|
|
23
|
+
* value, which always sorts last in both directions.
|
|
24
|
+
*
|
|
25
|
+
* Called once per row per comparison, so read a field; do not format.
|
|
26
|
+
*
|
|
27
|
+
* Omitting it is the correct answer for a composite cell (a list, an argv
|
|
28
|
+
* blob, an interactive control): see {@link DataColumn.notSortableReason}.
|
|
29
|
+
*/
|
|
30
|
+
readonly sortValue?: (row: T) => TableSortValue;
|
|
31
|
+
/**
|
|
32
|
+
* Why this column has NO sort. Rendered as the header's `title` so the
|
|
33
|
+
* reason reaches the operator who wonders why one header clicks and the
|
|
34
|
+
* next does not.
|
|
35
|
+
*
|
|
36
|
+
* Only meaningful together with an absent `sortValue`. A column that cannot
|
|
37
|
+
* be ordered in a way that MEANS something must say so rather than offer an
|
|
38
|
+
* ordering that looks authoritative and is not.
|
|
39
|
+
*/
|
|
40
|
+
readonly notSortableReason?: string;
|
|
18
41
|
}
|
|
19
42
|
export interface DataTableProps<T> {
|
|
20
43
|
readonly columns: readonly DataColumn<T>[];
|
|
@@ -49,6 +72,16 @@ export interface DataTableProps<T> {
|
|
|
49
72
|
* reason of its own.
|
|
50
73
|
*/
|
|
51
74
|
readonly maxBodyHeight?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Column sort the table opens with, e.g. `{ columnKey: 'cpu', dir: 'desc' }`.
|
|
77
|
+
* Must name a column that declares `sortValue`; a key that names no sortable
|
|
78
|
+
* column simply leaves the table in its incoming order.
|
|
79
|
+
*
|
|
80
|
+
* The state is owned INSIDE the table from here on — a header click moves it
|
|
81
|
+
* none → asc → desc → none. Pass this only to choose the opening order, not
|
|
82
|
+
* to drive the table from outside.
|
|
83
|
+
*/
|
|
84
|
+
readonly defaultSort?: TableSortState;
|
|
52
85
|
}
|
|
53
86
|
/**
|
|
54
87
|
* The default cap for an internally-scrolling table.
|
|
@@ -58,4 +91,4 @@ export interface DataTableProps<T> {
|
|
|
58
91
|
* does not need a breakpoint of its own.
|
|
59
92
|
*/
|
|
60
93
|
export declare const TABLE_SCROLL_MAX_H: "max-h-[60vh]";
|
|
61
|
-
export declare function DataTable<T>({ columns, rows, rowKey, onRowClick, minWidthPx, emptyMessage, className, bordered, rowClassName, mobileMode, maxBodyHeight, }: DataTableProps<T>): import("react").JSX.Element | null;
|
|
94
|
+
export declare function DataTable<T>({ columns, rows, rowKey, onRowClick, minWidthPx, emptyMessage, className, bordered, rowClassName, mobileMode, maxBodyHeight, defaultSort, }: DataTableProps<T>): import("react").JSX.Element | null;
|
|
@@ -9,6 +9,10 @@ export interface DeviceSort {
|
|
|
9
9
|
/**
|
|
10
10
|
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
11
11
|
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
12
|
+
*
|
|
13
|
+
* The rule itself lives in `composites/table-sort.ts` and is shared with
|
|
14
|
+
* `DataTable` — this function only re-labels the result with the device
|
|
15
|
+
* list's own `columnId` vocabulary.
|
|
12
16
|
*/
|
|
13
17
|
export declare function nextSort(current: DeviceSort | null, columnId: SortableColumnId): DeviceSort | null;
|
|
14
18
|
/**
|
|
@@ -38,6 +38,10 @@ export * from './data-table';
|
|
|
38
38
|
export { DataTable } from './data-table';
|
|
39
39
|
export type { TableLayoutKind, TableMobileMode } from './data-table-layout';
|
|
40
40
|
export { CARD_MODE_MIN_COLUMNS, resolveTableLayout } from './data-table-layout';
|
|
41
|
+
export type { SortHeaderButtonProps } from './sort-header-button';
|
|
42
|
+
export { SortHeaderButton } from './sort-header-button';
|
|
43
|
+
export type { AriaSortValue, TableSortDirection, TableSortState, TableSortValue, } from './table-sort';
|
|
44
|
+
export { ariaSortForColumn, nextSortDirection, nextTableSort, sortRowsByColumn } from './table-sort';
|
|
41
45
|
export type { Detection, DetectionCanvasProps } from './detection-canvas';
|
|
42
46
|
export { DetectionCanvas } from './detection-canvas';
|
|
43
47
|
export { CLASS_COLORS, DEFAULT_COLOR, getClassColor } from './detection-colors';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { TableSortDirection } from './table-sort';
|
|
3
|
+
export interface SortHeaderButtonProps {
|
|
4
|
+
readonly label: ReactNode;
|
|
5
|
+
/** True when THIS column is the table's single sorted column. */
|
|
6
|
+
readonly active: boolean;
|
|
7
|
+
/** Direction while `active`; ignored otherwise. */
|
|
8
|
+
readonly dir: TableSortDirection;
|
|
9
|
+
readonly onSort: () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function SortHeaderButton({ label, active, dir, onSort }: SortHeaderButtonProps): ReactNode;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column sorting for {@link DataTable} — the ONE sort model in this library.
|
|
3
|
+
*
|
|
4
|
+
* The device list had the only column sort in the app
|
|
5
|
+
* (`composites/device-list/sort.ts`), typed to `DeviceItemDevice` and to three
|
|
6
|
+
* hard-coded column ids. Every other table in the admin UI was unsorted. This
|
|
7
|
+
* module is that same behaviour, generic: `DataTable` owns the state, a column
|
|
8
|
+
* opts in by declaring `sortValue`, and `device-list` keeps its domain
|
|
9
|
+
* comparators while delegating the toggle here. There is no second sort.
|
|
10
|
+
*
|
|
11
|
+
* The three rules are inherited verbatim from the device list, because they
|
|
12
|
+
* were argued there and they are the reason a sorted table stays readable:
|
|
13
|
+
*
|
|
14
|
+
* 1. **`null` sorts LAST in both directions.** A missing value is "unknown",
|
|
15
|
+
* not a value to reverse. Flipping the direction must never promote the
|
|
16
|
+
* rows that have nothing to say to the top.
|
|
17
|
+
* 2. **Stable.** `Array.prototype.toSorted` is stable in every runtime we
|
|
18
|
+
* ship to, so rows with an equal key keep the order they arrived in —
|
|
19
|
+
* which is usually a meaningful order already (topology order, insertion
|
|
20
|
+
* order).
|
|
21
|
+
* 3. **Immutable.** The input array is never touched; a `null` sort returns a
|
|
22
|
+
* fresh copy in the incoming order.
|
|
23
|
+
*
|
|
24
|
+
* A column with no `sortValue` renders a plain static header and can never be
|
|
25
|
+
* clicked. That is deliberate and it is the point of `notSortableReason`: a
|
|
26
|
+
* composite cell (a list of capabilities, an argv blob, an interactive
|
|
27
|
+
* control) has no single value to order by, and inventing one — "by count",
|
|
28
|
+
* "alphabetically by full path" — produces an ordering that looks
|
|
29
|
+
* authoritative and means nothing.
|
|
30
|
+
*/
|
|
31
|
+
/** Sort direction. There is no third state on the column; "unsorted" is the
|
|
32
|
+
* absence of a {@link TableSortState}. */
|
|
33
|
+
export type TableSortDirection = 'asc' | 'desc';
|
|
34
|
+
/** The table's single active sort. `null` at the table level = incoming order. */
|
|
35
|
+
export interface TableSortState {
|
|
36
|
+
/** `DataColumn.key` of the sorted column. */
|
|
37
|
+
readonly columnKey: string;
|
|
38
|
+
readonly dir: TableSortDirection;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* What a sortable column contributes for one row.
|
|
42
|
+
*
|
|
43
|
+
* `null` means "this row has no value for this column" and always sorts last
|
|
44
|
+
* (rule 1). It is NOT the same as `0` or `''`, which are values and sort
|
|
45
|
+
* normally.
|
|
46
|
+
*/
|
|
47
|
+
export type TableSortValue = string | number | null;
|
|
48
|
+
/**
|
|
49
|
+
* The toggle rule, and the only copy of it.
|
|
50
|
+
*
|
|
51
|
+
* none → asc → desc → none, and a click on a DIFFERENT column starts that
|
|
52
|
+
* column fresh at `asc`. `sameColumn` says whether the clicked column is the
|
|
53
|
+
* one currently sorted; `currentDir` is its direction (`null` when nothing is
|
|
54
|
+
* sorted). Returns the next direction, or `null` for "unsorted".
|
|
55
|
+
*
|
|
56
|
+
* Split out from {@link nextTableSort} so the device list — whose sort state
|
|
57
|
+
* keys columns by `columnId`, not `columnKey` — can reuse the rule without a
|
|
58
|
+
* cast and without a second copy of it.
|
|
59
|
+
*/
|
|
60
|
+
export declare function nextSortDirection(sameColumn: boolean, currentDir: TableSortDirection | null): TableSortDirection | null;
|
|
61
|
+
/**
|
|
62
|
+
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
63
|
+
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function nextTableSort(current: TableSortState | null, columnKey: string): TableSortState | null;
|
|
66
|
+
/**
|
|
67
|
+
* Return a NEW array of `rows` ordered by `sort`.
|
|
68
|
+
*
|
|
69
|
+
* `valueOf` is the column's `sortValue` — it is called once per row per
|
|
70
|
+
* comparison, so it must be cheap (read a field, do not format a string).
|
|
71
|
+
* `sort === null` ⇒ a fresh shallow copy in the incoming order.
|
|
72
|
+
*/
|
|
73
|
+
export declare function sortRowsByColumn<T>(rows: readonly T[], sort: TableSortState | null, valueOf: (row: T) => TableSortValue): readonly T[];
|
|
74
|
+
/** The `aria-sort` value WAI-ARIA scopes to a `<th>` (never to an inner control). */
|
|
75
|
+
export type AriaSortValue = 'ascending' | 'descending' | 'none';
|
|
76
|
+
/** Derive the `<th>` `aria-sort` for `columnKey` from the table's sort state. */
|
|
77
|
+
export declare function ariaSortForColumn(sort: TableSortState | null, columnKey: string): AriaSortValue;
|
|
@@ -875,8 +875,8 @@ export declare const useMetricsProviderListAddonInstances: typeof trpc.metricsPr
|
|
|
875
875
|
export declare const useMetricsProviderGetAddonStats: typeof trpc.metricsProvider.getAddonStats.useQuery;
|
|
876
876
|
/** Generated alias around `trpc.metricsProvider.listNodeProcesses.useQuery`. */
|
|
877
877
|
export declare const useMetricsProviderListNodeProcesses: typeof trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
878
|
-
/** Generated alias around `trpc.metricsProvider.
|
|
879
|
-
export declare const
|
|
878
|
+
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
879
|
+
export declare const useMetricsProviderGetLoadSeries: typeof trpc.metricsProvider.getLoadSeries.useQuery;
|
|
880
880
|
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
881
881
|
export declare const useMetricsProviderDumpHeapSnapshot: typeof trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
882
882
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
@@ -1579,6 +1579,8 @@ export declare const useSettingsStoreSet: typeof trpc.settingsStore.set.useMutat
|
|
|
1579
1579
|
export declare const useSettingsStoreQuery: typeof trpc.settingsStore.query.useQuery;
|
|
1580
1580
|
/** Generated alias around `trpc.settingsStore.insert.useMutation`. */
|
|
1581
1581
|
export declare const useSettingsStoreInsert: typeof trpc.settingsStore.insert.useMutation;
|
|
1582
|
+
/** Generated alias around `trpc.settingsStore.insertMany.useMutation`. */
|
|
1583
|
+
export declare const useSettingsStoreInsertMany: typeof trpc.settingsStore.insertMany.useMutation;
|
|
1582
1584
|
/** Generated alias around `trpc.settingsStore.update.useMutation`. */
|
|
1583
1585
|
export declare const useSettingsStoreUpdate: typeof trpc.settingsStore.update.useMutation;
|
|
1584
1586
|
/** Generated alias around `trpc.settingsStore.delete.useMutation`. */
|
|
@@ -1781,6 +1783,8 @@ export declare const useSystemSetSiteLocation: typeof trpc.system.setSiteLocatio
|
|
|
1781
1783
|
export declare const useSystemDetectSiteLocation: typeof trpc.system.detectSiteLocation.useMutation;
|
|
1782
1784
|
/** Generated alias around `trpc.system.getRequestCensus.useQuery`. */
|
|
1783
1785
|
export declare const useSystemGetRequestCensus: typeof trpc.system.getRequestCensus.useQuery;
|
|
1786
|
+
/** Generated alias around `trpc.system.getLoadContributions.useQuery`. */
|
|
1787
|
+
export declare const useSystemGetLoadContributions: typeof trpc.system.getLoadContributions.useQuery;
|
|
1784
1788
|
/** Generated alias around `trpc.system.getLoggingSettings.useQuery`. */
|
|
1785
1789
|
export declare const useSystemGetLoggingSettings: typeof trpc.system.getLoggingSettings.useQuery;
|
|
1786
1790
|
/** Generated alias around `trpc.system.setLoggingSettings.useMutation`. */
|
package/dist/index.cjs
CHANGED
|
@@ -5789,8 +5789,8 @@ var useMetricsProviderListAddonInstances = trpc.metricsProvider.listAddonInstanc
|
|
|
5789
5789
|
var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuery;
|
|
5790
5790
|
/** Generated alias around `trpc.metricsProvider.listNodeProcesses.useQuery`. */
|
|
5791
5791
|
var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
5792
|
-
/** Generated alias around `trpc.metricsProvider.
|
|
5793
|
-
var
|
|
5792
|
+
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
5793
|
+
var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
|
|
5794
5794
|
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
5795
5795
|
var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
5796
5796
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
@@ -6493,6 +6493,8 @@ var useSettingsStoreSet = trpc.settingsStore.set.useMutation;
|
|
|
6493
6493
|
var useSettingsStoreQuery = trpc.settingsStore.query.useQuery;
|
|
6494
6494
|
/** Generated alias around `trpc.settingsStore.insert.useMutation`. */
|
|
6495
6495
|
var useSettingsStoreInsert = trpc.settingsStore.insert.useMutation;
|
|
6496
|
+
/** Generated alias around `trpc.settingsStore.insertMany.useMutation`. */
|
|
6497
|
+
var useSettingsStoreInsertMany = trpc.settingsStore.insertMany.useMutation;
|
|
6496
6498
|
/** Generated alias around `trpc.settingsStore.update.useMutation`. */
|
|
6497
6499
|
var useSettingsStoreUpdate = trpc.settingsStore.update.useMutation;
|
|
6498
6500
|
/** Generated alias around `trpc.settingsStore.delete.useMutation`. */
|
|
@@ -6695,6 +6697,8 @@ var useSystemSetSiteLocation = trpc.system.setSiteLocation.useMutation;
|
|
|
6695
6697
|
var useSystemDetectSiteLocation = trpc.system.detectSiteLocation.useMutation;
|
|
6696
6698
|
/** Generated alias around `trpc.system.getRequestCensus.useQuery`. */
|
|
6697
6699
|
var useSystemGetRequestCensus = trpc.system.getRequestCensus.useQuery;
|
|
6700
|
+
/** Generated alias around `trpc.system.getLoadContributions.useQuery`. */
|
|
6701
|
+
var useSystemGetLoadContributions = trpc.system.getLoadContributions.useQuery;
|
|
6698
6702
|
/** Generated alias around `trpc.system.getLoggingSettings.useQuery`. */
|
|
6699
6703
|
var useSystemGetLoggingSettings = trpc.system.getLoggingSettings.useQuery;
|
|
6700
6704
|
/** Generated alias around `trpc.system.setLoggingSettings.useMutation`. */
|
|
@@ -26158,8 +26162,138 @@ function SettingRow({ label, children, actions, elements = "plain", className, v
|
|
|
26158
26162
|
});
|
|
26159
26163
|
}
|
|
26160
26164
|
//#endregion
|
|
26165
|
+
//#region src/composites/sort-header-button.tsx
|
|
26166
|
+
function SortHeaderButton({ label, active, dir, onSort }) {
|
|
26167
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
26168
|
+
type: "button",
|
|
26169
|
+
onClick: onSort,
|
|
26170
|
+
className: "group/sort inline-flex items-center gap-0.5 hover:text-foreground transition-colors",
|
|
26171
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label }), active ? dir === "asc" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronUp, { className: "h-3 w-3 flex-shrink-0" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronDown, { className: "h-3 w-3 flex-shrink-0" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ChevronUp, { className: cn("h-3 w-3 flex-shrink-0 opacity-0 transition-opacity", "group-hover/sort:opacity-30") })]
|
|
26172
|
+
});
|
|
26173
|
+
}
|
|
26174
|
+
//#endregion
|
|
26175
|
+
//#region src/composites/table-sort.ts
|
|
26176
|
+
/**
|
|
26177
|
+
* The toggle rule, and the only copy of it.
|
|
26178
|
+
*
|
|
26179
|
+
* none → asc → desc → none, and a click on a DIFFERENT column starts that
|
|
26180
|
+
* column fresh at `asc`. `sameColumn` says whether the clicked column is the
|
|
26181
|
+
* one currently sorted; `currentDir` is its direction (`null` when nothing is
|
|
26182
|
+
* sorted). Returns the next direction, or `null` for "unsorted".
|
|
26183
|
+
*
|
|
26184
|
+
* Split out from {@link nextTableSort} so the device list — whose sort state
|
|
26185
|
+
* keys columns by `columnId`, not `columnKey` — can reuse the rule without a
|
|
26186
|
+
* cast and without a second copy of it.
|
|
26187
|
+
*/
|
|
26188
|
+
function nextSortDirection(sameColumn, currentDir) {
|
|
26189
|
+
if (!sameColumn || currentDir === null) return "asc";
|
|
26190
|
+
return currentDir === "asc" ? "desc" : null;
|
|
26191
|
+
}
|
|
26192
|
+
/**
|
|
26193
|
+
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
26194
|
+
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
26195
|
+
*/
|
|
26196
|
+
function nextTableSort(current, columnKey) {
|
|
26197
|
+
const dir = nextSortDirection(current !== null && current.columnKey === columnKey, current === null ? null : current.dir);
|
|
26198
|
+
return dir === null ? null : {
|
|
26199
|
+
columnKey,
|
|
26200
|
+
dir
|
|
26201
|
+
};
|
|
26202
|
+
}
|
|
26203
|
+
/**
|
|
26204
|
+
* Ascending comparison of two cell values.
|
|
26205
|
+
*
|
|
26206
|
+
* Numbers compare numerically and strings compare with `localeCompare` — a
|
|
26207
|
+
* numeric column must never be ordered as text ("100" before "9"), and a text
|
|
26208
|
+
* column must respect the locale's collation. A mixed column (one row a
|
|
26209
|
+
* number, another a string) falls back to string comparison of both, which is
|
|
26210
|
+
* the only total order available; it is not a shape any caller should build on
|
|
26211
|
+
* purpose.
|
|
26212
|
+
*
|
|
26213
|
+
* `null` is NOT handled here — {@link sortRowsByColumn} pulls it out first,
|
|
26214
|
+
* because its placement is direction-independent and a comparator that is
|
|
26215
|
+
* multiplied by the direction factor cannot express that.
|
|
26216
|
+
*/
|
|
26217
|
+
function compareValues(a, b) {
|
|
26218
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
26219
|
+
return String(a).localeCompare(String(b));
|
|
26220
|
+
}
|
|
26221
|
+
/**
|
|
26222
|
+
* Return a NEW array of `rows` ordered by `sort`.
|
|
26223
|
+
*
|
|
26224
|
+
* `valueOf` is the column's `sortValue` — it is called once per row per
|
|
26225
|
+
* comparison, so it must be cheap (read a field, do not format a string).
|
|
26226
|
+
* `sort === null` ⇒ a fresh shallow copy in the incoming order.
|
|
26227
|
+
*/
|
|
26228
|
+
function sortRowsByColumn(rows, sort, valueOf) {
|
|
26229
|
+
if (sort === null) return [...rows];
|
|
26230
|
+
const factor = sort.dir === "asc" ? 1 : -1;
|
|
26231
|
+
return rows.toSorted((a, b) => {
|
|
26232
|
+
const av = valueOf(a);
|
|
26233
|
+
const bv = valueOf(b);
|
|
26234
|
+
if (av === null || bv === null) {
|
|
26235
|
+
if (av === bv) return 0;
|
|
26236
|
+
return av === null ? 1 : -1;
|
|
26237
|
+
}
|
|
26238
|
+
return factor * compareValues(av, bv);
|
|
26239
|
+
});
|
|
26240
|
+
}
|
|
26241
|
+
/** Derive the `<th>` `aria-sort` for `columnKey` from the table's sort state. */
|
|
26242
|
+
function ariaSortForColumn(sort, columnKey) {
|
|
26243
|
+
if (sort === null || sort.columnKey !== columnKey) return "none";
|
|
26244
|
+
return sort.dir === "asc" ? "ascending" : "descending";
|
|
26245
|
+
}
|
|
26246
|
+
//#endregion
|
|
26161
26247
|
//#region src/composites/data-table.tsx
|
|
26162
26248
|
/**
|
|
26249
|
+
* DataTable — shared responsive table for admin pages.
|
|
26250
|
+
*
|
|
26251
|
+
* Recipes baked in:
|
|
26252
|
+
* - `overflow-x-auto` wrapper so narrow viewports don't clip the
|
|
26253
|
+
* right edge (the rounded border survives the scroll).
|
|
26254
|
+
* - `min-w-[Npx]` on the inner table so columns don't squash below
|
|
26255
|
+
* readable width before the scroll kicks in.
|
|
26256
|
+
* - `whitespace-nowrap` on headers — column titles never wrap to
|
|
26257
|
+
* two lines (`AUTO-KILL` was the regression that triggered this).
|
|
26258
|
+
* - Themed `bg-surface` + `border-border` so contrast works in both
|
|
26259
|
+
* light and dark themes.
|
|
26260
|
+
*
|
|
26261
|
+
* Column model: caller supplies `columns: DataColumn<T>[]` and
|
|
26262
|
+
* `rows: T[]`. Each column declares `header`, optional `align`,
|
|
26263
|
+
* optional `nowrap`, and a `render(row) => ReactNode` that produces
|
|
26264
|
+
* the cell content.
|
|
26265
|
+
*
|
|
26266
|
+
* <DataTable
|
|
26267
|
+
* columns={[
|
|
26268
|
+
* { key: 'username', header: 'Username', render: (u) => u.username },
|
|
26269
|
+
* { key: 'role', header: 'Role', render: (u) => <RoleBadge .../> },
|
|
26270
|
+
* { key: 'actions', header: '', align: 'right', render: (u) => <Actions .../> },
|
|
26271
|
+
* ]}
|
|
26272
|
+
* rows={users}
|
|
26273
|
+
* minWidthPx={560}
|
|
26274
|
+
* />
|
|
26275
|
+
*
|
|
26276
|
+
* If finer header markup is needed, pass `headerRender` instead of
|
|
26277
|
+
* `header` (e.g. for a sortable click affordance).
|
|
26278
|
+
*
|
|
26279
|
+
* ── Narrow viewports ──────────────────────────────────────────────────────
|
|
26280
|
+
* Below the mobile breakpoint a table with `CARD_MODE_MIN_COLUMNS` columns or
|
|
26281
|
+
* more re-renders as one card per row (label above value) instead of a
|
|
26282
|
+
* sideways scroll through a slit. Narrower tables keep their rows — they fit,
|
|
26283
|
+
* and aligned rows compare better than cards. `mobileMode` overrides per
|
|
26284
|
+
* table; see `resolveTableLayout` for the rule and the reasoning.
|
|
26285
|
+
*
|
|
26286
|
+
* ── Scrolling the BODY, not the page ──────────────────────────────────────
|
|
26287
|
+
* `maxBodyHeight` caps the table and scrolls its rows INSIDE the container
|
|
26288
|
+
* with the column header pinned. It is ONE prop, not two, because "this list
|
|
26289
|
+
* scrolls internally" and "its header stays visible" are the same decision: a
|
|
26290
|
+
* capped table whose header scrolls away is a list of unlabelled cells.
|
|
26291
|
+
*
|
|
26292
|
+
* Use it wherever the row count is open-ended (rules, targets, delivery
|
|
26293
|
+
* history) so the page keeps its own header, filters and actions in view while
|
|
26294
|
+
* the operator moves through the rows.
|
|
26295
|
+
*/
|
|
26296
|
+
/**
|
|
26163
26297
|
* The default cap for an internally-scrolling table.
|
|
26164
26298
|
*
|
|
26165
26299
|
* `60vh` leaves the page header, its filters and its actions on screen at
|
|
@@ -26172,14 +26306,23 @@ var ALIGN_CLASS = {
|
|
|
26172
26306
|
right: "text-right",
|
|
26173
26307
|
center: "text-center"
|
|
26174
26308
|
};
|
|
26175
|
-
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, mobileMode = "auto", maxBodyHeight }) {
|
|
26309
|
+
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, mobileMode = "auto", maxBodyHeight, defaultSort }) {
|
|
26176
26310
|
const isNarrow = useIsMobile();
|
|
26311
|
+
const [sort, setSort] = (0, react$1.useState)(defaultSort ?? null);
|
|
26177
26312
|
const layout = resolveTableLayout({
|
|
26178
26313
|
mode: mobileMode,
|
|
26179
26314
|
columnCount: columns.length,
|
|
26180
26315
|
isNarrow
|
|
26181
26316
|
});
|
|
26182
26317
|
const scrolls = maxBodyHeight !== void 0;
|
|
26318
|
+
const sortedColumn = (0, react$1.useMemo)(() => sort === null ? void 0 : columns.find((col) => col.key === sort.columnKey && col.sortValue !== void 0), [columns, sort]);
|
|
26319
|
+
const sortValue = sortedColumn?.sortValue;
|
|
26320
|
+
const displayRows = (0, react$1.useMemo)(() => sortValue === void 0 ? rows : sortRowsByColumn(rows, sort, sortValue), [
|
|
26321
|
+
rows,
|
|
26322
|
+
sort,
|
|
26323
|
+
sortValue
|
|
26324
|
+
]);
|
|
26325
|
+
const activeSort = sortedColumn === void 0 ? null : sort;
|
|
26183
26326
|
if (rows.length === 0 && emptyMessage) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
26184
26327
|
className: `rounded-lg ${bordered ? "border border-border" : ""} bg-surface px-3 py-4 text-xs text-foreground-subtle text-center ${className ?? ""}`,
|
|
26185
26328
|
children: emptyMessage
|
|
@@ -26187,7 +26330,7 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26187
26330
|
if (rows.length === 0) return null;
|
|
26188
26331
|
if (layout === "cards") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
26189
26332
|
className: `space-y-2 ${scrolls ? `${maxBodyHeight} overflow-y-auto` : ""} ${className ?? ""}`,
|
|
26190
|
-
children:
|
|
26333
|
+
children: displayRows.map((row, rowIndex) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DataTableCard, {
|
|
26191
26334
|
row,
|
|
26192
26335
|
rowIndex,
|
|
26193
26336
|
columns,
|
|
@@ -26212,7 +26355,11 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26212
26355
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", { children: columns.map((col) => {
|
|
26213
26356
|
const align = col.align ?? "left";
|
|
26214
26357
|
const nowrap = col.nowrap ?? true;
|
|
26358
|
+
const sortable = col.sortValue !== void 0;
|
|
26359
|
+
const isSorted = activeSort !== null && activeSort.columnKey === col.key;
|
|
26215
26360
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
|
|
26361
|
+
"aria-sort": sortable ? ariaSortForColumn(activeSort, col.key) : void 0,
|
|
26362
|
+
title: sortable ? void 0 : col.notSortableReason,
|
|
26216
26363
|
className: [
|
|
26217
26364
|
"px-3 py-2 text-foreground-subtle font-medium bg-surface border-b border-border",
|
|
26218
26365
|
scrolls ? "sticky top-0 z-10" : "",
|
|
@@ -26220,10 +26367,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26220
26367
|
nowrap ? "whitespace-nowrap" : "",
|
|
26221
26368
|
col.width ?? ""
|
|
26222
26369
|
].filter(Boolean).join(" "),
|
|
26223
|
-
children:
|
|
26370
|
+
children: sortable ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SortHeaderButton, {
|
|
26371
|
+
label: col.headerRender ? col.headerRender() : col.header,
|
|
26372
|
+
active: isSorted,
|
|
26373
|
+
dir: isSorted && activeSort !== null ? activeSort.dir : "asc",
|
|
26374
|
+
onSort: () => setSort((prev) => nextTableSort(prev, col.key))
|
|
26375
|
+
}) : col.headerRender ? col.headerRender() : col.header
|
|
26224
26376
|
}, col.key);
|
|
26225
26377
|
}) })
|
|
26226
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children:
|
|
26378
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tbody", { children: displayRows.map((row, rowIndex) => {
|
|
26227
26379
|
const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
|
|
26228
26380
|
const extra = rowClassName?.(row, rowIndex) ?? "";
|
|
26229
26381
|
const interactive = onRowClick !== void 0;
|
|
@@ -42849,11 +43001,14 @@ function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon,
|
|
|
42849
43001
|
//#region src/composites/device-list/sortable-header.tsx
|
|
42850
43002
|
function SortableHeaderButton({ columnId, label, sort, onSort }) {
|
|
42851
43003
|
const active = sort !== null && sort.columnId === columnId;
|
|
42852
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.
|
|
42853
|
-
|
|
42854
|
-
|
|
42855
|
-
|
|
42856
|
-
|
|
43004
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SortHeaderButton, {
|
|
43005
|
+
label: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
43006
|
+
className: "uppercase tracking-wider",
|
|
43007
|
+
children: label
|
|
43008
|
+
}),
|
|
43009
|
+
active,
|
|
43010
|
+
dir: active ? sort.dir : "asc",
|
|
43011
|
+
onSort: () => onSort(columnId)
|
|
42857
43012
|
});
|
|
42858
43013
|
}
|
|
42859
43014
|
//#endregion
|
|
@@ -43131,17 +43286,17 @@ function ascComparator(columnId) {
|
|
|
43131
43286
|
/**
|
|
43132
43287
|
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
43133
43288
|
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
43289
|
+
*
|
|
43290
|
+
* The rule itself lives in `composites/table-sort.ts` and is shared with
|
|
43291
|
+
* `DataTable` — this function only re-labels the result with the device
|
|
43292
|
+
* list's own `columnId` vocabulary.
|
|
43134
43293
|
*/
|
|
43135
43294
|
function nextSort(current, columnId) {
|
|
43136
|
-
|
|
43295
|
+
const dir = nextSortDirection(current !== null && current.columnId === columnId, current === null ? null : current.dir);
|
|
43296
|
+
return dir === null ? null : {
|
|
43137
43297
|
columnId,
|
|
43138
|
-
dir
|
|
43298
|
+
dir
|
|
43139
43299
|
};
|
|
43140
|
-
if (current.dir === "asc") return {
|
|
43141
|
-
columnId,
|
|
43142
|
-
dir: "desc"
|
|
43143
|
-
};
|
|
43144
|
-
return null;
|
|
43145
43300
|
}
|
|
43146
43301
|
/**
|
|
43147
43302
|
* Return a NEW array of the top-level rows in sorted order. `null` ⇒ a fresh
|
|
@@ -49031,6 +49186,7 @@ exports.Skeleton = Skeleton;
|
|
|
49031
49186
|
exports.SlideOverPanel = SlideOverPanel;
|
|
49032
49187
|
exports.SlideToggle = SlideToggle;
|
|
49033
49188
|
exports.SnapshotButton = SnapshotButton;
|
|
49189
|
+
exports.SortHeaderButton = SortHeaderButton;
|
|
49034
49190
|
exports.Square = Square;
|
|
49035
49191
|
exports.StatCard = StatCard;
|
|
49036
49192
|
exports.StateValuesStream = StateValuesStream;
|
|
@@ -49083,6 +49239,7 @@ exports.WidgetSlot = WidgetSlot;
|
|
|
49083
49239
|
exports.ZoneEditingProvider = ZoneEditingProvider;
|
|
49084
49240
|
exports.agentColumnKey = agentColumnKey;
|
|
49085
49241
|
exports.allDeviceTypeFilterOptions = allDeviceTypeFilterOptions;
|
|
49242
|
+
exports.ariaSortForColumn = ariaSortForColumn;
|
|
49086
49243
|
exports.badgeFor = badgeFor;
|
|
49087
49244
|
exports.badgeFor$1 = badgeFor;
|
|
49088
49245
|
exports.buildStepTreeFromSchema = buildStepTreeFromSchema;
|
|
@@ -49140,6 +49297,8 @@ exports.mirror = mirror;
|
|
|
49140
49297
|
exports.mountAddonPage = mountAddonPage;
|
|
49141
49298
|
exports.nextReconnectAction = nextReconnectAction;
|
|
49142
49299
|
exports.nextSort = nextSort;
|
|
49300
|
+
exports.nextSortDirection = nextSortDirection;
|
|
49301
|
+
exports.nextTableSort = nextTableSort;
|
|
49143
49302
|
exports.normalizeForSearch = normalizeForSearch;
|
|
49144
49303
|
exports.overrideEntityIdFromLink = overrideEntityIdFromLink;
|
|
49145
49304
|
exports.parseRecordedServerMessage = parseRecordedServerMessage;
|
|
@@ -49164,6 +49323,7 @@ exports.shouldCommit = shouldCommit;
|
|
|
49164
49323
|
exports.shouldEmit = shouldEmit;
|
|
49165
49324
|
exports.shouldUseSingleNode = shouldUseSingleNode;
|
|
49166
49325
|
exports.sortRows = sortRows;
|
|
49326
|
+
exports.sortRowsByColumn = sortRowsByColumn;
|
|
49167
49327
|
exports.statusIcons = statusIcons;
|
|
49168
49328
|
exports.statusLine = statusLine;
|
|
49169
49329
|
exports.statusLine$1 = statusLine;
|
|
@@ -49643,8 +49803,8 @@ exports.useMetricsProviderGetCpuTemperature = useMetricsProviderGetCpuTemperatur
|
|
|
49643
49803
|
exports.useMetricsProviderGetCurrent = useMetricsProviderGetCurrent;
|
|
49644
49804
|
exports.useMetricsProviderGetDiskSpace = useMetricsProviderGetDiskSpace;
|
|
49645
49805
|
exports.useMetricsProviderGetGpuInfo = useMetricsProviderGetGpuInfo;
|
|
49806
|
+
exports.useMetricsProviderGetLoadSeries = useMetricsProviderGetLoadSeries;
|
|
49646
49807
|
exports.useMetricsProviderGetProcessStats = useMetricsProviderGetProcessStats;
|
|
49647
|
-
exports.useMetricsProviderKillProcess = useMetricsProviderKillProcess;
|
|
49648
49808
|
exports.useMetricsProviderListAddonInstances = useMetricsProviderListAddonInstances;
|
|
49649
49809
|
exports.useMetricsProviderListNodeProcesses = useMetricsProviderListNodeProcesses;
|
|
49650
49810
|
exports.useMotionDetectionAnalyze = useMotionDetectionAnalyze;
|
|
@@ -50012,6 +50172,7 @@ exports.useSettingsStoreDeleteWhere = useSettingsStoreDeleteWhere;
|
|
|
50012
50172
|
exports.useSettingsStoreGet = useSettingsStoreGet;
|
|
50013
50173
|
exports.useSettingsStoreHistogram = useSettingsStoreHistogram;
|
|
50014
50174
|
exports.useSettingsStoreInsert = useSettingsStoreInsert;
|
|
50175
|
+
exports.useSettingsStoreInsertMany = useSettingsStoreInsertMany;
|
|
50015
50176
|
exports.useSettingsStoreIsEmpty = useSettingsStoreIsEmpty;
|
|
50016
50177
|
exports.useSettingsStoreQuery = useSettingsStoreQuery;
|
|
50017
50178
|
exports.useSettingsStoreSet = useSettingsStoreSet;
|
|
@@ -50103,6 +50264,7 @@ exports.useSystem$1 = useSystem;
|
|
|
50103
50264
|
exports.useSystemDetectSiteLocation = useSystemDetectSiteLocation;
|
|
50104
50265
|
exports.useSystemFeatureFlags = useSystemFeatureFlags;
|
|
50105
50266
|
exports.useSystemForceRetentionCleanup = useSystemForceRetentionCleanup;
|
|
50267
|
+
exports.useSystemGetLoadContributions = useSystemGetLoadContributions;
|
|
50106
50268
|
exports.useSystemGetLoggingSettings = useSystemGetLoggingSettings;
|
|
50107
50269
|
exports.useSystemGetRequestCensus = useSystemGetRequestCensus;
|
|
50108
50270
|
exports.useSystemGetRetentionConfig = useSystemGetRetentionConfig;
|
package/dist/index.js
CHANGED
|
@@ -5765,8 +5765,8 @@ var useMetricsProviderListAddonInstances = trpc.metricsProvider.listAddonInstanc
|
|
|
5765
5765
|
var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuery;
|
|
5766
5766
|
/** Generated alias around `trpc.metricsProvider.listNodeProcesses.useQuery`. */
|
|
5767
5767
|
var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
5768
|
-
/** Generated alias around `trpc.metricsProvider.
|
|
5769
|
-
var
|
|
5768
|
+
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
5769
|
+
var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
|
|
5770
5770
|
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
5771
5771
|
var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
5772
5772
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
@@ -6469,6 +6469,8 @@ var useSettingsStoreSet = trpc.settingsStore.set.useMutation;
|
|
|
6469
6469
|
var useSettingsStoreQuery = trpc.settingsStore.query.useQuery;
|
|
6470
6470
|
/** Generated alias around `trpc.settingsStore.insert.useMutation`. */
|
|
6471
6471
|
var useSettingsStoreInsert = trpc.settingsStore.insert.useMutation;
|
|
6472
|
+
/** Generated alias around `trpc.settingsStore.insertMany.useMutation`. */
|
|
6473
|
+
var useSettingsStoreInsertMany = trpc.settingsStore.insertMany.useMutation;
|
|
6472
6474
|
/** Generated alias around `trpc.settingsStore.update.useMutation`. */
|
|
6473
6475
|
var useSettingsStoreUpdate = trpc.settingsStore.update.useMutation;
|
|
6474
6476
|
/** Generated alias around `trpc.settingsStore.delete.useMutation`. */
|
|
@@ -6671,6 +6673,8 @@ var useSystemSetSiteLocation = trpc.system.setSiteLocation.useMutation;
|
|
|
6671
6673
|
var useSystemDetectSiteLocation = trpc.system.detectSiteLocation.useMutation;
|
|
6672
6674
|
/** Generated alias around `trpc.system.getRequestCensus.useQuery`. */
|
|
6673
6675
|
var useSystemGetRequestCensus = trpc.system.getRequestCensus.useQuery;
|
|
6676
|
+
/** Generated alias around `trpc.system.getLoadContributions.useQuery`. */
|
|
6677
|
+
var useSystemGetLoadContributions = trpc.system.getLoadContributions.useQuery;
|
|
6674
6678
|
/** Generated alias around `trpc.system.getLoggingSettings.useQuery`. */
|
|
6675
6679
|
var useSystemGetLoggingSettings = trpc.system.getLoggingSettings.useQuery;
|
|
6676
6680
|
/** Generated alias around `trpc.system.setLoggingSettings.useMutation`. */
|
|
@@ -26134,8 +26138,138 @@ function SettingRow({ label, children, actions, elements = "plain", className, v
|
|
|
26134
26138
|
});
|
|
26135
26139
|
}
|
|
26136
26140
|
//#endregion
|
|
26141
|
+
//#region src/composites/sort-header-button.tsx
|
|
26142
|
+
function SortHeaderButton({ label, active, dir, onSort }) {
|
|
26143
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
26144
|
+
type: "button",
|
|
26145
|
+
onClick: onSort,
|
|
26146
|
+
className: "group/sort inline-flex items-center gap-0.5 hover:text-foreground transition-colors",
|
|
26147
|
+
children: [/* @__PURE__ */ jsx("span", { children: label }), active ? dir === "asc" ? /* @__PURE__ */ jsx(ChevronUp, { className: "h-3 w-3 flex-shrink-0" }) : /* @__PURE__ */ jsx(ChevronDown, { className: "h-3 w-3 flex-shrink-0" }) : /* @__PURE__ */ jsx(ChevronUp, { className: cn("h-3 w-3 flex-shrink-0 opacity-0 transition-opacity", "group-hover/sort:opacity-30") })]
|
|
26148
|
+
});
|
|
26149
|
+
}
|
|
26150
|
+
//#endregion
|
|
26151
|
+
//#region src/composites/table-sort.ts
|
|
26152
|
+
/**
|
|
26153
|
+
* The toggle rule, and the only copy of it.
|
|
26154
|
+
*
|
|
26155
|
+
* none → asc → desc → none, and a click on a DIFFERENT column starts that
|
|
26156
|
+
* column fresh at `asc`. `sameColumn` says whether the clicked column is the
|
|
26157
|
+
* one currently sorted; `currentDir` is its direction (`null` when nothing is
|
|
26158
|
+
* sorted). Returns the next direction, or `null` for "unsorted".
|
|
26159
|
+
*
|
|
26160
|
+
* Split out from {@link nextTableSort} so the device list — whose sort state
|
|
26161
|
+
* keys columns by `columnId`, not `columnKey` — can reuse the rule without a
|
|
26162
|
+
* cast and without a second copy of it.
|
|
26163
|
+
*/
|
|
26164
|
+
function nextSortDirection(sameColumn, currentDir) {
|
|
26165
|
+
if (!sameColumn || currentDir === null) return "asc";
|
|
26166
|
+
return currentDir === "asc" ? "desc" : null;
|
|
26167
|
+
}
|
|
26168
|
+
/**
|
|
26169
|
+
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
26170
|
+
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
26171
|
+
*/
|
|
26172
|
+
function nextTableSort(current, columnKey) {
|
|
26173
|
+
const dir = nextSortDirection(current !== null && current.columnKey === columnKey, current === null ? null : current.dir);
|
|
26174
|
+
return dir === null ? null : {
|
|
26175
|
+
columnKey,
|
|
26176
|
+
dir
|
|
26177
|
+
};
|
|
26178
|
+
}
|
|
26179
|
+
/**
|
|
26180
|
+
* Ascending comparison of two cell values.
|
|
26181
|
+
*
|
|
26182
|
+
* Numbers compare numerically and strings compare with `localeCompare` — a
|
|
26183
|
+
* numeric column must never be ordered as text ("100" before "9"), and a text
|
|
26184
|
+
* column must respect the locale's collation. A mixed column (one row a
|
|
26185
|
+
* number, another a string) falls back to string comparison of both, which is
|
|
26186
|
+
* the only total order available; it is not a shape any caller should build on
|
|
26187
|
+
* purpose.
|
|
26188
|
+
*
|
|
26189
|
+
* `null` is NOT handled here — {@link sortRowsByColumn} pulls it out first,
|
|
26190
|
+
* because its placement is direction-independent and a comparator that is
|
|
26191
|
+
* multiplied by the direction factor cannot express that.
|
|
26192
|
+
*/
|
|
26193
|
+
function compareValues(a, b) {
|
|
26194
|
+
if (typeof a === "number" && typeof b === "number") return a - b;
|
|
26195
|
+
return String(a).localeCompare(String(b));
|
|
26196
|
+
}
|
|
26197
|
+
/**
|
|
26198
|
+
* Return a NEW array of `rows` ordered by `sort`.
|
|
26199
|
+
*
|
|
26200
|
+
* `valueOf` is the column's `sortValue` — it is called once per row per
|
|
26201
|
+
* comparison, so it must be cheap (read a field, do not format a string).
|
|
26202
|
+
* `sort === null` ⇒ a fresh shallow copy in the incoming order.
|
|
26203
|
+
*/
|
|
26204
|
+
function sortRowsByColumn(rows, sort, valueOf) {
|
|
26205
|
+
if (sort === null) return [...rows];
|
|
26206
|
+
const factor = sort.dir === "asc" ? 1 : -1;
|
|
26207
|
+
return rows.toSorted((a, b) => {
|
|
26208
|
+
const av = valueOf(a);
|
|
26209
|
+
const bv = valueOf(b);
|
|
26210
|
+
if (av === null || bv === null) {
|
|
26211
|
+
if (av === bv) return 0;
|
|
26212
|
+
return av === null ? 1 : -1;
|
|
26213
|
+
}
|
|
26214
|
+
return factor * compareValues(av, bv);
|
|
26215
|
+
});
|
|
26216
|
+
}
|
|
26217
|
+
/** Derive the `<th>` `aria-sort` for `columnKey` from the table's sort state. */
|
|
26218
|
+
function ariaSortForColumn(sort, columnKey) {
|
|
26219
|
+
if (sort === null || sort.columnKey !== columnKey) return "none";
|
|
26220
|
+
return sort.dir === "asc" ? "ascending" : "descending";
|
|
26221
|
+
}
|
|
26222
|
+
//#endregion
|
|
26137
26223
|
//#region src/composites/data-table.tsx
|
|
26138
26224
|
/**
|
|
26225
|
+
* DataTable — shared responsive table for admin pages.
|
|
26226
|
+
*
|
|
26227
|
+
* Recipes baked in:
|
|
26228
|
+
* - `overflow-x-auto` wrapper so narrow viewports don't clip the
|
|
26229
|
+
* right edge (the rounded border survives the scroll).
|
|
26230
|
+
* - `min-w-[Npx]` on the inner table so columns don't squash below
|
|
26231
|
+
* readable width before the scroll kicks in.
|
|
26232
|
+
* - `whitespace-nowrap` on headers — column titles never wrap to
|
|
26233
|
+
* two lines (`AUTO-KILL` was the regression that triggered this).
|
|
26234
|
+
* - Themed `bg-surface` + `border-border` so contrast works in both
|
|
26235
|
+
* light and dark themes.
|
|
26236
|
+
*
|
|
26237
|
+
* Column model: caller supplies `columns: DataColumn<T>[]` and
|
|
26238
|
+
* `rows: T[]`. Each column declares `header`, optional `align`,
|
|
26239
|
+
* optional `nowrap`, and a `render(row) => ReactNode` that produces
|
|
26240
|
+
* the cell content.
|
|
26241
|
+
*
|
|
26242
|
+
* <DataTable
|
|
26243
|
+
* columns={[
|
|
26244
|
+
* { key: 'username', header: 'Username', render: (u) => u.username },
|
|
26245
|
+
* { key: 'role', header: 'Role', render: (u) => <RoleBadge .../> },
|
|
26246
|
+
* { key: 'actions', header: '', align: 'right', render: (u) => <Actions .../> },
|
|
26247
|
+
* ]}
|
|
26248
|
+
* rows={users}
|
|
26249
|
+
* minWidthPx={560}
|
|
26250
|
+
* />
|
|
26251
|
+
*
|
|
26252
|
+
* If finer header markup is needed, pass `headerRender` instead of
|
|
26253
|
+
* `header` (e.g. for a sortable click affordance).
|
|
26254
|
+
*
|
|
26255
|
+
* ── Narrow viewports ──────────────────────────────────────────────────────
|
|
26256
|
+
* Below the mobile breakpoint a table with `CARD_MODE_MIN_COLUMNS` columns or
|
|
26257
|
+
* more re-renders as one card per row (label above value) instead of a
|
|
26258
|
+
* sideways scroll through a slit. Narrower tables keep their rows — they fit,
|
|
26259
|
+
* and aligned rows compare better than cards. `mobileMode` overrides per
|
|
26260
|
+
* table; see `resolveTableLayout` for the rule and the reasoning.
|
|
26261
|
+
*
|
|
26262
|
+
* ── Scrolling the BODY, not the page ──────────────────────────────────────
|
|
26263
|
+
* `maxBodyHeight` caps the table and scrolls its rows INSIDE the container
|
|
26264
|
+
* with the column header pinned. It is ONE prop, not two, because "this list
|
|
26265
|
+
* scrolls internally" and "its header stays visible" are the same decision: a
|
|
26266
|
+
* capped table whose header scrolls away is a list of unlabelled cells.
|
|
26267
|
+
*
|
|
26268
|
+
* Use it wherever the row count is open-ended (rules, targets, delivery
|
|
26269
|
+
* history) so the page keeps its own header, filters and actions in view while
|
|
26270
|
+
* the operator moves through the rows.
|
|
26271
|
+
*/
|
|
26272
|
+
/**
|
|
26139
26273
|
* The default cap for an internally-scrolling table.
|
|
26140
26274
|
*
|
|
26141
26275
|
* `60vh` leaves the page header, its filters and its actions on screen at
|
|
@@ -26148,14 +26282,23 @@ var ALIGN_CLASS = {
|
|
|
26148
26282
|
right: "text-right",
|
|
26149
26283
|
center: "text-center"
|
|
26150
26284
|
};
|
|
26151
|
-
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, mobileMode = "auto", maxBodyHeight }) {
|
|
26285
|
+
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, mobileMode = "auto", maxBodyHeight, defaultSort }) {
|
|
26152
26286
|
const isNarrow = useIsMobile();
|
|
26287
|
+
const [sort, setSort] = useState(defaultSort ?? null);
|
|
26153
26288
|
const layout = resolveTableLayout({
|
|
26154
26289
|
mode: mobileMode,
|
|
26155
26290
|
columnCount: columns.length,
|
|
26156
26291
|
isNarrow
|
|
26157
26292
|
});
|
|
26158
26293
|
const scrolls = maxBodyHeight !== void 0;
|
|
26294
|
+
const sortedColumn = useMemo(() => sort === null ? void 0 : columns.find((col) => col.key === sort.columnKey && col.sortValue !== void 0), [columns, sort]);
|
|
26295
|
+
const sortValue = sortedColumn?.sortValue;
|
|
26296
|
+
const displayRows = useMemo(() => sortValue === void 0 ? rows : sortRowsByColumn(rows, sort, sortValue), [
|
|
26297
|
+
rows,
|
|
26298
|
+
sort,
|
|
26299
|
+
sortValue
|
|
26300
|
+
]);
|
|
26301
|
+
const activeSort = sortedColumn === void 0 ? null : sort;
|
|
26159
26302
|
if (rows.length === 0 && emptyMessage) return /* @__PURE__ */ jsx("div", {
|
|
26160
26303
|
className: `rounded-lg ${bordered ? "border border-border" : ""} bg-surface px-3 py-4 text-xs text-foreground-subtle text-center ${className ?? ""}`,
|
|
26161
26304
|
children: emptyMessage
|
|
@@ -26163,7 +26306,7 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26163
26306
|
if (rows.length === 0) return null;
|
|
26164
26307
|
if (layout === "cards") return /* @__PURE__ */ jsx("div", {
|
|
26165
26308
|
className: `space-y-2 ${scrolls ? `${maxBodyHeight} overflow-y-auto` : ""} ${className ?? ""}`,
|
|
26166
|
-
children:
|
|
26309
|
+
children: displayRows.map((row, rowIndex) => /* @__PURE__ */ jsx(DataTableCard, {
|
|
26167
26310
|
row,
|
|
26168
26311
|
rowIndex,
|
|
26169
26312
|
columns,
|
|
@@ -26188,7 +26331,11 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26188
26331
|
children: /* @__PURE__ */ jsx("tr", { children: columns.map((col) => {
|
|
26189
26332
|
const align = col.align ?? "left";
|
|
26190
26333
|
const nowrap = col.nowrap ?? true;
|
|
26334
|
+
const sortable = col.sortValue !== void 0;
|
|
26335
|
+
const isSorted = activeSort !== null && activeSort.columnKey === col.key;
|
|
26191
26336
|
return /* @__PURE__ */ jsx("th", {
|
|
26337
|
+
"aria-sort": sortable ? ariaSortForColumn(activeSort, col.key) : void 0,
|
|
26338
|
+
title: sortable ? void 0 : col.notSortableReason,
|
|
26192
26339
|
className: [
|
|
26193
26340
|
"px-3 py-2 text-foreground-subtle font-medium bg-surface border-b border-border",
|
|
26194
26341
|
scrolls ? "sticky top-0 z-10" : "",
|
|
@@ -26196,10 +26343,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
26196
26343
|
nowrap ? "whitespace-nowrap" : "",
|
|
26197
26344
|
col.width ?? ""
|
|
26198
26345
|
].filter(Boolean).join(" "),
|
|
26199
|
-
children:
|
|
26346
|
+
children: sortable ? /* @__PURE__ */ jsx(SortHeaderButton, {
|
|
26347
|
+
label: col.headerRender ? col.headerRender() : col.header,
|
|
26348
|
+
active: isSorted,
|
|
26349
|
+
dir: isSorted && activeSort !== null ? activeSort.dir : "asc",
|
|
26350
|
+
onSort: () => setSort((prev) => nextTableSort(prev, col.key))
|
|
26351
|
+
}) : col.headerRender ? col.headerRender() : col.header
|
|
26200
26352
|
}, col.key);
|
|
26201
26353
|
}) })
|
|
26202
|
-
}), /* @__PURE__ */ jsx("tbody", { children:
|
|
26354
|
+
}), /* @__PURE__ */ jsx("tbody", { children: displayRows.map((row, rowIndex) => {
|
|
26203
26355
|
const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
|
|
26204
26356
|
const extra = rowClassName?.(row, rowIndex) ?? "";
|
|
26205
26357
|
const interactive = onRowClick !== void 0;
|
|
@@ -42825,11 +42977,14 @@ function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon,
|
|
|
42825
42977
|
//#region src/composites/device-list/sortable-header.tsx
|
|
42826
42978
|
function SortableHeaderButton({ columnId, label, sort, onSort }) {
|
|
42827
42979
|
const active = sort !== null && sort.columnId === columnId;
|
|
42828
|
-
return /* @__PURE__ */
|
|
42829
|
-
|
|
42830
|
-
|
|
42831
|
-
|
|
42832
|
-
|
|
42980
|
+
return /* @__PURE__ */ jsx(SortHeaderButton, {
|
|
42981
|
+
label: /* @__PURE__ */ jsx("span", {
|
|
42982
|
+
className: "uppercase tracking-wider",
|
|
42983
|
+
children: label
|
|
42984
|
+
}),
|
|
42985
|
+
active,
|
|
42986
|
+
dir: active ? sort.dir : "asc",
|
|
42987
|
+
onSort: () => onSort(columnId)
|
|
42833
42988
|
});
|
|
42834
42989
|
}
|
|
42835
42990
|
//#endregion
|
|
@@ -43107,17 +43262,17 @@ function ascComparator(columnId) {
|
|
|
43107
43262
|
/**
|
|
43108
43263
|
* Toggle a column's sort on header click: none → asc → desc → none.
|
|
43109
43264
|
* Clicking a DIFFERENT column starts it fresh at `asc`.
|
|
43265
|
+
*
|
|
43266
|
+
* The rule itself lives in `composites/table-sort.ts` and is shared with
|
|
43267
|
+
* `DataTable` — this function only re-labels the result with the device
|
|
43268
|
+
* list's own `columnId` vocabulary.
|
|
43110
43269
|
*/
|
|
43111
43270
|
function nextSort(current, columnId) {
|
|
43112
|
-
|
|
43271
|
+
const dir = nextSortDirection(current !== null && current.columnId === columnId, current === null ? null : current.dir);
|
|
43272
|
+
return dir === null ? null : {
|
|
43113
43273
|
columnId,
|
|
43114
|
-
dir
|
|
43274
|
+
dir
|
|
43115
43275
|
};
|
|
43116
|
-
if (current.dir === "asc") return {
|
|
43117
|
-
columnId,
|
|
43118
|
-
dir: "desc"
|
|
43119
|
-
};
|
|
43120
|
-
return null;
|
|
43121
43276
|
}
|
|
43122
43277
|
/**
|
|
43123
43278
|
* Return a NEW array of the top-level rows in sorted order. `null` ⇒ a fresh
|
|
@@ -48784,4 +48939,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-d_A4kO-M.js").t
|
|
|
48784
48939
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
48785
48940
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DNSLc6ww.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
48786
48941
|
//#endregion
|
|
48787
|
-
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, 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, 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, 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, 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, badgeFor, buildStepTreeFromSchema, createLucideIcon 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, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, 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, 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, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, 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, 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, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, 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, 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, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetGroup, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListGroups, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, 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, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, 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, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationPlan, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
48942
|
+
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, 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, 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, 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, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, createLucideIcon 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, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, 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, 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, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, 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, 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, useMetricsProviderDumpHeapSnapshot, 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, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, 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, 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, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetGroup, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListGroups, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, 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, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, 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, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, 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, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationPlan, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|