@camstack/ui-library 1.2.301 → 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 +6 -0
- package/dist/index.cjs +530 -369
- package/dist/index.js +519 -364
- 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`. */
|
|
@@ -11012,6 +11014,8 @@ var useDishwasherSetVarioSpeedPlus = trpc.dishwasher.setVarioSpeedPlus.useMutati
|
|
|
11012
11014
|
var useDishwasherSetChildLock = trpc.dishwasher.setChildLock.useMutation;
|
|
11013
11015
|
/** Generated alias around `trpc.dishwasher.setOption.useMutation`. */
|
|
11014
11016
|
var useDishwasherSetOption = trpc.dishwasher.setOption.useMutation;
|
|
11017
|
+
/** Generated alias around `trpc.dishwasher.getOptions.useQuery`. */
|
|
11018
|
+
var useDishwasherGetOptions = trpc.dishwasher.getOptions.useQuery;
|
|
11015
11019
|
/** Generated alias around `trpc.dishwasher.getStatus.useQuery`. */
|
|
11016
11020
|
var useDishwasherGetStatus = trpc.dishwasher.getStatus.useQuery;
|
|
11017
11021
|
/** Generated alias around `trpc.doorbell.getStatus.useQuery`. */
|
|
@@ -12338,6 +12342,8 @@ var useStorageMigrationStatus = trpc.storageMigration.status.useQuery;
|
|
|
12338
12342
|
var useStorageMigrationCancel = trpc.storageMigration.cancel.useMutation;
|
|
12339
12343
|
/** Generated alias around `trpc.storageMigration.movers.useQuery`. */
|
|
12340
12344
|
var useStorageMigrationMovers = trpc.storageMigration.movers.useQuery;
|
|
12345
|
+
/** Generated alias around `trpc.storageMigration.moverClearance.useQuery`. */
|
|
12346
|
+
var useStorageMigrationMoverClearance = trpc.storageMigration.moverClearance.useQuery;
|
|
12341
12347
|
/** Generated alias around `trpc.storageMigration.residue.useQuery`. */
|
|
12342
12348
|
var useStorageMigrationResidue = trpc.storageMigration.residue.useQuery;
|
|
12343
12349
|
/** Generated alias around `trpc.storageMigration.drain.useMutation`. */
|
|
@@ -28564,7 +28570,7 @@ var STATUS_DOT_STYLES = {
|
|
|
28564
28570
|
idle: "bg-foreground-subtle/40",
|
|
28565
28571
|
unknown: "bg-foreground-subtle/40"
|
|
28566
28572
|
};
|
|
28567
|
-
function formatDuration(ms) {
|
|
28573
|
+
function formatDuration$1(ms) {
|
|
28568
28574
|
if (!Number.isFinite(ms) || ms < 0) return "—";
|
|
28569
28575
|
if (ms < 1e3) return `${ms}ms`;
|
|
28570
28576
|
const totalSec = Math.round(ms / 1e3);
|
|
@@ -28592,7 +28598,7 @@ function ObjectArrayCell({ kind, value }) {
|
|
|
28592
28598
|
});
|
|
28593
28599
|
if (kind === "duration" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
|
|
28594
28600
|
className: "font-mono text-[11px]",
|
|
28595
|
-
children: formatDuration(value)
|
|
28601
|
+
children: formatDuration$1(value)
|
|
28596
28602
|
});
|
|
28597
28603
|
if (kind === "timestamp" && typeof value === "number") return /* @__PURE__ */ jsx("span", {
|
|
28598
28604
|
className: "font-mono text-[11px]",
|
|
@@ -35092,7 +35098,7 @@ var ALIGN_CLASS = {
|
|
|
35092
35098
|
right: "text-right",
|
|
35093
35099
|
center: "text-center"
|
|
35094
35100
|
};
|
|
35095
|
-
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 }) {
|
|
35096
35102
|
const [innerSort, setInnerSort] = useState(defaultSort ?? null);
|
|
35097
35103
|
const [innerPage, setInnerPage] = useState(0);
|
|
35098
35104
|
const sort = sortProp !== void 0 ? sortProp : innerSort;
|
|
@@ -35169,7 +35175,8 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
35169
35175
|
const key = rowKey ? rowKey(row, rowIndex) : rowIndex;
|
|
35170
35176
|
const extra = rowClassName?.(row, rowIndex) ?? "";
|
|
35171
35177
|
const interactive = onRowClick !== void 0;
|
|
35172
|
-
|
|
35178
|
+
const detail = renderExpanded !== void 0 && isExpanded?.(row) === true ? renderExpanded(row, rowIndex) : null;
|
|
35179
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("tr", {
|
|
35173
35180
|
onClick: interactive ? () => onRowClick(row, rowIndex) : void 0,
|
|
35174
35181
|
className: [interactive ? "cursor-pointer hover:bg-primary/5" : "hover:bg-primary/5", extra].filter(Boolean).join(" "),
|
|
35175
35182
|
children: shownColumns.map((col) => {
|
|
@@ -35185,7 +35192,15 @@ function DataTable({ columns, rows, rowKey, onRowClick, minWidthPx = 480, emptyM
|
|
|
35185
35192
|
children: col.render(row, rowIndex)
|
|
35186
35193
|
}, col.key);
|
|
35187
35194
|
})
|
|
35188
|
-
},
|
|
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);
|
|
35189
35204
|
}) })]
|
|
35190
35205
|
})
|
|
35191
35206
|
});
|
|
@@ -37749,6 +37764,88 @@ function filterDataTableRows(rows, state, config) {
|
|
|
37749
37764
|
});
|
|
37750
37765
|
}
|
|
37751
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
|
|
37752
37849
|
//#region src/composites/data-table-filter-bar.tsx
|
|
37753
37850
|
/**
|
|
37754
37851
|
* The controls of one table's filter: a search box and the facet chips.
|
|
@@ -37801,7 +37898,18 @@ function DataTableFilterBar({ state, facets, labels, onSearch, onToggleFacet, on
|
|
|
37801
37898
|
}, facet.value);
|
|
37802
37899
|
})
|
|
37803
37900
|
}),
|
|
37804
|
-
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", {
|
|
37805
37913
|
role: "group",
|
|
37806
37914
|
"aria-label": group.label,
|
|
37807
37915
|
className: "flex flex-wrap items-center gap-1",
|
|
@@ -48665,47 +48773,95 @@ function PetFeederHeroCard({ trpc, deviceId, features, optimistic }) {
|
|
|
48665
48773
|
*
|
|
48666
48774
|
* Reads the `dishwasher` cap status slice and renders inline + hero surfaces
|
|
48667
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.
|
|
48668
48781
|
*/
|
|
48669
|
-
|
|
48670
|
-
|
|
48671
|
-
|
|
48672
|
-
|
|
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"),
|
|
48673
48787
|
tone: "text-primary"
|
|
48674
48788
|
};
|
|
48675
|
-
case "
|
|
48676
|
-
label: t("uiLibrary.dishwasher.
|
|
48789
|
+
case "Pause": return {
|
|
48790
|
+
label: t("uiLibrary.dishwasher.op.pause", "Paused"),
|
|
48677
48791
|
tone: "text-warning"
|
|
48678
48792
|
};
|
|
48679
|
-
case "
|
|
48680
|
-
label: t("uiLibrary.dishwasher.finished", "Finished"),
|
|
48793
|
+
case "Finished": return {
|
|
48794
|
+
label: t("uiLibrary.dishwasher.op.finished", "Finished"),
|
|
48681
48795
|
tone: "text-success"
|
|
48682
48796
|
};
|
|
48683
|
-
case "
|
|
48684
|
-
label: t("uiLibrary.dishwasher.error", "Error"),
|
|
48685
|
-
tone: "text-
|
|
48797
|
+
case "Error": return {
|
|
48798
|
+
label: t("uiLibrary.dishwasher.op.error", "Error"),
|
|
48799
|
+
tone: "text-danger"
|
|
48686
48800
|
};
|
|
48687
|
-
case "
|
|
48688
|
-
label: t("uiLibrary.dishwasher.
|
|
48689
|
-
tone: "text-
|
|
48801
|
+
case "Aborting": return {
|
|
48802
|
+
label: t("uiLibrary.dishwasher.op.aborting", "Stopping"),
|
|
48803
|
+
tone: "text-warning"
|
|
48690
48804
|
};
|
|
48691
|
-
case "
|
|
48692
|
-
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"),
|
|
48693
48819
|
tone: "text-foreground-subtle"
|
|
48694
48820
|
};
|
|
48695
|
-
case
|
|
48821
|
+
case null: return {
|
|
48696
48822
|
label: t("uiLibrary.dishwasher.unknown", "Unknown"),
|
|
48697
48823
|
tone: "text-foreground-subtle"
|
|
48698
48824
|
};
|
|
48699
48825
|
}
|
|
48700
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
|
+
}
|
|
48701
48841
|
function consumableTone(level) {
|
|
48702
48842
|
switch (level) {
|
|
48703
48843
|
case "ok": return "text-success";
|
|
48704
48844
|
case "low": return "text-warning";
|
|
48705
|
-
case "empty": return "text-
|
|
48845
|
+
case "empty": return "text-danger";
|
|
48706
48846
|
case null: return "text-foreground-subtle";
|
|
48707
48847
|
}
|
|
48708
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
|
+
}
|
|
48709
48865
|
function useDishwasher(trpc, deviceId) {
|
|
48710
48866
|
return useDeviceCapability({
|
|
48711
48867
|
trpc,
|
|
@@ -48739,13 +48895,11 @@ function ConsumableBadge({ label, level }) {
|
|
|
48739
48895
|
]
|
|
48740
48896
|
});
|
|
48741
48897
|
}
|
|
48742
|
-
function DishwasherGraphic({
|
|
48743
|
-
const running = state === "running";
|
|
48898
|
+
function DishwasherGraphic({ running, progressPercent }) {
|
|
48744
48899
|
const pct = progressPercent != null ? Math.max(0, Math.min(100, progressPercent)) : running ? 40 : 0;
|
|
48745
48900
|
return /* @__PURE__ */ jsxs("div", {
|
|
48746
48901
|
"aria-hidden": "true",
|
|
48747
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",
|
|
48748
|
-
style: { boxShadow: "inset 0 0 0 2px rgba(255,255,255,.06)" },
|
|
48749
48903
|
children: [/* @__PURE__ */ jsx("div", {
|
|
48750
48904
|
className: cn("absolute inset-x-0 bottom-0 bg-primary/25 transition-[height] duration-500", running && "animate-pulse"),
|
|
48751
48905
|
style: { height: `${pct}%` }
|
|
@@ -48755,20 +48909,21 @@ function DishwasherGraphic({ state, progressPercent }) {
|
|
|
48755
48909
|
})]
|
|
48756
48910
|
});
|
|
48757
48911
|
}
|
|
48758
|
-
function DishwasherPanel({ trpc, deviceId, layout
|
|
48912
|
+
function DishwasherPanel({ trpc, deviceId, layout }) {
|
|
48759
48913
|
const t = useUiText();
|
|
48760
48914
|
const { cap, slice, available } = useDishwasher(trpc, deviceId);
|
|
48761
|
-
const { display, applyOptimistic } = useOptimisticSlice(slice, { enabled: optimistic ?? true });
|
|
48762
48915
|
if (cap === void 0) return null;
|
|
48763
|
-
if (
|
|
48764
|
-
const
|
|
48916
|
+
if (slice === void 0) return null;
|
|
48917
|
+
const display = slice;
|
|
48918
|
+
const link = display.availability === "available";
|
|
48919
|
+
const busy = !available || !link;
|
|
48765
48920
|
const optionTogglesLocked = display.childLock === true;
|
|
48766
|
-
const meta =
|
|
48767
|
-
const running = display.
|
|
48768
|
-
const paused = display.
|
|
48769
|
-
const
|
|
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) => {
|
|
48770
48926
|
if (busy) return;
|
|
48771
|
-
applyOptimistic(patch);
|
|
48772
48927
|
fn();
|
|
48773
48928
|
};
|
|
48774
48929
|
if (layout === "compact") {
|
|
@@ -48777,7 +48932,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48777
48932
|
return /* @__PURE__ */ jsxs("div", {
|
|
48778
48933
|
className: "inline-flex items-center gap-1.5 max-w-full",
|
|
48779
48934
|
children: [
|
|
48780
|
-
display.doorOpen && /* @__PURE__ */ jsx("span", {
|
|
48935
|
+
display.doorOpen === true && /* @__PURE__ */ jsx("span", {
|
|
48781
48936
|
className: "inline-flex text-warning shrink-0",
|
|
48782
48937
|
title: t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
48783
48938
|
"aria-label": t("uiLibrary.dishwasher.doorOpen", "Door open"),
|
|
@@ -48790,15 +48945,11 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48790
48945
|
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48791
48946
|
className: "text-xs text-foreground-subtle truncate max-w-[7rem]",
|
|
48792
48947
|
title: display.program,
|
|
48793
|
-
children: display.program
|
|
48948
|
+
children: featureLabel(display.program)
|
|
48794
48949
|
}),
|
|
48795
|
-
display.
|
|
48950
|
+
display.remainingSeconds != null && /* @__PURE__ */ jsxs("span", {
|
|
48796
48951
|
className: "inline-flex items-center gap-0.5 text-xs text-foreground-subtle tabular-nums shrink-0",
|
|
48797
|
-
children: [
|
|
48798
|
-
/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }),
|
|
48799
|
-
display.remainingMinutes,
|
|
48800
|
-
"m"
|
|
48801
|
-
]
|
|
48952
|
+
children: [/* @__PURE__ */ jsx(Timer, { className: "h-3 w-3" }), formatDuration(display.remainingSeconds, t)]
|
|
48802
48953
|
}),
|
|
48803
48954
|
saltWarn && /* @__PURE__ */ jsx("span", {
|
|
48804
48955
|
className: cn("text-[10px] font-medium shrink-0", consumableTone(display.saltLevel)),
|
|
@@ -48810,19 +48961,16 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48810
48961
|
}),
|
|
48811
48962
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48812
48963
|
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48813
|
-
busy: busy || !
|
|
48964
|
+
busy: busy || !startable,
|
|
48814
48965
|
active: running,
|
|
48815
|
-
onClick: () => press(() => cap.start({}),
|
|
48816
|
-
state: "running",
|
|
48817
|
-
remoteStartAllowed: false
|
|
48818
|
-
}),
|
|
48966
|
+
onClick: () => press(() => cap.start({})),
|
|
48819
48967
|
children: /* @__PURE__ */ jsx(Play, { className: "h-3 w-3" })
|
|
48820
48968
|
}),
|
|
48821
48969
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48822
|
-
label: t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48823
|
-
busy: busy || !running,
|
|
48970
|
+
label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48971
|
+
busy: busy || !(running || paused),
|
|
48824
48972
|
active: paused,
|
|
48825
|
-
onClick: () => press(() => cap.
|
|
48973
|
+
onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
|
|
48826
48974
|
children: /* @__PURE__ */ jsx(Pause, { className: "h-3 w-3" })
|
|
48827
48975
|
})
|
|
48828
48976
|
]
|
|
@@ -48835,7 +48983,7 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48835
48983
|
/* @__PURE__ */ jsxs("div", {
|
|
48836
48984
|
className: "flex items-start gap-4",
|
|
48837
48985
|
children: [/* @__PURE__ */ jsx(DishwasherGraphic, {
|
|
48838
|
-
|
|
48986
|
+
running,
|
|
48839
48987
|
progressPercent: display.progressPercent
|
|
48840
48988
|
}), /* @__PURE__ */ jsxs("div", {
|
|
48841
48989
|
className: "flex min-w-0 flex-1 flex-col gap-2",
|
|
@@ -48845,14 +48993,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48845
48993
|
children: [/* @__PURE__ */ jsx("span", {
|
|
48846
48994
|
className: cn("text-3xl font-semibold", meta.tone),
|
|
48847
48995
|
children: meta.label
|
|
48848
|
-
}),
|
|
48996
|
+
}), display.powerOn === false && /* @__PURE__ */ jsx("span", {
|
|
48849
48997
|
className: "text-xs font-medium text-foreground-subtle",
|
|
48850
48998
|
children: t("uiLibrary.dishwasher.powerOff", "Power off")
|
|
48851
48999
|
})]
|
|
48852
49000
|
}),
|
|
48853
49001
|
display.program != null && /* @__PURE__ */ jsx("span", {
|
|
48854
49002
|
className: "text-sm text-foreground-subtle",
|
|
48855
|
-
|
|
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) })
|
|
48856
49013
|
}),
|
|
48857
49014
|
display.progressPercent != null && /* @__PURE__ */ jsxs("div", {
|
|
48858
49015
|
className: "flex items-center gap-2",
|
|
@@ -48878,53 +49035,52 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48878
49035
|
label: t("uiLibrary.dishwasher.rinseAid", "Rinse aid"),
|
|
48879
49036
|
level: display.rinseAidLevel
|
|
48880
49037
|
}),
|
|
48881
|
-
display.doorOpen && /* @__PURE__ */ jsxs("span", {
|
|
49038
|
+
display.doorOpen === true && /* @__PURE__ */ jsxs("span", {
|
|
48882
49039
|
className: "inline-flex items-center gap-1 text-xs text-warning",
|
|
48883
49040
|
children: [/* @__PURE__ */ jsx(DoorOpen, { className: "h-3.5 w-3.5" }), t("uiLibrary.dishwasher.doorOpen", "Door open")]
|
|
48884
|
-
})
|
|
49041
|
+
}),
|
|
49042
|
+
display.activeEvents.map((event) => /* @__PURE__ */ jsx("span", {
|
|
49043
|
+
className: "text-xs text-warning",
|
|
49044
|
+
title: event,
|
|
49045
|
+
children: featureLabel(event)
|
|
49046
|
+
}, event))
|
|
48885
49047
|
]
|
|
48886
49048
|
}),
|
|
48887
|
-
display.
|
|
48888
|
-
className: "inline-flex items-center gap-1 text-xs text-
|
|
48889
|
-
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") })]
|
|
48890
49052
|
}),
|
|
48891
49053
|
/* @__PURE__ */ jsxs("div", {
|
|
48892
49054
|
className: "flex flex-wrap items-center gap-2",
|
|
48893
49055
|
children: [
|
|
48894
49056
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48895
49057
|
label: t("uiLibrary.dishwasher.start", "Start"),
|
|
48896
|
-
busy: busy || !
|
|
49058
|
+
busy: busy || !startable,
|
|
48897
49059
|
active: running,
|
|
48898
|
-
onClick: () => press(() => cap.start({}),
|
|
48899
|
-
state: "running",
|
|
48900
|
-
remoteStartAllowed: false
|
|
48901
|
-
}),
|
|
49060
|
+
onClick: () => press(() => cap.start({})),
|
|
48902
49061
|
children: /* @__PURE__ */ jsx(Play, { className: "h-4 w-4" })
|
|
48903
49062
|
}),
|
|
48904
49063
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48905
|
-
label: t("uiLibrary.dishwasher.pause", "Pause"),
|
|
48906
|
-
busy: busy || !running,
|
|
49064
|
+
label: paused ? t("uiLibrary.dishwasher.resume", "Resume") : t("uiLibrary.dishwasher.pause", "Pause"),
|
|
49065
|
+
busy: busy || !(running || paused),
|
|
48907
49066
|
active: paused,
|
|
48908
|
-
onClick: () => press(() => cap.
|
|
49067
|
+
onClick: () => press(() => paused ? cap.resume({}) : cap.pause({})),
|
|
48909
49068
|
children: /* @__PURE__ */ jsx(Pause, { className: "h-4 w-4" })
|
|
48910
49069
|
}),
|
|
48911
49070
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48912
49071
|
label: t("uiLibrary.dishwasher.stop", "Stop"),
|
|
48913
|
-
busy,
|
|
49072
|
+
busy: busy || !(running || paused),
|
|
48914
49073
|
active: false,
|
|
48915
|
-
onClick: () => press(() => cap.stop({}),
|
|
48916
|
-
state: "idle",
|
|
48917
|
-
remainingMinutes: null
|
|
48918
|
-
}),
|
|
49074
|
+
onClick: () => press(() => cap.stop({})),
|
|
48919
49075
|
children: /* @__PURE__ */ jsx(Square, { className: "h-3.5 w-3.5" })
|
|
48920
49076
|
}),
|
|
48921
49077
|
/* @__PURE__ */ jsx(DishwasherIconButton, {
|
|
48922
49078
|
label: t("uiLibrary.dishwasher.power", "Power"),
|
|
48923
|
-
busy,
|
|
48924
|
-
active: display.powerOn,
|
|
49079
|
+
busy: busy || display.powerOn === null,
|
|
49080
|
+
active: display.powerOn === true,
|
|
48925
49081
|
onClick: () => {
|
|
48926
|
-
const next =
|
|
48927
|
-
press(() => cap.setPower({ on: next })
|
|
49082
|
+
const next = display.powerOn !== true;
|
|
49083
|
+
press(() => cap.setPower({ on: next }));
|
|
48928
49084
|
},
|
|
48929
49085
|
children: /* @__PURE__ */ jsx(Power, { className: "h-4 w-4" })
|
|
48930
49086
|
})
|
|
@@ -48940,24 +49096,23 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48940
49096
|
children: t("uiLibrary.dishwasher.program", "Program")
|
|
48941
49097
|
}), /* @__PURE__ */ jsxs("select", {
|
|
48942
49098
|
"aria-label": t("uiLibrary.dishwasher.program", "Program"),
|
|
48943
|
-
value: display.
|
|
49099
|
+
value: display.selectedProgram ?? "",
|
|
48944
49100
|
disabled: busy,
|
|
48945
49101
|
onChange: (e) => {
|
|
48946
49102
|
const program = e.target.value;
|
|
48947
49103
|
if (!program) return;
|
|
48948
|
-
applyOptimistic({ program });
|
|
48949
49104
|
cap.setProgram({ program });
|
|
48950
49105
|
},
|
|
48951
49106
|
onClick: (e) => {
|
|
48952
49107
|
e.stopPropagation();
|
|
48953
49108
|
},
|
|
48954
49109
|
className: "flex-1 rounded border border-border bg-surface px-2 py-1 text-foreground disabled:opacity-50",
|
|
48955
|
-
children: [display.
|
|
49110
|
+
children: [display.selectedProgram == null && /* @__PURE__ */ jsx("option", {
|
|
48956
49111
|
value: "",
|
|
48957
49112
|
children: "—"
|
|
48958
49113
|
}), programs.map((p) => /* @__PURE__ */ jsx("option", {
|
|
48959
49114
|
value: p,
|
|
48960
|
-
children: p
|
|
49115
|
+
children: featureLabel(p)
|
|
48961
49116
|
}, p))]
|
|
48962
49117
|
})]
|
|
48963
49118
|
}),
|
|
@@ -48967,77 +49122,80 @@ function DishwasherPanel({ trpc, deviceId, layout, optimistic }) {
|
|
|
48967
49122
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48968
49123
|
label: t("uiLibrary.dishwasher.halfLoad", "Half load"),
|
|
48969
49124
|
checked: display.halfLoad,
|
|
49125
|
+
shown: link,
|
|
48970
49126
|
busy: busy || optionTogglesLocked,
|
|
48971
|
-
onChange: (on) => {
|
|
48972
|
-
applyOptimistic({ halfLoad: on });
|
|
48973
|
-
cap.setHalfLoad({ on });
|
|
48974
|
-
}
|
|
49127
|
+
onChange: (on) => void cap.setHalfLoad({ on })
|
|
48975
49128
|
}),
|
|
48976
49129
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48977
49130
|
label: t("uiLibrary.dishwasher.hygienePlus", "Hygiene plus"),
|
|
48978
49131
|
checked: display.hygienePlus,
|
|
49132
|
+
shown: link,
|
|
48979
49133
|
busy: busy || optionTogglesLocked,
|
|
48980
|
-
onChange: (on) => {
|
|
48981
|
-
applyOptimistic({ hygienePlus: on });
|
|
48982
|
-
cap.setHygienePlus({ on });
|
|
48983
|
-
}
|
|
49134
|
+
onChange: (on) => void cap.setHygienePlus({ on })
|
|
48984
49135
|
}),
|
|
48985
49136
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48986
49137
|
label: t("uiLibrary.dishwasher.extraDry", "Extra dry"),
|
|
48987
49138
|
checked: display.extraDry,
|
|
49139
|
+
shown: link,
|
|
48988
49140
|
busy: busy || optionTogglesLocked,
|
|
48989
|
-
onChange: (on) => {
|
|
48990
|
-
applyOptimistic({ extraDry: on });
|
|
48991
|
-
cap.setExtraDry({ on });
|
|
48992
|
-
}
|
|
49141
|
+
onChange: (on) => void cap.setExtraDry({ on })
|
|
48993
49142
|
}),
|
|
48994
49143
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
48995
49144
|
label: t("uiLibrary.dishwasher.intensiveZone", "Intensive zone"),
|
|
48996
49145
|
checked: display.intensiveZone,
|
|
49146
|
+
shown: link,
|
|
48997
49147
|
busy: busy || optionTogglesLocked,
|
|
48998
|
-
onChange: (on) => {
|
|
48999
|
-
applyOptimistic({ intensiveZone: on });
|
|
49000
|
-
cap.setIntensiveZone({ on });
|
|
49001
|
-
}
|
|
49148
|
+
onChange: (on) => void cap.setIntensiveZone({ on })
|
|
49002
49149
|
}),
|
|
49003
49150
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49004
49151
|
label: t("uiLibrary.dishwasher.varioSpeedPlus", "VarioSpeed+"),
|
|
49005
49152
|
checked: display.varioSpeedPlus,
|
|
49153
|
+
shown: link,
|
|
49006
49154
|
busy: busy || optionTogglesLocked,
|
|
49007
|
-
onChange: (on) => {
|
|
49008
|
-
applyOptimistic({ varioSpeedPlus: on });
|
|
49009
|
-
cap.setVarioSpeedPlus({ on });
|
|
49010
|
-
}
|
|
49155
|
+
onChange: (on) => void cap.setVarioSpeedPlus({ on })
|
|
49011
49156
|
}),
|
|
49012
49157
|
/* @__PURE__ */ jsx(ToggleRow, {
|
|
49013
49158
|
label: t("uiLibrary.dishwasher.childLock", "Child lock"),
|
|
49014
49159
|
checked: display.childLock,
|
|
49160
|
+
shown: link,
|
|
49015
49161
|
busy,
|
|
49016
|
-
onChange: (on) => {
|
|
49017
|
-
applyOptimistic({ childLock: on });
|
|
49018
|
-
cap.setChildLock({ on });
|
|
49019
|
-
}
|
|
49162
|
+
onChange: (on) => void cap.setChildLock({ on })
|
|
49020
49163
|
})
|
|
49021
49164
|
]
|
|
49022
49165
|
})
|
|
49023
49166
|
]
|
|
49024
49167
|
});
|
|
49025
49168
|
}
|
|
49026
|
-
|
|
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;
|
|
49027
49177
|
return /* @__PURE__ */ jsxs("label", {
|
|
49028
49178
|
className: "inline-flex items-center gap-2 cursor-pointer",
|
|
49029
|
-
children: [
|
|
49030
|
-
|
|
49031
|
-
|
|
49032
|
-
|
|
49033
|
-
|
|
49034
|
-
|
|
49035
|
-
|
|
49036
|
-
|
|
49037
|
-
|
|
49038
|
-
|
|
49039
|
-
|
|
49040
|
-
|
|
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
|
+
]
|
|
49041
49199
|
});
|
|
49042
49200
|
}
|
|
49043
49201
|
function DishwasherInlineControl(props) {
|
|
@@ -54669,88 +54827,6 @@ function PageSizeSelect({ value, options, onChange, ariaLabel }) {
|
|
|
54669
54827
|
});
|
|
54670
54828
|
}
|
|
54671
54829
|
//#endregion
|
|
54672
|
-
//#region src/composites/device-list/multi-select.tsx
|
|
54673
|
-
/**
|
|
54674
|
-
* Compact multi-select dropdown — a single chip-sized trigger ("Label · N")
|
|
54675
|
-
* that opens a checklist. Self-contained (outside-click / Escape dismiss), so
|
|
54676
|
-
* it stays compressed regardless of how many options exist or how little
|
|
54677
|
-
* horizontal room the container has. Shared by the device list's generic-mode
|
|
54678
|
-
* type filter and any other multi-select needs.
|
|
54679
|
-
*/
|
|
54680
|
-
function MultiSelectDropdown({ label, options, selected, onChange }) {
|
|
54681
|
-
const t = useUiText();
|
|
54682
|
-
const [open, setOpen] = useState(false);
|
|
54683
|
-
const rootRef = useRef(null);
|
|
54684
|
-
useEffect(() => {
|
|
54685
|
-
if (!open) return;
|
|
54686
|
-
const onOutside = (e) => {
|
|
54687
|
-
const target = e.target instanceof Node ? e.target : null;
|
|
54688
|
-
if (target && rootRef.current && !rootRef.current.contains(target)) setOpen(false);
|
|
54689
|
-
};
|
|
54690
|
-
const onKey = (e) => {
|
|
54691
|
-
if (e.key === "Escape") setOpen(false);
|
|
54692
|
-
};
|
|
54693
|
-
document.addEventListener("mousedown", onOutside);
|
|
54694
|
-
document.addEventListener("touchstart", onOutside);
|
|
54695
|
-
document.addEventListener("keydown", onKey);
|
|
54696
|
-
return () => {
|
|
54697
|
-
document.removeEventListener("mousedown", onOutside);
|
|
54698
|
-
document.removeEventListener("touchstart", onOutside);
|
|
54699
|
-
document.removeEventListener("keydown", onKey);
|
|
54700
|
-
};
|
|
54701
|
-
}, [open]);
|
|
54702
|
-
const selectedSet = new Set(selected);
|
|
54703
|
-
const count = selected.length;
|
|
54704
|
-
const toggle = (id) => {
|
|
54705
|
-
const next = new Set(selectedSet);
|
|
54706
|
-
if (next.has(id)) next.delete(id);
|
|
54707
|
-
else next.add(id);
|
|
54708
|
-
onChange(options.filter((o) => next.has(o.id)).map((o) => o.id));
|
|
54709
|
-
};
|
|
54710
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
54711
|
-
ref: rootRef,
|
|
54712
|
-
className: "relative",
|
|
54713
|
-
children: [/* @__PURE__ */ jsxs("button", {
|
|
54714
|
-
type: "button",
|
|
54715
|
-
onClick: () => setOpen((v) => !v),
|
|
54716
|
-
"aria-haspopup": "listbox",
|
|
54717
|
-
"aria-expanded": open,
|
|
54718
|
-
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"}`,
|
|
54719
|
-
children: [/* @__PURE__ */ jsxs("span", { children: [label, count > 0 ? ` · ${String(count)}` : ""] }), /* @__PURE__ */ jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${open ? "rotate-180" : ""}` })]
|
|
54720
|
-
}), open && /* @__PURE__ */ jsxs("div", {
|
|
54721
|
-
role: "listbox",
|
|
54722
|
-
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",
|
|
54723
|
-
children: [count > 0 && /* @__PURE__ */ jsx("button", {
|
|
54724
|
-
type: "button",
|
|
54725
|
-
onClick: () => onChange([]),
|
|
54726
|
-
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",
|
|
54727
|
-
children: t("uiLibrary.multiSelect.clear", "Clear selection")
|
|
54728
|
-
}), options.map((o) => {
|
|
54729
|
-
const active = selectedSet.has(o.id);
|
|
54730
|
-
const Icon = o.icon;
|
|
54731
|
-
return /* @__PURE__ */ jsxs("button", {
|
|
54732
|
-
type: "button",
|
|
54733
|
-
role: "option",
|
|
54734
|
-
"aria-selected": active,
|
|
54735
|
-
onClick: () => toggle(o.id),
|
|
54736
|
-
className: "flex w-full items-center gap-2 px-3 py-1.5 text-left text-[10.5px] text-foreground hover:bg-surface-hover",
|
|
54737
|
-
children: [
|
|
54738
|
-
/* @__PURE__ */ jsx("span", {
|
|
54739
|
-
className: `flex h-3.5 w-3.5 items-center justify-center rounded border shrink-0 ${active ? "border-primary bg-primary" : "border-border"}`,
|
|
54740
|
-
children: active && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-primary-foreground" })
|
|
54741
|
-
}),
|
|
54742
|
-
Icon && /* @__PURE__ */ jsx(Icon, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
|
|
54743
|
-
/* @__PURE__ */ jsx("span", {
|
|
54744
|
-
className: "truncate",
|
|
54745
|
-
children: o.label
|
|
54746
|
-
})
|
|
54747
|
-
]
|
|
54748
|
-
}, o.id);
|
|
54749
|
-
})]
|
|
54750
|
-
})]
|
|
54751
|
-
});
|
|
54752
|
-
}
|
|
54753
|
-
//#endregion
|
|
54754
54830
|
//#region src/composites/device-list/type-filter.tsx
|
|
54755
54831
|
/**
|
|
54756
54832
|
* Shared, multi-select type filter that adapts to its OWN available width
|
|
@@ -59443,19 +59519,35 @@ function objectFromJson(text) {
|
|
|
59443
59519
|
return null;
|
|
59444
59520
|
}
|
|
59445
59521
|
}
|
|
59446
|
-
|
|
59447
|
-
|
|
59448
|
-
|
|
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 }) {
|
|
59449
59538
|
return /* @__PURE__ */ jsx(FormField$1, {
|
|
59450
59539
|
label,
|
|
59451
59540
|
required,
|
|
59452
|
-
children: /* @__PURE__ */ jsx(
|
|
59453
|
-
|
|
59454
|
-
|
|
59455
|
-
|
|
59456
|
-
|
|
59457
|
-
|
|
59458
|
-
|
|
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
|
|
59459
59551
|
})
|
|
59460
59552
|
});
|
|
59461
59553
|
}
|
|
@@ -59463,6 +59555,7 @@ function SchemaField(props) {
|
|
|
59463
59555
|
const { path, name, node, value, secretPaths, required, disabled, onPatch } = props;
|
|
59464
59556
|
const label = labelFor(name, node);
|
|
59465
59557
|
if (isSecretField(path, secretPaths, node)) return /* @__PURE__ */ jsx(RecordEntrySecretField, {
|
|
59558
|
+
name,
|
|
59466
59559
|
label,
|
|
59467
59560
|
required,
|
|
59468
59561
|
value,
|
|
@@ -59612,7 +59705,7 @@ function defaultBody(schema) {
|
|
|
59612
59705
|
}
|
|
59613
59706
|
return out;
|
|
59614
59707
|
}
|
|
59615
|
-
function RecordEntriesPanel({ kind }) {
|
|
59708
|
+
function RecordEntriesPanel({ kind, rowActions, extraColumns = [], showUpdated = true, minWidthPx }) {
|
|
59616
59709
|
const t = useUiText();
|
|
59617
59710
|
const queryClient = useQueryClient();
|
|
59618
59711
|
const confirm = useConfirm();
|
|
@@ -59685,41 +59778,51 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59685
59778
|
})
|
|
59686
59779
|
})
|
|
59687
59780
|
},
|
|
59688
|
-
{
|
|
59781
|
+
...showUpdated ? [{
|
|
59689
59782
|
key: "updated",
|
|
59690
59783
|
header: t("uiLibrary.recordEntries.colUpdated", "Updated"),
|
|
59691
59784
|
nowrap: true,
|
|
59692
59785
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
59693
59786
|
className: "text-[11px] text-foreground-subtle",
|
|
59694
|
-
|
|
59787
|
+
title: new Date(row.updatedAt).toLocaleString(),
|
|
59788
|
+
children: new Date(row.updatedAt).toLocaleDateString()
|
|
59695
59789
|
})
|
|
59696
|
-
},
|
|
59790
|
+
}] : [],
|
|
59791
|
+
...extraColumns,
|
|
59697
59792
|
{
|
|
59698
59793
|
key: "actions",
|
|
59699
59794
|
header: "",
|
|
59700
59795
|
align: "right",
|
|
59701
59796
|
nowrap: true,
|
|
59797
|
+
width: "w-px",
|
|
59702
59798
|
render: (row) => /* @__PURE__ */ jsxs("span", {
|
|
59703
59799
|
className: "flex justify-end gap-1",
|
|
59704
|
-
children: [
|
|
59705
|
-
|
|
59706
|
-
|
|
59707
|
-
|
|
59708
|
-
|
|
59709
|
-
|
|
59710
|
-
|
|
59711
|
-
|
|
59712
|
-
|
|
59713
|
-
|
|
59714
|
-
|
|
59715
|
-
|
|
59716
|
-
|
|
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
|
+
]
|
|
59717
59817
|
})
|
|
59718
59818
|
}
|
|
59719
59819
|
];
|
|
59720
59820
|
}, [
|
|
59821
|
+
extraColumns,
|
|
59721
59822
|
onDelete,
|
|
59722
59823
|
openEdit,
|
|
59824
|
+
rowActions,
|
|
59825
|
+
showUpdated,
|
|
59723
59826
|
t
|
|
59724
59827
|
]);
|
|
59725
59828
|
const dialogOpen = formUrl.state.mode !== "closed";
|
|
@@ -59767,6 +59870,7 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59767
59870
|
title: t("uiLibrary.recordEntries.emptyTitle", "No entries yet"),
|
|
59768
59871
|
description: t("uiLibrary.recordEntries.emptyDescription", "Add the first row for this kind.")
|
|
59769
59872
|
}) : /* @__PURE__ */ jsx(DataTable, {
|
|
59873
|
+
...minWidthPx !== void 0 ? { minWidthPx } : {},
|
|
59770
59874
|
columns,
|
|
59771
59875
|
rows: entries,
|
|
59772
59876
|
rowKey: (r) => r.id,
|
|
@@ -59797,73 +59901,6 @@ function RecordEntriesPanel({ kind }) {
|
|
|
59797
59901
|
});
|
|
59798
59902
|
}
|
|
59799
59903
|
//#endregion
|
|
59800
|
-
//#region src/composites/record-entries/record-entries-hub.tsx
|
|
59801
|
-
var RECORD_ENTRY_OWNER_PARAM = "entryOwner";
|
|
59802
|
-
var RECORD_ENTRY_KIND_PARAM = "entryKind";
|
|
59803
|
-
function kindKey$1(k) {
|
|
59804
|
-
return `${k.owner}/${k.kind}`;
|
|
59805
|
-
}
|
|
59806
|
-
function RecordEntriesHub({ filter }) {
|
|
59807
|
-
const t = useUiText();
|
|
59808
|
-
const kindsQuery = useRecordEntriesListEntryKinds({}, { staleTime: 3e4 });
|
|
59809
|
-
const [ownerParam, setOwner] = useUrlQueryParam(RECORD_ENTRY_OWNER_PARAM);
|
|
59810
|
-
const [kindParam, setKind] = useUrlQueryParam(RECORD_ENTRY_KIND_PARAM);
|
|
59811
|
-
const kinds = useMemo(() => {
|
|
59812
|
-
return (kindsQuery.data?.kinds ?? []).filter((k) => {
|
|
59813
|
-
if (filter?.owner !== void 0 && k.owner !== filter.owner) return false;
|
|
59814
|
-
if (filter?.kind !== void 0 && k.kind !== filter.kind) return false;
|
|
59815
|
-
return true;
|
|
59816
|
-
});
|
|
59817
|
-
}, [
|
|
59818
|
-
filter?.kind,
|
|
59819
|
-
filter?.owner,
|
|
59820
|
-
kindsQuery.data?.kinds
|
|
59821
|
-
]);
|
|
59822
|
-
const active = useMemo(() => {
|
|
59823
|
-
if (kinds.length === 0) return null;
|
|
59824
|
-
return kinds.find((k) => k.owner === ownerParam && k.kind === kindParam) ?? kinds[0] ?? null;
|
|
59825
|
-
}, [
|
|
59826
|
-
kindParam,
|
|
59827
|
-
kinds,
|
|
59828
|
-
ownerParam
|
|
59829
|
-
]);
|
|
59830
|
-
const selectKind = (k) => {
|
|
59831
|
-
setOwner(k.owner);
|
|
59832
|
-
setKind(k.kind);
|
|
59833
|
-
};
|
|
59834
|
-
if (kindsQuery.isError) return /* @__PURE__ */ jsx(ErrorBox, { message: kindsQuery.error instanceof Error ? kindsQuery.error.message : t("uiLibrary.recordEntries.kindsFailed", "Could not load entry kinds") });
|
|
59835
|
-
if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
|
|
59836
|
-
className: "flex justify-center py-10 text-foreground-subtle",
|
|
59837
|
-
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
|
|
59838
|
-
});
|
|
59839
|
-
if (kinds.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
|
|
59840
|
-
title: t("uiLibrary.recordEntries.noKindsTitle", "No entry kinds"),
|
|
59841
|
-
description: t("uiLibrary.recordEntries.noKindsDescription", "No addon has declared an entry record kind yet.")
|
|
59842
|
-
});
|
|
59843
|
-
const activeKey = active === null ? "" : kindKey$1(active);
|
|
59844
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
59845
|
-
className: "space-y-4",
|
|
59846
|
-
children: [kinds.length > 1 && /* @__PURE__ */ jsx(Tabs, {
|
|
59847
|
-
appearance: "pills",
|
|
59848
|
-
value: activeKey,
|
|
59849
|
-
onValueChange: (key) => {
|
|
59850
|
-
const found = kinds.find((k) => kindKey$1(k) === key);
|
|
59851
|
-
if (found !== void 0) selectKind(found);
|
|
59852
|
-
},
|
|
59853
|
-
children: /* @__PURE__ */ jsx(TabsList, {
|
|
59854
|
-
className: "flex flex-wrap gap-1",
|
|
59855
|
-
children: kinds.map((k) => /* @__PURE__ */ jsxs(TabsTrigger, {
|
|
59856
|
-
value: kindKey$1(k),
|
|
59857
|
-
children: [k.title, k.rows > 0 ? ` (${k.rows})` : ""]
|
|
59858
|
-
}, kindKey$1(k)))
|
|
59859
|
-
})
|
|
59860
|
-
}), active !== null && /* @__PURE__ */ jsxs("div", { children: [kinds.length === 1 && /* @__PURE__ */ jsx("h3", {
|
|
59861
|
-
className: "mb-2 text-sm font-semibold text-foreground",
|
|
59862
|
-
children: active.title
|
|
59863
|
-
}), /* @__PURE__ */ jsx(RecordEntriesPanel, { kind: active })] })]
|
|
59864
|
-
});
|
|
59865
|
-
}
|
|
59866
|
-
//#endregion
|
|
59867
59904
|
//#region src/composites/storage-records/storage-records-panel.tsx
|
|
59868
59905
|
function StorageRecordsPanel({ kind }) {
|
|
59869
59906
|
const t = useUiText();
|
|
@@ -59987,47 +60024,143 @@ function StorageRecordsPanel({ kind }) {
|
|
|
59987
60024
|
});
|
|
59988
60025
|
}
|
|
59989
60026
|
//#endregion
|
|
59990
|
-
//#region src/composites/
|
|
59991
|
-
|
|
59992
|
-
|
|
59993
|
-
function kindKey(k) {
|
|
59994
|
-
return `${k.owner}/${k.kind}`;
|
|
60027
|
+
//#region src/composites/data-records/data-records-model.ts
|
|
60028
|
+
function dataRecordKey(kind) {
|
|
60029
|
+
return `${kind.owner}/${kind.kind}`;
|
|
59995
60030
|
}
|
|
60031
|
+
function dataRecordType(kind) {
|
|
60032
|
+
return kind.entry ? "entry" : "record";
|
|
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";
|
|
59996
60096
|
function formatBytes(n) {
|
|
59997
60097
|
if (n === null) return "—";
|
|
59998
60098
|
if (n < 1024) return `${n} B`;
|
|
59999
60099
|
if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KiB`;
|
|
60000
60100
|
return `${(n / (1024 * 1024)).toFixed(1)} MiB`;
|
|
60001
60101
|
}
|
|
60002
|
-
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() {
|
|
60003
60147
|
const t = useUiText();
|
|
60004
60148
|
const kindsQuery = trpc.storageAdmin.listKinds.useQuery({}, { staleTime: 3e4 });
|
|
60005
|
-
const
|
|
60006
|
-
const [
|
|
60007
|
-
const
|
|
60008
|
-
const
|
|
60009
|
-
|
|
60010
|
-
|
|
60011
|
-
|
|
60012
|
-
|
|
60013
|
-
row.database,
|
|
60014
|
-
row.state
|
|
60015
|
-
],
|
|
60016
|
-
facetGroups: [{
|
|
60017
|
-
id: "owner",
|
|
60018
|
-
value: (row) => row.owner
|
|
60019
|
-
}, {
|
|
60020
|
-
id: "database",
|
|
60021
|
-
value: (row) => row.database
|
|
60022
|
-
}]
|
|
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
|
|
60023
60157
|
});
|
|
60024
60158
|
const active = useMemo(() => {
|
|
60025
|
-
|
|
60026
|
-
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;
|
|
60027
60160
|
}, [
|
|
60028
60161
|
kindParam,
|
|
60029
|
-
|
|
60030
|
-
|
|
60162
|
+
ownerParam,
|
|
60163
|
+
rows
|
|
60031
60164
|
]);
|
|
60032
60165
|
const selectKind = useCallback((k) => {
|
|
60033
60166
|
setOwner(k.owner);
|
|
@@ -60037,72 +60170,87 @@ function StorageRecordsHub() {
|
|
|
60037
60170
|
return [
|
|
60038
60171
|
{
|
|
60039
60172
|
key: "kind",
|
|
60040
|
-
header: t("uiLibrary.
|
|
60173
|
+
header: t("uiLibrary.dataRecords.colKind", "Kind"),
|
|
60041
60174
|
render: (row) => /* @__PURE__ */ jsxs("span", {
|
|
60042
|
-
className: "
|
|
60043
|
-
children: [
|
|
60044
|
-
|
|
60045
|
-
|
|
60046
|
-
|
|
60047
|
-
|
|
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]
|
|
60048
60183
|
}),
|
|
60049
|
-
sortValue: (row) =>
|
|
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")
|
|
60196
|
+
}),
|
|
60197
|
+
sortValue: (row) => row.kind.entry ? "entry" : "record"
|
|
60050
60198
|
},
|
|
60051
60199
|
{
|
|
60052
60200
|
key: "database",
|
|
60053
|
-
header: t("uiLibrary.
|
|
60201
|
+
header: t("uiLibrary.dataRecords.colDatabase", "DB"),
|
|
60054
60202
|
nowrap: true,
|
|
60055
60203
|
render: (row) => /* @__PURE__ */ jsx(Badge, {
|
|
60056
60204
|
variant: "neutral",
|
|
60057
60205
|
style: "outline",
|
|
60058
|
-
children: row.database
|
|
60206
|
+
children: row.kind.database
|
|
60059
60207
|
}),
|
|
60060
|
-
sortValue: (row) => row.database
|
|
60208
|
+
sortValue: (row) => row.kind.database
|
|
60061
60209
|
},
|
|
60062
60210
|
{
|
|
60063
60211
|
key: "class",
|
|
60064
|
-
header: t("uiLibrary.
|
|
60212
|
+
header: t("uiLibrary.dataRecords.colClass", "Class"),
|
|
60065
60213
|
nowrap: true,
|
|
60066
60214
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60067
60215
|
className: "text-xs text-foreground-muted",
|
|
60068
|
-
children: row.class
|
|
60216
|
+
children: row.kind.class
|
|
60069
60217
|
}),
|
|
60070
|
-
sortValue: (row) => row.class
|
|
60218
|
+
sortValue: (row) => row.kind.class
|
|
60071
60219
|
},
|
|
60072
60220
|
{
|
|
60073
60221
|
key: "state",
|
|
60074
|
-
header: t("uiLibrary.
|
|
60222
|
+
header: t("uiLibrary.dataRecords.colState", "State"),
|
|
60075
60223
|
nowrap: true,
|
|
60076
60224
|
render: (row) => /* @__PURE__ */ jsx(Badge, {
|
|
60077
|
-
variant: row.state === "declared" ? "default" : "neutral",
|
|
60078
|
-
children: row.state
|
|
60225
|
+
variant: row.kind.state === "declared" ? "default" : "neutral",
|
|
60226
|
+
children: row.kind.state
|
|
60079
60227
|
}),
|
|
60080
|
-
sortValue: (row) => row.state
|
|
60228
|
+
sortValue: (row) => row.kind.state
|
|
60081
60229
|
},
|
|
60082
60230
|
{
|
|
60083
60231
|
key: "rows",
|
|
60084
|
-
header: t("uiLibrary.
|
|
60232
|
+
header: t("uiLibrary.dataRecords.colRows", "Rows"),
|
|
60085
60233
|
align: "right",
|
|
60086
60234
|
nowrap: true,
|
|
60087
60235
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60088
60236
|
className: "font-mono text-xs tabular-nums",
|
|
60089
|
-
children: row.rows === null ? "—" : row.rows
|
|
60237
|
+
children: row.kind.rows === null ? "—" : row.kind.rows
|
|
60090
60238
|
}),
|
|
60091
|
-
sortValue: (row) => row.rows ?? -1
|
|
60239
|
+
sortValue: (row) => row.kind.rows ?? -1
|
|
60092
60240
|
},
|
|
60093
60241
|
{
|
|
60094
60242
|
key: "bytes",
|
|
60095
|
-
header: t("uiLibrary.
|
|
60243
|
+
header: t("uiLibrary.dataRecords.colSize", "Est. size"),
|
|
60096
60244
|
align: "right",
|
|
60097
60245
|
nowrap: true,
|
|
60098
60246
|
render: (row) => /* @__PURE__ */ jsx("span", {
|
|
60099
60247
|
className: "text-xs text-foreground-subtle",
|
|
60100
|
-
children: formatBytes(row.bytesEstimate)
|
|
60248
|
+
children: formatBytes(row.kind.bytesEstimate)
|
|
60101
60249
|
}),
|
|
60102
|
-
sortValue: (row) => row.bytesEstimate ?? -1
|
|
60250
|
+
sortValue: (row) => row.kind.bytesEstimate ?? -1
|
|
60103
60251
|
},
|
|
60104
60252
|
{
|
|
60105
|
-
key: "
|
|
60253
|
+
key: "open",
|
|
60106
60254
|
header: "",
|
|
60107
60255
|
align: "right",
|
|
60108
60256
|
nowrap: true,
|
|
@@ -60110,12 +60258,12 @@ function StorageRecordsHub() {
|
|
|
60110
60258
|
return /* @__PURE__ */ jsx(Button, {
|
|
60111
60259
|
type: "button",
|
|
60112
60260
|
size: "sm",
|
|
60113
|
-
variant: active !== null &&
|
|
60114
|
-
onClick: () => selectKind(row),
|
|
60115
|
-
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")
|
|
60116
60264
|
});
|
|
60117
60265
|
},
|
|
60118
|
-
notSortableReason: t("uiLibrary.
|
|
60266
|
+
notSortableReason: t("uiLibrary.dataRecords.actionColumn", "Actions")
|
|
60119
60267
|
}
|
|
60120
60268
|
];
|
|
60121
60269
|
}, [
|
|
@@ -60123,14 +60271,14 @@ function StorageRecordsHub() {
|
|
|
60123
60271
|
selectKind,
|
|
60124
60272
|
t
|
|
60125
60273
|
]);
|
|
60126
|
-
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") });
|
|
60127
60275
|
if (kindsQuery.isPending) return /* @__PURE__ */ jsx("div", {
|
|
60128
60276
|
className: "flex justify-center py-10 text-foreground-subtle",
|
|
60129
60277
|
children: /* @__PURE__ */ jsx(LoaderCircle, { className: "h-5 w-5 animate-spin" })
|
|
60130
60278
|
});
|
|
60131
|
-
if (
|
|
60132
|
-
title: t("uiLibrary.
|
|
60133
|
-
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.")
|
|
60134
60282
|
});
|
|
60135
60283
|
return /* @__PURE__ */ jsxs("div", {
|
|
60136
60284
|
className: "space-y-4",
|
|
@@ -60140,13 +60288,15 @@ function StorageRecordsHub() {
|
|
|
60140
60288
|
facets: filter.facets,
|
|
60141
60289
|
groups: filter.groups.map((g) => ({
|
|
60142
60290
|
...g,
|
|
60143
|
-
label: g.id
|
|
60291
|
+
label: groupLabel(g.id, t),
|
|
60292
|
+
display: "menu",
|
|
60293
|
+
facetLabel: (value) => facetCaption(g.id, value, t)
|
|
60144
60294
|
})),
|
|
60145
60295
|
labels: {
|
|
60146
|
-
searchPlaceholder: t("uiLibrary.
|
|
60147
|
-
searchLabel: t("uiLibrary.
|
|
60148
|
-
facetsLabel: t("uiLibrary.
|
|
60149
|
-
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")
|
|
60150
60300
|
},
|
|
60151
60301
|
onSearch: filter.setSearch,
|
|
60152
60302
|
onToggleFacet: filter.toggleFacet,
|
|
@@ -60156,15 +60306,20 @@ function StorageRecordsHub() {
|
|
|
60156
60306
|
/* @__PURE__ */ jsx(DataTable, {
|
|
60157
60307
|
columns,
|
|
60158
60308
|
rows: filter.rows,
|
|
60159
|
-
rowKey: (
|
|
60309
|
+
rowKey: (r) => dataRecordKey(r.kind),
|
|
60160
60310
|
maxBodyHeight: TABLE_SCROLL_MAX_H,
|
|
60161
60311
|
defaultSort: {
|
|
60162
60312
|
columnKey: "kind",
|
|
60163
60313
|
dir: "asc"
|
|
60164
60314
|
},
|
|
60165
|
-
emptyMessage: t("uiLibrary.
|
|
60315
|
+
emptyMessage: t("uiLibrary.dataRecords.noMatch", "No kinds match the filter")
|
|
60166
60316
|
}),
|
|
60167
|
-
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
|
|
60168
60323
|
]
|
|
60169
60324
|
});
|
|
60170
60325
|
}
|
|
@@ -64449,4 +64604,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-30H29vN4.js").t
|
|
|
64449
64604
|
/** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
|
|
64450
64605
|
var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-C9wfHkiB.js").then((m) => ({ default: m.PrivacyMaskSettings })));
|
|
64451
64606
|
//#endregion
|
|
64452
|
-
export { ShieldOff as $, Clock as $n, LoaderCircle as $t, TrainFront as A, AddProviderEntryDialog, AddonGlobalSettingsForm, AdminLinkQuickAction, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, Feather as An, AppShell, Bell as Ar, ArcKnob, Pause as At, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, SunMedium as B, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, BackToStepsButton, Badge, BatteryBadge, DoorClosed as Bn, BottomSheet, ArrowUp as Br, Breadcrumb, BrightnessPanel, MonitorPlay as Bt, Button, ButtonControl, ButtonHeroCard, Undo2 as C, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, Funnel as Cn, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigNotificationTargetMultiSelectFieldView, ConfigNotificationTargetSelectFieldView, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, Bug as Cr, Play as Ct, CustomFieldRenderersProvider, TrendingDown as D, DEFAULT_COLOR, DEFAULT_PAGINATION_LABELS, DEVICE_COLUMNS, DEVICE_EXPORT_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_PICKER_GROUP_STORAGE_KEY, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DataTable, DataTableFilterBar, DataTablePager, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceExportSetup, DeviceFilterBar, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DevicePicker, DeviceQuickDetailProvider, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, DevicesFailedLine, DevicesLoadingLine, DevicesWidenWarning, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, FlashlightOff as Dn, DoorbellRecentPanel, Blinds as Dr, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, Phone as Dt, DummyHeroCard, DummyInline, TriangleAlert as E, EMPTY_DATA_TABLE_FILTER, EVENT_KIND_ICONS, EmptyState, Flashlight as En, EndpointResultsCard, EndpointTestCard, EntryJsonSchemaForm, Bone as Er, ErrorBox, Pin as Et, EventKindGlyph, EventStream, ExtensionsPanel, Thermometer as F, FAST_ICON_GLYPHS, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, EllipsisVertical as Fn, FormField$1 as FormField, BatteryLow as Fr, Move as Ft, Snowflake as G, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GateBadge, GateControl, Copy as Gn, ArrowDownToLine as Gr, GripTrack, GroupedModelSelector, Menu as Gt, Square as H, HOST_WIDGETS, HUB_SESSION_RUN_MS, HlsVideo, Database as Hn, HoverZoomImage, ArrowRight as Hr, Minimize2 as Ht, HubSessionTestCard, HumidifierHeroCard, HumidifierInlineControl, Target as I, INPUT_COMPACT, INPUT_SHELL, IconAction, IconButton, IconPicker, ImageHeroCard, ImageInlineControl, ImageSelector, Droplets as In, InferenceConfigSelector, Input, BatteryFull as Ir, MoveVertical as It, ItemFormDialog, SkipForward as J, CloudSun as Jn, Activity as Jr, MapPin as Jt, Smartphone as K, KebabMenu, KeyValueList, Cog as Kn, AlarmSmoke as Kr, Megaphone as Kt, Tag as L, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LayeredSettingsForm, LightHeroCard, LightInlineControl, Droplet as Ln, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, Bath as Lr, MoveHorizontal as Lt, ToggleRight as M, MEDIA_GRID, MODE_COLOR, MaskShapeCanvas, MediaCard, MediaGrid, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, Eye as Mn, MobileDrawer, ModelPicker, MotionZonesSettings, Battery as Mr, Network as Mt, ToggleLeft as N, NAVIGATION_DRIVE_INTERVAL_MS, NODE_COLOR_IDS, NatResultCard, NavigationPanel, NetworkLinkBadge, EyeOff as Nn, NodeMultiSelectField, NodePicker, NodeSelectField, NotificationTargetSelectField, NotificationTargetsField, BatteryWarning as Nr, Navigation as Nt, TrendingUp as O, OPTION_SELECT_SEARCH_MIN_OPTIONS, OfflineBadge, Flame as On, OptionSelect, Bird as Or, Pencil as Ot, Timer as P, PAGE_SIZE_ALL, PHASE_CONFIG, PICKER_CHIP_LIMIT, PICKER_DEFAULT_GROUP_BY, PICKER_GROUP_BY_MODES, PICKER_GROUP_COLLAPSE_AT, PICKER_NONE_KEY, PICKER_NOUN_PLURAL, PICKER_NO_FILTERS, PICKER_PAGE_SIZE, PICKER_SEARCH_DEBOUNCE_MS, PICKER_WINDOW, PRIORITY, PTZOverlay, PageHeader, PageShell, PageSizeSelect, Pagination, PasswordInput, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PlaceholderChipField, PlayerOverlaysProvider, ExternalLink as Pn, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, BatteryMedium as Pr, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, ProviderEntryPills, Music as Pt, PtzPanel, Shield as Q, CloudFog as Qn, QrCode, LocateFixed as Qt, Sunrise as R, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RECORD_ENTRY_KIND_PARAM, RECORD_ENTRY_OWNER_PARAM, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, ROOT_DETECTOR_STEP_ID, RadialGauge, RecordEntriesHub, RecordEntriesPanel, RecordedPlaybackProvider, RecordingPanel, ResponseLog, RetrainReviewBadge, Download as Rn, RoleDisplayDefaultsFromServer, RoleDisplayDefaultsProvider, RoleNodePill, RootModelSourceControl, RootSuppliedModelNote, Ban as Rr, MousePointerClick as Rt, RunReport, Unlink2 as S, SCENE_CAPTURE_VARIANTS, SECRET_MASK_PLACEHOLDER, SECRET_REVEAL_MS, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SETTING_ROW, SETTING_ROW_LABEL, SETTING_ROW_STACK_BREAKPOINT, SETTING_ROW_VALUE, SETTING_ROW_VALUE_TEXT, SNAPSHOT_MEDIA_PATH, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, STEP_DOCK_WIDTH_PX, STORAGE_RECORDS_KIND_PARAM, STORAGE_RECORDS_OWNER_PARAM, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, SecretFieldControl, SecretRevealProvider, SectionCard, SectionToolbar, SectionedPage, SegmentedChoice, Select, SelectedChip, SemanticBadge, SendFrameToTrainingButton, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideToggle, Gamepad2 as Sn, SnapshotButton, SortHeaderButton, Bus as Sr, Plus as St, StableTabPanel, StatCard, StateValuesStream, StatusBadge, StepDetailDock, StepInspectorPanel, StepModelRow, StepTimings, Stepper, StorageRecordsHub, StorageRecordsPanel, StreamBrokerSelector, StreamDebugOverlay, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, Truck as T, TABLE_SCROLL_MAX_H, TEXT_FIELD_LABEL, TEXT_HINT, TEXT_METRIC, TEXT_SECTION_LABEL, TEXT_VALUE, TIMEZONES, Tabs, TabsContent, TabsList, TabsTrigger, TapToggle, ThemeProvider, ThermostatHeroCard, ThermostatInlineControl, TimezoneSelector, FlaskConical as Tn, Tooltip, TooltipContent, TooltipTrigger, Bot as Tr, TrainingBaseModelPicker, TrainingCollectionPicker, Pipette as Tt, Sprout as U, UiTextProvider, UiTrans, Crosshair as Un, UnitPicker, ArrowLeft as Ur, Mic as Ut, Star as V, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, Dog as Vn, VodPlaybackProvider, ArrowUpToLine as Vr, Minus as Vt, Sparkles as W, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, Cpu as Wn, ArrowDown as Wr, MessageSquare as Wt, Siren as X, CloudRain as Xn, Lock as Xt, SkipBack as Y, CloudSnow as Yn, Mail as Yt, Ship as Z, CloudLightning as Zn, ZoneEditingProvider, LockOpen as Zt, UtensilsCrossed as _, Hammer as _n, Cat as _r, QrCode$1 as _t, Wrench as a, acceleratorLabel, acceleratorShortLabel, agentColumnKey, allDeviceTypeFilterOptions, LayoutGrid as an, applyFleetQueryDefaults, applyPickerFilters, CirclePause as ar, ariaSortForColumn, assignNodeColorId, Search as at, UserCheck as b, badgeFor, bindsToModel, GraduationCap as bn, Camera as br, PowerOff as bt, buildColorByNodeId, buildPeerConnectionConfig, buildStepTreeFromSchema, Wifi as c, catalogHasDraft, childEntityId, childListName, chipOverflow, classifyAddressScope, classifyCapability, classifySessionVerdict, clearPickerGroup, clusterRootModelIds, cn, colorIdForNode, columnsForContext, compareSrflxMappings, computePageButtons, containerChildToRef, countableDevices, coverHighlight, coverageLine, CircleCheckBig as cr, createAddonI18n, createSharedContext, createTheme, Save as ct, currentAddonLanguage, cursorFractionFor, WifiLow as d, darkColors, dataTableFacetGroups, dataTableFacets, defaultOfField, defaultSelectClusterRoots, defaultSingleClusterRoot, defaultTheme, defaultUiText, deriveDeviceKind, deriveWebrtcDebugStats, describeDeviceSelector, deviceIntegrationResolver, deviceListStateOf, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ImageOff as dn, dockBox, ChevronsDownUp as dr, draftFromQuery, RotateCw as dt, effectivePageSize, emptyDevicesWidens, emptySessionRun, List as en, ensureMfHostInit, Clapperboard as er, ShieldCheck as et, eventKindLabel, WifiHigh as f, filterDataTableRows, filterDeviceOptions, filterOptions as filterOptionSelectOptions, filterPickerDevices, finalizeSessionRun, findTimezone, flattenPickerGrouping, flattenPickerRows, fleetViewOf, House as fn, formatControlDateTime, formatLastSeen, formatNumeric, formatSettingValue, ChevronUp as fr, freezeVerdict, RotateCcw as ft, fuzzyMatch, Vibrate as g, getClassColor, getPhaseVisual, Hand as gn, Check as gr, groupAgentColumns, groupChildrenByLayout, groupPickerDevices, groupPickerDevicesBy, Radar as gt, Volume2 as h, hardwareLabel, HardDrive as hn, ChevronDown as hr, RadioTower as ht, hubOrigin, hubPath, hubUrl, hubWsUrl, humanDuration, humidifierTint, X as i, iconGlyphsFailed, iconGlyphsLoaded, Leaf as in, initialScrubState, insertAtSelection, CirclePlus as ir, isAbsentProvider, isDataTableFilterActive, isFieldVisible, isGroupExpanded, isKeychainFieldValue, isRedactedSecret, isSecretField, isValueField, Server as it, Tractor as j, Fan as jn, BellRing as jr, Package as jt, Trash2 as k, Film as kn, Bike as kr, PawPrint as kt, WifiZero as l, lawnMowerActivityMeta, lightColors, Inbox as ln, loadIconGlyphs, loadRemoteBundle, CircleAlert as lr, Sailboat as lt, lucideExportName, VolumeX as m, makeScrubBridge, mapRootDetectorPlacements, mergeSecretForSubmit, metadataEntries, metadataString, mirror, Hash as mn, mountAddonPage, mountPath, ChevronLeft as mr, Radio as mt, ZoomIn as n, nextGridPosition, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, Link2 as nn, nodeColorClass, nodeSoftBgClass, nodeTextColorClass, normalizeForSearch, normalizeLanguage, CircleStop as nr, Share2 as nt, Workflow as o, offListSelections, Laugh as on, openTopLayer, optionSearchText as optionSelectSearchText, CircleDot as or, orphanDeviceLabel, ScrollText as ot, overrideEntityIdFromLink, Waves as p, pageRows, pageSizeLabel, paginateRows, parentDetailOf, parseIceCandidate, parsePickerGroupBy, parseRecordedServerMessage, partitionSelected as partitionOptionSelectSelected, partitionSuggested, pickerFacetFilterShown, pickerFacetKey, pickerFacetOptions, pickerFiltersActive, pickerGroupKey, pickerHiddenSelectedCount, pickerLocationKey, pickerQueryTokens, pickerRowFacts, pickerSearchText, pickerZoneFilterSuspended, pinnedStreamChoices, placePopover, Heater as pn, ChevronRight as pr, providerIcons, RefreshCw as pt, SlidersHorizontal as q, Cloud as qn, AirVent as qr, Maximize2 as qt, Zap as r, readStoredGroupBy, reduceSessionRun, registerAddonBundle, renderMarkup, renderTagged, resetHubMountForTests, resetPickerFilters, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDeviceIntegration, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolveSearchable as resolveOptionSelectSearchable, resolveParentNames, resolvePrimaryChild, resolveSelectedDevices, resolveSensorDisplay, resolveStepDefaultModel, retrainReviewBadgeLook, Lightbulb as rn, roiTooLarge, rootSourceState, routerBasename, CircleQuestionMark as rr, Settings as rt, Wind as s, sameLocationSuggestions, scrubReducer, searchSteps, secretDisplayValue, secretSubmitValue, selectPickerGroup, selectedDeviceOptions, serializeRecordedCommand, settingsModelIdFor, shouldCommit, shouldEmit, shouldShowAddNewFooter, shouldShowUseQueryRow, shouldUseSingleNode, showsNoCamerasHint, Info as sn, sortRows, sortRowsByColumn, CircleCheck as sr, Scan as st, statusIcons, statusLine, stepFieldDomId, stepHasModelForFormat, stepLocalFields, stepModelOptions, stripParentNamePrefix, summarizeHubCandidates, ZoomOut as t, tabForSelector, tankAlert, themeToCss, themeToRootCss, ListChecks as tn, toStationaryOverlayBox, toggleDataTableFacet, toggleDataTableGroupFacet, togglePickerDevice, togglePickerKey, CircleX as tr, trainingRefusalText, translateAddonKey, trpc, ShieldAlert as tt, typeLabel, WifiOff as u, Image as un, ChevronsUpDown as ur, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonT, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListInstallations, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlert, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerAttachDevice, useAudioAnalyzerClassify, useAudioAnalyzerDetachDevice, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupCancel, useBackupCheckBackupKey, useBackupDelete, useBackupDeleteSchedule, useBackupDisableEncryption, useBackupGetEncryption, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListAvailableDatabases, useBackupListDestinations, useBackupListLocations, useBackupListRuns, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupSetupEncryption, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCalendarsGetPreferences, useCalendarsListCalendars, useCalendarsListEvents, useCalendarsSetCalendarPreference, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraGridLayoutApplyDeviceSettingsPatch, useCameraGridLayoutGetDeviceLiveContribution, useCameraGridLayoutGetDeviceSettingsContribution, useCameraGridLayoutGetLayout, useCameraGridLayoutSaveLayout, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCapabilityPresence, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksCreateComposition, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetBlockSettings, useCoreBlocksGetComposition, useCoreBlocksGetCustomization, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksListComposableCaps, useCoreBlocksListCompositions, useCoreBlocksMigrateRawSecrets, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoreBlocksUpdateBlockSettings, useCoreBlocksUpdateComposition, useCoreBlocksValidateComposition, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDataTableFilter, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderGetInfo, useDecoderReprobeHwaccel, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdminLink, useDeviceAdminLinkGetAdminLink, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceCredentialsDeleteDeviceCredential, useDeviceCredentialsGetDeviceCaStatus, useDeviceCredentialsGetDeviceCertificateSettings, useDeviceCredentialsListDeviceCredentials, useDeviceCredentialsRenameDeviceCredential, useDeviceCredentialsRevokeDeviceCredential, useDeviceCredentialsSetDeviceCertificateSettings, useDeviceCredentialsStartEnrollment, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceExtensionListCandidates, useDeviceExtensionListSlots, useDeviceExtensionListSources, useDeviceExtensionSetSlot, useDeviceHistoryDeclareSeries, useDeviceHistoryGetDeviceEnabled, useDeviceHistoryGetStatus, useDeviceHistoryListNodeSeries, useDeviceHistoryListSeries, useDeviceHistoryQuery, useDeviceHistoryQueryNode, useDeviceHistoryRecord, useDeviceHistoryRecordBuckets, useDeviceHistorySetDeviceEnabled, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyInitialMeta, useDeviceManagerCleanupDeletedDevicesData, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerGetWrapperActivation, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListDeletedSince, useDeviceManagerListDeviceIdsByCaps, useDeviceManagerListLocationDescriptions, useDeviceManagerListLocationIcons, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListSiteZones, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRemoveSiteZone, useDeviceManagerRenameLocation, useDeviceManagerRenameSiteZone, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetLocationDescription, useDeviceManagerSetLocationIcon, useDeviceManagerSetLocationZone, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetSiteZone, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceNetworkLink, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderReloadDevice, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceQuickDetailOpen, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateClaimFields, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetNativeCapSlice, useDeviceStateGetSnapshot, useDeviceStateListClaims, useDeviceStatePatchOwnedFields, useDeviceStateReleaseClaim, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDishwasherGetStatus, useDishwasherPause, useDishwasherSetChildLock, useDishwasherSetExtraDry, useDishwasherSetHalfLoad, useDishwasherSetHygienePlus, useDishwasherSetIntensiveZone, useDishwasherSetOption, useDishwasherSetPower, useDishwasherSetProgram, useDishwasherSetVarioSpeedPlus, useDishwasherStart, useDishwasherStop, useDisplayIconResolver, useDoorbellEvents, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryAuditIdentitySamples, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHeatingValveGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useIconGlyphsVersion, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useItemFormUrl, useKeychainAdminAcknowledgeReset, useKeychainAdminDeleteOrphans, useKeychainAdminDownloadRecoveryKey, useKeychainAdminImportSecret, useKeychainAdminListAudit, useKeychainAdminListSecrets, useKeychainAdminPurgeRetiredKeys, useKeychainAdminResetKeychain, useKeychainAdminResetReport, useKeychainAdminReveal, useKeychainAdminRotateMasterKey, useKeychainAdminSetSystemSecret, useKeychainAdminStatus, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmMigrateRawSecrets, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkAddCustomAddress, useLocalNetworkDownloadCa, useLocalNetworkGetAddresses, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetHubAddresses, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkRemoveCustomAddress, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAddressRole, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLocalNetworkUseStoredUploadedCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, useMetricsProviderGetLoadSeries, useMetricsProviderGetProcessStats, useMetricsProviderListAddonInstances, useMetricsProviderListNodeProcesses, useMotionDetectionAnalyze, useMotionDetectionApplyDeviceSettingsPatch, useMotionDetectionGetDeviceLiveContribution, useMotionDetectionGetDeviceSettingsContribution, useMotionDetectionRemoveCamera, useMotionDetectionReset, useMotionGetStatus, useMotionIsDetected, useMotionTriggerGetStatus, useMotionTriggerSetMotionTrigger, useMotionZonesGetOptions, useMotionZonesGetStatus, useMotionZonesSetZone, useMqttBrokerAddBroker, useMqttBrokerGetBrokerConfig, useMqttBrokerGetStatus, useMqttBrokerListBrokers, useMqttBrokerRemoveBroker, useMqttBrokerStartEmbeddedBroker, useMqttBrokerStopEmbeddedBroker, useMqttBrokerTestConnection, useNativeObjectDetectionGetOptions, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNativeObjectDetectionSetSettings, useNavigation, useNavigationGetFeatures, useNavigationGetStatus, useNavigationGoToPoint, useNavigationListActions, useNavigationMove, useNavigationPlaySound, useNavigationRunAction, useNavigationSetLightLevel, useNavigationSetLightMode, useNavigationSetLightOn, useNavigationStop, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkLinkGetStatus, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesDirectory, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputGetTarget, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputProbeTargetConfig, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesActivateAlarmProfile, useNotificationRulesCancelSnooze, useNotificationRulesCreateAlarmProfile, useNotificationRulesCreateRule, useNotificationRulesCreateSequence, useNotificationRulesCreateSnooze, useNotificationRulesDeleteAlarmProfile, useNotificationRulesDeleteRule, useNotificationRulesDeleteSequence, useNotificationRulesGetAlarmConfig, useNotificationRulesGetAlarmSensors, useNotificationRulesGetClipRetentionAsks, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesGetRuleLastRuns, useNotificationRulesGetSequence, useNotificationRulesGetTemplateCatalog, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSequences, useNotificationRulesListSnoozes, useNotificationRulesPreviewStateSummary, useNotificationRulesPreviewTemplate, useNotificationRulesRenameAlarmProfile, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotificationRulesUpdateSequence, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOidcConnectionsConnectionFormSchema, useOidcConnectionsCreateConnection, useOidcConnectionsDeleteConnection, useOidcConnectionsListConnections, useOidcConnectionsUpdateConnection, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerDeleteTemplate, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerListTemplates, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdManagerSetSlotCameraEnabled, useOsdManagerUpsertTemplate, useOsdSetOverlay, usePTZ, usePersistedPageSize, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePickerSiteZones, usePipelineAnalyticsAddRetrainFrameFromRecording, usePipelineAnalyticsAddRetrainFramesToCollection, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsBackfillRetrainOrigins, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTrackRelation, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsCreateRetrainCollection, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteRetrainCollection, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainCorpusKpi, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListArchivedDebugNotes, usePipelineAnalyticsListBirthDecisions, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainAssistProfiles, usePipelineAnalyticsListRetrainCollectionFrames, usePipelineAnalyticsListRetrainCollections, usePipelineAnalyticsListRetrainCorpusPage, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTrackRelations, usePipelineAnalyticsListTracks, usePipelineAnalyticsOfferRetrainArchive, usePipelineAnalyticsOwnersWithMedia, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsProposeRetrainAnnotationsWithLlm, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsReadLongTermSeries, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRemoveRetrainFrameFromCollection, usePipelineAnalyticsRenameRetrainCollection, usePipelineAnalyticsResolveRetrainTrainingCorpus, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetRetrainFrameComplete, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsSetTrackPurity, usePipelineAnalyticsSetTrackRelation, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineAnalyticsWriteRetrainArchive, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorClearModelBoundDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorValidatePipeline, usePipelineOrchestratorAbortNodeBenchmark, usePipelineOrchestratorApplyAutoTune, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteNodeBenchmarkResult, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraDetectionSource, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetClusterModelChoice, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetEffectiveShares, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeBenchmarkCandidates, usePipelineOrchestratorGetNodeBenchmarkPreflight, usePipelineOrchestratorGetNodeBenchmarkStatus, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetPlacementStats, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListNodeBenchmarkResults, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorPlanAutoTune, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorRequestOccupancyLook, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDecodeLimits, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraDetectionSource, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraSensors, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepSettings, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetLoadBalancingShares, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorSetShareSource, usePipelineOrchestratorStartNodeBenchmark, usePipelineOrchestratorSuggestShares, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineRunnerAbortNodeBench, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerGetNodeBenchStatus, usePipelineRunnerGetParkedTrackFrame, usePipelineRunnerParkTrackFrame, usePipelineRunnerReleaseParkedTrackFrames, usePipelineRunnerReportMotion, usePipelineRunnerRequestOccupancyBurst, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, usePipelineRunnerStartNodeBench, usePlateGalleryAssignPlate, usePlateGalleryAssignPlates, usePlateGalleryCorrectPlateText, usePlateGalleryCreateVehicle, usePlateGalleryDeletePlate, usePlateGalleryDeleteVehicle, usePlateGalleryGetPlateByTrack, usePlateGalleryGetPlateMedia, usePlateGalleryListPlates, usePlateGalleryListVehicleSamples, usePlateGalleryListVehicles, usePlateGalleryRemoveVehicleSample, usePlateGalleryRenameVehicle, usePlateGallerySearchPlates, usePlateGallerySuggestPlateClusters, usePlateGalleryUnassignPlate, usePlateGalleryUnassignPlates, usePlayerOverlayLayer, usePlayerOverlayLayers, usePlayerToolbarButton, usePlayerToolbarButtons, usePowerMeterGetStatus, usePresenceGetStatus, usePressureSensorGetStatus, usePrivacyMaskGetOptions, usePrivacyMaskGetStatus, usePrivacyMaskSetAudioEnabled, usePrivacyMaskSetMask, usePrompt, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzCaptureHomeHere, usePtzContinuousMove, usePtzDeletePreset, usePtzGetHomePreset, usePtzGetHomeReturn, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzSetHomePreset, usePtzSetHomeReturn, usePtzStop, useRebootReboot, useRecordEntriesDeleteEntry, useRecordEntriesListEntries, useRecordEntriesListEntryKinds, useRecordEntriesPutEntry, useRecordedPlayback, useRecordingArchiveApplyDeviceSettingsPatch, useRecordingArchiveCancelRelocateJob, useRecordingArchiveCancelStorageMigrationMove, useRecordingArchiveDeleteFootprint, useRecordingArchiveGetAvailabilityBatch, useRecordingArchiveGetDaysWithRecordingsBatch, useRecordingArchiveGetDeviceConfig, useRecordingArchiveGetDeviceLiveContribution, useRecordingArchiveGetDeviceSettingsContribution, useRecordingArchiveGetPlacement, useRecordingArchiveGetRelocateResidue, useRecordingArchiveGetStatus, useRecordingArchiveGetStorageMigrationMoveStatus, useRecordingArchiveGetStorageUsage, useRecordingArchiveListOpsLog, useRecordingArchiveListRelocateJobs, useRecordingArchiveLocateSegment, useRecordingArchivePauseForStorageMigration, useRecordingArchivePlanStorageRebalance, useRecordingArchivePruneFootage, useRecordingArchiveReadGopBytes, useRecordingArchiveReadSegmentBytes, useRecordingArchiveReadWindowBytes, useRecordingArchiveReconcileLedgerAgainstDisk, useRecordingArchiveRefreshStorageLocationsForMigration, useRecordingArchiveRelocateFootage, useRecordingArchiveRenderClip, useRecordingArchiveRenderGif, useRecordingArchiveRescanStorage, useRecordingArchiveResumeForStorageMigration, useRecordingArchiveSetDeviceConfig, useRecordingArchiveSetDevicePlacement, useRecordingArchiveStartStorageMigrationMove, useRecordingArchiveStartStorageRebalance, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetPlayback, useRecordingGetPlaybackOptions, useRecordingListSources, useRecordingOnboardGetOptions, useRecordingOnboardGetStatus, useRecordingOnboardSetSettings, useRecordingSignalGetStatus, useRemoteComponent, useRoleDisplayDefaults, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorListScenesBatch, useSceneMonitorRecheckNow, useSceneMonitorResetScene, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreAggregate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreDeleteWhere, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreInsertMany, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreTransact, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSettingsStoreUpsert, useSettingsStoreUpsertMany, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStationaryOverlay, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageList, useStorageListDrainProgress, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStoredGroupBy, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerForgetDeviceHardware, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetLiveViewerCounts, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerReportStreamSignal, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useStreamSignalsListSignals, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemDetectSiteLocation, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetFailureContributions, useSystemGetLoadContributions, useSystemGetLoggingSettings, useSystemGetRequestCensus, useSystemGetRetentionConfig, useSystemGetSiteLocation, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetLoggingSettings, useSystemSetRetentionConfig, useSystemSetSiteLocation, useTamperGetStatus, useTemperatureSensorGetStatus, useTerminalSessionAdoptLegacyMonitor, useTerminalSessionClose, useTerminalSessionCreateInstance, useTerminalSessionDeleteInstance, useTerminalSessionListInstances, useTerminalSessionListLegacyCameras, useTerminalSessionListProfiles, useTerminalSessionListSessions, useTerminalSessionOpenSession, useTerminalSessionPullOutput, useTerminalSessionResize, useTerminalSessionSetInstanceEnabled, useTerminalSessionUpdateInstance, useTerminalSessionWriteInput, useThemeMode, useToastOnToast, useTrainingCanaryResult, useTrainingCancelJob, useTrainingDiscardResult, useTrainingGetJob, useTrainingGetJobResult, useTrainingListBaseModels, useTrainingListJobs, useTrainingPlanJob, useTrainingRegisterResult, useTrainingRollbackCanary, useTrainingStartJob, useTrainingStartJobBatch, useTurnProviderGetTurnServers, useUiText, useUpdateGetStatus, useUpdateInstallUpdate, useUrlQueryParam, useUserManagementConfirmTotp, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementFindUserByExternalIdentity, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListExternalIdentities, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementMigrateRawSecrets, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUnlinkExternalIdentity, useUserManagementUpdateUser, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsDialClipStream, useVideoclipsGetClipPlayback, useVideoclipsGetPlaybackOptions, useVideoclipsListClips, useVideoclipsListSources, useVideoclipsOfferClipBytes, useVideoclipsReadClipBytes, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionApplyDownlinkProbe, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionDebug, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, Route as ut, Users as v, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, GripHorizontal as vn, Cast as vr, Puzzle as vt, Type as w, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint, withResolvedParentDetail, withUseRootModel, Footprints as wn, Box as wr, writeStoredGroupBy, Plane as wt, Upload as x, Gauge as xn, Cable as xr, Plug as xt, User as y, Grid2x2 as yn, Car as yr, Power as yt, Sun as z, DoorOpen as zn, Baby as zr, Moon as zt };
|
|
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 };
|