@camstack/ui-library 1.2.102 → 1.2.105

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.
@@ -1,7 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
3
3
  import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
4
- import { DeviceListView } from './url-state';
5
4
  import { TableContext } from './columns';
6
5
  import { MultiSelectOption } from './multi-select';
7
6
  export interface DeviceListAddonOption {
@@ -20,7 +19,6 @@ export interface DeviceListDeviceProps {
20
19
  readonly context?: TableContext;
21
20
  readonly devices: readonly DeviceItemDevice[];
22
21
  readonly trpc: UseDeviceProxyTrpc;
23
- readonly defaultView?: DeviceListView;
24
22
  /**
25
23
  * Integration filter options + an optional TYPE-filter override.
26
24
  *
@@ -1,5 +1,4 @@
1
1
  import { ReactNode } from 'react';
2
- import { DeviceListView } from './url-state';
3
2
  import { MultiSelectOption } from './multi-select';
4
3
  export interface FilterChipsAddonOption {
5
4
  readonly id: string;
@@ -7,10 +6,6 @@ export interface FilterChipsAddonOption {
7
6
  readonly icon?: ReactNode;
8
7
  }
9
8
  export interface FilterChipsProps {
10
- readonly view?: DeviceListView;
11
- readonly onViewChange?: (view: DeviceListView) => void;
12
- /** Hide the cards/table view toggle (generic lists have a single view). */
13
- readonly hideView?: boolean;
14
9
  /**
15
10
  * Ready-made options for the shared multi-select type filter. Built once by
16
11
  * the caller from the exhaustive device-type meta (`allDeviceTypeFilterOptions`)
@@ -26,5 +21,13 @@ export interface FilterChipsProps {
26
21
  readonly onAddonsChange: (addons: readonly string[]) => void;
27
22
  /** When true, the addon group is hidden (used by Integrations expand-row inner DeviceList). */
28
23
  readonly hideAddons?: boolean;
24
+ /**
25
+ * Free-text search, read ONLY to decide whether any filter is set. The input
26
+ * itself lives outside this component; a Clear that ignored it would leave
27
+ * the list filtered after the operator was told it had been cleared.
28
+ */
29
+ readonly query?: string;
30
+ /** Clear every filter at once. Omit to hide the affordance entirely. */
31
+ readonly onClearFilters?: () => void;
29
32
  }
30
- export declare function FilterChips({ view, onViewChange, hideView, typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons, }: FilterChipsProps): ReactNode;
33
+ export declare function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons, query, onClearFilters, }: FilterChipsProps): ReactNode;
@@ -1,9 +1,29 @@
1
1
  import { ReactNode } from 'react';
2
- import { DeviceItemDevice } from '../device-item/helpers';
3
- import { CardsLayoutProps } from './cards-layout';
2
+ import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
3
+ import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
4
4
  import { DeviceColumnId } from './columns';
5
5
  import { DeviceSort, SortableColumnId } from './sort';
6
- interface TableLayoutProps extends CardsLayoutProps {
6
+ /**
7
+ * The row-layout contract. It used to live in `cards-layout.tsx` and be
8
+ * EXTENDED here, because two layouts shared it. The cards layout is gone — the
9
+ * device list is a table, always — so the contract lives with its only
10
+ * implementation rather than in a file that exists to be inherited from.
11
+ */
12
+ interface DeviceRowsProps {
13
+ readonly rows: readonly DeviceItemDevice[];
14
+ readonly accessoriesByParent: ReadonlyMap<number, readonly DeviceItemDevice[]>;
15
+ readonly trpc: UseDeviceProxyTrpc;
16
+ readonly resolveIntegrationIcon: ((addonId: string) => ReactNode | null) | null;
17
+ readonly resolveParent: ((parentId: number) => DeviceItemParent | null) | null;
18
+ readonly onNavigate: ((deviceId: number) => void) | null;
19
+ readonly renderRowAction: ((device: DeviceItemDevice) => ReactNode) | null;
20
+ readonly selectable: boolean;
21
+ /** Batch mode active — a row click toggles selection instead of navigating. */
22
+ readonly rowClickSelects: boolean;
23
+ readonly activeSelected: ReadonlySet<number>;
24
+ readonly onToggleSelection: (id: number) => void;
25
+ }
26
+ interface TableLayoutProps extends DeviceRowsProps {
7
27
  /** Built-in confirmed delete (table feature). Null ⇒ no trash. Only
8
28
  * top-level rows carry it (accessory sub-rows are excluded — same gate
9
29
  * as `renderRowAction`). */
@@ -1,6 +1,17 @@
1
- export type DeviceListView = 'cards' | 'table';
1
+ /**
2
+ * There is ONE device list rendering: the table.
3
+ *
4
+ * A cards view existed alongside it and the operator chose between them. It is
5
+ * gone — every surface is a table now, so `view` is no longer part of this
6
+ * state and no longer written to the URL or to localStorage. A legacy
7
+ * `?view=cards` link still opens: the parameter is simply not read, and the
8
+ * next write drops it from the URL.
9
+ *
10
+ * The DataTable's own phone rendering is a different thing entirely and is
11
+ * untouched (`data-table-layout.ts`): that is how ONE table degrades on a
12
+ * narrow screen, not a view the operator picks.
13
+ */
2
14
  export interface DeviceListUrlState {
3
- readonly view: DeviceListView;
4
15
  readonly page: number;
5
16
  /**
6
17
  * Selected integration ids. Multi-select: empty array = no integration
@@ -18,13 +29,11 @@ export interface DeviceListUrlState {
18
29
  }
19
30
  export interface UseDeviceListUrlStateOptions {
20
31
  readonly scope: 'root' | 'nested';
21
- readonly defaultView: DeviceListView;
22
32
  /** LocalStorage key prefix, e.g. `'devices'` → `camstack:devices:lastFilters`. */
23
33
  readonly lsKey: string;
24
34
  }
25
35
  export interface UseDeviceListUrlStateResult {
26
36
  readonly state: DeviceListUrlState;
27
- readonly setView: (view: DeviceListView) => void;
28
37
  readonly setPage: (page: number) => void;
29
38
  readonly setAddons: (addons: readonly string[]) => void;
30
39
  readonly setTypes: (types: readonly string[]) => void;
@@ -405,6 +405,8 @@ export declare const useDeviceExportGetDeviceLiveContribution: typeof trpc.devic
405
405
  export declare const useDeviceExportApplyDeviceSettingsPatch: typeof trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
406
406
  /** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
407
407
  export declare const useDeviceManagerAllocateDeviceId: typeof trpc.deviceManager.allocateDeviceId.useMutation;
408
+ /** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
409
+ export declare const useDeviceManagerMigrateDevice: typeof trpc.deviceManager.migrateDevice.useMutation;
408
410
  /** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
409
411
  export declare const useDeviceManagerRegisterDevice: typeof trpc.deviceManager.registerDevice.useMutation;
410
412
  /** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
@@ -881,8 +883,6 @@ export declare const useMetricsProviderGetAddonStats: typeof trpc.metricsProvide
881
883
  export declare const useMetricsProviderListNodeProcesses: typeof trpc.metricsProvider.listNodeProcesses.useQuery;
882
884
  /** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
883
885
  export declare const useMetricsProviderGetLoadSeries: typeof trpc.metricsProvider.getLoadSeries.useQuery;
884
- /** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
885
- export declare const useMetricsProviderDumpHeapSnapshot: typeof trpc.metricsProvider.dumpHeapSnapshot.useMutation;
886
886
  /** Generated alias around `trpc.motion.isDetected.useQuery`. */
887
887
  export declare const useMotionIsDetected: typeof trpc.motion.isDetected.useQuery;
888
888
  /** Generated alias around `trpc.motion.getStatus.useQuery`. */
package/dist/index.cjs CHANGED
@@ -2253,46 +2253,6 @@ var Laugh = createLucideIcon("laugh", [
2253
2253
  * This source code is licensed under the ISC license.
2254
2254
  * See the LICENSE file in the root directory of this source tree.
2255
2255
  */
2256
- var LayoutGrid = createLucideIcon("layout-grid", [
2257
- ["rect", {
2258
- width: "7",
2259
- height: "7",
2260
- x: "3",
2261
- y: "3",
2262
- rx: "1",
2263
- key: "1g98yp"
2264
- }],
2265
- ["rect", {
2266
- width: "7",
2267
- height: "7",
2268
- x: "14",
2269
- y: "3",
2270
- rx: "1",
2271
- key: "6d4xhi"
2272
- }],
2273
- ["rect", {
2274
- width: "7",
2275
- height: "7",
2276
- x: "14",
2277
- y: "14",
2278
- rx: "1",
2279
- key: "nxv5o0"
2280
- }],
2281
- ["rect", {
2282
- width: "7",
2283
- height: "7",
2284
- x: "3",
2285
- y: "14",
2286
- rx: "1",
2287
- key: "1bb6yr"
2288
- }]
2289
- ]);
2290
- /**
2291
- * @license lucide-react v0.576.0 - ISC
2292
- *
2293
- * This source code is licensed under the ISC license.
2294
- * See the LICENSE file in the root directory of this source tree.
2295
- */
2296
2256
  var Leaf = createLucideIcon("leaf", [["path", {
2297
2257
  d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
2298
2258
  key: "nnexq3"
@@ -3956,16 +3916,6 @@ var Sunrise = createLucideIcon("sunrise", [
3956
3916
  * This source code is licensed under the ISC license.
3957
3917
  * See the LICENSE file in the root directory of this source tree.
3958
3918
  */
3959
- var Table2 = createLucideIcon("table-2", [["path", {
3960
- d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",
3961
- key: "gugj83"
3962
- }]]);
3963
- /**
3964
- * @license lucide-react v0.576.0 - ISC
3965
- *
3966
- * This source code is licensed under the ISC license.
3967
- * See the LICENSE file in the root directory of this source tree.
3968
- */
3969
3919
  var Tag = createLucideIcon("tag", [["path", {
3970
3920
  d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
3971
3921
  key: "vktsd0"
@@ -5325,6 +5275,8 @@ var useDeviceExportGetDeviceLiveContribution = trpc.deviceExport.getDeviceLiveCo
5325
5275
  var useDeviceExportApplyDeviceSettingsPatch = trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
5326
5276
  /** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
5327
5277
  var useDeviceManagerAllocateDeviceId = trpc.deviceManager.allocateDeviceId.useMutation;
5278
+ /** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
5279
+ var useDeviceManagerMigrateDevice = trpc.deviceManager.migrateDevice.useMutation;
5328
5280
  /** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
5329
5281
  var useDeviceManagerRegisterDevice = trpc.deviceManager.registerDevice.useMutation;
5330
5282
  /** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
@@ -5801,8 +5753,6 @@ var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuer
5801
5753
  var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
5802
5754
  /** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
5803
5755
  var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
5804
- /** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
5805
- var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
5806
5756
  /** Generated alias around `trpc.motion.isDetected.useQuery`. */
5807
5757
  var useMotionIsDetected = trpc.motion.isDetected.useQuery;
5808
5758
  /** Generated alias around `trpc.motion.getStatus.useQuery`. */
@@ -22047,7 +21997,11 @@ function ModelPicker({ models, value, onChange, disabled }) {
22047
21997
  onChange,
22048
21998
  disabled
22049
21999
  }),
22050
- ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
22000
+ ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —"),
22001
+ models.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
22002
+ className: "text-[11px] text-foreground-subtle",
22003
+ children: "No model is published for this engine format."
22004
+ })
22051
22005
  ]
22052
22006
  });
22053
22007
  }
@@ -42881,7 +42835,7 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
42881
42835
  /**
42882
42836
  * <FilterChips> — top-row filter UI for DeviceList.
42883
42837
  *
42884
- * Layout: [View toggle] [Type chips] [Integration multi-select]
42838
+ * Layout: [Type chips] [Integration multi-select] [Clear filters]
42885
42839
  * (search input lives separately; this component only handles the
42886
42840
  * chip-style selectors + the integration dropdown).
42887
42841
  *
@@ -42891,26 +42845,11 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
42891
42845
  * now a single "Integration" button opens a checkbox menu so several
42892
42846
  * integrations can be filtered at once without flooding the toolbar.
42893
42847
  */
42894
- function FilterChips({ view, onViewChange, hideView = false, typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false }) {
42848
+ function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false, query = "", onClearFilters }) {
42849
+ const hasActiveFilter = selectedTypes.length > 0 || selectedAddons.length > 0 || query.trim().length > 0;
42895
42850
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
42896
42851
  className: "flex items-center gap-2 flex-wrap",
42897
42852
  children: [
42898
- !hideView && view !== void 0 && onViewChange !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
42899
- className: "inline-flex border border-border rounded-md overflow-hidden",
42900
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
42901
- type: "button",
42902
- onClick: () => onViewChange("cards"),
42903
- className: cn("inline-flex items-center justify-center h-7 w-8 transition-colors", view === "cards" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
42904
- "aria-label": "Cards view",
42905
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LayoutGrid, { className: "h-3.5 w-3.5" })
42906
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
42907
- type: "button",
42908
- onClick: () => onViewChange("table"),
42909
- className: cn("inline-flex items-center justify-center h-7 w-8 border-l border-border transition-colors", view === "table" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
42910
- "aria-label": "Table view",
42911
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Table2, { className: "h-3.5 w-3.5" })
42912
- })]
42913
- }),
42914
42853
  typeOptions && typeOptions.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ResponsiveTypeFilter, {
42915
42854
  label: "Type",
42916
42855
  options: typeOptions,
@@ -42921,6 +42860,12 @@ function FilterChips({ view, onViewChange, hideView = false, typeOptions, select
42921
42860
  addons,
42922
42861
  selected: selectedAddons,
42923
42862
  onChange: onAddonsChange
42863
+ }),
42864
+ onClearFilters !== void 0 && hasActiveFilter && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
42865
+ type: "button",
42866
+ onClick: onClearFilters,
42867
+ className: "inline-flex items-center gap-1 h-7 rounded-md border border-border bg-surface px-2 text-[10.5px] text-foreground-subtle transition-colors hover:text-foreground hover:border-foreground-subtle/40",
42868
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(X, { className: "h-3 w-3" }), "Clear filters"]
42924
42869
  })
42925
42870
  ]
42926
42871
  });
