@camstack/ui-library 1.2.102 → 1.2.105
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/device-list/device-mode.d.ts +0 -2
- package/dist/composites/device-list/filter-chips.d.ts +9 -6
- package/dist/composites/device-list/table-layout.d.ts +23 -3
- package/dist/composites/device-list/url-state.d.ts +13 -4
- package/dist/generated/system-hooks.d.ts +2 -2
- package/dist/index.cjs +37 -155
- package/dist/index.js +37 -155
- package/package.json +1 -1
- package/dist/composites/device-list/cards-layout.d.ts +0 -18
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
|
|
3
3
|
import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
|
|
4
|
-
import { DeviceListView } from './url-state';
|
|
5
4
|
import { TableContext } from './columns';
|
|
6
5
|
import { MultiSelectOption } from './multi-select';
|
|
7
6
|
export interface DeviceListAddonOption {
|
|
@@ -20,7 +19,6 @@ export interface DeviceListDeviceProps {
|
|
|
20
19
|
readonly context?: TableContext;
|
|
21
20
|
readonly devices: readonly DeviceItemDevice[];
|
|
22
21
|
readonly trpc: UseDeviceProxyTrpc;
|
|
23
|
-
readonly defaultView?: DeviceListView;
|
|
24
22
|
/**
|
|
25
23
|
* Integration filter options + an optional TYPE-filter override.
|
|
26
24
|
*
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { DeviceListView } from './url-state';
|
|
3
2
|
import { MultiSelectOption } from './multi-select';
|
|
4
3
|
export interface FilterChipsAddonOption {
|
|
5
4
|
readonly id: string;
|
|
@@ -7,10 +6,6 @@ export interface FilterChipsAddonOption {
|
|
|
7
6
|
readonly icon?: ReactNode;
|
|
8
7
|
}
|
|
9
8
|
export interface FilterChipsProps {
|
|
10
|
-
readonly view?: DeviceListView;
|
|
11
|
-
readonly onViewChange?: (view: DeviceListView) => void;
|
|
12
|
-
/** Hide the cards/table view toggle (generic lists have a single view). */
|
|
13
|
-
readonly hideView?: boolean;
|
|
14
9
|
/**
|
|
15
10
|
* Ready-made options for the shared multi-select type filter. Built once by
|
|
16
11
|
* the caller from the exhaustive device-type meta (`allDeviceTypeFilterOptions`)
|
|
@@ -26,5 +21,13 @@ export interface FilterChipsProps {
|
|
|
26
21
|
readonly onAddonsChange: (addons: readonly string[]) => void;
|
|
27
22
|
/** When true, the addon group is hidden (used by Integrations expand-row inner DeviceList). */
|
|
28
23
|
readonly hideAddons?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Free-text search, read ONLY to decide whether any filter is set. The input
|
|
26
|
+
* itself lives outside this component; a Clear that ignored it would leave
|
|
27
|
+
* the list filtered after the operator was told it had been cleared.
|
|
28
|
+
*/
|
|
29
|
+
readonly query?: string;
|
|
30
|
+
/** Clear every filter at once. Omit to hide the affordance entirely. */
|
|
31
|
+
readonly onClearFilters?: () => void;
|
|
29
32
|
}
|
|
30
|
-
export declare function FilterChips({
|
|
33
|
+
export declare function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons, query, onClearFilters, }: FilterChipsProps): ReactNode;
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
|
|
3
|
+
import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
|
|
4
4
|
import { DeviceColumnId } from './columns';
|
|
5
5
|
import { DeviceSort, SortableColumnId } from './sort';
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The row-layout contract. It used to live in `cards-layout.tsx` and be
|
|
8
|
+
* EXTENDED here, because two layouts shared it. The cards layout is gone — the
|
|
9
|
+
* device list is a table, always — so the contract lives with its only
|
|
10
|
+
* implementation rather than in a file that exists to be inherited from.
|
|
11
|
+
*/
|
|
12
|
+
interface DeviceRowsProps {
|
|
13
|
+
readonly rows: readonly DeviceItemDevice[];
|
|
14
|
+
readonly accessoriesByParent: ReadonlyMap<number, readonly DeviceItemDevice[]>;
|
|
15
|
+
readonly trpc: UseDeviceProxyTrpc;
|
|
16
|
+
readonly resolveIntegrationIcon: ((addonId: string) => ReactNode | null) | null;
|
|
17
|
+
readonly resolveParent: ((parentId: number) => DeviceItemParent | null) | null;
|
|
18
|
+
readonly onNavigate: ((deviceId: number) => void) | null;
|
|
19
|
+
readonly renderRowAction: ((device: DeviceItemDevice) => ReactNode) | null;
|
|
20
|
+
readonly selectable: boolean;
|
|
21
|
+
/** Batch mode active — a row click toggles selection instead of navigating. */
|
|
22
|
+
readonly rowClickSelects: boolean;
|
|
23
|
+
readonly activeSelected: ReadonlySet<number>;
|
|
24
|
+
readonly onToggleSelection: (id: number) => void;
|
|
25
|
+
}
|
|
26
|
+
interface TableLayoutProps extends DeviceRowsProps {
|
|
7
27
|
/** Built-in confirmed delete (table feature). Null ⇒ no trash. Only
|
|
8
28
|
* top-level rows carry it (accessory sub-rows are excluded — same gate
|
|
9
29
|
* as `renderRowAction`). */
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* There is ONE device list rendering: the table.
|
|
3
|
+
*
|
|
4
|
+
* A cards view existed alongside it and the operator chose between them. It is
|
|
5
|
+
* gone — every surface is a table now, so `view` is no longer part of this
|
|
6
|
+
* state and no longer written to the URL or to localStorage. A legacy
|
|
7
|
+
* `?view=cards` link still opens: the parameter is simply not read, and the
|
|
8
|
+
* next write drops it from the URL.
|
|
9
|
+
*
|
|
10
|
+
* The DataTable's own phone rendering is a different thing entirely and is
|
|
11
|
+
* untouched (`data-table-layout.ts`): that is how ONE table degrades on a
|
|
12
|
+
* narrow screen, not a view the operator picks.
|
|
13
|
+
*/
|
|
2
14
|
export interface DeviceListUrlState {
|
|
3
|
-
readonly view: DeviceListView;
|
|
4
15
|
readonly page: number;
|
|
5
16
|
/**
|
|
6
17
|
* Selected integration ids. Multi-select: empty array = no integration
|
|
@@ -18,13 +29,11 @@ export interface DeviceListUrlState {
|
|
|
18
29
|
}
|
|
19
30
|
export interface UseDeviceListUrlStateOptions {
|
|
20
31
|
readonly scope: 'root' | 'nested';
|
|
21
|
-
readonly defaultView: DeviceListView;
|
|
22
32
|
/** LocalStorage key prefix, e.g. `'devices'` → `camstack:devices:lastFilters`. */
|
|
23
33
|
readonly lsKey: string;
|
|
24
34
|
}
|
|
25
35
|
export interface UseDeviceListUrlStateResult {
|
|
26
36
|
readonly state: DeviceListUrlState;
|
|
27
|
-
readonly setView: (view: DeviceListView) => void;
|
|
28
37
|
readonly setPage: (page: number) => void;
|
|
29
38
|
readonly setAddons: (addons: readonly string[]) => void;
|
|
30
39
|
readonly setTypes: (types: readonly string[]) => void;
|
|
@@ -405,6 +405,8 @@ export declare const useDeviceExportGetDeviceLiveContribution: typeof trpc.devic
|
|
|
405
405
|
export declare const useDeviceExportApplyDeviceSettingsPatch: typeof trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
|
|
406
406
|
/** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
|
|
407
407
|
export declare const useDeviceManagerAllocateDeviceId: typeof trpc.deviceManager.allocateDeviceId.useMutation;
|
|
408
|
+
/** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
|
|
409
|
+
export declare const useDeviceManagerMigrateDevice: typeof trpc.deviceManager.migrateDevice.useMutation;
|
|
408
410
|
/** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
|
|
409
411
|
export declare const useDeviceManagerRegisterDevice: typeof trpc.deviceManager.registerDevice.useMutation;
|
|
410
412
|
/** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
|
|
@@ -881,8 +883,6 @@ export declare const useMetricsProviderGetAddonStats: typeof trpc.metricsProvide
|
|
|
881
883
|
export declare const useMetricsProviderListNodeProcesses: typeof trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
882
884
|
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
883
885
|
export declare const useMetricsProviderGetLoadSeries: typeof trpc.metricsProvider.getLoadSeries.useQuery;
|
|
884
|
-
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
885
|
-
export declare const useMetricsProviderDumpHeapSnapshot: typeof trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
886
886
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
887
887
|
export declare const useMotionIsDetected: typeof trpc.motion.isDetected.useQuery;
|
|
888
888
|
/** Generated alias around `trpc.motion.getStatus.useQuery`. */
|
package/dist/index.cjs
CHANGED
|
@@ -2253,46 +2253,6 @@ var Laugh = createLucideIcon("laugh", [
|
|
|
2253
2253
|
* This source code is licensed under the ISC license.
|
|
2254
2254
|
* See the LICENSE file in the root directory of this source tree.
|
|
2255
2255
|
*/
|
|
2256
|
-
var LayoutGrid = createLucideIcon("layout-grid", [
|
|
2257
|
-
["rect", {
|
|
2258
|
-
width: "7",
|
|
2259
|
-
height: "7",
|
|
2260
|
-
x: "3",
|
|
2261
|
-
y: "3",
|
|
2262
|
-
rx: "1",
|
|
2263
|
-
key: "1g98yp"
|
|
2264
|
-
}],
|
|
2265
|
-
["rect", {
|
|
2266
|
-
width: "7",
|
|
2267
|
-
height: "7",
|
|
2268
|
-
x: "14",
|
|
2269
|
-
y: "3",
|
|
2270
|
-
rx: "1",
|
|
2271
|
-
key: "6d4xhi"
|
|
2272
|
-
}],
|
|
2273
|
-
["rect", {
|
|
2274
|
-
width: "7",
|
|
2275
|
-
height: "7",
|
|
2276
|
-
x: "14",
|
|
2277
|
-
y: "14",
|
|
2278
|
-
rx: "1",
|
|
2279
|
-
key: "nxv5o0"
|
|
2280
|
-
}],
|
|
2281
|
-
["rect", {
|
|
2282
|
-
width: "7",
|
|
2283
|
-
height: "7",
|
|
2284
|
-
x: "3",
|
|
2285
|
-
y: "14",
|
|
2286
|
-
rx: "1",
|
|
2287
|
-
key: "1bb6yr"
|
|
2288
|
-
}]
|
|
2289
|
-
]);
|
|
2290
|
-
/**
|
|
2291
|
-
* @license lucide-react v0.576.0 - ISC
|
|
2292
|
-
*
|
|
2293
|
-
* This source code is licensed under the ISC license.
|
|
2294
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
2295
|
-
*/
|
|
2296
2256
|
var Leaf = createLucideIcon("leaf", [["path", {
|
|
2297
2257
|
d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
|
|
2298
2258
|
key: "nnexq3"
|
|
@@ -3956,16 +3916,6 @@ var Sunrise = createLucideIcon("sunrise", [
|
|
|
3956
3916
|
* This source code is licensed under the ISC license.
|
|
3957
3917
|
* See the LICENSE file in the root directory of this source tree.
|
|
3958
3918
|
*/
|
|
3959
|
-
var Table2 = createLucideIcon("table-2", [["path", {
|
|
3960
|
-
d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",
|
|
3961
|
-
key: "gugj83"
|
|
3962
|
-
}]]);
|
|
3963
|
-
/**
|
|
3964
|
-
* @license lucide-react v0.576.0 - ISC
|
|
3965
|
-
*
|
|
3966
|
-
* This source code is licensed under the ISC license.
|
|
3967
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
3968
|
-
*/
|
|
3969
3919
|
var Tag = createLucideIcon("tag", [["path", {
|
|
3970
3920
|
d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
|
|
3971
3921
|
key: "vktsd0"
|
|
@@ -5325,6 +5275,8 @@ var useDeviceExportGetDeviceLiveContribution = trpc.deviceExport.getDeviceLiveCo
|
|
|
5325
5275
|
var useDeviceExportApplyDeviceSettingsPatch = trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
|
|
5326
5276
|
/** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
|
|
5327
5277
|
var useDeviceManagerAllocateDeviceId = trpc.deviceManager.allocateDeviceId.useMutation;
|
|
5278
|
+
/** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
|
|
5279
|
+
var useDeviceManagerMigrateDevice = trpc.deviceManager.migrateDevice.useMutation;
|
|
5328
5280
|
/** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
|
|
5329
5281
|
var useDeviceManagerRegisterDevice = trpc.deviceManager.registerDevice.useMutation;
|
|
5330
5282
|
/** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
|
|
@@ -5801,8 +5753,6 @@ var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuer
|
|
|
5801
5753
|
var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
5802
5754
|
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
5803
5755
|
var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
|
|
5804
|
-
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
5805
|
-
var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
5806
5756
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
5807
5757
|
var useMotionIsDetected = trpc.motion.isDetected.useQuery;
|
|
5808
5758
|
/** Generated alias around `trpc.motion.getStatus.useQuery`. */
|
|
@@ -22047,7 +21997,11 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
22047
21997
|
onChange,
|
|
22048
21998
|
disabled
|
|
22049
21999
|
}),
|
|
22050
|
-
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
|
|
22000
|
+
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —"),
|
|
22001
|
+
models.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
22002
|
+
className: "text-[11px] text-foreground-subtle",
|
|
22003
|
+
children: "No model is published for this engine format."
|
|
22004
|
+
})
|
|
22051
22005
|
]
|
|
22052
22006
|
});
|
|
22053
22007
|
}
|
|
@@ -42881,7 +42835,7 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
|
|
|
42881
42835
|
/**
|
|
42882
42836
|
* <FilterChips> — top-row filter UI for DeviceList.
|
|
42883
42837
|
*
|
|
42884
|
-
* Layout: [
|
|
42838
|
+
* Layout: [Type chips] [Integration multi-select] [Clear filters]
|
|
42885
42839
|
* (search input lives separately; this component only handles the
|
|
42886
42840
|
* chip-style selectors + the integration dropdown).
|
|
42887
42841
|
*
|
|
@@ -42891,26 +42845,11 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
|
|
|
42891
42845
|
* now a single "Integration" button opens a checkbox menu so several
|
|
42892
42846
|
* integrations can be filtered at once without flooding the toolbar.
|
|
42893
42847
|
*/
|
|
42894
|
-
function FilterChips({
|
|
42848
|
+
function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false, query = "", onClearFilters }) {
|
|
42849
|
+
const hasActiveFilter = selectedTypes.length > 0 || selectedAddons.length > 0 || query.trim().length > 0;
|
|
42895
42850
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
42896
42851
|
className: "flex items-center gap-2 flex-wrap",
|
|
42897
42852
|
children: [
|
|
42898
|
-
!hideView && view !== void 0 && onViewChange !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
42899
|
-
className: "inline-flex border border-border rounded-md overflow-hidden",
|
|
42900
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
42901
|
-
type: "button",
|
|
42902
|
-
onClick: () => onViewChange("cards"),
|
|
42903
|
-
className: cn("inline-flex items-center justify-center h-7 w-8 transition-colors", view === "cards" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
|
|
42904
|
-
"aria-label": "Cards view",
|
|
42905
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LayoutGrid, { className: "h-3.5 w-3.5" })
|
|
42906
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
42907
|
-
type: "button",
|
|
42908
|
-
onClick: () => onViewChange("table"),
|
|
42909
|
-
className: cn("inline-flex items-center justify-center h-7 w-8 border-l border-border transition-colors", view === "table" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
|
|
42910
|
-
"aria-label": "Table view",
|
|
42911
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Table2, { className: "h-3.5 w-3.5" })
|
|
42912
|
-
})]
|
|
42913
|
-
}),
|
|
42914
42853
|
typeOptions && typeOptions.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ResponsiveTypeFilter, {
|
|
42915
42854
|
label: "Type",
|
|
42916
42855
|
options: typeOptions,
|
|
@@ -42921,6 +42860,12 @@ function FilterChips({ view, onViewChange, hideView = false, typeOptions, select
|
|
|
42921
42860
|
addons,
|
|
42922
42861
|
selected: selectedAddons,
|
|
42923
42862
|
onChange: onAddonsChange
|
|
42863
|
+
}),
|
|
42864
|
+
onClearFilters !== void 0 && hasActiveFilter && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
42865
|
+
type: "button",
|
|
42866
|
+
onClick: onClearFilters,
|
|
42867
|
+
className: "inline-flex items-center gap-1 h-7 rounded-md border border-border bg-surface px-2 text-[10.5px] text-foreground-subtle transition-colors hover:text-foreground hover:border-foreground-subtle/40",
|
|
42868
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(X, { className: "h-3 w-3" }), "Clear filters"]
|
|
42924
42869
|
})
|
|
42925
42870
|
]
|
|
42926
42871
|
});
|
|
@@ -43028,19 +42973,19 @@ function DeviceListEmptyState({ variant, onClearFilters }) {
|
|
|
43028
42973
|
* `popstate` (back/forward navigation). Writes via
|
|
43029
42974
|
* `history.replaceState` on every setter.
|
|
43030
42975
|
* - Fallback: `localStorage[<lsKey>:lastFilters]` — JSON object
|
|
43031
|
-
* `{
|
|
42976
|
+
* `{addon, type, q}` (NEVER page, NEVER view). Used to rehydrate when
|
|
43032
42977
|
* the URL has no params.
|
|
43033
42978
|
* - Defaults stripped from URL — when the value is the default AND
|
|
43034
42979
|
* not pinned by LS, it's removed (URL stays canonical).
|
|
43035
42980
|
*
|
|
43036
42981
|
* Two scopes:
|
|
43037
|
-
* - 'root' — uses `
|
|
42982
|
+
* - 'root' — uses `page`, `addon`, `type`, `q`
|
|
43038
42983
|
* - 'nested' — uses `deviceView`, `devicePage`, `deviceType`,
|
|
43039
42984
|
* `deviceQ` (no `deviceAddon` — outer ?expand= locks it). Used
|
|
43040
42985
|
* by Integrations page expanded row.
|
|
43041
42986
|
*
|
|
43042
42987
|
* Page reset rule: changing addon / type / q resets page to 1.
|
|
43043
|
-
* `clearFilters` clears addon / type / q
|
|
42988
|
+
* `clearFilters` clears addon / type / q.
|
|
43044
42989
|
*/
|
|
43045
42990
|
/** Parse a comma-joined param/LS value into a clean id array. */
|
|
43046
42991
|
function parseCsv(raw) {
|
|
@@ -43077,27 +43022,24 @@ function writeToLS(lsKey, filters) {
|
|
|
43077
43022
|
localStorage.setItem(`camstack:${lsKey}:lastFilters`, JSON.stringify(filters));
|
|
43078
43023
|
} catch {}
|
|
43079
43024
|
}
|
|
43080
|
-
function readUrlState(scope,
|
|
43025
|
+
function readUrlState(scope, ls) {
|
|
43081
43026
|
const params = new URLSearchParams(window.location.search);
|
|
43082
|
-
const rawView = params.get(paramKey(scope, "view"));
|
|
43083
|
-
const view = rawView === "cards" || rawView === "table" ? rawView : ls.view ?? defaultView;
|
|
43084
43027
|
const rawPage = params.get(paramKey(scope, "page"));
|
|
43085
43028
|
const pageNum = rawPage ? parseInt(rawPage, 10) : 1;
|
|
43086
43029
|
return {
|
|
43087
|
-
view,
|
|
43088
43030
|
page: Number.isFinite(pageNum) && pageNum >= 1 ? pageNum : 1,
|
|
43089
43031
|
addons: parseCsv(params.get(paramKey(scope, "addons")) ?? ls.addon ?? null),
|
|
43090
43032
|
types: parseCsv(params.get(paramKey(scope, "types")) ?? ls.type ?? null),
|
|
43091
43033
|
q: params.get(paramKey(scope, "q")) ?? ls.q ?? ""
|
|
43092
43034
|
};
|
|
43093
43035
|
}
|
|
43094
|
-
function writeUrlState(scope, next
|
|
43036
|
+
function writeUrlState(scope, next) {
|
|
43095
43037
|
const params = new URLSearchParams(window.location.search);
|
|
43096
43038
|
const set = (k, v) => {
|
|
43097
43039
|
if (v === null || v === "") params.delete(k);
|
|
43098
43040
|
else params.set(k, v);
|
|
43099
43041
|
};
|
|
43100
|
-
set(paramKey(scope, "view"),
|
|
43042
|
+
set(paramKey(scope, "view"), null);
|
|
43101
43043
|
set(paramKey(scope, "page"), next.page === 1 ? null : String(next.page));
|
|
43102
43044
|
set(paramKey(scope, "addons"), next.addons.length > 0 ? next.addons.join(",") : null);
|
|
43103
43045
|
set(paramKey(scope, "types"), next.types.length > 0 ? next.types.join(",") : null);
|
|
@@ -43107,47 +43049,34 @@ function writeUrlState(scope, next, defaultView) {
|
|
|
43107
43049
|
window.history.replaceState(null, "", url);
|
|
43108
43050
|
}
|
|
43109
43051
|
function useDeviceListUrlState(options) {
|
|
43110
|
-
const { scope,
|
|
43052
|
+
const { scope, lsKey } = options;
|
|
43111
43053
|
const [state, setState] = (0, react$1.useState)(() => {
|
|
43112
|
-
return readUrlState(scope,
|
|
43054
|
+
return readUrlState(scope, readFromLS(lsKey));
|
|
43113
43055
|
});
|
|
43114
43056
|
const stateRef = (0, react$1.useRef)(state);
|
|
43115
43057
|
stateRef.current = state;
|
|
43116
43058
|
(0, react$1.useEffect)(() => {
|
|
43117
43059
|
const handler = () => {
|
|
43118
|
-
const next = readUrlState(scope,
|
|
43060
|
+
const next = readUrlState(scope, readFromLS(lsKey));
|
|
43119
43061
|
stateRef.current = next;
|
|
43120
43062
|
setState(next);
|
|
43121
43063
|
};
|
|
43122
43064
|
window.addEventListener("popstate", handler);
|
|
43123
43065
|
return () => window.removeEventListener("popstate", handler);
|
|
43124
|
-
}, [
|
|
43125
|
-
scope,
|
|
43126
|
-
defaultView,
|
|
43127
|
-
lsKey
|
|
43128
|
-
]);
|
|
43066
|
+
}, [scope, lsKey]);
|
|
43129
43067
|
const apply = (0, react$1.useCallback)((mutate) => {
|
|
43130
43068
|
const next = mutate(stateRef.current);
|
|
43131
43069
|
stateRef.current = next;
|
|
43132
43070
|
setState(next);
|
|
43133
|
-
writeUrlState(scope, next
|
|
43071
|
+
writeUrlState(scope, next);
|
|
43134
43072
|
writeToLS(lsKey, {
|
|
43135
|
-
view: next.view,
|
|
43136
43073
|
addon: next.addons.length > 0 ? next.addons.join(",") : null,
|
|
43137
43074
|
type: next.types.length > 0 ? next.types.join(",") : null,
|
|
43138
43075
|
q: next.q
|
|
43139
43076
|
});
|
|
43140
|
-
}, [
|
|
43141
|
-
scope,
|
|
43142
|
-
defaultView,
|
|
43143
|
-
lsKey
|
|
43144
|
-
]);
|
|
43077
|
+
}, [scope, lsKey]);
|
|
43145
43078
|
return {
|
|
43146
43079
|
state,
|
|
43147
|
-
setView: (0, react$1.useCallback)((view) => apply((s) => ({
|
|
43148
|
-
...s,
|
|
43149
|
-
view
|
|
43150
|
-
})), [apply]),
|
|
43151
43080
|
setPage: (0, react$1.useCallback)((page) => apply((s) => ({
|
|
43152
43081
|
...s,
|
|
43153
43082
|
page
|
|
@@ -43177,32 +43106,6 @@ function useDeviceListUrlState(options) {
|
|
|
43177
43106
|
};
|
|
43178
43107
|
}
|
|
43179
43108
|
//#endregion
|
|
43180
|
-
//#region src/composites/device-list/cards-layout.tsx
|
|
43181
|
-
function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection }) {
|
|
43182
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
43183
|
-
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 items-stretch",
|
|
43184
|
-
children: rows.map((d) => {
|
|
43185
|
-
const accessories = accessoriesByParent.get(d.id) ?? [];
|
|
43186
|
-
const selection = selectable ? {
|
|
43187
|
-
selected: activeSelected.has(d.id),
|
|
43188
|
-
onToggle: () => onToggleSelection(d.id)
|
|
43189
|
-
} : void 0;
|
|
43190
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceItem, {
|
|
43191
|
-
trpc,
|
|
43192
|
-
device: d,
|
|
43193
|
-
view: "card",
|
|
43194
|
-
integrationIcon: resolveIntegrationIcon?.(d.addonId) ?? null,
|
|
43195
|
-
parent: d.parentDeviceId !== null ? resolveParent?.(d.parentDeviceId) ?? null : null,
|
|
43196
|
-
children: accessories,
|
|
43197
|
-
onNavigate: onNavigate ?? void 0,
|
|
43198
|
-
renderRowAction: renderRowAction ?? void 0,
|
|
43199
|
-
selection,
|
|
43200
|
-
rowClickSelects
|
|
43201
|
-
}, d.id);
|
|
43202
|
-
})
|
|
43203
|
-
});
|
|
43204
|
-
}
|
|
43205
|
-
//#endregion
|
|
43206
43109
|
//#region src/composites/device-list/sortable-header.tsx
|
|
43207
43110
|
function SortableHeaderButton({ columnId, label, sort, onSort }) {
|
|
43208
43111
|
const active = sort !== null && sort.columnId === columnId;
|
|
@@ -43526,7 +43429,7 @@ var DEFAULT_PAGE_SIZE = {
|
|
|
43526
43429
|
table: 50
|
|
43527
43430
|
};
|
|
43528
43431
|
function DeviceModeList(props) {
|
|
43529
|
-
const { devices, trpc, context = "devices",
|
|
43432
|
+
const { devices, trpc, context = "devices", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
|
|
43530
43433
|
const [batchActive, setBatchActive] = (0, react$1.useState)(false);
|
|
43531
43434
|
const [internalSelected, setInternalSelected] = (0, react$1.useState)(/* @__PURE__ */ new Set());
|
|
43532
43435
|
const activeSelected = selectedIds ?? internalSelected;
|
|
@@ -43554,12 +43457,10 @@ function DeviceModeList(props) {
|
|
|
43554
43457
|
const typeFilterOptions = (0, react$1.useMemo)(() => typeOptionsOverride ?? allDeviceTypeFilterOptions(), [typeOptionsOverride]);
|
|
43555
43458
|
const url = useDeviceListUrlState({
|
|
43556
43459
|
scope: urlScope,
|
|
43557
|
-
defaultView,
|
|
43558
43460
|
lsKey
|
|
43559
43461
|
});
|
|
43560
|
-
const view = url.state.view;
|
|
43561
43462
|
const [tablePageSize, setTablePageSize] = useDeviceListPageSize(pageSize.table);
|
|
43562
|
-
const currentPageSize =
|
|
43463
|
+
const currentPageSize = tablePageSize;
|
|
43563
43464
|
const [searchInput, setSearchInput] = (0, react$1.useState)(url.state.q);
|
|
43564
43465
|
const debouncedSearch = useDebouncedString(searchInput, 300);
|
|
43565
43466
|
(0, react$1.useEffect)(() => {
|
|
@@ -43619,13 +43520,16 @@ function DeviceModeList(props) {
|
|
|
43619
43520
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
43620
43521
|
className: "flex items-center justify-between gap-3 flex-wrap",
|
|
43621
43522
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilterChips, {
|
|
43622
|
-
view,
|
|
43623
|
-
onViewChange: url.setView,
|
|
43624
43523
|
typeOptions: typeFilterOptions,
|
|
43625
43524
|
selectedTypes: url.state.types,
|
|
43626
43525
|
onTypesChange: url.setTypes,
|
|
43627
43526
|
addons: filters?.addons,
|
|
43628
43527
|
selectedAddons: url.state.addons,
|
|
43528
|
+
query: url.state.q,
|
|
43529
|
+
onClearFilters: () => {
|
|
43530
|
+
setSearchInput("");
|
|
43531
|
+
url.clearFilters();
|
|
43532
|
+
},
|
|
43629
43533
|
onAddonsChange: url.setAddons,
|
|
43630
43534
|
hideAddons: forceAddon !== void 0
|
|
43631
43535
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -43663,21 +43567,6 @@ function DeviceModeList(props) {
|
|
|
43663
43567
|
isEmpty ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceListEmptyState, {
|
|
43664
43568
|
variant: isFiltered ? "filtered" : "nofilter",
|
|
43665
43569
|
onClearFilters: isFiltered ? url.clearFilters : void 0
|
|
43666
|
-
}) : view === "cards" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContainerChildrenProvider, {
|
|
43667
|
-
value: grouped.accessoriesByParent,
|
|
43668
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CardsLayout, {
|
|
43669
|
-
rows: pageRows,
|
|
43670
|
-
accessoriesByParent: grouped.accessoriesByParent,
|
|
43671
|
-
trpc,
|
|
43672
|
-
resolveIntegrationIcon: resolveIntegrationIcon ?? null,
|
|
43673
|
-
resolveParent: resolveParent ?? null,
|
|
43674
|
-
onNavigate: onNavigate ?? null,
|
|
43675
|
-
renderRowAction: renderRowAction ?? null,
|
|
43676
|
-
selectable: showCheckboxes,
|
|
43677
|
-
rowClickSelects,
|
|
43678
|
-
activeSelected,
|
|
43679
|
-
onToggleSelection: toggleSelection
|
|
43680
|
-
})
|
|
43681
43570
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContainerChildrenProvider, {
|
|
43682
43571
|
value: grouped.accessoriesByParent,
|
|
43683
43572
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TableLayout, {
|
|
@@ -43700,7 +43589,7 @@ function DeviceModeList(props) {
|
|
|
43700
43589
|
onToggleSelection: toggleSelection
|
|
43701
43590
|
})
|
|
43702
43591
|
}),
|
|
43703
|
-
!isEmpty &&
|
|
43592
|
+
!isEmpty && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
43704
43593
|
className: "flex items-center justify-between gap-4 flex-wrap pt-2 text-[11px] text-foreground-subtle",
|
|
43705
43594
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
43706
43595
|
className: "inline-flex items-center gap-2",
|
|
@@ -43733,12 +43622,6 @@ function DeviceModeList(props) {
|
|
|
43733
43622
|
onPageChange: url.setPage
|
|
43734
43623
|
})]
|
|
43735
43624
|
}),
|
|
43736
|
-
!isEmpty && view === "cards" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Pagination, {
|
|
43737
|
-
currentPage: safePage,
|
|
43738
|
-
totalItems,
|
|
43739
|
-
pageSize: currentPageSize,
|
|
43740
|
-
onPageChange: url.setPage
|
|
43741
|
-
}),
|
|
43742
43625
|
forceAddon === void 0 && isFiltered && totalItems > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
43743
43626
|
className: "text-[11px] text-foreground-subtle",
|
|
43744
43627
|
children: [
|
|
@@ -44214,7 +44097,6 @@ function DeviceExportPanel({ addonId, trpc, onOpenDevice }) {
|
|
|
44214
44097
|
}) : hasSupportedKinds && candidateDevices.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceList, {
|
|
44215
44098
|
devices: candidateDevices,
|
|
44216
44099
|
trpc,
|
|
44217
|
-
defaultView: "table",
|
|
44218
44100
|
filters: { typeOptions: supportedTypeOptions },
|
|
44219
44101
|
urlScope: "nested",
|
|
44220
44102
|
lsKey: `device-export:${addonId}`,
|
|
@@ -49823,6 +49705,7 @@ exports.useDeviceManagerListWrappersForCap = useDeviceManagerListWrappersForCap;
|
|
|
49823
49705
|
exports.useDeviceManagerLoadConfig = useDeviceManagerLoadConfig;
|
|
49824
49706
|
exports.useDeviceManagerLoadMeta = useDeviceManagerLoadMeta;
|
|
49825
49707
|
exports.useDeviceManagerLoadRuntimeState = useDeviceManagerLoadRuntimeState;
|
|
49708
|
+
exports.useDeviceManagerMigrateDevice = useDeviceManagerMigrateDevice;
|
|
49826
49709
|
exports.useDeviceManagerPersistConfig = useDeviceManagerPersistConfig;
|
|
49827
49710
|
exports.useDeviceManagerProbeStreams = useDeviceManagerProbeStreams;
|
|
49828
49711
|
exports.useDeviceManagerProviderCreationType = useDeviceManagerProviderCreationType;
|
|
@@ -50019,7 +49902,6 @@ exports.useMeshNetworkLogout = useMeshNetworkLogout;
|
|
|
50019
49902
|
exports.useMeshNetworkStartLogin = useMeshNetworkStartLogin;
|
|
50020
49903
|
exports.useMeshNetworkTestConnection = useMeshNetworkTestConnection;
|
|
50021
49904
|
exports.useMetricsProviderCollectSnapshot = useMetricsProviderCollectSnapshot;
|
|
50022
|
-
exports.useMetricsProviderDumpHeapSnapshot = useMetricsProviderDumpHeapSnapshot;
|
|
50023
49905
|
exports.useMetricsProviderGetAddonStats = useMetricsProviderGetAddonStats;
|
|
50024
49906
|
exports.useMetricsProviderGetCached = useMetricsProviderGetCached;
|
|
50025
49907
|
exports.useMetricsProviderGetCpuTemperature = useMetricsProviderGetCpuTemperature;
|
package/dist/index.js
CHANGED
|
@@ -2229,46 +2229,6 @@ var Laugh = createLucideIcon("laugh", [
|
|
|
2229
2229
|
* This source code is licensed under the ISC license.
|
|
2230
2230
|
* See the LICENSE file in the root directory of this source tree.
|
|
2231
2231
|
*/
|
|
2232
|
-
var LayoutGrid = createLucideIcon("layout-grid", [
|
|
2233
|
-
["rect", {
|
|
2234
|
-
width: "7",
|
|
2235
|
-
height: "7",
|
|
2236
|
-
x: "3",
|
|
2237
|
-
y: "3",
|
|
2238
|
-
rx: "1",
|
|
2239
|
-
key: "1g98yp"
|
|
2240
|
-
}],
|
|
2241
|
-
["rect", {
|
|
2242
|
-
width: "7",
|
|
2243
|
-
height: "7",
|
|
2244
|
-
x: "14",
|
|
2245
|
-
y: "3",
|
|
2246
|
-
rx: "1",
|
|
2247
|
-
key: "6d4xhi"
|
|
2248
|
-
}],
|
|
2249
|
-
["rect", {
|
|
2250
|
-
width: "7",
|
|
2251
|
-
height: "7",
|
|
2252
|
-
x: "14",
|
|
2253
|
-
y: "14",
|
|
2254
|
-
rx: "1",
|
|
2255
|
-
key: "nxv5o0"
|
|
2256
|
-
}],
|
|
2257
|
-
["rect", {
|
|
2258
|
-
width: "7",
|
|
2259
|
-
height: "7",
|
|
2260
|
-
x: "3",
|
|
2261
|
-
y: "14",
|
|
2262
|
-
rx: "1",
|
|
2263
|
-
key: "1bb6yr"
|
|
2264
|
-
}]
|
|
2265
|
-
]);
|
|
2266
|
-
/**
|
|
2267
|
-
* @license lucide-react v0.576.0 - ISC
|
|
2268
|
-
*
|
|
2269
|
-
* This source code is licensed under the ISC license.
|
|
2270
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
2271
|
-
*/
|
|
2272
2232
|
var Leaf = createLucideIcon("leaf", [["path", {
|
|
2273
2233
|
d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
|
|
2274
2234
|
key: "nnexq3"
|
|
@@ -3932,16 +3892,6 @@ var Sunrise = createLucideIcon("sunrise", [
|
|
|
3932
3892
|
* This source code is licensed under the ISC license.
|
|
3933
3893
|
* See the LICENSE file in the root directory of this source tree.
|
|
3934
3894
|
*/
|
|
3935
|
-
var Table2 = createLucideIcon("table-2", [["path", {
|
|
3936
|
-
d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",
|
|
3937
|
-
key: "gugj83"
|
|
3938
|
-
}]]);
|
|
3939
|
-
/**
|
|
3940
|
-
* @license lucide-react v0.576.0 - ISC
|
|
3941
|
-
*
|
|
3942
|
-
* This source code is licensed under the ISC license.
|
|
3943
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
3944
|
-
*/
|
|
3945
3895
|
var Tag = createLucideIcon("tag", [["path", {
|
|
3946
3896
|
d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
|
|
3947
3897
|
key: "vktsd0"
|
|
@@ -5301,6 +5251,8 @@ var useDeviceExportGetDeviceLiveContribution = trpc.deviceExport.getDeviceLiveCo
|
|
|
5301
5251
|
var useDeviceExportApplyDeviceSettingsPatch = trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
|
|
5302
5252
|
/** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
|
|
5303
5253
|
var useDeviceManagerAllocateDeviceId = trpc.deviceManager.allocateDeviceId.useMutation;
|
|
5254
|
+
/** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
|
|
5255
|
+
var useDeviceManagerMigrateDevice = trpc.deviceManager.migrateDevice.useMutation;
|
|
5304
5256
|
/** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
|
|
5305
5257
|
var useDeviceManagerRegisterDevice = trpc.deviceManager.registerDevice.useMutation;
|
|
5306
5258
|
/** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
|
|
@@ -5777,8 +5729,6 @@ var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuer
|
|
|
5777
5729
|
var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
|
|
5778
5730
|
/** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
|
|
5779
5731
|
var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
|
|
5780
|
-
/** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
|
|
5781
|
-
var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
|
|
5782
5732
|
/** Generated alias around `trpc.motion.isDetected.useQuery`. */
|
|
5783
5733
|
var useMotionIsDetected = trpc.motion.isDetected.useQuery;
|
|
5784
5734
|
/** Generated alias around `trpc.motion.getStatus.useQuery`. */
|
|
@@ -22023,7 +21973,11 @@ function ModelPicker({ models, value, onChange, disabled }) {
|
|
|
22023
21973
|
onChange,
|
|
22024
21974
|
disabled
|
|
22025
21975
|
}),
|
|
22026
|
-
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
|
|
21976
|
+
ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —"),
|
|
21977
|
+
models.length === 0 && /* @__PURE__ */ jsx("p", {
|
|
21978
|
+
className: "text-[11px] text-foreground-subtle",
|
|
21979
|
+
children: "No model is published for this engine format."
|
|
21980
|
+
})
|
|
22027
21981
|
]
|
|
22028
21982
|
});
|
|
22029
21983
|
}
|
|
@@ -42857,7 +42811,7 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
|
|
|
42857
42811
|
/**
|
|
42858
42812
|
* <FilterChips> — top-row filter UI for DeviceList.
|
|
42859
42813
|
*
|
|
42860
|
-
* Layout: [
|
|
42814
|
+
* Layout: [Type chips] [Integration multi-select] [Clear filters]
|
|
42861
42815
|
* (search input lives separately; this component only handles the
|
|
42862
42816
|
* chip-style selectors + the integration dropdown).
|
|
42863
42817
|
*
|
|
@@ -42867,26 +42821,11 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
|
|
|
42867
42821
|
* now a single "Integration" button opens a checkbox menu so several
|
|
42868
42822
|
* integrations can be filtered at once without flooding the toolbar.
|
|
42869
42823
|
*/
|
|
42870
|
-
function FilterChips({
|
|
42824
|
+
function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false, query = "", onClearFilters }) {
|
|
42825
|
+
const hasActiveFilter = selectedTypes.length > 0 || selectedAddons.length > 0 || query.trim().length > 0;
|
|
42871
42826
|
return /* @__PURE__ */ jsxs("div", {
|
|
42872
42827
|
className: "flex items-center gap-2 flex-wrap",
|
|
42873
42828
|
children: [
|
|
42874
|
-
!hideView && view !== void 0 && onViewChange !== void 0 && /* @__PURE__ */ jsxs("span", {
|
|
42875
|
-
className: "inline-flex border border-border rounded-md overflow-hidden",
|
|
42876
|
-
children: [/* @__PURE__ */ jsx("button", {
|
|
42877
|
-
type: "button",
|
|
42878
|
-
onClick: () => onViewChange("cards"),
|
|
42879
|
-
className: cn("inline-flex items-center justify-center h-7 w-8 transition-colors", view === "cards" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
|
|
42880
|
-
"aria-label": "Cards view",
|
|
42881
|
-
children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-3.5 w-3.5" })
|
|
42882
|
-
}), /* @__PURE__ */ jsx("button", {
|
|
42883
|
-
type: "button",
|
|
42884
|
-
onClick: () => onViewChange("table"),
|
|
42885
|
-
className: cn("inline-flex items-center justify-center h-7 w-8 border-l border-border transition-colors", view === "table" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
|
|
42886
|
-
"aria-label": "Table view",
|
|
42887
|
-
children: /* @__PURE__ */ jsx(Table2, { className: "h-3.5 w-3.5" })
|
|
42888
|
-
})]
|
|
42889
|
-
}),
|
|
42890
42829
|
typeOptions && typeOptions.length > 0 && /* @__PURE__ */ jsx(ResponsiveTypeFilter, {
|
|
42891
42830
|
label: "Type",
|
|
42892
42831
|
options: typeOptions,
|
|
@@ -42897,6 +42836,12 @@ function FilterChips({ view, onViewChange, hideView = false, typeOptions, select
|
|
|
42897
42836
|
addons,
|
|
42898
42837
|
selected: selectedAddons,
|
|
42899
42838
|
onChange: onAddonsChange
|
|
42839
|
+
}),
|
|
42840
|
+
onClearFilters !== void 0 && hasActiveFilter && /* @__PURE__ */ jsxs("button", {
|
|
42841
|
+
type: "button",
|
|
42842
|
+
onClick: onClearFilters,
|
|
42843
|
+
className: "inline-flex items-center gap-1 h-7 rounded-md border border-border bg-surface px-2 text-[10.5px] text-foreground-subtle transition-colors hover:text-foreground hover:border-foreground-subtle/40",
|
|
42844
|
+
children: [/* @__PURE__ */ jsx(X, { className: "h-3 w-3" }), "Clear filters"]
|
|
42900
42845
|
})
|
|
42901
42846
|
]
|
|
42902
42847
|
});
|
|
@@ -43004,19 +42949,19 @@ function DeviceListEmptyState({ variant, onClearFilters }) {
|
|
|
43004
42949
|
* `popstate` (back/forward navigation). Writes via
|
|
43005
42950
|
* `history.replaceState` on every setter.
|
|
43006
42951
|
* - Fallback: `localStorage[<lsKey>:lastFilters]` — JSON object
|
|
43007
|
-
* `{
|
|
42952
|
+
* `{addon, type, q}` (NEVER page, NEVER view). Used to rehydrate when
|
|
43008
42953
|
* the URL has no params.
|
|
43009
42954
|
* - Defaults stripped from URL — when the value is the default AND
|
|
43010
42955
|
* not pinned by LS, it's removed (URL stays canonical).
|
|
43011
42956
|
*
|
|
43012
42957
|
* Two scopes:
|
|
43013
|
-
* - 'root' — uses `
|
|
42958
|
+
* - 'root' — uses `page`, `addon`, `type`, `q`
|
|
43014
42959
|
* - 'nested' — uses `deviceView`, `devicePage`, `deviceType`,
|
|
43015
42960
|
* `deviceQ` (no `deviceAddon` — outer ?expand= locks it). Used
|
|
43016
42961
|
* by Integrations page expanded row.
|
|
43017
42962
|
*
|
|
43018
42963
|
* Page reset rule: changing addon / type / q resets page to 1.
|
|
43019
|
-
* `clearFilters` clears addon / type / q
|
|
42964
|
+
* `clearFilters` clears addon / type / q.
|
|
43020
42965
|
*/
|
|
43021
42966
|
/** Parse a comma-joined param/LS value into a clean id array. */
|
|
43022
42967
|
function parseCsv(raw) {
|
|
@@ -43053,27 +42998,24 @@ function writeToLS(lsKey, filters) {
|
|
|
43053
42998
|
localStorage.setItem(`camstack:${lsKey}:lastFilters`, JSON.stringify(filters));
|
|
43054
42999
|
} catch {}
|
|
43055
43000
|
}
|
|
43056
|
-
function readUrlState(scope,
|
|
43001
|
+
function readUrlState(scope, ls) {
|
|
43057
43002
|
const params = new URLSearchParams(window.location.search);
|
|
43058
|
-
const rawView = params.get(paramKey(scope, "view"));
|
|
43059
|
-
const view = rawView === "cards" || rawView === "table" ? rawView : ls.view ?? defaultView;
|
|
43060
43003
|
const rawPage = params.get(paramKey(scope, "page"));
|
|
43061
43004
|
const pageNum = rawPage ? parseInt(rawPage, 10) : 1;
|
|
43062
43005
|
return {
|
|
43063
|
-
view,
|
|
43064
43006
|
page: Number.isFinite(pageNum) && pageNum >= 1 ? pageNum : 1,
|
|
43065
43007
|
addons: parseCsv(params.get(paramKey(scope, "addons")) ?? ls.addon ?? null),
|
|
43066
43008
|
types: parseCsv(params.get(paramKey(scope, "types")) ?? ls.type ?? null),
|
|
43067
43009
|
q: params.get(paramKey(scope, "q")) ?? ls.q ?? ""
|
|
43068
43010
|
};
|
|
43069
43011
|
}
|
|
43070
|
-
function writeUrlState(scope, next
|
|
43012
|
+
function writeUrlState(scope, next) {
|
|
43071
43013
|
const params = new URLSearchParams(window.location.search);
|
|
43072
43014
|
const set = (k, v) => {
|
|
43073
43015
|
if (v === null || v === "") params.delete(k);
|
|
43074
43016
|
else params.set(k, v);
|
|
43075
43017
|
};
|
|
43076
|
-
set(paramKey(scope, "view"),
|
|
43018
|
+
set(paramKey(scope, "view"), null);
|
|
43077
43019
|
set(paramKey(scope, "page"), next.page === 1 ? null : String(next.page));
|
|
43078
43020
|
set(paramKey(scope, "addons"), next.addons.length > 0 ? next.addons.join(",") : null);
|
|
43079
43021
|
set(paramKey(scope, "types"), next.types.length > 0 ? next.types.join(",") : null);
|
|
@@ -43083,47 +43025,34 @@ function writeUrlState(scope, next, defaultView) {
|
|
|
43083
43025
|
window.history.replaceState(null, "", url);
|
|
43084
43026
|
}
|
|
43085
43027
|
function useDeviceListUrlState(options) {
|
|
43086
|
-
const { scope,
|
|
43028
|
+
const { scope, lsKey } = options;
|
|
43087
43029
|
const [state, setState] = useState(() => {
|
|
43088
|
-
return readUrlState(scope,
|
|
43030
|
+
return readUrlState(scope, readFromLS(lsKey));
|
|
43089
43031
|
});
|
|
43090
43032
|
const stateRef = useRef(state);
|
|
43091
43033
|
stateRef.current = state;
|
|
43092
43034
|
useEffect(() => {
|
|
43093
43035
|
const handler = () => {
|
|
43094
|
-
const next = readUrlState(scope,
|
|
43036
|
+
const next = readUrlState(scope, readFromLS(lsKey));
|
|
43095
43037
|
stateRef.current = next;
|
|
43096
43038
|
setState(next);
|
|
43097
43039
|
};
|
|
43098
43040
|
window.addEventListener("popstate", handler);
|
|
43099
43041
|
return () => window.removeEventListener("popstate", handler);
|
|
43100
|
-
}, [
|
|
43101
|
-
scope,
|
|
43102
|
-
defaultView,
|
|
43103
|
-
lsKey
|
|
43104
|
-
]);
|
|
43042
|
+
}, [scope, lsKey]);
|
|
43105
43043
|
const apply = useCallback((mutate) => {
|
|
43106
43044
|
const next = mutate(stateRef.current);
|
|
43107
43045
|
stateRef.current = next;
|
|
43108
43046
|
setState(next);
|
|
43109
|
-
writeUrlState(scope, next
|
|
43047
|
+
writeUrlState(scope, next);
|
|
43110
43048
|
writeToLS(lsKey, {
|
|
43111
|
-
view: next.view,
|
|
43112
43049
|
addon: next.addons.length > 0 ? next.addons.join(",") : null,
|
|
43113
43050
|
type: next.types.length > 0 ? next.types.join(",") : null,
|
|
43114
43051
|
q: next.q
|
|
43115
43052
|
});
|
|
43116
|
-
}, [
|
|
43117
|
-
scope,
|
|
43118
|
-
defaultView,
|
|
43119
|
-
lsKey
|
|
43120
|
-
]);
|
|
43053
|
+
}, [scope, lsKey]);
|
|
43121
43054
|
return {
|
|
43122
43055
|
state,
|
|
43123
|
-
setView: useCallback((view) => apply((s) => ({
|
|
43124
|
-
...s,
|
|
43125
|
-
view
|
|
43126
|
-
})), [apply]),
|
|
43127
43056
|
setPage: useCallback((page) => apply((s) => ({
|
|
43128
43057
|
...s,
|
|
43129
43058
|
page
|
|
@@ -43153,32 +43082,6 @@ function useDeviceListUrlState(options) {
|
|
|
43153
43082
|
};
|
|
43154
43083
|
}
|
|
43155
43084
|
//#endregion
|
|
43156
|
-
//#region src/composites/device-list/cards-layout.tsx
|
|
43157
|
-
function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection }) {
|
|
43158
|
-
return /* @__PURE__ */ jsx("div", {
|
|
43159
|
-
className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 items-stretch",
|
|
43160
|
-
children: rows.map((d) => {
|
|
43161
|
-
const accessories = accessoriesByParent.get(d.id) ?? [];
|
|
43162
|
-
const selection = selectable ? {
|
|
43163
|
-
selected: activeSelected.has(d.id),
|
|
43164
|
-
onToggle: () => onToggleSelection(d.id)
|
|
43165
|
-
} : void 0;
|
|
43166
|
-
return /* @__PURE__ */ jsx(DeviceItem, {
|
|
43167
|
-
trpc,
|
|
43168
|
-
device: d,
|
|
43169
|
-
view: "card",
|
|
43170
|
-
integrationIcon: resolveIntegrationIcon?.(d.addonId) ?? null,
|
|
43171
|
-
parent: d.parentDeviceId !== null ? resolveParent?.(d.parentDeviceId) ?? null : null,
|
|
43172
|
-
children: accessories,
|
|
43173
|
-
onNavigate: onNavigate ?? void 0,
|
|
43174
|
-
renderRowAction: renderRowAction ?? void 0,
|
|
43175
|
-
selection,
|
|
43176
|
-
rowClickSelects
|
|
43177
|
-
}, d.id);
|
|
43178
|
-
})
|
|
43179
|
-
});
|
|
43180
|
-
}
|
|
43181
|
-
//#endregion
|
|
43182
43085
|
//#region src/composites/device-list/sortable-header.tsx
|
|
43183
43086
|
function SortableHeaderButton({ columnId, label, sort, onSort }) {
|
|
43184
43087
|
const active = sort !== null && sort.columnId === columnId;
|
|
@@ -43502,7 +43405,7 @@ var DEFAULT_PAGE_SIZE = {
|
|
|
43502
43405
|
table: 50
|
|
43503
43406
|
};
|
|
43504
43407
|
function DeviceModeList(props) {
|
|
43505
|
-
const { devices, trpc, context = "devices",
|
|
43408
|
+
const { devices, trpc, context = "devices", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
|
|
43506
43409
|
const [batchActive, setBatchActive] = useState(false);
|
|
43507
43410
|
const [internalSelected, setInternalSelected] = useState(/* @__PURE__ */ new Set());
|
|
43508
43411
|
const activeSelected = selectedIds ?? internalSelected;
|
|
@@ -43530,12 +43433,10 @@ function DeviceModeList(props) {
|
|
|
43530
43433
|
const typeFilterOptions = useMemo(() => typeOptionsOverride ?? allDeviceTypeFilterOptions(), [typeOptionsOverride]);
|
|
43531
43434
|
const url = useDeviceListUrlState({
|
|
43532
43435
|
scope: urlScope,
|
|
43533
|
-
defaultView,
|
|
43534
43436
|
lsKey
|
|
43535
43437
|
});
|
|
43536
|
-
const view = url.state.view;
|
|
43537
43438
|
const [tablePageSize, setTablePageSize] = useDeviceListPageSize(pageSize.table);
|
|
43538
|
-
const currentPageSize =
|
|
43439
|
+
const currentPageSize = tablePageSize;
|
|
43539
43440
|
const [searchInput, setSearchInput] = useState(url.state.q);
|
|
43540
43441
|
const debouncedSearch = useDebouncedString(searchInput, 300);
|
|
43541
43442
|
useEffect(() => {
|
|
@@ -43595,13 +43496,16 @@ function DeviceModeList(props) {
|
|
|
43595
43496
|
/* @__PURE__ */ jsxs("div", {
|
|
43596
43497
|
className: "flex items-center justify-between gap-3 flex-wrap",
|
|
43597
43498
|
children: [/* @__PURE__ */ jsx(FilterChips, {
|
|
43598
|
-
view,
|
|
43599
|
-
onViewChange: url.setView,
|
|
43600
43499
|
typeOptions: typeFilterOptions,
|
|
43601
43500
|
selectedTypes: url.state.types,
|
|
43602
43501
|
onTypesChange: url.setTypes,
|
|
43603
43502
|
addons: filters?.addons,
|
|
43604
43503
|
selectedAddons: url.state.addons,
|
|
43504
|
+
query: url.state.q,
|
|
43505
|
+
onClearFilters: () => {
|
|
43506
|
+
setSearchInput("");
|
|
43507
|
+
url.clearFilters();
|
|
43508
|
+
},
|
|
43605
43509
|
onAddonsChange: url.setAddons,
|
|
43606
43510
|
hideAddons: forceAddon !== void 0
|
|
43607
43511
|
}), /* @__PURE__ */ jsxs("div", {
|
|
@@ -43639,21 +43543,6 @@ function DeviceModeList(props) {
|
|
|
43639
43543
|
isEmpty ? /* @__PURE__ */ jsx(DeviceListEmptyState, {
|
|
43640
43544
|
variant: isFiltered ? "filtered" : "nofilter",
|
|
43641
43545
|
onClearFilters: isFiltered ? url.clearFilters : void 0
|
|
43642
|
-
}) : view === "cards" ? /* @__PURE__ */ jsx(ContainerChildrenProvider, {
|
|
43643
|
-
value: grouped.accessoriesByParent,
|
|
43644
|
-
children: /* @__PURE__ */ jsx(CardsLayout, {
|
|
43645
|
-
rows: pageRows,
|
|
43646
|
-
accessoriesByParent: grouped.accessoriesByParent,
|
|
43647
|
-
trpc,
|
|
43648
|
-
resolveIntegrationIcon: resolveIntegrationIcon ?? null,
|
|
43649
|
-
resolveParent: resolveParent ?? null,
|
|
43650
|
-
onNavigate: onNavigate ?? null,
|
|
43651
|
-
renderRowAction: renderRowAction ?? null,
|
|
43652
|
-
selectable: showCheckboxes,
|
|
43653
|
-
rowClickSelects,
|
|
43654
|
-
activeSelected,
|
|
43655
|
-
onToggleSelection: toggleSelection
|
|
43656
|
-
})
|
|
43657
43546
|
}) : /* @__PURE__ */ jsx(ContainerChildrenProvider, {
|
|
43658
43547
|
value: grouped.accessoriesByParent,
|
|
43659
43548
|
children: /* @__PURE__ */ jsx(TableLayout, {
|
|
@@ -43676,7 +43565,7 @@ function DeviceModeList(props) {
|
|
|
43676
43565
|
onToggleSelection: toggleSelection
|
|
43677
43566
|
})
|
|
43678
43567
|
}),
|
|
43679
|
-
!isEmpty &&
|
|
43568
|
+
!isEmpty && /* @__PURE__ */ jsxs("div", {
|
|
43680
43569
|
className: "flex items-center justify-between gap-4 flex-wrap pt-2 text-[11px] text-foreground-subtle",
|
|
43681
43570
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
43682
43571
|
className: "inline-flex items-center gap-2",
|
|
@@ -43709,12 +43598,6 @@ function DeviceModeList(props) {
|
|
|
43709
43598
|
onPageChange: url.setPage
|
|
43710
43599
|
})]
|
|
43711
43600
|
}),
|
|
43712
|
-
!isEmpty && view === "cards" && /* @__PURE__ */ jsx(Pagination, {
|
|
43713
|
-
currentPage: safePage,
|
|
43714
|
-
totalItems,
|
|
43715
|
-
pageSize: currentPageSize,
|
|
43716
|
-
onPageChange: url.setPage
|
|
43717
|
-
}),
|
|
43718
43601
|
forceAddon === void 0 && isFiltered && totalItems > 0 && /* @__PURE__ */ jsxs("p", {
|
|
43719
43602
|
className: "text-[11px] text-foreground-subtle",
|
|
43720
43603
|
children: [
|
|
@@ -44190,7 +44073,6 @@ function DeviceExportPanel({ addonId, trpc, onOpenDevice }) {
|
|
|
44190
44073
|
}) : hasSupportedKinds && candidateDevices.length > 0 ? /* @__PURE__ */ jsx(DeviceList, {
|
|
44191
44074
|
devices: candidateDevices,
|
|
44192
44075
|
trpc,
|
|
44193
|
-
defaultView: "table",
|
|
44194
44076
|
filters: { typeOptions: supportedTypeOptions },
|
|
44195
44077
|
urlScope: "nested",
|
|
44196
44078
|
lsKey: `device-export:${addonId}`,
|
|
@@ -49154,4 +49036,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-d_A4kO-M.js").t
|
|
|
49154
49036
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
49155
49037
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DNSLc6ww.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
49156
49038
|
//#endregion
|
|
49157
|
-
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, 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, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, 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, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, 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, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, 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, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, 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, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, 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, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
49039
|
+
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, 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, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, 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, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, 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, 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, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, 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, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, 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, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, 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, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
package/package.json
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
|
|
3
|
-
import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
|
|
4
|
-
export interface CardsLayoutProps {
|
|
5
|
-
readonly rows: readonly DeviceItemDevice[];
|
|
6
|
-
readonly accessoriesByParent: ReadonlyMap<number, readonly DeviceItemDevice[]>;
|
|
7
|
-
readonly trpc: UseDeviceProxyTrpc;
|
|
8
|
-
readonly resolveIntegrationIcon: ((addonId: string) => ReactNode | null) | null;
|
|
9
|
-
readonly resolveParent: ((parentId: number) => DeviceItemParent | null) | null;
|
|
10
|
-
readonly onNavigate: ((deviceId: number) => void) | null;
|
|
11
|
-
readonly renderRowAction: ((device: DeviceItemDevice) => ReactNode) | null;
|
|
12
|
-
readonly selectable: boolean;
|
|
13
|
-
/** Batch mode active — a row click toggles selection instead of navigating. */
|
|
14
|
-
readonly rowClickSelects: boolean;
|
|
15
|
-
readonly activeSelected: ReadonlySet<number>;
|
|
16
|
-
readonly onToggleSelection: (id: number) => void;
|
|
17
|
-
}
|
|
18
|
-
export declare function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection, }: CardsLayoutProps): ReactNode;
|