@camstack/ui-library 1.2.300 → 1.2.302
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/composites/data-records/data-records-hub.d.ts +9 -0
- package/dist/composites/data-records/data-records-model.d.ts +26 -0
- package/dist/composites/data-records/index.d.ts +2 -0
- package/dist/composites/data-table-filter-bar.d.ts +6 -0
- package/dist/composites/data-table.d.ts +11 -2
- package/dist/composites/device-controls/dishwasher-control.d.ts +14 -2
- package/dist/composites/index.d.ts +1 -0
- package/dist/composites/record-entries/index.d.ts +0 -1
- package/dist/composites/record-entries/record-entries-panel.d.ts +15 -3
- package/dist/composites/storage-records/index.d.ts +0 -1
- package/dist/generated/system-hooks.d.ts +14 -0
- package/dist/index.cjs +615 -385
- package/dist/index.js +600 -380
- package/package.json +1 -1
- package/dist/composites/record-entries/record-entries-hub.d.ts +0 -9
- package/dist/composites/storage-records/storage-records-hub.d.ts +0 -4
package/dist/index.js
CHANGED
|
@@ -10992,6 +10992,8 @@ var useDeviceStatusGetStatus = trpc.deviceStatus.getStatus.useQuery;
|
|
|
10992
10992
|
var useDishwasherStart = trpc.dishwasher.start.useMutation;
|
|
10993
10993
|
/** Generated alias around `trpc.dishwasher.pause.useMutation`. */
|
|
10994
10994
|
var useDishwasherPause = trpc.dishwasher.pause.useMutation;
|
|
10995
|
+
/** Generated alias around `trpc.dishwasher.resume.useMutation`. */
|
|
10996
|
+
var useDishwasherResume = trpc.dishwasher.resume.useMutation;
|
|
10995
10997
|
/** Generated alias around `trpc.dishwasher.stop.useMutation`. */
|
|
10996
10998
|
var useDishwasherStop = trpc.dishwasher.stop.useMutation;
|
|
10997
10999
|
/** Generated alias around `trpc.dishwasher.setProgram.useMutation`. */
|
|
@@ -11002,8 +11004,18 @@ var useDishwasherSetPower = trpc.dishwasher.setPower.useMutation;
|
|
|
11002
11004
|
var useDishwasherSetHalfLoad = trpc.dishwasher.setHalfLoad.useMutation;
|
|
11003
11005
|
/** Generated alias around `trpc.dishwasher.setHygienePlus.useMutation`. */
|
|
11004
11006
|
var useDishwasherSetHygienePlus = trpc.dishwasher.setHygienePlus.useMutation;
|
|
11007
|
+
/** Generated alias around `trpc.dishwasher.setExtraDry.useMutation`. */
|
|
11008
|
+
var useDishwasherSetExtraDry = trpc.dishwasher.setExtraDry.useMutation;
|
|
11009
|
+
/** Generated alias around `trpc.dishwasher.setIntensiveZone.useMutation`. */
|
|
11010
|
+
var useDishwasherSetIntensiveZone = trpc.dishwasher.setIntensiveZone.useMutation;
|
|
11011
|
+
/** Generated alias around `trpc.dishwasher.setVarioSpeedPlus.useMutation`. */
|
|
11012
|
+
var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutation;
|
|
11013
|
+
/** Generated alias around `trpc.dishwasher.setChildLock.useMutation`. */
|
|
11014
|
+
var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
|
|
11005
11015
|
/** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
|
|
11006
11016
|
var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
|
|
11017
|
+
/** Generated alias around `trpc.dishwasher.getOptions.useQuery`. */
|
|
11018
|
+
var useDishwasherGetOptions = trpc.dishwasher.getOptions.useQuery;
|
|
11007
11019
|
/** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
|
|
11008
11020
|
var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
|
|
11009
11021
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
@@ -12330,6 +12342,8 @@ var useStorageMigrationStatus = trpc.storageMigration.status.useQuery;
|
|
|
12330
12342
|
var useStorageMigrationCancel = trpc.storageMigration.cancel.useMutation;
|
|
12331
12343
|
/** Generated alias around `trpc.storageMigration.movers.useQuery`. */
|
|
12332
12344
|
var useStorageMigrationMovers = trpc.storageMigration.movers.useQuery;
|
|
12345
|
+
/** Generated alias around `trpc.storageMigration.moverClearance.useQuery`. */
|
|
12346
|
+
var useStorageMigrationMoverClearance = trpc.storageMigration.moverClearance.useQuery;
|
|
12333
12347
|
/** Generated alias around `trpc.storageMigration.residue.useQuery`. */
|
|
12334
12348
|
var useStorageMigrationResidue = trpc.storageMigration.residue.useQuery;
|
|
12335
12349
|
/** Generated alias around `trpc.storageMigration.drain.useMutation`. */
|
|
@@ -28556,7 +28570,7 @@ var STATUS_DOT_STYLES = {
|
|
|
28556
28570
|
idle: "bg-foreground-subtle/40",
|
|
28557
28571
|
unknown: "bg-foreground-subtle/40"
|
|
28558
28572
|
};
|
|
28559
|
-
function formatDuration(ms) {
|
|
28573
|
+
function formatDuration$1(ms) {
|
|
28560
28574
|
if (!Number.isFinite(ms) || ms < 0) return "—";
|
|
28561
28575
|
if (ms < 1e3) return `${ms}ms`;
|
|
28562
28576
|
const totalSec = Math.round(ms / 1e3);
|
|
@@ -28584,7 +28598,7 @@ function ObjectArrayCell({ kind, value }) {
|
|
|
28584
28598
|
});
|
|
28585
28599
|
if (kind === "duration" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
|
|
28586
28600
|
className: "font-mono text-[11px]",
|
|
28587
|
-
children: formatDuration(value)
|
|
28601
|
+
children: formatDuration$1(value)
|
|
28588
28602
|
});
|
|
28589
28603
|
if (kind === "timestamp" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
|
|
28590
28604
|
className: "font-mono text-[11px]",
|
|
@@ -35084,7 +35098,7 @@ var ALIGN_CLASS = {
|
|
|
35084
35098
|
right: "text-right",
|
|
35085
35099
|
center: "text-center"
|
|
35086
35100
|
};
|
|
35087
|
-
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, maxBodyHeight, fill = false, defaultSort, sort: sortProp, onSortChange, pageSize, page: pageProp, onPageChange, paginationLabels = DEFAULT_PAGINATION_LABELS, selection }) {
|
|
35101
|
+
function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyMessage, className, bordered = true, rowClassName, maxBodyHeight, fill = false, defaultSort, sort: sortProp, onSortChange, pageSize, page: pageProp, onPageChange, paginationLabels = DEFAULT_PAGINATION_LABELS, selection, renderExpanded, isExpanded }) {
|
|
35088
35102
|
const [innerSort, setInnerSort] = useState(defaultSort ?? null);
|
|
35089
35103
|
const [innerPage, setInnerPage] = useState(0);
|
|
35090
35104
|
const sort = sortProp !== void 0 ? sortProp : innerSort;
|
|
@@ -35161,7 +35175,8 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
35161
35175
|
const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
|
|
35162
35176
|
const extra = rowClassName?.(row, rowIndex) ?? "";
|
|
35163
35177
|
const interactive = onRowClick !== void 0;
|
|
35164
|
-
|
|
35178
|
+
const detail = renderExpanded !== void 0 && isExpanded?.(row) === true ? renderExpanded(row, rowIndex) : null;
|
|
35179
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("tr", {
|
|
35165
35180
|
onClick: interactive ? () => onRowClick(row, rowIndex) : void 0,
|
|
35166
35181
|
className: [interactive ? "cursor-pointer hover:bg-primary/5" : "hover:bg-primary/5", extra].filter(Boolean).join(" "),
|
|
35167
35182
|
children: shownColumns.map((col) => {
|
|
@@ -35177,7 +35192,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
35177
35192
|
children: col.render(row, rowIndex)
|
|
35178
35193
|
}, col.key);
|
|
35179
35194
|
})
|
|
35180
|
-
},
|
|
35195
|
+
}), detail !== null && /* @__PURE__ */ jsx("tr", {
|
|
35196
|
+
"data-expanded-row": "",
|
|
35197
|
+
className: "bg-surface",
|
|
35198
|
+
children: /* @__PURE__ */ jsx("td", {
|
|
35199
|
+
colSpan: shownColumns.length,
|
|
35200
|
+
className: "border-b border-border px-3 py-2",
|
|
35201
|
+
children: detail
|
|
35202
|
+
})
|
|
35203
|
+
})] }, key);
|
|
35181
35204
|
}) })]
|
|
35182
35205
|
})
|
|
35183
35206
|
});
|
|
@@ -37741,6 +37764,88 @@ function filterDataTableRows(rows, state, config) {
|
|
|
37741
37764
|
});
|
|
37742
37765
|
}
|
|
37743
37766
|
//#endregion
|
|
37767
|
+
//#region src/composites/device-list/multi-select.tsx
|
|
37768
|
+
/**
|
|
37769
|
+
* Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
|
|
37770
|
+
* that opens a checklist. Self-contained (outside-click / Escape dismiss), so
|
|
37771
|
+
* it stays compressed regardless of how many options exist or how little
|
|
37772
|
+
* horizontal room the container has. Shared by the device list's generic-mode
|
|
37773
|
+
* type filter and any other multi-select needs.
|
|
37774
|
+
*/
|
|
37775
|
+
function MultiSelectDropdown({ label, options, selected, onChange }) {
|
|
37776
|
+
const t = useUiText();
|
|
37777
|
+
const [open, setOpen] = useState(false);
|
|
37778
|
+
const rootRef = useRef(null);
|
|
37779
|
+
useEffect(() => {
|
|
37780
|
+
if (!open) return;
|
|
37781
|
+
const onOutside = (e) => {
|
|
37782
|
+
const target = e.target instanceof Node ? e.target : null;
|
|
37783
|
+
if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
|
|
37784
|
+
};
|
|
37785
|
+
const onKey = (e) => {
|
|
37786
|
+
if (e.key === "Escape") setOpen(false);
|
|
37787
|
+
};
|
|
37788
|
+
document.addEventListener("mousedown", onOutside);
|
|
37789
|
+
document.addEventListener("touchstart", onOutside);
|
|
37790
|
+
document.addEventListener("keydown", onKey);
|
|
37791
|
+
return () => {
|
|
37792
|
+
document.removeEventListener("mousedown", onOutside);
|
|
37793
|
+
document.removeEventListener("touchstart", onOutside);
|
|
37794
|
+
document.removeEventListener("keydown", onKey);
|
|
37795
|
+
};
|
|
37796
|
+
}, [open]);
|
|
37797
|
+
const selectedSet = new Set(selected);
|
|
37798
|
+
const count = selected.length;
|
|
37799
|
+
const toggle = (id) => {
|
|
37800
|
+
const next = new Set(selectedSet);
|
|
37801
|
+
if (next.has(id)) next.delete(id);
|
|
37802
|
+
else next.add(id);
|
|
37803
|
+
onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
|
|
37804
|
+
};
|
|
37805
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
37806
|
+
ref: rootRef,
|
|
37807
|
+
className: "relative",
|
|
37808
|
+
children: [/* @__PURE__ */ jsxs("button", {
|
|
37809
|
+
type: "button",
|
|
37810
|
+
onClick: () => setOpen((v) => !v),
|
|
37811
|
+
"aria-haspopup": "listbox",
|
|
37812
|
+
"aria-expanded": open,
|
|
37813
|
+
className: `inline-flex items-center gap-1.5 h-7 px-2.5 rounded-full border text-[10.5px] font-medium transition-colors ${count > 0 ? "border-primary/40 bg-primary/15 text-primary" : "border-border bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"}`,
|
|
37814
|
+
children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
|
|
37815
|
+
}), open && /* @__PURE__ */ jsxs("div", {
|
|
37816
|
+
role: "listbox",
|
|
37817
|
+
className: "absolute left-0 top-full mt-1 z-30 min-w-[180px] max-h-72 overflow-y-auto rounded-lg border border-border bg-surface shadow-xl py-1",
|
|
37818
|
+
children: [count > 0 && /* @__PURE__ */ jsx("button", {
|
|
37819
|
+
type: "button",
|
|
37820
|
+
onClick: () => onChange([]),
|
|
37821
|
+
className: "flex w-full items-center px-3 py-1.5 text-left text-[10.5px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground",
|
|
37822
|
+
children: t("uiLibrary.multiSelect.clear", "Clear selection")
|
|
37823
|
+
}), options.map((o) => {
|
|
37824
|
+
const active = selectedSet.has(o.id);
|
|
37825
|
+
const Icon = o.icon;
|
|
37826
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
37827
|
+
type: "button",
|
|
37828
|
+
role: "option",
|
|
37829
|
+
"aria-selected": active,
|
|
37830
|
+
onClick: () => toggle(o.id),
|
|
37831
|
+
className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
|
|
37832
|
+
children: [
|
|
37833
|
+
/* @__PURE__ */ jsx("span", {
|
|
37834
|
+
className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
|
|
37835
|
+
children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
|
|
37836
|
+
}),
|
|
37837
|
+
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
|
|
37838
|
+
/* @__PURE__ */ jsx("span", {
|
|
37839
|
+
className: "truncate",
|
|
37840
|
+
children: o.label
|
|
37841
|
+
})
|
|
37842
|
+
]
|
|
37843
|
+
}, o.id);
|
|
37844
|
+
})]
|
|
37845
|
+
})]
|
|
37846
|
+
});
|
|
37847
|
+
}
|
|
37848
|
+
//#endregion
|
|
37744
37849
|
//#region src/composites/data-table-filter-bar.tsx
|
|
37745
37850
|
/**
|
|
37746
37851
|
* The controls of one table's filter: a search box and the facet chips.
|
|
@@ -37793,7 +37898,18 @@ function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, on
|
|
|
37793
37898
|
}, facet.value);
|
|
37794
37899
|
})
|
|
37795
37900
|
}),
|
|
37796
|
-
groups.filter((group) => group.facets.length > 1).map((group) => /* @__PURE__ */
|
|
37901
|
+
groups.filter((group) => group.facets.length > 1).map((group) => group.display === "menu" ? /* @__PURE__ */ jsx(MultiSelectDropdown, {
|
|
37902
|
+
label: group.label,
|
|
37903
|
+
options: group.facets.map((facet) => ({
|
|
37904
|
+
id: facet.value,
|
|
37905
|
+
label: `${group.facetLabel ? group.facetLabel(facet.value) : facet.value} (${String(facet.count)})`
|
|
37906
|
+
})),
|
|
37907
|
+
selected: group.selected,
|
|
37908
|
+
onChange: (next) => {
|
|
37909
|
+
const chosen = new Set(next);
|
|
37910
|
+
for (const facet of group.facets) if (chosen.has(facet.value) !== group.selected.includes(facet.value)) onToggleGroupFacet?.(group.id, facet.value);
|
|
37911
|
+
}
|
|
37912
|
+
}, group.id) : /* @__PURE__ */ jsxs("div", {
|
|
37797
37913
|
role: "group",
|
|
37798
37914
|
"aria-label": group.label,
|
|
37799
37915
|
className: "flex flex-wrap items-center gap-1",
|
|
@@ -48657,47 +48773,95 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
|
|
|
48657
48773
|
*
|
|
48658
48774
|
* Reads the `dishwasher` cap status slice and renders inline + hero surfaces
|
|
48659
48775
|
* mirroring vacuum-control / pet-feeder patterns.
|
|
48776
|
+
*
|
|
48777
|
+
* UNKNOWN IS NOT OFF. The slice carries `null` for everything the appliance has not
|
|
48778
|
+
* reported, and this view renders that as "—" / a disabled control, never as an unchecked
|
|
48779
|
+
* box or a zero. It also does not echo a command before the appliance confirms it: the
|
|
48780
|
+
* slice moves when the appliance says so.
|
|
48660
48781
|
*/
|
|
48661
|
-
|
|
48662
|
-
|
|
48663
|
-
|
|
48664
|
-
|
|
48782
|
+
/** What the operation state is called to a person, and how it is toned. */
|
|
48783
|
+
function dishwasherOperationMeta(operationState, t = defaultUiText) {
|
|
48784
|
+
switch (operationState) {
|
|
48785
|
+
case "Run": return {
|
|
48786
|
+
label: t("uiLibrary.dishwasher.op.run", "Running"),
|
|
48665
48787
|
tone: "text-primary"
|
|
48666
48788
|
};
|
|
48667
|
-
case "
|
|
48668
|
-
label: t("uiLibrary.dishwasher.
|
|
48789
|
+
case "Pause": return {
|
|
48790
|
+
label: t("uiLibrary.dishwasher.op.pause", "Paused"),
|
|
48669
48791
|
tone: "text-warning"
|
|
48670
48792
|
};
|
|
48671
|
-
case "
|
|
48672
|
-
label: t("uiLibrary.dishwasher.finished", "Finished"),
|
|
48793
|
+
case "Finished": return {
|
|
48794
|
+
label: t("uiLibrary.dishwasher.op.finished", "Finished"),
|
|
48673
48795
|
tone: "text-success"
|
|
48674
48796
|
};
|
|
48675
|
-
case "
|
|
48676
|
-
label: t("uiLibrary.dishwasher.error", "Error"),
|
|
48677
|
-
tone: "text-
|
|
48797
|
+
case "Error": return {
|
|
48798
|
+
label: t("uiLibrary.dishwasher.op.error", "Error"),
|
|
48799
|
+
tone: "text-danger"
|
|
48678
48800
|
};
|
|
48679
|
-
case "
|
|
48680
|
-
label: t("uiLibrary.dishwasher.
|
|
48681
|
-
tone: "text-
|
|
48801
|
+
case "Aborting": return {
|
|
48802
|
+
label: t("uiLibrary.dishwasher.op.aborting", "Stopping"),
|
|
48803
|
+
tone: "text-warning"
|
|
48682
48804
|
};
|
|
48683
|
-
case "
|
|
48684
|
-
label: t("uiLibrary.dishwasher.
|
|
48805
|
+
case "ActionRequired": return {
|
|
48806
|
+
label: t("uiLibrary.dishwasher.op.actionRequired", "Action required"),
|
|
48807
|
+
tone: "text-warning"
|
|
48808
|
+
};
|
|
48809
|
+
case "DelayedStart": return {
|
|
48810
|
+
label: t("uiLibrary.dishwasher.op.delayedStart", "Delayed start"),
|
|
48811
|
+
tone: "text-primary"
|
|
48812
|
+
};
|
|
48813
|
+
case "Ready": return {
|
|
48814
|
+
label: t("uiLibrary.dishwasher.op.ready", "Ready"),
|
|
48815
|
+
tone: "text-foreground"
|
|
48816
|
+
};
|
|
48817
|
+
case "Inactive": return {
|
|
48818
|
+
label: t("uiLibrary.dishwasher.op.inactive", "Inactive"),
|
|
48685
48819
|
tone: "text-foreground-subtle"
|
|
48686
48820
|
};
|
|
48687
|
-
case
|
|
48821
|
+
case null: return {
|
|
48688
48822
|
label: t("uiLibrary.dishwasher.unknown", "Unknown"),
|
|
48689
48823
|
tone: "text-foreground-subtle"
|
|
48690
48824
|
};
|
|
48691
48825
|
}
|
|
48692
48826
|
}
|
|
48827
|
+
/** The headline for the whole slice: the appliance's state, or why there is none. */
|
|
48828
|
+
function dishwasherHeadline(status, t = defaultUiText) {
|
|
48829
|
+
switch (status.availability) {
|
|
48830
|
+
case "offline": return {
|
|
48831
|
+
label: t("uiLibrary.dishwasher.offline", "Offline"),
|
|
48832
|
+
tone: "text-foreground-subtle"
|
|
48833
|
+
};
|
|
48834
|
+
case "description-missing": return {
|
|
48835
|
+
label: t("uiLibrary.dishwasher.descriptionMissing", "Waiting for the appliance profile"),
|
|
48836
|
+
tone: "text-warning"
|
|
48837
|
+
};
|
|
48838
|
+
case "available": return dishwasherOperationMeta(status.operationState, t);
|
|
48839
|
+
}
|
|
48840
|
+
}
|
|
48693
48841
|
function consumableTone(level) {
|
|
48694
48842
|
switch (level) {
|
|
48695
48843
|
case "ok": return "text-success";
|
|
48696
48844
|
case "low": return "text-warning";
|
|
48697
|
-
case "empty": return "text-
|
|
48845
|
+
case "empty": return "text-danger";
|
|
48698
48846
|
case null: return "text-foreground-subtle";
|
|
48699
48847
|
}
|
|
48700
48848
|
}
|
|
48849
|
+
/** Last segment of a feature key, spaced out: `Dishcare.Dishwasher.Program.Eco50` -> `Eco50`. */
|
|
48850
|
+
function featureLabel(key) {
|
|
48851
|
+
return (key.split(".").pop() ?? key).replace(/([a-z0-9])([A-Z])/g, "$1 $2");
|
|
48852
|
+
}
|
|
48853
|
+
/** Whole seconds as a short duration: `1 h 24 min`, `42 min`, `30 s`. */
|
|
48854
|
+
function formatDuration(seconds, t = defaultUiText) {
|
|
48855
|
+
if (seconds < 60) return t("uiLibrary.dishwasher.durationSeconds", "{{n}} s", { n: seconds });
|
|
48856
|
+
const minutes = Math.round(seconds / 60);
|
|
48857
|
+
if (minutes < 60) return t("uiLibrary.dishwasher.durationMinutes", "{{n}} min", { n: minutes });
|
|
48858
|
+
const hours = Math.floor(minutes / 60);
|
|
48859
|
+
const rest = minutes % 60;
|
|
48860
|
+
return rest === 0 ? t("uiLibrary.dishwasher.durationHours", "{{n}} h", { n: hours }) : t("uiLibrary.dishwasher.durationHoursMinutes", "{{h}} h {{m}} min", {
|
|
48861
|
+
h: hours,
|
|
48862
|
+
m: rest
|
|
48863
|
+
});
|
|
48864
|
+
}
|
|
48701
48865
|
function useDishwasher(trpc, deviceId) {
|
|
48702
48866
|
return useDeviceCapability({
|
|
48703
48867
|
trpc,
|
|
@@ -48731,13 +48895,11 @@ function ConsumableBadge({ label, level }) {
|
|
|
48731
48895
|
]
|
|
48732
48896
|
});
|
|
48733
48897
|
}
|
|
48734
|
-
function DishwasherGraphic({
|
|
48735
|
-
const running = state === "running";
|
|
48898
|
+
function DishwasherGraphic({ running, progressPercent }) {
|
|
48736
48899
|
const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
|
|
48737
48900
|
return /* @__PURE__ */ jsxs("div", {
|
|
48738
48901
|
"aria-hidden": "true",
|
|
48739
48902
|
className: "relative w-28 h-36 rounded border-2 border-border bg-gradient-to-b from-surface-hover to-surface overflow-hidden flex-shrink-0",
|
|
48740
|
-
style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
|
|
48741
48903
|
children: [/* @__PURE__ */ jsx("div", {
|
|
48742
48904
|
className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
|
|
48743
48905
|
style: { height: `${pct}%` }
|
|
@@ -48747,61 +48909,73 @@ function DishwasherGraphic({ state, progressPercent }) {
|
|
|
48747
48909
|
})]
|
|
48748
48910
|
});
|
|
48749
48911
|
}
|
|
48750
|
-
function DishwasherPanel({ trpc, deviceId, layout
|
|
48912
|
+
function DishwasherPanel({ trpc, deviceId, layout }) {
|
|
48751
48913
|
const t = useUiText();
|
|
48752
48914
|
const { cap, slice, available } = useDishwasher(trpc, deviceId);
|
|
48753
|
-
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
48754
48915
|
if (cap === void 0) return null;
|
|
48755
|
-
if (
|
|
48756
|
-
const
|
|
48757
|
-
const
|
|
48758
|
-
const
|
|
48759
|
-
const
|
|
48760
|
-
const
|
|
48916
|
+
if (slice === void 0) return null;
|
|
48917
|
+
const display = slice;
|
|
48918
|
+
const link = display.availability === "available";
|
|
48919
|
+
const busy = !available || !link;
|
|
48920
|
+
const optionTogglesLocked = display.childLock === true;
|
|
48921
|
+
const meta = dishwasherHeadline(display, t);
|
|
48922
|
+
const running = display.operationState === "Run";
|
|
48923
|
+
const paused = display.operationState === "Pause";
|
|
48924
|
+
const startable = display.remoteStartAllowed === true && display.selectedProgram !== null;
|
|
48925
|
+
const press = (fn) => {
|
|
48761
48926
|
if (busy) return;
|
|
48762
|
-
applyOptimistic(patch);
|
|
48763
48927
|
fn();
|
|
48764
48928
|
};
|
|
48765
|
-
if (layout === "compact")
|
|
48766
|
-
|
|
48767
|
-
|
|
48768
|
-
|
|
48769
|
-
|
|
48770
|
-
|
|
48771
|
-
|
|
48772
|
-
|
|
48773
|
-
|
|
48774
|
-
|
|
48775
|
-
|
|
48776
|
-
children: meta.label
|
|
48777
|
-
}),
|
|
48778
|
-
display.remainingMinutes != null && /* @__PURE__ */ jsxs("span", {
|
|
48779
|
-
className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums",
|
|
48780
|
-
children: [
|
|
48781
|
-
/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
|
|
48782
|
-
display.remainingMinutes,
|
|
48783
|
-
"m"
|
|
48784
|
-
]
|
|
48785
|
-
}),
|
|
48786
|
-
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48787
|
-
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48788
|
-
busy: busy || !display.remoteStartAllowed,
|
|
48789
|
-
active: running,
|
|
48790
|
-
onClick: () => press(() => cap.start({}), {
|
|
48791
|
-
state: "running",
|
|
48792
|
-
remoteStartAllowed: false
|
|
48929
|
+
if (layout === "compact") {
|
|
48930
|
+
const saltWarn = display.saltLevel === "low" || display.saltLevel === "empty";
|
|
48931
|
+
const rinseWarn = display.rinseAidLevel === "low" || display.rinseAidLevel === "empty";
|
|
48932
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48933
|
+
className: "inline-flex items-center gap-1.5 max-w-full",
|
|
48934
|
+
children: [
|
|
48935
|
+
display.doorOpen === true && /* @__PURE__ */ jsx("span", {
|
|
48936
|
+
className: "inline-flex text-warning shrink-0",
|
|
48937
|
+
title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
48938
|
+
"aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
48939
|
+
children: /* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" })
|
|
48793
48940
|
}),
|
|
48794
|
-
|
|
48795
|
-
|
|
48796
|
-
|
|
48797
|
-
|
|
48798
|
-
|
|
48799
|
-
|
|
48800
|
-
|
|
48801
|
-
|
|
48802
|
-
|
|
48803
|
-
|
|
48804
|
-
|
|
48941
|
+
/* @__PURE__ */ jsx("span", {
|
|
48942
|
+
className: cn("text-xs font-medium tabular-nums shrink-0", meta.tone),
|
|
48943
|
+
children: meta.label
|
|
48944
|
+
}),
|
|
48945
|
+
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48946
|
+
className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
|
|
48947
|
+
title: display.program,
|
|
48948
|
+
children: featureLabel(display.program)
|
|
48949
|
+
}),
|
|
48950
|
+
display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
|
|
48951
|
+
className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
|
|
48952
|
+
children: [/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }), formatDuration(display.remainingSeconds, t)]
|
|
48953
|
+
}),
|
|
48954
|
+
saltWarn && /* @__PURE__ */ jsx("span", {
|
|
48955
|
+
className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
|
|
48956
|
+
children: t("uiLibrary.dishwasher.salt", "Salt")
|
|
48957
|
+
}),
|
|
48958
|
+
rinseWarn && /* @__PURE__ */ jsx("span", {
|
|
48959
|
+
className: cn("text-[10px] font-medium shrink-0", consumableTone(display.rinseAidLevel)),
|
|
48960
|
+
children: t("uiLibrary.dishwasher.rinseAid", "Rinse")
|
|
48961
|
+
}),
|
|
48962
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48963
|
+
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48964
|
+
busy: busy || !startable,
|
|
48965
|
+
active: running,
|
|
48966
|
+
onClick: () => press(() => cap.start({})),
|
|
48967
|
+
children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
|
|
48968
|
+
}),
|
|
48969
|
+
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48970
|
+
label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48971
|
+
busy: busy || !(running || paused),
|
|
48972
|
+
active: paused,
|
|
48973
|
+
onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
|
|
48974
|
+
children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
|
|
48975
|
+
})
|
|
48976
|
+
]
|
|
48977
|
+
});
|
|
48978
|
+
}
|
|
48805
48979
|
const programs = display.availablePrograms;
|
|
48806
48980
|
return /* @__PURE__ */ jsxs("div", {
|
|
48807
48981
|
className: "flex flex-col gap-3 rounded-lg border border-border bg-surface p-4",
|
|
@@ -48809,7 +48983,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48809
48983
|
/* @__PURE__ */ jsxs("div", {
|
|
48810
48984
|
className: "flex items-start gap-4",
|
|
48811
48985
|
children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
|
|
48812
|
-
|
|
48986
|
+
running,
|
|
48813
48987
|
progressPercent: display.progressPercent
|
|
48814
48988
|
}), /* @__PURE__ */ jsxs("div", {
|
|
48815
48989
|
className: "flex min-w-0 flex-1 flex-col gap-2",
|
|
@@ -48819,14 +48993,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48819
48993
|
children: [/* @__PURE__ */ jsx("span", {
|
|
48820
48994
|
className: cn("text-3xl font-semibold", meta.tone),
|
|
48821
48995
|
children: meta.label
|
|
48822
|
-
}),
|
|
48996
|
+
}), display.powerOn === false && /* @__PURE__ */ jsx("span", {
|
|
48823
48997
|
className: "text-xs font-medium text-foreground-subtle",
|
|
48824
48998
|
children: t("uiLibrary.dishwasher.powerOff", "Power off")
|
|
48825
48999
|
})]
|
|
48826
49000
|
}),
|
|
48827
49001
|
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48828
49002
|
className: "text-sm text-foreground-subtle",
|
|
48829
|
-
|
|
49003
|
+
title: display.program,
|
|
49004
|
+
children: featureLabel(display.program)
|
|
49005
|
+
}),
|
|
49006
|
+
display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
|
|
49007
|
+
className: "inline-flex items-center gap-1 text-sm text-foreground-subtle tabular-nums",
|
|
49008
|
+
children: [/* @__PURE__ */ jsx(Timer, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.remaining", "{{time}} left", { time: formatDuration(display.remainingSeconds, t) })]
|
|
49009
|
+
}),
|
|
49010
|
+
display.delayedStartSeconds != null && display.delayedStartSeconds > 0 && /* @__PURE__ */ jsx("span", {
|
|
49011
|
+
className: "text-xs text-foreground-subtle tabular-nums",
|
|
49012
|
+
children: t("uiLibrary.dishwasher.startsIn", "Starts in {{time}}", { time: formatDuration(display.delayedStartSeconds, t) })
|
|
48830
49013
|
}),
|
|
48831
49014
|
display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
|
|
48832
49015
|
className: "flex items-center gap-2",
|
|
@@ -48852,53 +49035,52 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48852
49035
|
label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
|
|
48853
49036
|
level: display.rinseAidLevel
|
|
48854
49037
|
}),
|
|
48855
|
-
display.doorOpen && /* @__PURE__ */ jsxs("span", {
|
|
49038
|
+
display.doorOpen === true && /* @__PURE__ */ jsxs("span", {
|
|
48856
49039
|
className: "inline-flex items-center gap-1 text-xs text-warning",
|
|
48857
49040
|
children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
|
|
48858
|
-
})
|
|
49041
|
+
}),
|
|
49042
|
+
display.activeEvents.map((event) => /* @__PURE__ */ jsx("span", {
|
|
49043
|
+
className: "text-xs text-warning",
|
|
49044
|
+
title: event,
|
|
49045
|
+
children: featureLabel(event)
|
|
49046
|
+
}, event))
|
|
48859
49047
|
]
|
|
48860
49048
|
}),
|
|
48861
|
-
display.
|
|
48862
|
-
className: "inline-flex items-center gap-1 text-xs text-
|
|
48863
|
-
children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel
|
|
49049
|
+
display.operationState === "Error" && /* @__PURE__ */ jsxs("div", {
|
|
49050
|
+
className: "inline-flex items-center gap-1 text-xs text-danger",
|
|
49051
|
+
children: [/* @__PURE__ */ jsx(TriangleAlert, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ jsx("span", { children: display.errorLabel != null ? featureLabel(display.errorLabel) : display.errorCode != null ? t("uiLibrary.dishwasher.errorCode", "Error {{code}}", { code: display.errorCode }) : t("uiLibrary.dishwasher.op.error", "Error") })]
|
|
48864
49052
|
}),
|
|
48865
49053
|
/* @__PURE__ */ jsxs("div", {
|
|
48866
49054
|
className: "flex flex-wrap items-center gap-2",
|
|
48867
49055
|
children: [
|
|
48868
49056
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48869
49057
|
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48870
|
-
busy: busy || !
|
|
49058
|
+
busy: busy || !startable,
|
|
48871
49059
|
active: running,
|
|
48872
|
-
onClick: () => press(() => cap.start({}),
|
|
48873
|
-
state: "running",
|
|
48874
|
-
remoteStartAllowed: false
|
|
48875
|
-
}),
|
|
49060
|
+
onClick: () => press(() => cap.start({})),
|
|
48876
49061
|
children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
|
|
48877
49062
|
}),
|
|
48878
49063
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48879
|
-
label: t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48880
|
-
busy: busy || !running,
|
|
49064
|
+
label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
|
|
49065
|
+
busy: busy || !(running || paused),
|
|
48881
49066
|
active: paused,
|
|
48882
|
-
onClick: () => press(() => cap.
|
|
49067
|
+
onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
|
|
48883
49068
|
children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
|
|
48884
49069
|
}),
|
|
48885
49070
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48886
49071
|
label: t("uiLibrary.dishwasher.stop", "Stop"),
|
|
48887
|
-
busy,
|
|
49072
|
+
busy: busy || !(running || paused),
|
|
48888
49073
|
active: false,
|
|
48889
|
-
onClick: () => press(() => cap.stop({}),
|
|
48890
|
-
state: "idle",
|
|
48891
|
-
remainingMinutes: null
|
|
48892
|
-
}),
|
|
49074
|
+
onClick: () => press(() => cap.stop({})),
|
|
48893
49075
|
children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
|
|
48894
49076
|
}),
|
|
48895
49077
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48896
49078
|
label: t("uiLibrary.dishwasher.power", "Power"),
|
|
48897
|
-
busy,
|
|
48898
|
-
active: display.powerOn,
|
|
49079
|
+
busy: busy || display.powerOn === null,
|
|
49080
|
+
active: display.powerOn === true,
|
|
48899
49081
|
onClick: () => {
|
|
48900
|
-
const next =
|
|
48901
|
-
press(() => cap.setPower({ on: next })
|
|
49082
|
+
const next = display.powerOn !== true;
|
|
49083
|
+
press(() => cap.setPower({ on: next }));
|
|
48902
49084
|
},
|
|
48903
49085
|
children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
|
|
48904
49086
|
})
|
|
@@ -48914,65 +49096,106 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48914
49096
|
children: t("uiLibrary.dishwasher.program", "Program")
|
|
48915
49097
|
}), /* @__PURE__ */ jsxs("select", {
|
|
48916
49098
|
"aria-label": t("uiLibrary.dishwasher.program", "Program"),
|
|
48917
|
-
value: display.
|
|
49099
|
+
value: display.selectedProgram ?? "",
|
|
48918
49100
|
disabled: busy,
|
|
48919
49101
|
onChange: (e) => {
|
|
48920
49102
|
const program = e.target.value;
|
|
48921
49103
|
if (!program) return;
|
|
48922
|
-
applyOptimistic({ program });
|
|
48923
49104
|
cap.setProgram({ program });
|
|
48924
49105
|
},
|
|
48925
49106
|
onClick: (e) => {
|
|
48926
49107
|
e.stopPropagation();
|
|
48927
49108
|
},
|
|
48928
49109
|
className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
|
|
48929
|
-
children: [display.
|
|
49110
|
+
children: [display.selectedProgram == null && /* @__PURE__ */ jsx("option", {
|
|
48930
49111
|
value: "",
|
|
48931
49112
|
children: "—"
|
|
48932
49113
|
}), programs.map((p) => /* @__PURE__ */ jsx("option", {
|
|
48933
49114
|
value: p,
|
|
48934
|
-
children: p
|
|
49115
|
+
children: featureLabel(p)
|
|
48935
49116
|
}, p))]
|
|
48936
49117
|
})]
|
|
48937
49118
|
}),
|
|
48938
49119
|
/* @__PURE__ */ jsxs("div", {
|
|
48939
49120
|
className: "flex flex-wrap gap-4 text-xs",
|
|
48940
|
-
children: [
|
|
48941
|
-
|
|
48942
|
-
|
|
48943
|
-
|
|
48944
|
-
|
|
48945
|
-
|
|
48946
|
-
cap.setHalfLoad({ on })
|
|
48947
|
-
}
|
|
48948
|
-
|
|
48949
|
-
|
|
48950
|
-
|
|
48951
|
-
|
|
48952
|
-
|
|
48953
|
-
|
|
48954
|
-
|
|
48955
|
-
|
|
48956
|
-
|
|
49121
|
+
children: [
|
|
49122
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49123
|
+
label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
|
|
49124
|
+
checked: display.halfLoad,
|
|
49125
|
+
shown: link,
|
|
49126
|
+
busy: busy || optionTogglesLocked,
|
|
49127
|
+
onChange: (on) => void cap.setHalfLoad({ on })
|
|
49128
|
+
}),
|
|
49129
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49130
|
+
label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
|
|
49131
|
+
checked: display.hygienePlus,
|
|
49132
|
+
shown: link,
|
|
49133
|
+
busy: busy || optionTogglesLocked,
|
|
49134
|
+
onChange: (on) => void cap.setHygienePlus({ on })
|
|
49135
|
+
}),
|
|
49136
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49137
|
+
label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
|
|
49138
|
+
checked: display.extraDry,
|
|
49139
|
+
shown: link,
|
|
49140
|
+
busy: busy || optionTogglesLocked,
|
|
49141
|
+
onChange: (on) => void cap.setExtraDry({ on })
|
|
49142
|
+
}),
|
|
49143
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49144
|
+
label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
|
|
49145
|
+
checked: display.intensiveZone,
|
|
49146
|
+
shown: link,
|
|
49147
|
+
busy: busy || optionTogglesLocked,
|
|
49148
|
+
onChange: (on) => void cap.setIntensiveZone({ on })
|
|
49149
|
+
}),
|
|
49150
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49151
|
+
label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
|
|
49152
|
+
checked: display.varioSpeedPlus,
|
|
49153
|
+
shown: link,
|
|
49154
|
+
busy: busy || optionTogglesLocked,
|
|
49155
|
+
onChange: (on) => void cap.setVarioSpeedPlus({ on })
|
|
49156
|
+
}),
|
|
49157
|
+
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49158
|
+
label: t("uiLibrary.dishwasher.childLock", "Child lock"),
|
|
49159
|
+
checked: display.childLock,
|
|
49160
|
+
shown: link,
|
|
49161
|
+
busy,
|
|
49162
|
+
onChange: (on) => void cap.setChildLock({ on })
|
|
49163
|
+
})
|
|
49164
|
+
]
|
|
48957
49165
|
})
|
|
48958
49166
|
]
|
|
48959
49167
|
});
|
|
48960
49168
|
}
|
|
48961
|
-
|
|
49169
|
+
/**
|
|
49170
|
+
* One boolean setting. `checked === null` is "the appliance has not said": on a reachable
|
|
49171
|
+
* appliance that means it does not offer the setting (hidden); on an unreachable one the
|
|
49172
|
+
* setting is shown but disabled and marked unknown — never as an unchecked box.
|
|
49173
|
+
*/
|
|
49174
|
+
function ToggleRow({ label, checked, shown, busy, onChange }) {
|
|
49175
|
+
const t = useUiText();
|
|
49176
|
+
if (checked === null && shown) return null;
|
|
48962
49177
|
return /* @__PURE__ */ jsxs("label", {
|
|
48963
49178
|
className: "inline-flex items-center gap-2 cursor-pointer",
|
|
48964
|
-
children: [
|
|
48965
|
-
|
|
48966
|
-
|
|
48967
|
-
|
|
48968
|
-
|
|
48969
|
-
|
|
48970
|
-
|
|
48971
|
-
|
|
48972
|
-
|
|
48973
|
-
|
|
48974
|
-
|
|
48975
|
-
|
|
49179
|
+
children: [
|
|
49180
|
+
/* @__PURE__ */ jsx("input", {
|
|
49181
|
+
type: "checkbox",
|
|
49182
|
+
checked: checked === true,
|
|
49183
|
+
"aria-checked": checked === null ? "mixed" : checked,
|
|
49184
|
+
disabled: busy || checked === null,
|
|
49185
|
+
onChange: (e) => {
|
|
49186
|
+
onChange(e.target.checked);
|
|
49187
|
+
},
|
|
49188
|
+
onClick: (e) => {
|
|
49189
|
+
e.stopPropagation();
|
|
49190
|
+
},
|
|
49191
|
+
className: "rounded border-border"
|
|
49192
|
+
}),
|
|
49193
|
+
/* @__PURE__ */ jsx("span", { children: label }),
|
|
49194
|
+
checked === null && /* @__PURE__ */ jsx("span", {
|
|
49195
|
+
className: "text-foreground-subtle",
|
|
49196
|
+
children: t("uiLibrary.dishwasher.unknownValue", "—")
|
|
49197
|
+
})
|
|
49198
|
+
]
|
|
48976
49199
|
});
|
|
48977
49200
|
}
|
|
48978
49201
|
function DishwasherInlineControl(props) {
|
|
@@ -54604,88 +54827,6 @@ function PageSizeSelect({ value, options, onChange, ariaLabel }) {
|
|
|
54604
54827
|
});
|
|
54605
54828
|
}
|
|
54606
54829
|
//#endregion
|
|
54607
|
-
//#region src/composites/device-list/multi-select.tsx
|
|
54608
|
-
/**
|
|
54609
|
-
* Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
|
|
54610
|
-
* that opens a checklist. Self-contained (outside-click / Escape dismiss), so
|
|
54611
|
-
* it stays compressed regardless of how many options exist or how little
|
|
54612
|
-
* horizontal room the container has. Shared by the device list's generic-mode
|
|
54613
|
-
* type filter and any other multi-select needs.
|
|
54614
|
-
*/
|
|
54615
|
-
function MultiSelectDropdown({ label, options, selected, onChange }) {
|
|
54616
|
-
const t = useUiText();
|
|
54617
|
-
const [open, setOpen] = useState(false);
|
|
54618
|
-
const rootRef = useRef(null);
|
|
54619
|
-
useEffect(() => {
|
|
54620
|
-
if (!open) return;
|
|
54621
|
-
const onOutside = (e) => {
|
|
54622
|
-
const target = e.target instanceof Node ? e.target : null;
|
|
54623
|
-
if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
|
|
54624
|
-
};
|
|
54625
|
-
const onKey = (e) => {
|
|
54626
|
-
if (e.key === "Escape") setOpen(false);
|
|
54627
|
-
};
|
|
54628
|
-
document.addEventListener("mousedown", onOutside);
|
|
54629
|
-
document.addEventListener("touchstart", onOutside);
|
|
54630
|
-
document.addEventListener("keydown", onKey);
|
|
54631
|
-
return () => {
|
|
54632
|
-
document.removeEventListener("mousedown", onOutside);
|
|
54633
|
-
document.removeEventListener("touchstart", onOutside);
|
|
54634
|
-
document.removeEventListener("keydown", onKey);
|
|
54635
|
-
};
|
|
54636
|
-
}, [open]);
|
|
54637
|
-
const selectedSet = new Set(selected);
|
|
54638
|
-
const count = selected.length;
|
|
54639
|
-
const toggle = (id) => {
|
|
54640
|
-
const next = new Set(selectedSet);
|
|
54641
|
-
if (next.has(id)) next.delete(id);
|
|
54642
|
-
else next.add(id);
|
|
54643
|
-
onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
|
|
54644
|
-
};
|
|
54645
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
54646
|
-
ref: rootRef,
|
|
54647
|
-
className: "relative",
|
|
54648
|
-
children: [/* @__PURE__ */ jsxs("button", {
|
|
54649
|
-
type: "button",
|
|
54650
|
-
onClick: () => setOpen((v) => !v),
|
|
54651
|
-
"aria-haspopup": "listbox",
|
|
54652
|
-
"aria-expanded": open,
|
|
54653
|
-
className: `inline-flex items-center gap-1.5 h-7 px-2.5 rounded-full border text-[10.5px] font-medium transition-colors ${count > 0 ? "border-primary/40 bg-primary/15 text-primary" : "border-border bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"}`,
|
|
54654
|
-
children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
|
|
54655
|
-
}), open && /* @__PURE__ */ jsxs("div", {
|
|
54656
|
-
role: "listbox",
|
|
54657
|
-
className: "absolute left-0 top-full mt-1 z-30 min-w-[180px] max-h-72 overflow-y-auto rounded-lg border border-border bg-surface shadow-xl py-1",
|
|
54658
|
-
children: [count > 0 && /* @__PURE__ */ jsx("button", {
|
|
54659
|
-
type: "button",
|
|
54660
|
-
onClick: () => onChange([]),
|
|
54661
|
-
className: "flex w-full items-center px-3 py-1.5 text-left text-[10.5px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground",
|
|
54662
|
-
children: t("uiLibrary.multiSelect.clear", "Clear selection")
|
|
54663
|
-
}), options.map((o) => {
|
|
54664
|
-
const active = selectedSet.has(o.id);
|
|
54665
|
-
const Icon = o.icon;
|
|
54666
|
-
return /* @__PURE__ */ jsxs("button", {
|
|
54667
|
-
type: "button",
|
|
54668
|
-
role: "option",
|
|
54669
|
-
"aria-selected": active,
|
|
54670
|
-
onClick: () => toggle(o.id),
|
|
54671
|
-
className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
|
|
54672
|
-
children: [
|
|
54673
|
-
/* @__PURE__ */ jsx("span", {
|
|
54674
|
-
className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
|
|
54675
|
-
children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
|
|
54676
|
-
}),
|
|
54677
|
-
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
|
|
54678
|
-
/* @__PURE__ */ jsx("span", {
|
|
54679
|
-
className: "truncate",
|
|
54680
|
-
children: o.label
|
|
54681
|
-
})
|
|
54682
|
-
]
|
|
54683
|
-
}, o.id);
|
|
54684
|
-
})]
|
|
54685
|
-
})]
|
|
54686
|
-
});
|
|
54687
|
-
}
|
|
54688
|
-
//#endregion
|
|
54689
54830
|
//#region src/composites/device-list/type-filter.tsx
|
|
54690
54831
|
/**
|
|
54691
54832
|
* Shared, multi-select type filter that adapts to its OWN available width
|
|
@@ -59378,19 +59519,35 @@ function objectFromJson(text) {
|
|
|
59378
59519
|
return null;
|
|
59379
59520
|
}
|
|
59380
59521
|
}
|
|
59381
|
-
|
|
59382
|
-
|
|
59383
|
-
|
|
59522
|
+
/**
|
|
59523
|
+
* What the secret control is hydrated with. A read hands a stored secret as a
|
|
59524
|
+
* VIEW (`{ $secret: <row ref>, set: true }`) the control reveals by ref through
|
|
59525
|
+
* the host's audited reveal; the legacy redaction token is "set, no ref" (it
|
|
59526
|
+
* can be replaced but not revealed); anything else is "nothing stored".
|
|
59527
|
+
*/
|
|
59528
|
+
function hydratedSecret(value) {
|
|
59529
|
+
if (isSecretFieldView(value) || isSecretClear(value)) return value;
|
|
59530
|
+
if (isRedactedSecret(value)) return {
|
|
59531
|
+
$secret: null,
|
|
59532
|
+
v: 1,
|
|
59533
|
+
set: true
|
|
59534
|
+
};
|
|
59535
|
+
return null;
|
|
59536
|
+
}
|
|
59537
|
+
function RecordEntrySecretField({ name, label, required, value, disabled, onPatch }) {
|
|
59384
59538
|
return /* @__PURE__ */ jsx(FormField$1, {
|
|
59385
59539
|
label,
|
|
59386
59540
|
required,
|
|
59387
|
-
children: /* @__PURE__ */ jsx(
|
|
59388
|
-
|
|
59389
|
-
|
|
59390
|
-
|
|
59391
|
-
|
|
59392
|
-
|
|
59393
|
-
|
|
59541
|
+
children: /* @__PURE__ */ jsx(SecretFieldControl, {
|
|
59542
|
+
field: {
|
|
59543
|
+
type: "password",
|
|
59544
|
+
key: name,
|
|
59545
|
+
label,
|
|
59546
|
+
required
|
|
59547
|
+
},
|
|
59548
|
+
value: hydratedSecret(value),
|
|
59549
|
+
onChange: onPatch,
|
|
59550
|
+
disabled
|
|
59394
59551
|
})
|
|
59395
59552
|
});
|
|
59396
59553
|
}
|
|
@@ -59398,6 +59555,7 @@ function SchemaField(props) {
|
|
|
59398
59555
|
const { path, name, node, value, secretPaths, required, disabled, onPatch } = props;
|
|
59399
59556
|
const label = labelFor(name, node);
|
|
59400
59557
|
if (isSecretField(path, secretPaths, node)) return /* @__PURE__ */ jsx(RecordEntrySecretField, {
|
|
59558
|
+
name,
|
|
59401
59559
|
label,
|
|
59402
59560
|
required,
|
|
59403
59561
|
value,
|
|
@@ -59547,7 +59705,7 @@ function defaultBody(schema) {
|
|
|
59547
59705
|
}
|
|
59548
59706
|
return out;
|
|
59549
59707
|
}
|
|
59550
|
-
function RecordEntriesPanel({ kind }) {
|
|
59708
|
+
function RecordEntriesPanel({ kind, rowActions, extraColumns = [], showUpdated = true, minWidthPx }) {
|
|
59551
59709
|
const t = useUiText();
|
|
59552
59710
|
const queryClient = useQueryClient();
|
|
59553
59711
|
const confirm = useConfirm();
|
|
@@ -59620,41 +59778,51 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59620
59778
|
})
|
|
59621
59779
|
})
|
|
59622
59780
|
},
|
|
59623
|
-
{
|
|
59781
|
+
...showUpdated ? [{
|
|
59624
59782
|
key: "updated",
|
|
59625
59783
|
header: t("uiLibrary.recordEntries.colUpdated", "Updated"),
|
|
59626
59784
|
nowrap: true,
|
|
59627
59785
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
59628
59786
|
className: "text-[11px] text-foreground-subtle",
|
|
59629
|
-
|
|
59787
|
+
title: new Date(row.updatedAt).toLocaleString(),
|
|
59788
|
+
children: new Date(row.updatedAt).toLocaleDateString()
|
|
59630
59789
|
})
|
|
59631
|
-
},
|
|
59790
|
+
}] : [],
|
|
59791
|
+
...extraColumns,
|
|
59632
59792
|
{
|
|
59633
59793
|
key: "actions",
|
|
59634
59794
|
header: "",
|
|
59635
59795
|
align: "right",
|
|
59636
59796
|
nowrap: true,
|
|
59797
|
+
width: "w-px",
|
|
59637
59798
|
render: (row) => /* @__PURE__ */ jsxs("span", {
|
|
59638
59799
|
className: "flex justify-end gap-1",
|
|
59639
|
-
children: [
|
|
59640
|
-
|
|
59641
|
-
|
|
59642
|
-
|
|
59643
|
-
|
|
59644
|
-
|
|
59645
|
-
|
|
59646
|
-
|
|
59647
|
-
|
|
59648
|
-
|
|
59649
|
-
|
|
59650
|
-
|
|
59651
|
-
|
|
59800
|
+
children: [
|
|
59801
|
+
rowActions?.(row),
|
|
59802
|
+
/* @__PURE__ */ jsx(Button, {
|
|
59803
|
+
size: "sm",
|
|
59804
|
+
variant: "ghost",
|
|
59805
|
+
type: "button",
|
|
59806
|
+
onClick: () => openEdit(row),
|
|
59807
|
+
children: /* @__PURE__ */ jsx(Pencil, { className: "h-3.5 w-3.5" })
|
|
59808
|
+
}),
|
|
59809
|
+
/* @__PURE__ */ jsx(Button, {
|
|
59810
|
+
size: "sm",
|
|
59811
|
+
variant: "ghost",
|
|
59812
|
+
type: "button",
|
|
59813
|
+
onClick: () => void onDelete(row),
|
|
59814
|
+
children: /* @__PURE__ */ jsx(Trash2, { className: "h-3.5 w-3.5 text-danger" })
|
|
59815
|
+
})
|
|
59816
|
+
]
|
|
59652
59817
|
})
|
|
59653
59818
|
}
|
|
59654
59819
|
];
|
|
59655
59820
|
}, [
|
|
59821
|
+
extraColumns,
|
|
59656
59822
|
onDelete,
|
|
59657
59823
|
openEdit,
|
|
59824
|
+
rowActions,
|
|
59825
|
+
showUpdated,
|
|
59658
59826
|
t
|
|
59659
59827
|
]);
|
|
59660
59828
|
const dialogOpen = formUrl.state.mode !== "closed";
|
|
@@ -59702,6 +59870,7 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59702
59870
|
title: t("uiLibrary.recordEntries.emptyTitle", "No entries yet"),
|
|
59703
59871
|
description: t("uiLibrary.recordEntries.emptyDescription", "Add the first row for this kind.")
|
|
59704
59872
|
}) : /* @__PURE__ */ jsx(DataTable, {
|
|
59873
|
+
...minWidthPx !== void 0 ? { minWidthPx } : {},
|
|
59705
59874
|
columns,
|
|
59706
59875
|
rows: entries,
|
|
59707
59876
|
rowKey: (r) => r.id,
|
|
@@ -59732,73 +59901,6 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59732
59901
|
});
|
|
59733
59902
|
}
|
|
59734
59903
|
//#endregion
|
|
59735
|
-
//#region src/composites/record-entries/record-entries-hub.tsx
|
|
59736
|
-
var RECORD_ENTRY_OWNER_PARAM = "entryOwner";
|
|
59737
|
-
var RECORD_ENTRY_KIND_PARAM = "entryKind";
|
|
59738
|
-
function kindKey$1(k) {
|
|
59739
|
-
return `${k.owner}/${k.kind}`;
|
|
59740
|
-
}
|
|
59741
|
-
function RecordEntriesHub({ filter }) {
|
|
59742
|
-
const t = useUiText();
|
|
59743
|
-
const kindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
|
|
59744
|
-
const [ownerParam, setOwner] = useUrlQueryParam(RECORD_ENTRY_OWNER_PARAM);
|
|
59745
|
-
const [kindParam, setKind] = useUrlQueryParam(RECORD_ENTRY_KIND_PARAM);
|
|
59746
|
-
const kinds = useMemo(() => {
|
|
59747
|
-
return (kindsQuery.data?.kinds ?? []).filter((k) => {
|
|
59748
|
-
if (filter?.owner !== void 0 && k.owner !== filter.owner) return false;
|
|
59749
|
-
if (filter?.kind !== void 0 && k.kind !== filter.kind) return false;
|
|
59750
|
-
return true;
|
|
59751
|
-
});
|
|
59752
|
-
}, [
|
|
59753
|
-
filter?.kind,
|
|
59754
|
-
filter?.owner,
|
|
59755
|
-
kindsQuery.data?.kinds
|
|
59756
|
-
]);
|
|
59757
|
-
const active = useMemo(() => {
|
|
59758
|
-
if (kinds.length === 0) return null;
|
|
59759
|
-
return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? kinds[0] ?? null;
|
|
59760
|
-
}, [
|
|
59761
|
-
kindParam,
|
|
59762
|
-
kinds,
|
|
59763
|
-
ownerParam
|
|
59764
|
-
]);
|
|
59765
|
-
const selectKind = (k) => {
|
|
59766
|
-
setOwner(k.owner);
|
|
59767
|
-
setKind(k.kind);
|
|
59768
|
-
};
|
|
59769
|
-
if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.recordEntries.kindsFailed", "Could not load entry kinds") });
|
|
59770
|
-
if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
|
|
59771
|
-
className: "flex justify-center py-10 text-foreground-subtle",
|
|
59772
|
-
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
|
|
59773
|
-
});
|
|
59774
|
-
if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
|
|
59775
|
-
title: t("uiLibrary.recordEntries.noKindsTitle", "No entry kinds"),
|
|
59776
|
-
description: t("uiLibrary.recordEntries.noKindsDescription", "No addon has declared an entry record kind yet.")
|
|
59777
|
-
});
|
|
59778
|
-
const activeKey = active === null ? "" : kindKey$1(active);
|
|
59779
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
59780
|
-
className: "space-y-4",
|
|
59781
|
-
children: [kinds.length > 1 && /* @__PURE__ */ jsx(Tabs, {
|
|
59782
|
-
appearance: "pills",
|
|
59783
|
-
value: activeKey,
|
|
59784
|
-
onValueChange: (key) => {
|
|
59785
|
-
const found = kinds.find((k) => kindKey$1(k) === key);
|
|
59786
|
-
if (found !== void 0) selectKind(found);
|
|
59787
|
-
},
|
|
59788
|
-
children: /* @__PURE__ */ jsx(TabsList, {
|
|
59789
|
-
className: "flex flex-wrap gap-1",
|
|
59790
|
-
children: kinds.map((k) => /* @__PURE__ */ jsxs(TabsTrigger, {
|
|
59791
|
-
value: kindKey$1(k),
|
|
59792
|
-
children: [k.title, k.rows > 0 ? ` (${k.rows})` : ""]
|
|
59793
|
-
}, kindKey$1(k)))
|
|
59794
|
-
})
|
|
59795
|
-
}), active !== null && /* @__PURE__ */ jsxs("div", { children: [kinds.length === 1 && /* @__PURE__ */ jsx("h3", {
|
|
59796
|
-
className: "mb-2 text-sm font-semibold text-foreground",
|
|
59797
|
-
children: active.title
|
|
59798
|
-
}), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: active })] })]
|
|
59799
|
-
});
|
|
59800
|
-
}
|
|
59801
|
-
//#endregion
|
|
59802
59904
|
//#region src/composites/storage-records/storage-records-panel.tsx
|
|
59803
59905
|
function StorageRecordsPanel({ kind }) {
|
|
59804
59906
|
const t = useUiText();
|
|
@@ -59922,47 +60024,143 @@ function StorageRecordsPanel({ kind }) {
|
|
|
59922
60024
|
});
|
|
59923
60025
|
}
|
|
59924
60026
|
//#endregion
|
|
59925
|
-
//#region src/composites/
|
|
59926
|
-
|
|
59927
|
-
|
|
59928
|
-
|
|
59929
|
-
|
|
60027
|
+
//#region src/composites/data-records/data-records-model.ts
|
|
60028
|
+
function dataRecordKey(kind) {
|
|
60029
|
+
return `${kind.owner}/${kind.kind}`;
|
|
60030
|
+
}
|
|
60031
|
+
function dataRecordType(kind) {
|
|
60032
|
+
return kind.entry ? "entry" : "record";
|
|
59930
60033
|
}
|
|
60034
|
+
/** `unknown` is a kind whose count was not asked for or could not be read — never "empty". */
|
|
60035
|
+
function dataRecordContents(kind) {
|
|
60036
|
+
if (kind.rows === null) return "unknown";
|
|
60037
|
+
return kind.rows > 0 ? "has-rows" : "empty";
|
|
60038
|
+
}
|
|
60039
|
+
/**
|
|
60040
|
+
* Join the declared kinds with the entry catalog. A pending/failed catalog
|
|
60041
|
+
* (`undefined`) leaves titles `null`; it never changes which kinds are listed.
|
|
60042
|
+
*/
|
|
60043
|
+
function buildDataRecordRows(kinds, entryKinds) {
|
|
60044
|
+
const titles = /* @__PURE__ */ new Map();
|
|
60045
|
+
for (const entry of entryKinds ?? []) titles.set(dataRecordKey(entry), entry.title);
|
|
60046
|
+
return kinds.map((kind) => ({
|
|
60047
|
+
kind,
|
|
60048
|
+
entryTitle: kind.entry ? titles.get(dataRecordKey(kind)) ?? null : null
|
|
60049
|
+
}));
|
|
60050
|
+
}
|
|
60051
|
+
var DATA_RECORD_FACET_GROUPS = [
|
|
60052
|
+
{
|
|
60053
|
+
id: "kind",
|
|
60054
|
+
value: (row) => dataRecordKey(row.kind)
|
|
60055
|
+
},
|
|
60056
|
+
{
|
|
60057
|
+
id: "owner",
|
|
60058
|
+
value: (row) => row.kind.owner
|
|
60059
|
+
},
|
|
60060
|
+
{
|
|
60061
|
+
id: "type",
|
|
60062
|
+
value: (row) => dataRecordType(row.kind)
|
|
60063
|
+
},
|
|
60064
|
+
{
|
|
60065
|
+
id: "database",
|
|
60066
|
+
value: (row) => row.kind.database
|
|
60067
|
+
},
|
|
60068
|
+
{
|
|
60069
|
+
id: "class",
|
|
60070
|
+
value: (row) => row.kind.class
|
|
60071
|
+
},
|
|
60072
|
+
{
|
|
60073
|
+
id: "state",
|
|
60074
|
+
value: (row) => row.kind.state
|
|
60075
|
+
},
|
|
60076
|
+
{
|
|
60077
|
+
id: "contents",
|
|
60078
|
+
value: (row) => dataRecordContents(row.kind)
|
|
60079
|
+
}
|
|
60080
|
+
];
|
|
60081
|
+
function dataRecordSearchText(row) {
|
|
60082
|
+
const { kind } = row;
|
|
60083
|
+
return [
|
|
60084
|
+
kind.owner,
|
|
60085
|
+
kind.kind,
|
|
60086
|
+
kind.class,
|
|
60087
|
+
kind.database,
|
|
60088
|
+
kind.state,
|
|
60089
|
+
row.entryTitle ?? ""
|
|
60090
|
+
];
|
|
60091
|
+
}
|
|
60092
|
+
//#endregion
|
|
60093
|
+
//#region src/composites/data-records/data-records-hub.tsx
|
|
60094
|
+
var DATA_RECORDS_OWNER_PARAM = "recordsOwner";
|
|
60095
|
+
var DATA_RECORDS_KIND_PARAM = "recordsKind";
|
|
59931
60096
|
function formatBytes(n) {
|
|
59932
60097
|
if (n === null) return "—";
|
|
59933
60098
|
if (n < 1024) return `${n} B`;
|
|
59934
60099
|
if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KiB`;
|
|
59935
60100
|
return `${(n / (1024 * 1024)).toFixed(1)} MiB`;
|
|
59936
60101
|
}
|
|
59937
|
-
function
|
|
60102
|
+
function groupLabel(id, t) {
|
|
60103
|
+
switch (id) {
|
|
60104
|
+
case "kind": return t("uiLibrary.dataRecords.facetKind", "Kind");
|
|
60105
|
+
case "owner": return t("uiLibrary.dataRecords.facetOwner", "Owner");
|
|
60106
|
+
case "type": return t("uiLibrary.dataRecords.facetType", "Type");
|
|
60107
|
+
case "database": return t("uiLibrary.dataRecords.facetDatabase", "Database");
|
|
60108
|
+
case "class": return t("uiLibrary.dataRecords.facetClass", "Class");
|
|
60109
|
+
case "state": return t("uiLibrary.dataRecords.facetState", "State");
|
|
60110
|
+
default: return t("uiLibrary.dataRecords.facetContents", "Contents");
|
|
60111
|
+
}
|
|
60112
|
+
}
|
|
60113
|
+
function facetCaption(groupId, value, t) {
|
|
60114
|
+
if (groupId === "type") return value === "entry" ? t("uiLibrary.dataRecords.typeEntry", "Entries (editable)") : t("uiLibrary.dataRecords.typeRecord", "Records (read-only)");
|
|
60115
|
+
if (groupId === "contents") {
|
|
60116
|
+
if (value === "has-rows") return t("uiLibrary.dataRecords.contentsHasRows", "Has rows");
|
|
60117
|
+
if (value === "empty") return t("uiLibrary.dataRecords.contentsEmpty", "Empty");
|
|
60118
|
+
return t("uiLibrary.dataRecords.contentsUnknown", "Count unknown");
|
|
60119
|
+
}
|
|
60120
|
+
return value;
|
|
60121
|
+
}
|
|
60122
|
+
/** Entry kinds open the editable list; every other kind opens the read-only preview. */
|
|
60123
|
+
function KindDetail({ kind, entryKinds, entryKindsPending, entryKindsError }) {
|
|
60124
|
+
const t = useUiText();
|
|
60125
|
+
if (!kind.entry) return /* @__PURE__ */ jsx(StorageRecordsPanel, { kind });
|
|
60126
|
+
if (entryKindsPending) return /* @__PURE__ */ jsx("div", {
|
|
60127
|
+
className: "flex justify-center py-8 text-foreground-subtle",
|
|
60128
|
+
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
|
|
60129
|
+
});
|
|
60130
|
+
if (entryKindsError !== null) return /* @__PURE__ */ jsx(ErrorBox, { message: entryKindsError });
|
|
60131
|
+
const info = entryKinds?.find((e) => dataRecordKey(e) === dataRecordKey(kind));
|
|
60132
|
+
if (info === void 0) return /* @__PURE__ */ jsx(ErrorBox, { message: t("uiLibrary.dataRecords.entryKindMissing", "This entry kind is not served by the entries service.") });
|
|
60133
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
60134
|
+
className: "space-y-2",
|
|
60135
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
60136
|
+
className: "text-sm font-semibold text-foreground",
|
|
60137
|
+
children: info.title
|
|
60138
|
+
}), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: info })]
|
|
60139
|
+
});
|
|
60140
|
+
}
|
|
60141
|
+
/**
|
|
60142
|
+
* System → Data → Records: every declared record kind in ONE table with
|
|
60143
|
+
* compact filters; an entry kind opens its editable list, any other kind its
|
|
60144
|
+
* read-only row preview. Selection is in `?recordsOwner=&recordsKind=`.
|
|
60145
|
+
*/
|
|
60146
|
+
function DataRecordsHub() {
|
|
59938
60147
|
const t = useUiText();
|
|
59939
60148
|
const kindsQuery = trpc.storageAdmin.listKinds.useQuery({}, { staleTime: 3e4 });
|
|
59940
|
-
const
|
|
59941
|
-
const [
|
|
59942
|
-
const
|
|
59943
|
-
const
|
|
59944
|
-
|
|
59945
|
-
|
|
59946
|
-
|
|
59947
|
-
|
|
59948
|
-
row.database,
|
|
59949
|
-
row.state
|
|
59950
|
-
],
|
|
59951
|
-
facetGroups: [{
|
|
59952
|
-
id: "owner",
|
|
59953
|
-
value: (row) => row.owner
|
|
59954
|
-
}, {
|
|
59955
|
-
id: "database",
|
|
59956
|
-
value: (row) => row.database
|
|
59957
|
-
}]
|
|
60149
|
+
const entryKindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
|
|
60150
|
+
const [ownerParam, setOwner] = useUrlQueryParam(DATA_RECORDS_OWNER_PARAM);
|
|
60151
|
+
const [kindParam, setKind] = useUrlQueryParam(DATA_RECORDS_KIND_PARAM);
|
|
60152
|
+
const entryKinds = entryKindsQuery.data?.kinds;
|
|
60153
|
+
const rows = useMemo(() => buildDataRecordRows(kindsQuery.data?.kinds ?? [], entryKinds), [entryKinds, kindsQuery.data?.kinds]);
|
|
60154
|
+
const filter = useDataTableFilter(rows, {
|
|
60155
|
+
searchText: dataRecordSearchText,
|
|
60156
|
+
facetGroups: DATA_RECORD_FACET_GROUPS
|
|
59958
60157
|
});
|
|
59959
60158
|
const active = useMemo(() => {
|
|
59960
|
-
|
|
59961
|
-
return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? null;
|
|
60159
|
+
return rows.find((r) => r.kind.owner === ownerParam && r.kind.kind === kindParam)?.kind ?? null;
|
|
59962
60160
|
}, [
|
|
59963
60161
|
kindParam,
|
|
59964
|
-
|
|
59965
|
-
|
|
60162
|
+
ownerParam,
|
|
60163
|
+
rows
|
|
59966
60164
|
]);
|
|
59967
60165
|
const selectKind = useCallback((k) => {
|
|
59968
60166
|
setOwner(k.owner);
|
|
@@ -59972,72 +60170,87 @@ function StorageRecordsHub() {
|
|
|
59972
60170
|
return [
|
|
59973
60171
|
{
|
|
59974
60172
|
key: "kind",
|
|
59975
|
-
header: t("uiLibrary.
|
|
60173
|
+
header: t("uiLibrary.dataRecords.colKind", "Kind"),
|
|
59976
60174
|
render: (row) => /* @__PURE__ */ jsxs("span", {
|
|
59977
|
-
className: "
|
|
59978
|
-
children: [
|
|
59979
|
-
|
|
59980
|
-
|
|
59981
|
-
|
|
59982
|
-
|
|
60175
|
+
className: "flex flex-col",
|
|
60176
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
60177
|
+
className: "font-mono text-xs",
|
|
60178
|
+
children: dataRecordKey(row.kind)
|
|
60179
|
+
}), row.entryTitle !== null ? /* @__PURE__ */ jsx("span", {
|
|
60180
|
+
className: "text-[11px] text-foreground-subtle",
|
|
60181
|
+
children: row.entryTitle
|
|
60182
|
+
}) : null]
|
|
60183
|
+
}),
|
|
60184
|
+
sortValue: (row) => dataRecordKey(row.kind)
|
|
60185
|
+
},
|
|
60186
|
+
{
|
|
60187
|
+
key: "type",
|
|
60188
|
+
header: t("uiLibrary.dataRecords.colType", "Type"),
|
|
60189
|
+
nowrap: true,
|
|
60190
|
+
render: (row) => row.kind.entry ? /* @__PURE__ */ jsx(Badge, {
|
|
60191
|
+
variant: "info",
|
|
60192
|
+
children: t("uiLibrary.dataRecords.badgeEntry", "Entry")
|
|
60193
|
+
}) : /* @__PURE__ */ jsx(Badge, {
|
|
60194
|
+
variant: "neutral",
|
|
60195
|
+
children: t("uiLibrary.dataRecords.badgeRecord", "Record")
|
|
59983
60196
|
}),
|
|
59984
|
-
sortValue: (row) =>
|
|
60197
|
+
sortValue: (row) => row.kind.entry ? "entry" : "record"
|
|
59985
60198
|
},
|
|
59986
60199
|
{
|
|
59987
60200
|
key: "database",
|
|
59988
|
-
header: t("uiLibrary.
|
|
60201
|
+
header: t("uiLibrary.dataRecords.colDatabase", "DB"),
|
|
59989
60202
|
nowrap: true,
|
|
59990
60203
|
render: (row) => /* @__PURE__ */ jsx(Badge, {
|
|
59991
60204
|
variant: "neutral",
|
|
59992
60205
|
style: "outline",
|
|
59993
|
-
children: row.database
|
|
60206
|
+
children: row.kind.database
|
|
59994
60207
|
}),
|
|
59995
|
-
sortValue: (row) => row.database
|
|
60208
|
+
sortValue: (row) => row.kind.database
|
|
59996
60209
|
},
|
|
59997
60210
|
{
|
|
59998
60211
|
key: "class",
|
|
59999
|
-
header: t("uiLibrary.
|
|
60212
|
+
header: t("uiLibrary.dataRecords.colClass", "Class"),
|
|
60000
60213
|
nowrap: true,
|
|
60001
60214
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60002
60215
|
className: "text-xs text-foreground-muted",
|
|
60003
|
-
children: row.class
|
|
60216
|
+
children: row.kind.class
|
|
60004
60217
|
}),
|
|
60005
|
-
sortValue: (row) => row.class
|
|
60218
|
+
sortValue: (row) => row.kind.class
|
|
60006
60219
|
},
|
|
60007
60220
|
{
|
|
60008
60221
|
key: "state",
|
|
60009
|
-
header: t("uiLibrary.
|
|
60222
|
+
header: t("uiLibrary.dataRecords.colState", "State"),
|
|
60010
60223
|
nowrap: true,
|
|
60011
60224
|
render: (row) => /* @__PURE__ */ jsx(Badge, {
|
|
60012
|
-
variant: row.state === "declared" ? "default" : "neutral",
|
|
60013
|
-
children: row.state
|
|
60225
|
+
variant: row.kind.state === "declared" ? "default" : "neutral",
|
|
60226
|
+
children: row.kind.state
|
|
60014
60227
|
}),
|
|
60015
|
-
sortValue: (row) => row.state
|
|
60228
|
+
sortValue: (row) => row.kind.state
|
|
60016
60229
|
},
|
|
60017
60230
|
{
|
|
60018
60231
|
key: "rows",
|
|
60019
|
-
header: t("uiLibrary.
|
|
60232
|
+
header: t("uiLibrary.dataRecords.colRows", "Rows"),
|
|
60020
60233
|
align: "right",
|
|
60021
60234
|
nowrap: true,
|
|
60022
60235
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60023
60236
|
className: "font-mono text-xs tabular-nums",
|
|
60024
|
-
children: row.rows === null ? "—" : row.rows
|
|
60237
|
+
children: row.kind.rows === null ? "—" : row.kind.rows
|
|
60025
60238
|
}),
|
|
60026
|
-
sortValue: (row) => row.rows ?? -1
|
|
60239
|
+
sortValue: (row) => row.kind.rows ?? -1
|
|
60027
60240
|
},
|
|
60028
60241
|
{
|
|
60029
60242
|
key: "bytes",
|
|
60030
|
-
header: t("uiLibrary.
|
|
60243
|
+
header: t("uiLibrary.dataRecords.colSize", "Est. size"),
|
|
60031
60244
|
align: "right",
|
|
60032
60245
|
nowrap: true,
|
|
60033
60246
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60034
60247
|
className: "text-xs text-foreground-subtle",
|
|
60035
|
-
children: formatBytes(row.bytesEstimate)
|
|
60248
|
+
children: formatBytes(row.kind.bytesEstimate)
|
|
60036
60249
|
}),
|
|
60037
|
-
sortValue: (row) => row.bytesEstimate ?? -1
|
|
60250
|
+
sortValue: (row) => row.kind.bytesEstimate ?? -1
|
|
60038
60251
|
},
|
|
60039
60252
|
{
|
|
60040
|
-
key: "
|
|
60253
|
+
key: "open",
|
|
60041
60254
|
header: "",
|
|
60042
60255
|
align: "right",
|
|
60043
60256
|
nowrap: true,
|
|
@@ -60045,12 +60258,12 @@ function StorageRecordsHub() {
|
|
|
60045
60258
|
return /* @__PURE__ */ jsx(Button, {
|
|
60046
60259
|
type: "button",
|
|
60047
60260
|
size: "sm",
|
|
60048
|
-
variant: active !== null &&
|
|
60049
|
-
onClick: () => selectKind(row),
|
|
60050
|
-
children: t("uiLibrary.
|
|
60261
|
+
variant: active !== null && dataRecordKey(active) === dataRecordKey(row.kind) ? "primary" : "outline",
|
|
60262
|
+
onClick: () => selectKind(row.kind),
|
|
60263
|
+
children: row.kind.entry ? t("uiLibrary.dataRecords.manage", "Manage") : t("uiLibrary.dataRecords.viewRows", "View rows")
|
|
60051
60264
|
});
|
|
60052
60265
|
},
|
|
60053
|
-
notSortableReason: t("uiLibrary.
|
|
60266
|
+
notSortableReason: t("uiLibrary.dataRecords.actionColumn", "Actions")
|
|
60054
60267
|
}
|
|
60055
60268
|
];
|
|
60056
60269
|
}, [
|
|
@@ -60058,14 +60271,14 @@ function StorageRecordsHub() {
|
|
|
60058
60271
|
selectKind,
|
|
60059
60272
|
t
|
|
60060
60273
|
]);
|
|
60061
|
-
if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.
|
|
60274
|
+
if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.dataRecords.kindsFailed", "Could not load record kinds") });
|
|
60062
60275
|
if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
|
|
60063
60276
|
className: "flex justify-center py-10 text-foreground-subtle",
|
|
60064
60277
|
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
|
|
60065
60278
|
});
|
|
60066
|
-
if (
|
|
60067
|
-
title: t("uiLibrary.
|
|
60068
|
-
description: t("uiLibrary.
|
|
60279
|
+
if (rows.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
|
|
60280
|
+
title: t("uiLibrary.dataRecords.noKindsTitle", "No record kinds"),
|
|
60281
|
+
description: t("uiLibrary.dataRecords.noKindsDescription", "No addon has declared a record kind on this hub yet.")
|
|
60069
60282
|
});
|
|
60070
60283
|
return /* @__PURE__ */ jsxs("div", {
|
|
60071
60284
|
className: "space-y-4",
|
|
@@ -60075,13 +60288,15 @@ function StorageRecordsHub() {
|
|
|
60075
60288
|
facets: filter.facets,
|
|
60076
60289
|
groups: filter.groups.map((g) => ({
|
|
60077
60290
|
...g,
|
|
60078
|
-
label: g.id
|
|
60291
|
+
label: groupLabel(g.id, t),
|
|
60292
|
+
display: "menu",
|
|
60293
|
+
facetLabel: (value) => facetCaption(g.id, value, t)
|
|
60079
60294
|
})),
|
|
60080
60295
|
labels: {
|
|
60081
|
-
searchPlaceholder: t("uiLibrary.
|
|
60082
|
-
searchLabel: t("uiLibrary.
|
|
60083
|
-
facetsLabel: t("uiLibrary.
|
|
60084
|
-
clearLabel: t("uiLibrary.
|
|
60296
|
+
searchPlaceholder: t("uiLibrary.dataRecords.search", "Search kinds…"),
|
|
60297
|
+
searchLabel: t("uiLibrary.dataRecords.searchLabel", "Search record kinds"),
|
|
60298
|
+
facetsLabel: t("uiLibrary.dataRecords.facetsLabel", "Filter record kinds"),
|
|
60299
|
+
clearLabel: t("uiLibrary.dataRecords.clearFilters", "Clear filters")
|
|
60085
60300
|
},
|
|
60086
60301
|
onSearch: filter.setSearch,
|
|
60087
60302
|
onToggleFacet: filter.toggleFacet,
|
|
@@ -60091,15 +60306,20 @@ function StorageRecordsHub() {
|
|
|
60091
60306
|
/* @__PURE__ */ jsx(DataTable, {
|
|
60092
60307
|
columns,
|
|
60093
60308
|
rows: filter.rows,
|
|
60094
|
-
rowKey: (
|
|
60309
|
+
rowKey: (r) => dataRecordKey(r.kind),
|
|
60095
60310
|
maxBodyHeight: TABLE_SCROLL_MAX_H,
|
|
60096
60311
|
defaultSort: {
|
|
60097
60312
|
columnKey: "kind",
|
|
60098
60313
|
dir: "asc"
|
|
60099
60314
|
},
|
|
60100
|
-
emptyMessage: t("uiLibrary.
|
|
60315
|
+
emptyMessage: t("uiLibrary.dataRecords.noMatch", "No kinds match the filter")
|
|
60101
60316
|
}),
|
|
60102
|
-
active !== null ? /* @__PURE__ */ jsx(
|
|
60317
|
+
active !== null ? /* @__PURE__ */ jsx(KindDetail, {
|
|
60318
|
+
kind: active,
|
|
60319
|
+
entryKinds,
|
|
60320
|
+
entryKindsPending: entryKindsQuery.isPending,
|
|
60321
|
+
entryKindsError: entryKindsQuery.isError ? entryKindsQuery.error instanceof Error ? entryKindsQuery.error.message : t("uiLibrary.dataRecords.entryKindsFailed", "Could not load entry kinds") : null
|
|
60322
|
+
}) : null
|
|
60103
60323
|
]
|
|
60104
60324
|
});
|
|
60105
60325
|
}
|
|
@@ -64384,4 +64604,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").t
|
|
|
64384
64604
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
64385
64605
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
64386
64606
|
//#endregion
|
|
64387
|
-
export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetStatus, useDishwasherPause, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };
|
|
64607
|
+
export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DATA_RECORDS_KIND_PARAM, DATA_RECORDS_OWNER_PARAM, DATA_RECORD_FACET_GROUPS, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataRecordsHub, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildDataRecordRows, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataRecordContents, dataRecordKey, dataRecordSearchText, dataRecordType, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetOptions, useDishwasherGetStatus, useDishwasherPause, useDishwasherResume, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, 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, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };
|