@camstack/ui-library 1.2.25 → 1.2.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composites/device-controls/index.d.ts +1 -1
- package/dist/composites/device-controls/panel-controls.d.ts +1 -0
- package/dist/composites/device-controls/script-automation-controls.d.ts +14 -0
- package/dist/generated/system-hooks.d.ts +4 -0
- package/dist/index.cjs +316 -0
- package/dist/index.js +311 -1
- package/package.json +1 -1
|
@@ -27,7 +27,7 @@ export { ImageInlineControl, ImageHeroCard, type ImageHeroCardProps, } from './i
|
|
|
27
27
|
export { DummyInline, DummyHeroCard } from './dummy-hero-card';
|
|
28
28
|
export { SensorInlineControl } from './sensor-inline-control';
|
|
29
29
|
export { SensorHeroCard } from './sensor-hero-card';
|
|
30
|
-
export { SwitchInlineControl, SwitchHeroCard, LockInlineControl, LockHeroCard, LightInlineControl, LightHeroCard, FanInlineControl, FanHeroCard, ThermostatInlineControl, ThermostatHeroCard, MediaPlayerInlineControl, MediaPlayerHeroCard, AlarmPanelInlineControl, AlarmHeroCard, ControlInlineControl, ControlHeroCard, } from './panel-controls';
|
|
30
|
+
export { SwitchInlineControl, SwitchHeroCard, LockInlineControl, LockHeroCard, LightInlineControl, LightHeroCard, FanInlineControl, FanHeroCard, ThermostatInlineControl, ThermostatHeroCard, MediaPlayerInlineControl, MediaPlayerHeroCard, AlarmPanelInlineControl, AlarmHeroCard, ScriptInlineControl, ScriptHeroCard, AutomationInlineControl, AutomationHeroCard, ControlInlineControl, ControlHeroCard, } from './panel-controls';
|
|
31
31
|
export { resolvePrimaryChild, PRIORITY, type ChildRef } from './primary-child';
|
|
32
32
|
export { resolveContainerPrimary, overrideEntityIdFromLink, containerChildToRef, childEntityId, type ContainerChild, } from './container-primary';
|
|
33
33
|
export { ContainerPrimaryHero, type ContainerPrimaryHeroProps, type ContainerHeroChild, } from './container-primary-hero';
|
|
@@ -7,6 +7,7 @@ export { FanHeroCard } from './fan-hero-card';
|
|
|
7
7
|
export { SwitchHeroCard } from './switch-hero-card';
|
|
8
8
|
export { MediaPlayerHeroCard } from './media-player-hero-card';
|
|
9
9
|
export { AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl } from './alarm-hero-card';
|
|
10
|
+
export { AutomationHeroCard, AutomationInlineControl, ScriptHeroCard, ScriptInlineControl, } from './script-automation-controls';
|
|
10
11
|
export declare function SwitchInlineControl({ trpc, deviceId, features, optimistic, }: DeviceControlProps): ReactNode;
|
|
11
12
|
export declare function LockInlineControl({ trpc, deviceId, features, optimistic, }: DeviceControlProps): ReactNode;
|
|
12
13
|
export declare function LightInlineControl({ trpc, deviceId, features, optimistic, }: DeviceControlProps): ReactNode;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { DeviceControlProps } from './control-registry';
|
|
3
|
+
/**
|
|
4
|
+
* "3 min ago", or nothing at all.
|
|
5
|
+
*
|
|
6
|
+
* **0 means NEVER RUN** on both status schemas, and it must not render as the
|
|
7
|
+
* epoch. "1 Jan 1970" next to a script is the kind of detail that sends an
|
|
8
|
+
* operator looking for a clock problem that does not exist.
|
|
9
|
+
*/
|
|
10
|
+
export declare function lastRunLabel(atMs: number, nowMs: number): string | null;
|
|
11
|
+
export declare function ScriptInlineControl({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
12
|
+
export declare function ScriptHeroCard({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
13
|
+
export declare function AutomationInlineControl({ trpc, deviceId, optimistic, }: DeviceControlProps): ReactNode;
|
|
14
|
+
export declare function AutomationHeroCard({ trpc, deviceId, optimistic }: DeviceControlProps): ReactNode;
|
|
@@ -973,6 +973,10 @@ export declare const useNotificationRulesListSnoozes: typeof trpc.notificationRu
|
|
|
973
973
|
export declare const useNotificationRulesCreateSnooze: typeof trpc.notificationRules.createSnooze.useMutation;
|
|
974
974
|
/** Generated alias around `trpc.notificationRules.cancelSnooze.useMutation`. */
|
|
975
975
|
export declare const useNotificationRulesCancelSnooze: typeof trpc.notificationRules.cancelSnooze.useMutation;
|
|
976
|
+
/** Generated alias around `trpc.notificationRules.getAlarmConfig.useQuery`. */
|
|
977
|
+
export declare const useNotificationRulesGetAlarmConfig: typeof trpc.notificationRules.getAlarmConfig.useQuery;
|
|
978
|
+
/** Generated alias around `trpc.notificationRules.setAlarmConfig.useMutation`. */
|
|
979
|
+
export declare const useNotificationRulesSetAlarmConfig: typeof trpc.notificationRules.setAlarmConfig.useMutation;
|
|
976
980
|
/** Generated alias around `trpc.notifier.send.useMutation`. */
|
|
977
981
|
export declare const useNotifierSend: typeof trpc.notifier.send.useMutation;
|
|
978
982
|
/** Generated alias around `trpc.notifier.cancel.useMutation`. */
|
package/dist/index.cjs
CHANGED
|
@@ -9082,6 +9082,25 @@ var CircleQuestionMark = createLucideIcon("circle-question-mark", [
|
|
|
9082
9082
|
* This source code is licensed under the ISC license.
|
|
9083
9083
|
* See the LICENSE file in the root directory of this source tree.
|
|
9084
9084
|
*/
|
|
9085
|
+
var CircleStop = createLucideIcon("circle-stop", [["circle", {
|
|
9086
|
+
cx: "12",
|
|
9087
|
+
cy: "12",
|
|
9088
|
+
r: "10",
|
|
9089
|
+
key: "1mglay"
|
|
9090
|
+
}], ["rect", {
|
|
9091
|
+
x: "9",
|
|
9092
|
+
y: "9",
|
|
9093
|
+
width: "6",
|
|
9094
|
+
height: "6",
|
|
9095
|
+
rx: "1",
|
|
9096
|
+
key: "1ssd4o"
|
|
9097
|
+
}]]);
|
|
9098
|
+
/**
|
|
9099
|
+
* @license lucide-react v0.576.0 - ISC
|
|
9100
|
+
*
|
|
9101
|
+
* This source code is licensed under the ISC license.
|
|
9102
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
9103
|
+
*/
|
|
9085
9104
|
var CircleX = createLucideIcon("circle-x", [
|
|
9086
9105
|
["circle", {
|
|
9087
9106
|
cx: "12",
|
|
@@ -19095,6 +19114,10 @@ var useNotificationRulesListSnoozes = trpc.notificationRules.listSnoozes.useQuer
|
|
|
19095
19114
|
var useNotificationRulesCreateSnooze = trpc.notificationRules.createSnooze.useMutation;
|
|
19096
19115
|
/** Generated alias around `trpc.notificationRules.cancelSnooze.useMutation`. */
|
|
19097
19116
|
var useNotificationRulesCancelSnooze = trpc.notificationRules.cancelSnooze.useMutation;
|
|
19117
|
+
/** Generated alias around `trpc.notificationRules.getAlarmConfig.useQuery`. */
|
|
19118
|
+
var useNotificationRulesGetAlarmConfig = trpc.notificationRules.getAlarmConfig.useQuery;
|
|
19119
|
+
/** Generated alias around `trpc.notificationRules.setAlarmConfig.useMutation`. */
|
|
19120
|
+
var useNotificationRulesSetAlarmConfig = trpc.notificationRules.setAlarmConfig.useMutation;
|
|
19098
19121
|
/** Generated alias around `trpc.notifier.send.useMutation`. */
|
|
19099
19122
|
var useNotifierSend = trpc.notifier.send.useMutation;
|
|
19100
19123
|
/** Generated alias around `trpc.notifier.cancel.useMutation`. */
|
|
@@ -26958,6 +26981,285 @@ function AlarmHeroCard({ trpc, deviceId, optimistic }) {
|
|
|
26958
26981
|
});
|
|
26959
26982
|
}
|
|
26960
26983
|
//#endregion
|
|
26984
|
+
//#region src/composites/device-controls/script-automation-controls.tsx
|
|
26985
|
+
/**
|
|
26986
|
+
* "3 min ago", or nothing at all.
|
|
26987
|
+
*
|
|
26988
|
+
* **0 means NEVER RUN** on both status schemas, and it must not render as the
|
|
26989
|
+
* epoch. "1 Jan 1970" next to a script is the kind of detail that sends an
|
|
26990
|
+
* operator looking for a clock problem that does not exist.
|
|
26991
|
+
*/
|
|
26992
|
+
function lastRunLabel(atMs, nowMs) {
|
|
26993
|
+
if (atMs <= 0) return null;
|
|
26994
|
+
const deltaSec = Math.max(0, Math.round((nowMs - atMs) / 1e3));
|
|
26995
|
+
if (deltaSec < 60) return "just now";
|
|
26996
|
+
if (deltaSec < 3600) return `${Math.floor(deltaSec / 60)} min ago`;
|
|
26997
|
+
if (deltaSec < 86400) return `${Math.floor(deltaSec / 3600)} h ago`;
|
|
26998
|
+
return new Date(atMs).toLocaleDateString();
|
|
26999
|
+
}
|
|
27000
|
+
function LastRun({ atMs, neverLabel }) {
|
|
27001
|
+
const label = lastRunLabel(atMs, Date.now());
|
|
27002
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27003
|
+
className: "text-xs text-foreground-subtle",
|
|
27004
|
+
"data-testid": "last-run",
|
|
27005
|
+
children: label === null ? neverLabel : label
|
|
27006
|
+
});
|
|
27007
|
+
}
|
|
27008
|
+
/** Rendered ONLY when a message exists — see the file docblock. */
|
|
27009
|
+
function LastError({ error }) {
|
|
27010
|
+
if (error === null || error === "") return null;
|
|
27011
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
27012
|
+
className: "inline-flex items-center gap-1 text-xs text-danger",
|
|
27013
|
+
title: error,
|
|
27014
|
+
"data-testid": "last-error",
|
|
27015
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(TriangleAlert, {
|
|
27016
|
+
className: "h-3 w-3 shrink-0",
|
|
27017
|
+
"aria-hidden": "true"
|
|
27018
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27019
|
+
className: "truncate",
|
|
27020
|
+
children: error
|
|
27021
|
+
})]
|
|
27022
|
+
});
|
|
27023
|
+
}
|
|
27024
|
+
/**
|
|
27025
|
+
* Subscribes to `script-runner` ONCE, so the hero and the inline control never
|
|
27026
|
+
* double-subscribe. Mirrors `useAlarmControl`.
|
|
27027
|
+
*/
|
|
27028
|
+
function useScriptControl(trpc, deviceId, optimistic) {
|
|
27029
|
+
const { cap, slice, available } = useDeviceCapability({
|
|
27030
|
+
trpc,
|
|
27031
|
+
deviceId,
|
|
27032
|
+
cap: (d) => d.scriptRunner,
|
|
27033
|
+
slice: (d) => d.state.scriptRunner
|
|
27034
|
+
});
|
|
27035
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
27036
|
+
const busy = !available;
|
|
27037
|
+
const running = display?.isRunning === true;
|
|
27038
|
+
return {
|
|
27039
|
+
display,
|
|
27040
|
+
capPresent: cap !== void 0,
|
|
27041
|
+
busy,
|
|
27042
|
+
running,
|
|
27043
|
+
run: () => {
|
|
27044
|
+
if (cap === void 0 || busy || running) return;
|
|
27045
|
+
applyOptimistic({ isRunning: true });
|
|
27046
|
+
cap.run({});
|
|
27047
|
+
},
|
|
27048
|
+
stop: () => {
|
|
27049
|
+
if (cap === void 0 || busy || !running) return;
|
|
27050
|
+
applyOptimistic({ isRunning: false });
|
|
27051
|
+
cap.stop({});
|
|
27052
|
+
}
|
|
27053
|
+
};
|
|
27054
|
+
}
|
|
27055
|
+
function RunButton({ running, busy, large, onRun, onStop }) {
|
|
27056
|
+
const label = running ? "Stop" : "Run";
|
|
27057
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
27058
|
+
type: "button",
|
|
27059
|
+
"aria-label": label,
|
|
27060
|
+
title: label,
|
|
27061
|
+
disabled: busy,
|
|
27062
|
+
"data-testid": "script-run",
|
|
27063
|
+
"data-running": running ? "true" : "false",
|
|
27064
|
+
onClick: (e) => {
|
|
27065
|
+
e.stopPropagation();
|
|
27066
|
+
if (running) onStop();
|
|
27067
|
+
else onRun();
|
|
27068
|
+
},
|
|
27069
|
+
className: cn("inline-flex items-center gap-1 rounded transition-colors", large ? "h-10 px-4 text-sm" : "h-5 px-1.5 text-xs", running ? "bg-danger text-danger-foreground hover:bg-danger/90" : "bg-primary text-primary-foreground hover:bg-primary/90", busy && "cursor-not-allowed opacity-40"),
|
|
27070
|
+
children: [running ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CircleStop, {
|
|
27071
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27072
|
+
"aria-hidden": "true"
|
|
27073
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Play, {
|
|
27074
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27075
|
+
"aria-hidden": "true"
|
|
27076
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: label })]
|
|
27077
|
+
});
|
|
27078
|
+
}
|
|
27079
|
+
function ScriptInlineControl({ trpc, deviceId, optimistic }) {
|
|
27080
|
+
const { display, capPresent, busy, running, run, stop } = useScriptControl(trpc, deviceId, optimistic);
|
|
27081
|
+
if (!capPresent) return null;
|
|
27082
|
+
if (display === void 0) return null;
|
|
27083
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27084
|
+
className: "flex min-w-0 items-center gap-2",
|
|
27085
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RunButton, {
|
|
27086
|
+
running,
|
|
27087
|
+
busy,
|
|
27088
|
+
large: false,
|
|
27089
|
+
onRun: run,
|
|
27090
|
+
onStop: stop
|
|
27091
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LastRun, {
|
|
27092
|
+
atMs: display.lastRunAt,
|
|
27093
|
+
neverLabel: "never run"
|
|
27094
|
+
})]
|
|
27095
|
+
});
|
|
27096
|
+
}
|
|
27097
|
+
function ScriptHeroCard({ trpc, deviceId, optimistic }) {
|
|
27098
|
+
const { display, capPresent, busy, running, run, stop } = useScriptControl(trpc, deviceId, optimistic);
|
|
27099
|
+
if (!capPresent) return null;
|
|
27100
|
+
if (display === void 0) return null;
|
|
27101
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27102
|
+
className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-6",
|
|
27103
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27104
|
+
className: "flex flex-col items-center gap-2",
|
|
27105
|
+
children: [
|
|
27106
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
27107
|
+
"data-testid": "script-state",
|
|
27108
|
+
"data-running": running ? "true" : "false",
|
|
27109
|
+
className: cn("flex h-16 w-16 items-center justify-center rounded-full border-2", running ? "border-primary text-primary animate-pulse" : "border-border text-foreground-subtle"),
|
|
27110
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Play, {
|
|
27111
|
+
className: "h-8 w-8",
|
|
27112
|
+
"aria-hidden": "true"
|
|
27113
|
+
})
|
|
27114
|
+
}),
|
|
27115
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27116
|
+
className: "text-sm font-medium",
|
|
27117
|
+
children: running ? "Running" : "Idle"
|
|
27118
|
+
}),
|
|
27119
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LastRun, {
|
|
27120
|
+
atMs: display.lastRunAt,
|
|
27121
|
+
neverLabel: "never run"
|
|
27122
|
+
}),
|
|
27123
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LastError, { error: display.lastError })
|
|
27124
|
+
]
|
|
27125
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
27126
|
+
className: "flex justify-center",
|
|
27127
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RunButton, {
|
|
27128
|
+
running,
|
|
27129
|
+
busy,
|
|
27130
|
+
large: true,
|
|
27131
|
+
onRun: run,
|
|
27132
|
+
onStop: stop
|
|
27133
|
+
})
|
|
27134
|
+
})]
|
|
27135
|
+
});
|
|
27136
|
+
}
|
|
27137
|
+
function useAutomationControl(trpc, deviceId, optimistic) {
|
|
27138
|
+
const { cap, slice, available } = useDeviceCapability({
|
|
27139
|
+
trpc,
|
|
27140
|
+
deviceId,
|
|
27141
|
+
cap: (d) => d.automationControl,
|
|
27142
|
+
slice: (d) => d.state.automationControl
|
|
27143
|
+
});
|
|
27144
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
27145
|
+
const busy = !available;
|
|
27146
|
+
return {
|
|
27147
|
+
display,
|
|
27148
|
+
capPresent: cap !== void 0,
|
|
27149
|
+
busy,
|
|
27150
|
+
setEnabled: (next) => {
|
|
27151
|
+
if (cap === void 0 || busy) return;
|
|
27152
|
+
applyOptimistic({ enabled: next });
|
|
27153
|
+
if (next) cap.enable({});
|
|
27154
|
+
else cap.disable({});
|
|
27155
|
+
},
|
|
27156
|
+
trigger: () => {
|
|
27157
|
+
if (cap === void 0 || busy) return;
|
|
27158
|
+
cap.trigger({});
|
|
27159
|
+
}
|
|
27160
|
+
};
|
|
27161
|
+
}
|
|
27162
|
+
function EnabledPill({ enabled, busy, onToggle }) {
|
|
27163
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
27164
|
+
type: "button",
|
|
27165
|
+
role: "switch",
|
|
27166
|
+
"aria-checked": enabled,
|
|
27167
|
+
"aria-label": "Automation enabled",
|
|
27168
|
+
disabled: busy,
|
|
27169
|
+
"data-testid": "automation-enabled",
|
|
27170
|
+
onClick: (e) => {
|
|
27171
|
+
e.stopPropagation();
|
|
27172
|
+
onToggle(!enabled);
|
|
27173
|
+
},
|
|
27174
|
+
className: cn("inline-flex shrink-0 items-center gap-1 rounded-md border px-1.5 py-0.5", "text-[11px] font-medium whitespace-nowrap transition-colors", enabled ? "border-success/40 bg-success/10 text-success" : "border-border bg-surface-subtle text-foreground-subtle", busy && "cursor-not-allowed opacity-40"),
|
|
27175
|
+
children: enabled ? "Enabled" : "Disabled"
|
|
27176
|
+
});
|
|
27177
|
+
}
|
|
27178
|
+
/**
|
|
27179
|
+
* Always available, even while the automation is DISABLED.
|
|
27180
|
+
*
|
|
27181
|
+
* That is the cap's contract, not an oversight: a disabled automation ignores
|
|
27182
|
+
* its trigger block but a manual `trigger` still runs it, which is exactly how
|
|
27183
|
+
* an operator tests one before switching it on.
|
|
27184
|
+
*/
|
|
27185
|
+
function TriggerButton({ busy, large, onTrigger }) {
|
|
27186
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
27187
|
+
type: "button",
|
|
27188
|
+
"aria-label": "Trigger",
|
|
27189
|
+
title: "Run this automation now",
|
|
27190
|
+
disabled: busy,
|
|
27191
|
+
"data-testid": "automation-trigger",
|
|
27192
|
+
onClick: (e) => {
|
|
27193
|
+
e.stopPropagation();
|
|
27194
|
+
onTrigger();
|
|
27195
|
+
},
|
|
27196
|
+
className: cn("inline-flex items-center gap-1 rounded transition-colors", large ? "h-10 px-4 text-sm" : "h-5 px-1.5 text-xs", "bg-primary text-primary-foreground hover:bg-primary/90", busy && "cursor-not-allowed opacity-40"),
|
|
27197
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Zap, {
|
|
27198
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27199
|
+
"aria-hidden": "true"
|
|
27200
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Trigger" })]
|
|
27201
|
+
});
|
|
27202
|
+
}
|
|
27203
|
+
function AutomationInlineControl({ trpc, deviceId, optimistic }) {
|
|
27204
|
+
const { display, capPresent, busy, setEnabled, trigger } = useAutomationControl(trpc, deviceId, optimistic);
|
|
27205
|
+
if (!capPresent) return null;
|
|
27206
|
+
if (display === void 0) return null;
|
|
27207
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27208
|
+
className: "flex min-w-0 items-center gap-2",
|
|
27209
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(EnabledPill, {
|
|
27210
|
+
enabled: display.enabled,
|
|
27211
|
+
busy,
|
|
27212
|
+
onToggle: setEnabled
|
|
27213
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TriggerButton, {
|
|
27214
|
+
busy,
|
|
27215
|
+
large: false,
|
|
27216
|
+
onTrigger: trigger
|
|
27217
|
+
})]
|
|
27218
|
+
});
|
|
27219
|
+
}
|
|
27220
|
+
function AutomationHeroCard({ trpc, deviceId, optimistic }) {
|
|
27221
|
+
const { display, capPresent, busy, setEnabled, trigger } = useAutomationControl(trpc, deviceId, optimistic);
|
|
27222
|
+
if (!capPresent) return null;
|
|
27223
|
+
if (display === void 0) return null;
|
|
27224
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27225
|
+
className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-6",
|
|
27226
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27227
|
+
className: "flex flex-col items-center gap-2",
|
|
27228
|
+
children: [
|
|
27229
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
27230
|
+
"data-testid": "automation-state",
|
|
27231
|
+
"data-enabled": display.enabled ? "true" : "false",
|
|
27232
|
+
className: cn("flex h-16 w-16 items-center justify-center rounded-full border-2", display.enabled ? "border-success text-success" : "border-border text-foreground-subtle"),
|
|
27233
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Zap, {
|
|
27234
|
+
className: "h-8 w-8",
|
|
27235
|
+
"aria-hidden": "true"
|
|
27236
|
+
})
|
|
27237
|
+
}),
|
|
27238
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
27239
|
+
className: "text-sm font-medium",
|
|
27240
|
+
children: display.enabled ? "Enabled" : "Disabled"
|
|
27241
|
+
}),
|
|
27242
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LastRun, {
|
|
27243
|
+
atMs: display.lastTriggeredAt,
|
|
27244
|
+
neverLabel: "never triggered"
|
|
27245
|
+
}),
|
|
27246
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(LastError, { error: display.lastError })
|
|
27247
|
+
]
|
|
27248
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
27249
|
+
className: "flex items-center justify-center gap-3",
|
|
27250
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(EnabledPill, {
|
|
27251
|
+
enabled: display.enabled,
|
|
27252
|
+
busy,
|
|
27253
|
+
onToggle: setEnabled
|
|
27254
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TriggerButton, {
|
|
27255
|
+
busy,
|
|
27256
|
+
large: true,
|
|
27257
|
+
onTrigger: trigger
|
|
27258
|
+
})]
|
|
27259
|
+
})]
|
|
27260
|
+
});
|
|
27261
|
+
}
|
|
27262
|
+
//#endregion
|
|
26961
27263
|
//#region src/composites/device-controls/panel-controls.tsx
|
|
26962
27264
|
/** Matches CoverHeroCard's outer container — real design tokens only. */
|
|
26963
27265
|
function HeroShell({ children }) {
|
|
@@ -27233,6 +27535,14 @@ var CONTROL_KIND_COMPONENTS = {
|
|
|
27233
27535
|
InlineControl: PetFeederInlineControl,
|
|
27234
27536
|
HeroCard: PetFeederHeroCard
|
|
27235
27537
|
},
|
|
27538
|
+
script: {
|
|
27539
|
+
InlineControl: ScriptInlineControl,
|
|
27540
|
+
HeroCard: ScriptHeroCard
|
|
27541
|
+
},
|
|
27542
|
+
automation: {
|
|
27543
|
+
InlineControl: AutomationInlineControl,
|
|
27544
|
+
HeroCard: AutomationHeroCard
|
|
27545
|
+
},
|
|
27236
27546
|
dummy: {
|
|
27237
27547
|
InlineControl: DummyInline,
|
|
27238
27548
|
HeroCard: DummyHeroCard
|
|
@@ -47539,6 +47849,8 @@ exports.ArcKnob = ArcKnob;
|
|
|
47539
47849
|
exports.AudioClassificationList = AudioClassificationList;
|
|
47540
47850
|
exports.AudioLevelWaveform = AudioLevelWaveform;
|
|
47541
47851
|
exports.AudioWaveform = AudioWaveform;
|
|
47852
|
+
exports.AutomationHeroCard = AutomationHeroCard;
|
|
47853
|
+
exports.AutomationInlineControl = AutomationInlineControl;
|
|
47542
47854
|
exports.AutotrackSection = AutotrackSection;
|
|
47543
47855
|
exports.BTN_COMPACT = BTN_COMPACT;
|
|
47544
47856
|
exports.BTN_COMPACT_DANGER = BTN_COMPACT_DANGER;
|
|
@@ -47725,6 +48037,8 @@ exports.SPLIT_PANEL_SIDE = SPLIT_PANEL_SIDE;
|
|
|
47725
48037
|
exports.STACK_GAP = STACK_GAP;
|
|
47726
48038
|
exports.STATE_COLOR = STATE_COLOR;
|
|
47727
48039
|
exports.ScopePicker = ScopePicker;
|
|
48040
|
+
exports.ScriptHeroCard = ScriptHeroCard;
|
|
48041
|
+
exports.ScriptInlineControl = ScriptInlineControl;
|
|
47728
48042
|
exports.ScrollArea = ScrollArea;
|
|
47729
48043
|
exports.Select = Select;
|
|
47730
48044
|
exports.SemanticBadge = SemanticBadge;
|
|
@@ -48375,11 +48689,13 @@ exports.useNotificationRulesCancelSnooze = useNotificationRulesCancelSnooze;
|
|
|
48375
48689
|
exports.useNotificationRulesCreateRule = useNotificationRulesCreateRule;
|
|
48376
48690
|
exports.useNotificationRulesCreateSnooze = useNotificationRulesCreateSnooze;
|
|
48377
48691
|
exports.useNotificationRulesDeleteRule = useNotificationRulesDeleteRule;
|
|
48692
|
+
exports.useNotificationRulesGetAlarmConfig = useNotificationRulesGetAlarmConfig;
|
|
48378
48693
|
exports.useNotificationRulesGetConditionCatalog = useNotificationRulesGetConditionCatalog;
|
|
48379
48694
|
exports.useNotificationRulesGetHistory = useNotificationRulesGetHistory;
|
|
48380
48695
|
exports.useNotificationRulesGetRule = useNotificationRulesGetRule;
|
|
48381
48696
|
exports.useNotificationRulesListRules = useNotificationRulesListRules;
|
|
48382
48697
|
exports.useNotificationRulesListSnoozes = useNotificationRulesListSnoozes;
|
|
48698
|
+
exports.useNotificationRulesSetAlarmConfig = useNotificationRulesSetAlarmConfig;
|
|
48383
48699
|
exports.useNotificationRulesSetRuleEnabled = useNotificationRulesSetRuleEnabled;
|
|
48384
48700
|
exports.useNotificationRulesTestRule = useNotificationRulesTestRule;
|
|
48385
48701
|
exports.useNotificationRulesUpdateRule = useNotificationRulesUpdateRule;
|
package/dist/index.js
CHANGED
|
@@ -9058,6 +9058,25 @@ var CircleQuestionMark = createLucideIcon("circle-question-mark", [
|
|
|
9058
9058
|
* This source code is licensed under the ISC license.
|
|
9059
9059
|
* See the LICENSE file in the root directory of this source tree.
|
|
9060
9060
|
*/
|
|
9061
|
+
var CircleStop = createLucideIcon("circle-stop", [["circle", {
|
|
9062
|
+
cx: "12",
|
|
9063
|
+
cy: "12",
|
|
9064
|
+
r: "10",
|
|
9065
|
+
key: "1mglay"
|
|
9066
|
+
}], ["rect", {
|
|
9067
|
+
x: "9",
|
|
9068
|
+
y: "9",
|
|
9069
|
+
width: "6",
|
|
9070
|
+
height: "6",
|
|
9071
|
+
rx: "1",
|
|
9072
|
+
key: "1ssd4o"
|
|
9073
|
+
}]]);
|
|
9074
|
+
/**
|
|
9075
|
+
* @license lucide-react v0.576.0 - ISC
|
|
9076
|
+
*
|
|
9077
|
+
* This source code is licensed under the ISC license.
|
|
9078
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
9079
|
+
*/
|
|
9061
9080
|
var CircleX = createLucideIcon("circle-x", [
|
|
9062
9081
|
["circle", {
|
|
9063
9082
|
cx: "12",
|
|
@@ -19071,6 +19090,10 @@ var useNotificationRulesListSnoozes = trpc.notificationRules.listSnoozes.useQuer
|
|
|
19071
19090
|
var useNotificationRulesCreateSnooze = trpc.notificationRules.createSnooze.useMutation;
|
|
19072
19091
|
/** Generated alias around `trpc.notificationRules.cancelSnooze.useMutation`. */
|
|
19073
19092
|
var useNotificationRulesCancelSnooze = trpc.notificationRules.cancelSnooze.useMutation;
|
|
19093
|
+
/** Generated alias around `trpc.notificationRules.getAlarmConfig.useQuery`. */
|
|
19094
|
+
var useNotificationRulesGetAlarmConfig = trpc.notificationRules.getAlarmConfig.useQuery;
|
|
19095
|
+
/** Generated alias around `trpc.notificationRules.setAlarmConfig.useMutation`. */
|
|
19096
|
+
var useNotificationRulesSetAlarmConfig = trpc.notificationRules.setAlarmConfig.useMutation;
|
|
19074
19097
|
/** Generated alias around `trpc.notifier.send.useMutation`. */
|
|
19075
19098
|
var useNotifierSend = trpc.notifier.send.useMutation;
|
|
19076
19099
|
/** Generated alias around `trpc.notifier.cancel.useMutation`. */
|
|
@@ -26934,6 +26957,285 @@ function AlarmHeroCard({ trpc, deviceId, optimistic }) {
|
|
|
26934
26957
|
});
|
|
26935
26958
|
}
|
|
26936
26959
|
//#endregion
|
|
26960
|
+
//#region src/composites/device-controls/script-automation-controls.tsx
|
|
26961
|
+
/**
|
|
26962
|
+
* "3 min ago", or nothing at all.
|
|
26963
|
+
*
|
|
26964
|
+
* **0 means NEVER RUN** on both status schemas, and it must not render as the
|
|
26965
|
+
* epoch. "1 Jan 1970" next to a script is the kind of detail that sends an
|
|
26966
|
+
* operator looking for a clock problem that does not exist.
|
|
26967
|
+
*/
|
|
26968
|
+
function lastRunLabel(atMs, nowMs) {
|
|
26969
|
+
if (atMs <= 0) return null;
|
|
26970
|
+
const deltaSec = Math.max(0, Math.round((nowMs - atMs) / 1e3));
|
|
26971
|
+
if (deltaSec < 60) return "just now";
|
|
26972
|
+
if (deltaSec < 3600) return `${Math.floor(deltaSec / 60)} min ago`;
|
|
26973
|
+
if (deltaSec < 86400) return `${Math.floor(deltaSec / 3600)} h ago`;
|
|
26974
|
+
return new Date(atMs).toLocaleDateString();
|
|
26975
|
+
}
|
|
26976
|
+
function LastRun({ atMs, neverLabel }) {
|
|
26977
|
+
const label = lastRunLabel(atMs, Date.now());
|
|
26978
|
+
return /* @__PURE__ */ jsx("span", {
|
|
26979
|
+
className: "text-xs text-foreground-subtle",
|
|
26980
|
+
"data-testid": "last-run",
|
|
26981
|
+
children: label === null ? neverLabel : label
|
|
26982
|
+
});
|
|
26983
|
+
}
|
|
26984
|
+
/** Rendered ONLY when a message exists — see the file docblock. */
|
|
26985
|
+
function LastError({ error }) {
|
|
26986
|
+
if (error === null || error === "") return null;
|
|
26987
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
26988
|
+
className: "inline-flex items-center gap-1 text-xs text-danger",
|
|
26989
|
+
title: error,
|
|
26990
|
+
"data-testid": "last-error",
|
|
26991
|
+
children: [/* @__PURE__ */ jsx(TriangleAlert, {
|
|
26992
|
+
className: "h-3 w-3 shrink-0",
|
|
26993
|
+
"aria-hidden": "true"
|
|
26994
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
26995
|
+
className: "truncate",
|
|
26996
|
+
children: error
|
|
26997
|
+
})]
|
|
26998
|
+
});
|
|
26999
|
+
}
|
|
27000
|
+
/**
|
|
27001
|
+
* Subscribes to `script-runner` ONCE, so the hero and the inline control never
|
|
27002
|
+
* double-subscribe. Mirrors `useAlarmControl`.
|
|
27003
|
+
*/
|
|
27004
|
+
function useScriptControl(trpc, deviceId, optimistic) {
|
|
27005
|
+
const { cap, slice, available } = useDeviceCapability({
|
|
27006
|
+
trpc,
|
|
27007
|
+
deviceId,
|
|
27008
|
+
cap: (d) => d.scriptRunner,
|
|
27009
|
+
slice: (d) => d.state.scriptRunner
|
|
27010
|
+
});
|
|
27011
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
27012
|
+
const busy = !available;
|
|
27013
|
+
const running = display?.isRunning === true;
|
|
27014
|
+
return {
|
|
27015
|
+
display,
|
|
27016
|
+
capPresent: cap !== void 0,
|
|
27017
|
+
busy,
|
|
27018
|
+
running,
|
|
27019
|
+
run: () => {
|
|
27020
|
+
if (cap === void 0 || busy || running) return;
|
|
27021
|
+
applyOptimistic({ isRunning: true });
|
|
27022
|
+
cap.run({});
|
|
27023
|
+
},
|
|
27024
|
+
stop: () => {
|
|
27025
|
+
if (cap === void 0 || busy || !running) return;
|
|
27026
|
+
applyOptimistic({ isRunning: false });
|
|
27027
|
+
cap.stop({});
|
|
27028
|
+
}
|
|
27029
|
+
};
|
|
27030
|
+
}
|
|
27031
|
+
function RunButton({ running, busy, large, onRun, onStop }) {
|
|
27032
|
+
const label = running ? "Stop" : "Run";
|
|
27033
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
27034
|
+
type: "button",
|
|
27035
|
+
"aria-label": label,
|
|
27036
|
+
title: label,
|
|
27037
|
+
disabled: busy,
|
|
27038
|
+
"data-testid": "script-run",
|
|
27039
|
+
"data-running": running ? "true" : "false",
|
|
27040
|
+
onClick: (e) => {
|
|
27041
|
+
e.stopPropagation();
|
|
27042
|
+
if (running) onStop();
|
|
27043
|
+
else onRun();
|
|
27044
|
+
},
|
|
27045
|
+
className: cn("inline-flex items-center gap-1 rounded transition-colors", large ? "h-10 px-4 text-sm" : "h-5 px-1.5 text-xs", running ? "bg-danger text-danger-foreground hover:bg-danger/90" : "bg-primary text-primary-foreground hover:bg-primary/90", busy && "cursor-not-allowed opacity-40"),
|
|
27046
|
+
children: [running ? /* @__PURE__ */ jsx(CircleStop, {
|
|
27047
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27048
|
+
"aria-hidden": "true"
|
|
27049
|
+
}) : /* @__PURE__ */ jsx(Play, {
|
|
27050
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27051
|
+
"aria-hidden": "true"
|
|
27052
|
+
}), /* @__PURE__ */ jsx("span", { children: label })]
|
|
27053
|
+
});
|
|
27054
|
+
}
|
|
27055
|
+
function ScriptInlineControl({ trpc, deviceId, optimistic }) {
|
|
27056
|
+
const { display, capPresent, busy, running, run, stop } = useScriptControl(trpc, deviceId, optimistic);
|
|
27057
|
+
if (!capPresent) return null;
|
|
27058
|
+
if (display === void 0) return null;
|
|
27059
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
27060
|
+
className: "flex min-w-0 items-center gap-2",
|
|
27061
|
+
children: [/* @__PURE__ */ jsx(RunButton, {
|
|
27062
|
+
running,
|
|
27063
|
+
busy,
|
|
27064
|
+
large: false,
|
|
27065
|
+
onRun: run,
|
|
27066
|
+
onStop: stop
|
|
27067
|
+
}), /* @__PURE__ */ jsx(LastRun, {
|
|
27068
|
+
atMs: display.lastRunAt,
|
|
27069
|
+
neverLabel: "never run"
|
|
27070
|
+
})]
|
|
27071
|
+
});
|
|
27072
|
+
}
|
|
27073
|
+
function ScriptHeroCard({ trpc, deviceId, optimistic }) {
|
|
27074
|
+
const { display, capPresent, busy, running, run, stop } = useScriptControl(trpc, deviceId, optimistic);
|
|
27075
|
+
if (!capPresent) return null;
|
|
27076
|
+
if (display === void 0) return null;
|
|
27077
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
27078
|
+
className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-6",
|
|
27079
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
27080
|
+
className: "flex flex-col items-center gap-2",
|
|
27081
|
+
children: [
|
|
27082
|
+
/* @__PURE__ */ jsx("div", {
|
|
27083
|
+
"data-testid": "script-state",
|
|
27084
|
+
"data-running": running ? "true" : "false",
|
|
27085
|
+
className: cn("flex h-16 w-16 items-center justify-center rounded-full border-2", running ? "border-primary text-primary animate-pulse" : "border-border text-foreground-subtle"),
|
|
27086
|
+
children: /* @__PURE__ */ jsx(Play, {
|
|
27087
|
+
className: "h-8 w-8",
|
|
27088
|
+
"aria-hidden": "true"
|
|
27089
|
+
})
|
|
27090
|
+
}),
|
|
27091
|
+
/* @__PURE__ */ jsx("span", {
|
|
27092
|
+
className: "text-sm font-medium",
|
|
27093
|
+
children: running ? "Running" : "Idle"
|
|
27094
|
+
}),
|
|
27095
|
+
/* @__PURE__ */ jsx(LastRun, {
|
|
27096
|
+
atMs: display.lastRunAt,
|
|
27097
|
+
neverLabel: "never run"
|
|
27098
|
+
}),
|
|
27099
|
+
/* @__PURE__ */ jsx(LastError, { error: display.lastError })
|
|
27100
|
+
]
|
|
27101
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
27102
|
+
className: "flex justify-center",
|
|
27103
|
+
children: /* @__PURE__ */ jsx(RunButton, {
|
|
27104
|
+
running,
|
|
27105
|
+
busy,
|
|
27106
|
+
large: true,
|
|
27107
|
+
onRun: run,
|
|
27108
|
+
onStop: stop
|
|
27109
|
+
})
|
|
27110
|
+
})]
|
|
27111
|
+
});
|
|
27112
|
+
}
|
|
27113
|
+
function useAutomationControl(trpc, deviceId, optimistic) {
|
|
27114
|
+
const { cap, slice, available } = useDeviceCapability({
|
|
27115
|
+
trpc,
|
|
27116
|
+
deviceId,
|
|
27117
|
+
cap: (d) => d.automationControl,
|
|
27118
|
+
slice: (d) => d.state.automationControl
|
|
27119
|
+
});
|
|
27120
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
27121
|
+
const busy = !available;
|
|
27122
|
+
return {
|
|
27123
|
+
display,
|
|
27124
|
+
capPresent: cap !== void 0,
|
|
27125
|
+
busy,
|
|
27126
|
+
setEnabled: (next) => {
|
|
27127
|
+
if (cap === void 0 || busy) return;
|
|
27128
|
+
applyOptimistic({ enabled: next });
|
|
27129
|
+
if (next) cap.enable({});
|
|
27130
|
+
else cap.disable({});
|
|
27131
|
+
},
|
|
27132
|
+
trigger: () => {
|
|
27133
|
+
if (cap === void 0 || busy) return;
|
|
27134
|
+
cap.trigger({});
|
|
27135
|
+
}
|
|
27136
|
+
};
|
|
27137
|
+
}
|
|
27138
|
+
function EnabledPill({ enabled, busy, onToggle }) {
|
|
27139
|
+
return /* @__PURE__ */ jsx("button", {
|
|
27140
|
+
type: "button",
|
|
27141
|
+
role: "switch",
|
|
27142
|
+
"aria-checked": enabled,
|
|
27143
|
+
"aria-label": "Automation enabled",
|
|
27144
|
+
disabled: busy,
|
|
27145
|
+
"data-testid": "automation-enabled",
|
|
27146
|
+
onClick: (e) => {
|
|
27147
|
+
e.stopPropagation();
|
|
27148
|
+
onToggle(!enabled);
|
|
27149
|
+
},
|
|
27150
|
+
className: cn("inline-flex shrink-0 items-center gap-1 rounded-md border px-1.5 py-0.5", "text-[11px] font-medium whitespace-nowrap transition-colors", enabled ? "border-success/40 bg-success/10 text-success" : "border-border bg-surface-subtle text-foreground-subtle", busy && "cursor-not-allowed opacity-40"),
|
|
27151
|
+
children: enabled ? "Enabled" : "Disabled"
|
|
27152
|
+
});
|
|
27153
|
+
}
|
|
27154
|
+
/**
|
|
27155
|
+
* Always available, even while the automation is DISABLED.
|
|
27156
|
+
*
|
|
27157
|
+
* That is the cap's contract, not an oversight: a disabled automation ignores
|
|
27158
|
+
* its trigger block but a manual `trigger` still runs it, which is exactly how
|
|
27159
|
+
* an operator tests one before switching it on.
|
|
27160
|
+
*/
|
|
27161
|
+
function TriggerButton({ busy, large, onTrigger }) {
|
|
27162
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
27163
|
+
type: "button",
|
|
27164
|
+
"aria-label": "Trigger",
|
|
27165
|
+
title: "Run this automation now",
|
|
27166
|
+
disabled: busy,
|
|
27167
|
+
"data-testid": "automation-trigger",
|
|
27168
|
+
onClick: (e) => {
|
|
27169
|
+
e.stopPropagation();
|
|
27170
|
+
onTrigger();
|
|
27171
|
+
},
|
|
27172
|
+
className: cn("inline-flex items-center gap-1 rounded transition-colors", large ? "h-10 px-4 text-sm" : "h-5 px-1.5 text-xs", "bg-primary text-primary-foreground hover:bg-primary/90", busy && "cursor-not-allowed opacity-40"),
|
|
27173
|
+
children: [/* @__PURE__ */ jsx(Zap, {
|
|
27174
|
+
className: large ? "h-4 w-4" : "h-3 w-3",
|
|
27175
|
+
"aria-hidden": "true"
|
|
27176
|
+
}), /* @__PURE__ */ jsx("span", { children: "Trigger" })]
|
|
27177
|
+
});
|
|
27178
|
+
}
|
|
27179
|
+
function AutomationInlineControl({ trpc, deviceId, optimistic }) {
|
|
27180
|
+
const { display, capPresent, busy, setEnabled, trigger } = useAutomationControl(trpc, deviceId, optimistic);
|
|
27181
|
+
if (!capPresent) return null;
|
|
27182
|
+
if (display === void 0) return null;
|
|
27183
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
27184
|
+
className: "flex min-w-0 items-center gap-2",
|
|
27185
|
+
children: [/* @__PURE__ */ jsx(EnabledPill, {
|
|
27186
|
+
enabled: display.enabled,
|
|
27187
|
+
busy,
|
|
27188
|
+
onToggle: setEnabled
|
|
27189
|
+
}), /* @__PURE__ */ jsx(TriggerButton, {
|
|
27190
|
+
busy,
|
|
27191
|
+
large: false,
|
|
27192
|
+
onTrigger: trigger
|
|
27193
|
+
})]
|
|
27194
|
+
});
|
|
27195
|
+
}
|
|
27196
|
+
function AutomationHeroCard({ trpc, deviceId, optimistic }) {
|
|
27197
|
+
const { display, capPresent, busy, setEnabled, trigger } = useAutomationControl(trpc, deviceId, optimistic);
|
|
27198
|
+
if (!capPresent) return null;
|
|
27199
|
+
if (display === void 0) return null;
|
|
27200
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
27201
|
+
className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-6",
|
|
27202
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
27203
|
+
className: "flex flex-col items-center gap-2",
|
|
27204
|
+
children: [
|
|
27205
|
+
/* @__PURE__ */ jsx("div", {
|
|
27206
|
+
"data-testid": "automation-state",
|
|
27207
|
+
"data-enabled": display.enabled ? "true" : "false",
|
|
27208
|
+
className: cn("flex h-16 w-16 items-center justify-center rounded-full border-2", display.enabled ? "border-success text-success" : "border-border text-foreground-subtle"),
|
|
27209
|
+
children: /* @__PURE__ */ jsx(Zap, {
|
|
27210
|
+
className: "h-8 w-8",
|
|
27211
|
+
"aria-hidden": "true"
|
|
27212
|
+
})
|
|
27213
|
+
}),
|
|
27214
|
+
/* @__PURE__ */ jsx("span", {
|
|
27215
|
+
className: "text-sm font-medium",
|
|
27216
|
+
children: display.enabled ? "Enabled" : "Disabled"
|
|
27217
|
+
}),
|
|
27218
|
+
/* @__PURE__ */ jsx(LastRun, {
|
|
27219
|
+
atMs: display.lastTriggeredAt,
|
|
27220
|
+
neverLabel: "never triggered"
|
|
27221
|
+
}),
|
|
27222
|
+
/* @__PURE__ */ jsx(LastError, { error: display.lastError })
|
|
27223
|
+
]
|
|
27224
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
27225
|
+
className: "flex items-center justify-center gap-3",
|
|
27226
|
+
children: [/* @__PURE__ */ jsx(EnabledPill, {
|
|
27227
|
+
enabled: display.enabled,
|
|
27228
|
+
busy,
|
|
27229
|
+
onToggle: setEnabled
|
|
27230
|
+
}), /* @__PURE__ */ jsx(TriggerButton, {
|
|
27231
|
+
busy,
|
|
27232
|
+
large: true,
|
|
27233
|
+
onTrigger: trigger
|
|
27234
|
+
})]
|
|
27235
|
+
})]
|
|
27236
|
+
});
|
|
27237
|
+
}
|
|
27238
|
+
//#endregion
|
|
26937
27239
|
//#region src/composites/device-controls/panel-controls.tsx
|
|
26938
27240
|
/** Matches CoverHeroCard's outer container — real design tokens only. */
|
|
26939
27241
|
function HeroShell({ children }) {
|
|
@@ -27209,6 +27511,14 @@ var CONTROL_KIND_COMPONENTS = {
|
|
|
27209
27511
|
InlineControl: PetFeederInlineControl,
|
|
27210
27512
|
HeroCard: PetFeederHeroCard
|
|
27211
27513
|
},
|
|
27514
|
+
script: {
|
|
27515
|
+
InlineControl: ScriptInlineControl,
|
|
27516
|
+
HeroCard: ScriptHeroCard
|
|
27517
|
+
},
|
|
27518
|
+
automation: {
|
|
27519
|
+
InlineControl: AutomationInlineControl,
|
|
27520
|
+
HeroCard: AutomationHeroCard
|
|
27521
|
+
},
|
|
27212
27522
|
dummy: {
|
|
27213
27523
|
InlineControl: DummyInline,
|
|
27214
27524
|
HeroCard: DummyHeroCard
|
|
@@ -47506,4 +47816,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
|
|
|
47506
47816
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
47507
47817
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
47508
47818
|
//#endregion
|
|
47509
|
-
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceStepMatrix, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, agentColumnKey, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelMediaRelocate, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMediaRelocateStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocate, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetRelocateStatus, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionClose, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionResize, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|
|
47819
|
+
export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceStepMatrix, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, agentColumnKey, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesSetAlarmConfig, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelMediaRelocate, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMediaRelocateStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocate, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetRelocateStatus, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionClose, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionResize, useThemeMode, useToastOnToast, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
|