@camstack/ui-library 1.2.299 → 1.2.301
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/{MotionZonesSettings-Bv8XzCa3.js → MotionZonesSettings-C3Tj12yc.js} +1 -1
- package/dist/{PrivacyMaskSettings-BlkbESYj.js → PrivacyMaskSettings-C9wfHkiB.js} +1 -1
- package/dist/{SceneMonitorEditor-i3-nXAEU.js → SceneMonitorEditor-30H29vN4.js} +1 -1
- package/dist/composites/config-form-field.d.ts +3 -1
- package/dist/composites/device-controls/ac-panel.d.ts +14 -1
- package/dist/composites/device-controls/climate-panel.d.ts +4 -1
- package/dist/composites/device-controls/dishwasher-control.d.ts +17 -0
- package/dist/composites/device-controls/heating-valve-readout.d.ts +4 -0
- package/dist/composites/device-controls/types.d.ts +1 -1
- package/dist/generated/system-hooks.d.ts +28 -0
- package/dist/{icons-CLC60C-_.cjs → icons-B1AFXUaZ.cjs} +2 -78
- package/dist/{icons-BXXScOuy.js → icons-BT8c2hxp.js} +1 -77
- package/dist/index.cjs +929 -167
- package/dist/index.js +919 -173
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2161,6 +2161,54 @@ var Hash = createLucideIcon("hash", [
|
|
|
2161
2161
|
* This source code is licensed under the ISC license.
|
|
2162
2162
|
* See the LICENSE file in the root directory of this source tree.
|
|
2163
2163
|
*/
|
|
2164
|
+
var Heater = createLucideIcon("heater", [
|
|
2165
|
+
["path", {
|
|
2166
|
+
d: "M11 8c2-3-2-3 0-6",
|
|
2167
|
+
key: "1ldv5m"
|
|
2168
|
+
}],
|
|
2169
|
+
["path", {
|
|
2170
|
+
d: "M15.5 8c2-3-2-3 0-6",
|
|
2171
|
+
key: "1otqoz"
|
|
2172
|
+
}],
|
|
2173
|
+
["path", {
|
|
2174
|
+
d: "M6 10h.01",
|
|
2175
|
+
key: "1lbq93"
|
|
2176
|
+
}],
|
|
2177
|
+
["path", {
|
|
2178
|
+
d: "M6 14h.01",
|
|
2179
|
+
key: "zudwn7"
|
|
2180
|
+
}],
|
|
2181
|
+
["path", {
|
|
2182
|
+
d: "M10 16v-4",
|
|
2183
|
+
key: "1c25yv"
|
|
2184
|
+
}],
|
|
2185
|
+
["path", {
|
|
2186
|
+
d: "M14 16v-4",
|
|
2187
|
+
key: "1dkbt8"
|
|
2188
|
+
}],
|
|
2189
|
+
["path", {
|
|
2190
|
+
d: "M18 16v-4",
|
|
2191
|
+
key: "1yg9me"
|
|
2192
|
+
}],
|
|
2193
|
+
["path", {
|
|
2194
|
+
d: "M20 6a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3",
|
|
2195
|
+
key: "1ubg90"
|
|
2196
|
+
}],
|
|
2197
|
+
["path", {
|
|
2198
|
+
d: "M5 20v2",
|
|
2199
|
+
key: "1abpe8"
|
|
2200
|
+
}],
|
|
2201
|
+
["path", {
|
|
2202
|
+
d: "M19 20v2",
|
|
2203
|
+
key: "kqn6ft"
|
|
2204
|
+
}]
|
|
2205
|
+
]);
|
|
2206
|
+
/**
|
|
2207
|
+
* @license lucide-react v0.576.0 - ISC
|
|
2208
|
+
*
|
|
2209
|
+
* This source code is licensed under the ISC license.
|
|
2210
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
2211
|
+
*/
|
|
2164
2212
|
var House = createLucideIcon("house", [["path", {
|
|
2165
2213
|
d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",
|
|
2166
2214
|
key: "5wwlr5"
|
|
@@ -4149,6 +4197,34 @@ var Thermometer = createLucideIcon("thermometer", [["path", {
|
|
|
4149
4197
|
* This source code is licensed under the ISC license.
|
|
4150
4198
|
* See the LICENSE file in the root directory of this source tree.
|
|
4151
4199
|
*/
|
|
4200
|
+
var Timer = createLucideIcon("timer", [
|
|
4201
|
+
["line", {
|
|
4202
|
+
x1: "10",
|
|
4203
|
+
x2: "14",
|
|
4204
|
+
y1: "2",
|
|
4205
|
+
y2: "2",
|
|
4206
|
+
key: "14vaq8"
|
|
4207
|
+
}],
|
|
4208
|
+
["line", {
|
|
4209
|
+
x1: "12",
|
|
4210
|
+
x2: "15",
|
|
4211
|
+
y1: "14",
|
|
4212
|
+
y2: "11",
|
|
4213
|
+
key: "17fdiu"
|
|
4214
|
+
}],
|
|
4215
|
+
["circle", {
|
|
4216
|
+
cx: "12",
|
|
4217
|
+
cy: "14",
|
|
4218
|
+
r: "8",
|
|
4219
|
+
key: "1e1u0o"
|
|
4220
|
+
}]
|
|
4221
|
+
]);
|
|
4222
|
+
/**
|
|
4223
|
+
* @license lucide-react v0.576.0 - ISC
|
|
4224
|
+
*
|
|
4225
|
+
* This source code is licensed under the ISC license.
|
|
4226
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
4227
|
+
*/
|
|
4152
4228
|
var ToggleLeft = createLucideIcon("toggle-left", [["circle", {
|
|
4153
4229
|
cx: "9",
|
|
4154
4230
|
cy: "12",
|
|
@@ -5251,6 +5327,11 @@ var DEVICE_TYPE_META = {
|
|
|
5251
5327
|
icon: Bone,
|
|
5252
5328
|
labelKey: "uiLibrary.deviceMeta.type.petFeeder",
|
|
5253
5329
|
labelFallback: "Pet feeder"
|
|
5330
|
+
},
|
|
5331
|
+
[DeviceType.Dishwasher]: {
|
|
5332
|
+
icon: Waves,
|
|
5333
|
+
labelKey: "uiLibrary.deviceMeta.type.dishwasher",
|
|
5334
|
+
labelFallback: "Dishwasher"
|
|
5254
5335
|
}
|
|
5255
5336
|
};
|
|
5256
5337
|
var DEVICE_ROLE_META = {
|
|
@@ -5732,7 +5813,7 @@ function lucideExportName(key) {
|
|
|
5732
5813
|
function loadIconGlyphs() {
|
|
5733
5814
|
if (fullTable !== void 0) return Promise.resolve();
|
|
5734
5815
|
if (failure !== void 0) return Promise.reject(failure);
|
|
5735
|
-
pending ??= import("./icons-
|
|
5816
|
+
pending ??= import("./icons-BT8c2hxp.js").then((module) => {
|
|
5736
5817
|
fullTable = module;
|
|
5737
5818
|
publish();
|
|
5738
5819
|
}, (error) => {
|
|
@@ -10907,6 +10988,32 @@ var useDeviceStateListClaims = trpc.deviceState.listClaims.useQuery;
|
|
|
10907
10988
|
var useDeviceStateGetNativeCapSlice = trpc.deviceState.getNativeCapSlice.useQuery;
|
|
10908
10989
|
/** Generated alias around `trpc.deviceStatus.getStatus.useQuery`. */
|
|
10909
10990
|
var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
|
|
10991
|
+
/** Generated alias around `trpc.dishwasher.start.useMutation`. */
|
|
10992
|
+
var useDishwasherStart = trpc.dishwasher.start.useMutation;
|
|
10993
|
+
/** Generated alias around `trpc.dishwasher.pause.useMutation`. */
|
|
10994
|
+
var useDishwasherPause = trpc.dishwasher.pause.useMutation;
|
|
10995
|
+
/** Generated alias around `trpc.dishwasher.stop.useMutation`. */
|
|
10996
|
+
var useDishwasherStop = trpc.dishwasher.stop.useMutation;
|
|
10997
|
+
/** Generated alias around `trpc.dishwasher.setProgram.useMutation`. */
|
|
10998
|
+
var useDishwasherSetProgram = trpc.dishwasher.setProgram.useMutation;
|
|
10999
|
+
/** Generated alias around `trpc.dishwasher.setPower.useMutation`. */
|
|
11000
|
+
var useDishwasherSetPower = trpc.dishwasher.setPower.useMutation;
|
|
11001
|
+
/** Generated alias around `trpc.dishwasher.setHalfLoad.useMutation`. */
|
|
11002
|
+
var useDishwasherSetHalfLoad = trpc.dishwasher.setHalfLoad.useMutation;
|
|
11003
|
+
/** Generated alias around `trpc.dishwasher.setHygienePlus.useMutation`. */
|
|
11004
|
+
var useDishwasherSetHygienePlus = trpc.dishwasher.setHygienePlus.useMutation;
|
|
11005
|
+
/** Generated alias around `trpc.dishwasher.setExtraDry.useMutation`. */
|
|
11006
|
+
var useDishwasherSetExtraDry = trpc.dishwasher.setExtraDry.useMutation;
|
|
11007
|
+
/** Generated alias around `trpc.dishwasher.setIntensiveZone.useMutation`. */
|
|
11008
|
+
var useDishwasherSetIntensiveZone = trpc.dishwasher.setIntensiveZone.useMutation;
|
|
11009
|
+
/** Generated alias around `trpc.dishwasher.setVarioSpeedPlus.useMutation`. */
|
|
11010
|
+
var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutation;
|
|
11011
|
+
/** Generated alias around `trpc.dishwasher.setChildLock.useMutation`. */
|
|
11012
|
+
var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
|
|
11013
|
+
/** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
|
|
11014
|
+
var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
|
|
11015
|
+
/** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
|
|
11016
|
+
var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
|
|
10910
11017
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
10911
11018
|
var useDoorbellGetStatus = trpc.doorbell.getStatus.useQuery;
|
|
10912
11019
|
/** Generated alias around `trpc.enumSensor.getStatus.useQuery`. */
|
|
@@ -10961,6 +11068,8 @@ var useFeatureProbeGetStatus = trpc.featureProbe.getStatus.useQuery;
|
|
|
10961
11068
|
var useFloodGetStatus = trpc.flood.getStatus.useQuery;
|
|
10962
11069
|
/** Generated alias around `trpc.gas.getStatus.useQuery`. */
|
|
10963
11070
|
var useGasGetStatus = trpc.gas.getStatus.useQuery;
|
|
11071
|
+
/** Generated alias around `trpc.heatingValve.getStatus.useQuery`. */
|
|
11072
|
+
var useHeatingValveGetStatus = trpc.heatingValve.getStatus.useQuery;
|
|
10964
11073
|
/** Generated alias around `trpc.humidifier.setOn.useMutation`. */
|
|
10965
11074
|
var useHumidifierSetOn = trpc.humidifier.setOn.useMutation;
|
|
10966
11075
|
/** Generated alias around `trpc.humidifier.setTargetHumidity.useMutation`. */
|
|
@@ -26254,8 +26363,8 @@ function RecordingPanel({ deviceId }) {
|
|
|
26254
26363
|
* `type:'widget'` ConfigField. `WidgetSlot` resolves these BEFORE the
|
|
26255
26364
|
* Module-Federation `WidgetRegistry`. ids are namespaced `host/<name>`. */
|
|
26256
26365
|
var HOST_WIDGETS = {
|
|
26257
|
-
"host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-
|
|
26258
|
-
"host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-
|
|
26366
|
+
"host/motion-zones-grid": lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings }))),
|
|
26367
|
+
"host/privacy-mask-grid": lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings }))),
|
|
26259
26368
|
"host/ptz-panel": PtzPanel,
|
|
26260
26369
|
"host/navigation-panel": NavigationPanel,
|
|
26261
26370
|
"host/consumables-panel": ConsumablesPanel,
|
|
@@ -28791,7 +28900,7 @@ function AddonActionSelectField({ field, value, values, onChange, disabled, onAc
|
|
|
28791
28900
|
})()
|
|
28792
28901
|
});
|
|
28793
28902
|
}
|
|
28794
|
-
function AddonActionButtonField({ field, values, disabled, onAction }) {
|
|
28903
|
+
function AddonActionButtonField({ field, values, disabled, onAction, onChange, onChangeMany }) {
|
|
28795
28904
|
const t = useUiText();
|
|
28796
28905
|
const [loading, setLoading] = useState(false);
|
|
28797
28906
|
const [status, setStatus] = useState(null);
|
|
@@ -28823,6 +28932,17 @@ function AddonActionButtonField({ field, values, disabled, onAction }) {
|
|
|
28823
28932
|
try {
|
|
28824
28933
|
const result = await onAction(field.action, field.key, params);
|
|
28825
28934
|
const resultRecord = typeof result === "object" && result !== null ? result : null;
|
|
28935
|
+
if (resultRecord !== null && field.assignResult && (onChange || onChangeMany)) {
|
|
28936
|
+
const patch = {};
|
|
28937
|
+
for (const [formKey, resultKey] of Object.entries(field.assignResult)) {
|
|
28938
|
+
const assigned = resultRecord[resultKey];
|
|
28939
|
+
if (typeof assigned === "string") patch[formKey] = assigned;
|
|
28940
|
+
}
|
|
28941
|
+
if (Object.keys(patch).length > 0) {
|
|
28942
|
+
if (onChangeMany) onChangeMany(patch);
|
|
28943
|
+
else if (onChange) for (const [formKey, assigned] of Object.entries(patch)) onChange(formKey, assigned);
|
|
28944
|
+
}
|
|
28945
|
+
}
|
|
28826
28946
|
setStatus({
|
|
28827
28947
|
kind: "ok",
|
|
28828
28948
|
text: field.successMessage ? field.successMessage.replace(/\{(\w+)\}/g, (_, k) => {
|
|
@@ -29171,7 +29291,7 @@ function isFieldVisible(field, values, allFields) {
|
|
|
29171
29291
|
if (condition.notIncludes !== void 0) return !Array.isArray(condVal) || !condVal.includes(condition.notIncludes);
|
|
29172
29292
|
return true;
|
|
29173
29293
|
}
|
|
29174
|
-
function FormField({ field, values, onChange, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
|
|
29294
|
+
function FormField({ field, values, onChange, onChangeMany, disabled, translationFn, onTestField, externalProbe, allFields, onAction }) {
|
|
29175
29295
|
if (hasMultiple(field)) return /* @__PURE__ */ jsx(MultipleFieldWrapper, {
|
|
29176
29296
|
field,
|
|
29177
29297
|
values,
|
|
@@ -29407,7 +29527,9 @@ function FormField({ field, values, onChange, disabled, translationFn, onTestFie
|
|
|
29407
29527
|
field,
|
|
29408
29528
|
values,
|
|
29409
29529
|
disabled,
|
|
29410
|
-
onAction
|
|
29530
|
+
onAction,
|
|
29531
|
+
onChange,
|
|
29532
|
+
onChangeMany
|
|
29411
29533
|
});
|
|
29412
29534
|
case "device-action-button": return /* @__PURE__ */ jsx(DeviceActionButtonField, {
|
|
29413
29535
|
field,
|
|
@@ -42890,6 +43012,19 @@ function FanPanel({ trpc, deviceId, features, layout, optimistic }) {
|
|
|
42890
43012
|
}
|
|
42891
43013
|
//#endregion
|
|
42892
43014
|
//#region src/composites/device-controls/climate-panel.tsx
|
|
43015
|
+
/** Step size for target ± buttons; defaults to 1 °C when unset or invalid. */
|
|
43016
|
+
function resolveClimateTempStep(tempStep) {
|
|
43017
|
+
if (typeof tempStep === "number" && Number.isFinite(tempStep) && tempStep > 0) return tempStep;
|
|
43018
|
+
return 1;
|
|
43019
|
+
}
|
|
43020
|
+
function nextClimateTarget(current, deltaSteps, display) {
|
|
43021
|
+
let next = current + deltaSteps * resolveClimateTempStep(display.tempStep);
|
|
43022
|
+
const min = display.minTemp;
|
|
43023
|
+
const max = display.maxTemp;
|
|
43024
|
+
if (typeof min === "number" && Number.isFinite(min)) next = Math.max(next, min);
|
|
43025
|
+
if (typeof max === "number" && Number.isFinite(max)) next = Math.min(next, max);
|
|
43026
|
+
return next;
|
|
43027
|
+
}
|
|
42893
43028
|
/**
|
|
42894
43029
|
* Exhaustive colour map — one entry per HvacMode. Build will fail if a
|
|
42895
43030
|
* mode is added to the enum and not reflected here (Record<HvacMode, ...>
|
|
@@ -42970,7 +43105,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
|
|
|
42970
43105
|
onClick: (e) => {
|
|
42971
43106
|
e.stopPropagation();
|
|
42972
43107
|
if (!busy && display.target !== null) {
|
|
42973
|
-
const next = display.target -
|
|
43108
|
+
const next = nextClimateTarget(display.target, -1, display);
|
|
42974
43109
|
applyOptimistic({ target: next });
|
|
42975
43110
|
cap.setTarget({ target: next });
|
|
42976
43111
|
}
|
|
@@ -42984,7 +43119,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
|
|
|
42984
43119
|
onClick: (e) => {
|
|
42985
43120
|
e.stopPropagation();
|
|
42986
43121
|
if (!busy && display.target !== null) {
|
|
42987
|
-
const next = display.target
|
|
43122
|
+
const next = nextClimateTarget(display.target, 1, display);
|
|
42988
43123
|
applyOptimistic({ target: next });
|
|
42989
43124
|
cap.setTarget({ target: next });
|
|
42990
43125
|
}
|
|
@@ -43039,7 +43174,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
|
|
|
43039
43174
|
onClick: (e) => {
|
|
43040
43175
|
e.stopPropagation();
|
|
43041
43176
|
if (!busy && display.target !== null) {
|
|
43042
|
-
const next = display.target -
|
|
43177
|
+
const next = nextClimateTarget(display.target, -1, display);
|
|
43043
43178
|
applyOptimistic({ target: next });
|
|
43044
43179
|
cap.setTarget({ target: next });
|
|
43045
43180
|
}
|
|
@@ -43054,7 +43189,7 @@ function ClimatePanel({ trpc, deviceId, features: _features, layout, optimistic
|
|
|
43054
43189
|
onClick: (e) => {
|
|
43055
43190
|
e.stopPropagation();
|
|
43056
43191
|
if (!busy && display.target !== null) {
|
|
43057
|
-
const next = display.target
|
|
43192
|
+
const next = nextClimateTarget(display.target, 1, display);
|
|
43058
43193
|
applyOptimistic({ target: next });
|
|
43059
43194
|
cap.setTarget({ target: next });
|
|
43060
43195
|
}
|
|
@@ -43712,7 +43847,8 @@ var CONTROL_CAP_NAMES = [
|
|
|
43712
43847
|
"climate-control",
|
|
43713
43848
|
"media-player",
|
|
43714
43849
|
"control",
|
|
43715
|
-
"pet-feeder"
|
|
43850
|
+
"pet-feeder",
|
|
43851
|
+
"dishwasher"
|
|
43716
43852
|
];
|
|
43717
43853
|
//#endregion
|
|
43718
43854
|
//#region src/composites/device-controls/popover-row-action.tsx
|
|
@@ -48523,7 +48659,462 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
|
|
|
48523
48659
|
});
|
|
48524
48660
|
}
|
|
48525
48661
|
//#endregion
|
|
48662
|
+
//#region src/composites/device-controls/dishwasher-control.tsx
|
|
48663
|
+
/**
|
|
48664
|
+
* Dishwasher controls for a `DeviceType.Dishwasher` device.
|
|
48665
|
+
*
|
|
48666
|
+
* Reads the `dishwasher` cap status slice and renders inline + hero surfaces
|
|
48667
|
+
* mirroring vacuum-control / pet-feeder patterns.
|
|
48668
|
+
*/
|
|
48669
|
+
function dishwasherStateMeta(state, t = defaultUiText) {
|
|
48670
|
+
switch (state) {
|
|
48671
|
+
case "running": return {
|
|
48672
|
+
label: t("uiLibrary.dishwasher.running", "Running"),
|
|
48673
|
+
tone: "text-primary"
|
|
48674
|
+
};
|
|
48675
|
+
case "paused": return {
|
|
48676
|
+
label: t("uiLibrary.dishwasher.paused", "Paused"),
|
|
48677
|
+
tone: "text-warning"
|
|
48678
|
+
};
|
|
48679
|
+
case "finished": return {
|
|
48680
|
+
label: t("uiLibrary.dishwasher.finished", "Finished"),
|
|
48681
|
+
tone: "text-success"
|
|
48682
|
+
};
|
|
48683
|
+
case "error": return {
|
|
48684
|
+
label: t("uiLibrary.dishwasher.error", "Error"),
|
|
48685
|
+
tone: "text-destructive"
|
|
48686
|
+
};
|
|
48687
|
+
case "unavailable": return {
|
|
48688
|
+
label: t("uiLibrary.dishwasher.unavailable", "Unavailable"),
|
|
48689
|
+
tone: "text-foreground-subtle"
|
|
48690
|
+
};
|
|
48691
|
+
case "idle": return {
|
|
48692
|
+
label: t("uiLibrary.dishwasher.idle", "Idle"),
|
|
48693
|
+
tone: "text-foreground-subtle"
|
|
48694
|
+
};
|
|
48695
|
+
case void 0: return {
|
|
48696
|
+
label: t("uiLibrary.dishwasher.unknown", "Unknown"),
|
|
48697
|
+
tone: "text-foreground-subtle"
|
|
48698
|
+
};
|
|
48699
|
+
}
|
|
48700
|
+
}
|
|
48701
|
+
function consumableTone(level) {
|
|
48702
|
+
switch (level) {
|
|
48703
|
+
case "ok": return "text-success";
|
|
48704
|
+
case "low": return "text-warning";
|
|
48705
|
+
case "empty": return "text-destructive";
|
|
48706
|
+
case null: return "text-foreground-subtle";
|
|
48707
|
+
}
|
|
48708
|
+
}
|
|
48709
|
+
function useDishwasher(trpc, deviceId) {
|
|
48710
|
+
return useDeviceCapability({
|
|
48711
|
+
trpc,
|
|
48712
|
+
deviceId,
|
|
48713
|
+
cap: (d) => d.dishwasher,
|
|
48714
|
+
slice: (d) => d.state.dishwasher
|
|
48715
|
+
});
|
|
48716
|
+
}
|
|
48717
|
+
function DishwasherIconButton({ label, busy, active, onClick, children }) {
|
|
48718
|
+
return /* @__PURE__ */ jsx("button", {
|
|
48719
|
+
type: "button",
|
|
48720
|
+
"aria-label": label,
|
|
48721
|
+
title: label,
|
|
48722
|
+
disabled: busy,
|
|
48723
|
+
onClick: (e) => {
|
|
48724
|
+
e.stopPropagation();
|
|
48725
|
+
onClick();
|
|
48726
|
+
},
|
|
48727
|
+
className: cn("inline-flex h-5 w-5 items-center justify-center rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors", active && "bg-primary text-primary-foreground", busy && "opacity-40 cursor-not-allowed"),
|
|
48728
|
+
children
|
|
48729
|
+
});
|
|
48730
|
+
}
|
|
48731
|
+
function ConsumableBadge({ label, level }) {
|
|
48732
|
+
if (level === null) return null;
|
|
48733
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
48734
|
+
className: cn("text-xs font-medium capitalize", consumableTone(level)),
|
|
48735
|
+
children: [
|
|
48736
|
+
label,
|
|
48737
|
+
": ",
|
|
48738
|
+
level
|
|
48739
|
+
]
|
|
48740
|
+
});
|
|
48741
|
+
}
|
|
48742
|
+
function DishwasherGraphic({ state, progressPercent }) {
|
|
48743
|
+
const running = state === "running";
|
|
48744
|
+
const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
|
|
48745
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48746
|
+
"aria-hidden": "true",
|
|
48747
|
+
className: "relative w-28 h-36 rounded border-2 border-border bg-gradient-to-b from-surface-hover to-surface overflow-hidden flex-shrink-0",
|
|
48748
|
+
style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
|
|
48749
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
48750
|
+
className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
|
|
48751
|
+
style: { height: `${pct}%` }
|
|
48752
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
48753
|
+
className: "absolute inset-0 flex items-center justify-center text-foreground-subtle",
|
|
48754
|
+
children: /* @__PURE__ */ jsx(Waves, { className: "h-10 w-10 opacity-70" })
|
|
48755
|
+
})]
|
|
48756
|
+
});
|
|
48757
|
+
}
|
|
48758
|
+
function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
48759
|
+
const t = useUiText();
|
|
48760
|
+
const { cap, slice, available } = useDishwasher(trpc, deviceId);
|
|
48761
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
48762
|
+
if (cap === void 0) return null;
|
|
48763
|
+
if (display === void 0) return null;
|
|
48764
|
+
const busy = !available;
|
|
48765
|
+
const optionTogglesLocked = display.childLock === true;
|
|
48766
|
+
const meta = dishwasherStateMeta(display.state, t);
|
|
48767
|
+
const running = display.state === "running";
|
|
48768
|
+
const paused = display.state === "paused";
|
|
48769
|
+
const press = (fn, patch) => {
|
|
48770
|
+
if (busy) return;
|
|
48771
|
+
applyOptimistic(patch);
|
|
48772
|
+
fn();
|
|
48773
|
+
};
|
|
48774
|
+
if (layout === "compact") {
|
|
48775
|
+
const saltWarn = display.saltLevel === "low" || display.saltLevel === "empty";
|
|
48776
|
+
const rinseWarn = display.rinseAidLevel === "low" || display.rinseAidLevel === "empty";
|
|
48777
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48778
|
+
className: "inline-flex items-center gap-1.5 max-w-full",
|
|
48779
|
+
children: [
|
|
48780
|
+
display.doorOpen && /* @__PURE__ */ jsx("span", {
|
|
48781
|
+
className: "inline-flex text-warning shrink-0",
|
|
48782
|
+
title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
48783
|
+
"aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
48784
|
+
children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
|
|
48785
|
+
}),
|
|
48786
|
+
/* @__PURE__ */ jsx("span", {
|
|
48787
|
+
className: cn("text-xs font-medium tabular-nums shrink-0", meta.tone),
|
|
48788
|
+
children: meta.label
|
|
48789
|
+
}),
|
|
48790
|
+
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48791
|
+
className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
|
|
48792
|
+
title: display.program,
|
|
48793
|
+
children: display.program
|
|
48794
|
+
}),
|
|
48795
|
+
display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
|
|
48796
|
+
className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
|
|
48797
|
+
children: [
|
|
48798
|
+
/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
|
|
48799
|
+
display.remainingMinutes,
|
|
48800
|
+
"m"
|
|
48801
|
+
]
|
|
48802
|
+
}),
|
|
48803
|
+
saltWarn && /* @__PURE__ */ jsx("span", {
|
|
48804
|
+
className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
|
|
48805
|
+
children: t("uiLibrary.dishwasher.salt", "Salt")
|
|
48806
|
+
}),
|
|
48807
|
+
rinseWarn && /* @__PURE__ */ jsx("span", {
|
|
48808
|
+
className: cn("text-[10px] font-medium shrink-0", consumableTone(display.rinseAidLevel)),
|
|
48809
|
+
children: t("uiLibrary.dishwasher.rinseAid", "Rinse")
|
|
48810
|
+
}),
|
|
48811
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48812
|
+
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48813
|
+
busy: busy || !display.remoteStartAllowed,
|
|
48814
|
+
active: running,
|
|
48815
|
+
onClick: () => press(() => cap.start({}), {
|
|
48816
|
+
state: "running",
|
|
48817
|
+
remoteStartAllowed: false
|
|
48818
|
+
}),
|
|
48819
|
+
children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
|
|
48820
|
+
}),
|
|
48821
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48822
|
+
label: t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48823
|
+
busy: busy || !running,
|
|
48824
|
+
active: paused,
|
|
48825
|
+
onClick: () => press(() => cap.pause({}), { state: "paused" }),
|
|
48826
|
+
children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
|
|
48827
|
+
})
|
|
48828
|
+
]
|
|
48829
|
+
});
|
|
48830
|
+
}
|
|
48831
|
+
const programs = display.availablePrograms;
|
|
48832
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48833
|
+
className: "flex flex-col gap-3 rounded-lg border border-border bg-surface p-4",
|
|
48834
|
+
children: [
|
|
48835
|
+
/* @__PURE__ */ jsxs("div", {
|
|
48836
|
+
className: "flex items-start gap-4",
|
|
48837
|
+
children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
|
|
48838
|
+
state: display.state,
|
|
48839
|
+
progressPercent: display.progressPercent
|
|
48840
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
48841
|
+
className: "flex min-w-0 flex-1 flex-col gap-2",
|
|
48842
|
+
children: [
|
|
48843
|
+
/* @__PURE__ */ jsxs("div", {
|
|
48844
|
+
className: "flex flex-wrap items-center gap-2",
|
|
48845
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
48846
|
+
className: cn("text-3xl font-semibold", meta.tone),
|
|
48847
|
+
children: meta.label
|
|
48848
|
+
}), !display.powerOn && /* @__PURE__ */ jsx("span", {
|
|
48849
|
+
className: "text-xs font-medium text-foreground-subtle",
|
|
48850
|
+
children: t("uiLibrary.dishwasher.powerOff", "Power off")
|
|
48851
|
+
})]
|
|
48852
|
+
}),
|
|
48853
|
+
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48854
|
+
className: "text-sm text-foreground-subtle",
|
|
48855
|
+
children: display.program
|
|
48856
|
+
}),
|
|
48857
|
+
display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
|
|
48858
|
+
className: "flex items-center gap-2",
|
|
48859
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
48860
|
+
className: "h-1.5 flex-1 rounded bg-surface-hover overflow-hidden",
|
|
48861
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
48862
|
+
className: "h-full bg-primary transition-[width] duration-500",
|
|
48863
|
+
style: { width: `${Math.max(0, Math.min(100, display.progressPercent))}%` }
|
|
48864
|
+
})
|
|
48865
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
48866
|
+
className: "tabular-nums text-xs text-foreground-subtle",
|
|
48867
|
+
children: [Math.round(display.progressPercent), "%"]
|
|
48868
|
+
})]
|
|
48869
|
+
}),
|
|
48870
|
+
/* @__PURE__ */ jsxs("div", {
|
|
48871
|
+
className: "flex flex-wrap gap-3",
|
|
48872
|
+
children: [
|
|
48873
|
+
/* @__PURE__ */ jsx(ConsumableBadge, {
|
|
48874
|
+
label: t("uiLibrary.dishwasher.salt", "Salt"),
|
|
48875
|
+
level: display.saltLevel
|
|
48876
|
+
}),
|
|
48877
|
+
/* @__PURE__ */ jsx(ConsumableBadge, {
|
|
48878
|
+
label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
|
|
48879
|
+
level: display.rinseAidLevel
|
|
48880
|
+
}),
|
|
48881
|
+
display.doorOpen && /* @__PURE__ */ jsxs("span", {
|
|
48882
|
+
className: "inline-flex items-center gap-1 text-xs text-warning",
|
|
48883
|
+
children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
|
|
48884
|
+
})
|
|
48885
|
+
]
|
|
48886
|
+
}),
|
|
48887
|
+
display.errorCode != null && display.errorCode !== 0 && /* @__PURE__ */ jsxs("div", {
|
|
48888
|
+
className: "inline-flex items-center gap-1 text-xs text-destructive",
|
|
48889
|
+
children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel ?? t("uiLibrary.dishwasher.errorCode", "Error {{code}}", { code: display.errorCode }) })]
|
|
48890
|
+
}),
|
|
48891
|
+
/* @__PURE__ */ jsxs("div", {
|
|
48892
|
+
className: "flex flex-wrap items-center gap-2",
|
|
48893
|
+
children: [
|
|
48894
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48895
|
+
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48896
|
+
busy: busy || !display.remoteStartAllowed,
|
|
48897
|
+
active: running,
|
|
48898
|
+
onClick: () => press(() => cap.start({}), {
|
|
48899
|
+
state: "running",
|
|
48900
|
+
remoteStartAllowed: false
|
|
48901
|
+
}),
|
|
48902
|
+
children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
|
|
48903
|
+
}),
|
|
48904
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48905
|
+
label: t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48906
|
+
busy: busy || !running,
|
|
48907
|
+
active: paused,
|
|
48908
|
+
onClick: () => press(() => cap.pause({}), { state: "paused" }),
|
|
48909
|
+
children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
|
|
48910
|
+
}),
|
|
48911
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48912
|
+
label: t("uiLibrary.dishwasher.stop", "Stop"),
|
|
48913
|
+
busy,
|
|
48914
|
+
active: false,
|
|
48915
|
+
onClick: () => press(() => cap.stop({}), {
|
|
48916
|
+
state: "idle",
|
|
48917
|
+
remainingMinutes: null
|
|
48918
|
+
}),
|
|
48919
|
+
children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
|
|
48920
|
+
}),
|
|
48921
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48922
|
+
label: t("uiLibrary.dishwasher.power", "Power"),
|
|
48923
|
+
busy,
|
|
48924
|
+
active: display.powerOn,
|
|
48925
|
+
onClick: () => {
|
|
48926
|
+
const next = !display.powerOn;
|
|
48927
|
+
press(() => cap.setPower({ on: next }), { powerOn: next });
|
|
48928
|
+
},
|
|
48929
|
+
children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
|
|
48930
|
+
})
|
|
48931
|
+
]
|
|
48932
|
+
})
|
|
48933
|
+
]
|
|
48934
|
+
})]
|
|
48935
|
+
}),
|
|
48936
|
+
programs.length > 0 && /* @__PURE__ */ jsxs("label", {
|
|
48937
|
+
className: "flex items-center gap-2 text-xs text-foreground-subtle",
|
|
48938
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
48939
|
+
className: "w-16 shrink-0",
|
|
48940
|
+
children: t("uiLibrary.dishwasher.program", "Program")
|
|
48941
|
+
}), /* @__PURE__ */ jsxs("select", {
|
|
48942
|
+
"aria-label": t("uiLibrary.dishwasher.program", "Program"),
|
|
48943
|
+
value: display.program ?? "",
|
|
48944
|
+
disabled: busy,
|
|
48945
|
+
onChange: (e) => {
|
|
48946
|
+
const program = e.target.value;
|
|
48947
|
+
if (!program) return;
|
|
48948
|
+
applyOptimistic({ program });
|
|
48949
|
+
cap.setProgram({ program });
|
|
48950
|
+
},
|
|
48951
|
+
onClick: (e) => {
|
|
48952
|
+
e.stopPropagation();
|
|
48953
|
+
},
|
|
48954
|
+
className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
|
|
48955
|
+
children: [display.program == null && /* @__PURE__ */ jsx("option", {
|
|
48956
|
+
value: "",
|
|
48957
|
+
children: "—"
|
|
48958
|
+
}), programs.map((p) => /* @__PURE__ */ jsx("option", {
|
|
48959
|
+
value: p,
|
|
48960
|
+
children: p
|
|
48961
|
+
}, p))]
|
|
48962
|
+
})]
|
|
48963
|
+
}),
|
|
48964
|
+
/* @__PURE__ */ jsxs("div", {
|
|
48965
|
+
className: "flex flex-wrap gap-4 text-xs",
|
|
48966
|
+
children: [
|
|
48967
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48968
|
+
label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
|
|
48969
|
+
checked: display.halfLoad,
|
|
48970
|
+
busy: busy || optionTogglesLocked,
|
|
48971
|
+
onChange: (on) => {
|
|
48972
|
+
applyOptimistic({ halfLoad: on });
|
|
48973
|
+
cap.setHalfLoad({ on });
|
|
48974
|
+
}
|
|
48975
|
+
}),
|
|
48976
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48977
|
+
label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
|
|
48978
|
+
checked: display.hygienePlus,
|
|
48979
|
+
busy: busy || optionTogglesLocked,
|
|
48980
|
+
onChange: (on) => {
|
|
48981
|
+
applyOptimistic({ hygienePlus: on });
|
|
48982
|
+
cap.setHygienePlus({ on });
|
|
48983
|
+
}
|
|
48984
|
+
}),
|
|
48985
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48986
|
+
label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
|
|
48987
|
+
checked: display.extraDry,
|
|
48988
|
+
busy: busy || optionTogglesLocked,
|
|
48989
|
+
onChange: (on) => {
|
|
48990
|
+
applyOptimistic({ extraDry: on });
|
|
48991
|
+
cap.setExtraDry({ on });
|
|
48992
|
+
}
|
|
48993
|
+
}),
|
|
48994
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48995
|
+
label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
|
|
48996
|
+
checked: display.intensiveZone,
|
|
48997
|
+
busy: busy || optionTogglesLocked,
|
|
48998
|
+
onChange: (on) => {
|
|
48999
|
+
applyOptimistic({ intensiveZone: on });
|
|
49000
|
+
cap.setIntensiveZone({ on });
|
|
49001
|
+
}
|
|
49002
|
+
}),
|
|
49003
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49004
|
+
label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
|
|
49005
|
+
checked: display.varioSpeedPlus,
|
|
49006
|
+
busy: busy || optionTogglesLocked,
|
|
49007
|
+
onChange: (on) => {
|
|
49008
|
+
applyOptimistic({ varioSpeedPlus: on });
|
|
49009
|
+
cap.setVarioSpeedPlus({ on });
|
|
49010
|
+
}
|
|
49011
|
+
}),
|
|
49012
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49013
|
+
label: t("uiLibrary.dishwasher.childLock", "Child lock"),
|
|
49014
|
+
checked: display.childLock,
|
|
49015
|
+
busy,
|
|
49016
|
+
onChange: (on) => {
|
|
49017
|
+
applyOptimistic({ childLock: on });
|
|
49018
|
+
cap.setChildLock({ on });
|
|
49019
|
+
}
|
|
49020
|
+
})
|
|
49021
|
+
]
|
|
49022
|
+
})
|
|
49023
|
+
]
|
|
49024
|
+
});
|
|
49025
|
+
}
|
|
49026
|
+
function ToggleRow({ label, checked, busy, onChange }) {
|
|
49027
|
+
return /* @__PURE__ */ jsxs("label", {
|
|
49028
|
+
className: "inline-flex items-center gap-2 cursor-pointer",
|
|
49029
|
+
children: [/* @__PURE__ */ jsx("input", {
|
|
49030
|
+
type: "checkbox",
|
|
49031
|
+
checked,
|
|
49032
|
+
disabled: busy,
|
|
49033
|
+
onChange: (e) => {
|
|
49034
|
+
onChange(e.target.checked);
|
|
49035
|
+
},
|
|
49036
|
+
onClick: (e) => {
|
|
49037
|
+
e.stopPropagation();
|
|
49038
|
+
},
|
|
49039
|
+
className: "rounded border-border"
|
|
49040
|
+
}), /* @__PURE__ */ jsx("span", { children: label })]
|
|
49041
|
+
});
|
|
49042
|
+
}
|
|
49043
|
+
function DishwasherInlineControl(props) {
|
|
49044
|
+
return /* @__PURE__ */ jsx(DishwasherPanel, {
|
|
49045
|
+
...props,
|
|
49046
|
+
layout: "compact"
|
|
49047
|
+
});
|
|
49048
|
+
}
|
|
49049
|
+
function DishwasherHeroCard(props) {
|
|
49050
|
+
return /* @__PURE__ */ jsx(DishwasherPanel, {
|
|
49051
|
+
...props,
|
|
49052
|
+
layout: "full"
|
|
49053
|
+
});
|
|
49054
|
+
}
|
|
49055
|
+
//#endregion
|
|
49056
|
+
//#region src/composites/device-controls/heating-valve-readout.tsx
|
|
49057
|
+
function formatHeatingValvePosition(position) {
|
|
49058
|
+
return position !== null ? `${position}%` : "—";
|
|
49059
|
+
}
|
|
49060
|
+
function HeatingValveReadout({ trpc, deviceId, layout }) {
|
|
49061
|
+
const t = useUiText();
|
|
49062
|
+
const { cap, slice } = useDeviceCapability({
|
|
49063
|
+
trpc,
|
|
49064
|
+
deviceId,
|
|
49065
|
+
cap: (d) => d.heatingValve,
|
|
49066
|
+
slice: (d) => d.state.heatingValve
|
|
49067
|
+
});
|
|
49068
|
+
if (cap === void 0 || slice === void 0) return null;
|
|
49069
|
+
const label = t("uiLibrary.heatingValveReadout.valve", "Valve");
|
|
49070
|
+
const value = formatHeatingValvePosition(slice.position);
|
|
49071
|
+
if (layout === "compact") return /* @__PURE__ */ jsx("span", {
|
|
49072
|
+
className: "inline-flex items-center text-xs tabular-nums text-foreground-subtle",
|
|
49073
|
+
"aria-label": `${label} ${value}`,
|
|
49074
|
+
children: value
|
|
49075
|
+
});
|
|
49076
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
49077
|
+
className: "flex items-center gap-2 text-xs tabular-nums text-foreground-subtle",
|
|
49078
|
+
children: [/* @__PURE__ */ jsx("span", { children: label }), /* @__PURE__ */ jsx("span", {
|
|
49079
|
+
className: "font-medium text-foreground",
|
|
49080
|
+
children: value
|
|
49081
|
+
})]
|
|
49082
|
+
});
|
|
49083
|
+
}
|
|
49084
|
+
//#endregion
|
|
48526
49085
|
//#region src/composites/device-controls/ac-panel.tsx
|
|
49086
|
+
/** Modes that mean the device can cool, dry, or move air — an air conditioner. */
|
|
49087
|
+
var COOLING_MODES = new Set([
|
|
49088
|
+
"cool",
|
|
49089
|
+
"heat_cool",
|
|
49090
|
+
"dry",
|
|
49091
|
+
"fan_only"
|
|
49092
|
+
]);
|
|
49093
|
+
/** A heater offers heat (and maybe auto/off) and none of the cooling modes. */
|
|
49094
|
+
function climateOffersCooling(modes) {
|
|
49095
|
+
return modes.some((mode) => COOLING_MODES.has(mode));
|
|
49096
|
+
}
|
|
49097
|
+
/** Setpoint track bounds. Absent when the integration did not report both ends. */
|
|
49098
|
+
function climateSetpointBounds(status) {
|
|
49099
|
+
const min = status.minTemp;
|
|
49100
|
+
const max = status.maxTemp;
|
|
49101
|
+
if (typeof min !== "number" || typeof max !== "number") return null;
|
|
49102
|
+
if (!Number.isFinite(min) || !Number.isFinite(max) || max <= min) return null;
|
|
49103
|
+
return {
|
|
49104
|
+
min,
|
|
49105
|
+
max
|
|
49106
|
+
};
|
|
49107
|
+
}
|
|
49108
|
+
/** Map a 0–1 drag fraction onto the setpoint, snapped to `tempStep`. */
|
|
49109
|
+
function climateTargetFromFraction(fraction, bounds, tempStep) {
|
|
49110
|
+
const step = resolveClimateTempStep(tempStep);
|
|
49111
|
+
const clamped = Math.min(1, Math.max(0, fraction));
|
|
49112
|
+
const raw = bounds.min + clamped * (bounds.max - bounds.min);
|
|
49113
|
+
const steps = Math.round((raw - bounds.min) / step);
|
|
49114
|
+
const snapped = bounds.min + steps * step;
|
|
49115
|
+
const rounded = Math.round(snapped * 1e3) / 1e3;
|
|
49116
|
+
return Math.min(bounds.max, Math.max(bounds.min, rounded));
|
|
49117
|
+
}
|
|
48527
49118
|
/** AC-appropriate short mode labels. Exhaustive over HvacMode. */
|
|
48528
49119
|
function modeLabel(t, mode) {
|
|
48529
49120
|
switch (mode) {
|
|
@@ -48557,9 +49148,6 @@ var MODE_ACCENT = {
|
|
|
48557
49148
|
dry: "#22d3ee",
|
|
48558
49149
|
off: "#a1a1aa"
|
|
48559
49150
|
};
|
|
48560
|
-
/** Practical AC setpoint range (Celsius) for the target range track. */
|
|
48561
|
-
var TARGET_MIN = 16;
|
|
48562
|
-
var TARGET_MAX = 30;
|
|
48563
49151
|
/** Title-case a snake/lower token for a selector option ('medium_low' → 'Medium
|
|
48564
49152
|
* low', 'turbo' → 'Turbo'). Shared by the fan + preset selectors. */
|
|
48565
49153
|
function fanLabel(token) {
|
|
@@ -48646,7 +49234,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48646
49234
|
onClick: (e) => {
|
|
48647
49235
|
e.stopPropagation();
|
|
48648
49236
|
if (!busy && display.target !== null) {
|
|
48649
|
-
const next = display.target -
|
|
49237
|
+
const next = nextClimateTarget(display.target, -1, display);
|
|
48650
49238
|
applyOptimistic({ target: next });
|
|
48651
49239
|
cap.setTarget({ target: next });
|
|
48652
49240
|
}
|
|
@@ -48660,7 +49248,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48660
49248
|
onClick: (e) => {
|
|
48661
49249
|
e.stopPropagation();
|
|
48662
49250
|
if (!busy && display.target !== null) {
|
|
48663
|
-
const next = display.target
|
|
49251
|
+
const next = nextClimateTarget(display.target, 1, display);
|
|
48664
49252
|
applyOptimistic({ target: next });
|
|
48665
49253
|
cap.setTarget({ target: next });
|
|
48666
49254
|
}
|
|
@@ -48690,6 +49278,8 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48690
49278
|
});
|
|
48691
49279
|
const accent = MODE_ACCENT[display.mode];
|
|
48692
49280
|
const on = display.mode !== "off";
|
|
49281
|
+
const heatingOnly = !climateOffersCooling(display.availableModes);
|
|
49282
|
+
const setpointBounds = climateSetpointBounds(display);
|
|
48693
49283
|
const CurrentPresetIcon = presetIcon(display.preset);
|
|
48694
49284
|
const boost = display.preset === "turbo";
|
|
48695
49285
|
const period = Math.max(.55, airflowPeriodSec(display.fanMode) * (boost ? .6 : 1));
|
|
@@ -48706,11 +49296,12 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48706
49296
|
children: [
|
|
48707
49297
|
/* @__PURE__ */ jsx("div", {
|
|
48708
49298
|
className: "pointer-events-none absolute inset-0 opacity-60",
|
|
48709
|
-
children: /* @__PURE__ */ jsx(AirflowViz, {
|
|
49299
|
+
children: heatingOnly && !on ? /* @__PURE__ */ jsx(RadiatorFins, {}) : /* @__PURE__ */ jsx(AirflowViz, {
|
|
48710
49300
|
mode: display.mode,
|
|
48711
49301
|
accent,
|
|
48712
49302
|
periodSec: period,
|
|
48713
|
-
swaying
|
|
49303
|
+
swaying,
|
|
49304
|
+
forceRising: heatingOnly
|
|
48714
49305
|
})
|
|
48715
49306
|
}),
|
|
48716
49307
|
/* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 bg-gradient-to-b from-surface/50 via-transparent to-surface/50" }),
|
|
@@ -48728,6 +49319,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48728
49319
|
children: [
|
|
48729
49320
|
/* @__PURE__ */ jsx(ModeIcon, {
|
|
48730
49321
|
mode: display.mode,
|
|
49322
|
+
heatingOnly,
|
|
48731
49323
|
className: "h-3.5 w-3.5"
|
|
48732
49324
|
}),
|
|
48733
49325
|
modeLabel(t, display.mode),
|
|
@@ -48754,7 +49346,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48754
49346
|
disabled: busy,
|
|
48755
49347
|
onClick: () => {
|
|
48756
49348
|
if (busy || display.target === null) return;
|
|
48757
|
-
const next = display.target -
|
|
49349
|
+
const next = nextClimateTarget(display.target, -1, display);
|
|
48758
49350
|
applyOptimistic({ target: next });
|
|
48759
49351
|
cap.setTarget({ target: next });
|
|
48760
49352
|
}
|
|
@@ -48776,19 +49368,29 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48776
49368
|
disabled: busy,
|
|
48777
49369
|
onClick: () => {
|
|
48778
49370
|
if (busy || display.target === null) return;
|
|
48779
|
-
const next = display.target
|
|
49371
|
+
const next = nextClimateTarget(display.target, 1, display);
|
|
48780
49372
|
applyOptimistic({ target: next });
|
|
48781
49373
|
cap.setTarget({ target: next });
|
|
48782
49374
|
}
|
|
48783
49375
|
})
|
|
48784
49376
|
]
|
|
48785
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
48786
|
-
className: "relative z-10 w-
|
|
49377
|
+
}), setpointBounds !== null && /* @__PURE__ */ jsx("div", {
|
|
49378
|
+
className: "relative z-10 w-full px-1",
|
|
48787
49379
|
children: /* @__PURE__ */ jsx(RangeTrack, {
|
|
48788
49380
|
value: display.target,
|
|
48789
|
-
min:
|
|
48790
|
-
max:
|
|
48791
|
-
|
|
49381
|
+
min: setpointBounds.min,
|
|
49382
|
+
max: setpointBounds.max,
|
|
49383
|
+
step: display.tempStep,
|
|
49384
|
+
accent,
|
|
49385
|
+
disabled: busy,
|
|
49386
|
+
label: t("uiLibrary.acPanel.setpoint", "Setpoint"),
|
|
49387
|
+
onPreview: (next) => {
|
|
49388
|
+
applyOptimistic({ target: next });
|
|
49389
|
+
},
|
|
49390
|
+
onCommit: (next) => {
|
|
49391
|
+
applyOptimistic({ target: next });
|
|
49392
|
+
cap.setTarget({ target: next });
|
|
49393
|
+
}
|
|
48792
49394
|
})
|
|
48793
49395
|
})] }) : /* @__PURE__ */ jsxs("div", {
|
|
48794
49396
|
className: "relative z-10 flex items-baseline gap-0.5",
|
|
@@ -48812,6 +49414,7 @@ function AcPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48812
49414
|
className: "flex",
|
|
48813
49415
|
children: /* @__PURE__ */ jsx(ModeIcon, {
|
|
48814
49416
|
mode: display.mode,
|
|
49417
|
+
heatingOnly,
|
|
48815
49418
|
className: "h-4 w-4"
|
|
48816
49419
|
})
|
|
48817
49420
|
}),
|
|
@@ -48895,9 +49498,8 @@ function Field({ label, children }) {
|
|
|
48895
49498
|
}), children]
|
|
48896
49499
|
});
|
|
48897
49500
|
}
|
|
48898
|
-
function ModeIcon({ mode, className }) {
|
|
48899
|
-
|
|
48900
|
-
return /* @__PURE__ */ jsx(Icon, {
|
|
49501
|
+
function ModeIcon({ mode, heatingOnly = false, className }) {
|
|
49502
|
+
return /* @__PURE__ */ jsx(heatingOnly && mode === "heat" ? Heater : MODE_ICON[mode], {
|
|
48901
49503
|
className,
|
|
48902
49504
|
"aria-hidden": true
|
|
48903
49505
|
});
|
|
@@ -48947,11 +49549,89 @@ function RoundStep({ label, symbol, disabled, onClick }) {
|
|
|
48947
49549
|
children: symbol
|
|
48948
49550
|
});
|
|
48949
49551
|
}
|
|
48950
|
-
/**
|
|
48951
|
-
function RangeTrack({ value, min, max, accent }) {
|
|
48952
|
-
const
|
|
49552
|
+
/** Setpoint track. Drag previews; the command is sent when the pointer is released. */
|
|
49553
|
+
function RangeTrack({ value, min, max, step, accent, disabled, label, onPreview, onCommit }) {
|
|
49554
|
+
const trackRef = useRef(null);
|
|
49555
|
+
const draggingRef = useRef(false);
|
|
49556
|
+
const [draft, setDraft] = useState(null);
|
|
49557
|
+
const shown = draft ?? value;
|
|
49558
|
+
const pct = `${Math.min(1, Math.max(0, (shown - min) / (max - min))) * 100}%`;
|
|
49559
|
+
const tempAt = (clientX) => {
|
|
49560
|
+
const el = trackRef.current;
|
|
49561
|
+
if (el === null) return value;
|
|
49562
|
+
const rect = el.getBoundingClientRect();
|
|
49563
|
+
if (rect.width <= 0) return value;
|
|
49564
|
+
return climateTargetFromFraction((clientX - rect.left) / rect.width, {
|
|
49565
|
+
min,
|
|
49566
|
+
max
|
|
49567
|
+
}, step);
|
|
49568
|
+
};
|
|
49569
|
+
const onPointerDown = (event) => {
|
|
49570
|
+
if (disabled) return;
|
|
49571
|
+
event.stopPropagation();
|
|
49572
|
+
event.preventDefault();
|
|
49573
|
+
draggingRef.current = true;
|
|
49574
|
+
if (typeof event.currentTarget.setPointerCapture === "function") event.currentTarget.setPointerCapture(event.pointerId);
|
|
49575
|
+
const next = tempAt(event.clientX);
|
|
49576
|
+
setDraft(next);
|
|
49577
|
+
onPreview(next);
|
|
49578
|
+
};
|
|
49579
|
+
const onPointerMove = (event) => {
|
|
49580
|
+
if (disabled || !draggingRef.current) return;
|
|
49581
|
+
event.stopPropagation();
|
|
49582
|
+
const next = tempAt(event.clientX);
|
|
49583
|
+
setDraft(next);
|
|
49584
|
+
onPreview(next);
|
|
49585
|
+
};
|
|
49586
|
+
const endDrag = (event) => {
|
|
49587
|
+
if (!draggingRef.current) return;
|
|
49588
|
+
event.stopPropagation();
|
|
49589
|
+
draggingRef.current = false;
|
|
49590
|
+
const next = tempAt(event.clientX);
|
|
49591
|
+
setDraft(null);
|
|
49592
|
+
if (event.currentTarget.hasPointerCapture?.(event.pointerId) === true) event.currentTarget.releasePointerCapture(event.pointerId);
|
|
49593
|
+
onCommit(next);
|
|
49594
|
+
};
|
|
49595
|
+
const onKeyDown = (event) => {
|
|
49596
|
+
if (disabled) return;
|
|
49597
|
+
const current = draft ?? value;
|
|
49598
|
+
if (event.key === "ArrowRight" || event.key === "ArrowUp") {
|
|
49599
|
+
event.preventDefault();
|
|
49600
|
+
onCommit(nextClimateTarget(current, 1, {
|
|
49601
|
+
tempStep: step,
|
|
49602
|
+
minTemp: min,
|
|
49603
|
+
maxTemp: max
|
|
49604
|
+
}));
|
|
49605
|
+
} else if (event.key === "ArrowLeft" || event.key === "ArrowDown") {
|
|
49606
|
+
event.preventDefault();
|
|
49607
|
+
onCommit(nextClimateTarget(current, -1, {
|
|
49608
|
+
tempStep: step,
|
|
49609
|
+
minTemp: min,
|
|
49610
|
+
maxTemp: max
|
|
49611
|
+
}));
|
|
49612
|
+
} else if (event.key === "Home") {
|
|
49613
|
+
event.preventDefault();
|
|
49614
|
+
onCommit(min);
|
|
49615
|
+
} else if (event.key === "End") {
|
|
49616
|
+
event.preventDefault();
|
|
49617
|
+
onCommit(max);
|
|
49618
|
+
}
|
|
49619
|
+
};
|
|
48953
49620
|
return /* @__PURE__ */ jsxs("div", {
|
|
48954
|
-
|
|
49621
|
+
ref: trackRef,
|
|
49622
|
+
role: "slider",
|
|
49623
|
+
"aria-label": label,
|
|
49624
|
+
"aria-valuemin": min,
|
|
49625
|
+
"aria-valuemax": max,
|
|
49626
|
+
"aria-valuenow": shown,
|
|
49627
|
+
"aria-disabled": disabled,
|
|
49628
|
+
tabIndex: disabled ? -1 : 0,
|
|
49629
|
+
onPointerDown,
|
|
49630
|
+
onPointerMove,
|
|
49631
|
+
onPointerUp: endDrag,
|
|
49632
|
+
onPointerCancel: endDrag,
|
|
49633
|
+
onKeyDown,
|
|
49634
|
+
className: cn("mt-1 w-full touch-none select-none py-2", disabled ? "cursor-not-allowed opacity-40" : "cursor-ew-resize"),
|
|
48955
49635
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
48956
49636
|
className: "relative h-1.5 w-full rounded-full bg-surface-subtle",
|
|
48957
49637
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -48961,7 +49641,7 @@ function RangeTrack({ value, min, max, accent }) {
|
|
|
48961
49641
|
background: accent
|
|
48962
49642
|
}
|
|
48963
49643
|
}), /* @__PURE__ */ jsx("div", {
|
|
48964
|
-
className: "absolute top-1/2 h-3 w-3 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-surface shadow",
|
|
49644
|
+
className: "absolute top-1/2 h-3.5 w-3.5 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-surface shadow",
|
|
48965
49645
|
style: {
|
|
48966
49646
|
left: pct,
|
|
48967
49647
|
background: accent
|
|
@@ -48978,7 +49658,7 @@ function RangeTrack({ value, min, max, accent }) {
|
|
|
48978
49658
|
* vent; every active mode renders drifting particles that FALL (cool/dry/auto)
|
|
48979
49659
|
* or RISE (heat), with a horizontal sweep overlaid when a swing axis is active.
|
|
48980
49660
|
*/
|
|
48981
|
-
function AirflowViz({ mode, accent, periodSec, swaying }) {
|
|
49661
|
+
function AirflowViz({ mode, accent, periodSec, swaying, forceRising = false }) {
|
|
48982
49662
|
const columns = [
|
|
48983
49663
|
0,
|
|
48984
49664
|
1,
|
|
@@ -48987,7 +49667,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
|
|
|
48987
49667
|
4,
|
|
48988
49668
|
5
|
|
48989
49669
|
];
|
|
48990
|
-
const rising = mode === "heat";
|
|
49670
|
+
const rising = forceRising || mode === "heat";
|
|
48991
49671
|
const isDroplet = mode === "dry";
|
|
48992
49672
|
return /* @__PURE__ */ jsx("div", {
|
|
48993
49673
|
"aria-hidden": true,
|
|
@@ -49003,6 +49683,7 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
|
|
|
49003
49683
|
size: 56
|
|
49004
49684
|
})
|
|
49005
49685
|
}) : /* @__PURE__ */ jsx("div", {
|
|
49686
|
+
"data-testid": forceRising ? "climate-heat-rise" : void 0,
|
|
49006
49687
|
className: cn("acv-sway-wrap absolute inset-0", swaying && "acv-sway"),
|
|
49007
49688
|
style: swaying ? { animation: "acv-sway 2.6s ease-in-out infinite" } : void 0,
|
|
49008
49689
|
children: columns.map((i) => {
|
|
@@ -49025,6 +49706,23 @@ function AirflowViz({ mode, accent, periodSec, swaying }) {
|
|
|
49025
49706
|
})
|
|
49026
49707
|
});
|
|
49027
49708
|
}
|
|
49709
|
+
/** Still radiator fins — the off state of a heating-only climate. */
|
|
49710
|
+
function RadiatorFins() {
|
|
49711
|
+
return /* @__PURE__ */ jsx("div", {
|
|
49712
|
+
"data-testid": "climate-radiator",
|
|
49713
|
+
"aria-hidden": true,
|
|
49714
|
+
className: "flex h-full items-end justify-center gap-1.5 px-8 pb-3 opacity-40",
|
|
49715
|
+
children: [
|
|
49716
|
+
0,
|
|
49717
|
+
1,
|
|
49718
|
+
2,
|
|
49719
|
+
3,
|
|
49720
|
+
4,
|
|
49721
|
+
5,
|
|
49722
|
+
6
|
|
49723
|
+
].map((i) => /* @__PURE__ */ jsx("span", { className: "h-10 w-1.5 rounded-t-full bg-foreground-subtle" }, i))
|
|
49724
|
+
});
|
|
49725
|
+
}
|
|
49028
49726
|
/** Big spinning fan for `fan_only` mode. */
|
|
49029
49727
|
function FanBlades({ color, periodSec, size }) {
|
|
49030
49728
|
return /* @__PURE__ */ jsxs("svg", {
|
|
@@ -49191,16 +49889,33 @@ var MODE_ARC_COLOR = {
|
|
|
49191
49889
|
*/
|
|
49192
49890
|
function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic }) {
|
|
49193
49891
|
const t = useUiText();
|
|
49194
|
-
const
|
|
49892
|
+
const climate = useDeviceCapability({
|
|
49195
49893
|
trpc,
|
|
49196
49894
|
deviceId,
|
|
49197
49895
|
cap: (d) => d.climateControl,
|
|
49198
49896
|
slice: (d) => d.state.climateControl
|
|
49199
49897
|
});
|
|
49200
|
-
const
|
|
49201
|
-
|
|
49202
|
-
|
|
49203
|
-
|
|
49898
|
+
const valve = useDeviceCapability({
|
|
49899
|
+
trpc,
|
|
49900
|
+
deviceId,
|
|
49901
|
+
cap: (d) => d.heatingValve,
|
|
49902
|
+
slice: (d) => d.state.heatingValve
|
|
49903
|
+
});
|
|
49904
|
+
const { display, applyOptimistic } = useOptimisticSlice(climate.slice, { enabled: optimistic ?? true });
|
|
49905
|
+
const hasClimate = climate.cap !== void 0 && display !== void 0;
|
|
49906
|
+
const hasValve = valve.cap !== void 0;
|
|
49907
|
+
if (!hasClimate && !hasValve) return null;
|
|
49908
|
+
if (!hasClimate && hasValve) return /* @__PURE__ */ jsx("div", {
|
|
49909
|
+
className: "flex flex-col items-stretch gap-3 rounded-lg border border-border bg-surface p-4",
|
|
49910
|
+
children: /* @__PURE__ */ jsx(HeatingValveReadout, {
|
|
49911
|
+
trpc,
|
|
49912
|
+
deviceId,
|
|
49913
|
+
layout: "full"
|
|
49914
|
+
})
|
|
49915
|
+
});
|
|
49916
|
+
if (climate.cap === void 0 || display === void 0) return null;
|
|
49917
|
+
const cap = climate.cap;
|
|
49918
|
+
const busy = !climate.available;
|
|
49204
49919
|
const color = MODE_ARC_COLOR[display.mode];
|
|
49205
49920
|
const isRange = display.mode === "heat_cool" || display.targetLow !== null && display.targetHigh !== null;
|
|
49206
49921
|
const min = DEFAULT_TEMP_MIN;
|
|
@@ -49211,132 +49926,140 @@ function ThermostatHeroCard({ trpc, deviceId, features: _features, optimistic })
|
|
|
49211
49926
|
return /* @__PURE__ */ jsxs("div", {
|
|
49212
49927
|
"data-mode": display.mode,
|
|
49213
49928
|
className: cn("flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-4 transition-colors", MODE_COLOR[display.mode]),
|
|
49214
|
-
children: [
|
|
49215
|
-
|
|
49216
|
-
|
|
49217
|
-
|
|
49218
|
-
|
|
49219
|
-
|
|
49220
|
-
|
|
49221
|
-
|
|
49222
|
-
|
|
49223
|
-
|
|
49224
|
-
|
|
49225
|
-
|
|
49226
|
-
|
|
49227
|
-
|
|
49228
|
-
|
|
49229
|
-
|
|
49230
|
-
|
|
49231
|
-
|
|
49232
|
-
|
|
49233
|
-
color
|
|
49234
|
-
}),
|
|
49235
|
-
isRange ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
49236
|
-
"data-testid": "arc-knob",
|
|
49237
|
-
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49238
|
-
fraction: fractionLow,
|
|
49239
|
-
color,
|
|
49240
|
-
knobTopPx: THERMOSTAT_KNOB_TOP_PX,
|
|
49241
|
-
onDragFraction: (f) => {
|
|
49242
|
-
if (busy || display.targetHigh === null) return;
|
|
49243
|
-
const next = Math.min(fractionToTemp(f, min, max), display.targetHigh);
|
|
49244
|
-
applyOptimistic({ targetLow: next });
|
|
49245
|
-
cap.setTargetRange({
|
|
49246
|
-
targetLow: next,
|
|
49247
|
-
targetHigh: display.targetHigh
|
|
49248
|
-
});
|
|
49249
|
-
}
|
|
49250
|
-
})
|
|
49251
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
49252
|
-
"data-testid": "arc-knob",
|
|
49253
|
-
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49254
|
-
fraction: fractionHigh,
|
|
49255
|
-
color,
|
|
49256
|
-
knobTopPx: THERMOSTAT_KNOB_TOP_PX,
|
|
49257
|
-
onDragFraction: (f) => {
|
|
49258
|
-
if (busy || display.targetLow === null) return;
|
|
49259
|
-
const next = Math.max(fractionToTemp(f, min, max), display.targetLow);
|
|
49260
|
-
applyOptimistic({ targetHigh: next });
|
|
49261
|
-
cap.setTargetRange({
|
|
49262
|
-
targetLow: display.targetLow,
|
|
49263
|
-
targetHigh: next
|
|
49264
|
-
});
|
|
49265
|
-
}
|
|
49266
|
-
})
|
|
49267
|
-
})] }) : /* @__PURE__ */ jsx("div", {
|
|
49268
|
-
"data-testid": "arc-knob",
|
|
49269
|
-
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49929
|
+
children: [
|
|
49930
|
+
/* @__PURE__ */ jsxs("div", {
|
|
49931
|
+
className: "flex flex-col items-center gap-3",
|
|
49932
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
49933
|
+
className: "relative",
|
|
49934
|
+
style: {
|
|
49935
|
+
width: GAUGE_SIZE,
|
|
49936
|
+
height: GAUGE_SIZE
|
|
49937
|
+
},
|
|
49938
|
+
children: [
|
|
49939
|
+
isRange ? /* @__PURE__ */ jsx(GaugeRing, {
|
|
49940
|
+
mode: "band",
|
|
49941
|
+
band: {
|
|
49942
|
+
from: fractionLow,
|
|
49943
|
+
to: fractionHigh
|
|
49944
|
+
},
|
|
49945
|
+
color
|
|
49946
|
+
}) : /* @__PURE__ */ jsx(GaugeRing, {
|
|
49947
|
+
mode: "fill",
|
|
49270
49948
|
fraction: singleFraction,
|
|
49271
|
-
color
|
|
49272
|
-
|
|
49273
|
-
|
|
49274
|
-
|
|
49275
|
-
|
|
49276
|
-
|
|
49277
|
-
|
|
49278
|
-
|
|
49279
|
-
|
|
49280
|
-
|
|
49281
|
-
|
|
49282
|
-
|
|
49283
|
-
|
|
49284
|
-
|
|
49285
|
-
|
|
49286
|
-
|
|
49287
|
-
|
|
49288
|
-
className: "text-lg text-foreground-subtle font-normal ml-0.5",
|
|
49289
|
-
children: "°"
|
|
49290
|
-
})]
|
|
49291
|
-
}),
|
|
49292
|
-
!isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
|
|
49293
|
-
className: "text-xs font-semibold",
|
|
49294
|
-
style: { color },
|
|
49295
|
-
children: t("uiLibrary.thermostatHeroCard.setTo", "set {{value}}°", { value: display.target })
|
|
49296
|
-
}),
|
|
49297
|
-
isRange && display.targetLow !== null && display.targetHigh !== null && /* @__PURE__ */ jsxs("div", {
|
|
49298
|
-
className: "text-xs font-semibold",
|
|
49299
|
-
style: { color },
|
|
49300
|
-
children: [
|
|
49301
|
-
display.targetLow,
|
|
49302
|
-
"° – ",
|
|
49303
|
-
display.targetHigh,
|
|
49304
|
-
"°"
|
|
49305
|
-
]
|
|
49949
|
+
color
|
|
49950
|
+
}),
|
|
49951
|
+
isRange ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
49952
|
+
"data-testid": "arc-knob",
|
|
49953
|
+
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49954
|
+
fraction: fractionLow,
|
|
49955
|
+
color,
|
|
49956
|
+
knobTopPx: THERMOSTAT_KNOB_TOP_PX,
|
|
49957
|
+
onDragFraction: (f) => {
|
|
49958
|
+
if (busy || display.targetHigh === null) return;
|
|
49959
|
+
const next = Math.min(fractionToTemp(f, min, max), display.targetHigh);
|
|
49960
|
+
applyOptimistic({ targetLow: next });
|
|
49961
|
+
cap.setTargetRange({
|
|
49962
|
+
targetLow: next,
|
|
49963
|
+
targetHigh: display.targetHigh
|
|
49964
|
+
});
|
|
49965
|
+
}
|
|
49306
49966
|
})
|
|
49307
|
-
|
|
49967
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
49968
|
+
"data-testid": "arc-knob",
|
|
49969
|
+
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49970
|
+
fraction: fractionHigh,
|
|
49971
|
+
color,
|
|
49972
|
+
knobTopPx: THERMOSTAT_KNOB_TOP_PX,
|
|
49973
|
+
onDragFraction: (f) => {
|
|
49974
|
+
if (busy || display.targetLow === null) return;
|
|
49975
|
+
const next = Math.max(fractionToTemp(f, min, max), display.targetLow);
|
|
49976
|
+
applyOptimistic({ targetHigh: next });
|
|
49977
|
+
cap.setTargetRange({
|
|
49978
|
+
targetLow: display.targetLow,
|
|
49979
|
+
targetHigh: next
|
|
49980
|
+
});
|
|
49981
|
+
}
|
|
49982
|
+
})
|
|
49983
|
+
})] }) : /* @__PURE__ */ jsx("div", {
|
|
49984
|
+
"data-testid": "arc-knob",
|
|
49985
|
+
children: /* @__PURE__ */ jsx(ArcKnob, {
|
|
49986
|
+
fraction: singleFraction,
|
|
49987
|
+
color,
|
|
49988
|
+
knobTopPx: THERMOSTAT_KNOB_TOP_PX,
|
|
49989
|
+
onDragFraction: (f) => {
|
|
49990
|
+
if (busy) return;
|
|
49991
|
+
const next = fractionToTemp(f, min, max);
|
|
49992
|
+
applyOptimistic({ target: next });
|
|
49993
|
+
cap.setTarget({ target: next });
|
|
49994
|
+
}
|
|
49995
|
+
})
|
|
49996
|
+
}),
|
|
49997
|
+
/* @__PURE__ */ jsxs("div", {
|
|
49998
|
+
className: "absolute inset-0 flex flex-col items-center justify-center gap-0.5 pointer-events-none",
|
|
49999
|
+
children: [
|
|
50000
|
+
/* @__PURE__ */ jsxs("div", {
|
|
50001
|
+
"data-testid": "current-temp",
|
|
50002
|
+
className: "text-4xl font-bold tabular-nums text-foreground leading-none",
|
|
50003
|
+
children: [display.currentTemp !== null ? display.currentTemp : "—", /* @__PURE__ */ jsx("span", {
|
|
50004
|
+
className: "text-lg text-foreground-subtle font-normal ml-0.5",
|
|
50005
|
+
children: "°"
|
|
50006
|
+
})]
|
|
50007
|
+
}),
|
|
50008
|
+
!isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
|
|
50009
|
+
className: "text-xs font-semibold",
|
|
50010
|
+
style: { color },
|
|
50011
|
+
children: t("uiLibrary.thermostatHeroCard.setTo", "set {{value}}°", { value: display.target })
|
|
50012
|
+
}),
|
|
50013
|
+
isRange && display.targetLow !== null && display.targetHigh !== null && /* @__PURE__ */ jsxs("div", {
|
|
50014
|
+
className: "text-xs font-semibold",
|
|
50015
|
+
style: { color },
|
|
50016
|
+
children: [
|
|
50017
|
+
display.targetLow,
|
|
50018
|
+
"° – ",
|
|
50019
|
+
display.targetHigh,
|
|
50020
|
+
"°"
|
|
50021
|
+
]
|
|
50022
|
+
})
|
|
50023
|
+
]
|
|
50024
|
+
})
|
|
50025
|
+
]
|
|
50026
|
+
}), !isRange && display.target !== null && /* @__PURE__ */ jsx("div", {
|
|
50027
|
+
className: "w-[200px]",
|
|
50028
|
+
children: /* @__PURE__ */ jsx(Stepper, {
|
|
50029
|
+
value: `${display.target}°`,
|
|
50030
|
+
onDelta: (d) => {
|
|
50031
|
+
if (busy || display.target === null) return;
|
|
50032
|
+
const next = display.target + d;
|
|
50033
|
+
applyOptimistic({ target: next });
|
|
50034
|
+
cap.setTarget({ target: next });
|
|
50035
|
+
}
|
|
49308
50036
|
})
|
|
49309
|
-
]
|
|
49310
|
-
}),
|
|
49311
|
-
|
|
49312
|
-
|
|
49313
|
-
|
|
49314
|
-
|
|
49315
|
-
|
|
49316
|
-
|
|
49317
|
-
|
|
49318
|
-
|
|
50037
|
+
})]
|
|
50038
|
+
}),
|
|
50039
|
+
hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
|
|
50040
|
+
trpc,
|
|
50041
|
+
deviceId,
|
|
50042
|
+
layout: "full"
|
|
50043
|
+
}) : null,
|
|
50044
|
+
/* @__PURE__ */ jsx("select", {
|
|
50045
|
+
"aria-label": t("uiLibrary.thermostatHeroCard.mode", "Mode"),
|
|
50046
|
+
value: display.mode,
|
|
50047
|
+
disabled: busy,
|
|
50048
|
+
onChange: (e) => {
|
|
50049
|
+
e.stopPropagation();
|
|
50050
|
+
const mode = e.target.value;
|
|
50051
|
+
if (!busy && mode) {
|
|
50052
|
+
applyOptimistic({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
|
|
50053
|
+
cap.setMode({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
|
|
49319
50054
|
}
|
|
49320
|
-
}
|
|
49321
|
-
|
|
49322
|
-
|
|
49323
|
-
|
|
49324
|
-
|
|
49325
|
-
|
|
49326
|
-
|
|
49327
|
-
|
|
49328
|
-
const mode = e.target.value;
|
|
49329
|
-
if (!busy && mode) {
|
|
49330
|
-
applyOptimistic({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
|
|
49331
|
-
cap.setMode({ mode: display.availableModes.find((m) => m === mode) ?? display.mode });
|
|
49332
|
-
}
|
|
49333
|
-
},
|
|
49334
|
-
className: cn("w-full rounded border border-border bg-surface px-3 py-1.5 text-sm", busy && "opacity-40 cursor-not-allowed"),
|
|
49335
|
-
children: display.availableModes.map((m) => /* @__PURE__ */ jsx("option", {
|
|
49336
|
-
value: m,
|
|
49337
|
-
children: m
|
|
49338
|
-
}, m))
|
|
49339
|
-
})]
|
|
50055
|
+
},
|
|
50056
|
+
className: cn("w-full rounded border border-border bg-surface px-3 py-1.5 text-sm", busy && "opacity-40 cursor-not-allowed"),
|
|
50057
|
+
children: display.availableModes.map((m) => /* @__PURE__ */ jsx("option", {
|
|
50058
|
+
value: m,
|
|
50059
|
+
children: m
|
|
50060
|
+
}, m))
|
|
50061
|
+
})
|
|
50062
|
+
]
|
|
49340
50063
|
});
|
|
49341
50064
|
}
|
|
49342
50065
|
//#endregion
|
|
@@ -50844,14 +51567,32 @@ function useClimateCapGuard(trpc, deviceId) {
|
|
|
50844
51567
|
});
|
|
50845
51568
|
return cap !== void 0;
|
|
50846
51569
|
}
|
|
50847
|
-
function
|
|
50848
|
-
|
|
50849
|
-
return /* @__PURE__ */ jsx(ClimatePanel, {
|
|
51570
|
+
function useHeatingValveCapGuard(trpc, deviceId) {
|
|
51571
|
+
const { cap } = useDeviceCapability({
|
|
50850
51572
|
trpc,
|
|
50851
51573
|
deviceId,
|
|
50852
|
-
|
|
50853
|
-
|
|
50854
|
-
|
|
51574
|
+
cap: (d) => d.heatingValve,
|
|
51575
|
+
slice: (d) => d.state.heatingValve
|
|
51576
|
+
});
|
|
51577
|
+
return cap !== void 0;
|
|
51578
|
+
}
|
|
51579
|
+
function ThermostatInlineControl({ trpc, deviceId, features, optimistic }) {
|
|
51580
|
+
const hasClimate = useClimateCapGuard(trpc, deviceId);
|
|
51581
|
+
const hasValve = useHeatingValveCapGuard(trpc, deviceId);
|
|
51582
|
+
if (!hasClimate && !hasValve) return null;
|
|
51583
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
51584
|
+
className: "inline-flex items-center gap-2",
|
|
51585
|
+
children: [hasClimate ? /* @__PURE__ */ jsx(ClimatePanel, {
|
|
51586
|
+
trpc,
|
|
51587
|
+
deviceId,
|
|
51588
|
+
features,
|
|
51589
|
+
layout: "compact",
|
|
51590
|
+
optimistic
|
|
51591
|
+
}) : null, hasValve ? /* @__PURE__ */ jsx(HeatingValveReadout, {
|
|
51592
|
+
trpc,
|
|
51593
|
+
deviceId,
|
|
51594
|
+
layout: "compact"
|
|
51595
|
+
}) : null]
|
|
50855
51596
|
});
|
|
50856
51597
|
}
|
|
50857
51598
|
function AcInlineControl({ trpc, deviceId, features, optimistic }) {
|
|
@@ -51016,6 +51757,10 @@ var CONTROL_KIND_COMPONENTS = {
|
|
|
51016
51757
|
InlineControl: PetFeederInlineControl,
|
|
51017
51758
|
HeroCard: PetFeederHeroCard
|
|
51018
51759
|
},
|
|
51760
|
+
dishwasher: {
|
|
51761
|
+
InlineControl: DishwasherInlineControl,
|
|
51762
|
+
HeroCard: DishwasherHeroCard
|
|
51763
|
+
},
|
|
51019
51764
|
script: {
|
|
51020
51765
|
InlineControl: ScriptInlineControl,
|
|
51021
51766
|
HeroCard: ScriptHeroCard
|
|
@@ -51092,7 +51837,8 @@ var CONTROL_FILLS = {
|
|
|
51092
51837
|
[DeviceType.Weather]: false,
|
|
51093
51838
|
[DeviceType.Container]: false,
|
|
51094
51839
|
[DeviceType.Image]: false,
|
|
51095
|
-
[DeviceType.PetFeeder]: false
|
|
51840
|
+
[DeviceType.PetFeeder]: false,
|
|
51841
|
+
[DeviceType.Dishwasher]: false
|
|
51096
51842
|
};
|
|
51097
51843
|
var DEVICE_TYPE_VALUES = new Set(Object.values(DeviceType));
|
|
51098
51844
|
/**
|
|
@@ -63695,12 +64441,12 @@ function mirror(input, t = defaultUiText) {
|
|
|
63695
64441
|
* Render inside `<Suspense>` at all call sites. */
|
|
63696
64442
|
var MaskShapeCanvas = lazy(() => import("./MaskShapeCanvas-C9cJlxvG.js").then((m) => ({ default: m.MaskShapeCanvas })));
|
|
63697
64443
|
/** Lazy-wrapped `MotionZonesSettings` — code-split off the main bundle. */
|
|
63698
|
-
var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-
|
|
64444
|
+
var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-C3Tj12yc.js").then((m) => ({ default: m.MotionZonesSettings })));
|
|
63699
64445
|
/** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
|
|
63700
64446
|
* same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
|
|
63701
64447
|
* inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
|
|
63702
|
-
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-
|
|
64448
|
+
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").then((m) => ({ default: m.SceneMonitorEditor })));
|
|
63703
64449
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
63704
|
-
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-
|
|
64450
|
+
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
63705
64451
|
//#endregion
|
|
63706
|
-
export { ShieldCheck as $, CircleX as $n, List as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Eye as An, AppShell, Battery as Ar, ArcKnob, Package as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Star as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, Database as Bn, BottomSheet, ArrowRight as Br, Breadcrumb, BrightnessPanel, Minus as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, 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, FlaskConical as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bot as Cr, Plane as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, Film as Dn, DoorbellRecentPanel, Bike as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pencil as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flame as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bird as Er, ErrorBox, Phone as Et, EventKindGlyph, EventStream, ExtensionsPanel, Target as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, Droplet as Fn, FormField$1 as FormField, Bath as Fr, MoveVertical as Ft, Smartphone as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Cloud as Gn, AirVent as Gr, GripTrack, GroupedModelSelector, Megaphone as Gt, Sprout as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Cpu as Hn, HoverZoomImage, ArrowDown as Hr, Mic as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Tag as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Download as In, InferenceConfigSelector, Input, Ban as Ir, MoveHorizontal as It, ItemFormDialog, SkipBack as J, CloudRain as Jn, Mail as Jt, SlidersHorizontal as K, KebabMenu, KeyValueList, CloudSun as Kn, Activity as Kr, Maximize2 as Kt, Sunrise as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, DoorOpen as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Baby as Lr, MousePointerClick as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, ExternalLink as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, BatteryMedium as Mr, Navigation as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EllipsisVertical as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryLow as Nr, Music as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Feather as On, OptionSelect, Bell as Or, PawPrint as Ot, Thermometer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, Droplets as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryFull as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Move as Pt, PtzPanel, ShieldOff as Q, Clapperboard as Qn, QrCode, LoaderCircle as Qt, Sun as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, DoorClosed as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, ArrowUp as Rr, Moon as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Footprints as Sn, SnapshotButton, SortHeaderButton, Box as Sr, Play as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlashlightOff as Tn, Tooltip, TooltipContent, TooltipTrigger, Blinds as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pin as Tt, Sparkles as U, UiTextProvider, UiTrans, Copy as Un, UnitPicker, ArrowDownToLine as Ur, MessageSquare as Ut, Square as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Crosshair as Vn, VodPlaybackProvider, ArrowLeft as Vr, Minimize2 as Vt, Snowflake as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cog as Wn, AlarmSmoke as Wr, Menu as Wt, Ship as X, CloudFog as Xn, LockOpen as Xt, Siren as Y, CloudLightning as Yn, Lock as Yt, Shield as Z, Clock as Zn, ZoneEditingProvider, LocateFixed as Zt, UtensilsCrossed as _, Grid2x2 as _n, Car as _r, Puzzle as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, Laugh as an, applyFleetQueryDefaults, applyPickerFilters, CircleCheck as ar, ariaSortForColumn, assignNodeColorId, ScrollText as at, UserCheck as b, badgeFor, bindsToModel, Gamepad2 as bn, Bus as br, Plug as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, ChevronsUpDown as cr, createAddonI18n, createSharedContext, createTheme, Sailboat as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, House as dn, dockBox, ChevronRight as dr, draftFromQuery, RotateCcw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, ListChecks as en, ensureMfHostInit, CircleStop as er, ShieldAlert as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, Hash as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronLeft as fr, freezeVerdict, RefreshCw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, GripHorizontal as gn, Cast as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, QrCode$1 as gt, Volume2 as h, hardwareLabel, Hammer as hn, Cat as hr, Radar as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, LayoutGrid as in, initialScrubState, insertAtSelection, CircleDot as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Search as it, Tractor as j, EyeOff as jn, BatteryWarning as jr, Network as jt, Trash2 as k, Fan as kn, BellRing as kr, Pause as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Image as ln, loadIconGlyphs, loadRemoteBundle, ChevronsDownUp as lr, Route as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hand as mn, mountAddonPage, mountPath, Check as mr, RadioTower as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Lightbulb as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CirclePlus as nr, Settings as nt, Workflow as o, offListSelections, Info as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleCheckBig as or, orphanDeviceLabel, Scan as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, HardDrive as pn, ChevronDown as pr, providerIcons, Radio as pt, SkipForward as q, CloudSnow as qn, MapPin as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Leaf as rn, roiTooLarge, rootSourceState, routerBasename, CirclePause as rr, Server as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Inbox as sn, sortRows, sortRowsByColumn, CircleAlert as sr, Save as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, Link2 as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleQuestionMark as tr, trainingRefusalText, translateAddonKey, trpc, Share2 as tt, typeLabel, WifiOff as u, ImageOff as un, ChevronUp as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, 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, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, RotateCw as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GraduationCap as vn, Camera as vr, Power as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Flashlight as wn, Bone as wr, writeStoredGroupBy, Pipette as wt, Upload as x, Funnel as xn, Bug as xr, Plus as xt, User as y, Gauge as yn, Cable as yr, PowerOff as yt, SunMedium as z, Dog as zn, ArrowUpToLine as zr, MonitorPlay as zt };
|
|
64452
|
+
export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, 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, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, 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, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetStatus, useDishwasherPause, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };
|