@@ -43028,19 +42973,19 @@ function DeviceListEmptyState({ variant, onClearFilters }) {
43028
42973
  * `popstate` (back/forward navigation). Writes via
43029
42974
  * `history.replaceState` on every setter.
43030
42975
  * - Fallback: `localStorage[<lsKey>:lastFilters]` — JSON object
43031
- * `{view, addon, type, q}` (NEVER page). Used to rehydrate when
42976
+ * `{addon, type, q}` (NEVER page, NEVER view). Used to rehydrate when
43032
42977
  * the URL has no params.
43033
42978
  * - Defaults stripped from URL — when the value is the default AND
43034
42979
  * not pinned by LS, it's removed (URL stays canonical).
43035
42980
  *
43036
42981
  * Two scopes:
43037
- * - 'root' — uses `view`, `page`, `addon`, `type`, `q`
42982
+ * - 'root' — uses `page`, `addon`, `type`, `q`
43038
42983
  * - 'nested' — uses `deviceView`, `devicePage`, `deviceType`,
43039
42984
  * `deviceQ` (no `deviceAddon` — outer ?expand= locks it). Used
43040
42985
  * by Integrations page expanded row.
43041
42986
  *
43042
42987
  * Page reset rule: changing addon / type / q resets page to 1.
43043
- * `clearFilters` clears addon / type / q; preserves view.
42988
+ * `clearFilters` clears addon / type / q.
43044
42989
  */
43045
42990
  /** Parse a comma-joined param/LS value into a clean id array. */
43046
42991
  function parseCsv(raw) {
@@ -43077,27 +43022,24 @@ function writeToLS(lsKey, filters) {
43077
43022
  localStorage.setItem(`camstack:${lsKey}:lastFilters`, JSON.stringify(filters));
43078
43023
  } catch {}
43079
43024
  }
43080
- function readUrlState(scope, defaultView, ls) {
43025
+ function readUrlState(scope, ls) {
43081
43026
  const params = new URLSearchParams(window.location.search);
43082
- const rawView = params.get(paramKey(scope, "view"));
43083
- const view = rawView === "cards" || rawView === "table" ? rawView : ls.view ?? defaultView;
43084
43027
  const rawPage = params.get(paramKey(scope, "page"));
43085
43028
  const pageNum = rawPage ? parseInt(rawPage, 10) : 1;
43086
43029
  return {
43087
- view,
43088
43030
  page: Number.isFinite(pageNum) && pageNum >= 1 ? pageNum : 1,
43089
43031
  addons: parseCsv(params.get(paramKey(scope, "addons")) ?? ls.addon ?? null),
43090
43032
  types: parseCsv(params.get(paramKey(scope, "types")) ?? ls.type ?? null),
43091
43033
  q: params.get(paramKey(scope, "q")) ?? ls.q ?? ""
43092
43034
  };
43093
43035
  }
43094
- function writeUrlState(scope, next, defaultView) {
43036
+ function writeUrlState(scope, next) {
43095
43037
  const params = new URLSearchParams(window.location.search);
43096
43038
  const set = (k, v) => {
43097
43039
  if (v === null || v === "") params.delete(k);
43098
43040
  else params.set(k, v);
43099
43041
  };
43100
- set(paramKey(scope, "view"), next.view === defaultView ? null : next.view);
43042
+ set(paramKey(scope, "view"), null);
43101
43043
  set(paramKey(scope, "page"), next.page === 1 ? null : String(next.page));
43102
43044
  set(paramKey(scope, "addons"), next.addons.length > 0 ? next.addons.join(",") : null);
43103
43045
  set(paramKey(scope, "types"), next.types.length > 0 ? next.types.join(",") : null);
@@ -43107,47 +43049,34 @@ function writeUrlState(scope, next, defaultView) {
43107
43049
  window.history.replaceState(null, "", url);
43108
43050
  }
43109
43051
  function useDeviceListUrlState(options) {
43110
- const { scope, defaultView, lsKey } = options;
43052
+ const { scope, lsKey } = options;
43111
43053
  const [state, setState] = (0, react$1.useState)(() => {
43112
- return readUrlState(scope, defaultView, readFromLS(lsKey));
43054
+ return readUrlState(scope, readFromLS(lsKey));
43113
43055
  });
43114
43056
  const stateRef = (0, react$1.useRef)(state);
43115
43057
  stateRef.current = state;
43116
43058
  (0, react$1.useEffect)(() => {
43117
43059
  const handler = () => {
43118
- const next = readUrlState(scope, defaultView, readFromLS(lsKey));
43060
+ const next = readUrlState(scope, readFromLS(lsKey));
43119
43061
  stateRef.current = next;
43120
43062
  setState(next);
43121
43063
  };
43122
43064
  window.addEventListener("popstate", handler);
43123
43065
  return () => window.removeEventListener("popstate", handler);
43124
- }, [
43125
- scope,
43126
- defaultView,
43127
- lsKey
43128
- ]);
43066
+ }, [scope, lsKey]);
43129
43067
  const apply = (0, react$1.useCallback)((mutate) => {
43130
43068
  const next = mutate(stateRef.current);
43131
43069
  stateRef.current = next;
43132
43070
  setState(next);
43133
- writeUrlState(scope, next, defaultView);
43071
+ writeUrlState(scope, next);
43134
43072
  writeToLS(lsKey, {
43135
- view: next.view,
43136
43073
  addon: next.addons.length > 0 ? next.addons.join(",") : null,
43137
43074
  type: next.types.length > 0 ? next.types.join(",") : null,
43138
43075
  q: next.q
43139
43076
  });
43140
- }, [
43141
- scope,
43142
- defaultView,
43143
- lsKey
43144
- ]);
43077
+ }, [scope, lsKey]);
43145
43078
  return {
43146
43079
  state,
43147
- setView: (0, react$1.useCallback)((view) => apply((s) => ({
43148
- ...s,
43149
- view
43150
- })), [apply]),
43151
43080
  setPage: (0, react$1.useCallback)((page) => apply((s) => ({
43152
43081
  ...s,
43153
43082
  page
@@ -43177,32 +43106,6 @@ function useDeviceListUrlState(options) {
43177
43106
  };
43178
43107
  }
43179
43108
  //#endregion
43180
- //#region src/composites/device-list/cards-layout.tsx
43181
- function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection }) {
43182
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
43183
- className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 items-stretch",
43184
- children: rows.map((d) => {
43185
- const accessories = accessoriesByParent.get(d.id) ?? [];
43186
- const selection = selectable ? {
43187
- selected: activeSelected.has(d.id),
43188
- onToggle: () => onToggleSelection(d.id)
43189
- } : void 0;
43190
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceItem, {
43191
- trpc,
43192
- device: d,
43193
- view: "card",
43194
- integrationIcon: resolveIntegrationIcon?.(d.addonId) ?? null,
43195
- parent: d.parentDeviceId !== null ? resolveParent?.(d.parentDeviceId) ?? null : null,
43196
- children: accessories,
43197
- onNavigate: onNavigate ?? void 0,
43198
- renderRowAction: renderRowAction ?? void 0,
43199
- selection,
43200
- rowClickSelects
43201
- }, d.id);
43202
- })
43203
- });
43204
- }
43205
- //#endregion
43206
43109
  //#region src/composites/device-list/sortable-header.tsx
