@camstack/ui-library 1.2.207 → 1.2.208
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/extensions/AssociationSlotCard.d.ts +14 -1
- package/dist/composites/extensions/extensions-view-state.d.ts +50 -1
- package/dist/composites/index.d.ts +0 -1
- package/dist/generated/system-hooks.d.ts +0 -12
- package/dist/index.cjs +172 -48
- package/dist/index.js +173 -40
- package/package.json +1 -1
- package/dist/composites/extensions/extension-invalidation.d.ts +0 -9
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { ExtensionSlotSource, ExtensionSlotState } from '@camstack/types';
|
|
2
|
+
import { TrackedOption } from './extensions-view-state.js';
|
|
2
3
|
export interface SlotSourceListProps {
|
|
3
4
|
readonly sources: readonly ExtensionSlotSource[];
|
|
5
|
+
/** The tracked-event opt-in, when the slot carries one. */
|
|
6
|
+
readonly tracked?: readonly number[] | undefined;
|
|
4
7
|
}
|
|
5
8
|
/** The saved sources, each with its health — a bad one is shown, never hidden. */
|
|
6
|
-
export declare function SlotSourceList({ sources }: SlotSourceListProps): import("react").JSX.Element;
|
|
9
|
+
export declare function SlotSourceList({ sources, tracked }: SlotSourceListProps): import("react").JSX.Element;
|
|
7
10
|
export interface AssociationSlotCardProps {
|
|
8
11
|
readonly deviceId: number;
|
|
9
12
|
readonly row: ExtensionSlotState;
|
|
@@ -12,4 +15,14 @@ export interface AssociationSlotCardProps {
|
|
|
12
15
|
export interface ActivationLineProps {
|
|
13
16
|
readonly row: ExtensionSlotState;
|
|
14
17
|
}
|
|
18
|
+
export interface ImpliedSourceListProps {
|
|
19
|
+
readonly sources: readonly ExtensionSlotSource[];
|
|
20
|
+
readonly tracked?: readonly number[] | undefined;
|
|
21
|
+
}
|
|
22
|
+
export interface TrackedTogglesProps {
|
|
23
|
+
readonly options: readonly TrackedOption[];
|
|
24
|
+
readonly tracked: readonly number[];
|
|
25
|
+
readonly nameOf: (id: number) => string;
|
|
26
|
+
readonly onToggle: (id: number) => void;
|
|
27
|
+
}
|
|
15
28
|
export declare function AssociationSlotCard({ deviceId, row, onSaved }: AssociationSlotCardProps): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExtensionCandidate, ExtensionSlotCardinality, ExtensionSlotRow, ExtensionSlotState, ExtensionSlotUnreachable } from '@camstack/types';
|
|
1
|
+
import { ExtensionCandidate, ExtensionSlotCardinality, ExtensionSlotRow, ExtensionSlotState, ExtensionSlotUnreachable, ExtensionSlotValue } from '@camstack/types';
|
|
2
2
|
/** The one field of a query error this module reads. */
|
|
3
3
|
export interface ExtensionsQueryError {
|
|
4
4
|
readonly message: string;
|
|
@@ -38,3 +38,52 @@ export declare function pendingSuggestions(candidates: readonly ExtensionCandida
|
|
|
38
38
|
export declare function searchCandidates(candidates: readonly ExtensionCandidate[], draft: readonly number[], query: string): readonly ExtensionCandidate[];
|
|
39
39
|
/** Whether the draft differs from what the owner's store holds. */
|
|
40
40
|
export declare function isDirty(saved: readonly number[], draft: readonly number[]): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The tracked-event opt-in a slot's value carries, or `undefined` when it
|
|
43
|
+
* carries none — every slot but `linked-devices`, and a `linked-devices` row
|
|
44
|
+
* from a server older than D655. `undefined` is "this owner offers no
|
|
45
|
+
* opt-in", never "nothing is opted in": the card then shows no toggle rather
|
|
46
|
+
* than a row of unticked ones it could not save.
|
|
47
|
+
*/
|
|
48
|
+
export declare function trackedOptInOf(value: ExtensionSlotValue): readonly number[] | undefined;
|
|
49
|
+
/** Flip one device's tracked-event opt-in. */
|
|
50
|
+
export declare function toggleTracked(tracked: readonly number[], deviceId: number): readonly number[];
|
|
51
|
+
/** Whether two opt-ins differ as SETS — the order carries no meaning. */
|
|
52
|
+
export declare function isTrackedDirty(saved: readonly number[], draft: readonly number[]): boolean;
|
|
53
|
+
/** Where a tracked-event toggle comes from — said next to it. */
|
|
54
|
+
export type TrackedOptionOrigin = 'pick' | 'implied' | 'not-linked';
|
|
55
|
+
/** One device the editor offers a tracked-event toggle for. */
|
|
56
|
+
export interface TrackedOption {
|
|
57
|
+
readonly deviceId: number;
|
|
58
|
+
readonly origin: TrackedOptionOrigin;
|
|
59
|
+
}
|
|
60
|
+
/** What `trackedOptions` builds the toggle list from. */
|
|
61
|
+
export interface TrackedOptionsInput {
|
|
62
|
+
/** The draft picks. */
|
|
63
|
+
readonly picks: readonly number[];
|
|
64
|
+
/** Saved picks that are not a valid source (a container, D356) — no toggle. */
|
|
65
|
+
readonly invalidPicks: readonly number[];
|
|
66
|
+
/** Linked by the owner's own structure (`impliedSources`). */
|
|
67
|
+
readonly implied: readonly number[];
|
|
68
|
+
/** The draft opt-in. */
|
|
69
|
+
readonly tracked: readonly number[];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* One toggle per device the camera links — the old section's set (D655):
|
|
73
|
+
* the valid picks, then what the owner links by structure (tree children, a
|
|
74
|
+
* picked container's child — never the container itself, D356), then every
|
|
75
|
+
* opted-in device that is linked no more, so a stored opt-in is always
|
|
76
|
+
* visible and can always be removed.
|
|
77
|
+
*/
|
|
78
|
+
export declare function trackedOptions(input: TrackedOptionsInput): readonly TrackedOption[];
|
|
79
|
+
/**
|
|
80
|
+
* The opt-in after one device is removed from the draft picks: its toggle
|
|
81
|
+
* goes with it, unless the camera still links it by structure.
|
|
82
|
+
*/
|
|
83
|
+
export declare function untrackUnpicked(tracked: readonly number[], deviceId: number, implied: readonly number[]): readonly number[];
|
|
84
|
+
/**
|
|
85
|
+
* The value a Save sends. The opt-in travels only when the owner offered one,
|
|
86
|
+
* and then WHOLE: it replaces the stored one, and the owner accepts any id it
|
|
87
|
+
* already stored, so what was read can be sent back unchanged (D655).
|
|
88
|
+
*/
|
|
89
|
+
export declare function slotWriteValue(saved: ExtensionSlotValue, deviceIds: readonly number[], tracked: readonly number[] | undefined): ExtensionSlotValue;
|
|
@@ -169,4 +169,3 @@ export * from './version-badge';
|
|
|
169
169
|
export * from './widget-panel.js';
|
|
170
170
|
export type { WidgetSlotProps } from './widget-slot';
|
|
171
171
|
export { WidgetSlot } from './widget-slot';
|
|
172
|
-
export { DEVICE_AGGREGATE_QUERY_KEY, EXTENSION_SLOTS_QUERY_KEY, invalidateExtensionSurfaces, type QueryInvalidator, } from './extensions/extension-invalidation.js';
|
|
@@ -609,12 +609,6 @@ export declare const useDeviceManagerTestField: typeof trpc.deviceManager.testFi
|
|
|
609
609
|
export declare const useDeviceManagerGetDeviceStatusAggregate: typeof trpc.deviceManager.getDeviceStatusAggregate.useQuery;
|
|
610
610
|
/** Generated alias around `trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery`. */
|
|
611
611
|
export declare const useDeviceManagerGetDeviceStatusAggregateBatch: typeof trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery;
|
|
612
|
-
/** Generated alias around `trpc.deviceManager.getDeviceSettingsContribution.useQuery`. */
|
|
613
|
-
export declare const useDeviceManagerGetDeviceSettingsContribution: typeof trpc.deviceManager.getDeviceSettingsContribution.useQuery;
|
|
614
|
-
/** Generated alias around `trpc.deviceManager.getDeviceLiveContribution.useQuery`. */
|
|
615
|
-
export declare const useDeviceManagerGetDeviceLiveContribution: typeof trpc.deviceManager.getDeviceLiveContribution.useQuery;
|
|
616
|
-
/** Generated alias around `trpc.deviceManager.applyDeviceSettingsPatch.useMutation`. */
|
|
617
|
-
export declare const useDeviceManagerApplyDeviceSettingsPatch: typeof trpc.deviceManager.applyDeviceSettingsPatch.useMutation;
|
|
618
612
|
/** Generated alias around `trpc.deviceOps.getStreamSources.useQuery`. */
|
|
619
613
|
export declare const useDeviceOpsGetStreamSources: typeof trpc.deviceOps.getStreamSources.useQuery;
|
|
620
614
|
/** Generated alias around `trpc.deviceOps.getConfigEntries.useQuery`. */
|
|
@@ -669,12 +663,6 @@ export declare const useDeviceStateSetCapSlice: typeof trpc.deviceState.setCapSl
|
|
|
669
663
|
export declare const useDeviceStatusGetStatus: typeof trpc.deviceStatus.getStatus.useQuery;
|
|
670
664
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
671
665
|
export declare const useDoorbellGetStatus: typeof trpc.doorbell.getStatus.useQuery;
|
|
672
|
-
/** Generated alias around `trpc.doorbell.getDeviceSettingsContribution.useQuery`. */
|
|
673
|
-
export declare const useDoorbellGetDeviceSettingsContribution: typeof trpc.doorbell.getDeviceSettingsContribution.useQuery;
|
|
674
|
-
/** Generated alias around `trpc.doorbell.getDeviceLiveContribution.useQuery`. */
|
|
675
|
-
export declare const useDoorbellGetDeviceLiveContribution: typeof trpc.doorbell.getDeviceLiveContribution.useQuery;
|
|
676
|
-
/** Generated alias around `trpc.doorbell.applyDeviceSettingsPatch.useMutation`. */
|
|
677
|
-
export declare const useDoorbellApplyDeviceSettingsPatch: typeof trpc.doorbell.applyDeviceSettingsPatch.useMutation;
|
|
678
666
|
/** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
|
|
679
667
|
export declare const useEnumSensorGetStatus: typeof trpc.enumSensor.getStatus.useQuery;
|
|
680
668
|
/** Generated alias around `trpc.eventEmitter.getStatus.useQuery`. */
|
package/dist/index.cjs
CHANGED
|
@@ -7128,12 +7128,6 @@ var useDeviceManagerTestField = trpc.deviceManager.testField.useMutation;
|
|
|
7128
7128
|
var useDeviceManagerGetDeviceStatusAggregate = trpc.deviceManager.getDeviceStatusAggregate.useQuery;
|
|
7129
7129
|
/** Generated alias around `trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery`. */
|
|
7130
7130
|
var useDeviceManagerGetDeviceStatusAggregateBatch = trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery;
|
|
7131
|
-
/** Generated alias around `trpc.deviceManager.getDeviceSettingsContribution.useQuery`. */
|
|
7132
|
-
var useDeviceManagerGetDeviceSettingsContribution = trpc.deviceManager.getDeviceSettingsContribution.useQuery;
|
|
7133
|
-
/** Generated alias around `trpc.deviceManager.getDeviceLiveContribution.useQuery`. */
|
|
7134
|
-
var useDeviceManagerGetDeviceLiveContribution = trpc.deviceManager.getDeviceLiveContribution.useQuery;
|
|
7135
|
-
/** Generated alias around `trpc.deviceManager.applyDeviceSettingsPatch.useMutation`. */
|
|
7136
|
-
var useDeviceManagerApplyDeviceSettingsPatch = trpc.deviceManager.applyDeviceSettingsPatch.useMutation;
|
|
7137
7131
|
/** Generated alias around `trpc.deviceOps.getStreamSources.useQuery`. */
|
|
7138
7132
|
var useDeviceOpsGetStreamSources = trpc.deviceOps.getStreamSources.useQuery;
|
|
7139
7133
|
/** Generated alias around `trpc.deviceOps.getConfigEntries.useQuery`. */
|
|
@@ -7188,12 +7182,6 @@ var useDeviceStateSetCapSlice = trpc.deviceState.setCapSlice.useMutation;
|
|
|
7188
7182
|
var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
|
|
7189
7183
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
7190
7184
|
var useDoorbellGetStatus = trpc.doorbell.getStatus.useQuery;
|
|
7191
|
-
/** Generated alias around `trpc.doorbell.getDeviceSettingsContribution.useQuery`. */
|
|
7192
|
-
var useDoorbellGetDeviceSettingsContribution = trpc.doorbell.getDeviceSettingsContribution.useQuery;
|
|
7193
|
-
/** Generated alias around `trpc.doorbell.getDeviceLiveContribution.useQuery`. */
|
|
7194
|
-
var useDoorbellGetDeviceLiveContribution = trpc.doorbell.getDeviceLiveContribution.useQuery;
|
|
7195
|
-
/** Generated alias around `trpc.doorbell.applyDeviceSettingsPatch.useMutation`. */
|
|
7196
|
-
var useDoorbellApplyDeviceSettingsPatch = trpc.doorbell.applyDeviceSettingsPatch.useMutation;
|
|
7197
7185
|
/** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
|
|
7198
7186
|
var useEnumSensorGetStatus = trpc.enumSensor.getStatus.useQuery;
|
|
7199
7187
|
/** Generated alias around `trpc.eventEmitter.getStatus.useQuery`. */
|
|
@@ -12327,8 +12315,8 @@ function selectedDeviceOptions(options, selected) {
|
|
|
12327
12315
|
* `device-select-filter.ts`). No server-computed option list is involved —
|
|
12328
12316
|
* the form field carries only the filter. Value(s) are device ids as strings.
|
|
12329
12317
|
*
|
|
12330
|
-
* The multi variant
|
|
12331
|
-
*
|
|
12318
|
+
* The multi variant is a searchable combobox (removable chips + typeahead
|
|
12319
|
+
* dropdown); the single variant is a native
|
|
12332
12320
|
* select. Both are inline in ui-library (like `node-select`) so any host that
|
|
12333
12321
|
* renders the shared form field gets them without extra registration.
|
|
12334
12322
|
*/
|
|
@@ -20916,16 +20904,6 @@ function ClipsSection({ deviceId }) {
|
|
|
20916
20904
|
});
|
|
20917
20905
|
}
|
|
20918
20906
|
//#endregion
|
|
20919
|
-
//#region src/composites/extensions/extension-invalidation.ts
|
|
20920
|
-
/** tRPC v11 query-key prefix of `deviceManager.getDeviceAggregate`. */
|
|
20921
|
-
var DEVICE_AGGREGATE_QUERY_KEY = [["deviceManager", "getDeviceAggregate"]];
|
|
20922
|
-
/** tRPC v11 query-key prefix of `deviceExtension.listSlots`. */
|
|
20923
|
-
var EXTENSION_SLOTS_QUERY_KEY = [["deviceExtension", "listSlots"]];
|
|
20924
|
-
/** Re-read both surfaces over the linked-devices / doorbell stores. */
|
|
20925
|
-
async function invalidateExtensionSurfaces(client) {
|
|
20926
|
-
await Promise.all([client.invalidateQueries({ queryKey: DEVICE_AGGREGATE_QUERY_KEY }), client.invalidateQueries({ queryKey: EXTENSION_SLOTS_QUERY_KEY })]);
|
|
20927
|
-
}
|
|
20928
|
-
//#endregion
|
|
20929
20907
|
//#region src/composites/extensions/extensions-view-state.ts
|
|
20930
20908
|
/**
|
|
20931
20909
|
* What the Extensions section may CLAIM, from what `listSlots` answered
|
|
@@ -20990,6 +20968,70 @@ function searchCandidates(candidates, draft, query) {
|
|
|
20990
20968
|
function isDirty(saved, draft) {
|
|
20991
20969
|
return saved.length !== draft.length || saved.some((id, i) => draft[i] !== id);
|
|
20992
20970
|
}
|
|
20971
|
+
/**
|
|
20972
|
+
* The tracked-event opt-in a slot's value carries, or `undefined` when it
|
|
20973
|
+
* carries none — every slot but `linked-devices`, and a `linked-devices` row
|
|
20974
|
+
* from a server older than D655. `undefined` is "this owner offers no
|
|
20975
|
+
* opt-in", never "nothing is opted in": the card then shows no toggle rather
|
|
20976
|
+
* than a row of unticked ones it could not save.
|
|
20977
|
+
*/
|
|
20978
|
+
function trackedOptInOf(value) {
|
|
20979
|
+
return value.slot === "linked-devices" ? value.trackedDeviceIds : void 0;
|
|
20980
|
+
}
|
|
20981
|
+
/** Flip one device's tracked-event opt-in. */
|
|
20982
|
+
function toggleTracked(tracked, deviceId) {
|
|
20983
|
+
return tracked.includes(deviceId) ? tracked.filter((id) => id !== deviceId) : [...tracked, deviceId];
|
|
20984
|
+
}
|
|
20985
|
+
/** Whether two opt-ins differ as SETS — the order carries no meaning. */
|
|
20986
|
+
function isTrackedDirty(saved, draft) {
|
|
20987
|
+
return saved.length !== draft.length || saved.some((id) => !draft.includes(id));
|
|
20988
|
+
}
|
|
20989
|
+
/**
|
|
20990
|
+
* One toggle per device the camera links — the old section's set (D655):
|
|
20991
|
+
* the valid picks, then what the owner links by structure (tree children, a
|
|
20992
|
+
* picked container's child — never the container itself, D356), then every
|
|
20993
|
+
* opted-in device that is linked no more, so a stored opt-in is always
|
|
20994
|
+
* visible and can always be removed.
|
|
20995
|
+
*/
|
|
20996
|
+
function trackedOptions(input) {
|
|
20997
|
+
const out = [];
|
|
20998
|
+
const seen = /* @__PURE__ */ new Set();
|
|
20999
|
+
const add = (deviceId, origin) => {
|
|
21000
|
+
if (seen.has(deviceId)) return;
|
|
21001
|
+
seen.add(deviceId);
|
|
21002
|
+
out.push({
|
|
21003
|
+
deviceId,
|
|
21004
|
+
origin
|
|
21005
|
+
});
|
|
21006
|
+
};
|
|
21007
|
+
for (const id of input.picks) if (!input.invalidPicks.includes(id)) add(id, "pick");
|
|
21008
|
+
for (const id of input.implied) add(id, "implied");
|
|
21009
|
+
for (const id of input.tracked) add(id, "not-linked");
|
|
21010
|
+
return out;
|
|
21011
|
+
}
|
|
21012
|
+
/**
|
|
21013
|
+
* The opt-in after one device is removed from the draft picks: its toggle
|
|
21014
|
+
* goes with it, unless the camera still links it by structure.
|
|
21015
|
+
*/
|
|
21016
|
+
function untrackUnpicked(tracked, deviceId, implied) {
|
|
21017
|
+
return implied.includes(deviceId) ? tracked : tracked.filter((id) => id !== deviceId);
|
|
21018
|
+
}
|
|
21019
|
+
/**
|
|
21020
|
+
* The value a Save sends. The opt-in travels only when the owner offered one,
|
|
21021
|
+
* and then WHOLE: it replaces the stored one, and the owner accepts any id it
|
|
21022
|
+
* already stored, so what was read can be sent back unchanged (D655).
|
|
21023
|
+
*/
|
|
21024
|
+
function slotWriteValue(saved, deviceIds, tracked) {
|
|
21025
|
+
if (saved.slot === "linked-devices" && tracked !== void 0) return {
|
|
21026
|
+
slot: "linked-devices",
|
|
21027
|
+
deviceIds: [...deviceIds],
|
|
21028
|
+
trackedDeviceIds: [...tracked]
|
|
21029
|
+
};
|
|
21030
|
+
return {
|
|
21031
|
+
slot: saved.slot,
|
|
21032
|
+
deviceIds: [...deviceIds]
|
|
21033
|
+
};
|
|
21034
|
+
}
|
|
20993
21035
|
//#endregion
|
|
20994
21036
|
//#region src/composites/extensions/AssociationSlotCard.tsx
|
|
20995
21037
|
/**
|
|
@@ -21006,6 +21048,11 @@ function isDirty(saved, draft) {
|
|
|
21006
21048
|
* shown with its reason and never silently dropped from the draft.
|
|
21007
21049
|
* - A gate owned by ANOTHER authority (the doorbell wrapper's binding) is
|
|
21008
21050
|
* shown read-only, naming that authority (D62).
|
|
21051
|
+
* - A slot whose value carries a tracked-event opt-in (`linked-devices`,
|
|
21052
|
+
* D655) gets one toggle per LINKED device — the picks, what the owner links
|
|
21053
|
+
* by structure (`impliedSources`: tree children, never a container, D356)
|
|
21054
|
+
* and any stored opt-in no longer linked, so each can be removed — saved
|
|
21055
|
+
* with the picks, whole.
|
|
21009
21056
|
*/
|
|
21010
21057
|
var HEALTH_LABEL = {
|
|
21011
21058
|
ok: "OK",
|
|
@@ -21020,7 +21067,7 @@ var HEALTH_VARIANT = {
|
|
|
21020
21067
|
unavailable: "warning"
|
|
21021
21068
|
};
|
|
21022
21069
|
/** The saved sources, each with its health — a bad one is shown, never hidden. */
|
|
21023
|
-
function SlotSourceList({ sources }) {
|
|
21070
|
+
function SlotSourceList({ sources, tracked }) {
|
|
21024
21071
|
if (sources.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
21025
21072
|
className: "text-[11px] text-foreground-subtle italic",
|
|
21026
21073
|
children: "No devices picked."
|
|
@@ -21038,6 +21085,10 @@ function SlotSourceList({ sources }) {
|
|
|
21038
21085
|
variant: HEALTH_VARIANT[s.health],
|
|
21039
21086
|
children: HEALTH_LABEL[s.health]
|
|
21040
21087
|
}),
|
|
21088
|
+
tracked?.includes(s.deviceId) === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
|
|
21089
|
+
variant: "info",
|
|
21090
|
+
children: "Tracked events"
|
|
21091
|
+
}),
|
|
21041
21092
|
s.detail !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
21042
21093
|
className: "text-[10px] text-foreground-subtle",
|
|
21043
21094
|
children: s.detail
|
|
@@ -21061,11 +21112,75 @@ function ActivationLine({ row }) {
|
|
|
21061
21112
|
]
|
|
21062
21113
|
});
|
|
21063
21114
|
}
|
|
21115
|
+
/**
|
|
21116
|
+
* What the owner links by structure — tree children, a picked container's
|
|
21117
|
+
* child (D356). Shown, never editable as a pick: removing one is not the
|
|
21118
|
+
* editor's to do.
|
|
21119
|
+
*/
|
|
21120
|
+
function ImpliedSourceList({ sources, tracked }) {
|
|
21121
|
+
if (sources.length === 0) return null;
|
|
21122
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21123
|
+
className: "flex flex-col gap-1",
|
|
21124
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
21125
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21126
|
+
children: "Always linked (device tree):"
|
|
21127
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("ul", {
|
|
21128
|
+
"aria-label": "Always linked",
|
|
21129
|
+
className: "flex flex-col gap-1",
|
|
21130
|
+
children: sources.map((s) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
|
|
21131
|
+
className: "flex flex-wrap items-center gap-2 text-[11px]",
|
|
21132
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
21133
|
+
className: "text-foreground",
|
|
21134
|
+
children: s.name ?? `Device ${s.deviceId}`
|
|
21135
|
+
}), tracked?.includes(s.deviceId) === true && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
|
|
21136
|
+
variant: "info",
|
|
21137
|
+
children: "Tracked events"
|
|
21138
|
+
})]
|
|
21139
|
+
}, s.deviceId))
|
|
21140
|
+
})]
|
|
21141
|
+
});
|
|
21142
|
+
}
|
|
21143
|
+
var ORIGIN_NOTE = {
|
|
21144
|
+
pick: null,
|
|
21145
|
+
implied: "always linked",
|
|
21146
|
+
"not-linked": "not linked any more — untick to remove"
|
|
21147
|
+
};
|
|
21148
|
+
/** One opt-in toggle per linked device: does it produce tracked events here? */
|
|
21149
|
+
function TrackedToggles({ options, tracked, nameOf, onToggle }) {
|
|
21150
|
+
if (options.length === 0) return null;
|
|
21151
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
21152
|
+
className: "flex flex-col gap-1",
|
|
21153
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", {
|
|
21154
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21155
|
+
children: "Produce tracked events on this camera (opt-in):"
|
|
21156
|
+
}), options.map(({ deviceId: id, origin }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
21157
|
+
className: "flex items-center gap-2 text-[11px] text-foreground",
|
|
21158
|
+
children: [
|
|
21159
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
21160
|
+
type: "checkbox",
|
|
21161
|
+
"aria-label": `Tracked events from ${nameOf(id)}`,
|
|
21162
|
+
checked: tracked.includes(id),
|
|
21163
|
+
onChange: () => onToggle(id)
|
|
21164
|
+
}),
|
|
21165
|
+
nameOf(id),
|
|
21166
|
+
ORIGIN_NOTE[origin] !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
21167
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21168
|
+
children: ["· ", ORIGIN_NOTE[origin]]
|
|
21169
|
+
})
|
|
21170
|
+
]
|
|
21171
|
+
}, id))]
|
|
21172
|
+
});
|
|
21173
|
+
}
|
|
21064
21174
|
function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
21065
21175
|
const descriptor = _camstack_types.EXTENSION_SLOTS[row.slot].descriptor;
|
|
21066
21176
|
const saved = row.value.deviceIds;
|
|
21177
|
+
const savedTracked = trackedOptInOf(row.value);
|
|
21178
|
+
const implied = row.impliedSources ?? [];
|
|
21179
|
+
const impliedIds = implied.map((s) => s.deviceId);
|
|
21180
|
+
const invalidPicks = row.sources.filter((s) => s.health === "unavailable").map((s) => s.deviceId);
|
|
21067
21181
|
const [editing, setEditing] = (0, react$1.useState)(false);
|
|
21068
21182
|
const [draft, setDraft] = (0, react$1.useState)(saved);
|
|
21183
|
+
const [draftTracked, setDraftTracked] = (0, react$1.useState)(savedTracked ?? []);
|
|
21069
21184
|
const [search, setSearch] = (0, react$1.useState)("");
|
|
21070
21185
|
const [refusal, setRefusal] = (0, react$1.useState)(null);
|
|
21071
21186
|
const candidatesQuery = useDeviceExtensionListCandidates({
|
|
@@ -21073,11 +21188,15 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21073
21188
|
slotRef: row.slotRef
|
|
21074
21189
|
}, { enabled: editing });
|
|
21075
21190
|
const setSlot = useDeviceExtensionSetSlot();
|
|
21076
|
-
const queryClient = (0, _tanstack_react_query.useQueryClient)();
|
|
21077
21191
|
const candidates = candidatesQuery.data?.candidates ?? [];
|
|
21078
|
-
const nameOf = (id) => candidates.find((c) => c.deviceId === id)?.name ?? row.sources.find((s) => s.deviceId === id)?.name ?? `Device ${id}`;
|
|
21192
|
+
const nameOf = (id) => candidates.find((c) => c.deviceId === id)?.name ?? row.sources.find((s) => s.deviceId === id)?.name ?? implied.find((s) => s.deviceId === id)?.name ?? `Device ${id}`;
|
|
21193
|
+
const removePick = (id) => {
|
|
21194
|
+
setDraft(togglePick(draft, id, descriptor.cardinality));
|
|
21195
|
+
setDraftTracked(untrackUnpicked(draftTracked, id, impliedIds));
|
|
21196
|
+
};
|
|
21079
21197
|
const startEditing = () => {
|
|
21080
21198
|
setDraft(saved);
|
|
21199
|
+
setDraftTracked(savedTracked ?? []);
|
|
21081
21200
|
setRefusal(null);
|
|
21082
21201
|
setEditing(true);
|
|
21083
21202
|
};
|
|
@@ -21087,13 +21206,9 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21087
21206
|
await setSlot.mutateAsync({
|
|
21088
21207
|
deviceId,
|
|
21089
21208
|
slotRef: row.slotRef,
|
|
21090
|
-
value:
|
|
21091
|
-
slot: row.value.slot,
|
|
21092
|
-
deviceIds: [...draft]
|
|
21093
|
-
}
|
|
21209
|
+
value: slotWriteValue(row.value, draft, savedTracked === void 0 ? void 0 : draftTracked)
|
|
21094
21210
|
});
|
|
21095
21211
|
setEditing(false);
|
|
21096
|
-
await invalidateExtensionSurfaces(queryClient);
|
|
21097
21212
|
onSaved();
|
|
21098
21213
|
} catch (err) {
|
|
21099
21214
|
setRefusal(err instanceof Error ? err.message : String(err));
|
|
@@ -21130,7 +21245,14 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21130
21245
|
})]
|
|
21131
21246
|
}),
|
|
21132
21247
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ActivationLine, { row }),
|
|
21133
|
-
!editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotSourceList, {
|
|
21248
|
+
!editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlotSourceList, {
|
|
21249
|
+
sources: row.sources,
|
|
21250
|
+
tracked: savedTracked
|
|
21251
|
+
}),
|
|
21252
|
+
!editing && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ImpliedSourceList, {
|
|
21253
|
+
sources: implied,
|
|
21254
|
+
tracked: savedTracked
|
|
21255
|
+
}),
|
|
21134
21256
|
editing && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
21135
21257
|
className: "flex flex-col gap-2",
|
|
21136
21258
|
children: [
|
|
@@ -21140,7 +21262,7 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21140
21262
|
children: draft.map((id) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
21141
21263
|
type: "button",
|
|
21142
21264
|
"aria-label": `Remove ${nameOf(id)}`,
|
|
21143
|
-
onClick: () =>
|
|
21265
|
+
onClick: () => removePick(id),
|
|
21144
21266
|
className: "inline-flex items-center gap-1 rounded-full bg-primary/15 px-2 py-0.5 text-[11px] text-foreground",
|
|
21145
21267
|
children: [nameOf(id), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(X, { className: "h-3 w-3" })]
|
|
21146
21268
|
}) }, id))
|
|
@@ -21210,6 +21332,17 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21210
21332
|
]
|
|
21211
21333
|
}) }, c.deviceId))
|
|
21212
21334
|
}),
|
|
21335
|
+
savedTracked !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrackedToggles, {
|
|
21336
|
+
options: trackedOptions({
|
|
21337
|
+
picks: draft,
|
|
21338
|
+
invalidPicks,
|
|
21339
|
+
implied: impliedIds,
|
|
21340
|
+
tracked: draftTracked
|
|
21341
|
+
}),
|
|
21342
|
+
tracked: draftTracked,
|
|
21343
|
+
nameOf,
|
|
21344
|
+
onToggle: (id) => setDraftTracked(toggleTracked(draftTracked, id))
|
|
21345
|
+
}),
|
|
21213
21346
|
refusal !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
21214
21347
|
role: "alert",
|
|
21215
21348
|
className: "text-[11px] text-danger break-words",
|
|
@@ -21224,7 +21357,7 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21224
21357
|
children: "Cancel"
|
|
21225
21358
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
21226
21359
|
size: "sm",
|
|
21227
|
-
disabled: !isDirty(saved, draft) || setSlot.isPending,
|
|
21360
|
+
disabled: !(isDirty(saved, draft) || savedTracked !== void 0 && isTrackedDirty(savedTracked, draftTracked)) || setSlot.isPending,
|
|
21228
21361
|
onClick: () => void save(),
|
|
21229
21362
|
children: "Save"
|
|
21230
21363
|
})]
|
|
@@ -21246,11 +21379,11 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21246
21379
|
* section (D14). The panel STORES NOTHING: every card is one row of
|
|
21247
21380
|
* `device-extension.listSlots`, read by the slot's owner from the store it
|
|
21248
21381
|
* already has, and every save is `setSlot`, written by that owner through its
|
|
21249
|
-
* existing path.
|
|
21250
|
-
*
|
|
21251
|
-
*
|
|
21382
|
+
* existing path. It is the only editor of what it shows: the hand-written
|
|
21383
|
+
* "Linked devices" and "Virtual doorbell" sections it replaced were retired
|
|
21384
|
+
* once the live read matched them on every measured camera (D655).
|
|
21252
21385
|
*
|
|
21253
|
-
*
|
|
21386
|
+
* It renders ASSOCIATION cards only (a device multiselect). A `graft`
|
|
21254
21387
|
* slot (slice 2) gets a read-only card here until its editor exists.
|
|
21255
21388
|
*
|
|
21256
21389
|
* Absence is claimed only from an answer (D315): pending, failed and empty
|
|
@@ -56493,7 +56626,6 @@ exports.CoverInlineControl = CoverInlineControl;
|
|
|
56493
56626
|
exports.CoverPanel = CoverPanel;
|
|
56494
56627
|
exports.CustomFieldRenderersProvider = CustomFieldRenderersProvider;
|
|
56495
56628
|
exports.DEFAULT_COLOR = DEFAULT_COLOR;
|
|
56496
|
-
exports.DEVICE_AGGREGATE_QUERY_KEY = DEVICE_AGGREGATE_QUERY_KEY;
|
|
56497
56629
|
exports.DEVICE_COLUMNS = DEVICE_COLUMNS;
|
|
56498
56630
|
exports.DEVICE_LIST_PAGE_SIZE_KEY = DEVICE_LIST_PAGE_SIZE_KEY;
|
|
56499
56631
|
exports.DEVICE_LIST_PAGE_SIZE_OPTIONS = DEVICE_LIST_PAGE_SIZE_OPTIONS;
|
|
@@ -56537,7 +56669,6 @@ exports.DummyHeroCard = DummyHeroCard;
|
|
|
56537
56669
|
exports.DummyInline = DummyInline;
|
|
56538
56670
|
exports.EMPTY_DATA_TABLE_FILTER = EMPTY_DATA_TABLE_FILTER;
|
|
56539
56671
|
exports.EVENT_KIND_ICONS = EVENT_KIND_ICONS;
|
|
56540
|
-
exports.EXTENSION_SLOTS_QUERY_KEY = EXTENSION_SLOTS_QUERY_KEY;
|
|
56541
56672
|
exports.EmptyState = EmptyState;
|
|
56542
56673
|
exports.ErrorBox = ErrorBox;
|
|
56543
56674
|
exports.EventKindGlyph = EventKindGlyph;
|
|
@@ -56780,7 +56911,6 @@ exports.hubWsUrl = hubWsUrl;
|
|
|
56780
56911
|
exports.humanDuration = humanDuration;
|
|
56781
56912
|
exports.humidifierTint = humidifierTint;
|
|
56782
56913
|
exports.initialScrubState = initialScrubState;
|
|
56783
|
-
exports.invalidateExtensionSurfaces = invalidateExtensionSurfaces;
|
|
56784
56914
|
exports.isAbsentProvider = isAbsentProvider;
|
|
56785
56915
|
exports.isAbsentProvider$1 = isAbsentProvider;
|
|
56786
56916
|
exports.isDataTableFilterActive = isDataTableFilterActive;
|
|
@@ -57086,7 +57216,6 @@ exports.useDeviceManagerAdoptionRelease = useDeviceManagerAdoptionRelease;
|
|
|
57086
57216
|
exports.useDeviceManagerAdoptionResync = useDeviceManagerAdoptionResync;
|
|
57087
57217
|
exports.useDeviceManagerAdoptionStartJob = useDeviceManagerAdoptionStartJob;
|
|
57088
57218
|
exports.useDeviceManagerAllocateDeviceId = useDeviceManagerAllocateDeviceId;
|
|
57089
|
-
exports.useDeviceManagerApplyDeviceSettingsPatch = useDeviceManagerApplyDeviceSettingsPatch;
|
|
57090
57219
|
exports.useDeviceManagerApplyInitialMeta = useDeviceManagerApplyInitialMeta;
|
|
57091
57220
|
exports.useDeviceManagerCreateDevice = useDeviceManagerCreateDevice;
|
|
57092
57221
|
exports.useDeviceManagerDisable = useDeviceManagerDisable;
|
|
@@ -57104,10 +57233,8 @@ exports.useDeviceManagerGetConfigSchema = useDeviceManagerGetConfigSchema;
|
|
|
57104
57233
|
exports.useDeviceManagerGetCreationSchema = useDeviceManagerGetCreationSchema;
|
|
57105
57234
|
exports.useDeviceManagerGetDevice = useDeviceManagerGetDevice;
|
|
57106
57235
|
exports.useDeviceManagerGetDeviceAggregate = useDeviceManagerGetDeviceAggregate;
|
|
57107
|
-
exports.useDeviceManagerGetDeviceLiveContribution = useDeviceManagerGetDeviceLiveContribution;
|
|
57108
57236
|
exports.useDeviceManagerGetDeviceLiveInfoAggregate = useDeviceManagerGetDeviceLiveInfoAggregate;
|
|
57109
57237
|
exports.useDeviceManagerGetDeviceSettingsAggregate = useDeviceManagerGetDeviceSettingsAggregate;
|
|
57110
|
-
exports.useDeviceManagerGetDeviceSettingsContribution = useDeviceManagerGetDeviceSettingsContribution;
|
|
57111
57238
|
exports.useDeviceManagerGetDeviceStatusAggregate = useDeviceManagerGetDeviceStatusAggregate;
|
|
57112
57239
|
exports.useDeviceManagerGetDeviceStatusAggregateBatch = useDeviceManagerGetDeviceStatusAggregateBatch;
|
|
57113
57240
|
exports.useDeviceManagerGetLinkedDevices = useDeviceManagerGetLinkedDevices;
|
|
@@ -57203,10 +57330,7 @@ exports.useDeviceStateSlice$1 = useDeviceStateSlice;
|
|
|
57203
57330
|
exports.useDeviceStatusGetStatus = useDeviceStatusGetStatus;
|
|
57204
57331
|
exports.useDeviceWebrtc = useDeviceWebrtc;
|
|
57205
57332
|
exports.useDevices = useDevices;
|
|
57206
|
-
exports.useDoorbellApplyDeviceSettingsPatch = useDoorbellApplyDeviceSettingsPatch;
|
|
57207
57333
|
exports.useDoorbellEvents = useDoorbellEvents;
|
|
57208
|
-
exports.useDoorbellGetDeviceLiveContribution = useDoorbellGetDeviceLiveContribution;
|
|
57209
|
-
exports.useDoorbellGetDeviceSettingsContribution = useDoorbellGetDeviceSettingsContribution;
|
|
57210
57334
|
exports.useDoorbellGetStatus = useDoorbellGetStatus;
|
|
57211
57335
|
exports.useEnumSensorGetStatus = useEnumSensorGetStatus;
|
|
57212
57336
|
exports.useEventEmitterGetStatus = useEventEmitterGetStatus;
|
package/dist/index.js
CHANGED
|
@@ -7104,12 +7104,6 @@ var useDeviceManagerTestField = trpc.deviceManager.testField.useMutation;
|
|
|
7104
7104
|
var useDeviceManagerGetDeviceStatusAggregate = trpc.deviceManager.getDeviceStatusAggregate.useQuery;
|
|
7105
7105
|
/** Generated alias around `trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery`. */
|
|
7106
7106
|
var useDeviceManagerGetDeviceStatusAggregateBatch = trpc.deviceManager.getDeviceStatusAggregateBatch.useQuery;
|
|
7107
|
-
/** Generated alias around `trpc.deviceManager.getDeviceSettingsContribution.useQuery`. */
|
|
7108
|
-
var useDeviceManagerGetDeviceSettingsContribution = trpc.deviceManager.getDeviceSettingsContribution.useQuery;
|
|
7109
|
-
/** Generated alias around `trpc.deviceManager.getDeviceLiveContribution.useQuery`. */
|
|
7110
|
-
var useDeviceManagerGetDeviceLiveContribution = trpc.deviceManager.getDeviceLiveContribution.useQuery;
|
|
7111
|
-
/** Generated alias around `trpc.deviceManager.applyDeviceSettingsPatch.useMutation`. */
|
|
7112
|
-
var useDeviceManagerApplyDeviceSettingsPatch = trpc.deviceManager.applyDeviceSettingsPatch.useMutation;
|
|
7113
7107
|
/** Generated alias around `trpc.deviceOps.getStreamSources.useQuery`. */
|
|
7114
7108
|
var useDeviceOpsGetStreamSources = trpc.deviceOps.getStreamSources.useQuery;
|
|
7115
7109
|
/** Generated alias around `trpc.deviceOps.getConfigEntries.useQuery`. */
|
|
@@ -7164,12 +7158,6 @@ var useDeviceStateSetCapSlice = trpc.deviceState.setCapSlice.useMutation;
|
|
|
7164
7158
|
var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
|
|
7165
7159
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
7166
7160
|
var useDoorbellGetStatus = trpc.doorbell.getStatus.useQuery;
|
|
7167
|
-
/** Generated alias around `trpc.doorbell.getDeviceSettingsContribution.useQuery`. */
|
|
7168
|
-
var useDoorbellGetDeviceSettingsContribution = trpc.doorbell.getDeviceSettingsContribution.useQuery;
|
|
7169
|
-
/** Generated alias around `trpc.doorbell.getDeviceLiveContribution.useQuery`. */
|
|
7170
|
-
var useDoorbellGetDeviceLiveContribution = trpc.doorbell.getDeviceLiveContribution.useQuery;
|
|
7171
|
-
/** Generated alias around `trpc.doorbell.applyDeviceSettingsPatch.useMutation`. */
|
|
7172
|
-
var useDoorbellApplyDeviceSettingsPatch = trpc.doorbell.applyDeviceSettingsPatch.useMutation;
|
|
7173
7161
|
/** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
|
|
7174
7162
|
var useEnumSensorGetStatus = trpc.enumSensor.getStatus.useQuery;
|
|
7175
7163
|
/** Generated alias around `trpc.eventEmitter.getStatus.useQuery`. */
|
|
@@ -12303,8 +12291,8 @@ function selectedDeviceOptions(options, selected) {
|
|
|
12303
12291
|
* `device-select-filter.ts`). No server-computed option list is involved —
|
|
12304
12292
|
* the form field carries only the filter. Value(s) are device ids as strings.
|
|
12305
12293
|
*
|
|
12306
|
-
* The multi variant
|
|
12307
|
-
*
|
|
12294
|
+
* The multi variant is a searchable combobox (removable chips + typeahead
|
|
12295
|
+
* dropdown); the single variant is a native
|
|
12308
12296
|
* select. Both are inline in ui-library (like `node-select`) so any host that
|
|
12309
12297
|
* renders the shared form field gets them without extra registration.
|
|
12310
12298
|
*/
|
|
@@ -20892,16 +20880,6 @@ function ClipsSection({ deviceId }) {
|
|
|
20892
20880
|
});
|
|
20893
20881
|
}
|
|
20894
20882
|
//#endregion
|
|
20895
|
-
//#region src/composites/extensions/extension-invalidation.ts
|
|
20896
|
-
/** tRPC v11 query-key prefix of `deviceManager.getDeviceAggregate`. */
|
|
20897
|
-
var DEVICE_AGGREGATE_QUERY_KEY = [["deviceManager", "getDeviceAggregate"]];
|
|
20898
|
-
/** tRPC v11 query-key prefix of `deviceExtension.listSlots`. */
|
|
20899
|
-
var EXTENSION_SLOTS_QUERY_KEY = [["deviceExtension", "listSlots"]];
|
|
20900
|
-
/** Re-read both surfaces over the linked-devices / doorbell stores. */
|
|
20901
|
-
async function invalidateExtensionSurfaces(client) {
|
|
20902
|
-
await Promise.all([client.invalidateQueries({ queryKey: DEVICE_AGGREGATE_QUERY_KEY }), client.invalidateQueries({ queryKey: EXTENSION_SLOTS_QUERY_KEY })]);
|
|
20903
|
-
}
|
|
20904
|
-
//#endregion
|
|
20905
20883
|
//#region src/composites/extensions/extensions-view-state.ts
|
|
20906
20884
|
/**
|
|
20907
20885
|
* What the Extensions section may CLAIM, from what `listSlots` answered
|
|
@@ -20966,6 +20944,70 @@ function searchCandidates(candidates, draft, query) {
|
|
|
20966
20944
|
function isDirty(saved, draft) {
|
|
20967
20945
|
return saved.length !== draft.length || saved.some((id, i) => draft[i] !== id);
|
|
20968
20946
|
}
|
|
20947
|
+
/**
|
|
20948
|
+
* The tracked-event opt-in a slot's value carries, or `undefined` when it
|
|
20949
|
+
* carries none — every slot but `linked-devices`, and a `linked-devices` row
|
|
20950
|
+
* from a server older than D655. `undefined` is "this owner offers no
|
|
20951
|
+
* opt-in", never "nothing is opted in": the card then shows no toggle rather
|
|
20952
|
+
* than a row of unticked ones it could not save.
|
|
20953
|
+
*/
|
|
20954
|
+
function trackedOptInOf(value) {
|
|
20955
|
+
return value.slot === "linked-devices" ? value.trackedDeviceIds : void 0;
|
|
20956
|
+
}
|
|
20957
|
+
/** Flip one device's tracked-event opt-in. */
|
|
20958
|
+
function toggleTracked(tracked, deviceId) {
|
|
20959
|
+
return tracked.includes(deviceId) ? tracked.filter((id) => id !== deviceId) : [...tracked, deviceId];
|
|
20960
|
+
}
|
|
20961
|
+
/** Whether two opt-ins differ as SETS — the order carries no meaning. */
|
|
20962
|
+
function isTrackedDirty(saved, draft) {
|
|
20963
|
+
return saved.length !== draft.length || saved.some((id) => !draft.includes(id));
|
|
20964
|
+
}
|
|
20965
|
+
/**
|
|
20966
|
+
* One toggle per device the camera links — the old section's set (D655):
|
|
20967
|
+
* the valid picks, then what the owner links by structure (tree children, a
|
|
20968
|
+
* picked container's child — never the container itself, D356), then every
|
|
20969
|
+
* opted-in device that is linked no more, so a stored opt-in is always
|
|
20970
|
+
* visible and can always be removed.
|
|
20971
|
+
*/
|
|
20972
|
+
function trackedOptions(input) {
|
|
20973
|
+
const out = [];
|
|
20974
|
+
const seen = /* @__PURE__ */ new Set();
|
|
20975
|
+
const add = (deviceId, origin) => {
|
|
20976
|
+
if (seen.has(deviceId)) return;
|
|
20977
|
+
seen.add(deviceId);
|
|
20978
|
+
out.push({
|
|
20979
|
+
deviceId,
|
|
20980
|
+
origin
|
|
20981
|
+
});
|
|
20982
|
+
};
|
|
20983
|
+
for (const id of input.picks) if (!input.invalidPicks.includes(id)) add(id, "pick");
|
|
20984
|
+
for (const id of input.implied) add(id, "implied");
|
|
20985
|
+
for (const id of input.tracked) add(id, "not-linked");
|
|
20986
|
+
return out;
|
|
20987
|
+
}
|
|
20988
|
+
/**
|
|
20989
|
+
* The opt-in after one device is removed from the draft picks: its toggle
|
|
20990
|
+
* goes with it, unless the camera still links it by structure.
|
|
20991
|
+
*/
|
|
20992
|
+
function untrackUnpicked(tracked, deviceId, implied) {
|
|
20993
|
+
return implied.includes(deviceId) ? tracked : tracked.filter((id) => id !== deviceId);
|
|
20994
|
+
}
|
|
20995
|
+
/**
|
|
20996
|
+
* The value a Save sends. The opt-in travels only when the owner offered one,
|
|
20997
|
+
* and then WHOLE: it replaces the stored one, and the owner accepts any id it
|
|
20998
|
+
* already stored, so what was read can be sent back unchanged (D655).
|
|
20999
|
+
*/
|
|
21000
|
+
function slotWriteValue(saved, deviceIds, tracked) {
|
|
21001
|
+
if (saved.slot === "linked-devices" && tracked !== void 0) return {
|
|
21002
|
+
slot: "linked-devices",
|
|
21003
|
+
deviceIds: [...deviceIds],
|
|
21004
|
+
trackedDeviceIds: [...tracked]
|
|
21005
|
+
};
|
|
21006
|
+
return {
|
|
21007
|
+
slot: saved.slot,
|
|
21008
|
+
deviceIds: [...deviceIds]
|
|
21009
|
+
};
|
|
21010
|
+
}
|
|
20969
21011
|
//#endregion
|
|
20970
21012
|
//#region src/composites/extensions/AssociationSlotCard.tsx
|
|
20971
21013
|
/**
|
|
@@ -20982,6 +21024,11 @@ function isDirty(saved, draft) {
|
|
|
20982
21024
|
* shown with its reason and never silently dropped from the draft.
|
|
20983
21025
|
* - A gate owned by ANOTHER authority (the doorbell wrapper's binding) is
|
|
20984
21026
|
* shown read-only, naming that authority (D62).
|
|
21027
|
+
* - A slot whose value carries a tracked-event opt-in (`linked-devices`,
|
|
21028
|
+
* D655) gets one toggle per LINKED device — the picks, what the owner links
|
|
21029
|
+
* by structure (`impliedSources`: tree children, never a container, D356)
|
|
21030
|
+
* and any stored opt-in no longer linked, so each can be removed — saved
|
|
21031
|
+
* with the picks, whole.
|
|
20985
21032
|
*/
|
|
20986
21033
|
var HEALTH_LABEL = {
|
|
20987
21034
|
ok: "OK",
|
|
@@ -20996,7 +21043,7 @@ var HEALTH_VARIANT = {
|
|
|
20996
21043
|
unavailable: "warning"
|
|
20997
21044
|
};
|
|
20998
21045
|
/** The saved sources, each with its health — a bad one is shown, never hidden. */
|
|
20999
|
-
function SlotSourceList({ sources }) {
|
|
21046
|
+
function SlotSourceList({ sources, tracked }) {
|
|
21000
21047
|
if (sources.length === 0) return /* @__PURE__ */ jsx("p", {
|
|
21001
21048
|
className: "text-[11px] text-foreground-subtle italic",
|
|
21002
21049
|
children: "No devices picked."
|
|
@@ -21014,6 +21061,10 @@ function SlotSourceList({ sources }) {
|
|
|
21014
21061
|
variant: HEALTH_VARIANT[s.health],
|
|
21015
21062
|
children: HEALTH_LABEL[s.health]
|
|
21016
21063
|
}),
|
|
21064
|
+
tracked?.includes(s.deviceId) === true && /* @__PURE__ */ jsx(Badge, {
|
|
21065
|
+
variant: "info",
|
|
21066
|
+
children: "Tracked events"
|
|
21067
|
+
}),
|
|
21017
21068
|
s.detail !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
21018
21069
|
className: "text-[10px] text-foreground-subtle",
|
|
21019
21070
|
children: s.detail
|
|
@@ -21037,11 +21088,75 @@ function ActivationLine({ row }) {
|
|
|
21037
21088
|
]
|
|
21038
21089
|
});
|
|
21039
21090
|
}
|
|
21091
|
+
/**
|
|
21092
|
+
* What the owner links by structure — tree children, a picked container's
|
|
21093
|
+
* child (D356). Shown, never editable as a pick: removing one is not the
|
|
21094
|
+
* editor's to do.
|
|
21095
|
+
*/
|
|
21096
|
+
function ImpliedSourceList({ sources, tracked }) {
|
|
21097
|
+
if (sources.length === 0) return null;
|
|
21098
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
21099
|
+
className: "flex flex-col gap-1",
|
|
21100
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
21101
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21102
|
+
children: "Always linked (device tree):"
|
|
21103
|
+
}), /* @__PURE__ */ jsx("ul", {
|
|
21104
|
+
"aria-label": "Always linked",
|
|
21105
|
+
className: "flex flex-col gap-1",
|
|
21106
|
+
children: sources.map((s) => /* @__PURE__ */ jsxs("li", {
|
|
21107
|
+
className: "flex flex-wrap items-center gap-2 text-[11px]",
|
|
21108
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
21109
|
+
className: "text-foreground",
|
|
21110
|
+
children: s.name ?? `Device ${s.deviceId}`
|
|
21111
|
+
}), tracked?.includes(s.deviceId) === true && /* @__PURE__ */ jsx(Badge, {
|
|
21112
|
+
variant: "info",
|
|
21113
|
+
children: "Tracked events"
|
|
21114
|
+
})]
|
|
21115
|
+
}, s.deviceId))
|
|
21116
|
+
})]
|
|
21117
|
+
});
|
|
21118
|
+
}
|
|
21119
|
+
var ORIGIN_NOTE = {
|
|
21120
|
+
pick: null,
|
|
21121
|
+
implied: "always linked",
|
|
21122
|
+
"not-linked": "not linked any more — untick to remove"
|
|
21123
|
+
};
|
|
21124
|
+
/** One opt-in toggle per linked device: does it produce tracked events here? */
|
|
21125
|
+
function TrackedToggles({ options, tracked, nameOf, onToggle }) {
|
|
21126
|
+
if (options.length === 0) return null;
|
|
21127
|
+
return /* @__PURE__ */ jsxs("fieldset", {
|
|
21128
|
+
className: "flex flex-col gap-1",
|
|
21129
|
+
children: [/* @__PURE__ */ jsx("legend", {
|
|
21130
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21131
|
+
children: "Produce tracked events on this camera (opt-in):"
|
|
21132
|
+
}), options.map(({ deviceId: id, origin }) => /* @__PURE__ */ jsxs("label", {
|
|
21133
|
+
className: "flex items-center gap-2 text-[11px] text-foreground",
|
|
21134
|
+
children: [
|
|
21135
|
+
/* @__PURE__ */ jsx("input", {
|
|
21136
|
+
type: "checkbox",
|
|
21137
|
+
"aria-label": `Tracked events from ${nameOf(id)}`,
|
|
21138
|
+
checked: tracked.includes(id),
|
|
21139
|
+
onChange: () => onToggle(id)
|
|
21140
|
+
}),
|
|
21141
|
+
nameOf(id),
|
|
21142
|
+
ORIGIN_NOTE[origin] !== null && /* @__PURE__ */ jsxs("span", {
|
|
21143
|
+
className: "text-[10px] text-foreground-subtle",
|
|
21144
|
+
children: ["· ", ORIGIN_NOTE[origin]]
|
|
21145
|
+
})
|
|
21146
|
+
]
|
|
21147
|
+
}, id))]
|
|
21148
|
+
});
|
|
21149
|
+
}
|
|
21040
21150
|
function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
21041
21151
|
const descriptor = EXTENSION_SLOTS[row.slot].descriptor;
|
|
21042
21152
|
const saved = row.value.deviceIds;
|
|
21153
|
+
const savedTracked = trackedOptInOf(row.value);
|
|
21154
|
+
const implied = row.impliedSources ?? [];
|
|
21155
|
+
const impliedIds = implied.map((s) => s.deviceId);
|
|
21156
|
+
const invalidPicks = row.sources.filter((s) => s.health === "unavailable").map((s) => s.deviceId);
|
|
21043
21157
|
const [editing, setEditing] = useState(false);
|
|
21044
21158
|
const [draft, setDraft] = useState(saved);
|
|
21159
|
+
const [draftTracked, setDraftTracked] = useState(savedTracked ?? []);
|
|
21045
21160
|
const [search, setSearch] = useState("");
|
|
21046
21161
|
const [refusal, setRefusal] = useState(null);
|
|
21047
21162
|
const candidatesQuery = useDeviceExtensionListCandidates({
|
|
@@ -21049,11 +21164,15 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21049
21164
|
slotRef: row.slotRef
|
|
21050
21165
|
}, { enabled: editing });
|
|
21051
21166
|
const setSlot = useDeviceExtensionSetSlot();
|
|
21052
|
-
const queryClient = useQueryClient();
|
|
21053
21167
|
const candidates = candidatesQuery.data?.candidates ?? [];
|
|
21054
|
-
const nameOf = (id) => candidates.find((c) => c.deviceId === id)?.name ?? row.sources.find((s) => s.deviceId === id)?.name ?? `Device ${id}`;
|
|
21168
|
+
const nameOf = (id) => candidates.find((c) => c.deviceId === id)?.name ?? row.sources.find((s) => s.deviceId === id)?.name ?? implied.find((s) => s.deviceId === id)?.name ?? `Device ${id}`;
|
|
21169
|
+
const removePick = (id) => {
|
|
21170
|
+
setDraft(togglePick(draft, id, descriptor.cardinality));
|
|
21171
|
+
setDraftTracked(untrackUnpicked(draftTracked, id, impliedIds));
|
|
21172
|
+
};
|
|
21055
21173
|
const startEditing = () => {
|
|
21056
21174
|
setDraft(saved);
|
|
21175
|
+
setDraftTracked(savedTracked ?? []);
|
|
21057
21176
|
setRefusal(null);
|
|
21058
21177
|
setEditing(true);
|
|
21059
21178
|
};
|
|
@@ -21063,13 +21182,9 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21063
21182
|
await setSlot.mutateAsync({
|
|
21064
21183
|
deviceId,
|
|
21065
21184
|
slotRef: row.slotRef,
|
|
21066
|
-
value:
|
|
21067
|
-
slot: row.value.slot,
|
|
21068
|
-
deviceIds: [...draft]
|
|
21069
|
-
}
|
|
21185
|
+
value: slotWriteValue(row.value, draft, savedTracked === void 0 ? void 0 : draftTracked)
|
|
21070
21186
|
});
|
|
21071
21187
|
setEditing(false);
|
|
21072
|
-
await invalidateExtensionSurfaces(queryClient);
|
|
21073
21188
|
onSaved();
|
|
21074
21189
|
} catch (err) {
|
|
21075
21190
|
setRefusal(err instanceof Error ? err.message : String(err));
|
|
@@ -21106,7 +21221,14 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21106
21221
|
})]
|
|
21107
21222
|
}),
|
|
21108
21223
|
/* @__PURE__ */ jsx(ActivationLine, { row }),
|
|
21109
|
-
!editing && /* @__PURE__ */ jsx(SlotSourceList, {
|
|
21224
|
+
!editing && /* @__PURE__ */ jsx(SlotSourceList, {
|
|
21225
|
+
sources: row.sources,
|
|
21226
|
+
tracked: savedTracked
|
|
21227
|
+
}),
|
|
21228
|
+
!editing && /* @__PURE__ */ jsx(ImpliedSourceList, {
|
|
21229
|
+
sources: implied,
|
|
21230
|
+
tracked: savedTracked
|
|
21231
|
+
}),
|
|
21110
21232
|
editing && /* @__PURE__ */ jsxs("div", {
|
|
21111
21233
|
className: "flex flex-col gap-2",
|
|
21112
21234
|
children: [
|
|
@@ -21116,7 +21238,7 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21116
21238
|
children: draft.map((id) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("button", {
|
|
21117
21239
|
type: "button",
|
|
21118
21240
|
"aria-label": `Remove ${nameOf(id)}`,
|
|
21119
|
-
onClick: () =>
|
|
21241
|
+
onClick: () => removePick(id),
|
|
21120
21242
|
className: "inline-flex items-center gap-1 rounded-full bg-primary/15 px-2 py-0.5 text-[11px] text-foreground",
|
|
21121
21243
|
children: [nameOf(id), /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })]
|
|
21122
21244
|
}) }, id))
|
|
@@ -21186,6 +21308,17 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21186
21308
|
]
|
|
21187
21309
|
}) }, c.deviceId))
|
|
21188
21310
|
}),
|
|
21311
|
+
savedTracked !== void 0 && /* @__PURE__ */ jsx(TrackedToggles, {
|
|
21312
|
+
options: trackedOptions({
|
|
21313
|
+
picks: draft,
|
|
21314
|
+
invalidPicks,
|
|
21315
|
+
implied: impliedIds,
|
|
21316
|
+
tracked: draftTracked
|
|
21317
|
+
}),
|
|
21318
|
+
tracked: draftTracked,
|
|
21319
|
+
nameOf,
|
|
21320
|
+
onToggle: (id) => setDraftTracked(toggleTracked(draftTracked, id))
|
|
21321
|
+
}),
|
|
21189
21322
|
refusal !== null && /* @__PURE__ */ jsxs("p", {
|
|
21190
21323
|
role: "alert",
|
|
21191
21324
|
className: "text-[11px] text-danger break-words",
|
|
@@ -21200,7 +21333,7 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21200
21333
|
children: "Cancel"
|
|
21201
21334
|
}), /* @__PURE__ */ jsx(Button, {
|
|
21202
21335
|
size: "sm",
|
|
21203
|
-
disabled: !isDirty(saved, draft) || setSlot.isPending,
|
|
21336
|
+
disabled: !(isDirty(saved, draft) || savedTracked !== void 0 && isTrackedDirty(savedTracked, draftTracked)) || setSlot.isPending,
|
|
21204
21337
|
onClick: () => void save(),
|
|
21205
21338
|
children: "Save"
|
|
21206
21339
|
})]
|
|
@@ -21222,11 +21355,11 @@ function AssociationSlotCard({ deviceId, row, onSaved }) {
|
|
|
21222
21355
|
* section (D14). The panel STORES NOTHING: every card is one row of
|
|
21223
21356
|
* `device-extension.listSlots`, read by the slot's owner from the store it
|
|
21224
21357
|
* already has, and every save is `setSlot`, written by that owner through its
|
|
21225
|
-
* existing path.
|
|
21226
|
-
*
|
|
21227
|
-
*
|
|
21358
|
+
* existing path. It is the only editor of what it shows: the hand-written
|
|
21359
|
+
* "Linked devices" and "Virtual doorbell" sections it replaced were retired
|
|
21360
|
+
* once the live read matched them on every measured camera (D655).
|
|
21228
21361
|
*
|
|
21229
|
-
*
|
|
21362
|
+
* It renders ASSOCIATION cards only (a device multiselect). A `graft`
|
|
21230
21363
|
* slot (slice 2) gets a read-only card here until its editor exists.
|
|
21231
21364
|
*
|
|
21232
21365
|
* Absence is claimed only from an answer (D315): pending, failed and empty
|
|
@@ -56406,4 +56539,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-vfWTm6qv.js").t
|
|
|
56406
56539
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
56407
56540
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DMkchqO1.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
56408
56541
|
//#endregion
|
|
56409
|
-
export { AddonGlobalSettingsForm, AdminLinkQuickAction, 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_AGGREGATE_QUERY_KEY, 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, DataTableFilterBar, 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, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EXTENSION_SLOTS_QUERY_KEY, 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, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, 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, StreamDebugOverlay, 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, MicOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, EyeOff as c, childEntityId, childListName, classifyCapability, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, dataTableFacets, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDataTableRows, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, freezeVerdict, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, invalidateExtensionSurfaces, isAbsentProvider, isDataTableFilterActive, isFieldVisible, Camera as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, ImageOff as o, openTopLayer, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resetHubMountForTests, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, routerBasename, Grid2x2 as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, toggleDataTableFacet, trpc, createLucideIcon as u, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, 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, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, 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, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, 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, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentSummaries, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, 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, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, 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 };
|
|
56542
|
+
export { AddonGlobalSettingsForm, AdminLinkQuickAction, 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, DataTableFilterBar, 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, EMPTY_DATA_TABLE_FILTER, 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, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NAVIGATION_DRIVE_INTERVAL_MS, NavigationPanel, NetworkLinkBadge, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, 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, StreamDebugOverlay, 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, MicOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, EyeOff as c, childEntityId, childListName, classifyCapability, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, dataTableFacets, defaultTheme, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDataTableRows, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, freezeVerdict, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isDataTableFilterActive, isFieldVisible, Camera as l, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, mountPath, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, ImageOff as o, openTopLayer, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resetHubMountForTests, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, routerBasename, Grid2x2 as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, toStationaryOverlayBox, toggleDataTableFacet, trpc, createLucideIcon as u, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, 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, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, 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, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetSummary, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentSummaries, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListSummaries, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, 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, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, 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,9 +0,0 @@
|
|
|
1
|
-
import { QueryClient } from '@tanstack/react-query';
|
|
2
|
-
/** tRPC v11 query-key prefix of `deviceManager.getDeviceAggregate`. */
|
|
3
|
-
export declare const DEVICE_AGGREGATE_QUERY_KEY: readonly [readonly ["deviceManager", "getDeviceAggregate"]];
|
|
4
|
-
/** tRPC v11 query-key prefix of `deviceExtension.listSlots`. */
|
|
5
|
-
export declare const EXTENSION_SLOTS_QUERY_KEY: readonly [readonly ["deviceExtension", "listSlots"]];
|
|
6
|
-
/** The one method of a query client these helpers use. */
|
|
7
|
-
export type QueryInvalidator = Pick<QueryClient, 'invalidateQueries'>;
|
|
8
|
-
/** Re-read both surfaces over the linked-devices / doorbell stores. */
|
|
9
|
-
export declare function invalidateExtensionSurfaces(client: QueryInvalidator): Promise<void>;
|