@camstack/ui-library 1.2.348 → 1.2.350
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/CHANGELOG.md +15 -0
- package/dist/{SceneMonitorEditor-BgqJYVdM.js → SceneMonitorEditor-A1U5eCrC.js} +1 -1
- package/dist/composites/device-controls/pet-fountain-panel.d.ts +12 -0
- package/dist/composites/device-controls/types.d.ts +1 -1
- package/dist/composites/export-entity-rows.d.ts +33 -0
- package/dist/composites/sectioned-page.d.ts +3 -0
- package/dist/generated/system-hooks.d.ts +20 -0
- package/dist/hooks/merge-detections.d.ts +16 -0
- package/dist/{icons-CWmwnulO.cjs → icons-BJpFQcLH.cjs} +1 -14
- package/dist/{icons-Bd6sbDsv.js → icons-Cf1xnXkh.js} +1 -14
- package/dist/index.cjs +879 -103
- package/dist/index.js +871 -106
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as __mfHostReact from "react";
|
|
|
5
5
|
import React, { Fragment, Suspense, cloneElement, createContext, createElement, forwardRef, lazy, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
6
6
|
import * as __mfHostReactJsxRuntime from "react/jsx-runtime";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, COMPOSER_ADDON_ID, CONTAINER_CHILD_PRIORITY, ConsumableLevelSchema, DEFAULT_DISPLAY_PREFERENCE, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEVICE_HISTORY_ENERGY_KEY, DEVICE_HISTORY_QUERY_MANY_MAX_ITEMS, DEVICE_TYPE_CONTROL_KIND, DISPLAY_PREFERENCES, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EventCategory, ExposedDeviceSchema, FIRST_LEVEL_MACRO_CLASSES, HISTORY_CATALOG, ICON_CATEGORIES, KNOWN_CAP_NAMES, MAX_SENSOR_TRIGGER_DEVICES, MODEL_PROVIDER_IDS, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NODE_COLOR_IDS, NodeColorIdSchema, PALETTE_ENTRY_IDS, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, QUANTITY_BASE, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_SOURCE_CAMSTACK_ADDON, REDACTED_SECRET, RecordingConfigSchema, RecordingStatusSchema, SECRET_CLEAR, SOURCE_CAP_ACTIVE_FIELD, STATIONARY_OVERLAY_STYLE, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, TIMEZONES, USE_ROOT_MODEL_SETTING_KEY, assignNodeColorId, assignNodeColorId as assignNodeColorId$1, baseUnitOf, buildModelVariantGroups, buildSubjectPath, bundledCamstack, canConvertUnit, canonicalIconKey, clearModelBoundOverrides, clearModelBoundSetting, clusterStepSettingFieldsFor, collectModelBoundKeys, consumableFormOf, consumableKindOf, createDeviceProxy, createLazyTrpcSource, createSliceHandle, dehydrateSchema, deriveRecordingMode, describeModelVariant, displayUnitFor, effectiveStepSettings, findTimezone, formatParkedFor, formatReading, hasModelBoundOverrides, iconCategoryLabel, iconsInCategory, isDrawableSubjectPath, isKeychainStoredField, isModelScopedStepSettingKey, isReadingQuantity, isRootSuppliableStepId, isSecretClear, isSecretFieldView, isSecretMarker, modelBindingKey, normalizeUnit, paintHex, parseOccupancyScope, projectSubjectPath, publicEventCategories, resolveContainerPrimaryChild, resolveDeviceControlKind, resolveIconKey, resolveModelBoundSetting, resolveRecordingProfiles, resolveRootSupply, resolveVariantModelId, resolveViewableDeviceIds, searchIcons, selectAssignedProfileSlots, stepSettingSource, subjectPathSampleFromBox, subjectPathSvgPoints, tryConvertUnit, unitsForDimension, withFieldFrom, withoutField, writeModelBoundSetting } from "@camstack/types";
|
|
8
|
+
import { ALL_CAPABILITY_DEFINITIONS, CAM_PROFILE_ORDER, CLIP_STILL_DISPOSITION_HEADER, CLIP_STILL_REASON_CODE_HEADER, CLIP_STILL_REASON_HEADER, COMPOSER_ADDON_ID, CONTAINER_CHILD_PRIORITY, ConsumableLevelSchema, DEFAULT_DISPLAY_PREFERENCE, DEFAULT_EVENTS_BAND_BUFFER_SEC, DEVICE_HISTORY_ENERGY_KEY, DEVICE_HISTORY_QUERY_MANY_MAX_ITEMS, DEVICE_TYPE_CONTROL_KIND, DISPLAY_PREFERENCES, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EXTENSION_SLOTS, EXTENSION_SLOT_IDS, EventCategory, ExportEntityKindSchema, ExposedDeviceSchema, ExposedEntitySchema, FIRST_LEVEL_MACRO_CLASSES, HISTORY_CATALOG, ICON_CATEGORIES, KNOWN_CAP_NAMES, MAX_SENSOR_TRIGGER_DEVICES, MODEL_PROVIDER_IDS, NAVIGATION_LIGHT_LEVEL_MAX, NAVIGATION_LIGHT_LEVEL_MIN, NODE_COLOR_IDS, NodeColorIdSchema, PALETTE_ENTRY_IDS, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, QUANTITY_BASE, RECORDING_AUDIO_TRIGGER_OFFERED_DBFS, RECORDING_SOURCE_CAMSTACK_ADDON, REDACTED_SECRET, RecordingConfigSchema, RecordingStatusSchema, SECRET_CLEAR, SOURCE_CAP_ACTIVE_FIELD, STATIONARY_OVERLAY_STYLE, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, TIMEZONES, USE_ROOT_MODEL_SETTING_KEY, assignNodeColorId, assignNodeColorId as assignNodeColorId$1, baseUnitOf, buildModelVariantGroups, buildSubjectPath, bundledCamstack, canConvertUnit, canonicalIconKey, clearModelBoundOverrides, clearModelBoundSetting, clusterStepSettingFieldsFor, collectModelBoundKeys, consumableFormOf, consumableKindOf, createDeviceProxy, createLazyTrpcSource, createSliceHandle, dehydrateSchema, deriveRecordingMode, describeModelVariant, displayUnitFor, effectiveStepSettings, findTimezone, formatParkedFor, formatReading, hasModelBoundOverrides, iconCategoryLabel, iconsInCategory, isDrawableSubjectPath, isKeychainStoredField, isModelScopedStepSettingKey, isReadingQuantity, isRootSuppliableStepId, isSecretClear, isSecretFieldView, isSecretMarker, modelBindingKey, normalizeUnit, paintHex, parseOccupancyScope, projectSubjectPath, publicEventCategories, resolveContainerPrimaryChild, resolveDeviceControlKind, resolveIconKey, resolveModelBoundSetting, resolveRecordingProfiles, resolveRootSupply, resolveVariantModelId, resolveViewableDeviceIds, searchIcons, selectAssignedProfileSlots, stepSettingSource, subjectPathSampleFromBox, subjectPathSvgPoints, tryConvertUnit, unitsForDimension, withFieldFrom, withoutField, writeModelBoundSetting } from "@camstack/types";
|
|
9
9
|
import * as __mfHostTrpcReactQuery from "@trpc/react-query";
|
|
10
10
|
import { createTRPCReact } from "@trpc/react-query";
|
|
11
11
|
import * as __mfHostReactDOM from "react-dom";
|
|
@@ -1682,6 +1682,19 @@ var EllipsisVertical = createLucideIcon("ellipsis-vertical", [
|
|
|
1682
1682
|
* This source code is licensed under the ISC license.
|
|
1683
1683
|
* See the LICENSE file in the root directory of this source tree.
|
|
1684
1684
|
*/
|
|
1685
|
+
var Eraser = createLucideIcon("eraser", [["path", {
|
|
1686
|
+
d: "M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21",
|
|
1687
|
+
key: "g5wo59"
|
|
1688
|
+
}], ["path", {
|
|
1689
|
+
d: "m5.082 11.09 8.828 8.828",
|
|
1690
|
+
key: "1wx5vj"
|
|
1691
|
+
}]]);
|
|
1692
|
+
/**
|
|
1693
|
+
* @license lucide-react v0.576.0 - ISC
|
|
1694
|
+
*
|
|
1695
|
+
* This source code is licensed under the ISC license.
|
|
1696
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
1697
|
+
*/
|
|
1685
1698
|
var ExternalLink = createLucideIcon("external-link", [
|
|
1686
1699
|
["path", {
|
|
1687
1700
|
d: "M15 3h6v6",
|
|
@@ -5376,6 +5389,11 @@ var DEVICE_TYPE_META = {
|
|
|
5376
5389
|
labelKey: "uiLibrary.deviceMeta.type.petFeeder",
|
|
5377
5390
|
labelFallback: "Pet feeder"
|
|
5378
5391
|
},
|
|
5392
|
+
[DeviceType.PetFountain]: {
|
|
5393
|
+
icon: Droplets,
|
|
5394
|
+
labelKey: "uiLibrary.deviceMeta.type.petFountain",
|
|
5395
|
+
labelFallback: "Pet fountain"
|
|
5396
|
+
},
|
|
5379
5397
|
[DeviceType.Dishwasher]: {
|
|
5380
5398
|
icon: Waves,
|
|
5381
5399
|
labelKey: "uiLibrary.deviceMeta.type.dishwasher",
|
|
@@ -5876,7 +5894,7 @@ function lucideExportName(key) {
|
|
|
5876
5894
|
function loadIconGlyphs() {
|
|
5877
5895
|
if (fullTable !== void 0) return Promise.resolve();
|
|
5878
5896
|
if (failure$1 !== void 0) return Promise.reject(failure$1);
|
|
5879
|
-
pending ??= import("./icons-
|
|
5897
|
+
pending ??= import("./icons-Cf1xnXkh.js").then((module) => {
|
|
5880
5898
|
fullTable = module;
|
|
5881
5899
|
publish();
|
|
5882
5900
|
}, (error) => {
|
|
@@ -11002,6 +11020,14 @@ var useDeviceExportListExposedDevices = trpc.deviceExport.listExposedDevices.use
|
|
|
11002
11020
|
var useDeviceExportExposeDevice = trpc.deviceExport.exposeDevice.useMutation;
|
|
11003
11021
|
/** Generated alias around `trpc.deviceExport.unexposeDevice.useMutation`. */
|
|
11004
11022
|
var useDeviceExportUnexposeDevice = trpc.deviceExport.unexposeDevice.useMutation;
|
|
11023
|
+
/** Generated alias around `trpc.deviceExport.listSupportedEntityKinds.useQuery`. */
|
|
11024
|
+
var useDeviceExportListSupportedEntityKinds = trpc.deviceExport.listSupportedEntityKinds.useQuery;
|
|
11025
|
+
/** Generated alias around `trpc.deviceExport.listExposedEntities.useQuery`. */
|
|
11026
|
+
var useDeviceExportListExposedEntities = trpc.deviceExport.listExposedEntities.useQuery;
|
|
11027
|
+
/** Generated alias around `trpc.deviceExport.exposeEntity.useMutation`. */
|
|
11028
|
+
var useDeviceExportExposeEntity = trpc.deviceExport.exposeEntity.useMutation;
|
|
11029
|
+
/** Generated alias around `trpc.deviceExport.unexposeEntity.useMutation`. */
|
|
11030
|
+
var useDeviceExportUnexposeEntity = trpc.deviceExport.unexposeEntity.useMutation;
|
|
11005
11031
|
/** Generated alias around `trpc.deviceExport.getDeviceSettingsContribution.useQuery`. */
|
|
11006
11032
|
var useDeviceExportGetDeviceSettingsContribution = trpc.deviceExport.getDeviceSettingsContribution.useQuery;
|
|
11007
11033
|
/** Generated alias around `trpc.deviceExport.getDeviceLiveContribution.useQuery`. */
|
|
@@ -11904,6 +11930,18 @@ var usePetFeederSetFeedSound = trpc.petFeeder.setFeedSound.useMutation;
|
|
|
11904
11930
|
var usePetFeederSetVolume = trpc.petFeeder.setVolume.useMutation;
|
|
11905
11931
|
/** Generated alias around `trpc.petFeeder.getStatus.useQuery`. */
|
|
11906
11932
|
var usePetFeederGetStatus = trpc.petFeeder.getStatus.useQuery;
|
|
11933
|
+
/** Generated alias around `trpc.petFountain.setPump.useMutation`. */
|
|
11934
|
+
var usePetFountainSetPump = trpc.petFountain.setPump.useMutation;
|
|
11935
|
+
/** Generated alias around `trpc.petFountain.setPumpInterval.useMutation`. */
|
|
11936
|
+
var usePetFountainSetPumpInterval = trpc.petFountain.setPumpInterval.useMutation;
|
|
11937
|
+
/** Generated alias around `trpc.petFountain.setPumpOnMinutes.useMutation`. */
|
|
11938
|
+
var usePetFountainSetPumpOnMinutes = trpc.petFountain.setPumpOnMinutes.useMutation;
|
|
11939
|
+
/** Generated alias around `trpc.petFountain.setPumpOffMinutes.useMutation`. */
|
|
11940
|
+
var usePetFountainSetPumpOffMinutes = trpc.petFountain.setPumpOffMinutes.useMutation;
|
|
11941
|
+
/** Generated alias around `trpc.petFountain.resetDailyConsumption.useMutation`. */
|
|
11942
|
+
var usePetFountainResetDailyConsumption = trpc.petFountain.resetDailyConsumption.useMutation;
|
|
11943
|
+
/** Generated alias around `trpc.petFountain.getStatus.useQuery`. */
|
|
11944
|
+
var usePetFountainGetStatus = trpc.petFountain.getStatus.useQuery;
|
|
11907
11945
|
/** Generated alias around `trpc.pipelineAnalytics.getActiveTracks.useQuery`. */
|
|
11908
11946
|
var usePipelineAnalyticsGetActiveTracks = trpc.pipelineAnalytics.getActiveTracks.useQuery;
|
|
11909
11947
|
/** Generated alias around `trpc.pipelineAnalytics.getTrack.useQuery`. */
|
|
@@ -48767,6 +48805,7 @@ var CONTROL_CAP_NAMES = [
|
|
|
48767
48805
|
"media-player",
|
|
48768
48806
|
"control",
|
|
48769
48807
|
"pet-feeder",
|
|
48808
|
+
"pet-fountain",
|
|
48770
48809
|
"dishwasher"
|
|
48771
48810
|
];
|
|
48772
48811
|
//#endregion
|
|
@@ -53057,6 +53096,10 @@ var HOLD_DELAY_MS = 350;
|
|
|
53057
53096
|
var HOLD_INTERVAL_MS = 70;
|
|
53058
53097
|
var HOLD_ACCEL_AFTER = 8;
|
|
53059
53098
|
var HOLD_FAST_STEP = 5;
|
|
53099
|
+
/** The slice stores the bowl as a mass in kilograms (D944); the card draws grams. */
|
|
53100
|
+
function bowlGrams(kilograms) {
|
|
53101
|
+
return kilograms === null ? null : Math.round(kilograms * 1e3);
|
|
53102
|
+
}
|
|
53060
53103
|
function clampPortion(grams) {
|
|
53061
53104
|
return Math.min(PET_FEEDER_MANUAL_FEED_MAX, Math.max(PET_FEEDER_MANUAL_FEED_MIN, grams));
|
|
53062
53105
|
}
|
|
@@ -53108,7 +53151,7 @@ function PetFeederPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
53108
53151
|
children: [/* @__PURE__ */ jsx(UtensilsCrossed, {
|
|
53109
53152
|
className: "h-3.5 w-3.5",
|
|
53110
53153
|
"aria-hidden": true
|
|
53111
|
-
}), display.bowlFood ?? "—"]
|
|
53154
|
+
}), bowlGrams(display.bowlFood) ?? "—"]
|
|
53112
53155
|
}),
|
|
53113
53156
|
onMains && /* @__PURE__ */ jsxs("span", {
|
|
53114
53157
|
className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle",
|
|
@@ -53154,7 +53197,7 @@ function PetFeederPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
53154
53197
|
/* @__PURE__ */ jsxs("div", {
|
|
53155
53198
|
className: "flex items-center gap-4 rounded-lg border border-border/50 bg-surface-subtle/40 p-3",
|
|
53156
53199
|
children: [/* @__PURE__ */ jsx(BowlGauge, {
|
|
53157
|
-
grams: display.bowlFood,
|
|
53200
|
+
grams: bowlGrams(display.bowlFood),
|
|
53158
53201
|
low: display.lowFood,
|
|
53159
53202
|
eating: display.eating
|
|
53160
53203
|
}), /* @__PURE__ */ jsxs("div", {
|
|
@@ -53164,7 +53207,7 @@ function PetFeederPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
53164
53207
|
children: [/* @__PURE__ */ jsx("span", {
|
|
53165
53208
|
className: "text-3xl font-bold leading-none tabular-nums",
|
|
53166
53209
|
style: { color: display.lowFood ? KIBBLE_LOW : KIBBLE },
|
|
53167
|
-
children: display.bowlFood ?? "—"
|
|
53210
|
+
children: bowlGrams(display.bowlFood) ?? "—"
|
|
53168
53211
|
}), /* @__PURE__ */ jsx("span", {
|
|
53169
53212
|
className: "text-sm text-foreground-subtle",
|
|
53170
53213
|
children: t("uiLibrary.petFeeder.inBowl", "in bowl")
|
|
@@ -53601,6 +53644,367 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
|
|
|
53601
53644
|
});
|
|
53602
53645
|
}
|
|
53603
53646
|
//#endregion
|
|
53647
|
+
//#region src/composites/device-controls/pet-fountain-panel.tsx
|
|
53648
|
+
/**
|
|
53649
|
+
* Pet-fountain controls for a `DeviceType.PetFountain` device.
|
|
53650
|
+
*
|
|
53651
|
+
* Reads the `pet-fountain` cap status slice (water level and volume, empty,
|
|
53652
|
+
* pump and its duty cycle, the water drunk) and renders:
|
|
53653
|
+
* - PetFountainInlineControl (device-list row): the tank level and a pump
|
|
53654
|
+
* on/off toggle.
|
|
53655
|
+
* - PetFountainHeroCard (device-detail hero): the tank gauge with the level
|
|
53656
|
+
* and the volume first, what the pet drank today / in 24 h / this hour /
|
|
53657
|
+
* last time, the pump switch, its duty-cycle switch and the run / rest
|
|
53658
|
+
* minutes. The filter is a consumable: the page's Consumables section
|
|
53659
|
+
* draws it, never this card (D915).
|
|
53660
|
+
*
|
|
53661
|
+
* Every reading may be unknown (`null`) and is drawn as a dash, never as
|
|
53662
|
+
* zero. Stored volumes are litres and durations seconds (D944); the card
|
|
53663
|
+
* shows millilitres and minutes. Actions are gated on `available`.
|
|
53664
|
+
*/
|
|
53665
|
+
var LITRES_TO_ML = 1e3;
|
|
53666
|
+
var SECONDS_PER_MINUTE = 60;
|
|
53667
|
+
var MAX_PUMP_MINUTES = 240;
|
|
53668
|
+
function millilitres(litres) {
|
|
53669
|
+
return litres === null ? "—" : `${Math.round(litres * LITRES_TO_ML)} mL`;
|
|
53670
|
+
}
|
|
53671
|
+
function minutesOf(seconds) {
|
|
53672
|
+
return seconds === null ? null : Math.round(seconds / SECONDS_PER_MINUTE);
|
|
53673
|
+
}
|
|
53674
|
+
function PetFountainPanel({ trpc, deviceId, layout, optimistic }) {
|
|
53675
|
+
const t = useUiText();
|
|
53676
|
+
const { cap, slice, available } = useDeviceCapability({
|
|
53677
|
+
trpc,
|
|
53678
|
+
deviceId,
|
|
53679
|
+
cap: (d) => d.petFountain,
|
|
53680
|
+
slice: (d) => d.state.petFountain
|
|
53681
|
+
});
|
|
53682
|
+
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
53683
|
+
if (cap === void 0 || display === void 0) return null;
|
|
53684
|
+
const busy = !available;
|
|
53685
|
+
const fault = display.error !== null && display.error !== "no_error" ? display.error : null;
|
|
53686
|
+
const pumpOn = display.pumpRunning === true;
|
|
53687
|
+
const level = display.waterLevel;
|
|
53688
|
+
const setPump = (on) => {
|
|
53689
|
+
applyOptimistic({ pumpRunning: on });
|
|
53690
|
+
cap.setPump({ on });
|
|
53691
|
+
};
|
|
53692
|
+
if (layout === "compact") return /* @__PURE__ */ jsxs("div", {
|
|
53693
|
+
className: "inline-flex items-center gap-2",
|
|
53694
|
+
children: [
|
|
53695
|
+
(fault !== null || display.empty === true) && /* @__PURE__ */ jsx(TriangleAlert, {
|
|
53696
|
+
className: "h-3.5 w-3.5 text-danger",
|
|
53697
|
+
"aria-label": fault ?? t("uiLibrary.petFountain.empty", "Tank empty")
|
|
53698
|
+
}),
|
|
53699
|
+
/* @__PURE__ */ jsxs("span", {
|
|
53700
|
+
className: cn("inline-flex items-center gap-1 text-xs font-medium tabular-nums", display.empty === true ? "text-danger" : "text-foreground"),
|
|
53701
|
+
children: [/* @__PURE__ */ jsx(Droplet, {
|
|
53702
|
+
className: "h-3.5 w-3.5",
|
|
53703
|
+
"aria-hidden": true
|
|
53704
|
+
}), level === null ? "—" : `${Math.round(level)}%`]
|
|
53705
|
+
}),
|
|
53706
|
+
/* @__PURE__ */ jsx("span", {
|
|
53707
|
+
onClick: (e) => e.stopPropagation(),
|
|
53708
|
+
children: /* @__PURE__ */ jsx(Switch, {
|
|
53709
|
+
checked: pumpOn,
|
|
53710
|
+
disabled: busy,
|
|
53711
|
+
"aria-label": t("uiLibrary.petFountain.pump", "Pump"),
|
|
53712
|
+
onCheckedChange: setPump
|
|
53713
|
+
})
|
|
53714
|
+
})
|
|
53715
|
+
]
|
|
53716
|
+
});
|
|
53717
|
+
const intervalOn = display.pumpIntervalEnabled === true;
|
|
53718
|
+
const onMinutes = minutesOf(display.pumpOnTime);
|
|
53719
|
+
const offMinutes = minutesOf(display.pumpOffTime);
|
|
53720
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
53721
|
+
className: "flex flex-col items-stretch gap-3 rounded-lg border border-border bg-surface p-4",
|
|
53722
|
+
children: [
|
|
53723
|
+
/* @__PURE__ */ jsxs("div", {
|
|
53724
|
+
className: "flex items-center gap-4 rounded-lg border border-border-subtle bg-background-elevated p-3",
|
|
53725
|
+
children: [/* @__PURE__ */ jsx(TankGauge, {
|
|
53726
|
+
level,
|
|
53727
|
+
empty: display.empty === true
|
|
53728
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
53729
|
+
className: "flex min-w-0 flex-1 flex-col gap-1.5",
|
|
53730
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
53731
|
+
className: "flex items-baseline gap-2",
|
|
53732
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
53733
|
+
className: cn("text-3xl font-bold leading-none tabular-nums", display.empty === true ? "text-danger" : "text-info"),
|
|
53734
|
+
children: level === null ? "—" : `${Math.round(level)}%`
|
|
53735
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
53736
|
+
className: "text-sm tabular-nums text-foreground-muted",
|
|
53737
|
+
children: millilitres(display.waterVolume)
|
|
53738
|
+
})]
|
|
53739
|
+
}), /* @__PURE__ */ jsx(StatusLine, {
|
|
53740
|
+
empty: display.empty,
|
|
53741
|
+
pumpRunning: display.pumpRunning
|
|
53742
|
+
})]
|
|
53743
|
+
})]
|
|
53744
|
+
}),
|
|
53745
|
+
fault !== null && /* @__PURE__ */ jsxs("div", {
|
|
53746
|
+
className: "flex items-start gap-2 rounded-lg border border-danger/40 bg-danger/10 px-3 py-2 text-xs font-medium text-danger",
|
|
53747
|
+
children: [/* @__PURE__ */ jsx(TriangleAlert, {
|
|
53748
|
+
className: "mt-px h-4 w-4 shrink-0",
|
|
53749
|
+
"aria-hidden": true
|
|
53750
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
53751
|
+
className: "min-w-0 break-words",
|
|
53752
|
+
children: fault
|
|
53753
|
+
})]
|
|
53754
|
+
}),
|
|
53755
|
+
/* @__PURE__ */ jsx(Section$1, {
|
|
53756
|
+
label: t("uiLibrary.petFountain.consumption", "Water drunk"),
|
|
53757
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
53758
|
+
className: "grid grid-cols-2 gap-2 sm:grid-cols-4",
|
|
53759
|
+
children: [
|
|
53760
|
+
/* @__PURE__ */ jsx(Stat, {
|
|
53761
|
+
label: t("uiLibrary.petFountain.today", "Today"),
|
|
53762
|
+
value: display.todayDrink
|
|
53763
|
+
}),
|
|
53764
|
+
/* @__PURE__ */ jsx(Stat, {
|
|
53765
|
+
label: t("uiLibrary.petFountain.last24h", "Last 24 h"),
|
|
53766
|
+
value: display.last24hDrink
|
|
53767
|
+
}),
|
|
53768
|
+
/* @__PURE__ */ jsx(Stat, {
|
|
53769
|
+
label: t("uiLibrary.petFountain.thisHour", "This hour"),
|
|
53770
|
+
value: display.currentHourDrink
|
|
53771
|
+
}),
|
|
53772
|
+
/* @__PURE__ */ jsx(Stat, {
|
|
53773
|
+
label: t("uiLibrary.petFountain.lastDrink", "Last drink"),
|
|
53774
|
+
value: display.lastDrink
|
|
53775
|
+
})
|
|
53776
|
+
]
|
|
53777
|
+
})
|
|
53778
|
+
}),
|
|
53779
|
+
/* @__PURE__ */ jsx(Section$1, {
|
|
53780
|
+
label: t("uiLibrary.petFountain.pumpSection", "Controls"),
|
|
53781
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
53782
|
+
className: "flex flex-col gap-2",
|
|
53783
|
+
children: [
|
|
53784
|
+
/* @__PURE__ */ jsx(SwitchRow, {
|
|
53785
|
+
icon: pumpOn ? /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" }),
|
|
53786
|
+
label: t("uiLibrary.petFountain.pump", "Pump"),
|
|
53787
|
+
checked: pumpOn,
|
|
53788
|
+
disabled: busy,
|
|
53789
|
+
onChange: setPump
|
|
53790
|
+
}),
|
|
53791
|
+
/* @__PURE__ */ jsx(SwitchRow, {
|
|
53792
|
+
icon: /* @__PURE__ */ jsx(Timer, { className: "h-4 w-4" }),
|
|
53793
|
+
label: t("uiLibrary.petFountain.cycle", "On / off cycle"),
|
|
53794
|
+
checked: intervalOn,
|
|
53795
|
+
disabled: busy,
|
|
53796
|
+
onChange: (on) => {
|
|
53797
|
+
applyOptimistic({ pumpIntervalEnabled: on });
|
|
53798
|
+
cap.setPumpInterval({ on });
|
|
53799
|
+
}
|
|
53800
|
+
}),
|
|
53801
|
+
intervalOn && /* @__PURE__ */ jsxs("div", {
|
|
53802
|
+
className: "flex flex-col gap-2",
|
|
53803
|
+
children: [/* @__PURE__ */ jsx(MinutesStepper, {
|
|
53804
|
+
label: t("uiLibrary.petFountain.runMinutes", "Runs for"),
|
|
53805
|
+
minutes: onMinutes,
|
|
53806
|
+
disabled: busy,
|
|
53807
|
+
onChange: (minutes) => {
|
|
53808
|
+
applyOptimistic({ pumpOnTime: minutes * SECONDS_PER_MINUTE });
|
|
53809
|
+
cap.setPumpOnMinutes({ minutes });
|
|
53810
|
+
}
|
|
53811
|
+
}), /* @__PURE__ */ jsx(MinutesStepper, {
|
|
53812
|
+
label: t("uiLibrary.petFountain.restMinutes", "Rests for"),
|
|
53813
|
+
minutes: offMinutes,
|
|
53814
|
+
disabled: busy,
|
|
53815
|
+
onChange: (minutes) => {
|
|
53816
|
+
applyOptimistic({ pumpOffTime: minutes * SECONDS_PER_MINUTE });
|
|
53817
|
+
cap.setPumpOffMinutes({ minutes });
|
|
53818
|
+
}
|
|
53819
|
+
})]
|
|
53820
|
+
})
|
|
53821
|
+
]
|
|
53822
|
+
})
|
|
53823
|
+
}),
|
|
53824
|
+
/* @__PURE__ */ jsxs(Button, {
|
|
53825
|
+
variant: "outline",
|
|
53826
|
+
size: "sm",
|
|
53827
|
+
disabled: busy,
|
|
53828
|
+
onClick: () => void cap.resetDailyConsumption({}),
|
|
53829
|
+
children: [/* @__PURE__ */ jsx(Eraser, {
|
|
53830
|
+
className: "h-4 w-4",
|
|
53831
|
+
"aria-hidden": true
|
|
53832
|
+
}), t("uiLibrary.petFountain.clearDaily", "Clear daily count")]
|
|
53833
|
+
})
|
|
53834
|
+
]
|
|
53835
|
+
});
|
|
53836
|
+
}
|
|
53837
|
+
/** A tank outline whose water rises with the level; danger-coloured when empty. */
|
|
53838
|
+
function TankGauge({ level, empty }) {
|
|
53839
|
+
const t = useUiText();
|
|
53840
|
+
const top = 58 - Math.min(1, Math.max(0, (level ?? 0) / 100)) * 40;
|
|
53841
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
53842
|
+
width: 72,
|
|
53843
|
+
height: 72,
|
|
53844
|
+
viewBox: "0 0 72 72",
|
|
53845
|
+
role: "img",
|
|
53846
|
+
"aria-label": level === null ? t("uiLibrary.petFountain.levelUnknown", "Water level unknown") : t("uiLibrary.petFountain.levelPercent", "{{percent}}% water", { percent: Math.round(level) }),
|
|
53847
|
+
className: "shrink-0",
|
|
53848
|
+
children: [
|
|
53849
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", {
|
|
53850
|
+
id: "pfn-tank-clip",
|
|
53851
|
+
children: /* @__PURE__ */ jsx("rect", {
|
|
53852
|
+
x: "18",
|
|
53853
|
+
y: "14",
|
|
53854
|
+
width: "36",
|
|
53855
|
+
height: "46",
|
|
53856
|
+
rx: "6"
|
|
53857
|
+
})
|
|
53858
|
+
}) }),
|
|
53859
|
+
/* @__PURE__ */ jsx("g", {
|
|
53860
|
+
clipPath: "url(#pfn-tank-clip)",
|
|
53861
|
+
children: /* @__PURE__ */ jsx("rect", {
|
|
53862
|
+
x: "18",
|
|
53863
|
+
y: top,
|
|
53864
|
+
width: "36",
|
|
53865
|
+
height: "46",
|
|
53866
|
+
className: empty ? "fill-danger" : "fill-info",
|
|
53867
|
+
opacity: .75
|
|
53868
|
+
})
|
|
53869
|
+
}),
|
|
53870
|
+
/* @__PURE__ */ jsx("rect", {
|
|
53871
|
+
x: "18",
|
|
53872
|
+
y: "14",
|
|
53873
|
+
width: "36",
|
|
53874
|
+
height: "46",
|
|
53875
|
+
rx: "6",
|
|
53876
|
+
fill: "none",
|
|
53877
|
+
strokeWidth: "2.5",
|
|
53878
|
+
className: "stroke-border"
|
|
53879
|
+
}),
|
|
53880
|
+
/* @__PURE__ */ jsx("rect", {
|
|
53881
|
+
x: "28",
|
|
53882
|
+
y: "8",
|
|
53883
|
+
width: "16",
|
|
53884
|
+
height: "6",
|
|
53885
|
+
rx: "2",
|
|
53886
|
+
className: "fill-border"
|
|
53887
|
+
})
|
|
53888
|
+
]
|
|
53889
|
+
});
|
|
53890
|
+
}
|
|
53891
|
+
function StatusLine({ empty, pumpRunning }) {
|
|
53892
|
+
const t = useUiText();
|
|
53893
|
+
if (empty === true) return /* @__PURE__ */ jsxs("span", {
|
|
53894
|
+
className: "inline-flex items-center gap-1 text-xs font-medium text-danger",
|
|
53895
|
+
children: [/* @__PURE__ */ jsx(Droplet, {
|
|
53896
|
+
className: "h-3.5 w-3.5",
|
|
53897
|
+
"aria-hidden": true
|
|
53898
|
+
}), t("uiLibrary.petFountain.empty", "Tank empty")]
|
|
53899
|
+
});
|
|
53900
|
+
if (pumpRunning === true) return /* @__PURE__ */ jsxs("span", {
|
|
53901
|
+
className: "inline-flex items-center gap-1 text-xs font-medium text-info",
|
|
53902
|
+
children: [/* @__PURE__ */ jsx(Droplets, {
|
|
53903
|
+
className: "h-3.5 w-3.5",
|
|
53904
|
+
"aria-hidden": true
|
|
53905
|
+
}), t("uiLibrary.petFountain.pumpRunning", "Pump running")]
|
|
53906
|
+
});
|
|
53907
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
53908
|
+
className: "inline-flex items-center gap-1 text-xs text-foreground-subtle",
|
|
53909
|
+
children: [/* @__PURE__ */ jsx(Pause, {
|
|
53910
|
+
className: "h-3.5 w-3.5",
|
|
53911
|
+
"aria-hidden": true
|
|
53912
|
+
}), pumpRunning === false ? t("uiLibrary.petFountain.pumpIdle", "Pump idle") : t("uiLibrary.petFountain.pumpUnknown", "Pump state unknown")]
|
|
53913
|
+
});
|
|
53914
|
+
}
|
|
53915
|
+
function Section$1({ label, children }) {
|
|
53916
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
53917
|
+
className: "flex flex-col gap-1",
|
|
53918
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
53919
|
+
className: "text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle",
|
|
53920
|
+
children: label
|
|
53921
|
+
}), children]
|
|
53922
|
+
});
|
|
53923
|
+
}
|
|
53924
|
+
function Stat({ label, value }) {
|
|
53925
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
53926
|
+
className: "flex flex-col rounded-lg border border-border-subtle bg-background-elevated px-3 py-2",
|
|
53927
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
53928
|
+
className: "text-[11px] text-foreground-subtle",
|
|
53929
|
+
children: label
|
|
53930
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
53931
|
+
className: "text-sm font-semibold tabular-nums text-foreground",
|
|
53932
|
+
children: millilitres(value)
|
|
53933
|
+
})]
|
|
53934
|
+
});
|
|
53935
|
+
}
|
|
53936
|
+
function SwitchRow({ icon, label, checked, disabled, onChange }) {
|
|
53937
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
53938
|
+
className: "flex items-center justify-between gap-3 rounded-lg border border-border-subtle bg-background-elevated px-3 py-2",
|
|
53939
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
53940
|
+
className: "inline-flex items-center gap-2 text-sm text-foreground",
|
|
53941
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
53942
|
+
className: "text-foreground-subtle",
|
|
53943
|
+
children: icon
|
|
53944
|
+
}), label]
|
|
53945
|
+
}), /* @__PURE__ */ jsx(Switch, {
|
|
53946
|
+
checked,
|
|
53947
|
+
disabled,
|
|
53948
|
+
"aria-label": label,
|
|
53949
|
+
onCheckedChange: onChange
|
|
53950
|
+
})]
|
|
53951
|
+
});
|
|
53952
|
+
}
|
|
53953
|
+
function MinutesStepper({ label, minutes, disabled, onChange }) {
|
|
53954
|
+
const t = useUiText();
|
|
53955
|
+
const current = minutes ?? 0;
|
|
53956
|
+
const step = (delta) => onChange(Math.min(MAX_PUMP_MINUTES, Math.max(0, current + delta)));
|
|
53957
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
53958
|
+
className: "flex items-center justify-between gap-2 rounded-lg border border-border-subtle bg-background-elevated px-3 py-2",
|
|
53959
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
53960
|
+
className: "text-sm text-foreground",
|
|
53961
|
+
children: label
|
|
53962
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
53963
|
+
className: "flex items-center gap-2",
|
|
53964
|
+
children: [
|
|
53965
|
+
/* @__PURE__ */ jsx(Button, {
|
|
53966
|
+
variant: "outline",
|
|
53967
|
+
size: "sm",
|
|
53968
|
+
"aria-label": t("uiLibrary.petFountain.decrease", "Decrease {{label}}", { label }),
|
|
53969
|
+
disabled: disabled || minutes === null || current <= 0,
|
|
53970
|
+
onClick: () => step(-1),
|
|
53971
|
+
children: "−"
|
|
53972
|
+
}),
|
|
53973
|
+
/* @__PURE__ */ jsx("span", {
|
|
53974
|
+
className: "w-14 text-center text-sm font-semibold tabular-nums text-foreground",
|
|
53975
|
+
children: minutes === null ? "—" : t("uiLibrary.petFountain.minutes", "{{count}} min", { count: current })
|
|
53976
|
+
}),
|
|
53977
|
+
/* @__PURE__ */ jsx(Button, {
|
|
53978
|
+
variant: "outline",
|
|
53979
|
+
size: "sm",
|
|
53980
|
+
"aria-label": t("uiLibrary.petFountain.increase", "Increase {{label}}", { label }),
|
|
53981
|
+
disabled: disabled || minutes === null || current >= MAX_PUMP_MINUTES,
|
|
53982
|
+
onClick: () => step(1),
|
|
53983
|
+
children: "+"
|
|
53984
|
+
})
|
|
53985
|
+
]
|
|
53986
|
+
})]
|
|
53987
|
+
});
|
|
53988
|
+
}
|
|
53989
|
+
function PetFountainInlineControl({ trpc, deviceId, features, optimistic }) {
|
|
53990
|
+
return /* @__PURE__ */ jsx(PetFountainPanel, {
|
|
53991
|
+
trpc,
|
|
53992
|
+
deviceId,
|
|
53993
|
+
features,
|
|
53994
|
+
layout: "compact",
|
|
53995
|
+
optimistic
|
|
53996
|
+
});
|
|
53997
|
+
}
|
|
53998
|
+
function PetFountainHeroCard({ trpc, deviceId, features, optimistic }) {
|
|
53999
|
+
return /* @__PURE__ */ jsx(PetFountainPanel, {
|
|
54000
|
+
trpc,
|
|
54001
|
+
deviceId,
|
|
54002
|
+
features,
|
|
54003
|
+
layout: "full",
|
|
54004
|
+
optimistic
|
|
54005
|
+
});
|
|
54006
|
+
}
|
|
54007
|
+
//#endregion
|
|
53604
54008
|
//#region src/composites/device-controls/dishwasher-control.tsx
|
|
53605
54009
|
/**
|
|
53606
54010
|
* Dishwasher controls for a `DeviceType.Dishwasher` device.
|
|
@@ -56723,6 +57127,10 @@ var CONTROL_KIND_COMPONENTS = {
|
|
|
56723
57127
|
InlineControl: PetFeederInlineControl,
|
|
56724
57128
|
HeroCard: PetFeederHeroCard
|
|
56725
57129
|
},
|
|
57130
|
+
"pet-fountain": {
|
|
57131
|
+
InlineControl: PetFountainInlineControl,
|
|
57132
|
+
HeroCard: PetFountainHeroCard
|
|
57133
|
+
},
|
|
56726
57134
|
dishwasher: {
|
|
56727
57135
|
InlineControl: DishwasherInlineControl,
|
|
56728
57136
|
HeroCard: DishwasherHeroCard
|
|
@@ -56804,6 +57212,7 @@ var CONTROL_FILLS = {
|
|
|
56804
57212
|
[DeviceType.Container]: false,
|
|
56805
57213
|
[DeviceType.Image]: false,
|
|
56806
57214
|
[DeviceType.PetFeeder]: false,
|
|
57215
|
+
[DeviceType.PetFountain]: false,
|
|
56807
57216
|
[DeviceType.Dishwasher]: false,
|
|
56808
57217
|
[DeviceType.Washer]: false,
|
|
56809
57218
|
[DeviceType.Dryer]: false
|
|
@@ -60811,6 +61220,88 @@ function deselectShown(current, shown) {
|
|
|
60811
61220
|
return new Set([...current].filter((id) => !drop.has(id)));
|
|
60812
61221
|
}
|
|
60813
61222
|
//#endregion
|
|
61223
|
+
//#region src/composites/export-entity-rows.ts
|
|
61224
|
+
/**
|
|
61225
|
+
* The action and notification-target rows of the device export table (D968).
|
|
61226
|
+
*
|
|
61227
|
+
* An action and a notifier are list entries, never devices (D954): they are
|
|
61228
|
+
* merged into the SAME table as extra rows, built only from the kinds the
|
|
61229
|
+
* exporter answered. A kinds list that was not answered is UNKNOWN, not
|
|
61230
|
+
* "supports nothing" (D315) — it yields devices only and no filter entry, and
|
|
61231
|
+
* says nothing about what the exporter cannot do.
|
|
61232
|
+
*
|
|
61233
|
+
* Pure functions, so the rules are pinned without a DOM.
|
|
61234
|
+
*/
|
|
61235
|
+
/** The type-filter ids of the entity kinds, apart from every device type. */
|
|
61236
|
+
var ENTITY_FILTER_IDS = {
|
|
61237
|
+
action: "entity:action",
|
|
61238
|
+
notifier: "entity:notifier"
|
|
61239
|
+
};
|
|
61240
|
+
var KindsSchema = z.array(ExportEntityKindSchema);
|
|
61241
|
+
var NamedSchema = z.array(z.object({
|
|
61242
|
+
id: z.string(),
|
|
61243
|
+
name: z.string()
|
|
61244
|
+
}));
|
|
61245
|
+
var ExposedSchema = z.array(ExposedEntitySchema);
|
|
61246
|
+
/**
|
|
61247
|
+
* The non-device kinds the exporter answered, or null when it did not answer
|
|
61248
|
+
* (unknown — never an empty set).
|
|
61249
|
+
*/
|
|
61250
|
+
function supportedEntityKinds(data) {
|
|
61251
|
+
const parsed = KindsSchema.safeParse(data);
|
|
61252
|
+
if (!parsed.success) return null;
|
|
61253
|
+
const kinds = /* @__PURE__ */ new Set();
|
|
61254
|
+
for (const kind of parsed.data) if (kind === "action" || kind === "notifier") kinds.add(kind);
|
|
61255
|
+
return kinds;
|
|
61256
|
+
}
|
|
61257
|
+
function buildEntityRows(input) {
|
|
61258
|
+
const { kinds } = input;
|
|
61259
|
+
if (kinds === null) return [];
|
|
61260
|
+
const exposed = ExposedSchema.safeParse(input.exposed);
|
|
61261
|
+
const exposedActions = /* @__PURE__ */ new Set();
|
|
61262
|
+
const exposedTargets = /* @__PURE__ */ new Set();
|
|
61263
|
+
if (exposed.success) {
|
|
61264
|
+
for (const row of exposed.data) if (row.entity.kind === "action") exposedActions.add(row.entity.actionId);
|
|
61265
|
+
else if (row.entity.kind === "notifier") exposedTargets.add(row.entity.targetId);
|
|
61266
|
+
}
|
|
61267
|
+
const rows = [];
|
|
61268
|
+
if (kinds.has("action")) {
|
|
61269
|
+
const actions = NamedSchema.safeParse(input.actions);
|
|
61270
|
+
for (const a of actions.success ? actions.data : []) rows.push({
|
|
61271
|
+
kind: "action",
|
|
61272
|
+
key: `action:${a.id}`,
|
|
61273
|
+
ref: {
|
|
61274
|
+
kind: "action",
|
|
61275
|
+
actionId: a.id
|
|
61276
|
+
},
|
|
61277
|
+
name: a.name,
|
|
61278
|
+
exposed: exposedActions.has(a.id)
|
|
61279
|
+
});
|
|
61280
|
+
}
|
|
61281
|
+
if (kinds.has("notifier")) {
|
|
61282
|
+
const targets = NamedSchema.safeParse(input.targets);
|
|
61283
|
+
for (const t of targets.success ? targets.data : []) rows.push({
|
|
61284
|
+
kind: "notifier",
|
|
61285
|
+
key: `notifier:${t.id}`,
|
|
61286
|
+
ref: {
|
|
61287
|
+
kind: "notifier",
|
|
61288
|
+
targetId: t.id
|
|
61289
|
+
},
|
|
61290
|
+
name: t.name,
|
|
61291
|
+
exposed: exposedTargets.has(t.id)
|
|
61292
|
+
});
|
|
61293
|
+
}
|
|
61294
|
+
return rows;
|
|
61295
|
+
}
|
|
61296
|
+
/** The type-filter ids to add beside the device types: one per SUPPORTED kind. */
|
|
61297
|
+
function entityFilterOptionIds(kinds) {
|
|
61298
|
+
if (kinds === null) return [];
|
|
61299
|
+
const ids = [];
|
|
61300
|
+
if (kinds.has("action")) ids.push(ENTITY_FILTER_IDS.action);
|
|
61301
|
+
if (kinds.has("notifier")) ids.push(ENTITY_FILTER_IDS.notifier);
|
|
61302
|
+
return ids;
|
|
61303
|
+
}
|
|
61304
|
+
//#endregion
|
|
60814
61305
|
//#region src/composites/device-export-panel.tsx
|
|
60815
61306
|
/**
|
|
60816
61307
|
* DeviceExportPanel — generic, addon-agnostic surface for the
|
|
@@ -61030,19 +61521,28 @@ function ExportSelectCell({ device, checked, onToggle }) {
|
|
|
61030
61521
|
* of these live in one table, and "Expose" alone names none of them.
|
|
61031
61522
|
*/
|
|
61032
61523
|
function ExportRowToggle({ addonId, device, exposed, busy, onToggle }) {
|
|
61524
|
+
return /* @__PURE__ */ jsx(ExposeToggleButton, {
|
|
61525
|
+
addonId,
|
|
61526
|
+
label: useDeviceLabel(device, "compact"),
|
|
61527
|
+
exposed,
|
|
61528
|
+
busy,
|
|
61529
|
+
onToggle: (action) => onToggle(device, action)
|
|
61530
|
+
});
|
|
61531
|
+
}
|
|
61532
|
+
/** The Expose / Exposed button every row kind (device, action, notifier) shares. */
|
|
61533
|
+
function ExposeToggleButton({ addonId, label, exposed, busy, onToggle }) {
|
|
61033
61534
|
const t = useUiText();
|
|
61034
|
-
const deviceLabel = useDeviceLabel(device, "compact");
|
|
61035
61535
|
const handleClick = (e) => {
|
|
61036
61536
|
e.stopPropagation();
|
|
61037
61537
|
if (busy) return;
|
|
61038
|
-
onToggle(
|
|
61538
|
+
onToggle(exposed ? "unexpose" : "expose");
|
|
61039
61539
|
};
|
|
61040
61540
|
return /* @__PURE__ */ jsx(Button, {
|
|
61041
61541
|
size: "sm",
|
|
61042
61542
|
variant: exposed ? "ghost" : "primary",
|
|
61043
61543
|
disabled: busy,
|
|
61044
61544
|
onClick: handleClick,
|
|
61045
|
-
"aria-label": exposed ? t("uiLibrary.deviceExport.unexposeDevice", "Unexpose {{name}}", { name:
|
|
61545
|
+
"aria-label": exposed ? t("uiLibrary.deviceExport.unexposeDevice", "Unexpose {{name}}", { name: label }) : t("uiLibrary.deviceExport.exposeDevice", "Expose {{name}}", { name: label }),
|
|
61046
61546
|
title: exposed ? t("uiLibrary.deviceExport.stopTitle", "Stop exposing to \"{{addon}}\"", { addon: addonId }) : t("uiLibrary.deviceExport.exposeTitle", "Expose to \"{{addon}}\"", { addon: addonId }),
|
|
61047
61547
|
children: exposed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Unlink2, { className: "mr-1 h-3.5 w-3.5" }), t("uiLibrary.deviceExport.exposed", "Exposed")] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Share2, { className: "mr-1 h-3.5 w-3.5" }), t("uiLibrary.deviceExport.expose", "Expose")] })
|
|
61048
61548
|
});
|
|
@@ -61123,11 +61623,34 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61123
61623
|
addonId
|
|
61124
61624
|
}, { retry: false });
|
|
61125
61625
|
const devicesQuery = useDeviceManagerListAll({ projection: "slim" }, { refetchInterval: FLEET_POLL_INTERVAL_MS });
|
|
61626
|
+
const entityKindsQuery = useDeviceExportListSupportedEntityKinds({
|
|
61627
|
+
nodeId: "hub",
|
|
61628
|
+
addonId
|
|
61629
|
+
}, { retry: false });
|
|
61630
|
+
const entityKinds = useMemo(() => supportedEntityKinds(entityKindsQuery.data), [entityKindsQuery.data]);
|
|
61631
|
+
const exposedEntitiesQuery = useDeviceExportListExposedEntities({
|
|
61632
|
+
nodeId: "hub",
|
|
61633
|
+
addonId
|
|
61634
|
+
}, {
|
|
61635
|
+
refetchInterval: STATUS_POLL_INTERVAL_MS,
|
|
61636
|
+
retry: false,
|
|
61637
|
+
enabled: entityKinds !== null
|
|
61638
|
+
});
|
|
61639
|
+
const actionsQuery = useActionsList({}, {
|
|
61640
|
+
refetchInterval: FLEET_POLL_INTERVAL_MS,
|
|
61641
|
+
enabled: entityKinds?.has("action") === true
|
|
61642
|
+
});
|
|
61643
|
+
const targetsQuery = useNotificationOutputListTargets({}, {
|
|
61644
|
+
refetchInterval: FLEET_POLL_INTERVAL_MS,
|
|
61645
|
+
enabled: entityKinds?.has("notifier") === true
|
|
61646
|
+
});
|
|
61126
61647
|
const invalidate = useCallback(() => {
|
|
61127
61648
|
queryClient.invalidateQueries({ queryKey: [["deviceExport"]] });
|
|
61128
61649
|
}, [queryClient]);
|
|
61129
61650
|
const exposeMutation = useDeviceExportExposeDevice({ onSuccess: invalidate });
|
|
61130
61651
|
const unexposeMutation = useDeviceExportUnexposeDevice({ onSuccess: invalidate });
|
|
61652
|
+
const exposeEntityMutation = useDeviceExportExposeEntity({ onSuccess: invalidate });
|
|
61653
|
+
const unexposeEntityMutation = useDeviceExportUnexposeEntity({ onSuccess: invalidate });
|
|
61131
61654
|
const status = useMemo(() => parseStatus(statusQuery.data), [statusQuery.data]);
|
|
61132
61655
|
const exposed = useMemo(() => {
|
|
61133
61656
|
const parsed = ExposedDeviceArraySchema.safeParse(exposedQuery.data);
|
|
@@ -61157,10 +61680,37 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61157
61680
|
}
|
|
61158
61681
|
return rows;
|
|
61159
61682
|
}, [devicesQuery.data, supportedKinds]);
|
|
61683
|
+
const entityRows = useMemo(() => buildEntityRows({
|
|
61684
|
+
kinds: entityKinds,
|
|
61685
|
+
actions: actionsQuery.data,
|
|
61686
|
+
targets: targetsQuery.data,
|
|
61687
|
+
exposed: exposedEntitiesQuery.data
|
|
61688
|
+
}), [
|
|
61689
|
+
entityKinds,
|
|
61690
|
+
actionsQuery.data,
|
|
61691
|
+
targetsQuery.data,
|
|
61692
|
+
exposedEntitiesQuery.data
|
|
61693
|
+
]);
|
|
61694
|
+
const typeFilterOptions = useMemo(() => {
|
|
61695
|
+
const entityOptions = entityFilterOptionIds(entityKinds).map((id) => id === ENTITY_FILTER_IDS.action ? {
|
|
61696
|
+
id,
|
|
61697
|
+
label: t("uiLibrary.deviceExport.typeAction", "Action"),
|
|
61698
|
+
icon: Play
|
|
61699
|
+
} : {
|
|
61700
|
+
id,
|
|
61701
|
+
label: t("uiLibrary.deviceExport.typeNotifier", "Notifier"),
|
|
61702
|
+
icon: Bell
|
|
61703
|
+
});
|
|
61704
|
+
return [...supportedTypeOptions, ...entityOptions];
|
|
61705
|
+
}, [
|
|
61706
|
+
supportedTypeOptions,
|
|
61707
|
+
entityKinds,
|
|
61708
|
+
t
|
|
61709
|
+
]);
|
|
61160
61710
|
const linkState = status?.linkState ?? "unlinked";
|
|
61161
|
-
const loading = statusQuery.isLoading || exposedQuery.isLoading || kindsQuery.isLoading || devicesQuery.isLoading;
|
|
61711
|
+
const loading = statusQuery.isLoading || exposedQuery.isLoading || kindsQuery.isLoading || devicesQuery.isLoading || entityKindsQuery.isLoading;
|
|
61162
61712
|
const exposedCount = status?.exposedDeviceCount ?? exposedIds.size;
|
|
61163
|
-
const busy = exposeMutation.isPending || unexposeMutation.isPending;
|
|
61713
|
+
const busy = exposeMutation.isPending || unexposeMutation.isPending || exposeEntityMutation.isPending || unexposeEntityMutation.isPending;
|
|
61164
61714
|
const [selectedIds, setSelectedIds] = useState(() => /* @__PURE__ */ new Set());
|
|
61165
61715
|
const [outcome, setOutcome] = useState(null);
|
|
61166
61716
|
const [running, setRunning] = useState(false);
|
|
@@ -61227,10 +61777,71 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61227
61777
|
labelFor,
|
|
61228
61778
|
running
|
|
61229
61779
|
]);
|
|
61780
|
+
/**
|
|
61781
|
+
* Expose / unexpose ONE action or notification target. Same contract as the
|
|
61782
|
+
* device runner: the result is recorded either way and a refusal is named on
|
|
61783
|
+
* screen, with the entity (it has no device id to tag).
|
|
61784
|
+
*/
|
|
61785
|
+
const runEntityExport = useCallback(async (action, row) => {
|
|
61786
|
+
if (running) return;
|
|
61787
|
+
setRunning(true);
|
|
61788
|
+
setOutcome(null);
|
|
61789
|
+
const mutation = action === "expose" ? exposeEntityMutation : unexposeEntityMutation;
|
|
61790
|
+
const succeeded = [];
|
|
61791
|
+
const failed = [];
|
|
61792
|
+
try {
|
|
61793
|
+
await mutation.mutateAsync({
|
|
61794
|
+
entity: row.ref,
|
|
61795
|
+
nodeId: "hub",
|
|
61796
|
+
addonId
|
|
61797
|
+
});
|
|
61798
|
+
succeeded.push(row.name);
|
|
61799
|
+
} catch (err) {
|
|
61800
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
61801
|
+
console.error(`[device-export] ${action} ${row.kind} failed`, {
|
|
61802
|
+
tags: row.ref.kind === "action" ? { actionId: row.ref.actionId } : { targetId: row.ref.targetId },
|
|
61803
|
+
addonId,
|
|
61804
|
+
error: message
|
|
61805
|
+
});
|
|
61806
|
+
failed.push({
|
|
61807
|
+
label: row.name,
|
|
61808
|
+
message
|
|
61809
|
+
});
|
|
61810
|
+
}
|
|
61811
|
+
setOutcome({
|
|
61812
|
+
action,
|
|
61813
|
+
total: 1,
|
|
61814
|
+
succeeded,
|
|
61815
|
+
failed
|
|
61816
|
+
});
|
|
61817
|
+
setRunning(false);
|
|
61818
|
+
}, [
|
|
61819
|
+
addonId,
|
|
61820
|
+
exposeEntityMutation,
|
|
61821
|
+
unexposeEntityMutation,
|
|
61822
|
+
running
|
|
61823
|
+
]);
|
|
61230
61824
|
const [bulkFilters, setBulkFilters] = useState(NO_EXPORT_FILTERS);
|
|
61231
61825
|
const roleOptions = useMemo(() => roleFilterOptions(candidateDevices), [candidateDevices]);
|
|
61232
61826
|
const providerOptions = useMemo(() => providerFilterOptions(candidateDevices), [candidateDevices]);
|
|
61233
61827
|
const shownDevices = useMemo(() => applyExportFilters(candidateDevices, bulkFilters), [candidateDevices, bulkFilters]);
|
|
61828
|
+
const shownRows = useMemo(() => {
|
|
61829
|
+
const deviceRows = shownDevices.map((device) => ({
|
|
61830
|
+
kind: "device",
|
|
61831
|
+
key: String(device.id),
|
|
61832
|
+
device
|
|
61833
|
+
}));
|
|
61834
|
+
const entities = bulkFilters.roles.length > 0 || bulkFilters.providers.length > 0 ? [] : entityRows.map((entity) => ({
|
|
61835
|
+
kind: "entity",
|
|
61836
|
+
key: entity.key,
|
|
61837
|
+
entity
|
|
61838
|
+
}));
|
|
61839
|
+
return [...deviceRows, ...entities];
|
|
61840
|
+
}, [
|
|
61841
|
+
shownDevices,
|
|
61842
|
+
entityRows,
|
|
61843
|
+
bulkFilters
|
|
61844
|
+
]);
|
|
61234
61845
|
const setRoleFilter = useCallback((roles) => setBulkFilters((f) => ({
|
|
61235
61846
|
...f,
|
|
61236
61847
|
roles
|
|
@@ -61249,27 +61860,35 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61249
61860
|
const onRowToggle = useCallback((device, action) => {
|
|
61250
61861
|
runExport(action, [String(device.id)]);
|
|
61251
61862
|
}, [runExport]);
|
|
61252
|
-
const onRowClick = useCallback((
|
|
61253
|
-
|
|
61254
|
-
|
|
61255
|
-
const
|
|
61863
|
+
const onRowClick = useCallback((row) => {
|
|
61864
|
+
if (row.kind === "device") onOpenDevice?.(String(row.device.id));
|
|
61865
|
+
}, [onOpenDevice]);
|
|
61866
|
+
const getKey = useCallback((row) => row.key, []);
|
|
61867
|
+
const getSearchText = useCallback((row) => row.kind === "device" ? `${row.device.name} ${row.device.stableId}` : row.entity.name, []);
|
|
61868
|
+
const getFilterType = useCallback((row) => row.kind === "device" ? row.device.type : ENTITY_FILTER_IDS[row.entity.kind], []);
|
|
61256
61869
|
const columns = useMemo(() => [
|
|
61257
61870
|
{
|
|
61258
61871
|
key: "select",
|
|
61259
61872
|
header: "",
|
|
61260
61873
|
headerClassName: "w-8",
|
|
61261
|
-
cell: (
|
|
61262
|
-
device,
|
|
61263
|
-
checked: selectedIds.has(String(device.id)),
|
|
61264
|
-
onToggle: () => toggleSelection(String(device.id))
|
|
61265
|
-
})
|
|
61874
|
+
cell: (row) => row.kind === "device" ? /* @__PURE__ */ jsx(ExportSelectCell, {
|
|
61875
|
+
device: row.device,
|
|
61876
|
+
checked: selectedIds.has(String(row.device.id)),
|
|
61877
|
+
onToggle: () => toggleSelection(String(row.device.id))
|
|
61878
|
+
}) : null
|
|
61266
61879
|
},
|
|
61267
61880
|
{
|
|
61268
61881
|
key: "type",
|
|
61269
61882
|
header: t("uiLibrary.deviceExport.colType", "Type"),
|
|
61270
61883
|
headerClassName: "w-32",
|
|
61271
|
-
cell: (
|
|
61272
|
-
const meta = deviceTypeMetaOf(device.type, t)
|
|
61884
|
+
cell: (row) => {
|
|
61885
|
+
const meta = row.kind === "device" ? deviceTypeMetaOf(row.device.type, t) : row.entity.kind === "action" ? {
|
|
61886
|
+
label: t("uiLibrary.deviceExport.typeAction", "Action"),
|
|
61887
|
+
icon: Play
|
|
61888
|
+
} : {
|
|
61889
|
+
label: t("uiLibrary.deviceExport.typeNotifier", "Notifier"),
|
|
61890
|
+
icon: Bell
|
|
61891
|
+
};
|
|
61273
61892
|
const TypeIcon = meta.icon;
|
|
61274
61893
|
return /* @__PURE__ */ jsxs("span", {
|
|
61275
61894
|
className: "inline-flex items-center gap-1.5 text-[11px] text-foreground-subtle",
|
|
@@ -61280,10 +61899,13 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61280
61899
|
{
|
|
61281
61900
|
key: "name",
|
|
61282
61901
|
header: t("uiLibrary.deviceExport.colName", "Name"),
|
|
61283
|
-
cell: (
|
|
61284
|
-
device,
|
|
61902
|
+
cell: (row) => row.kind === "device" ? /* @__PURE__ */ jsx(DeviceName, {
|
|
61903
|
+
device: row.device,
|
|
61285
61904
|
form: "compact",
|
|
61286
61905
|
className: "text-xs font-medium text-foreground"
|
|
61906
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
61907
|
+
className: "text-xs font-medium text-foreground",
|
|
61908
|
+
children: row.entity.name
|
|
61287
61909
|
})
|
|
61288
61910
|
},
|
|
61289
61911
|
{
|
|
@@ -61291,12 +61913,18 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61291
61913
|
header: t("uiLibrary.deviceExport.colExport", "Export"),
|
|
61292
61914
|
headerClassName: "w-32 text-right",
|
|
61293
61915
|
cellClassName: "text-right",
|
|
61294
|
-
cell: (
|
|
61916
|
+
cell: (row) => row.kind === "device" ? /* @__PURE__ */ jsx(ExportRowToggle, {
|
|
61295
61917
|
addonId,
|
|
61296
|
-
device,
|
|
61297
|
-
exposed: exposedIds.has(String(device.id)),
|
|
61918
|
+
device: row.device,
|
|
61919
|
+
exposed: exposedIds.has(String(row.device.id)),
|
|
61298
61920
|
busy,
|
|
61299
61921
|
onToggle: onRowToggle
|
|
61922
|
+
}) : /* @__PURE__ */ jsx(ExposeToggleButton, {
|
|
61923
|
+
addonId,
|
|
61924
|
+
label: row.entity.name,
|
|
61925
|
+
exposed: row.entity.exposed,
|
|
61926
|
+
busy,
|
|
61927
|
+
onToggle: (action) => void runEntityExport(action, row.entity)
|
|
61300
61928
|
})
|
|
61301
61929
|
}
|
|
61302
61930
|
], [
|
|
@@ -61304,67 +61932,71 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61304
61932
|
busy,
|
|
61305
61933
|
exposedIds,
|
|
61306
61934
|
onRowToggle,
|
|
61935
|
+
runEntityExport,
|
|
61307
61936
|
selectedIds,
|
|
61308
61937
|
toggleSelection,
|
|
61309
61938
|
t
|
|
61310
61939
|
]);
|
|
61311
|
-
const renderToolbar = useCallback(({ filtered }) =>
|
|
61312
|
-
|
|
61313
|
-
|
|
61314
|
-
|
|
61315
|
-
|
|
61316
|
-
|
|
61317
|
-
|
|
61318
|
-
|
|
61319
|
-
|
|
61320
|
-
|
|
61321
|
-
label: t("uiLibrary.deviceExport.filterProvider", "Provider"),
|
|
61322
|
-
options: providerOptions,
|
|
61323
|
-
selected: bulkFilters.providers,
|
|
61324
|
-
onChange: setProviderFilter
|
|
61325
|
-
}),
|
|
61326
|
-
/* @__PURE__ */ jsx(Button, {
|
|
61327
|
-
size: "sm",
|
|
61328
|
-
variant: "secondary",
|
|
61329
|
-
disabled: filtered.length === 0,
|
|
61330
|
-
onClick: () => setSelectedIds((current) => selectShown(current, filtered)),
|
|
61331
|
-
children: t("uiLibrary.deviceExport.selectShown", "Select {{count}} shown", { count: filtered.length })
|
|
61332
|
-
}),
|
|
61333
|
-
selectedIds.size > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
61334
|
-
/* @__PURE__ */ jsx(Button, {
|
|
61335
|
-
size: "sm",
|
|
61336
|
-
variant: "ghost",
|
|
61337
|
-
onClick: () => setSelectedIds((current) => deselectShown(current, filtered)),
|
|
61338
|
-
children: t("uiLibrary.deviceExport.deselectShown", "Deselect shown")
|
|
61339
|
-
}),
|
|
61340
|
-
/* @__PURE__ */ jsx("span", {
|
|
61341
|
-
"data-testid": "export-selection-count",
|
|
61342
|
-
className: "text-[11px] text-foreground-subtle",
|
|
61343
|
-
children: t("uiLibrary.deviceExport.selected", "{{count}} selected", { count: selectedIds.size })
|
|
61940
|
+
const renderToolbar = useCallback(({ filtered: filteredRows }) => {
|
|
61941
|
+
const filtered = filteredRows.flatMap((row) => row.kind === "device" ? [row.device] : []);
|
|
61942
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
61943
|
+
className: "inline-flex flex-wrap items-center gap-1.5",
|
|
61944
|
+
children: [
|
|
61945
|
+
/* @__PURE__ */ jsx(MultiSelectDropdown, {
|
|
61946
|
+
label: t("uiLibrary.deviceExport.filterRole", "Role"),
|
|
61947
|
+
options: roleOptions,
|
|
61948
|
+
selected: bulkFilters.roles,
|
|
61949
|
+
onChange: setRoleFilter
|
|
61344
61950
|
}),
|
|
61345
|
-
/* @__PURE__ */ jsx(
|
|
61346
|
-
|
|
61347
|
-
|
|
61348
|
-
|
|
61349
|
-
|
|
61350
|
-
children: t("uiLibrary.deviceExport.exposeN", "Expose {{count}}", { count: selectedIds.size })
|
|
61951
|
+
/* @__PURE__ */ jsx(MultiSelectDropdown, {
|
|
61952
|
+
label: t("uiLibrary.deviceExport.filterProvider", "Provider"),
|
|
61953
|
+
options: providerOptions,
|
|
61954
|
+
selected: bulkFilters.providers,
|
|
61955
|
+
onChange: setProviderFilter
|
|
61351
61956
|
}),
|
|
61352
61957
|
/* @__PURE__ */ jsx(Button, {
|
|
61353
61958
|
size: "sm",
|
|
61354
61959
|
variant: "secondary",
|
|
61355
|
-
disabled:
|
|
61356
|
-
onClick:
|
|
61357
|
-
children: t("uiLibrary.deviceExport.
|
|
61960
|
+
disabled: filtered.length === 0,
|
|
61961
|
+
onClick: () => setSelectedIds((current) => selectShown(current, filtered)),
|
|
61962
|
+
children: t("uiLibrary.deviceExport.selectShown", "Select {{count}} shown", { count: filtered.length })
|
|
61358
61963
|
}),
|
|
61359
|
-
/* @__PURE__ */
|
|
61360
|
-
|
|
61361
|
-
|
|
61362
|
-
|
|
61363
|
-
|
|
61364
|
-
|
|
61365
|
-
|
|
61366
|
-
|
|
61367
|
-
|
|
61964
|
+
selectedIds.size > 0 && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
61965
|
+
/* @__PURE__ */ jsx(Button, {
|
|
61966
|
+
size: "sm",
|
|
61967
|
+
variant: "ghost",
|
|
61968
|
+
onClick: () => setSelectedIds((current) => deselectShown(current, filtered)),
|
|
61969
|
+
children: t("uiLibrary.deviceExport.deselectShown", "Deselect shown")
|
|
61970
|
+
}),
|
|
61971
|
+
/* @__PURE__ */ jsx("span", {
|
|
61972
|
+
"data-testid": "export-selection-count",
|
|
61973
|
+
className: "text-[11px] text-foreground-subtle",
|
|
61974
|
+
children: t("uiLibrary.deviceExport.selected", "{{count}} selected", { count: selectedIds.size })
|
|
61975
|
+
}),
|
|
61976
|
+
/* @__PURE__ */ jsx(Button, {
|
|
61977
|
+
size: "sm",
|
|
61978
|
+
variant: "primary",
|
|
61979
|
+
disabled: busy,
|
|
61980
|
+
onClick: exposeSelected,
|
|
61981
|
+
children: t("uiLibrary.deviceExport.exposeN", "Expose {{count}}", { count: selectedIds.size })
|
|
61982
|
+
}),
|
|
61983
|
+
/* @__PURE__ */ jsx(Button, {
|
|
61984
|
+
size: "sm",
|
|
61985
|
+
variant: "secondary",
|
|
61986
|
+
disabled: busy,
|
|
61987
|
+
onClick: unexposeSelected,
|
|
61988
|
+
children: t("uiLibrary.deviceExport.unexposeN", "Unexpose {{count}}", { count: selectedIds.size })
|
|
61989
|
+
}),
|
|
61990
|
+
/* @__PURE__ */ jsx(Button, {
|
|
61991
|
+
size: "sm",
|
|
61992
|
+
variant: "ghost",
|
|
61993
|
+
onClick: clearSelection,
|
|
61994
|
+
children: t("uiLibrary.deviceExport.clear", "Clear")
|
|
61995
|
+
})
|
|
61996
|
+
] })
|
|
61997
|
+
]
|
|
61998
|
+
});
|
|
61999
|
+
}, [
|
|
61368
62000
|
t,
|
|
61369
62001
|
roleOptions,
|
|
61370
62002
|
providerOptions,
|
|
@@ -61413,16 +62045,16 @@ function DeviceExportPanel({ addonId, onOpenDevice, showSetup = true }) {
|
|
|
61413
62045
|
}),
|
|
61414
62046
|
/* @__PURE__ */ jsx("div", {
|
|
61415
62047
|
className: "p-2 sm:p-3",
|
|
61416
|
-
children: loading && candidateDevices.length === 0 ? /* @__PURE__ */ jsxs("div", {
|
|
62048
|
+
children: loading && candidateDevices.length === 0 && entityRows.length === 0 ? /* @__PURE__ */ jsxs("div", {
|
|
61417
62049
|
className: "flex items-center gap-2 px-1 py-6 text-xs text-foreground-subtle",
|
|
61418
62050
|
children: [/* @__PURE__ */ jsx(LoaderCircle, { className: "h-3.5 w-3.5 animate-spin" }), t("uiLibrary.deviceExport.loading", "Loading exportable devices…")]
|
|
61419
|
-
}) : hasSupportedKinds && candidateDevices.length > 0 ? /* @__PURE__ */ jsx(DeviceList, {
|
|
62051
|
+
}) : hasSupportedKinds && candidateDevices.length > 0 || entityRows.length > 0 ? /* @__PURE__ */ jsx(DeviceList, {
|
|
61420
62052
|
mode: "generic",
|
|
61421
|
-
items:
|
|
62053
|
+
items: shownRows,
|
|
61422
62054
|
getKey,
|
|
61423
62055
|
getSearchText,
|
|
61424
62056
|
getFilterType,
|
|
61425
|
-
filterOptions:
|
|
62057
|
+
filterOptions: typeFilterOptions,
|
|
61426
62058
|
columns,
|
|
61427
62059
|
onRowClick: onOpenDevice ? onRowClick : void 0,
|
|
61428
62060
|
toolbar: renderToolbar,
|
|
@@ -63566,7 +64198,8 @@ function SectionedPage({ icon, title, subtitle, actions, sections, defaultSectio
|
|
|
63566
64198
|
tabKey: activeId,
|
|
63567
64199
|
fill,
|
|
63568
64200
|
children: fill ? /* @__PURE__ */ jsx("div", {
|
|
63569
|
-
className: "flex min-h-0 flex-1 flex-col",
|
|
64201
|
+
className: "flex min-h-0 flex-1 flex-col overflow-y-auto",
|
|
64202
|
+
"data-testid": "sectioned-page-body",
|
|
63570
64203
|
children: active?.content
|
|
63571
64204
|
}) : active?.content
|
|
63572
64205
|
});
|
|
@@ -71006,6 +71639,90 @@ function useDeviceCapSlice(trpc, deviceId, capName) {
|
|
|
71006
71639
|
return useDeviceStateSlice(handleRef.current);
|
|
71007
71640
|
}
|
|
71008
71641
|
//#endregion
|
|
71642
|
+
//#region src/hooks/merge-detections.ts
|
|
71643
|
+
/** Minimum IoU between an enriched root and a raw root to call them one subject
|
|
71644
|
+
* when no trackId pairs them. */
|
|
71645
|
+
var EXTRA_MATCH_IOU_THRESHOLD = .3;
|
|
71646
|
+
function iou(a, b) {
|
|
71647
|
+
const x1 = Math.max(a.x, b.x);
|
|
71648
|
+
const y1 = Math.max(a.y, b.y);
|
|
71649
|
+
const x2 = Math.min(a.x + a.width, b.x + b.width);
|
|
71650
|
+
const y2 = Math.min(a.y + a.height, b.y + b.height);
|
|
71651
|
+
const inter = Math.max(0, x2 - x1) * Math.max(0, y2 - y1);
|
|
71652
|
+
const union = a.width * a.height + b.width * b.height - inter;
|
|
71653
|
+
return union > 0 ? inter / union : 0;
|
|
71654
|
+
}
|
|
71655
|
+
function isRoot(d) {
|
|
71656
|
+
return d.kind !== "detail";
|
|
71657
|
+
}
|
|
71658
|
+
function scaleBox(b, sx, sy) {
|
|
71659
|
+
return {
|
|
71660
|
+
x: b.x * sx,
|
|
71661
|
+
y: b.y * sy,
|
|
71662
|
+
width: b.width * sx,
|
|
71663
|
+
height: b.height * sy
|
|
71664
|
+
};
|
|
71665
|
+
}
|
|
71666
|
+
/** The raw root an enriched root describes: same trackId, else best IoU. */
|
|
71667
|
+
function matchRawRoot(enrichedRoot, rawRoots, sx, sy) {
|
|
71668
|
+
const trackId = enrichedRoot.track?.trackId;
|
|
71669
|
+
if (trackId !== void 0) {
|
|
71670
|
+
const byTrack = rawRoots.find((r) => r.track?.trackId === trackId);
|
|
71671
|
+
if (byTrack) return byTrack;
|
|
71672
|
+
}
|
|
71673
|
+
const scaled = scaleBox(enrichedRoot.bbox, sx, sy);
|
|
71674
|
+
let best = null;
|
|
71675
|
+
let bestIou = EXTRA_MATCH_IOU_THRESHOLD;
|
|
71676
|
+
for (const r of rawRoots) {
|
|
71677
|
+
const v = iou(scaled, r.bbox);
|
|
71678
|
+
if (v >= bestIou) {
|
|
71679
|
+
best = r;
|
|
71680
|
+
bestIou = v;
|
|
71681
|
+
}
|
|
71682
|
+
}
|
|
71683
|
+
return best;
|
|
71684
|
+
}
|
|
71685
|
+
function mergeDetections(raw, extras) {
|
|
71686
|
+
if (!extras) return raw;
|
|
71687
|
+
const frameWidth = raw?.frameWidth ?? extras.frameWidth;
|
|
71688
|
+
const frameHeight = raw?.frameHeight ?? extras.frameHeight;
|
|
71689
|
+
const sx = extras.frameWidth > 0 ? frameWidth / extras.frameWidth : 1;
|
|
71690
|
+
const sy = extras.frameHeight > 0 ? frameHeight / extras.frameHeight : 1;
|
|
71691
|
+
const rawDets = raw?.detections ?? [];
|
|
71692
|
+
const rawRoots = rawDets.filter(isRoot);
|
|
71693
|
+
const rawRootFor = /* @__PURE__ */ new Map();
|
|
71694
|
+
const extraLabels = /* @__PURE__ */ new Map();
|
|
71695
|
+
for (const root of extras.detections.filter(isRoot)) {
|
|
71696
|
+
const match = matchRawRoot(root, rawRoots, sx, sy);
|
|
71697
|
+
rawRootFor.set(root.id, match);
|
|
71698
|
+
if (match && root.labels.length > 0) extraLabels.set(match, [...extraLabels.get(match) ?? [], ...root.labels]);
|
|
71699
|
+
}
|
|
71700
|
+
const out = rawDets.map((d) => {
|
|
71701
|
+
const add = extraLabels.get(d);
|
|
71702
|
+
if (!add) return d;
|
|
71703
|
+
const have = new Set(d.labels.map((l) => l.label));
|
|
71704
|
+
const fresh = add.filter((l) => !have.has(l.label));
|
|
71705
|
+
return fresh.length > 0 ? {
|
|
71706
|
+
...d,
|
|
71707
|
+
labels: [...d.labels, ...fresh]
|
|
71708
|
+
} : d;
|
|
71709
|
+
});
|
|
71710
|
+
for (const d of extras.detections) {
|
|
71711
|
+
if (isRoot(d)) continue;
|
|
71712
|
+
const parent = d.parentId !== void 0 ? rawRootFor.get(d.parentId) : void 0;
|
|
71713
|
+
out.push({
|
|
71714
|
+
...d,
|
|
71715
|
+
bbox: scaleBox(d.bbox, sx, sy),
|
|
71716
|
+
...parent ? { parentId: parent.id } : {}
|
|
71717
|
+
});
|
|
71718
|
+
}
|
|
71719
|
+
return {
|
|
71720
|
+
detections: out,
|
|
71721
|
+
frameWidth,
|
|
71722
|
+
frameHeight
|
|
71723
|
+
};
|
|
71724
|
+
}
|
|
71725
|
+
//#endregion
|
|
71009
71726
|
//#region src/hooks/use-device-detections.ts
|
|
71010
71727
|
/**
|
|
71011
71728
|
* useDeviceDetections — subscribes to motion, raw motion, and detection events for a device.
|
|
@@ -71014,12 +71731,18 @@ function useDeviceCapSlice(trpc, deviceId, capName) {
|
|
|
71014
71731
|
* admin-ui (BackendClient.trpc) and addon pages (AddonPageProps.trpc).
|
|
71015
71732
|
*/
|
|
71016
71733
|
var MOTION_FADE_MS = 500;
|
|
71017
|
-
/**
|
|
71018
|
-
*
|
|
71019
|
-
* frames are ignored (post-analysis is the richer source; raw remains the
|
|
71020
|
-
* fallback when post-analysis is absent). Keeping the two equal means raw
|
|
71021
|
-
* resumes exactly when the enriched display fades — no blank gap. */
|
|
71734
|
+
/** Fade of each detection source (raw roots, enriched extras), counted from the
|
|
71735
|
+
* frame's capture time so a late frame is not kept for the full window. */
|
|
71022
71736
|
var DETECTION_FADE_MS = 800;
|
|
71737
|
+
/** A frame older than this at arrival is replayed pre-roll and never drawn.
|
|
71738
|
+
* Same meaning as the server's OVERLAY_MAX_FRAME_AGE_MS. */
|
|
71739
|
+
var OVERLAY_MAX_FRAME_AGE_MS = 1e3;
|
|
71740
|
+
/**
|
|
71741
|
+
* The most of a frame's age (arrival minus its capture timestamp) the fade
|
|
71742
|
+
* deducts. Bounded so a skewed server/browser clock can never make boxes vanish
|
|
71743
|
+
* on arrival.
|
|
71744
|
+
*/
|
|
71745
|
+
var MAX_FRAME_AGE_FADE_DEDUCTION_MS = DETECTION_FADE_MS / 2;
|
|
71023
71746
|
/** Helper: subscribe to live.onEvent without optional chaining on subscribe() */
|
|
71024
71747
|
function safeSubscribe(trpc, category, onData) {
|
|
71025
71748
|
try {
|
|
@@ -71042,8 +71765,26 @@ function useDeviceDetections(trpc, deviceId) {
|
|
|
71042
71765
|
const [phase, setPhase] = useState("watching");
|
|
71043
71766
|
const motionTimer = useRef(void 0);
|
|
71044
71767
|
const motionRawTimer = useRef(void 0);
|
|
71045
|
-
const
|
|
71046
|
-
const
|
|
71768
|
+
const rawTimer = useRef(void 0);
|
|
71769
|
+
const extrasTimer = useRef(void 0);
|
|
71770
|
+
/** Live part of each source: raw roots and enriched extras fade independently. */
|
|
71771
|
+
const rawPart = useRef(null);
|
|
71772
|
+
const extrasPart = useRef(null);
|
|
71773
|
+
/** Capture timestamp of the newest frame shown, per source; older arrivals are dropped. */
|
|
71774
|
+
const lastRawTs = useRef(0);
|
|
71775
|
+
const lastExtrasTs = useRef(0);
|
|
71776
|
+
const publish = useCallback(() => {
|
|
71777
|
+
setDetection(mergeDetections(rawPart.current, extrasPart.current));
|
|
71778
|
+
}, []);
|
|
71779
|
+
/** Admit a frame: null = rejected (stale or out of order), else its fade in ms. */
|
|
71780
|
+
const admit = useCallback((frameTs, lastTs) => {
|
|
71781
|
+
if (frameTs !== null) {
|
|
71782
|
+
if (Date.now() - frameTs > OVERLAY_MAX_FRAME_AGE_MS) return null;
|
|
71783
|
+
if (frameTs < lastTs.current) return null;
|
|
71784
|
+
lastTs.current = frameTs;
|
|
71785
|
+
}
|
|
71786
|
+
return DETECTION_FADE_MS - (frameTs === null ? 0 : Math.min(Math.max(Date.now() - frameTs, 0), MAX_FRAME_AGE_FADE_DEDUCTION_MS));
|
|
71787
|
+
}, []);
|
|
71047
71788
|
useEffect(() => {
|
|
71048
71789
|
if (deviceId === null) return;
|
|
71049
71790
|
const sub = safeSubscribe(trpc, "detection.motion-analysis", (event) => {
|
|
@@ -71092,48 +71833,72 @@ function useDeviceDetections(trpc, deviceId) {
|
|
|
71092
71833
|
};
|
|
71093
71834
|
}, [trpc, deviceId]);
|
|
71094
71835
|
useEffect(() => {
|
|
71095
|
-
|
|
71836
|
+
extrasPart.current = null;
|
|
71837
|
+
rawPart.current = null;
|
|
71838
|
+
lastExtrasTs.current = 0;
|
|
71839
|
+
lastRawTs.current = 0;
|
|
71840
|
+
setDetection(null);
|
|
71096
71841
|
if (deviceId === null) return;
|
|
71097
71842
|
const sub = safeSubscribe(trpc, "pipeline-analytics.frame-tracked", (event) => {
|
|
71098
71843
|
const data = event?.data;
|
|
71099
71844
|
if (!data || data.deviceId !== deviceId) return;
|
|
71100
71845
|
if (!data.detections?.length) return;
|
|
71101
71846
|
if (typeof data.detections[0]?.kind !== "string") return;
|
|
71102
|
-
|
|
71103
|
-
|
|
71847
|
+
const fadeInMs = admit(typeof data.timestamp === "number" ? data.timestamp : null, lastExtrasTs);
|
|
71848
|
+
if (fadeInMs === null) return;
|
|
71849
|
+
extrasPart.current = {
|
|
71104
71850
|
detections: data.detections,
|
|
71105
71851
|
frameWidth: data.frameWidth,
|
|
71106
71852
|
frameHeight: data.frameHeight
|
|
71107
|
-
}
|
|
71108
|
-
|
|
71109
|
-
|
|
71853
|
+
};
|
|
71854
|
+
publish();
|
|
71855
|
+
if (extrasTimer.current) clearTimeout(extrasTimer.current);
|
|
71856
|
+
extrasTimer.current = setTimeout(() => {
|
|
71857
|
+
extrasPart.current = null;
|
|
71858
|
+
publish();
|
|
71859
|
+
}, fadeInMs);
|
|
71110
71860
|
});
|
|
71111
71861
|
return () => {
|
|
71112
71862
|
sub?.unsubscribe();
|
|
71113
|
-
if (
|
|
71863
|
+
if (extrasTimer.current) clearTimeout(extrasTimer.current);
|
|
71114
71864
|
};
|
|
71115
|
-
}, [
|
|
71865
|
+
}, [
|
|
71866
|
+
trpc,
|
|
71867
|
+
deviceId,
|
|
71868
|
+
admit,
|
|
71869
|
+
publish
|
|
71870
|
+
]);
|
|
71116
71871
|
useEffect(() => {
|
|
71117
71872
|
if (deviceId === null) return;
|
|
71118
71873
|
const sub = safeSubscribe(trpc, "detection.result", (event) => {
|
|
71119
71874
|
const e = event;
|
|
71120
71875
|
if (!matchesDevice(e?.source, deviceId)) return;
|
|
71121
|
-
if (Date.now() - lastEnrichedAt.current < DETECTION_FADE_MS) return;
|
|
71122
71876
|
const frame = e.data?.frame;
|
|
71123
71877
|
if (!frame?.detections?.length) return;
|
|
71124
|
-
|
|
71878
|
+
const fadeInMs = admit(typeof frame.timestamp === "number" ? frame.timestamp : null, lastRawTs);
|
|
71879
|
+
if (fadeInMs === null) return;
|
|
71880
|
+
rawPart.current = {
|
|
71125
71881
|
detections: frame.detections,
|
|
71126
71882
|
frameWidth: frame.width,
|
|
71127
71883
|
frameHeight: frame.height
|
|
71128
|
-
}
|
|
71129
|
-
|
|
71130
|
-
|
|
71884
|
+
};
|
|
71885
|
+
publish();
|
|
71886
|
+
if (rawTimer.current) clearTimeout(rawTimer.current);
|
|
71887
|
+
rawTimer.current = setTimeout(() => {
|
|
71888
|
+
rawPart.current = null;
|
|
71889
|
+
publish();
|
|
71890
|
+
}, fadeInMs);
|
|
71131
71891
|
});
|
|
71132
71892
|
return () => {
|
|
71133
71893
|
sub?.unsubscribe();
|
|
71134
|
-
if (
|
|
71894
|
+
if (rawTimer.current) clearTimeout(rawTimer.current);
|
|
71135
71895
|
};
|
|
71136
|
-
}, [
|
|
71896
|
+
}, [
|
|
71897
|
+
trpc,
|
|
71898
|
+
deviceId,
|
|
71899
|
+
admit,
|
|
71900
|
+
publish
|
|
71901
|
+
]);
|
|
71137
71902
|
useEffect(() => {
|
|
71138
71903
|
if (deviceId === null) return;
|
|
71139
71904
|
const sub = safeSubscribe(trpc, "detection.phase-transition", (event) => {
|
|
@@ -71580,8 +72345,8 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-BCU2NW7w.js")
|
|
|
71580
72345
|
/** Lazy-wrapped `SceneMonitorEditor` — code-split off the main bundle for the
|
|
71581
72346
|
* same reason: it mounts `MaskShapeCanvas`, which chains react-konva. Render
|
|
71582
72347
|
* inside `<Suspense>`; the admin-ui `/scenes` dialog is its only caller. */
|
|
71583
|
-
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-
|
|
72348
|
+
var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-A1U5eCrC.js").then((m) => ({ default: m.SceneMonitorEditor })));
|
|
71584
72349
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
71585
72350
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-VntwpB1u.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
71586
72351
|
//#endregion
|
|
71587
|
-
export { Shield as $, CloudFog as $n, LocateFixed as $t, Trash2 as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Film as An, AppShell, Bird as Ar, ArcKnob, PawPrint as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Sun as B, BATTERY_BADGE_LOW_KEY, BATTERY_BADGE_NORMAL_KEY, BINARY_BATTERY_LOW_BELOW, BOOLEAN_STATES, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BarSeries, BatteryBadge, DoorOpen as Bn, BottomSheet, Ban as Br, Breadcrumb, BrightnessPanel, Moon as Bt, Button, ButtonControl, ButtonHeroCard, Unlink2 as C, CENTER, CHART_SERIES_TOKENS, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONSUMABLE_LOW_PERCENT, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, ChartFrame, ChartPlaceholder, ChartSwatch, ChartWindowToggle, Checkbox, ChildSectionAccordion, ClimatePanel, Gauge as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumableLevelBadge, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Cable as Cr, Plus as Ct, CustomFieldRenderersProvider, TriangleAlert as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEFAULT_UNIT_PREFERENCES, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_NAME_FORMS, DEVICE_NAME_JOIN, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_ROLE_NOUNS, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DEVICE_TYPE_NOUNS, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceFleetFromServer, DeviceFleetProvider, DeviceGrid, DeviceHistoryView, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceName, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DisplayPaletteProvider, Flashlight as Dn, DoorbellRecentPanel, Bot as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pin as Dt, DummyHeroCard, DummyInline, Truck as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Footprints as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Box as Er, ErrorBox, Pipette as Et, EventKindGlyph, EventStream, ExtensionsPanel, Timer as F, FALLBACK_SCOPE, 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, ExternalLink as Fn, FormField$1 as FormField, BatteryWarning as Fr, Music as Ft, Sparkles as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Cpu as Gn, ArrowLeft as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, MessageSquare as Gt, Star as H, HISTORY_PAGE_PATH, HISTORY_PANELS_NAMESPACE, HISTORY_SELECTION_MAX, HISTORY_WINDOW_IDS, HISTORY_WINDOW_MS, HOST_WIDGETS, HUB_SESSION_RUN_MS, HistoryChart, HistoryWindowBar, HlsVideo, Dog as Hn, HotkeyProvider, HotkeyScope, HoverZoomImage, ArrowUp as Hr, Minus as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Thermometer as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, EllipsisVertical as In, InferenceConfigSelector, Input, BatteryMedium as Ir, Move as It, ItemFormDialog, SlidersHorizontal as J, Cloud as Jn, AlarmSmoke as Jr, Maximize2 as Jt, Snowflake as K, KebabMenu, KeyValueList, Copy as Kn, ArrowDown as Kr, Menu as Kt, Target as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplets as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, BatteryLow as Lr, MoveVertical as Lt, Tractor as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Fan as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Bell as Mr, Package as Mt, ToggleRight as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, Eye as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BellRing as Nr, Network as Nt, TrendingDown as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, FlashlightOff as On, OptionSelect, Bone as Or, Phone as Ot, ToggleLeft 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, EyeOff as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, Battery as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Navigation as Pt, PtzPanel, Ship as Q, CloudLightning as Qn, QrCode, LockOpen as Qt, Tag as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Droplet as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, BatteryFull as Rr, MoveHorizontal as Rt, RunReport, RunningBadge, RunningStatusLine, Upload 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, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, GraduationCap as Sn, SnapshotButton, SortHeaderButton, Sparkline, Camera as Sr, Plug as St, StableTabPanel, StatCard, StateTimeline, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Type as T, TABLE_SCROLL_MAX_H, TEMPERATURE_SCALES, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimezoneSelector, Funnel as Tn, Tooltip, TooltipContent, TooltipTrigger, Bug as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Plane as Tt, Square as U, UNIT_PREFERENCES_NAMESPACE, UiTextProvider, UiTrans, Database as Un, UnitPicker, UnitPreferencesFromServer, UnitPreferencesProvider, ArrowUpToLine as Ur, Minimize2 as Ut, SunMedium as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, DoorClosed as Vn, VodPlaybackProvider, Baby as Vr, MonitorPlay as Vt, Sprout as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Crosshair as Wn, ArrowRight as Wr, Mic as Wt, SkipBack as X, CloudSnow as Xn, Activity as Xr, Mail as Xt, SkipForward as Y, CloudSun as Yn, AirVent as Yr, MapPin as Yt, Siren as Z, CloudRain as Zn, ZoneEditingProvider, Lock as Zt, Vibrate as _, HardDrive as _n, Check as _r, Radar as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, Leaf as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CirclePlus as ar, ariaSortForColumn, assignNodeColorId, Server as at, axisTicks, User as b, badgeFor, binaryBatteryIsLow, bindsToModel, GripHorizontal as bn, booleanLabels, Cast as br, Power as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheck as cr, createAddonI18n, createSharedContext, createTheme, Scan as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, decodeCustomWindow, decodeSeriesRef, defaultAxisSpec, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, detectPlatform, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceNameNouns, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, Image as dn, dockBox, ChevronsUpDown as dr, draftFromQuery, Route as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, LoaderCircle as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, Clock as er, ShieldOff as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, ImageOff as fn, foldDeviceName, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatDeviceName, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, ChevronsDownUp as fr, freezeVerdict, RotateCw as ft, fuzzyMatch, Volume2 as g, gapThresholdMs, getClassColor, getPhaseVisual, Hash as gn, ChevronDown as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, RadioTower as gt, VolumeX as h, hardwareLabel, historyPageHref, Heater as hn, ChevronLeft as hr, Radio as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Lightbulb as in, indexDeviceNames, initialScrubState, insertAtSelection, CircleQuestionMark as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDeviceNameStock, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isRedactedSecret, isRefusal, isSecretField, isValueField, Settings as it, TrainFront as j, Feather as jn, Bike as jr, Pause as jt, TrendingUp as k, Flame as kn, Blinds as kr, Pencil as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, Info as ln, loadIconGlyphs, loadRemoteBundle, CircleCheckBig as lr, Save as lt, lucideExportName, WashingMachine as m, makeScrubBridge, mapRootDetectorPlacements, matchesCombo, mergeSecretForSubmit, metadataEntries, metadataString, History as mn, mountAddonPage, mountPath, ChevronRight as mr, RefreshCw as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, niceMax, niceRange, ListChecks as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, nounSpecFor, CircleX as nr, ShieldAlert as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, LayoutGrid as on, openTopLayer, optionSearchText as optionSelectSearchText, CirclePause as or, orphanDeviceLabel, Search as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseCombo, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, House as pn, ChevronUp as pr, preferenceForQuantity, previousWindow, projectSubjectPath, providerIcons, RotateCcw as pt, Smartphone as q, Cog as qn, ArrowDownToLine as qr, Megaphone as qt, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, readUnitPreferences, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDeviceLabel, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveHistoryWindow, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Link2 as rn, roiTooLarge, rootSourceState, routerBasename, CircleStop as rr, Share2 as rt, runningDurationSince, runningStatusParts, Wind as s, sameDeviceName, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, segmentsFromChanges, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, seriesRefId, settingsModelIdFor, sharedGapSpans, shiftPoints, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Laugh as sn, sortRows, sortRowsByColumn, CircleDot as sr, ScrollText as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripDeviceParentPrefix, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, timeInState, List as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, Clapperboard as tr, trainingRefusalText, translateAddonKey, trpc, ShieldCheck as tt, typeLabel, WifiOff as u, Inbox as un, unitAxes, CircleAlert as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAccountUnitPreferences, useActionSourceListActions, useActionSourceRunAction, useActionSourceStopAction, useActionsCreate, useActionsDelete, useActionsGet, useActionsGetLinks, useActionsGetTraces, useActionsList, useActionsListForCamera, useActionsRun, useActionsSetLinks, useActionsStop, useActionsUpdate, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, 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, useClassPainter, 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, useCoreBlocksGetAutomationRunState, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTraces, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksReportAutomationRun, 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, useDeviceHistoryDeleteOrphanSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListOrphanSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryMany, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceLabel, useDeviceLabelById, 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, useDeviceNameIndex, useDeviceNameNouns, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, 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, useGroupActiveGetStatus, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHotkey, 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, useIrTransmitterGetInfo, useIrTransmitterSend, 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, useMeterGetStatus, 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, usePersistedDisclosure, 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, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, 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, usePipelineOrchestratorForgetInferenceDevice, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, 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, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetNodeStepSettings, 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, useRemoteGetConfig, useRemoteListCommands, useRemoteSendCommand, useRemoteSendMediaCommand, useRemoteSetConfig, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSearchFieldHotkey, 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, useStorageMigrationMoverClearance, 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, useTemplateCreate, useTemplateDelete, useTemplateGet, useTemplateList, useTemplateUpdate, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUnitPreferences, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeOauthSession, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, 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, Sailboat as ut, UtensilsCrossed as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, Hand as vn, ChartLine as vr, QrCode$1 as vt, Undo2 as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, Gamepad2 as wn, Bus as wr, writeStoredGroupBy, Play as wt, UserCheck as x, Grid2x2 as xn, Car as xr, PowerOff as xt, Users as y, Hammer as yn, Cat as yr, Puzzle as yt, Sunrise as z, Download as zn, Bath as zr, MousePointerClick as zt };
|
|
72352
|
+
export { Shield as $, CloudLightning as $n, LocateFixed as $t, Trash2 as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Film as An, AppShell, Blinds as Ar, ArcKnob, PawPrint as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, Sun as B, BATTERY_BADGE_LOW_KEY, BATTERY_BADGE_NORMAL_KEY, BINARY_BATTERY_LOW_BELOW, BOOLEAN_STATES, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BarSeries, BatteryBadge, Download as Bn, BottomSheet, Bath as Br, Breadcrumb, BrightnessPanel, Moon as Bt, Button, ButtonControl, ButtonHeroCard, Unlink2 as C, CENTER, CHART_SERIES_TOKENS, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONSUMABLE_LOW_PERCENT, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, ChartFrame, ChartPlaceholder, ChartSwatch, ChartWindowToggle, Checkbox, ChildSectionAccordion, ClimatePanel, Gauge as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumableLevelBadge, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Camera as Cr, Plus as Ct, CustomFieldRenderersProvider, TriangleAlert as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEFAULT_UNIT_PREFERENCES, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_NAME_FORMS, DEVICE_NAME_JOIN, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_ROLE_NOUNS, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DEVICE_TYPE_NOUNS, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceFleetFromServer, DeviceFleetProvider, DeviceGrid, DeviceHistoryView, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceName, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DisplayPaletteProvider, Flashlight as Dn, DoorbellRecentPanel, Box as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Pin as Dt, DummyHeroCard, DummyInline, Truck as E, EMPTY_DATA_TABLE_FILTER, EMPTY_HISTORY_PANELS, EVENT_KIND_ICONS, EmptyState, Footprints as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bug as Er, ErrorBox, Pipette as Et, EventKindGlyph, EventStream, ExtensionsPanel, Timer as F, FALLBACK_SCOPE, 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, ExternalLink as Fn, FormField$1 as FormField, Battery as Fr, Music as Ft, Sparkles as G, GAP_INTERVAL_FACTOR, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Crosshair as Gn, ArrowRight as Gr, GripTrack, GroupedModelSelector, GroupedTilePicker, MessageSquare as Gt, Star as H, HISTORY_PAGE_PATH, HISTORY_PANELS_NAMESPACE, HISTORY_SELECTION_MAX, HISTORY_WINDOW_IDS, HISTORY_WINDOW_MS, HOST_WIDGETS, HUB_SESSION_RUN_MS, HistoryChart, HistoryWindowBar, HlsVideo, DoorClosed as Hn, HotkeyProvider, HotkeyScope, HoverZoomImage, Baby as Hr, Minus as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Thermometer as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Eraser as In, InferenceConfigSelector, Input, BatteryWarning as Ir, Move as It, ItemFormDialog, SlidersHorizontal as J, Cog as Jn, ArrowDownToLine as Jr, Maximize2 as Jt, Snowflake as K, KebabMenu, KeyValueList, Cpu as Kn, ArrowLeft as Kr, Menu as Kt, Target as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, EllipsisVertical as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, BatteryMedium as Lr, MoveVertical as Lt, Tractor as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Fan as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Bike as Mr, Package as Mt, ToggleRight as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, Eye as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, Bell as Nr, Network as Nt, TrendingDown as O, OCCUPANCY_KEY, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, FlashlightOff as On, OptionSelect, Bot as Or, Phone as Ot, ToggleLeft 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, EyeOff as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BellRing as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Navigation as Pt, PtzPanel, Ship as Q, CloudRain as Qn, QrCode, LockOpen as Qt, Tag as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RESOLUTION_BUCKET_MS, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Droplets as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, BatteryLow as Rr, MoveHorizontal as Rt, RunReport, RunningBadge, RunningStatusLine, Upload 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, SUBJECT_PATH_DWELL_EPS, SUBJECT_PATH_FULL_FRAME_COVERAGE, SUBJECT_PATH_MAX_POINTS, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, GraduationCap as Sn, SnapshotButton, SortHeaderButton, Sparkline, Car as Sr, Plug as St, StableTabPanel, StatCard, StateTimeline, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Type as T, TABLE_SCROLL_MAX_H, TEMPERATURE_SCALES, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimeSeriesChart, TimezoneSelector, Funnel as Tn, Tooltip, TooltipContent, TooltipTrigger, Bus as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Plane as Tt, Square as U, UNIT_PREFERENCES_NAMESPACE, UiTextProvider, UiTrans, Dog as Un, UnitPicker, UnitPreferencesFromServer, UnitPreferencesProvider, ArrowUp as Ur, Minimize2 as Ut, SunMedium as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, ViewSwitch, DoorOpen as Vn, VodPlaybackProvider, Ban as Vr, MonitorPlay as Vt, Sprout as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Database as Wn, ArrowUpToLine as Wr, Mic as Wt, SkipBack as X, CloudSun as Xn, AirVent as Xr, Mail as Xt, SkipForward as Y, Cloud as Yn, AlarmSmoke as Yr, MapPin as Yt, Siren as Z, CloudSnow as Zn, ZoneEditingProvider, Activity as Zr, Lock as Zt, Vibrate as _, HardDrive as _n, ChevronDown as _r, Radar as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, alignSeries, allDeviceTypeFilterOptions, Leaf as an, anchorNow, applyFleetQueryDefaults, applyPickerFilters, CircleQuestionMark as ar, ariaSortForColumn, assignNodeColorId, Server as at, axisTicks, User as b, badgeFor, binaryBatteryIsLow, bindsToModel, GripHorizontal as bn, booleanLabels, Cat as br, Power as bt, bucketTotals, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, buildSubjectPath, buildTimeSeriesModel, Wifi as c, catalogHasDraft, chartKeys, chartSeriesStyle, childEntityId, childListName, chipOverflow, chunk, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, consumableItemLevel, consumableLevelBarClass, consumableLevelLabel, consumableLevelVariant, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleDot as cr, createAddonI18n, createSharedContext, createTheme, Scan as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, decodeCustomWindow, decodeSeriesRef, defaultAxisSpec, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, detectPlatform, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceNameNouns, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, Image as dn, dockBox, CircleAlert as dr, draftFromQuery, Route as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, LoaderCircle as en, encodeCustomWindow, encodeSeriesRef, energyBuckets, ensureMfHostInit, CloudFog as er, ShieldOff as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOccupancyLines, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, ImageOff as fn, foldDeviceName, formatChartBytes, formatChartNumber, formatChartValue, formatControlDateTime, formatDeviceName, formatLastSeen, formatNumeric, formatSettingValue, formatSpan, formatTimeLabel, ChevronsUpDown as fr, freezeVerdict, RotateCw as ft, fuzzyMatch, Volume2 as g, gapThresholdMs, getClassColor, getPhaseVisual, Hash as gn, ChevronLeft as gr, groupAgentColumns, groupChildrenByLayout, groupDeviceSeries, groupPickerDevices, groupPickerDevicesBy, RadioTower as gt, VolumeX as h, hardwareLabel, historyPageHref, Heater as hn, ChevronRight as hr, Radio as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humanizeName, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Lightbulb as in, indexDeviceNames, initialScrubState, insertAtSelection, CircleStop as ir, isAbsentProvider, isByteUnit, isConsumableLevelField, isDataTableFilterActive, isDeviceNameStock, isDrawableSubjectPath, isFieldVisible, isGroupExpanded, isHistoryWindowId, isKeychainFieldValue, isModelScopedField, isRedactedSecret, isRefusal, isSecretField, isValueField, Settings as it, TrainFront as j, Feather as jn, Bird as jr, Pause as jt, TrendingUp as k, Flame as kn, Bone as kr, Pencil as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, linePoints, Info as ln, loadIconGlyphs, loadRemoteBundle, CircleCheck as lr, Save as lt, lucideExportName, WashingMachine as m, makeScrubBridge, mapRootDetectorPlacements, matchesCombo, mergeSecretForSubmit, metadataEntries, metadataString, History as mn, mountAddonPage, mountPath, ChevronUp as mr, RefreshCw as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, niceMax, niceRange, ListChecks as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, normalizeSelection, nounSpecFor, Clapperboard as nr, ShieldAlert as nt, Workflow as o, occupancyFacets, occupancyLines, offListSelections, LayoutGrid as on, openTopLayer, optionSearchText as optionSelectSearchText, CirclePlus as or, orphanDeviceLabel, Search as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseCapKey, parseCombo, parseConsumableLevel, parseIceCandidate, parsePickerGroupBy, parseProducerKey, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, House as pn, ChevronsDownUp as pr, preferenceForQuantity, previousWindow, projectSubjectPath, providerIcons, RotateCcw as pt, Smartphone as q, Copy as qn, ArrowDown as qr, Megaphone as qt, Zap as r, readHistory, readHistoryPanels, readItemId, readStoredGroupBy, readUnitPreferences, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDeviceLabel, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveHistoryWindow, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Link2 as rn, roiTooLarge, rootSourceState, routerBasename, CircleX as rr, Share2 as rt, runningDurationSince, runningStatusParts, Wind as s, sameDeviceName, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, segmentsFromChanges, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, seriesRefId, settingsModelIdFor, sharedGapSpans, shiftPoints, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Laugh as sn, sortRows, sortRowsByColumn, CirclePause as sr, ScrollText as st, stackBuckets, stackSeries, stateAt, stateRow, stateStyle, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripDeviceParentPrefix, stripParentNamePrefix, subjectPathSampleFromBox, subjectPathSvgPoints, summarizeHubCandidates, swatchFillClass, swatchLineClass, ZoomOut as t, tabForSelector, themeToCss, themeToRootCss, timeInState, List as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, Clock as tr, trainingRefusalText, translateAddonKey, trpc, ShieldCheck as tt, typeLabel, WifiOff as u, Inbox as un, unitAxes, CircleCheckBig as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAccountUnitPreferences, useActionSourceListActions, useActionSourceRunAction, useActionSourceStopAction, useActionsCreate, useActionsDelete, useActionsGet, useActionsGetLinks, useActionsGetTraces, useActionsList, useActionsListForCamera, useActionsRun, useActionsSetLinks, useActionsStop, useActionsUpdate, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetPackageDocs, 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, useClassPainter, 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, useCoreBlocksGetAutomationRunState, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTraces, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksReportAutomationRun, 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, useDeviceExportExposeEntity, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListExposedEntities, useDeviceExportListSupportedDeviceKinds, useDeviceExportListSupportedEntityKinds, useDeviceExportUnexposeDevice, useDeviceExportUnexposeEntity, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryDeleteOrphanSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListOrphanSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryMany, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceLabel, useDeviceLabelById, 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, useDeviceNameIndex, useDeviceNameNouns, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSeriesList, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDisplayPaletteGetPalette, useDisplayPaletteListPresets, useDisplayPaletteSetPalette, useDisplayPaletteView, 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, useGroupActiveGetStatus, useGroupCommandsGetStatus, useGroupStatusGetStatus, useHeatingValveGetStatus, useHistoryPanels, useHistoryReader, useHistoryReads, useHotkey, 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, useIrTransmitterGetInfo, useIrTransmitterSend, 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, useMeterGetStatus, 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, usePersistedDisclosure, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePetFountainGetStatus, usePetFountainResetDailyConsumption, usePetFountainSetPump, usePetFountainSetPumpInterval, usePetFountainSetPumpOffMinutes, usePetFountainSetPumpOnMinutes, 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, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, 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, usePipelineOrchestratorForgetInferenceDevice, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, 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, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetNodeStepSettings, 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, useRemoteGetConfig, useRemoteListCommands, useRemoteSendCommand, useRemoteSendMediaCommand, useRemoteSetConfig, useRoleDisplayDefaults, useRunningStateGetStatus, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useSearchFieldHotkey, 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, useStorageMigrationMoverClearance, 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, useTemplateCreate, useTemplateDelete, useTemplateGet, useTemplateList, useTemplateUpdate, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListCanaryTargets, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUnitPreferences, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeOauthSession, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, 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, Sailboat as ut, UtensilsCrossed as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, Hand as vn, Check as vr, QrCode$1 as vt, Undo2 as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withHiddenChart, withPanel, withResolvedParentDetail, withUseRootModel, withoutModelScopedFields, withoutPanel, Gamepad2 as wn, Cable as wr, writeStoredGroupBy, Play as wt, UserCheck as x, Grid2x2 as xn, Cast as xr, PowerOff as xt, Users as y, Hammer as yn, ChartLine as yr, Puzzle as yt, Sunrise as z, Droplet as zn, BatteryFull as zr, MousePointerClick as zt };
|