@camstack/ui-library 1.1.41 → 1.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import * as __mfHostReact from "react";
3
3
  import React, { Fragment, Suspense, createContext, createElement, forwardRef, lazy, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
4
4
  import * as __mfHostReactJsxRuntime from "react/jsx-runtime";
5
5
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
- import { ALL_CAPABILITY_DEFINITIONS, DEFAULT_SCRUB_THUMBNAIL_PRESET, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, ScrubThumbnailPresetSchema, SourceInfoSchema, TIMEZONES, buildModelVariantGroups, canConvertUnit, createDeviceProxy, createLazyTrpcSource, createSliceHandle, describeModelVariant, findTimezone, resolveVariantModelId, tryConvertUnit } from "@camstack/types";
6
+ import { ALL_CAPABILITY_DEFINITIONS, DEFAULT_EVENT_COLOR, DEFAULT_SCRUB_THUMBNAIL_PRESET, DeviceExportStatusSchema, DeviceFeature, DeviceRole, DeviceType, EVENT_TAXONOMY, EventCategory, ExposedDeviceSchema, KNOWN_CAP_NAMES, PET_FEEDER_MANUAL_FEED_MAX, PET_FEEDER_MANUAL_FEED_MIN, RecordingConfigSchema, RecordingStatusSchema, SCRUB_THUMBNAIL_PRESET_LABELS, SCRUB_THUMBNAIL_PRESET_ORDER, ScrubThumbnailPresetSchema, SourceInfoSchema, TIMEZONES, buildModelVariantGroups, canConvertUnit, createDeviceProxy, createLazyTrpcSource, createSliceHandle, describeModelVariant, findTimezone, resolveVariantModelId, tryConvertUnit } from "@camstack/types";
7
7
  import * as __mfHostReactDOM from "react-dom";
8
8
  import { createPortal } from "react-dom";
9
9
  import * as __mfHostReactDOMClient from "react-dom/client";
@@ -8225,6 +8225,30 @@ var ArrowUp = createLucideIcon("arrow-up", [["path", {
8225
8225
  * This source code is licensed under the ISC license.
8226
8226
  * See the LICENSE file in the root directory of this source tree.
8227
8227
  */
8228
+ var Baby = createLucideIcon("baby", [
8229
+ ["path", {
8230
+ d: "M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5",
8231
+ key: "1u7htd"
8232
+ }],
8233
+ ["path", {
8234
+ d: "M15 12h.01",
8235
+ key: "1k8ypt"
8236
+ }],
8237
+ ["path", {
8238
+ d: "M19.38 6.813A9 9 0 0 1 20.8 10.2a2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1",
8239
+ key: "11xh7x"
8240
+ }],
8241
+ ["path", {
8242
+ d: "M9 12h.01",
8243
+ key: "157uk2"
8244
+ }]
8245
+ ]);
8246
+ /**
8247
+ * @license lucide-react v0.576.0 - ISC
8248
+ *
8249
+ * This source code is licensed under the ISC license.
8250
+ * See the LICENSE file in the root directory of this source tree.
8251
+ */
8228
8252
  var Ban = createLucideIcon("ban", [["circle", {
8229
8253
  cx: "12",
8230
8254
  cy: "12",
@@ -8434,6 +8458,68 @@ var Bell = createLucideIcon("bell", [["path", {
8434
8458
  * This source code is licensed under the ISC license.
8435
8459
  * See the LICENSE file in the root directory of this source tree.
8436
8460
  */
8461
+ var Bike = createLucideIcon("bike", [
8462
+ ["circle", {
8463
+ cx: "18.5",
8464
+ cy: "17.5",
8465
+ r: "3.5",
8466
+ key: "15x4ox"
8467
+ }],
8468
+ ["circle", {
8469
+ cx: "5.5",
8470
+ cy: "17.5",
8471
+ r: "3.5",
8472
+ key: "1noe27"
8473
+ }],
8474
+ ["circle", {
8475
+ cx: "15",
8476
+ cy: "5",
8477
+ r: "1",
8478
+ key: "19l28e"
8479
+ }],
8480
+ ["path", {
8481
+ d: "M12 17.5V14l-3-3 4-3 2 3h2",
8482
+ key: "1npguv"
8483
+ }]
8484
+ ]);
8485
+ /**
8486
+ * @license lucide-react v0.576.0 - ISC
8487
+ *
8488
+ * This source code is licensed under the ISC license.
8489
+ * See the LICENSE file in the root directory of this source tree.
8490
+ */
8491
+ var Bird = createLucideIcon("bird", [
8492
+ ["path", {
8493
+ d: "M16 7h.01",
8494
+ key: "1kdx03"
8495
+ }],
8496
+ ["path", {
8497
+ d: "M3.4 18H12a8 8 0 0 0 8-8V7a4 4 0 0 0-7.28-2.3L2 20",
8498
+ key: "oj1oa8"
8499
+ }],
8500
+ ["path", {
8501
+ d: "m20 7 2 .5-2 .5",
8502
+ key: "12nv4d"
8503
+ }],
8504
+ ["path", {
8505
+ d: "M10 18v3",
8506
+ key: "1yea0a"
8507
+ }],
8508
+ ["path", {
8509
+ d: "M14 17.75V21",
8510
+ key: "1pymcb"
8511
+ }],
8512
+ ["path", {
8513
+ d: "M7 18a6 6 0 0 0 3.84-10.61",
8514
+ key: "1npnn0"
8515
+ }]
8516
+ ]);
8517
+ /**
8518
+ * @license lucide-react v0.576.0 - ISC
8519
+ *
8520
+ * This source code is licensed under the ISC license.
8521
+ * See the LICENSE file in the root directory of this source tree.
8522
+ */
8437
8523
  var Blinds = createLucideIcon("blinds", [
8438
8524
  ["path", {
8439
8525
  d: "M3 3h18",
@@ -8590,6 +8676,46 @@ var Bug = createLucideIcon("bug", [
8590
8676
  * This source code is licensed under the ISC license.
8591
8677
  * See the LICENSE file in the root directory of this source tree.
8592
8678
  */
8679
+ var Bus = createLucideIcon("bus", [
8680
+ ["path", {
8681
+ d: "M8 6v6",
8682
+ key: "18i7km"
8683
+ }],
8684
+ ["path", {
8685
+ d: "M15 6v6",
8686
+ key: "1sg6z9"
8687
+ }],
8688
+ ["path", {
8689
+ d: "M2 12h19.6",
8690
+ key: "de5uta"
8691
+ }],
8692
+ ["path", {
8693
+ d: "M18 18h3s.5-1.7.8-2.8c.1-.4.2-.8.2-1.2 0-.4-.1-.8-.2-1.2l-1.4-5C20.1 6.8 19.1 6 18 6H4a2 2 0 0 0-2 2v10h3",
8694
+ key: "1wwztk"
8695
+ }],
8696
+ ["circle", {
8697
+ cx: "7",
8698
+ cy: "18",
8699
+ r: "2",
8700
+ key: "19iecd"
8701
+ }],
8702
+ ["path", {
8703
+ d: "M9 18h5",
8704
+ key: "lrx6i"
8705
+ }],
8706
+ ["circle", {
8707
+ cx: "16",
8708
+ cy: "18",
8709
+ r: "2",
8710
+ key: "1v4tcr"
8711
+ }]
8712
+ ]);
8713
+ /**
8714
+ * @license lucide-react v0.576.0 - ISC
8715
+ *
8716
+ * This source code is licensed under the ISC license.
8717
+ * See the LICENSE file in the root directory of this source tree.
8718
+ */
8593
8719
  var Camera = createLucideIcon("camera", [["path", {
8594
8720
  d: "M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z",
8595
8721
  key: "18u6gg"
@@ -8605,6 +8731,34 @@ var Camera = createLucideIcon("camera", [["path", {
8605
8731
  * This source code is licensed under the ISC license.
8606
8732
  * See the LICENSE file in the root directory of this source tree.
8607
8733
  */
8734
+ var Car = createLucideIcon("car", [
8735
+ ["path", {
8736
+ d: "M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",
8737
+ key: "5owen"
8738
+ }],
8739
+ ["circle", {
8740
+ cx: "7",
8741
+ cy: "17",
8742
+ r: "2",
8743
+ key: "u2ysq9"
8744
+ }],
8745
+ ["path", {
8746
+ d: "M9 17h6",
8747
+ key: "r8uit2"
8748
+ }],
8749
+ ["circle", {
8750
+ cx: "17",
8751
+ cy: "17",
8752
+ r: "2",
8753
+ key: "axvx0g"
8754
+ }]
8755
+ ]);
8756
+ /**
8757
+ * @license lucide-react v0.576.0 - ISC
8758
+ *
8759
+ * This source code is licensed under the ISC license.
8760
+ * See the LICENSE file in the root directory of this source tree.
8761
+ */
8608
8762
  var Cast = createLucideIcon("cast", [
8609
8763
  ["path", {
8610
8764
  d: "M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6",
@@ -8632,6 +8786,30 @@ var Cast = createLucideIcon("cast", [
8632
8786
  * This source code is licensed under the ISC license.
8633
8787
  * See the LICENSE file in the root directory of this source tree.
8634
8788
  */
8789
+ var Cat = createLucideIcon("cat", [
8790
+ ["path", {
8791
+ d: "M12 5c.67 0 1.35.09 2 .26 1.78-2 5.03-2.84 6.42-2.26 1.4.58-.42 7-.42 7 .57 1.07 1 2.24 1 3.44C21 17.9 16.97 21 12 21s-9-3-9-7.56c0-1.25.5-2.4 1-3.44 0 0-1.89-6.42-.5-7 1.39-.58 4.72.23 6.5 2.23A9.04 9.04 0 0 1 12 5Z",
8792
+ key: "x6xyqk"
8793
+ }],
8794
+ ["path", {
8795
+ d: "M8 14v.5",
8796
+ key: "1nzgdb"
8797
+ }],
8798
+ ["path", {
8799
+ d: "M16 14v.5",
8800
+ key: "1lajdz"
8801
+ }],
8802
+ ["path", {
8803
+ d: "M11.25 16.25h1.5L12 17l-.75-.75Z",
8804
+ key: "12kq1m"
8805
+ }]
8806
+ ]);
8807
+ /**
8808
+ * @license lucide-react v0.576.0 - ISC
8809
+ *
8810
+ * This source code is licensed under the ISC license.
8811
+ * See the LICENSE file in the root directory of this source tree.
8812
+ */
8635
8813
  var Check = createLucideIcon("check", [["path", {
8636
8814
  d: "M20 6 9 17l-5-5",
8637
8815
  key: "1gmf2c"
@@ -9025,6 +9203,74 @@ var Cloud = createLucideIcon("cloud", [["path", {
9025
9203
  * This source code is licensed under the ISC license.
9026
9204
  * See the LICENSE file in the root directory of this source tree.
9027
9205
  */
9206
+ var Cog = createLucideIcon("cog", [
9207
+ ["path", {
9208
+ d: "M11 10.27 7 3.34",
9209
+ key: "16pf9h"
9210
+ }],
9211
+ ["path", {
9212
+ d: "m11 13.73-4 6.93",
9213
+ key: "794ttg"
9214
+ }],
9215
+ ["path", {
9216
+ d: "M12 22v-2",
9217
+ key: "1osdcq"
9218
+ }],
9219
+ ["path", {
9220
+ d: "M12 2v2",
9221
+ key: "tus03m"
9222
+ }],
9223
+ ["path", {
9224
+ d: "M14 12h8",
9225
+ key: "4f43i9"
9226
+ }],
9227
+ ["path", {
9228
+ d: "m17 20.66-1-1.73",
9229
+ key: "eq3orb"
9230
+ }],
9231
+ ["path", {
9232
+ d: "m17 3.34-1 1.73",
9233
+ key: "2wel8s"
9234
+ }],
9235
+ ["path", {
9236
+ d: "M2 12h2",
9237
+ key: "1t8f8n"
9238
+ }],
9239
+ ["path", {
9240
+ d: "m20.66 17-1.73-1",
9241
+ key: "sg0v6f"
9242
+ }],
9243
+ ["path", {
9244
+ d: "m20.66 7-1.73 1",
9245
+ key: "1ow05n"
9246
+ }],
9247
+ ["path", {
9248
+ d: "m3.34 17 1.73-1",
9249
+ key: "nuk764"
9250
+ }],
9251
+ ["path", {
9252
+ d: "m3.34 7 1.73 1",
9253
+ key: "1ulond"
9254
+ }],
9255
+ ["circle", {
9256
+ cx: "12",
9257
+ cy: "12",
9258
+ r: "2",
9259
+ key: "1c9p78"
9260
+ }],
9261
+ ["circle", {
9262
+ cx: "12",
9263
+ cy: "12",
9264
+ r: "8",
9265
+ key: "46899m"
9266
+ }]
9267
+ ]);
9268
+ /**
9269
+ * @license lucide-react v0.576.0 - ISC
9270
+ *
9271
+ * This source code is licensed under the ISC license.
9272
+ * See the LICENSE file in the root directory of this source tree.
9273
+ */
9028
9274
  var CopyPlus = createLucideIcon("copy-plus", [
9029
9275
  ["line", {
9030
9276
  x1: "15",
@@ -9215,6 +9461,34 @@ var Database = createLucideIcon("database", [
9215
9461
  * This source code is licensed under the ISC license.
9216
9462
  * See the LICENSE file in the root directory of this source tree.
9217
9463
  */
9464
+ var Dog = createLucideIcon("dog", [
9465
+ ["path", {
9466
+ d: "M11.25 16.25h1.5L12 17z",
9467
+ key: "w7jh35"
9468
+ }],
9469
+ ["path", {
9470
+ d: "M16 14v.5",
9471
+ key: "1lajdz"
9472
+ }],
9473
+ ["path", {
9474
+ d: "M4.42 11.247A13.152 13.152 0 0 0 4 14.556C4 18.728 7.582 21 12 21s8-2.272 8-6.444a11.702 11.702 0 0 0-.493-3.309",
9475
+ key: "u7s9ue"
9476
+ }],
9477
+ ["path", {
9478
+ d: "M8 14v.5",
9479
+ key: "1nzgdb"
9480
+ }],
9481
+ ["path", {
9482
+ d: "M8.5 8.5c-.384 1.05-1.083 2.028-2.344 2.5-1.931.722-3.576-.297-3.656-1-.113-.994 1.177-6.53 4-7 1.923-.321 3.651.845 3.651 2.235A7.497 7.497 0 0 1 14 5.277c0-1.39 1.844-2.598 3.767-2.277 2.823.47 4.113 6.006 4 7-.08.703-1.725 1.722-3.656 1-1.261-.472-1.855-1.45-2.239-2.5",
9483
+ key: "v8hric"
9484
+ }]
9485
+ ]);
9486
+ /**
9487
+ * @license lucide-react v0.576.0 - ISC
9488
+ *
9489
+ * This source code is licensed under the ISC license.
9490
+ * See the LICENSE file in the root directory of this source tree.
9491
+ */
9218
9492
  var DoorClosed = createLucideIcon("door-closed", [
9219
9493
  ["path", {
9220
9494
  d: "M10 12h.01",
@@ -9649,6 +9923,26 @@ var GripHorizontal = createLucideIcon("grip-horizontal", [
9649
9923
  * This source code is licensed under the ISC license.
9650
9924
  * See the LICENSE file in the root directory of this source tree.
9651
9925
  */
9926
+ var Hammer = createLucideIcon("hammer", [
9927
+ ["path", {
9928
+ d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",
9929
+ key: "1hayfq"
9930
+ }],
9931
+ ["path", {
9932
+ d: "m18 15 4-4",
9933
+ key: "16gjal"
9934
+ }],
9935
+ ["path", {
9936
+ d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",
9937
+ key: "15ts47"
9938
+ }]
9939
+ ]);
9940
+ /**
9941
+ * @license lucide-react v0.576.0 - ISC
9942
+ *
9943
+ * This source code is licensed under the ISC license.
9944
+ * See the LICENSE file in the root directory of this source tree.
9945
+ */
9652
9946
  var HardDrive = createLucideIcon("hard-drive", [
9653
9947
  ["path", {
9654
9948
  d: "M10 16h.01",
@@ -9825,6 +10119,38 @@ var Info = createLucideIcon("info", [
9825
10119
  * This source code is licensed under the ISC license.
9826
10120
  * See the LICENSE file in the root directory of this source tree.
9827
10121
  */
10122
+ var Laugh = createLucideIcon("laugh", [
10123
+ ["circle", {
10124
+ cx: "12",
10125
+ cy: "12",
10126
+ r: "10",
10127
+ key: "1mglay"
10128
+ }],
10129
+ ["path", {
10130
+ d: "M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z",
10131
+ key: "b2q4dd"
10132
+ }],
10133
+ ["line", {
10134
+ x1: "9",
10135
+ x2: "9.01",
10136
+ y1: "9",
10137
+ y2: "9",
10138
+ key: "yxxnd0"
10139
+ }],
10140
+ ["line", {
10141
+ x1: "15",
10142
+ x2: "15.01",
10143
+ y1: "9",
10144
+ y2: "9",
10145
+ key: "1p4y9e"
10146
+ }]
10147
+ ]);
10148
+ /**
10149
+ * @license lucide-react v0.576.0 - ISC
10150
+ *
10151
+ * This source code is licensed under the ISC license.
10152
+ * See the LICENSE file in the root directory of this source tree.
10153
+ */
9828
10154
  var LayoutGrid = createLucideIcon("layout-grid", [
9829
10155
  ["rect", {
9830
10156
  width: "7",
@@ -10428,6 +10754,30 @@ var Network = createLucideIcon("network", [
10428
10754
  * This source code is licensed under the ISC license.
10429
10755
  * See the LICENSE file in the root directory of this source tree.
10430
10756
  */
10757
+ var Package = createLucideIcon("package", [
10758
+ ["path", {
10759
+ d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
10760
+ key: "1a0edw"
10761
+ }],
10762
+ ["path", {
10763
+ d: "M12 22V12",
10764
+ key: "d0xqtd"
10765
+ }],
10766
+ ["polyline", {
10767
+ points: "3.29 7 12 12 20.71 7",
10768
+ key: "ousv84"
10769
+ }],
10770
+ ["path", {
10771
+ d: "m7.5 4.27 9 5.15",
10772
+ key: "1c824w"
10773
+ }]
10774
+ ]);
10775
+ /**
10776
+ * @license lucide-react v0.576.0 - ISC
10777
+ *
10778
+ * This source code is licensed under the ISC license.
10779
+ * See the LICENSE file in the root directory of this source tree.
10780
+ */
10431
10781
  var Pause = createLucideIcon("pause", [["rect", {
10432
10782
  x: "14",
10433
10783
  y: "3",
@@ -10492,6 +10842,16 @@ var Pencil = createLucideIcon("pencil", [["path", {
10492
10842
  * This source code is licensed under the ISC license.
10493
10843
  * See the LICENSE file in the root directory of this source tree.
10494
10844
  */
10845
+ var Phone = createLucideIcon("phone", [["path", {
10846
+ d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",
10847
+ key: "9njp5v"
10848
+ }]]);
10849
+ /**
10850
+ * @license lucide-react v0.576.0 - ISC
10851
+ *
10852
+ * This source code is licensed under the ISC license.
10853
+ * See the LICENSE file in the root directory of this source tree.
10854
+ */
10495
10855
  var Pipette = createLucideIcon("pipette", [
10496
10856
  ["path", {
10497
10857
  d: "m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12",
@@ -10512,6 +10872,16 @@ var Pipette = createLucideIcon("pipette", [
10512
10872
  * This source code is licensed under the ISC license.
10513
10873
  * See the LICENSE file in the root directory of this source tree.
10514
10874
  */
10875
+ var Plane = createLucideIcon("plane", [["path", {
10876
+ d: "M17.8 19.2 16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z",
10877
+ key: "1v9wt8"
10878
+ }]]);
10879
+ /**
10880
+ * @license lucide-react v0.576.0 - ISC
10881
+ *
10882
+ * This source code is licensed under the ISC license.
10883
+ * See the LICENSE file in the root directory of this source tree.
10884
+ */
10515
10885
  var Play = createLucideIcon("play", [["path", {
10516
10886
  d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",
10517
10887
  key: "10ikf1"
@@ -10786,6 +11156,26 @@ var RotateCw = createLucideIcon("rotate-cw", [["path", {
10786
11156
  * This source code is licensed under the ISC license.
10787
11157
  * See the LICENSE file in the root directory of this source tree.
10788
11158
  */
11159
+ var Sailboat = createLucideIcon("sailboat", [
11160
+ ["path", {
11161
+ d: "M10 2v15",
11162
+ key: "1qf71f"
11163
+ }],
11164
+ ["path", {
11165
+ d: "M7 22a4 4 0 0 1-4-4 1 1 0 0 1 1-1h16a1 1 0 0 1 1 1 4 4 0 0 1-4 4z",
11166
+ key: "1pxcvx"
11167
+ }],
11168
+ ["path", {
11169
+ d: "M9.159 2.46a1 1 0 0 1 1.521-.193l9.977 8.98A1 1 0 0 1 20 13H4a1 1 0 0 1-.824-1.567z",
11170
+ key: "5oog16"
11171
+ }]
11172
+ ]);
11173
+ /**
11174
+ * @license lucide-react v0.576.0 - ISC
11175
+ *
11176
+ * This source code is licensed under the ISC license.
11177
+ * See the LICENSE file in the root directory of this source tree.
11178
+ */
10789
11179
  var Save = createLucideIcon("save", [
10790
11180
  ["path", {
10791
11181
  d: "M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",
@@ -11451,6 +11841,22 @@ var Table2 = createLucideIcon("table-2", [["path", {
11451
11841
  * This source code is licensed under the ISC license.
11452
11842
  * See the LICENSE file in the root directory of this source tree.
11453
11843
  */
11844
+ var Tag = createLucideIcon("tag", [["path", {
11845
+ 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",
11846
+ key: "vktsd0"
11847
+ }], ["circle", {
11848
+ cx: "7.5",
11849
+ cy: "7.5",
11850
+ r: ".5",
11851
+ fill: "currentColor",
11852
+ key: "kqv944"
11853
+ }]]);
11854
+ /**
11855
+ * @license lucide-react v0.576.0 - ISC
11856
+ *
11857
+ * This source code is licensed under the ISC license.
11858
+ * See the LICENSE file in the root directory of this source tree.
11859
+ */
11454
11860
  var Target = createLucideIcon("target", [
11455
11861
  ["circle", {
11456
11862
  cx: "12",
@@ -11506,6 +11912,25 @@ var ToggleLeft = createLucideIcon("toggle-left", [["circle", {
11506
11912
  * This source code is licensed under the ISC license.
11507
11913
  * See the LICENSE file in the root directory of this source tree.
11508
11914
  */
11915
+ var ToggleRight = createLucideIcon("toggle-right", [["circle", {
11916
+ cx: "15",
11917
+ cy: "12",
11918
+ r: "3",
11919
+ key: "1afu0r"
11920
+ }], ["rect", {
11921
+ width: "20",
11922
+ height: "14",
11923
+ x: "2",
11924
+ y: "5",
11925
+ rx: "7",
11926
+ key: "g7kal2"
11927
+ }]]);
11928
+ /**
11929
+ * @license lucide-react v0.576.0 - ISC
11930
+ *
11931
+ * This source code is licensed under the ISC license.
11932
+ * See the LICENSE file in the root directory of this source tree.
11933
+ */
11509
11934
  var Tractor = createLucideIcon("tractor", [
11510
11935
  ["path", {
11511
11936
  d: "m10 11 11 .9a1 1 0 0 1 .8 1.1l-.665 4.158a1 1 0 0 1-.988.842H20",
@@ -11554,6 +11979,38 @@ var Tractor = createLucideIcon("tractor", [
11554
11979
  * This source code is licensed under the ISC license.
11555
11980
  * See the LICENSE file in the root directory of this source tree.
11556
11981
  */
11982
+ var TrainFront = createLucideIcon("train-front", [
11983
+ ["path", {
11984
+ d: "M8 3.1V7a4 4 0 0 0 8 0V3.1",
11985
+ key: "1v71zp"
11986
+ }],
11987
+ ["path", {
11988
+ d: "m9 15-1-1",
11989
+ key: "1yrq24"
11990
+ }],
11991
+ ["path", {
11992
+ d: "m15 15 1-1",
11993
+ key: "1t0d6s"
11994
+ }],
11995
+ ["path", {
11996
+ d: "M9 19c-2.8 0-5-2.2-5-5v-4a8 8 0 0 1 16 0v4c0 2.8-2.2 5-5 5Z",
11997
+ key: "1p0hjs"
11998
+ }],
11999
+ ["path", {
12000
+ d: "m8 19-2 3",
12001
+ key: "13i0xs"
12002
+ }],
12003
+ ["path", {
12004
+ d: "m16 19 2 3",
12005
+ key: "xo31yx"
12006
+ }]
12007
+ ]);
12008
+ /**
12009
+ * @license lucide-react v0.576.0 - ISC
12010
+ *
12011
+ * This source code is licensed under the ISC license.
12012
+ * See the LICENSE file in the root directory of this source tree.
12013
+ */
11557
12014
  var Trash2 = createLucideIcon("trash-2", [
11558
12015
  ["path", {
11559
12016
  d: "M10 11v6",
@@ -11628,6 +12085,38 @@ var TriangleAlert = createLucideIcon("triangle-alert", [
11628
12085
  * This source code is licensed under the ISC license.
11629
12086
  * See the LICENSE file in the root directory of this source tree.
11630
12087
  */
12088
+ var Truck = createLucideIcon("truck", [
12089
+ ["path", {
12090
+ d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2",
12091
+ key: "wrbu53"
12092
+ }],
12093
+ ["path", {
12094
+ d: "M15 18H9",
12095
+ key: "1lyqi6"
12096
+ }],
12097
+ ["path", {
12098
+ d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14",
12099
+ key: "lysw3i"
12100
+ }],
12101
+ ["circle", {
12102
+ cx: "17",
12103
+ cy: "18",
12104
+ r: "2",
12105
+ key: "332jqn"
12106
+ }],
12107
+ ["circle", {
12108
+ cx: "7",
12109
+ cy: "18",
12110
+ r: "2",
12111
+ key: "19iecd"
12112
+ }]
12113
+ ]);
12114
+ /**
12115
+ * @license lucide-react v0.576.0 - ISC
12116
+ *
12117
+ * This source code is licensed under the ISC license.
12118
+ * See the LICENSE file in the root directory of this source tree.
12119
+ */
11631
12120
  var Type = createLucideIcon("type", [
11632
12121
  ["path", {
11633
12122
  d: "M12 4v16",
@@ -11678,6 +12167,69 @@ var Upload = createLucideIcon("upload", [
11678
12167
  * This source code is licensed under the ISC license.
11679
12168
  * See the LICENSE file in the root directory of this source tree.
11680
12169
  */
12170
+ var UserCheck = createLucideIcon("user-check", [
12171
+ ["path", {
12172
+ d: "m16 11 2 2 4-4",
12173
+ key: "9rsbq5"
12174
+ }],
12175
+ ["path", {
12176
+ d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",
12177
+ key: "1yyitq"
12178
+ }],
12179
+ ["circle", {
12180
+ cx: "9",
12181
+ cy: "7",
12182
+ r: "4",
12183
+ key: "nufk8"
12184
+ }]
12185
+ ]);
12186
+ /**
12187
+ * @license lucide-react v0.576.0 - ISC
12188
+ *
12189
+ * This source code is licensed under the ISC license.
12190
+ * See the LICENSE file in the root directory of this source tree.
12191
+ */
12192
+ var User = createLucideIcon("user", [["path", {
12193
+ d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",
12194
+ key: "975kel"
12195
+ }], ["circle", {
12196
+ cx: "12",
12197
+ cy: "7",
12198
+ r: "4",
12199
+ key: "17ys0d"
12200
+ }]]);
12201
+ /**
12202
+ * @license lucide-react v0.576.0 - ISC
12203
+ *
12204
+ * This source code is licensed under the ISC license.
12205
+ * See the LICENSE file in the root directory of this source tree.
12206
+ */
12207
+ var Users = createLucideIcon("users", [
12208
+ ["path", {
12209
+ d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",
12210
+ key: "1yyitq"
12211
+ }],
12212
+ ["path", {
12213
+ d: "M16 3.128a4 4 0 0 1 0 7.744",
12214
+ key: "16gr8j"
12215
+ }],
12216
+ ["path", {
12217
+ d: "M22 21v-2a4 4 0 0 0-3-3.87",
12218
+ key: "kshegd"
12219
+ }],
12220
+ ["circle", {
12221
+ cx: "9",
12222
+ cy: "7",
12223
+ r: "4",
12224
+ key: "nufk8"
12225
+ }]
12226
+ ]);
12227
+ /**
12228
+ * @license lucide-react v0.576.0 - ISC
12229
+ *
12230
+ * This source code is licensed under the ISC license.
12231
+ * See the LICENSE file in the root directory of this source tree.
12232
+ */
11681
12233
  var UtensilsCrossed = createLucideIcon("utensils-crossed", [
11682
12234
  ["path", {
11683
12235
  d: "m16 2-2.3 2.3a3 3 0 0 0 0 4.2l1.8 1.8a3 3 0 0 0 4.2 0L22 8",
@@ -17111,8 +17663,6 @@ var useAddonsListFrameworkPackages = trpc.addons.listFrameworkPackages.useQuery;
17111
17663
  var useAddonsListCapabilityProviders = trpc.addons.listCapabilityProviders.useQuery;
17112
17664
  /** Generated alias around `trpc.addons.setCapabilityProviderEnabled.useMutation`. */
17113
17665
  var useAddonsSetCapabilityProviderEnabled = trpc.addons.setCapabilityProviderEnabled.useMutation;
17114
- /** Generated alias around `trpc.addons.updateFrameworkPackage.useMutation`. */
17115
- var useAddonsUpdateFrameworkPackage = trpc.addons.updateFrameworkPackage.useMutation;
17116
17666
  /** Generated alias around `trpc.addons.getVersions.useQuery`. */
17117
17667
  var useAddonsGetVersions = trpc.addons.getVersions.useQuery;
17118
17668
  /** Generated alias around `trpc.addons.restartAddon.useMutation`. */
@@ -30803,28 +31353,28 @@ function PipelineBuilder({ schema, steps, onChange, templates, selectedTemplateI
30803
31353
  //#endregion
30804
31354
  //#region src/composites/detection-colors.ts
30805
31355
  /**
30806
- * Detection class colors — single source of truth.
31356
+ * Detection class colors — a thin adapter over the SINGLE event-kind
31357
+ * taxonomy dictionary in `@camstack/types` (`EVENT_TAXONOMY`). Colors are no
31358
+ * longer duplicated here; this module only adds the UI-only classes the
31359
+ * taxonomy doesn't model (face / plate) and the deterministic hash fallback.
30807
31360
  *
30808
- * Used by: DetectionCanvas (UI), result-annotator (server-side SVG),
30809
- * admin-ui event viewer, and any other place that visualizes detections.
31361
+ * Used by: DetectionCanvas / DetectionResultTree / DetectionOverlay (UI),
31362
+ * and any other place that visualizes detection classes.
30810
31363
  */
30811
- /** Fixed colors for known detection classes */
30812
- var CLASS_COLORS = {
30813
- person: "#3b82f6",
30814
- vehicle: "#f59e0b",
30815
- animal: "#22c55e",
31364
+ /** UI-only classes not modelled in the event taxonomy (sub-detections). */
31365
+ var UI_ONLY_COLORS = {
30816
31366
  face: "#a855f7",
30817
- plate: "#ec4899",
30818
- bird: "#14b8a6",
30819
- dog: "#84cc16",
30820
- cat: "#f97316",
30821
- car: "#f59e0b",
30822
- truck: "#d97706",
30823
- bus: "#b45309",
30824
- motorcycle: "#eab308",
30825
- bicycle: "#ca8a04",
30826
- motion: "#facc15"
31367
+ plate: "#ec4899"
30827
31368
  };
31369
+ /**
31370
+ * Fixed colors for known detection classes — derived from the taxonomy
31371
+ * (every detection/motion kind) plus the UI-only face/plate classes. Kept as
31372
+ * a named export for back-compat with existing consumers.
31373
+ */
31374
+ var CLASS_COLORS = Object.freeze({
31375
+ ...Object.fromEntries(Object.values(EVENT_TAXONOMY).filter((e) => e.category === "detection" || e.kind === "motion").map((e) => [e.kind, e.color])),
31376
+ ...UI_ONLY_COLORS
31377
+ });
30828
31378
  /** Fallback color palette for unknown classes (deterministic hash-based) */
30829
31379
  var FALLBACK_PALETTE = [
30830
31380
  "#ef4444",
@@ -30839,19 +31389,131 @@ var FALLBACK_PALETTE = [
30839
31389
  "#059669"
30840
31390
  ];
30841
31391
  /** Primary/default color when nothing else matches */
30842
- var DEFAULT_COLOR = "#f59e42";
31392
+ var DEFAULT_COLOR = DEFAULT_EVENT_COLOR;
30843
31393
  /**
30844
31394
  * Get the color for a detection class name.
30845
- * Returns a fixed color for known classes, or a deterministic hash-based color for unknown ones.
31395
+ * Resolves: custom override taxonomy/UI-only fixed color deterministic
31396
+ * hash-based color for unknown classes.
30846
31397
  */
30847
31398
  function getClassColor(className, customColors) {
30848
31399
  if (customColors?.[className]) return customColors[className];
30849
31400
  if (customColors?.[className.toLowerCase()]) return customColors[className.toLowerCase()];
31401
+ const fromTaxonomy = EVENT_TAXONOMY[className] ?? EVENT_TAXONOMY[className.toLowerCase()];
31402
+ if (fromTaxonomy !== void 0) return fromTaxonomy.color;
30850
31403
  if (CLASS_COLORS[className]) return CLASS_COLORS[className];
30851
31404
  if (CLASS_COLORS[className.toLowerCase()]) return CLASS_COLORS[className.toLowerCase()];
30852
31405
  let hash = 0;
30853
31406
  for (let i = 0; i < className.length; i++) hash = hash * 31 + (className.codePointAt(i) ?? 0) >>> 0;
30854
- return FALLBACK_PALETTE[hash % FALLBACK_PALETTE.length] ?? "#f59e42";
31407
+ return FALLBACK_PALETTE[hash % FALLBACK_PALETTE.length] ?? DEFAULT_COLOR;
31408
+ }
31409
+ //#endregion
31410
+ //#region src/composites/event-kind-visuals.tsx
31411
+ /**
31412
+ * Event-kind VISUALS — the UI-side half of the unified taxonomy dictionary
31413
+ * (`@camstack/types` `EVENT_TAXONOMY` owns the serializable data:
31414
+ * color / iconId / labelKey; this owns `iconId → lucide component` and
31415
+ * `labelKey → t()`).
31416
+ *
31417
+ * Every UI that renders an event kind (timeline, events tree, chips,
31418
+ * detection canvas/tree) resolves its glyph + translated label here — no
31419
+ * per-component hardcoded icon or label.
31420
+ */
31421
+ /**
31422
+ * `iconId` → lucide component. Built ONLY from statically-imported icons
31423
+ * (bundle-safe). Unknown ids resolve to the neutral `Tag` fallback.
31424
+ */
31425
+ var EVENT_KIND_ICONS = {
31426
+ motion: Activity,
31427
+ audio: Volume2,
31428
+ person: User,
31429
+ vehicle: Car,
31430
+ animal: PawPrint,
31431
+ package: Package,
31432
+ sensor: Radio,
31433
+ control: SlidersHorizontal,
31434
+ car: Car,
31435
+ truck: Truck,
31436
+ bus: Bus,
31437
+ motorcycle: Bike,
31438
+ bicycle: Bike,
31439
+ airplane: Plane,
31440
+ boat: Sailboat,
31441
+ train: TrainFront,
31442
+ bird: Bird,
31443
+ cat: Cat,
31444
+ dog: Dog,
31445
+ horse: PawPrint,
31446
+ sheep: PawPrint,
31447
+ cow: PawPrint,
31448
+ elephant: PawPrint,
31449
+ bear: PawPrint,
31450
+ zebra: PawPrint,
31451
+ giraffe: PawPrint,
31452
+ door: DoorOpen,
31453
+ pir: Radar,
31454
+ smoke: Flame,
31455
+ water: Droplet,
31456
+ gas: Wind,
31457
+ vibration: Vibrate,
31458
+ tamper: ShieldAlert,
31459
+ presence: UserCheck,
31460
+ generic: Tag,
31461
+ lock: Lock,
31462
+ siren: Siren,
31463
+ switch: ToggleRight,
31464
+ doorbell: BellRing,
31465
+ button: CircleDot,
31466
+ "audio-speech": MessageSquare,
31467
+ "audio-scream": Megaphone,
31468
+ "audio-crying": Baby,
31469
+ "audio-laughter": Laugh,
31470
+ "audio-music": Music,
31471
+ "audio-dog": Dog,
31472
+ "audio-cat": Cat,
31473
+ "audio-bird": Bird,
31474
+ "audio-animal": PawPrint,
31475
+ "audio-alarm": BellRing,
31476
+ "audio-doorbell": BellRing,
31477
+ "audio-glass_breaking": TriangleAlert,
31478
+ "audio-gunshot": Crosshair,
31479
+ "audio-vehicle": Car,
31480
+ "audio-siren": Siren,
31481
+ "audio-fire": Flame,
31482
+ "audio-water": Droplets,
31483
+ "audio-wind": Wind,
31484
+ "audio-door": DoorOpen,
31485
+ "audio-footsteps": Footprints,
31486
+ "audio-crowd": Users,
31487
+ "audio-telephone": Phone,
31488
+ "audio-engine": Cog,
31489
+ "audio-tools": Hammer,
31490
+ "audio-silence": VolumeX
31491
+ };
31492
+ /** Resolve an `iconId` to a lucide component (falls back to `Tag`). */
31493
+ function resolveEventKindIcon(iconId) {
31494
+ if (Object.hasOwn(EVENT_KIND_ICONS, iconId)) return EVENT_KIND_ICONS[iconId];
31495
+ if (iconId.startsWith("audio-")) return Volume2;
31496
+ return Tag;
31497
+ }
31498
+ /**
31499
+ * Translated label for an event kind — `t(labelKey)` when a translation
31500
+ * exists, else the English `label` fallback. Robust to a missing key: an
31501
+ * i18n backend that echoes the key unchanged (react-i18next default) is
31502
+ * treated as "no translation" and the fallback label is returned, so the UI
31503
+ * never renders a raw `eventKind.*` key.
31504
+ */
31505
+ function eventKindLabel(descriptor, t) {
31506
+ if (t === void 0) return descriptor.label;
31507
+ const translated = t(descriptor.labelKey);
31508
+ return translated === descriptor.labelKey || translated.length === 0 ? descriptor.label : translated;
31509
+ }
31510
+ /** Small convenience component: renders the lucide glyph for an `iconId`. */
31511
+ function EventKindGlyph({ iconId, size = 16, color, className }) {
31512
+ return createElement(resolveEventKindIcon(iconId), {
31513
+ size,
31514
+ color,
31515
+ className
31516
+ });
30855
31517
  }
30856
31518
  //#endregion
30857
31519
  //#region src/composites/detection-canvas.tsx
@@ -32500,6 +33162,294 @@ function mountAddonPage(PageComponent, options = {}) {
32500
33162
  }));
32501
33163
  }
32502
33164
  //#endregion
33165
+ //#region src/composites/device-select-filter.ts
33166
+ /** True when two string lists share at least one member. */
33167
+ function intersects(a, b) {
33168
+ if (a.length === 0 || b.length === 0) return false;
33169
+ const set = new Set(a);
33170
+ return b.some((v) => set.has(v));
33171
+ }
33172
+ /**
33173
+ * Does a device satisfy the filter?
33174
+ *
33175
+ * Union match: with an empty/absent filter every device passes; otherwise the
33176
+ * device passes when ANY provided clause matches — its `features` intersect
33177
+ * `caps`, OR its `type` is in `types`. `excludeDeviceId` is subtracted last
33178
+ * (it always drops the device regardless of the other clauses).
33179
+ */
33180
+ function deviceMatchesFilter(device, filter) {
33181
+ if (filter?.excludeDeviceId !== void 0 && device.id === filter.excludeDeviceId) return false;
33182
+ const hasCaps = filter?.caps !== void 0 && filter.caps.length > 0;
33183
+ const hasTypes = filter?.types !== void 0 && filter.types.length > 0;
33184
+ if (!hasCaps && !hasTypes) return true;
33185
+ if (hasCaps && intersects(device.features ?? [], filter.caps)) return true;
33186
+ if (hasTypes && filter.types.includes(device.type)) return true;
33187
+ return false;
33188
+ }
33189
+ /** Human label for a device option: `Name (Location)` when a location is set. */
33190
+ function deviceOptionLabel(device) {
33191
+ return typeof device.location === "string" && device.location.length > 0 ? `${device.name} (${device.location})` : device.name;
33192
+ }
33193
+ /**
33194
+ * Filter a device list and project it into sorted `{ value, label }` options
33195
+ * (value = the device id as a string). Sorted case-insensitively by label so
33196
+ * the picker order is stable.
33197
+ */
33198
+ function devicesToOptions(devices, filter) {
33199
+ return devices.filter((d) => deviceMatchesFilter(d, filter)).map((d) => ({
33200
+ value: String(d.id),
33201
+ label: deviceOptionLabel(d)
33202
+ })).toSorted((a, b) => a.label.localeCompare(b.label));
33203
+ }
33204
+ /**
33205
+ * Free-text option filter — case-insensitive AND over whitespace tokens, each
33206
+ * matched against the option's `value` + `label` (so a device is found by name,
33207
+ * id, or location). An empty query returns every option in order.
33208
+ */
33209
+ function filterDeviceOptions(options, query) {
33210
+ const tokens = query.trim().toLowerCase().split(/\s+/).filter(Boolean);
33211
+ if (tokens.length === 0) return [...options];
33212
+ return options.filter((opt) => {
33213
+ const hay = `${opt.value} ${opt.label}`.toLowerCase();
33214
+ return tokens.every((t) => hay.includes(t));
33215
+ });
33216
+ }
33217
+ /**
33218
+ * Resolve the currently-selected values into options IN SELECTION ORDER (so
33219
+ * chips stay stable while searching). A selected value with no matching option
33220
+ * becomes a synthetic `{ value, label: value }` — a stale id still shows as a
33221
+ * removable chip rather than silently vanishing.
33222
+ */
33223
+ function selectedDeviceOptions(options, selected) {
33224
+ const byValue = new Map(options.map((o) => [o.value, o]));
33225
+ return selected.map((v) => byValue.get(v) ?? {
33226
+ value: v,
33227
+ label: v
33228
+ });
33229
+ }
33230
+ //#endregion
33231
+ //#region src/composites/device-select-field.tsx
33232
+ /**
33233
+ * `device-select` / `device-multiselect` renderers.
33234
+ *
33235
+ * Both fetch EVERY system device via `deviceManager.listAll` and narrow the
33236
+ * options CLIENT-SIDE with the field's declarative `deviceFilter` (see
33237
+ * `device-select-filter.ts`). No server-computed option list is involved —
33238
+ * the form field carries only the filter. Value(s) are device ids as strings.
33239
+ *
33240
+ * The multi variant mirrors the "Linked devices" searchable combobox UX
33241
+ * (removable chips + typeahead dropdown); the single variant is a native
33242
+ * select. Both are inline in ui-library (like `node-select`) so any host that
33243
+ * renders the shared form field gets them without extra registration.
33244
+ */
33245
+ var INPUT_CLASS$1 = "w-full rounded-md border border-border bg-background px-2.5 py-1.5 text-xs text-foreground focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none disabled:opacity-50 disabled:cursor-not-allowed";
33246
+ var INPUT_SHELL = "flex items-center gap-1.5 rounded-md border border-border bg-background px-2 py-1.5 focus-within:border-primary focus-within:ring-1 focus-within:ring-primary/30";
33247
+ var LABEL_CLASS$1 = "block text-[11px] font-medium text-foreground mb-1 break-words";
33248
+ var DESC_CLASS$1 = "text-[10px] text-foreground-subtle mt-0.5 break-words";
33249
+ /** The compact projection of the listAll rows the device fields consume. */
33250
+ function toCandidates(rows) {
33251
+ if (!Array.isArray(rows)) return [];
33252
+ const out = [];
33253
+ for (const row of rows) {
33254
+ if (typeof row !== "object" || row === null) continue;
33255
+ const r = row;
33256
+ if (typeof r.id !== "number" || typeof r.type !== "string" || typeof r.name !== "string") continue;
33257
+ out.push({
33258
+ id: r.id,
33259
+ type: r.type,
33260
+ name: r.name,
33261
+ location: typeof r.location === "string" ? r.location : null,
33262
+ features: Array.isArray(r.features) ? r.features.filter((f) => typeof f === "string") : []
33263
+ });
33264
+ }
33265
+ return out;
33266
+ }
33267
+ function FieldShell({ label, description, required, translationFn, children }) {
33268
+ const resolvedLabel = resolveLabel(label, translationFn);
33269
+ const resolvedDescription = resolveLabel(description, translationFn);
33270
+ return /* @__PURE__ */ jsxs("div", {
33271
+ className: "min-w-0",
33272
+ children: [
33273
+ resolvedLabel !== void 0 && resolvedLabel !== "" && /* @__PURE__ */ jsxs("label", {
33274
+ className: LABEL_CLASS$1,
33275
+ children: [resolvedLabel, required && /* @__PURE__ */ jsx("span", {
33276
+ className: "text-danger ml-0.5",
33277
+ children: "*"
33278
+ })]
33279
+ }),
33280
+ children,
33281
+ resolvedDescription && /* @__PURE__ */ jsx("p", {
33282
+ className: DESC_CLASS$1,
33283
+ children: resolvedDescription
33284
+ })
33285
+ ]
33286
+ });
33287
+ }
33288
+ function DeviceSelectField({ field, value, onChange, disabled, translationFn }) {
33289
+ const { data } = useDeviceManagerListAll({});
33290
+ const options = useMemo(() => devicesToOptions(toCandidates(data), field.deviceFilter), [data, field.deviceFilter]);
33291
+ const current = value === void 0 || value === null ? "" : String(value);
33292
+ return /* @__PURE__ */ jsx(FieldShell, {
33293
+ label: field.label,
33294
+ description: field.description,
33295
+ required: field.required,
33296
+ translationFn,
33297
+ children: /* @__PURE__ */ jsxs("select", {
33298
+ className: INPUT_CLASS$1,
33299
+ value: current,
33300
+ disabled: disabled || field.disabled,
33301
+ onChange: (e) => onChange(e.target.value),
33302
+ children: [!field.required && /* @__PURE__ */ jsx("option", {
33303
+ value: "",
33304
+ children: "— Select device —"
33305
+ }), options.map((opt) => /* @__PURE__ */ jsx("option", {
33306
+ value: opt.value,
33307
+ children: opt.label
33308
+ }, opt.value))]
33309
+ })
33310
+ });
33311
+ }
33312
+ function DeviceMultiSelectField({ field, value, onChange, disabled, translationFn }) {
33313
+ const { data } = useDeviceManagerListAll({});
33314
+ const options = useMemo(() => devicesToOptions(toCandidates(data), field.deviceFilter), [data, field.deviceFilter]);
33315
+ const selected = Array.isArray(value) ? value.map(String) : [];
33316
+ const isDisabled = disabled === true || field.disabled === true;
33317
+ const atMax = field.maxItems !== void 0 && selected.length >= field.maxItems;
33318
+ const [query, setQuery] = useState("");
33319
+ const [open, setOpen] = useState(false);
33320
+ const [highlight, setHighlight] = useState(0);
33321
+ const inputRef = useRef(null);
33322
+ const blurTimer = useRef(null);
33323
+ const selectedOptions = useMemo(() => selectedDeviceOptions(options, selected), [options, selected]);
33324
+ const filtered = useMemo(() => filterDeviceOptions(options, query), [options, query]);
33325
+ const toggle = (optValue) => {
33326
+ if (isDisabled) return;
33327
+ if (selected.includes(optValue)) onChange(selected.filter((v) => v !== optValue));
33328
+ else {
33329
+ if (field.maxItems !== void 0 && selected.length >= field.maxItems) return;
33330
+ onChange([...selected, optValue]);
33331
+ }
33332
+ };
33333
+ const handleKeyDown = (e) => {
33334
+ if (e.key === "ArrowDown") {
33335
+ e.preventDefault();
33336
+ setOpen(true);
33337
+ setHighlight((h) => filtered.length === 0 ? 0 : (h + 1) % filtered.length);
33338
+ } else if (e.key === "ArrowUp") {
33339
+ e.preventDefault();
33340
+ setOpen(true);
33341
+ setHighlight((h) => filtered.length === 0 ? 0 : (h - 1 + filtered.length) % filtered.length);
33342
+ } else if (e.key === "Enter") {
33343
+ e.preventDefault();
33344
+ const opt = filtered[highlight];
33345
+ if (opt) toggle(opt.value);
33346
+ } else if (e.key === "Escape") setOpen(false);
33347
+ else if (e.key === "Backspace" && query === "" && selected.length > 0) onChange(selected.slice(0, -1));
33348
+ };
33349
+ const label = resolveLabel(field.label, translationFn);
33350
+ const description = resolveLabel(field.description, translationFn);
33351
+ return /* @__PURE__ */ jsxs("div", {
33352
+ className: "min-w-0",
33353
+ children: [
33354
+ label !== void 0 && label !== "" && /* @__PURE__ */ jsx("label", {
33355
+ className: LABEL_CLASS$1,
33356
+ children: label
33357
+ }),
33358
+ selectedOptions.length > 0 && /* @__PURE__ */ jsx("div", {
33359
+ className: "flex flex-wrap gap-1 mb-1.5",
33360
+ children: selectedOptions.map((opt) => /* @__PURE__ */ jsxs("span", {
33361
+ className: "inline-flex items-center gap-1 rounded-md bg-primary/10 px-1.5 py-0.5 text-[11px] text-primary max-w-full",
33362
+ children: [/* @__PURE__ */ jsx("span", {
33363
+ className: "truncate",
33364
+ children: opt.label
33365
+ }), !isDisabled && /* @__PURE__ */ jsx("button", {
33366
+ type: "button",
33367
+ className: "shrink-0 hover:text-danger",
33368
+ "aria-label": `Remove ${opt.label}`,
33369
+ onClick: () => toggle(opt.value),
33370
+ children: /* @__PURE__ */ jsx(X, { className: "h-2.5 w-2.5" })
33371
+ })]
33372
+ }, opt.value))
33373
+ }),
33374
+ /* @__PURE__ */ jsxs("div", {
33375
+ className: INPUT_SHELL + (isDisabled ? " opacity-50" : ""),
33376
+ children: [
33377
+ /* @__PURE__ */ jsx(Search, { className: "h-3.5 w-3.5 shrink-0 text-foreground-subtle" }),
33378
+ /* @__PURE__ */ jsx("input", {
33379
+ ref: inputRef,
33380
+ type: "text",
33381
+ role: "combobox",
33382
+ "aria-expanded": open,
33383
+ "aria-controls": `dsel-${field.key}`,
33384
+ className: "min-w-0 flex-1 bg-transparent text-xs text-foreground outline-none placeholder:text-foreground-disabled",
33385
+ value: query,
33386
+ placeholder: atMax ? `Max ${field.maxItems} selected` : field.placeholder ?? "Search devices…",
33387
+ disabled: isDisabled,
33388
+ onChange: (e) => {
33389
+ setQuery(e.target.value);
33390
+ setOpen(true);
33391
+ setHighlight(0);
33392
+ },
33393
+ onFocus: () => setOpen(true),
33394
+ onBlur: () => {
33395
+ blurTimer.current = setTimeout(() => setOpen(false), 120);
33396
+ },
33397
+ onKeyDown: handleKeyDown
33398
+ }),
33399
+ /* @__PURE__ */ jsx(ChevronDown, {
33400
+ className: "h-3.5 w-3.5 shrink-0 cursor-pointer text-foreground-subtle",
33401
+ onMouseDown: (e) => {
33402
+ e.preventDefault();
33403
+ if (blurTimer.current) clearTimeout(blurTimer.current);
33404
+ setOpen((o) => !o);
33405
+ inputRef.current?.focus();
33406
+ }
33407
+ })
33408
+ ]
33409
+ }),
33410
+ open && !isDisabled && /* @__PURE__ */ jsx("div", {
33411
+ id: `dsel-${field.key}`,
33412
+ role: "listbox",
33413
+ className: "mt-1 max-h-56 overflow-y-auto rounded-md border border-border bg-surface shadow-lg",
33414
+ onMouseDown: (e) => {
33415
+ e.preventDefault();
33416
+ },
33417
+ children: filtered.length === 0 ? /* @__PURE__ */ jsx("div", {
33418
+ className: "px-2.5 py-2 text-[11px] text-foreground-subtle italic",
33419
+ children: options.length === 0 ? "No matching devices" : `No matches for “${query}”`
33420
+ }) : filtered.map((opt, i) => {
33421
+ const checked = selected.includes(opt.value);
33422
+ const blockedByMax = !checked && atMax;
33423
+ return /* @__PURE__ */ jsxs("button", {
33424
+ type: "button",
33425
+ role: "option",
33426
+ "aria-selected": checked,
33427
+ disabled: blockedByMax,
33428
+ className: [
33429
+ "flex w-full items-center gap-2 px-2.5 py-1.5 text-left text-xs transition-colors",
33430
+ i === highlight ? "bg-primary/10" : "hover:bg-surface-hover",
33431
+ blockedByMax ? "opacity-40 cursor-not-allowed" : "cursor-pointer"
33432
+ ].join(" "),
33433
+ onMouseEnter: () => setHighlight(i),
33434
+ onClick: () => toggle(opt.value),
33435
+ children: [/* @__PURE__ */ jsx("span", {
33436
+ className: ["flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded border", checked ? "border-primary bg-primary text-white" : "border-border"].join(" "),
33437
+ children: checked && /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5" })
33438
+ }), /* @__PURE__ */ jsx("span", {
33439
+ className: "truncate text-foreground",
33440
+ children: opt.label
33441
+ })]
33442
+ }, opt.value);
33443
+ })
33444
+ }),
33445
+ description && /* @__PURE__ */ jsx("p", {
33446
+ className: DESC_CLASS$1,
33447
+ children: description
33448
+ })
33449
+ ]
33450
+ });
33451
+ }
33452
+ //#endregion
32503
33453
  //#region src/contexts/custom-field-renderers.tsx
32504
33454
  /**
32505
33455
  * Custom field renderer registry.
@@ -38482,6 +39432,20 @@ function FormField({ field, values, onChange, disabled, translationFn, onTestFie
38482
39432
  disabled,
38483
39433
  translationFn
38484
39434
  });
39435
+ case "device-select": return /* @__PURE__ */ jsx(DeviceSelectField, {
39436
+ field,
39437
+ value,
39438
+ onChange: handleChange,
39439
+ disabled,
39440
+ translationFn
39441
+ });
39442
+ case "device-multiselect": return /* @__PURE__ */ jsx(DeviceMultiSelectField, {
39443
+ field,
39444
+ value,
39445
+ onChange: handleChange,
39446
+ disabled,
39447
+ translationFn
39448
+ });
38485
39449
  case "probe": return /* @__PURE__ */ jsx(ProbeField, {
38486
39450
  field,
38487
39451
  value,
@@ -38991,6 +39955,7 @@ function computeClientHints(container) {
38991
39955
  var RECONNECT_BASE_DELAY_MS = 1500;
38992
39956
  var RECONNECT_MAX_DELAY_MS = 15e3;
38993
39957
  var MAX_RECONNECT_ATTEMPTS = 40;
39958
+ var FIRST_FRAME_TIMEOUT_MS = 8e3;
38994
39959
  function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, muted: initialMuted = true, showControls = true, showStats = false, onPlaybackStats, onClientNetworkSample, onConnectTiming, className = "", onStateChange, onError, overlay, createSession, sendAnswer, handleOffer, getIceServers, addIceCandidate, getIceCandidates, closeSession, getSessionState, reoffer, posterUrl, hintsOverride, reconnectSignal, onControlChannel }) {
38995
39960
  const videoRef = useRef(null);
38996
39961
  const containerRef = useRef(null);
@@ -39367,14 +40332,26 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
39367
40332
  });
39368
40333
  onConnectTiming?.({ ...timing });
39369
40334
  const v = videoRef.current;
39370
- if (v && "requestVideoFrameCallback" in v) v.requestVideoFrameCallback(() => {
39371
- timing.firstFrameMs = ms();
39372
- console.info("[WebRTC timing] first decoded frame", {
39373
- streamKey,
39374
- firstFrameMs: timing.firstFrameMs
40335
+ if (v && "requestVideoFrameCallback" in v) {
40336
+ v.requestVideoFrameCallback(() => {
40337
+ timing.firstFrameMs = ms();
40338
+ console.info("[WebRTC timing] first decoded frame", {
40339
+ streamKey,
40340
+ firstFrameMs: timing.firstFrameMs
40341
+ });
40342
+ onConnectTiming?.({ ...timing });
39375
40343
  });
39376
- onConnectTiming?.({ ...timing });
39377
- });
40344
+ setTimeout(() => {
40345
+ if (!mountedRef.current) return;
40346
+ if (timing.firstFrameMs !== void 0) return;
40347
+ console.warn("[WebRTC timing] NO decoded frame (stalled)", {
40348
+ streamKey,
40349
+ sinceIceConnectedMs: ms() - (timing.iceConnectedMs ?? 0),
40350
+ iceConnectedMs: timing.iceConnectedMs,
40351
+ firstTrackMs: timing.firstTrackMs
40352
+ });
40353
+ }, FIRST_FRAME_TIMEOUT_MS);
40354
+ }
39378
40355
  }
39379
40356
  reconnectAttemptsRef.current = 0;
39380
40357
  if (seamless) swapInOnce();
@@ -39407,8 +40384,12 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
39407
40384
  await pc.setLocalDescription(offer);
39408
40385
  timing.localSetMs = ms();
39409
40386
  if (!mountedRef.current || abort.signal.aborted) return;
40387
+ const clientOfferHints = {
40388
+ ...computeClientHints(containerRef.current),
40389
+ ...hintsOverride
40390
+ };
39410
40391
  const signalingStart = ms();
39411
- const { sessionId: sid, sdpAnswer } = await handleOffer(pc.localDescription?.sdp ?? offer.sdp ?? "");
40392
+ const { sessionId: sid, sdpAnswer } = await handleOffer(pc.localDescription?.sdp ?? offer.sdp ?? "", void 0, clientOfferHints);
39412
40393
  timing.signalingRttMs = ms() - signalingStart;
39413
40394
  sessionId = sid;
39414
40395
  sessionIdsRef.current.add(sid);
@@ -39469,7 +40450,8 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
39469
40450
  partialReconnectReset,
39470
40451
  updateState,
39471
40452
  onError,
39472
- startSessionStatePoll
40453
+ startSessionStatePoll,
40454
+ hintsOverride
39473
40455
  ]);
39474
40456
  renegotiateRef.current = useCallback(async (sessionId, target) => {
39475
40457
  const reofferFn = reoffer;
@@ -39532,7 +40514,11 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
39532
40514
  pc.close();
39533
40515
  return;
39534
40516
  }
39535
- const { sessionId: sid, sdpAnswer } = await reofferFn(sessionId, pc.localDescription?.sdp ?? offer.sdp ?? "", target);
40517
+ const reofferHints = {
40518
+ ...computeClientHints(containerRef.current),
40519
+ ...hintsOverride
40520
+ };
40521
+ const { sessionId: sid, sdpAnswer } = await reofferFn(sessionId, pc.localDescription?.sdp ?? offer.sdp ?? "", target, reofferHints);
39536
40522
  if (!mountedRef.current) {
39537
40523
  pc.close();
39538
40524
  return;
@@ -39583,7 +40569,8 @@ function CameraStreamPlayer({ serverUrl, streamKey, label, autoPlay = true, mute
39583
40569
  addIceCandidate,
39584
40570
  getIceCandidates,
39585
40571
  updateState,
39586
- startSessionStatePoll
40572
+ startSessionStatePoll,
40573
+ hintsOverride
39587
40574
  ]);
39588
40575
  const connect = useClientOffer ? connectClientOffer : useServerOffer ? connectServerOffer : connectWhep;
39589
40576
  const connectRef = useRef(() => {});
@@ -45296,13 +46283,14 @@ function useDeviceWebrtc(trpc, deviceId, pollIntervalMs = 5e3) {
45296
46283
  deviceId,
45297
46284
  getIceServers
45298
46285
  ]);
45299
- const handleOffer = useCallback(async (target, sdpOffer, sessionId) => {
46286
+ const handleOffer = useCallback(async (target, sdpOffer, sessionId, hints) => {
45300
46287
  if (deviceId === null) throw new Error("No device selected");
45301
46288
  return trpc.webrtcSession.handleOffer.mutate({
45302
46289
  deviceId,
45303
46290
  target,
45304
46291
  sdpOffer,
45305
- ...sessionId !== void 0 ? { sessionId } : {}
46292
+ ...sessionId !== void 0 ? { sessionId } : {},
46293
+ ...hints !== void 0 ? { hints } : {}
45306
46294
  });
45307
46295
  }, [trpc, deviceId]);
45308
46296
  const sendAnswer = useCallback(async (sessionId, sdpAnswer) => {
@@ -45646,4 +46634,4 @@ var MotionZonesSettings = lazy(() => import("./MotionZonesSettings-NcxxQN8r.js")
45646
46634
  /** Lazy-wrapped `PrivacyMaskSettings` — code-split off the main bundle. */
45647
46635
  var PrivacyMaskSettings = lazy(() => import("./PrivacyMaskSettings-APgPLF7p.js").then((m) => ({ default: m.PrivacyMaskSettings })));
45648
46636
  //#endregion
45649
- export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, 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, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EmptyState, ErrorBox, EventStream, FILL, 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, 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, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, ensureMfHostInit, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, serializeRecordedCommand, shouldCommit, shouldEmit, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useAddonsUpdateFrameworkPackage, 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, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, 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, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, 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, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, 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, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, 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, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, 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, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };
46637
+ export { AddonGlobalSettingsForm, AgentStepEditor, AlarmHeroCard, AlarmInlineControl as AlarmPanelInlineControl, AppShell, ArcKnob, AudioClassificationList, AudioLevelWaveform, AudioWaveform, AutotrackSection, BTN_COMPACT, BTN_COMPACT_DANGER, BTN_COMPACT_PRIMARY, BTN_COMPACT_WARNING, Badge, BatteryBadge, BottomSheet, Breadcrumb, BrightnessPanel, Button, ButtonControl, ButtonHeroCard, 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, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DiscoveryPanel, DoorbellRecentPanel, Dropdown, DropdownContent, DropdownItem, DropdownTrigger, DummyHeroCard, DummyInline, EVENT_KIND_ICONS, EmptyState, ErrorBox, EventKindGlyph, EventStream, FILL, 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, 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, RECORDED_PLAYBACK_MODES, RIGHT, ROLE_DESCRIPTOR, RadialGauge, RecordedPlaybackProvider, RecordingPanel, ResponseLog, SECTION_BODY, SECTION_CARD, SECTION_HEADER, SPLIT_PANEL_OUTER, SPLIT_PANEL_SIDE, STACK_GAP, STATE_COLOR, ScopePicker, ScrollArea, Select, SemanticBadge, SensorHeroCard, SensorInlineControl, SensorValueAtom, Separator, Sidebar, SidebarItem, Skeleton, SlideOverPanel, SlideToggle, SnapshotButton, StatCard, StateValuesStream, StatusBadge, StepTimings, StepTreeMaster, Stepper, StreamBrokerSelector, StreamPanel, Switch, SwitchHeroCard, SwitchInlineControl, SwitchPanel, SystemProvider, 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, allDeviceTypeFilterOptions, buildStepTreeFromSchema, childEntityId, childListName, cn, columnsForContext, containerChildToRef, countableDevices, coverHighlight, createSharedContext, createTheme, cursorFractionFor, darkColors, defaultTheme, deriveDeviceKind, deviceMatchesFilter, deviceOptionLabel, deviceRoleMeta, deviceRoleMetaOf, deviceTypeMeta, deviceTypeMetaOf, devicesToOptions, ensureMfHostInit, eventKindLabel, filterDeviceOptions, findTimezone, formatControlDateTime, formatLastSeen, formatNumeric, fuzzyMatch, getClassColor, getPhaseVisual, groupChildrenByLayout, hardwareLabel, humidifierTint, createLucideIcon as i, initialScrubState, isAbsentProvider, isFieldVisible, lawnMowerActivityMeta, lightColors, loadRemoteBundle, makeScrubBridge, metadataEntries, metadataString, mirror, mountAddonPage, Square as n, nextSort, normalizeForSearch, overrideEntityIdFromLink, parseRecordedServerMessage, providerIcons, EyeOff as r, resolveContainerPrimary, resolveControlAlign, resolveDeviceControl, resolveDisplayIcon, resolveEventKindIcon, resolvePrimaryChild, resolveSensorDisplay, scrubReducer, selectedDeviceOptions, serializeRecordedCommand, shouldCommit, shouldEmit, sortRows, statusIcons, stripParentNamePrefix, Trash2 as t, tankAlert, themeToCss, trpc, useAccessoriesGetStatus, useAccessoriesSetChildHidden, useAddonPagesListPages, useAddonSettingsGetDeviceSettings, useAddonSettingsGetGlobalSettings, 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, useBackupGetEntries, useBackupList, useBackupListArchives, useBackupListDestinations, useBackupListLocations, useBackupPreviewSchedule, useBackupRestore, useBackupTrigger, useBackupUpsertDestinationPolicy, 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, useColorGetStatus, useColorSetColor, useConfirm, useConnectivityGetStatus, useConsumablesGetStatus, useConsumablesReset, useContactGetStatus, useContainerChildren, useControlGetStatus, useControlSetValue, 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, useDeviceManagerAdoptionListCandidateFilters, useDeviceManagerAdoptionListCandidates, useDeviceManagerAdoptionRefresh, useDeviceManagerAdoptionRelease, useDeviceManagerAdoptionResync, useDeviceManagerAllocateDeviceId, useDeviceManagerApplyDeviceSettingsPatch, useDeviceManagerApplyInitialMeta, useDeviceManagerCreateDevice, useDeviceManagerDisable, useDeviceManagerDiscoverAllProviders, useDeviceManagerDiscoverDevices, useDeviceManagerDiscoverProvider, useDeviceManagerDiscoveryProviders, useDeviceManagerEnable, useDeviceManagerGetAllBindings, useDeviceManagerGetBindings, useDeviceManagerGetChildren, useDeviceManagerGetConfigSchema, useDeviceManagerGetCreationSchema, useDeviceManagerGetDevice, useDeviceManagerGetDeviceAggregate, useDeviceManagerGetDeviceLiveContribution, useDeviceManagerGetDeviceLiveInfoAggregate, useDeviceManagerGetDeviceSettingsAggregate, useDeviceManagerGetDeviceSettingsContribution, useDeviceManagerGetDeviceStatusAggregate, useDeviceManagerGetLinkedDevices, useDeviceManagerGetRoleDisplayDefaults, useDeviceManagerGetSettingsSchema, useDeviceManagerGetStreamProfileMap, useDeviceManagerGetStreamSources, useDeviceManagerGetWireableFields, useDeviceManagerListAll, useDeviceManagerListBindableCapsForDeviceType, useDeviceManagerListLocations, useDeviceManagerListPersistedByAddon, useDeviceManagerListWrappersForCap, useDeviceManagerLoadConfig, useDeviceManagerLoadMeta, useDeviceManagerLoadRuntimeState, useDeviceManagerPersistConfig, useDeviceManagerProbeStreams, useDeviceManagerProviderCreationType, useDeviceManagerProviderDiscoveryParamsSchema, useDeviceManagerRegisterDevice, useDeviceManagerRemove, useDeviceManagerRemoveByIntegration, useDeviceManagerRemoveDevice, useDeviceManagerRemoveLocation, useDeviceManagerRunDeviceAction, useDeviceManagerSetChildLayout, useDeviceManagerSetDeviceLinks, 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, useLlmDeleteModel, useLlmDeleteProfile, useLlmGenerate, useLlmGenerateVision, useLlmGetDefaults, useLlmGetRuntimeStatus, useLlmGetUsage, useLlmInstallModel, useLlmListModelCatalog, useLlmListModels, useLlmListNodeModels, useLlmListProfileKinds, useLlmListProfiles, useLlmListRuntimeNodes, useLlmSetDefault, useLlmStartRuntime, useLlmStopRuntime, useLlmTestProfile, useLlmUpsertProfile, useLocalNetworkGetAllowedAddresses, useLocalNetworkGetConnectionEndpoints, useLocalNetworkGetPreferred, useLocalNetworkList, useLocalNetworkResetAllowlistToBestMatch, useLocalNetworkSetAllowedAddresses, 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, useMetricsProviderGetProcessStats, useMetricsProviderKillProcess, 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, useNotifierCancel, useNotifierGetStatus, useNotifierSend, useNumericSensorGetStatus, useOptimisticSlice, useOptionalSystem, useOptionalWidgetRegistry, useOsdGetStatus, useOsdSetOverlay, usePTZ, usePetFeederCallPet, usePetFeederCancelFeed, usePetFeederFeed, usePetFeederGetStatus, usePetFeederMarkFoodReplenished, usePetFeederPlaySound, usePetFeederResetDesiccant, usePetFeederSetChildLock, usePetFeederSetFeedSound, usePetFeederSetIndicatorLight, usePetFeederSetVolume, usePipelineAnalyticsApplyDeviceSettingsPatch, usePipelineAnalyticsClearTracks, usePipelineAnalyticsDeleteDeviceEvents, usePipelineAnalyticsDeleteTracks, usePipelineAnalyticsGetActiveTracks, usePipelineAnalyticsGetAudioEvents, usePipelineAnalyticsGetDeviceLiveContribution, usePipelineAnalyticsGetDeviceSettingsContribution, usePipelineAnalyticsGetEventDensity, usePipelineAnalyticsGetEventMedia, usePipelineAnalyticsGetEventStoreFootprint, usePipelineAnalyticsGetKeyEvents, usePipelineAnalyticsGetMotionEvents, usePipelineAnalyticsGetObjectEvents, usePipelineAnalyticsGetSensorEvents, usePipelineAnalyticsGetTrack, usePipelineAnalyticsGetTrackMedia, usePipelineAnalyticsListEventKinds, usePipelineAnalyticsListOpsLog, usePipelineAnalyticsListRecentTracks, usePipelineAnalyticsListTracks, usePipelineAnalyticsPruneEvents, usePipelineAnalyticsPruneEventsBefore, usePipelineAnalyticsPruneTracksBefore, usePipelineAnalyticsSearchObjectEvents, usePipelineAnalyticsWipeAllAnalytics, usePipelineExecutorCacheFrameInPool, usePipelineExecutorClearDeviceOverrides, usePipelineExecutorDeleteModel, usePipelineExecutorDeleteTemplate, usePipelineExecutorDownloadModel, usePipelineExecutorGetAddonModels, usePipelineExecutorGetAudioCapabilities, usePipelineExecutorGetAvailableEngines, usePipelineExecutorGetCapabilities, usePipelineExecutorGetDefaultSteps, usePipelineExecutorGetDetectionConfigSchema, usePipelineExecutorGetEffectiveTuning, usePipelineExecutorGetEngineProvisioning, usePipelineExecutorGetGlobalPipelineConfig, usePipelineExecutorGetGlobalSteps, usePipelineExecutorGetOrchestratorConfigSchema, usePipelineExecutorGetReferenceAudio, usePipelineExecutorGetReferenceAudioFiles, usePipelineExecutorGetReferenceImage, usePipelineExecutorGetSchema, usePipelineExecutorGetSelectedEngine, usePipelineExecutorGetVideoPipelineSteps, usePipelineExecutorInferCached, usePipelineExecutorKillEngine, usePipelineExecutorListLoadedEngines, usePipelineExecutorListReferenceImages, usePipelineExecutorListTemplates, usePipelineExecutorReprobeEngine, usePipelineExecutorRunAudioTest, usePipelineExecutorRunPipeline, usePipelineExecutorRunPipelineBatch, usePipelineExecutorSaveTemplate, usePipelineExecutorSetVideoPipelineSteps, usePipelineExecutorSpinEngine, usePipelineExecutorUncacheFrame, usePipelineExecutorUpdateTemplate, usePipelineExecutorValidatePipeline, usePipelineOrchestratorApplyDeviceSettingsPatch, usePipelineOrchestratorAssignAudio, usePipelineOrchestratorAssignPipeline, usePipelineOrchestratorDeleteTemplate, usePipelineOrchestratorGetAgentLoad, usePipelineOrchestratorGetAgentSettings, usePipelineOrchestratorGetAudioAssignment, usePipelineOrchestratorGetAudioAssignments, usePipelineOrchestratorGetAudioNodeLoad, usePipelineOrchestratorGetCameraMetrics, usePipelineOrchestratorGetCameraSettings, usePipelineOrchestratorGetCameraStatus, usePipelineOrchestratorGetCameraStatuses, usePipelineOrchestratorGetCameraStepOverrides, usePipelineOrchestratorGetCapabilityBindings, usePipelineOrchestratorGetDeviceLiveContribution, usePipelineOrchestratorGetDeviceSettingsContribution, usePipelineOrchestratorGetGlobalMetrics, usePipelineOrchestratorGetIngestOwner, usePipelineOrchestratorGetPipelineAssignment, usePipelineOrchestratorGetPipelineAssignments, usePipelineOrchestratorListAgentSettings, usePipelineOrchestratorListTemplates, usePipelineOrchestratorRebalance, usePipelineOrchestratorRemoveAgentSettings, usePipelineOrchestratorResetNodePipelineDefaults, usePipelineOrchestratorResolvePipeline, usePipelineOrchestratorSaveTemplate, usePipelineOrchestratorSetAgentAddonDefaults, usePipelineOrchestratorSetAgentCapabilities, usePipelineOrchestratorSetAgentDetectWeight, usePipelineOrchestratorSetAgentMaxCameras, usePipelineOrchestratorSetAgentReachableHost, usePipelineOrchestratorSetCameraPipelineForAgent, usePipelineOrchestratorSetCameraStepOverride, usePipelineOrchestratorSetCameraStepToggle, usePipelineOrchestratorSetCapabilityBinding, usePipelineOrchestratorUnassignAudio, usePipelineOrchestratorUnassignPipeline, usePipelineOrchestratorUpdateTemplate, usePipelineRunnerAttachCamera, usePipelineRunnerDetachCamera, usePipelineRunnerGetAllCameraMetrics, usePipelineRunnerGetCameraMetrics, usePipelineRunnerGetLocalCameras, usePipelineRunnerGetLocalLoad, usePipelineRunnerGetLocalMetrics, usePipelineRunnerGetNativeCrop, usePipelineRunnerReportMotion, usePipelineRunnerRunDetailSubtree, 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, usePrivacyMaskSetMask, usePtzAutotrackGetSettings, usePtzAutotrackGetStatus, usePtzAutotrackSetEnabled, usePtzAutotrackSetSettings, usePtzContinuousMove, usePtzDeletePreset, usePtzGetOptions, usePtzGetPosition, usePtzGetPresets, usePtzGetStatus, usePtzGoHome, usePtzGoToPreset, usePtzMove, usePtzSavePreset, usePtzSetAutofocus, usePtzStop, useRebootReboot, useRecordedPlayback, useRecordingApplyDeviceSettingsPatch, useRecordingDeleteFootprint, useRecordingExportCancelExport, useRecordingExportCreateExport, useRecordingExportDeleteExport, useRecordingExportGetDownloadUrl, useRecordingExportGetExport, useRecordingExportListExports, useRecordingGetAvailability, useRecordingGetDaysWithRecordings, useRecordingGetDeviceConfig, useRecordingGetDeviceLiveContribution, useRecordingGetDeviceSettingsContribution, useRecordingGetPlaybackManifest, useRecordingGetStatus, useRecordingGetStorageUsage, useRecordingListOpsLog, useRecordingLocateSegment, useRecordingPruneFootage, useRecordingReadSegmentBytes, useRecordingRescanStorage, useRecordingSetDeviceConfig, useRemoteComponent, useSceneMonitorCaptureReference, useSceneMonitorCreateScene, useSceneMonitorDeleteReference, useSceneMonitorDeleteScene, useSceneMonitorGetStatus, useSceneMonitorListScenes, useSceneMonitorRecheckNow, useSceneMonitorUpdateScene, useScriptRunnerGetStatus, useScriptRunnerRun, useScriptRunnerStop, useScrubController, useServerManagementApplyServerUpdate, useServerManagementCheckServerUpdate, useServerManagementGetServerPackageStatus, useServerManagementRestartServer, useServerManagementRollbackServerUpdate, useSettingsStoreCount, useSettingsStoreDeclareCollection, useSettingsStoreDelete, useSettingsStoreGet, useSettingsStoreHistogram, useSettingsStoreInsert, useSettingsStoreIsEmpty, useSettingsStoreQuery, useSettingsStoreSet, useSettingsStoreUpdate, useSmokeGetStatus, useSnapshotApplyDeviceSettingsPatch, useSnapshotGetDeviceLiveContribution, useSnapshotGetDeviceSettingsContribution, useSnapshotGetSnapshot, useSnapshotGetSnapshotOverview, useSnapshotGetStatus, useSnapshotInvalidateCache, useStorageAbortUpload, useStorageBeginDownload, useStorageBeginUpload, useStorageDelete, useStorageDeleteLocation, useStorageEndDownload, useStorageExists, useStorageFinalizeUpload, useStorageGetAvailableSpace, useStorageGetDefaultLocation, useStorageList, useStorageListLocationDeclarations, useStorageListLocations, useStorageListProviders, useStorageRead, useStorageReadChunk, useStorageResolve, useStorageTestConfig, useStorageTestLocation, useStorageUpsertLocation, useStorageWrite, useStorageWriteChunk, useStreamBrokerApplyDeviceSettingsPatch, useStreamBrokerAssignProfile, useStreamBrokerGetAllRtspEntries, useStreamBrokerGetBrokerStats, useStreamBrokerGetDeviceLiveContribution, useStreamBrokerGetDeviceSettingsContribution, useStreamBrokerGetPreBufferInfo, useStreamBrokerGetRtspEntry, useStreamBrokerGetRtspPort, useStreamBrokerGetStreamUrl, useStreamBrokerGetStreamWithCodec, useStreamBrokerIsRtspEnabled, useStreamBrokerKillClient, useStreamBrokerListAllCameraStreams, useStreamBrokerListAllProfileSlots, useStreamBrokerListClients, useStreamBrokerProbeStream, useStreamBrokerPublishCameraStream, useStreamBrokerPullAudioChunks, useStreamBrokerPullFrameHandles, useStreamBrokerRegenerateRtspToken, useStreamBrokerReleaseStreamWithCodec, useStreamBrokerRestartProfile, useStreamBrokerRetractCameraStream, useStreamBrokerSetPreBufferDuration, useStreamBrokerSetRtspEnabled, useStreamBrokerSubscribeAudioChunks, useStreamBrokerSubscribeFrames, useStreamBrokerUnassignProfile, useStreamBrokerUnsubscribeAudioChunks, useStreamBrokerUnsubscribeFrames, useStreamCatalogGetCatalog, useStreamParamsGetConfigSchema, useStreamParamsGetOptions, useStreamParamsGetStatus, useStreamParamsSetProfile, useSwitchGetStatus, useSwitchSetState, useSystem, useSystemFeatureFlags, useSystemForceRetentionCleanup, useSystemGetRetentionConfig, useSystemHealth, useSystemInfo, useSystemMutation, useSystemNetworkAddresses, useSystemQuery, useSystemSetRetentionConfig, useTamperGetStatus, useTemperatureSensorGetStatus, 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, useZoneAnalyticsGetUnzonedHistory, useZoneAnalyticsGetZoneHistory, useZoneEditing, useZoneRulesListRules, useZoneRulesSetRules, useZonesAddZone, useZonesListZones, useZonesRemoveZone, useZonesUpdateZone, vacuumStateMeta, validateScopes, valveStateMeta, waterHeaterPhase, waterHeaterTint, weatherConditionMeta, weatherTint };