@camstack/ui-library 1.2.355 → 1.2.357
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/{MotionZonesSettings-BCU2NW7w.js → MotionZonesSettings-dx3wObgK.js} +1 -1
- package/dist/{PrivacyMaskSettings-VntwpB1u.js → PrivacyMaskSettings-BM2C_xWz.js} +1 -1
- package/dist/{SceneMonitorEditor-A1U5eCrC.js → SceneMonitorEditor-CI72S4eN.js} +1 -1
- package/dist/composites/device-picker/DevicePicker.d.ts +7 -1
- package/dist/generated/system-hooks.d.ts +24 -0
- package/dist/{icons-BJpFQcLH.cjs → icons-Bxx_Side.cjs} +1 -37
- package/dist/{icons-Cf1xnXkh.js → icons-CZwJd50b.js} +1 -37
- package/dist/index.cjs +142 -33
- package/dist/index.js +134 -39
- package/dist/primitives/dialog.d.ts +2 -2
- package/dist/primitives/disclosure-chevron.d.ts +18 -0
- package/dist/primitives/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3521,6 +3521,42 @@ var Route = require_createLucideIcon.createLucideIcon("route", [
|
|
|
3521
3521
|
* This source code is licensed under the ISC license.
|
|
3522
3522
|
* See the LICENSE file in the root directory of this source tree.
|
|
3523
3523
|
*/
|
|
3524
|
+
var Router = require_createLucideIcon.createLucideIcon("router", [
|
|
3525
|
+
["rect", {
|
|
3526
|
+
width: "20",
|
|
3527
|
+
height: "8",
|
|
3528
|
+
x: "2",
|
|
3529
|
+
y: "14",
|
|
3530
|
+
rx: "2",
|
|
3531
|
+
key: "w68u3i"
|
|
3532
|
+
}],
|
|
3533
|
+
["path", {
|
|
3534
|
+
d: "M6.01 18H6",
|
|
3535
|
+
key: "19vcac"
|
|
3536
|
+
}],
|
|
3537
|
+
["path", {
|
|
3538
|
+
d: "M10.01 18H10",
|
|
3539
|
+
key: "uamcmx"
|
|
3540
|
+
}],
|
|
3541
|
+
["path", {
|
|
3542
|
+
d: "M15 10v4",
|
|
3543
|
+
key: "qjz1xs"
|
|
3544
|
+
}],
|
|
3545
|
+
["path", {
|
|
3546
|
+
d: "M17.84 7.17a4 4 0 0 0-5.66 0",
|
|
3547
|
+
key: "1rif40"
|
|
3548
|
+
}],
|
|
3549
|
+
["path", {
|
|
3550
|
+
d: "M20.66 4.34a8 8 0 0 0-11.31 0",
|
|
3551
|
+
key: "6a5xfq"
|
|
3552
|
+
}]
|
|
3553
|
+
]);
|
|
3554
|
+
/**
|
|
3555
|
+
* @license lucide-react v0.576.0 - ISC
|
|
3556
|
+
*
|
|
3557
|
+
* This source code is licensed under the ISC license.
|
|
3558
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
3559
|
+
*/
|
|
3524
3560
|
var Sailboat = require_createLucideIcon.createLucideIcon("sailboat", [
|
|
3525
3561
|
["path", {
|
|
3526
3562
|
d: "M10 2v15",
|
|
@@ -5215,9 +5251,11 @@ function useEventStreamMap(category, keyOf, filter) {
|
|
|
5215
5251
|
* `nodes.getNodeAddons`, which is one node and does not walk the fleet.
|
|
5216
5252
|
*/
|
|
5217
5253
|
function useClusterTopology() {
|
|
5218
|
-
const { data: bootstrapTopology, isLoading, isError } = trpc.nodes.topology.useQuery(void 0, { staleTime: Number.POSITIVE_INFINITY });
|
|
5254
|
+
const { data: bootstrapTopology, dataUpdatedAt, isLoading, isError } = trpc.nodes.topology.useQuery(void 0, { staleTime: Number.POSITIVE_INFINITY });
|
|
5255
|
+
const snapshot = useEventStreamLatest("cluster.topology-snapshot");
|
|
5256
|
+
const snapshotReceivedAt = (0, react$1.useMemo)(() => snapshot === null ? 0 : Date.now(), [snapshot]);
|
|
5219
5257
|
return {
|
|
5220
|
-
nodes:
|
|
5258
|
+
nodes: snapshot !== null && !(bootstrapTopology !== void 0 && dataUpdatedAt > snapshotReceivedAt) ? snapshot.nodes : bootstrapTopology,
|
|
5221
5259
|
isLoading,
|
|
5222
5260
|
isError
|
|
5223
5261
|
};
|
|
@@ -5432,6 +5470,11 @@ var DEVICE_TYPE_META = {
|
|
|
5432
5470
|
icon: Wind,
|
|
5433
5471
|
labelKey: "uiLibrary.deviceMeta.type.dryer",
|
|
5434
5472
|
labelFallback: "Dryer"
|
|
5473
|
+
},
|
|
5474
|
+
[_camstack_types.DeviceType.Gateway]: {
|
|
5475
|
+
icon: Router,
|
|
5476
|
+
labelKey: "uiLibrary.deviceMeta.type.gateway",
|
|
5477
|
+
labelFallback: "Gateway"
|
|
5435
5478
|
}
|
|
5436
5479
|
};
|
|
5437
5480
|
var DEVICE_ROLE_META = {
|
|
@@ -5918,7 +5961,7 @@ function lucideExportName(key) {
|
|
|
5918
5961
|
function loadIconGlyphs() {
|
|
5919
5962
|
if (fullTable !== void 0) return Promise.resolve();
|
|
5920
5963
|
if (failure$1 !== void 0) return Promise.reject(failure$1);
|
|
5921
|
-
pending ??= Promise.resolve().then(() => require("./icons-
|
|
5964
|
+
pending ??= Promise.resolve().then(() => require("./icons-Bxx_Side.cjs")).then((module) => {
|
|
5922
5965
|
fullTable = module;
|
|
5923
5966
|
publish();
|
|
5924
5967
|
}, (error) => {
|
|
@@ -10405,6 +10448,14 @@ var Select = (0, react$1.forwardRef)(({ className, options, disabled, ...props }
|
|
|
10405
10448
|
});
|
|
10406
10449
|
Select.displayName = "Select";
|
|
10407
10450
|
//#endregion
|
|
10451
|
+
//#region src/primitives/disclosure-chevron.tsx
|
|
10452
|
+
function DisclosureChevron({ expanded, className }) {
|
|
10453
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(expanded ? ChevronDown : ChevronRight, {
|
|
10454
|
+
"aria-hidden": "true",
|
|
10455
|
+
className: cn("h-4 w-4 shrink-0 text-foreground-subtle", className)
|
|
10456
|
+
});
|
|
10457
|
+
}
|
|
10458
|
+
//#endregion
|
|
10408
10459
|
//#region src/composites/config-secret-field.tsx
|
|
10409
10460
|
/**
|
|
10410
10461
|
* A keychain-stored secret in a settings form (D787, D789) — drawn as ONE
|
|
@@ -10668,6 +10719,10 @@ var useAddonSettingsGetGlobalSettings = trpc.addonSettings.getGlobalSettings.use
|
|
|
10668
10719
|
var useAddonSettingsUpdateGlobalSettings = trpc.addonSettings.updateGlobalSettings.useMutation;
|
|
10669
10720
|
/** Generated alias around `trpc.addonSettings.getIntegrationSettings.useQuery`. */
|
|
10670
10721
|
var useAddonSettingsGetIntegrationSettings = trpc.addonSettings.getIntegrationSettings.useQuery;
|
|
10722
|
+
/** Generated alias around `trpc.addonSettings.getDeclaredSettingsKeys.useQuery`. */
|
|
10723
|
+
var useAddonSettingsGetDeclaredSettingsKeys = trpc.addonSettings.getDeclaredSettingsKeys.useQuery;
|
|
10724
|
+
/** Generated alias around `trpc.addonSettings.unsetStoredSettingsKeys.useMutation`. */
|
|
10725
|
+
var useAddonSettingsUnsetStoredSettingsKeys = trpc.addonSettings.unsetStoredSettingsKeys.useMutation;
|
|
10671
10726
|
/** Generated alias around `trpc.addonSettings.getDeviceSettings.useQuery`. */
|
|
10672
10727
|
var useAddonSettingsGetDeviceSettings = trpc.addonSettings.getDeviceSettings.useQuery;
|
|
10673
10728
|
/** Generated alias around `trpc.addonSettings.updateDeviceSettings.useMutation`. */
|
|
@@ -11304,6 +11359,10 @@ var useDeviceProviderReloadDevice = trpc.deviceProvider.reloadDevice.useMutation
|
|
|
11304
11359
|
var useDeviceProviderSupportsDiscovery = trpc.deviceProvider.supportsDiscovery.useQuery;
|
|
11305
11360
|
/** Generated alias around `trpc.deviceProvider.discoverDevices.useMutation`. */
|
|
11306
11361
|
var useDeviceProviderDiscoverDevices = trpc.deviceProvider.discoverDevices.useMutation;
|
|
11362
|
+
/** Generated alias around `trpc.deviceProvider.getDiscoveryModes.useQuery`. */
|
|
11363
|
+
var useDeviceProviderGetDiscoveryModes = trpc.deviceProvider.getDiscoveryModes.useQuery;
|
|
11364
|
+
/** Generated alias around `trpc.deviceProvider.classifyDiscoveryHits.useMutation`. */
|
|
11365
|
+
var useDeviceProviderClassifyDiscoveryHits = trpc.deviceProvider.classifyDiscoveryHits.useMutation;
|
|
11307
11366
|
/** Generated alias around `trpc.deviceProvider.getDiscoveryParamsSchema.useQuery`. */
|
|
11308
11367
|
var useDeviceProviderGetDiscoveryParamsSchema = trpc.deviceProvider.getDiscoveryParamsSchema.useQuery;
|
|
11309
11368
|
/** Generated alias around `trpc.deviceProvider.getManualCreationType.useQuery`. */
|
|
@@ -11610,6 +11669,12 @@ var useLocalNetworkUploadCertificate = trpc.localNetwork.uploadCertificate.useMu
|
|
|
11610
11669
|
var useLocalNetworkDownloadCa = trpc.localNetwork.downloadCa.useQuery;
|
|
11611
11670
|
/** Generated alias around `trpc.localNetwork.useStoredUploadedCertificate.useMutation`. */
|
|
11612
11671
|
var useLocalNetworkUseStoredUploadedCertificate = trpc.localNetwork.useStoredUploadedCertificate.useMutation;
|
|
11672
|
+
/** Generated alias around `trpc.localNetwork.scanNetwork.useMutation`. */
|
|
11673
|
+
var useLocalNetworkScanNetwork = trpc.localNetwork.scanNetwork.useMutation;
|
|
11674
|
+
/** Generated alias around `trpc.localNetwork.getScanSubnets.useQuery`. */
|
|
11675
|
+
var useLocalNetworkGetScanSubnets = trpc.localNetwork.getScanSubnets.useQuery;
|
|
11676
|
+
/** Generated alias around `trpc.localNetwork.setScanSubnets.useMutation`. */
|
|
11677
|
+
var useLocalNetworkSetScanSubnets = trpc.localNetwork.setScanSubnets.useMutation;
|
|
11613
11678
|
/** Generated alias around `trpc.localNetwork.revertToGeneratedCertificate.useMutation`. */
|
|
11614
11679
|
var useLocalNetworkRevertToGeneratedCertificate = trpc.localNetwork.revertToGeneratedCertificate.useMutation;
|
|
11615
11680
|
/** Generated alias around `trpc.lockControl.lock.useMutation`. */
|
|
@@ -12400,6 +12465,16 @@ var usePlateGalleryUnassignPlate = trpc.plateGallery.unassignPlate.useMutation;
|
|
|
12400
12465
|
var usePlateGalleryAssignPlates = trpc.plateGallery.assignPlates.useMutation;
|
|
12401
12466
|
/** Generated alias around `trpc.plateGallery.unassignPlates.useMutation`. */
|
|
12402
12467
|
var usePlateGalleryUnassignPlates = trpc.plateGallery.unassignPlates.useMutation;
|
|
12468
|
+
/** Generated alias around `trpc.platformProbe.getCapabilities.useQuery`. */
|
|
12469
|
+
var usePlatformProbeGetCapabilities = trpc.platformProbe.getCapabilities.useQuery;
|
|
12470
|
+
/** Generated alias around `trpc.platformProbe.getHardware.useQuery`. */
|
|
12471
|
+
var usePlatformProbeGetHardware = trpc.platformProbe.getHardware.useQuery;
|
|
12472
|
+
/** Generated alias around `trpc.platformProbe.resolveInferenceConfig.useQuery`. */
|
|
12473
|
+
var usePlatformProbeResolveInferenceConfig = trpc.platformProbe.resolveInferenceConfig.useQuery;
|
|
12474
|
+
/** Generated alias around `trpc.platformProbe.resolveHwAccel.useQuery`. */
|
|
12475
|
+
var usePlatformProbeResolveHwAccel = trpc.platformProbe.resolveHwAccel.useQuery;
|
|
12476
|
+
/** Generated alias around `trpc.platformProbe.rescanAccelerators.useMutation`. */
|
|
12477
|
+
var usePlatformProbeRescanAccelerators = trpc.platformProbe.rescanAccelerators.useMutation;
|
|
12403
12478
|
/** Generated alias around `trpc.powerMeter.getStatus.useQuery`. */
|
|
12404
12479
|
var usePowerMeterGetStatus = trpc.powerMeter.getStatus.useQuery;
|
|
12405
12480
|
/** Generated alias around `trpc.presence.getStatus.useQuery`. */
|
|
@@ -29263,7 +29338,7 @@ function DialogTrigger({ children, ...props }) {
|
|
|
29263
29338
|
* whenever they are asymmetric (they are: ~59px top vs ~34px bottom). Every
|
|
29264
29339
|
* term collapses to the previous `100dvh - 2rem` where the insets are 0.
|
|
29265
29340
|
*/
|
|
29266
|
-
var contentVariants = cva("relative fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))] [&:not([open])]:hidden", {
|
|
29341
|
+
var contentVariants = cva("relative fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 m-0 w-[calc(100vw-2rem)] whitespace-normal bg-background-elevated text-foreground border border-border rounded-lg p-4 backdrop:bg-black/50 backdrop:backdrop-blur-sm max-h-[calc(100dvh-2rem-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))] [&:not([open])]:hidden", {
|
|
29267
29342
|
variants: {
|
|
29268
29343
|
width: {
|
|
29269
29344
|
sm: "max-w-sm",
|
|
@@ -32469,16 +32544,24 @@ function GroupField({ field, values, onChange, onChangeMany, disabled, translati
|
|
|
32469
32544
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
32470
32545
|
className: "@container rounded-lg border border-border bg-surface/50 overflow-hidden",
|
|
32471
32546
|
style: { containerType: "inline-size" },
|
|
32472
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
32473
|
-
|
|
32474
|
-
|
|
32547
|
+
children: [isAccordion ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
32548
|
+
type: "button",
|
|
32549
|
+
"aria-expanded": !collapsed,
|
|
32550
|
+
onClick: () => setCollapsed((c) => !c),
|
|
32551
|
+
className: "px-3 py-2 flex w-full items-center justify-between min-w-0 text-left hover:bg-surface",
|
|
32475
32552
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
32476
32553
|
className: "text-xs font-semibold text-foreground min-w-0 break-words",
|
|
32477
32554
|
children: resolveLabel(field.label, translationFn)
|
|
32478
|
-
}),
|
|
32479
|
-
|
|
32480
|
-
|
|
32555
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisclosureChevron, {
|
|
32556
|
+
expanded: !collapsed,
|
|
32557
|
+
className: "ml-2"
|
|
32481
32558
|
})]
|
|
32559
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
32560
|
+
className: "px-3 py-2 flex items-center justify-between min-w-0",
|
|
32561
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
32562
|
+
className: "text-xs font-semibold text-foreground min-w-0 break-words",
|
|
32563
|
+
children: resolveLabel(field.label, translationFn)
|
|
32564
|
+
})
|
|
32482
32565
|
}), !collapsed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
32483
32566
|
className: "px-3 pb-3 grid grid-cols-1 @[480px]:grid-cols-2 gap-x-4 gap-y-3",
|
|
32484
32567
|
children: field.fields.map((subField) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormField, {
|
|
@@ -33691,19 +33774,30 @@ function SectionCard$1({ section, values, onChange, disabled, translationFn, onT
|
|
|
33691
33774
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33692
33775
|
className: "@container rounded-lg border border-border bg-surface p-3",
|
|
33693
33776
|
style: { containerType: "inline-size" },
|
|
33694
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
33695
|
-
|
|
33696
|
-
|
|
33777
|
+
children: [isAccordion ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
33778
|
+
type: "button",
|
|
33779
|
+
"aria-expanded": !collapsed,
|
|
33780
|
+
onClick: () => setCollapsed((c) => !c),
|
|
33781
|
+
className: "flex w-full items-center justify-between mb-2 text-left",
|
|
33697
33782
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
33698
33783
|
className: "text-[11px] font-semibold text-foreground-subtle uppercase tracking-wider",
|
|
33699
33784
|
children: resolveLabel(section.title, translationFn)
|
|
33700
33785
|
}), section.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
33701
33786
|
className: "text-[10px] text-foreground-subtle mt-0.5",
|
|
33702
33787
|
children: resolveLabel(section.description, translationFn)
|
|
33703
|
-
})] }),
|
|
33704
|
-
|
|
33705
|
-
|
|
33788
|
+
})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisclosureChevron, {
|
|
33789
|
+
expanded: !collapsed,
|
|
33790
|
+
className: "ml-2"
|
|
33706
33791
|
})]
|
|
33792
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33793
|
+
className: "flex items-center justify-between mb-2",
|
|
33794
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
33795
|
+
className: "text-[11px] font-semibold text-foreground-subtle uppercase tracking-wider",
|
|
33796
|
+
children: resolveLabel(section.title, translationFn)
|
|
33797
|
+
}), section.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
33798
|
+
className: "text-[10px] text-foreground-subtle mt-0.5",
|
|
33799
|
+
children: resolveLabel(section.description, translationFn)
|
|
33800
|
+
})] })
|
|
33707
33801
|
}), !collapsed && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33708
33802
|
className: `grid ${gridClass} gap-x-3 gap-y-2.5`,
|
|
33709
33803
|
children: section.fields.map((field) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormField, {
|
|
@@ -43098,12 +43192,11 @@ function AlternateLabelsSection({ alternateLabels, colors }) {
|
|
|
43098
43192
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
43099
43193
|
className: "mt-1",
|
|
43100
43194
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
43195
|
+
type: "button",
|
|
43196
|
+
"aria-expanded": expanded,
|
|
43101
43197
|
onClick: () => setExpanded((v) => !v),
|
|
43102
43198
|
className: "text-[9px] text-foreground-subtle hover:text-foreground transition-colors flex items-center gap-1",
|
|
43103
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("
|
|
43104
|
-
className: `transition-transform ${expanded ? "rotate-90" : ""}`,
|
|
43105
|
-
children: "▶"
|
|
43106
|
-
}), t("uiLibrary.detectionResultTree.alternates", {
|
|
43199
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisclosureChevron, { expanded }), t("uiLibrary.detectionResultTree.alternates", {
|
|
43107
43200
|
one: "Alternates ({{count}} source)",
|
|
43108
43201
|
other: "Alternates ({{count}} sources)"
|
|
43109
43202
|
}, { count: sources.length })]
|
|
@@ -48248,7 +48341,7 @@ function MediaPlayerPanel({ trpc, deviceId, features: _features, layout, optimis
|
|
|
48248
48341
|
}
|
|
48249
48342
|
},
|
|
48250
48343
|
className: cn("inline-flex h-5 w-5 items-center justify-center rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors text-xs", busy && "opacity-40 cursor-not-allowed"),
|
|
48251
|
-
children: action === "play" ? "
|
|
48344
|
+
children: action === "play" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Play, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Pause, { className: "h-3 w-3" })
|
|
48252
48345
|
})]
|
|
48253
48346
|
}), layout === "full" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
|
|
48254
48347
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -57283,6 +57376,7 @@ var CONTROL_FILLS = {
|
|
|
57283
57376
|
[_camstack_types.DeviceType.Generic]: false,
|
|
57284
57377
|
[_camstack_types.DeviceType.Weather]: false,
|
|
57285
57378
|
[_camstack_types.DeviceType.Container]: false,
|
|
57379
|
+
[_camstack_types.DeviceType.Gateway]: false,
|
|
57286
57380
|
[_camstack_types.DeviceType.Image]: false,
|
|
57287
57381
|
[_camstack_types.DeviceType.PetFeeder]: false,
|
|
57288
57382
|
[_camstack_types.DeviceType.PetFountain]: false,
|
|
@@ -65943,15 +66037,14 @@ function ResponseLog({ data, label = "Response", className = "" }) {
|
|
|
65943
66037
|
const json = JSON.stringify(data, null, 2);
|
|
65944
66038
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
65945
66039
|
className: `rounded-xl border border-border bg-surface overflow-hidden ${className}`,
|
|
65946
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
65947
|
-
|
|
66040
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
66041
|
+
type: "button",
|
|
66042
|
+
"aria-expanded": expanded,
|
|
66043
|
+
className: "w-full px-3 py-2 border-b border-border flex items-center justify-between text-left select-none hover:bg-surface-hover/30",
|
|
65948
66044
|
onClick: () => setExpanded((e) => !e),
|
|
65949
66045
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
65950
66046
|
className: "flex items-center gap-2",
|
|
65951
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("
|
|
65952
|
-
className: "text-[10px] text-foreground-subtle",
|
|
65953
|
-
children: expanded ? "▼" : "▶"
|
|
65954
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
66047
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisclosureChevron, { expanded }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
65955
66048
|
className: "text-xs font-medium text-foreground",
|
|
65956
66049
|
children: label
|
|
65957
66050
|
})]
|
|
@@ -68919,7 +69012,7 @@ function noItemsSentence(noun, emptyMeansAll, t) {
|
|
|
68919
69012
|
noun: pickerNounLabel(noun, t)
|
|
68920
69013
|
});
|
|
68921
69014
|
}
|
|
68922
|
-
function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, selection = "multiple", groupBy: pinnedGroupBy, emptyMeansAll = false, savedHadDevices = false, noun = "camera", groupTitle: groupTitleProp, emptyLabel, annotate, disabled = false, testId, showAll = false, lockedIds, lockedNote: lockedNoteProp }) {
|
|
69015
|
+
function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, selection = "multiple", groupBy: pinnedGroupBy, emptyMeansAll = false, savedHadDevices = false, noun = "camera", groupTitle: groupTitleProp, emptyLabel, annotate, disabled = false, testId, showAll = false, fillHeight = false, lockedIds, lockedNote: lockedNoteProp }) {
|
|
68923
69016
|
const t = useUiText();
|
|
68924
69017
|
const groupTitle = groupTitleProp ?? ((group) => deviceGroupTitle(group, t));
|
|
68925
69018
|
const lockedNote = lockedNoteProp ?? t("uiLibrary.devicePicker.alreadyAdded", "Already added");
|
|
@@ -68947,7 +69040,7 @@ function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, s
|
|
|
68947
69040
|
}), widening && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DevicesWidenWarning, { noun })]
|
|
68948
69041
|
});
|
|
68949
69042
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
68950
|
-
className: "mt-1 space-y-1.5",
|
|
69043
|
+
className: fillHeight ? "mt-1 flex min-h-0 flex-1 flex-col gap-1.5" : "mt-1 space-y-1.5",
|
|
68951
69044
|
"data-testid": testId,
|
|
68952
69045
|
children: [
|
|
68953
69046
|
listState === "pending" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DevicesLoadingLine, { noun: plural }),
|
|
@@ -68997,6 +69090,7 @@ function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, s
|
|
|
68997
69090
|
noun,
|
|
68998
69091
|
disabled,
|
|
68999
69092
|
showAll,
|
|
69093
|
+
fillHeight,
|
|
69000
69094
|
selection,
|
|
69001
69095
|
...pinnedGroupBy !== void 0 ? { pinnedGroupBy } : {}
|
|
69002
69096
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PickerPanel, {
|
|
@@ -69010,6 +69104,7 @@ function DevicePicker({ devices: devicesIn, listState, fleet, value, onChange, s
|
|
|
69010
69104
|
noun,
|
|
69011
69105
|
disabled,
|
|
69012
69106
|
showAll,
|
|
69107
|
+
fillHeight,
|
|
69013
69108
|
selection
|
|
69014
69109
|
})),
|
|
69015
69110
|
widening && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DevicesWidenWarning, { noun })
|
|
@@ -69058,7 +69153,7 @@ var NO_ZONES = {
|
|
|
69058
69153
|
zones: []
|
|
69059
69154
|
};
|
|
69060
69155
|
/** The searchable, grouped list — rendered one page at a time. */
|
|
69061
|
-
function PickerPanel({ devices, value, onChange, annotate, groupTitle, noun, disabled, locked, lockedNote, showAll, selection, grouping, providers = NO_PROVIDERS }) {
|
|
69156
|
+
function PickerPanel({ devices, value, onChange, annotate, groupTitle, noun, disabled, locked, lockedNote, showAll, fillHeight, selection, grouping, providers = NO_PROVIDERS }) {
|
|
69062
69157
|
const t = useUiText();
|
|
69063
69158
|
const radioName = (0, react$1.useId)();
|
|
69064
69159
|
const [filters, setFilters] = (0, react$1.useState)(PICKER_NO_FILTERS);
|
|
@@ -69110,7 +69205,7 @@ function PickerPanel({ devices, value, onChange, annotate, groupTitle, noun, dis
|
|
|
69110
69205
|
const page = pageRows(rows, showAll ? rows.length : shown);
|
|
69111
69206
|
const toggleGroup = (group, expanded) => setToggles((current) => new Map([...current, [group.key, !expanded]]));
|
|
69112
69207
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
69113
|
-
className: "rounded-md border border-border bg-surface p-2",
|
|
69208
|
+
className: fillHeight ? "flex min-h-0 flex-1 flex-col rounded-md border border-border bg-surface p-2" : "rounded-md border border-border bg-surface p-2",
|
|
69114
69209
|
"data-testid": "device-picker-panel",
|
|
69115
69210
|
children: [
|
|
69116
69211
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeviceFilterBar, {
|
|
@@ -69147,7 +69242,7 @@ function PickerPanel({ devices, value, onChange, annotate, groupTitle, noun, dis
|
|
|
69147
69242
|
className: "py-2 text-[11px] text-foreground-subtle italic",
|
|
69148
69243
|
children: noun === "camera" || noun === "device" ? t("uiLibrary.devicePicker.noDeviceMatches", "No device matches.") : t("uiLibrary.devicePicker.noNounMatches", "No {{noun}} matches.", { noun: pickerNounLabel(noun, t) })
|
|
69149
69244
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
69150
|
-
className: showAll ? "mt-1" : "mt-1 max-h-72 overflow-y-auto",
|
|
69245
|
+
className: fillHeight ? "mt-1 min-h-0 flex-1 overflow-y-auto" : showAll ? "mt-1" : "mt-1 max-h-72 overflow-y-auto",
|
|
69151
69246
|
"data-testid": "device-picker-rows",
|
|
69152
69247
|
children: [page.rows.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PickerRowView, {
|
|
69153
69248
|
row,
|
|
@@ -69207,7 +69302,7 @@ function PickerRowView({ row, value, onChange, onToggleGroup, annotate, groupTit
|
|
|
69207
69302
|
onClick: () => onToggleGroup(group, expanded),
|
|
69208
69303
|
className: "flex min-w-0 flex-1 items-center gap-1 text-left text-[10px] font-semibold uppercase tracking-wide text-foreground-subtle",
|
|
69209
69304
|
children: [
|
|
69210
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
69305
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DisclosureChevron, { expanded }),
|
|
69211
69306
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
69212
69307
|
className: "truncate",
|
|
69213
69308
|
children: groupTitle(group)
|
|
@@ -72758,6 +72853,7 @@ exports.DialogFooter = DialogFooter;
|
|
|
72758
72853
|
exports.DialogHeader = DialogHeader;
|
|
72759
72854
|
exports.DialogTitle = DialogTitle;
|
|
72760
72855
|
exports.DialogTrigger = DialogTrigger;
|
|
72856
|
+
exports.DisclosureChevron = DisclosureChevron;
|
|
72761
72857
|
exports.DiscoveryPanel = DiscoveryPanel;
|
|
72762
72858
|
exports.DisplayPaletteProvider = DisplayPaletteProvider;
|
|
72763
72859
|
exports.Dog = Dog;
|
|
@@ -73007,6 +73103,7 @@ exports.RootSuppliedModelNote = RootSuppliedModelNote;
|
|
|
73007
73103
|
exports.RotateCcw = RotateCcw;
|
|
73008
73104
|
exports.RotateCw = RotateCw;
|
|
73009
73105
|
exports.Route = Route;
|
|
73106
|
+
exports.Router = Router;
|
|
73010
73107
|
exports.RunReport = RunReport;
|
|
73011
73108
|
exports.RunningBadge = RunningBadge;
|
|
73012
73109
|
exports.RunningStatusLine = RunningStatusLine;
|
|
@@ -73562,9 +73659,11 @@ exports.useActionsSetLinks = useActionsSetLinks;
|
|
|
73562
73659
|
exports.useActionsStop = useActionsStop;
|
|
73563
73660
|
exports.useActionsUpdate = useActionsUpdate;
|
|
73564
73661
|
exports.useAddonPagesListPages = useAddonPagesListPages;
|
|
73662
|
+
exports.useAddonSettingsGetDeclaredSettingsKeys = useAddonSettingsGetDeclaredSettingsKeys;
|
|
73565
73663
|
exports.useAddonSettingsGetDeviceSettings = useAddonSettingsGetDeviceSettings;
|
|
73566
73664
|
exports.useAddonSettingsGetGlobalSettings = useAddonSettingsGetGlobalSettings;
|
|
73567
73665
|
exports.useAddonSettingsGetIntegrationSettings = useAddonSettingsGetIntegrationSettings;
|
|
73666
|
+
exports.useAddonSettingsUnsetStoredSettingsKeys = useAddonSettingsUnsetStoredSettingsKeys;
|
|
73568
73667
|
exports.useAddonSettingsUpdateDeviceSettings = useAddonSettingsUpdateDeviceSettings;
|
|
73569
73668
|
exports.useAddonSettingsUpdateGlobalSettings = useAddonSettingsUpdateGlobalSettings;
|
|
73570
73669
|
exports.useAddonT = useAddonT;
|
|
@@ -73940,10 +74039,12 @@ exports.useDeviceOpsRemoveDevice = useDeviceOpsRemoveDevice;
|
|
|
73940
74039
|
exports.useDeviceOpsRunAction = useDeviceOpsRunAction;
|
|
73941
74040
|
exports.useDeviceOpsSetConfig = useDeviceOpsSetConfig;
|
|
73942
74041
|
exports.useDeviceProviderAdoptDiscoveredDevice = useDeviceProviderAdoptDiscoveredDevice;
|
|
74042
|
+
exports.useDeviceProviderClassifyDiscoveryHits = useDeviceProviderClassifyDiscoveryHits;
|
|
73943
74043
|
exports.useDeviceProviderCreateDevice = useDeviceProviderCreateDevice;
|
|
73944
74044
|
exports.useDeviceProviderDiscoverDevices = useDeviceProviderDiscoverDevices;
|
|
73945
74045
|
exports.useDeviceProviderGetChildCreationSchema = useDeviceProviderGetChildCreationSchema;
|
|
73946
74046
|
exports.useDeviceProviderGetDevices = useDeviceProviderGetDevices;
|
|
74047
|
+
exports.useDeviceProviderGetDiscoveryModes = useDeviceProviderGetDiscoveryModes;
|
|
73947
74048
|
exports.useDeviceProviderGetDiscoveryParamsSchema = useDeviceProviderGetDiscoveryParamsSchema;
|
|
73948
74049
|
exports.useDeviceProviderGetManualCreationType = useDeviceProviderGetManualCreationType;
|
|
73949
74050
|
exports.useDeviceProviderGetStatus = useDeviceProviderGetStatus;
|
|
@@ -74115,6 +74216,7 @@ exports.useLocalNetworkGetConnectionEndpoints = useLocalNetworkGetConnectionEndp
|
|
|
74115
74216
|
exports.useLocalNetworkGetHubAddresses = useLocalNetworkGetHubAddresses;
|
|
74116
74217
|
exports.useLocalNetworkGetNotificationEndpoint = useLocalNetworkGetNotificationEndpoint;
|
|
74117
74218
|
exports.useLocalNetworkGetPreferred = useLocalNetworkGetPreferred;
|
|
74219
|
+
exports.useLocalNetworkGetScanSubnets = useLocalNetworkGetScanSubnets;
|
|
74118
74220
|
exports.useLocalNetworkGetTlsStatus = useLocalNetworkGetTlsStatus;
|
|
74119
74221
|
exports.useLocalNetworkGetViewerEndpoints = useLocalNetworkGetViewerEndpoints;
|
|
74120
74222
|
exports.useLocalNetworkList = useLocalNetworkList;
|
|
@@ -74122,9 +74224,11 @@ exports.useLocalNetworkRegenerateCertificate = useLocalNetworkRegenerateCertific
|
|
|
74122
74224
|
exports.useLocalNetworkRemoveCustomAddress = useLocalNetworkRemoveCustomAddress;
|
|
74123
74225
|
exports.useLocalNetworkResetAllowlistToBestMatch = useLocalNetworkResetAllowlistToBestMatch;
|
|
74124
74226
|
exports.useLocalNetworkRevertToGeneratedCertificate = useLocalNetworkRevertToGeneratedCertificate;
|
|
74227
|
+
exports.useLocalNetworkScanNetwork = useLocalNetworkScanNetwork;
|
|
74125
74228
|
exports.useLocalNetworkSetAddressRole = useLocalNetworkSetAddressRole;
|
|
74126
74229
|
exports.useLocalNetworkSetAllowedAddresses = useLocalNetworkSetAllowedAddresses;
|
|
74127
74230
|
exports.useLocalNetworkSetNotificationEndpoint = useLocalNetworkSetNotificationEndpoint;
|
|
74231
|
+
exports.useLocalNetworkSetScanSubnets = useLocalNetworkSetScanSubnets;
|
|
74128
74232
|
exports.useLocalNetworkSetViewerEndpoints = useLocalNetworkSetViewerEndpoints;
|
|
74129
74233
|
exports.useLocalNetworkUploadCertificate = useLocalNetworkUploadCertificate;
|
|
74130
74234
|
exports.useLocalNetworkUseStoredUploadedCertificate = useLocalNetworkUseStoredUploadedCertificate;
|
|
@@ -74530,6 +74634,11 @@ exports.usePlateGallerySearchPlates = usePlateGallerySearchPlates;
|
|
|
74530
74634
|
exports.usePlateGallerySuggestPlateClusters = usePlateGallerySuggestPlateClusters;
|
|
74531
74635
|
exports.usePlateGalleryUnassignPlate = usePlateGalleryUnassignPlate;
|
|
74532
74636
|
exports.usePlateGalleryUnassignPlates = usePlateGalleryUnassignPlates;
|
|
74637
|
+
exports.usePlatformProbeGetCapabilities = usePlatformProbeGetCapabilities;
|
|
74638
|
+
exports.usePlatformProbeGetHardware = usePlatformProbeGetHardware;
|
|
74639
|
+
exports.usePlatformProbeRescanAccelerators = usePlatformProbeRescanAccelerators;
|
|
74640
|
+
exports.usePlatformProbeResolveHwAccel = usePlatformProbeResolveHwAccel;
|
|
74641
|
+
exports.usePlatformProbeResolveInferenceConfig = usePlatformProbeResolveInferenceConfig;
|
|
74533
74642
|
exports.usePlayerOverlayLayer = usePlayerOverlayLayer;
|
|
74534
74643
|
exports.usePlayerOverlayLayers = usePlayerOverlayLayers;
|
|
74535
74644
|
exports.usePlayerToolbarButton = usePlayerToolbarButton;
|