43207
43110
  function SortableHeaderButton({ columnId, label, sort, onSort }) {
43208
43111
  const active = sort !== null && sort.columnId === columnId;
@@ -43526,7 +43429,7 @@ var DEFAULT_PAGE_SIZE = {
43526
43429
  table: 50
43527
43430
  };
43528
43431
  function DeviceModeList(props) {
43529
- const { devices, trpc, context = "devices", defaultView = "table", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
43432
+ const { devices, trpc, context = "devices", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
43530
43433
  const [batchActive, setBatchActive] = (0, react$1.useState)(false);
43531
43434
  const [internalSelected, setInternalSelected] = (0, react$1.useState)(/* @__PURE__ */ new Set());
43532
43435
  const activeSelected = selectedIds ?? internalSelected;
@@ -43554,12 +43457,10 @@ function DeviceModeList(props) {
43554
43457
  const typeFilterOptions = (0, react$1.useMemo)(() => typeOptionsOverride ?? allDeviceTypeFilterOptions(), [typeOptionsOverride]);
43555
43458
  const url = useDeviceListUrlState({
43556
43459
  scope: urlScope,
43557
- defaultView,
43558
43460
  lsKey
43559
43461
  });
43560
- const view = url.state.view;
43561
43462
  const [tablePageSize, setTablePageSize] = useDeviceListPageSize(pageSize.table);
43562
- const currentPageSize = view === "cards" ? pageSize.cards : tablePageSize;
43463
+ const currentPageSize = tablePageSize;
43563
43464
  const [searchInput, setSearchInput] = (0, react$1.useState)(url.state.q);
43564
43465
  const debouncedSearch = useDebouncedString(searchInput, 300);
43565
43466
  (0, react$1.useEffect)(() => {
@@ -43619,13 +43520,16 @@ function DeviceModeList(props) {
43619
43520
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
43620
43521
  className: "flex items-center justify-between gap-3 flex-wrap",
43621
43522
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(FilterChips, {
43622
- view,
43623
- onViewChange: url.setView,
43624
43523
  typeOptions: typeFilterOptions,
43625
43524
  selectedTypes: url.state.types,
43626
43525
  onTypesChange: url.setTypes,
43627
43526
  addons: filters?.addons,
43628
43527
  selectedAddons: url.state.addons,
43528
+ query: url.state.q,
43529
+ onClearFilters: () => {
43530
+ setSearchInput("");
43531
+ url.clearFilters();
43532
+ },
43629
43533
  onAddonsChange: url.setAddons,
43630
43534
  hideAddons: forceAddon !== void 0
43631
43535
  }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -43663,21 +43567,6 @@ function DeviceModeList(props) {
43663
43567
  isEmpty ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceListEmptyState, {
43664
43568
  variant: isFiltered ? "filtered" : "nofilter",
43665
43569
  onClearFilters: isFiltered ? url.clearFilters : void 0
43666
- }) : view === "cards" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContainerChildrenProvider, {
43667
- value: grouped.accessoriesByParent,
43668
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CardsLayout, {
43669
- rows: pageRows,
43670
- accessoriesByParent: grouped.accessoriesByParent,
43671
- trpc,
43672
- resolveIntegrationIcon: resolveIntegrationIcon ?? null,
43673
- resolveParent: resolveParent ?? null,
43674
- onNavigate: onNavigate ?? null,
43675
- renderRowAction: renderRowAction ?? null,
43676
- selectable: showCheckboxes,
43677
- rowClickSelects,
43678
- activeSelected,
43679
- onToggleSelection: toggleSelection
43680
- })
43681
43570
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContainerChildrenProvider, {
43682
43571
  value: grouped.accessoriesByParent,
43683
43572
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TableLayout, {
@@ -43700,7 +43589,7 @@ function DeviceModeList(props) {
43700
43589
  onToggleSelection: toggleSelection
43701
43590
  })
43702
43591
  }),
43703
- !isEmpty && view === "table" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
43592
+ !isEmpty && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
43704
43593
  className: "flex items-center justify-between gap-4 flex-wrap pt-2 text-[11px] text-foreground-subtle",
43705
43594
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
43706
43595
  className: "inline-flex items-center gap-2",
@@ -43733,12 +43622,6 @@ function DeviceModeList(props) {
43733
43622
  onPageChange: url.setPage
43734
43623
  })]
43735
43624
  }),
43736
- !isEmpty && view === "cards" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Pagination, {
43737
- currentPage: safePage,
43738
- totalItems,
43739
- pageSize: currentPageSize,
43740
- onPageChange: url.setPage
43741
- }),
43742
43625
  forceAddon === void 0 && isFiltered && totalItems > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
43743
43626
  className: "text-[11px] text-foreground-subtle",
43744
43627
  children: [
@@ -44214,7 +44097,6 @@ function DeviceExportPanel({ addonId, trpc, onOpenDevice }) {
44214
44097
  }) : hasSupportedKinds && candidateDevices.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceList, {
44215
44098
  devices: candidateDevices,
44216
44099
  trpc,
44217
- defaultView: "table",
44218
44100
  filters: { typeOptions: supportedTypeOptions },
44219
44101
  urlScope: "nested",
44220
44102
  lsKey: `device-export:${addonId}`,
@@ -49823,6 +49705,7 @@ exports.useDeviceManagerListWrappersForCap = useDeviceManagerListWrappersForCap;
49823
49705
  exports.useDeviceManagerLoadConfig = useDeviceManagerLoadConfig;
49824
49706
  exports.useDeviceManagerLoadMeta = useDeviceManagerLoadMeta;
49825
49707
  exports.useDeviceManagerLoadRuntimeState = useDeviceManagerLoadRuntimeState;
49708
+ exports.useDeviceManagerMigrateDevice = useDeviceManagerMigrateDevice;
49826
49709
  exports.useDeviceManagerPersistConfig = useDeviceManagerPersistConfig;
49827
49710
  exports.useDeviceManagerProbeStreams = useDeviceManagerProbeStreams;
49828
49711
  exports.useDeviceManagerProviderCreationType = useDeviceManagerProviderCreationType;
@@ -50019,7 +49902,6 @@ exports.useMeshNetworkLogout = useMeshNetworkLogout;
50019
49902
  exports.useMeshNetworkStartLogin = useMeshNetworkStartLogin;
50020
49903
  exports.useMeshNetworkTestConnection = useMeshNetworkTestConnection;
50021
49904
  exports.useMetricsProviderCollectSnapshot = useMetricsProviderCollectSnapshot;
50022
- exports.useMetricsProviderDumpHeapSnapshot = useMetricsProviderDumpHeapSnapshot;
50023
49905
  exports.useMetricsProviderGetAddonStats = useMetricsProviderGetAddonStats;
50024
49906
  exports.useMetricsProviderGetCached = useMetricsProviderGetCached;
50025
49907
  exports.useMetricsProviderGetCpuTemperature = useMetricsProviderGetCpuTemperature;
package/dist/index.js CHANGED
@@ -2229,46 +2229,6 @@ var Laugh = createLucideIcon("laugh", [
2229
2229
  * This source code is licensed under the ISC license.
2230
2230
  * See the LICENSE file in the root directory of this source tree.
2231
2231
  */
2232
- var LayoutGrid = createLucideIcon("layout-grid", [
2233
- ["rect", {
2234
- width: "7",
2235
- height: "7",
2236
- x: "3",
2237
- y: "3",
2238
- rx: "1",
2239
- key: "1g98yp"
2240
- }],
2241
- ["rect", {
2242
- width: "7",
2243
- height: "7",
2244
- x: "14",
2245
- y: "3",
2246
- rx: "1",
2247
- key: "6d4xhi"
2248
- }],
2249
- ["rect", {
2250
- width: "7",
2251
- height: "7",
2252
- x: "14",
2253
- y: "14",
2254
- rx: "1",
2255
- key: "nxv5o0"
2256
- }],
2257
- ["rect", {
2258
- width: "7",
2259
- height: "7",
2260
- x: "3",
2261
- y: "14",
2262
- rx: "1",
2263
- key: "1bb6yr"
2264
- }]
2265
- ]);
2266
- /**
2267
- * @license lucide-react v0.576.0 - ISC
2268
- *
2269
- * This source code is licensed under the ISC license.
2270
- * See the LICENSE file in the root directory of this source tree.
2271
- */
2272
2232
  var Leaf = createLucideIcon("leaf", [["path", {
2273
2233
  d: "M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z",
2274
2234
  key: "nnexq3"
@@ -3932,16 +3892,6 @@ var Sunrise = createLucideIcon("sunrise", [
3932
3892
  * This source code is licensed under the ISC license.
3933
3893
  * See the LICENSE file in the root directory of this source tree.
3934
3894
  */
3935
- var Table2 = createLucideIcon("table-2", [["path", {
3936
- d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",
3937
- key: "gugj83"
3938
- }]]);
3939
- /**
3940
- * @license lucide-react v0.576.0 - ISC
3941
- *
3942
- * This source code is licensed under the ISC license.
3943
- * See the LICENSE file in the root directory of this source tree.
3944
- */
3945
3895
  var Tag = createLucideIcon("tag", [["path", {
3946
3896
  d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",
3947
3897
  key: "vktsd0"
@@ -5301,6 +5251,8 @@ var useDeviceExportGetDeviceLiveContribution = trpc.deviceExport.getDeviceLiveCo
5301
5251
  var useDeviceExportApplyDeviceSettingsPatch = trpc.deviceExport.applyDeviceSettingsPatch.useMutation;
5302
5252
  /** Generated alias around `trpc.deviceManager.allocateDeviceId.useMutation`. */
5303
5253
  var useDeviceManagerAllocateDeviceId = trpc.deviceManager.allocateDeviceId.useMutation;
5254
+ /** Generated alias around `trpc.deviceManager.migrateDevice.useMutation`. */
5255
+ var useDeviceManagerMigrateDevice = trpc.deviceManager.migrateDevice.useMutation;
5304
5256
  /** Generated alias around `trpc.deviceManager.registerDevice.useMutation`. */
5305
5257
  var useDeviceManagerRegisterDevice = trpc.deviceManager.registerDevice.useMutation;
5306
5258
  /** Generated alias around `trpc.deviceManager.removeDevice.useMutation`. */
@@ -5777,8 +5729,6 @@ var useMetricsProviderGetAddonStats = trpc.metricsProvider.getAddonStats.useQuer
5777
5729
  var useMetricsProviderListNodeProcesses = trpc.metricsProvider.listNodeProcesses.useQuery;
5778
5730
  /** Generated alias around `trpc.metricsProvider.getLoadSeries.useQuery`. */
5779
5731
  var useMetricsProviderGetLoadSeries = trpc.metricsProvider.getLoadSeries.useQuery;
5780
- /** Generated alias around `trpc.metricsProvider.dumpHeapSnapshot.useMutation`. */
5781
- var useMetricsProviderDumpHeapSnapshot = trpc.metricsProvider.dumpHeapSnapshot.useMutation;
5782
5732
  /** Generated alias around `trpc.motion.isDetected.useQuery`. */
5783
5733
  var useMotionIsDetected = trpc.motion.isDetected.useQuery;
5784
5734
  /** Generated alias around `trpc.motion.getStatus.useQuery`. */
@@ -22023,7 +21973,11 @@ function ModelPicker({ models, value, onChange, disabled }) {
22023
21973
  onChange,
22024
21974
  disabled
22025
21975
  }),
22026
- ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —")
21976
+ ungrouped.length > 0 && flatSelect(ungrouped, grouped.length > 0 ? "— other models —" : "— select a model —"),
21977
+ models.length === 0 && /* @__PURE__ */ jsx("p", {
21978
+ className: "text-[11px] text-foreground-subtle",
21979
+ children: "No model is published for this engine format."
21980
+ })
22027
21981
  ]
22028
21982
  });
22029
21983
  }
@@ -42857,7 +42811,7 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
42857
42811
  /**
42858
42812
  * <FilterChips> — top-row filter UI for DeviceList.
42859
42813
  *
42860
- * Layout: [View toggle] [Type chips] [Integration multi-select]
42814
+ * Layout: [Type chips] [Integration multi-select] [Clear filters]
42861
42815
  * (search input lives separately; this component only handles the
42862
42816
  * chip-style selectors + the integration dropdown).
42863
42817
  *
@@ -42867,26 +42821,11 @@ function ResponsiveTypeFilter({ label, options, selected, onChange }) {
42867
42821
  * now a single "Integration" button opens a checkbox menu so several
42868
42822
  * integrations can be filtered at once without flooding the toolbar.
42869
42823
  */
42870
- function FilterChips({ view, onViewChange, hideView = false, typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false }) {
42824
+ function FilterChips({ typeOptions, selectedTypes, onTypesChange, addons, selectedAddons, onAddonsChange, hideAddons = false, query = "", onClearFilters }) {
42825
+ const hasActiveFilter = selectedTypes.length > 0 || selectedAddons.length > 0 || query.trim().length > 0;
42871
42826
  return /* @__PURE__ */ jsxs("div", {
42872
42827
  className: "flex items-center gap-2 flex-wrap",
42873
42828
  children: [
42874
- !hideView && view !== void 0 && onViewChange !== void 0 && /* @__PURE__ */ jsxs("span", {
42875
- className: "inline-flex border border-border rounded-md overflow-hidden",
42876
- children: [/* @__PURE__ */ jsx("button", {
42877
- type: "button",
42878
- onClick: () => onViewChange("cards"),
42879
- className: cn("inline-flex items-center justify-center h-7 w-8 transition-colors", view === "cards" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
42880
- "aria-label": "Cards view",
42881
- children: /* @__PURE__ */ jsx(LayoutGrid, { className: "h-3.5 w-3.5" })
42882
- }), /* @__PURE__ */ jsx("button", {
42883
- type: "button",
42884
- onClick: () => onViewChange("table"),
42885
- className: cn("inline-flex items-center justify-center h-7 w-8 border-l border-border transition-colors", view === "table" ? "bg-primary/10 text-primary" : "bg-surface text-foreground-subtle hover:text-foreground hover:bg-surface-hover"),
42886
- "aria-label": "Table view",
42887
- children: /* @__PURE__ */ jsx(Table2, { className: "h-3.5 w-3.5" })
42888
- })]
42889
- }),
42890
42829
  typeOptions && typeOptions.length > 0 && /* @__PURE__ */ jsx(ResponsiveTypeFilter, {
42891
42830
  label: "Type",
42892
42831
  options: typeOptions,
@@ -42897,6 +42836,12 @@ function FilterChips({ view, onViewChange, hideView = false, typeOptions, select
42897
42836
  addons,
42898
42837
  selected: selectedAddons,
42899
42838
  onChange: onAddonsChange
42839
+ }),
42840
+ onClearFilters !== void 0 && hasActiveFilter && /* @__PURE__ */ jsxs("button", {
42841
+ type: "button",
42842
+ onClick: onClearFilters,
42843
+ className: "inline-flex items-center gap-1 h-7 rounded-md border border-border bg-surface px-2 text-[10.5px] text-foreground-subtle transition-colors hover:text-foreground hover:border-foreground-subtle/40",
42844
+ children: [/* @__PURE__ */ jsx(X, { className: "h-3 w-3" }), "Clear filters"]
42900
42845
  })
42901
42846
  ]
42902
42847
  });
@@ -43004,19 +42949,19 @@ function DeviceListEmptyState({ variant, onClearFilters }) {
43004
42949
  * `popstate` (back/forward navigation). Writes via
43005
42950
  * `history.replaceState` on every setter.
43006
42951
  * - Fallback: `localStorage[<lsKey>:lastFilters]` — JSON object
43007
- * `{view, addon, type, q}` (NEVER page). Used to rehydrate when
42952
+ * `{addon, type, q}` (NEVER page, NEVER view). Used to rehydrate when
43008
42953
  * the URL has no params.
43009
42954
  * - Defaults stripped from URL — when the value is the default AND
43010
42955
  * not pinned by LS, it's removed (URL stays canonical).
43011
42956
  *
43012
42957
  * Two scopes:
43013
- * - 'root' — uses `view`, `page`, `addon`, `type`, `q`
42958
+ * - 'root' — uses `page`, `addon`, `type`, `q`
43014
42959
  * - 'nested' — uses `deviceView`, `devicePage`, `deviceType`,
43015
42960
  * `deviceQ` (no `deviceAddon` — outer ?expand= locks it). Used
43016
42961
  * by Integrations page expanded row.
43017
42962
  *
43018
42963
  * Page reset rule: changing addon / type / q resets page to 1.
43019
- * `clearFilters` clears addon / type / q; preserves view.
42964
+ * `clearFilters` clears addon / type / q.
43020
42965
  */
43021
42966
  /** Parse a comma-joined param/LS value into a clean id array. */
43022
42967
  function parseCsv(raw) {
@@ -43053,27 +42998,24 @@ function writeToLS(lsKey, filters) {
43053
42998
  localStorage.setItem(`camstack:${lsKey}:lastFilters`, JSON.stringify(filters));
43054
42999
  } catch {}
43055
43000
  }
43056
- function readUrlState(scope, defaultView, ls) {
43001
+ function readUrlState(scope, ls) {
43057
43002
  const params = new URLSearchParams(window.location.search);
43058
- const rawView = params.get(paramKey(scope, "view"));
43059
- const view = rawView === "cards" || rawView === "table" ? rawView : ls.view ?? defaultView;
43060
43003
  const rawPage = params.get(paramKey(scope, "page"));
43061
43004
  const pageNum = rawPage ? parseInt(rawPage, 10) : 1;
43062
43005
  return {
43063
- view,
43064
43006
  page: Number.isFinite(pageNum) && pageNum >= 1 ? pageNum : 1,
43065
43007
  addons: parseCsv(params.get(paramKey(scope, "addons")) ?? ls.addon ?? null),
43066
43008
  types: parseCsv(params.get(paramKey(scope, "types")) ?? ls.type ?? null),
43067
43009
  q: params.get(paramKey(scope, "q")) ?? ls.q ?? ""
43068
43010
  };
43069
43011
  }
43070
- function writeUrlState(scope, next, defaultView) {
43012
+ function writeUrlState(scope, next) {
43071
43013
  const params = new URLSearchParams(window.location.search);
43072
43014
  const set = (k, v) => {
43073
43015
  if (v === null || v === "") params.delete(k);
43074
43016
  else params.set(k, v);
43075
43017
  };
43076
- set(paramKey(scope, "view"), next.view === defaultView ? null : next.view);
43018
+ set(paramKey(scope, "view"), null);
43077
43019
  set(paramKey(scope, "page"), next.page === 1 ? null : String(next.page));
43078
43020
  set(paramKey(scope, "addons"), next.addons.length > 0 ? next.addons.join(",") : null);
43079
43021
  set(paramKey(scope, "types"), next.types.length > 0 ? next.types.join(",") : null);
@@ -43083,47 +43025,34 @@ function writeUrlState(scope, next, defaultView) {
43083
43025
  window.history.replaceState(null, "", url);
43084
43026
  }
43085
43027
  function useDeviceListUrlState(options) {
43086
- const { scope, defaultView, lsKey } = options;
43028
+ const { scope, lsKey } = options;
43087
43029
  const [state, setState] = useState(() => {
43088
- return readUrlState(scope, defaultView, readFromLS(lsKey));
43030
+ return readUrlState(scope, readFromLS(lsKey));
43089
43031
  });
43090
43032
  const stateRef = useRef(state);
43091
43033
  stateRef.current = state;
43092
43034
  useEffect(() => {
43093
43035
  const handler = () => {
43094
- const next = readUrlState(scope, defaultView, readFromLS(lsKey));
43036
+ const next = readUrlState(scope, readFromLS(lsKey));
43095
43037
  stateRef.current = next;
43096
43038
  setState(next);
43097
43039
  };
43098
43040
  window.addEventListener("popstate", handler);
43099
43041
  return () => window.removeEventListener("popstate", handler);
43100
- }, [
43101
- scope,
43102
- defaultView,
43103
- lsKey
43104
- ]);
43042
+ }, [scope, lsKey]);
43105
43043
  const apply = useCallback((mutate) => {
43106
43044
  const next = mutate(stateRef.current);
43107
43045
  stateRef.current = next;
43108
43046
  setState(next);
43109
- writeUrlState(scope, next, defaultView);
43047
+ writeUrlState(scope, next);
43110
43048
  writeToLS(lsKey, {
43111
- view: next.view,
43112
43049
  addon: next.addons.length > 0 ? next.addons.join(",") : null,
43113
43050
  type: next.types.length > 0 ? next.types.join(",") : null,
43114
43051
  q: next.q
43115
43052
  });
43116
- }, [
43117
- scope,
43118
- defaultView,
43119
- lsKey
43120
- ]);
43053
+ }, [scope, lsKey]);
43121
43054
  return {
43122
43055
  state,
43123
- setView: useCallback((view) => apply((s) => ({
43124
- ...s,
43125
- view
43126
- })), [apply]),
43127
43056
  setPage: useCallback((page) => apply((s) => ({
43128
43057
  ...s,
43129
43058
  page
@@ -43153,32 +43082,6 @@ function useDeviceListUrlState(options) {
43153
43082
  };
43154
43083
  }
43155
43084
  //#endregion
43156
- //#region src/composites/device-list/cards-layout.tsx
43157
- function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection }) {
43158
- return /* @__PURE__ */ jsx("div", {
43159
- className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 items-stretch",
43160
- children: rows.map((d) => {
43161
- const accessories = accessoriesByParent.get(d.id) ?? [];
43162
- const selection = selectable ? {
43163
- selected: activeSelected.has(d.id),
43164
- onToggle: () => onToggleSelection(d.id)
43165
- } : void 0;
43166
- return /* @__PURE__ */ jsx(DeviceItem, {
43167
- trpc,
43168
- device: d,
43169
- view: "card",
43170
- integrationIcon: resolveIntegrationIcon?.(d.addonId) ?? null,
43171
- parent: d.parentDeviceId !== null ? resolveParent?.(d.parentDeviceId) ?? null : null,
43172
- children: accessories,
43173
- onNavigate: onNavigate ?? void 0,
43174
- renderRowAction: renderRowAction ?? void 0,
43175
- selection,
43176
- rowClickSelects
43177
- }, d.id);
43178
- })
43179
- });
43180
- }
43181
- //#endregion
43182
43085
  //#region src/composites/device-list/sortable-header.tsx
43183
43086
  function SortableHeaderButton({ columnId, label, sort, onSort }) {
43184
43087
  const active = sort !== null && sort.columnId === columnId;
@@ -43502,7 +43405,7 @@ var DEFAULT_PAGE_SIZE = {
43502
43405
  table: 50
43503
43406
  };
43504
43407
  function DeviceModeList(props) {
43505
- const { devices, trpc, context = "devices", defaultView = "table", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
43408
+ const { devices, trpc, context = "devices", filters, forceAddon, resolveIntegrationIcon, resolveParent, onNavigate, pageSize = DEFAULT_PAGE_SIZE, urlScope = "root", lsKey = urlScope === "root" ? "devices" : "integrations:nested", renderRowAction, onDeleteDevice, selectable = false, selectedIds, onSelectionChange, batchActions } = props;
43506
43409
  const [batchActive, setBatchActive] = useState(false);
43507
43410
  const [internalSelected, setInternalSelected] = useState(/* @__PURE__ */ new Set());
43508
43411
  const activeSelected = selectedIds ?? internalSelected;
@@ -43530,12 +43433,10 @@ function DeviceModeList(props) {
43530
43433
  const typeFilterOptions = useMemo(() => typeOptionsOverride ?? allDeviceTypeFilterOptions(), [typeOptionsOverride]);
43531
43434
  const url = useDeviceListUrlState({
43532
43435
  scope: urlScope,
43533
- defaultView,
43534
43436
  lsKey
43535
43437
  });
43536
- const view = url.state.view;
43537
43438
  const [tablePageSize, setTablePageSize] = useDeviceListPageSize(pageSize.table);
43538
- const currentPageSize = view === "cards" ? pageSize.cards : tablePageSize;
43439
+ const currentPageSize = tablePageSize;
43539
43440
  const [searchInput, setSearchInput] = useState(url.state.q);
43540
43441
  const debouncedSearch = useDebouncedString(searchInput, 300);
43541
43442
  useEffect(() => {
@@ -43595,13 +43496,16 @@ function DeviceModeList(props) {
43595
43496
  /* @__PURE__ */ jsxs("div", {
43596
43497
  className: "flex items-center justify-between gap-3 flex-wrap",
43597
43498
  children: [/* @__PURE__ */ jsx(FilterChips, {
43598
- view,
43599
- onViewChange: url.setView,
43600
43499
  typeOptions: typeFilterOptions,
43601
43500
  selectedTypes: url.state.types,
43602
43501
  onTypesChange: url.setTypes,
43603
43502
  addons: filters?.addons,
43604
43503
  selectedAddons: url.state.addons,
43504
+ query: url.state.q,
43505
+ onClearFilters: () => {
43506
+ setSearchInput("");
43507
+ url.clearFilters();
43508
+ },
43605
43509
  onAddonsChange: url.setAddons,
43606
43510
  hideAddons: forceAddon !== void 0
43607
43511
  }), /* @__PURE__ */ jsxs("div", {
@@ -43639,21 +43543,6 @@ function DeviceModeList(props) {
43639
43543
  isEmpty ? /* @__PURE__ */ jsx(DeviceListEmptyState, {
43640
43544
  variant: isFiltered ? "filtered" : "nofilter",
43641
43545
  onClearFilters: isFiltered ? url.clearFilters : void 0
43642
- }) : view === "cards" ? /* @__PURE__ */ jsx(ContainerChildrenProvider, {
43643
- value: grouped.accessoriesByParent,
43644
- children: /* @__PURE__ */ jsx(CardsLayout, {
43645
- rows: pageRows,
43646
- accessoriesByParent: grouped.accessoriesByParent,
43647
- trpc,
43648
- resolveIntegrationIcon: resolveIntegrationIcon ?? null,
43649
- resolveParent: resolveParent ?? null,
43650
- onNavigate: onNavigate ?? null,
43651
- renderRowAction: renderRowAction ?? null,
43652
- selectable: showCheckboxes,
43653
- rowClickSelects,
43654
- activeSelected,
43655
- onToggleSelection: toggleSelection
43656
- })
43657
43546
  }) : /* @__PURE__ */ jsx(ContainerChildrenProvider, {
43658
43547
  value: grouped.accessoriesByParent,
43659
43548
  children: /* @__PURE__ */ jsx(TableLayout, {
@@ -43676,7 +43565,7 @@ function DeviceModeList(props) {
43676
43565
  onToggleSelection: toggleSelection
43677
43566
  })
43678
43567
  }),
43679
- !isEmpty && view === "table" && /* @__PURE__ */ jsxs("div", {
43568
+ !isEmpty && /* @__PURE__ */ jsxs("div", {
43680
43569
  className: "flex items-center justify-between gap-4 flex-wrap pt-2 text-[11px] text-foreground-subtle",
43681
43570
  children: [/* @__PURE__ */ jsxs("div", {
43682
43571
  className: "inline-flex items-center gap-2",
@@ -43709,12 +43598,6 @@ function DeviceModeList(props) {
43709
43598
  onPageChange: url.setPage
43710
43599
  })]
43711
43600
  }),
43712
- !isEmpty && view === "cards" && /* @__PURE__ */ jsx(Pagination, {
43713
- currentPage: safePage,
43714
- totalItems,
43715
- pageSize: currentPageSize,
43716
- onPageChange: url.setPage
43717
- }),
43718
43601
  forceAddon === void 0 && isFiltered && totalItems > 0 && /* @__PURE__ */ jsxs("p", {
43719
43602
  className: "text-[11px] text-foreground-subtle",
43720
43603
  children: [
@@ -44190,7 +44073,6 @@ function DeviceExportPanel({ addonId, trpc, onOpenDevice }) {
44190
44073
  }) : hasSupportedKinds && candidateDevices.length > 0 ? /* @__PURE__ */ jsx(DeviceList, {
44191
44074
  devices: candidateDevices,
44192
44075
  trpc,
44193
- defaultView: "table",
44194
44076
  filters: { typeOptions: supportedTypeOptions },
44195
44077
  urlScope: "nested",
44196
44078
  lsKey: `device-export:${addonId}`,
@@ -49154,4 +49036,4 @@ var SceneMonitorEditor = lazy(() => import("./SceneMonitorEditor-d_A4kO-M.js").t
49154
49036
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
49155
49037
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-DNSLc6ww.js").then((m) => ({ default: m.PrivacyMaskSettings })));
49156
49038
  //#endregion
49157
- export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, 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, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, createLucideIcon as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, useLockControlGetStatus, useLockControlLock, useLockControlOpen, useLockControlUnlock, useMediaPlayerGetStatus, useMediaPlayerNext, useMediaPlayerPause, useMediaPlayerPlay, useMediaPlayerPlayMedia, useMediaPlayerPrevious, useMediaPlayerSeek, useMediaPlayerSelectSource, useMediaPlayerSetMute, useMediaPlayerSetRepeat, useMediaPlayerSetShuffle, useMediaPlayerSetVolume, useMediaPlayerStop, useMeshNetworkGetStatus, useMeshNetworkJoin, useMeshNetworkLeave, useMeshNetworkListPeers, useMeshNetworkLogout, useMeshNetworkStartLogin, useMeshNetworkTestConnection, useMetricsProviderCollectSnapshot, useMetricsProviderDumpHeapSnapshot, useMetricsProviderGetAddonStats, useMetricsProviderGetCached, useMetricsProviderGetCpuTemperature, useMetricsProviderGetCurrent, useMetricsProviderGetDiskSpace, useMetricsProviderGetGpuInfo, 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, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, 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, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, 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, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, 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, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
49039
+ export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutomationHeroCard, AutomationInlineControl, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, CARD_MODE_MIN_COLUMNS, CENTER, CHIP_ACTIVE, CHIP_BASE, CHIP_INACTIVE, CLASS_COLORS, COLUMN_BREAKPOINT_CLASS, COLUMN_PRIORITY, COMMIT_DEDUPE_TOLERANCE_MS, COMMIT_DEDUPE_WINDOW_MS, CONTROL_CAP_NAMES, CONTROL_FILLS, CameraStreamPlayer, Card, Checkbox, ChildSectionAccordion, ClimatePanel, CodeBlock, CollapsibleCard, ConfigFormBuilder, FormField as ConfigFormField, ConfigSchemaField, ConfirmActionButton, ConfirmDialogProvider, ConsumablesPanel, ContainerChildrenProvider, ContainerPrimaryHero, ControlColumn, ControlHeroCard, ControlInlineControl, ControlPanel, CopyButton, CoverHeroCard, CoverInlineControl, CoverPanel, CustomFieldRenderersProvider, DEFAULT_COLOR, DEVICE_COLUMNS, DEVICE_LIST_PAGE_SIZE_KEY, DEVICE_LIST_PAGE_SIZE_OPTIONS, DEVICE_ROLE_META, DEVICE_TYPE_CONTROL, DEVICE_TYPE_META, DISPLAY_ICON_REGISTRY, DataTable, DetectionCanvas, DetectionOverlay, DetectionResultTree, DevShell, DeviceActivityPanel, DeviceBatchToolbar, DeviceCard, DeviceContextProvider, DeviceExportPanel, DeviceGrid, DeviceItem, DeviceList, DeviceMultiSelectField, DeviceSelectField, DeviceSelectorPicker, DeviceStepMatrix, Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, FLEET_LIST_GC_TIME_MS, FLEET_LIST_QUERY_KEY, FLEET_LIST_STALE_TIME_MS, FanHeroCard, FanInlineControl, FanPanel, FilterBar, FloatingEventStream, FloatingLogStream, FloatingPanel, FormField$1 as FormField, GRID_GAP, GRID_PAIRED, GRID_QUICK_STATS, GripTrack, GroupedModelSelector, HOST_WIDGETS, HlsVideo, HoverZoomImage, HumidifierHeroCard, HumidifierInlineControl, INPUT_COMPACT, IconAction, IconButton, ImageHeroCard, ImageInlineControl, ImageSelector, InferenceConfigSelector, Input, KebabMenu, KeyValueList, LIST_ROW, Label, LawnMowerHeroCard, LawnMowerInlineControl, LightHeroCard, LightInlineControl, LockHeroCard, LockInlineControl, LockPanel, LogStream, LoginForm, MODE_COLOR, MaskShapeCanvas, MediaPlayerHeroCard, MediaPlayerInlineControl, MediaPlayerPanel, MobileDrawer, ModelPicker, MotionZonesSettings, NodeMultiSelectField, NodePicker, NodeSelectField, OfflineBadge, PHASE_CONFIG, PRIORITY, PTZOverlay, PageHeader, PhaseIcon, PipelineBuilder, PipelineRuntimeSelector, PipelineStep, PipelineTreeMatrix, PlayerOverlaysProvider, Popover, PopoverContent, PopoverRowAction, PopoverTrigger, PrimaryChildPicker, PrivacyMaskSettings, ProviderBadge, PtzPanel, QrCode, RECONNECT_POLICY, RECORDED_PLAYBACK_MODES, RIGHT, ROI_AREA_WARN_FRACTION, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SCENE_CAPTURE_VARIANTS, 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, SceneMonitorEditor, ScopePicker, ScriptHeroCard, ScriptInlineControl, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, SettingRow, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, SortHeaderButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, Tooltip, TooltipContent, TooltipTrigger, VacuumHeroCard, VacuumInlineControl, ValueReadout, ValveHeroCard, ValveInlineControl, VersionBadge, VodPlaybackProvider, WaterHeaterHeroCard, WaterHeaterInlineControl, WeatherHeroCard, WeatherInlineControl, WidgetMetricCard, WidgetPanel, WidgetRegistryProvider, WidgetSlot, ZoneEditingProvider, ImageOff as a, agentColumnKey, allDeviceTypeFilterOptions, applyFleetQueryDefaults, ariaSortForColumn, badgeFor, buildStepTreeFromSchema, createLucideIcon as c, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, coverageLine, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, describeDeviceSelector, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeLabel, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupAgentColumns, groupChildrenByLayout, hardwareLabel, humanDuration, humidifierTint, Mic as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextReconnectAction, nextSort, nextSortDirection, nextTableSort, normalizeForSearch, EyeOff as o, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, RotateCcw as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEffectiveDefaultModel, resolveEffectiveStepModel, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, resolveStepDefaultModel, resolveTableLayout, roiTooLarge, Camera as s, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, shouldUseSingleNode, sortRows, sortRowsByColumn, statusIcons, statusLine, stepHasModelForFormat, stepModelOptions, stripParentNamePrefix, Trash2 as t, tabForSelector, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, useAddonSettingsGetIntegrationSettings, useAddonSettingsUpdateDeviceSettings, useAddonSettingsUpdateGlobalSettings, useAddonWidgetsListWidgets, useAddonsApplyAutoUpdateToAll, useAddonsCancelJob, useAddonsCustom, useAddonsForceRefresh, useAddonsGetAddonAutoUpdate, useAddonsGetAutoUpdateSettings, useAddonsGetJob, useAddonsGetLastRestart, useAddonsGetLogs, useAddonsGetVersions, useAddonsInstallFromWorkspace, useAddonsInstallPackage, useAddonsIsWorkspaceAvailable, useAddonsList, useAddonsListCapabilityProviders, useAddonsListFrameworkPackages, useAddonsListJobs, useAddonsListPackages, useAddonsListUpdates, useAddonsListWorkspacePackages, useAddonsOnAddonLogs, useAddonsReloadPackages, useAddonsRestartAddon, useAddonsRestartServer, useAddonsRetryLoad, useAddonsRollbackPackage, useAddonsSearchAvailable, useAddonsSetAddonAutoUpdate, useAddonsSetAutoUpdateSettings, useAddonsSetCapabilityProviderEnabled, useAddonsStartJob, useAddonsUninstallPackage, useAddonsUpdatePackage, useAirQualitySensorGetStatus, useAlarmPanelArm, useAlarmPanelDisarm, useAlarmPanelGetStatus, useAlarmPanelTrigger, useAlertsDismiss, useAlertsEmit, useAlertsGetUnreadCount, useAlertsList, useAlertsMarkAllRead, useAlertsMarkRead, useAlertsUpdate, useAllWidgets, useAmbientLightSensorGetStatus, useAudioAnalysisApplyDeviceSettingsPatch, useAudioAnalysisGetDeviceLiveContribution, useAudioAnalysisGetDeviceSettingsContribution, useAudioAnalysisResolveDeviceSettings, useAudioAnalyzerAnalyseChunk, useAudioAnalyzerClassify, useAudioAnalyzerDispose, useAudioAnalyzerIsReady, useAudioAnalyzerReprobeAudioEngine, useAudioCodecCanHandle, useAudioCodecCloseSession, useAudioCodecCreateDecodeSession, useAudioCodecCreateEncodeSession, useAudioCodecFlushEncode, useAudioCodecListActiveSessions, useAudioCodecListSupportedCodecs, useAudioCodecPullEncoded, useAudioCodecPullPcm, useAudioCodecPushEncodedFrame, useAudioCodecPushPcm, useAudioMetricsGetCurrentSnapshot, useAudioMetricsGetHistory, useAutomationControlDisable, useAutomationControlEnable, useAutomationControlGetStatus, useAutomationControlTrigger, useBackupDelete, useBackupDeleteSchedule, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupListSchedules, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, useBackupUpsertSchedule, useBatteryGetStatus, useBatteryWakeForStream, useBinaryGetStatus, useBrightnessGetStatus, useBrightnessSetBrightness, useBrokerAdd, useBrokerGet, useBrokerGetBrokerConfig, useBrokerGetSettings, useBrokerGetSettingsSchema, useBrokerGetState, useBrokerGetStatus, useBrokerList, useBrokerListProviders, useBrokerPublish, useBrokerRemove, useBrokerSetSettings, useBrokerSubscribe, useBrokerTestConnection, useBrokerTestSettings, useBrokerUnsubscribe, useButtonPress, useCameraCredentialsGetCredentials, useCameraCredentialsGetStatus, useCameraPipelineConfigApplyDeviceSettingsPatch, useCameraPipelineConfigGetDeviceLiveContribution, useCameraPipelineConfigGetDeviceSettingsContribution, useCameraStreamsGetBrokerStreams, useCameraStreamsGetCameraStreams, useCameraStreamsGetProfileRtspEntries, useCameraStreamsGetRtspEntries, useCameraStreamsPickStream, useCarbonMonoxideGetStatus, useClimateControlGetStatus, useClimateControlSetFanMode, useClimateControlSetMode, useClimateControlSetPreset, useClimateControlSetSwingHorizontal, useClimateControlSetSwingVertical, useClimateControlSetTarget, useClimateControlSetTargetHumidity, useClimateControlSetTargetRange, useClusterNodes, useClusterTopology, useColorGetStatus, useColorSetColor, useConfirm, useConnectionTestDescribeTest, useConnectionTestTestSettings, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, useCoreBlocksCompile, useCoreBlocksCreate, useCoreBlocksDelete, useCoreBlocksGet, useCoreBlocksGetTypeDefs, useCoreBlocksList, useCoreBlocksRestart, useCoreBlocksSetEnabled, useCoreBlocksUpdate, useCoverClose, useCoverGetStatus, useCoverOpen, useCoverSetPosition, useCoverSetTiltPosition, useCoverStop, useCustomFieldRenderer, useDayNightGetOptions, useDayNightGetStatus, useDayNightSetSettings, useDebouncedString, useDecoderCreateSession, useDecoderDestroySession, useDecoderGetFrame, useDecoderGetInfo, useDecoderGetShmStats, useDecoderGetStats, useDecoderListActiveSessions, useDecoderOpenStream, useDecoderPullFrames, useDecoderPullHandles, useDecoderPushPacket, useDecoderReprobeHwaccel, useDecoderSupportsCodec, useDecoderUpdateConfig, useDetectionPipelineApplyDeviceSettingsPatch, useDetectionPipelineGetDeviceLiveContribution, useDetectionPipelineGetDeviceSettingsContribution, useDevShell, useDevice, useDeviceAdoptionAdopt, useDeviceAdoptionGetCandidate, useDeviceAdoptionGetStatus, useDeviceAdoptionListCandidateFilters, useDeviceAdoptionListCandidates, useDeviceAdoptionRefresh, useDeviceAdoptionRelease, useDeviceAdoptionResync, useDeviceAutotrack, useDeviceBattery, useDeviceCapSlice, useDeviceCapability, useDeviceDetections, useDeviceDiscoveryAdoptDevice, useDeviceDiscoveryGetStatus, useDeviceDiscoveryListDiscovered, useDeviceDiscoveryRefreshDiscovery, useDeviceDiscoveryReleaseDevice, useDeviceExportApplyDeviceSettingsPatch, useDeviceExportExposeDevice, useDeviceExportGetDeviceLiveContribution, useDeviceExportGetDeviceSettingsContribution, useDeviceExportGetStatus, useDeviceExportListExposedDevices, useDeviceExportListSupportedDeviceKinds, useDeviceExportUnexposeDevice, useDeviceId, useDeviceListPageSize, useDeviceManagerAddLocation, useDeviceManagerAdoptDevice, useDeviceManagerAdoptionAdopt, useDeviceManagerAdoptionCancelJob, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionListJobs, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAdoptionStartJob, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetBindingsBatch, useDeviceManagerGetChildren, useDeviceManagerGetChildrenBatch, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetDeviceStatusAggregateBatch, useDeviceManagerGetLinkedDevices, useDeviceManagerGetLinkedDevicesBatch, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerMigrateDevice, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRenameLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDisabled, useDeviceManagerSetDisplay, useDeviceManagerSetIntegrationId, useDeviceManagerSetLinkDeviceId, useDeviceManagerSetLocation, useDeviceManagerSetMetadata, useDeviceManagerSetName, useDeviceManagerSetPrimaryChildEntityId, useDeviceManagerSetRole, useDeviceManagerSetRoleDisplayDefaults, useDeviceManagerSetStreamProfileMap, useDeviceManagerSetType, useDeviceManagerSetWrapperActive, useDeviceManagerTestCreationField, useDeviceManagerTestField, useDeviceManagerUpdateConfig, useDeviceManagerUpdateDeviceField, useDeviceManagerUpdateDeviceFieldsBatch, useDeviceOpsGetConfigEntries, useDeviceOpsGetRawState, useDeviceOpsGetSettingsSchema, useDeviceOpsGetStreamSources, useDeviceOpsRemoveDevice, useDeviceOpsRunAction, useDeviceOpsSetConfig, useDeviceProviderAdoptDiscoveredDevice, useDeviceProviderCreateDevice, useDeviceProviderDiscoverDevices, useDeviceProviderGetChildCreationSchema, useDeviceProviderGetDevices, useDeviceProviderGetDiscoveryParamsSchema, useDeviceProviderGetManualCreationType, useDeviceProviderGetStatus, useDeviceProviderStart, useDeviceProviderStop, useDeviceProviderSupportsDiscovery, useDeviceProviderSupportsManualCreation, useDeviceProviderTestCreationField, useDeviceProxy, useDeviceSnapshot, useDeviceSnapshotImage, useDeviceState, useDeviceStateGetAllSnapshots, useDeviceStateGetCapSlice, useDeviceStateGetSnapshot, useDeviceStateSetCapSlice, useDeviceStateSlice, useDeviceStatusGetStatus, useDeviceWebrtc, useDevices, useDoorbellApplyDeviceSettingsPatch, useDoorbellEvents, useDoorbellGetDeviceLiveContribution, useDoorbellGetDeviceSettingsContribution, useDoorbellGetStatus, useEnumSensorGetStatus, useEventEmitterGetStatus, useEventInvalidation, useEventStreamLatest, useEventStreamMap, useEventsGetEventClipUrl, useEventsGetEventThumbnail, useEventsGetEvents, useFaceGalleryAssignFace, useFaceGalleryAssignFaces, useFaceGalleryCreateIdentity, useFaceGalleryDeleteFace, useFaceGalleryDeleteIdentity, useFaceGalleryGetFaceByTrack, useFaceGalleryGetFaceMedia, useFaceGalleryListIdentities, useFaceGalleryListIdentitySamples, useFaceGalleryListRecentFaces, useFaceGalleryRemoveSample, useFaceGalleryRenameIdentity, useFaceGallerySuggestFaceClusters, useFaceGalleryUnassignFace, useFaceGalleryUnassignFaces, useFanControlGetStatus, useFanControlSetDirection, useFanControlSetOscillating, useFanControlSetPercentage, useFanControlSetPreset, useFeatureProbeGetStatus, useFloodGetStatus, useGasGetStatus, useHumidifierGetStatus, useHumidifierSetMode, useHumidifierSetOn, useHumidifierSetTargetHumidity, useHumiditySensorGetStatus, useImageGetStatus, useImageSettingsGetOptions, useImageSettingsGetStatus, useImageSettingsSetSettings, useIntegrationsCreate, useIntegrationsDelete, useIntegrationsGet, useIntegrationsGetAvailableTypes, useIntegrationsGetByAddonId, useIntegrationsGetSettings, useIntegrationsList, useIntegrationsSetSettings, useIntegrationsTestConnection, useIntegrationsUpdate, useIntercomEndTalkSession, useIntercomGetStatus, useIntercomHandleAnswer, useIntercomPushTalkAudio, useIntercomStartSession, useIntercomStartTalkSession, useIntercomStopSession, useIsMidWidth, useIsMobile, useLawnMowerControlDock, useLawnMowerControlGetStatus, useLawnMowerControlPause, useLawnMowerControlStartMowing, useLiveBuffer, useLiveEvent, useLlmCancel, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmResolveModelRef, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkDownloadCa, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetNotificationEndpoint, useLocalNetworkGetPreferred, useLocalNetworkGetTlsStatus, useLocalNetworkGetViewerEndpoints, useLocalNetworkList, useLocalNetworkRegenerateCertificate, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkRevertToGeneratedCertificate, useLocalNetworkSetAllowedAddresses, useLocalNetworkSetNotificationEndpoint, useLocalNetworkSetViewerEndpoints, useLocalNetworkUploadCertificate, 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, useNativeObjectDetectionGetStatus, useNativeObjectDetectionSetEnabled, useNetworkAccessGetEndpoint, useNetworkAccessGetStatus, useNetworkAccessListEndpoints, useNetworkAccessStart, useNetworkAccessStop, useNetworkQualityGetAllStats, useNetworkQualityGetDeviceStats, useNetworkQualityReportClientStats, useNodesClusterAddonStatus, useNodesDeployAddon, useNodesExecuteQuery, useNodesGetCapUsageGraph, useNodesGetNodeAddons, useNodesRenameNode, useNodesRestartAddon, useNodesRestartNode, useNodesRestartProcess, useNodesSetProcessLogLevel, useNodesShutdownNode, useNodesTopology, useNodesUndeployAddon, useNotificationOutputDeleteTarget, useNotificationOutputDiscoverTargets, useNotificationOutputListTargetKinds, useNotificationOutputListTargets, useNotificationOutputSend, useNotificationOutputSetTargetEnabled, useNotificationOutputTestTarget, useNotificationOutputUpsertTarget, useNotificationRulesCancelSnooze, useNotificationRulesCreateRule, useNotificationRulesCreateSnooze, useNotificationRulesDeleteRule, useNotificationRulesGetAlarmConfig, useNotificationRulesGetConditionCatalog, useNotificationRulesGetHistory, useNotificationRulesGetRule, useNotificationRulesListDeviceMutes, useNotificationRulesListRules, useNotificationRulesListSnoozes, useNotificationRulesResolveArtifactUrl, useNotificationRulesSetAlarmConfig, useNotificationRulesSetDeviceMuted, useNotificationRulesSetRuleEnabled, useNotificationRulesTestRule, useNotificationRulesUpdateRule, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdManagerClearSlotBinding, useOsdManagerCopyDeviceConfiguration, useOsdManagerGetConditionSupport, useOsdManagerGetDeviceOsd, useOsdManagerGetSourceCatalog, useOsdManagerPreviewSlot, useOsdManagerRenderDevice, useOsdManagerSetSlotBinding, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsCancelRelocateMedia, usePipelineAnalyticsCancelStorageMigrationMove, usePipelineAnalyticsClearTracks, usePipelineAnalyticsCompleteRetrainTrack, usePipelineAnalyticsCountRelocatableMedia, usePipelineAnalyticsCountUnstampedEventMedia, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsDeselectRetrainFrame, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventDensityBatch, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventMediaFootprintByKind, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetKeyEventsBatch, usePipelineAnalyticsGetMediaReclaimStatus, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEmbeddingRebuildStatus, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetRetrainExportUrl, usePipelineAnalyticsGetRetrainFrameImage, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetStorageMigrationMoveStatus, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsGetTrainingExportSummary, usePipelineAnalyticsGetTrainingExportUrl, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListEventKindsBatch, usePipelineAnalyticsListEventMedia, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListRelocateMediaJobs, usePipelineAnalyticsListRetrainAnnotations, usePipelineAnalyticsListRetrainFrames, usePipelineAnalyticsListRetrainStaging, usePipelineAnalyticsListTrackMedia, usePipelineAnalyticsListTracks, usePipelineAnalyticsPauseForStorageMigration, usePipelineAnalyticsProposeRetrainAnnotations, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsRebuildObjectEmbeddings, usePipelineAnalyticsReclaimDebugMedia, usePipelineAnalyticsReconcileFromDisk, usePipelineAnalyticsRefreshStorageLocationsForMigration, usePipelineAnalyticsRelocateMedia, usePipelineAnalyticsRestageRetrainTrack, usePipelineAnalyticsResumeForStorageMigration, usePipelineAnalyticsRunReplayFrameProcessor, usePipelineAnalyticsSaveRetrainAnnotations, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsSelectRetrainFrames, usePipelineAnalyticsSetTrackFlags, usePipelineAnalyticsStartStorageMigrationMove, usePipelineAnalyticsWipeAllAnalytics, usePipelineAnalyticsWipeObjectEmbeddings, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetInferenceDeviceHealth, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorRearmInferenceDevice, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCameraSwitches, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetNodeInferenceDevices, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorGetPipelineDevicePin, usePipelineOrchestratorGetReconcileFromDiskStatus, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorPauseForStorageMigration, usePipelineOrchestratorRebalance, usePipelineOrchestratorReconcileFromDisk, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorResumeForStorageMigration, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentInferenceDevices, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCameraSwitch, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorSetPipelineDevicePin, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, usePipelineRunnerRunStatelessStep, 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, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingCancelRelocateJob, useRecordingCancelStorageMigrationMove, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingExportReadExportBytes, useRecordingGetAvailability, useRecordingGetAvailabilityBatch, useRecordingGetDaysWithRecordings, useRecordingGetDaysWithRecordingsBatch, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlacement, useRecordingGetPlaybackManifest, useRecordingGetRelocateResidue, useRecordingGetStatus, useRecordingGetStorageMigrationMoveStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingListRelocateJobs, useRecordingLocateSegment, useRecordingPauseForStorageMigration, useRecordingPlanStorageRebalance, useRecordingPruneFootage, useRecordingReadGopBytes, useRecordingReadSegmentBytes, useRecordingReadWindowBytes, useRecordingReconcileLedgerAgainstDisk, useRecordingRefreshStorageLocationsForMigration, useRecordingRelocateFootage, useRecordingRenderClip, useRecordingRenderGif, useRecordingRescanStorage, useRecordingResumeForStorageMigration, useRecordingSetDeviceConfig, useRecordingSetDevicePlacement, useRecordingStartStorageMigrationMove, useRecordingStartStorageRebalance, useRemoteComponent, 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, useSettingsStoreUpdate, useSettingsStoreUpdateWhere, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDebugState, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotLinks, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageMigrationCancel, useStorageMigrationCleanupCancel, useStorageMigrationCleanupStart, useStorageMigrationCleanupStatus, useStorageMigrationDrain, useStorageMigrationHistory, useStorageMigrationMovers, useStorageMigrationPlan, useStorageMigrationResidue, useStorageMigrationStart, useStorageMigrationStatus, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerAcquireEgressTranscode, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerFetchEventMedia, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceAudioMute, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerProduceEventMedia, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseEgressTranscode, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRenderPreBufferClip, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetDeviceAudioMute, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, 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, useTurnProviderGetTurnServers, useUpdateGetStatus, useUpdateInstallUpdate, useUserManagementConfirmTotp, useUserManagementCreateApiKey, useUserManagementCreateScopedToken, useUserManagementCreateUser, useUserManagementDeleteUser, useUserManagementDisableTotp, useUserManagementGetTotpStatus, useUserManagementListApiKeys, useUserManagementListOauthSessions, useUserManagementListScopedTokens, useUserManagementListUsers, useUserManagementOauthExchangeCode, useUserManagementOauthIssueCode, useUserManagementOauthRefresh, useUserManagementOauthVerifyAccessToken, useUserManagementResetPassword, useUserManagementRevokeApiKey, useUserManagementRevokeOauthSession, useUserManagementRevokeScopedToken, useUserManagementSetUserScopes, useUserManagementSetupTotp, useUserManagementUpdateUser, useUserManagementValidateApiKey, useUserManagementValidateCredentials, useUserManagementValidateScopedToken, useUserManagementVerifyTotp, useVacuumControlGetStatus, useVacuumControlLocate, useVacuumControlPause, useVacuumControlReturnToBase, useVacuumControlSetFanSpeed, useVacuumControlStart, useVacuumControlStop, useValveClose, useValveGetStatus, useValveOpen, useValveSetPosition, useValveStop, useVibrationGetStatus, useVideoclipsGetClipPlayback, useVideoclipsListClips, useVodPlayback, useWaterHeaterGetStatus, useWaterHeaterSetAway, useWaterHeaterSetOperationMode, useWaterHeaterSetTargetTemp, useWeatherGetStatus, useWebrtcSessionAddIceCandidate, useWebrtcSessionCloseSession, useWebrtcSessionCreateSession, useWebrtcSessionGetIceCandidates, useWebrtcSessionGetSessionState, useWebrtcSessionHandleAnswer, useWebrtcSessionHandleOffer, useWebrtcSessionHasAdaptiveBitrate, useWebrtcSessionListStreams, useWidget, useWidgetMetadata, useWidgetRegistry, useZoneAnalyticsGetCameraHistory, useZoneAnalyticsGetCurrentSnapshot, useZoneAnalyticsGetCurrentSnapshotBatch, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, variantLabel, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/ui-library",
3
- "version": "1.2.102",
3
+ "version": "1.2.105",
4
4
  "type": "module",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -1,18 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { UseDeviceProxyTrpc } from '../../hooks/use-device-proxy';
3
- import { DeviceItemDevice, DeviceItemParent } from '../device-item/helpers';
4
- export interface CardsLayoutProps {
5
- readonly rows: readonly DeviceItemDevice[];
6
- readonly accessoriesByParent: ReadonlyMap<number, readonly DeviceItemDevice[]>;
7
- readonly trpc: UseDeviceProxyTrpc;
8
- readonly resolveIntegrationIcon: ((addonId: string) => ReactNode | null) | null;
9
- readonly resolveParent: ((parentId: number) => DeviceItemParent | null) | null;
10
- readonly onNavigate: ((deviceId: number) => void) | null;
11
- readonly renderRowAction: ((device: DeviceItemDevice) => ReactNode) | null;
12
- readonly selectable: boolean;
13
- /** Batch mode active — a row click toggles selection instead of navigating. */
14
- readonly rowClickSelects: boolean;
15
- readonly activeSelected: ReadonlySet<number>;
16
- readonly onToggleSelection: (id: number) => void;
17
- }
18
- export declare function CardsLayout({ rows, accessoriesByParent, trpc, resolveIntegrationIcon, resolveParent, onNavigate, renderRowAction, selectable, rowClickSelects, activeSelected, onToggleSelection, }: CardsLayoutProps): ReactNode;