@camstack/addon-benchmark 1.2.34 → 1.2.36

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.
Files changed (16) hide show
  1. package/dist/{MotionZonesSettings-CJQ1qIkl.mjs → MotionZonesSettings-D0ZWade-.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-DqyCPYRr.mjs → PrivacyMaskSettings-CCaDEYqV.mjs} +4 -4
  3. package/dist/{SceneMonitorEditor-CN-XsRrp.mjs → SceneMonitorEditor-DxET6Fog.mjs} +3 -3
  4. package/dist/_stub.js +321 -321
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_benchmark_page-BWwUyiel.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_benchmark_page-CdNasi0D.mjs} +4 -4
  6. package/dist/_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B8fB0oqf.mjs +26 -0
  7. package/dist/{hostInit-CLhuyXAy.mjs → hostInit-rbQfRadV.mjs} +3 -3
  8. package/dist/{player-overlays-0rmH0H8O.mjs → player-overlays-C7-_Xisc.mjs} +1 -1
  9. package/dist/remoteEntry.js +1 -1
  10. package/dist/{responsive-CUJot3AN.mjs → responsive-CaW2oK5P.mjs} +1 -1
  11. package/dist/{square-9qrfIVAE.mjs → square-Cld4asmu.mjs} +1 -1
  12. package/dist/{trash-2-DXimPeDh.mjs → trash-2-AlHHPRiP.mjs} +1 -1
  13. package/dist/{use-device-snapshot-CWhgQbX2.mjs → use-device-snapshot-CrXFafOP.mjs} +1 -1
  14. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_benchmark_page__remoteEntry_js-oZkDdD9C.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_benchmark_page__remoteEntry_js-BrGHsBZM.mjs} +1 -1
  15. package/package.json +1 -1
  16. package/dist/_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-HpVJnRY1.mjs +0 -26
package/dist/_stub.js CHANGED
@@ -1,18 +1,18 @@
1
1
  import "./virtualExposes-erbhyesj.mjs";
2
- import { a as e, i as t, o as n, r } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_benchmark_page__remoteEntry_js-oZkDdD9C.mjs";
2
+ import { a as e, i as t, o as n, r } from "./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_benchmark_page__remoteEntry_js-BrGHsBZM.mjs";
3
3
  import { _ as i, b as a, c as o, d as s, f as c, g as l, h as u, i as d, l as f, m as p, n as m, p as h, r as g, t as _, u as v, v as y, x as b, y as x } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare__react__loadShare__.js-GeuxDuzQ.mjs";
4
- import { a as S, i as C, n as w, o as T, r as E, s as D } from "./responsive-CUJot3AN.mjs";
5
- import { c as ee, l as O, u as te } from "./use-device-snapshot-CWhgQbX2.mjs";
6
- import { a as ne, i as k, n as A, o as re, r as j } from "./player-overlays-0rmH0H8O.mjs";
7
- import { n as M, r as N, t as P } from "./square-9qrfIVAE.mjs";
8
- import { t as F } from "./trash-2-DXimPeDh.mjs";
4
+ import { a as S, i as C, n as w, o as T, r as E, s as D } from "./responsive-CaW2oK5P.mjs";
5
+ import { c as ee, l as O, u as te } from "./use-device-snapshot-CrXFafOP.mjs";
6
+ import { a as ne, i as k, n as A, o as re, r as j } from "./player-overlays-C7-_Xisc.mjs";
7
+ import { n as M, r as N, t as P } from "./square-Cld4asmu.mjs";
8
+ import { t as F } from "./trash-2-AlHHPRiP.mjs";
9
9
  import { n as I, t as L } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.js-Bh7FS7ML.mjs";
10
10
  import { i as R, n as z, r as B, t as V } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare__react_mf_1_jsx_mf_2_runtime__loadShare__.js-SOU_VnTj.mjs";
11
11
  import { n as H, t as ie } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-lv97RBhq.mjs";
12
12
  import { n as ae, t as oe } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare__react_mf_2_dom__loadShare__.js-DQaf3kYb.mjs";
13
13
  import { t as se } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-DUzuN6aS.mjs";
14
14
  import { t as U } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_trpc_mf_1_client__loadShare__.js-DtWmo0vJ.mjs";
15
- import { C as ce, D as le, E as ue, O as de, S as fe, T as pe, _ as W, a as G, b as me, c as he, d as ge, f as _e, g as ve, h as K, i as ye, l as be, m as q, n as xe, o as Se, p as Ce, r as we, s as Te, u as Ee, v as De, w as Oe, x as ke } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-HpVJnRY1.mjs";
15
+ import { C as ce, D as le, E as ue, O as de, S as fe, T as pe, _ as W, a as G, b as me, c as he, d as ge, f as _e, g as K, h as ve, i as ye, l as be, m as xe, n as Se, o as Ce, p as we, s as Te, t as Ee, u as De, v as Oe, w as ke, y as q } from "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B8fB0oqf.mjs";
16
16
  import "./_virtual_mf___mfe_internal__addon_benchmark_page__loadShare___mf_0_camstack_mf_1_sdk__loadShare__.js-DSTkBuYy.mjs";
17
17
  var Ae = D("activity", [["path", {
18
18
  d: "M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",
@@ -2653,7 +2653,7 @@ J.recording.pruneFootage.useMutation, J.recording.deleteFootprint.useMutation, J
2653
2653
  var qr = J.recording.getStatus.useQuery;
2654
2654
  J.recording.getDeviceSettingsContribution.useQuery, J.recording.getDeviceLiveContribution.useQuery, J.recording.applyDeviceSettingsPatch.useMutation, J.recordingExport.createExport.useMutation, J.recordingExport.listExports.useQuery, J.recordingExport.getExport.useQuery, J.recordingExport.cancelExport.useMutation, J.recordingExport.deleteExport.useMutation, J.recordingExport.getDownloadUrl.useQuery, J.recordingExport.readExportBytes.useQuery, J.sceneMonitor.listScenes.useQuery, J.sceneMonitor.createScene.useMutation, J.sceneMonitor.updateScene.useMutation, J.sceneMonitor.deleteScene.useMutation, J.sceneMonitor.captureReference.useMutation, J.sceneMonitor.deleteReference.useMutation, J.sceneMonitor.recheckNow.useMutation, J.sceneMonitor.resetScene.useMutation, J.sceneMonitor.getStatus.useQuery, J.scriptRunner.run.useMutation, J.scriptRunner.stop.useMutation, J.scriptRunner.getStatus.useQuery, J.serverManagement.getServerPackageStatus.useQuery, J.serverManagement.checkServerUpdate.useMutation, J.serverManagement.applyServerUpdate.useMutation, J.serverManagement.rollbackServerUpdate.useMutation, J.serverManagement.restartServer.useMutation, J.settingsStore.get.useQuery, J.settingsStore.set.useMutation, J.settingsStore.query.useQuery, J.settingsStore.insert.useMutation, J.settingsStore.update.useMutation, J.settingsStore.delete.useMutation, J.settingsStore.deleteWhere.useMutation, J.settingsStore.updateWhere.useMutation, J.settingsStore.count.useQuery, J.settingsStore.histogram.useQuery, J.settingsStore.isEmpty.useQuery, J.settingsStore.declareCollection.useMutation, J.smoke.getStatus.useQuery, J.snapshot.getSnapshot.useQuery, J.snapshot.invalidateCache.useMutation, J.snapshot.getSnapshotOverview.useQuery, J.snapshot.getDebugState.useQuery, J.snapshot.getSnapshotLinks.useQuery, J.snapshot.getStatus.useQuery, J.snapshot.getDeviceSettingsContribution.useQuery, J.snapshot.getDeviceLiveContribution.useQuery, J.snapshot.applyDeviceSettingsPatch.useMutation, J.storage.resolve.useQuery, J.storage.write.useMutation, J.storage.read.useQuery, J.storage.exists.useQuery, J.storage.list.useQuery, J.storage.delete.useMutation, J.storage.getAvailableSpace.useQuery, J.storage.beginUpload.useMutation, J.storage.writeChunk.useMutation, J.storage.finalizeUpload.useMutation, J.storage.abortUpload.useMutation, J.storage.beginDownload.useMutation, J.storage.readChunk.useQuery, J.storage.endDownload.useMutation, J.storage.listLocations.useQuery, J.storage.getDefaultLocation.useQuery, J.storage.listLocationDeclarations.useQuery, J.storage.upsertLocation.useMutation, J.storage.deleteLocation.useMutation, J.storage.testLocation.useQuery, J.storage.listProviders.useQuery, J.storage.testConfig.useQuery, J.storageMigration.plan.useQuery, J.storageMigration.start.useMutation, J.storageMigration.status.useQuery, J.storageMigration.cancel.useMutation, J.streamBroker.publishCameraStream.useMutation, J.streamBroker.retractCameraStream.useMutation, J.streamBroker.assignProfile.useMutation, J.streamBroker.unassignProfile.useMutation, J.streamBroker.renderPreBufferClip.useMutation, J.streamBroker.produceEventMedia.useMutation, J.streamBroker.fetchEventMedia.useMutation, J.streamBroker.listAllCameraStreams.useQuery;
2655
2655
  var Jr = J.streamBroker.listAllProfileSlots.useQuery;
2656
- J.streamBroker.getBrokerStats.useQuery, J.streamBroker.probeStream.useMutation, J.streamBroker.listClients.useQuery, J.streamBroker.killClient.useMutation, J.streamBroker.restartProfile.useMutation, J.streamBroker.getStreamUrl.useQuery, J.streamBroker.getStreamWithCodec.useMutation, J.streamBroker.releaseStreamWithCodec.useMutation, J.streamBroker.acquireEgressTranscode.useMutation, J.streamBroker.releaseEgressTranscode.useMutation, J.streamBroker.subscribeAudioChunks.useMutation, J.streamBroker.pullAudioChunks.useQuery, J.streamBroker.unsubscribeAudioChunks.useMutation, J.streamBroker.subscribeFrames.useMutation, J.streamBroker.pullFrameHandles.useQuery, J.streamBroker.unsubscribeFrames.useMutation, J.streamBroker.setPreBufferDuration.useMutation, J.streamBroker.getPreBufferInfo.useQuery, J.streamBroker.getRtspPort.useQuery, J.streamBroker.getAllRtspEntries.useQuery, J.streamBroker.getRtspEntry.useQuery, J.streamBroker.regenerateRtspToken.useMutation, J.streamBroker.setRtspEnabled.useMutation, J.streamBroker.isRtspEnabled.useQuery, J.streamBroker.getDeviceAudioMute.useQuery, J.streamBroker.setDeviceAudioMute.useMutation, J.streamBroker.getDeviceSettingsContribution.useQuery, J.streamBroker.getDeviceLiveContribution.useQuery, J.streamBroker.applyDeviceSettingsPatch.useMutation, J.streamCatalog.getCatalog.useQuery, J.streamParams.getOptions.useQuery, J.streamParams.setProfile.useMutation, J.streamParams.getConfigSchema.useQuery, J.streamParams.getStatus.useQuery, J.switch.setState.useMutation, J.switch.getStatus.useQuery, J.system.info.useQuery, J.system.health.useQuery, J.system.featureFlags.useQuery, J.system.networkAddresses.useQuery, J.system.getRetentionConfig.useQuery, J.system.setRetentionConfig.useMutation, J.system.forceRetentionCleanup.useMutation, J.system.getSiteLocation.useQuery, J.system.setSiteLocation.useMutation, J.system.detectSiteLocation.useMutation, J.tamper.getStatus.useQuery, J.temperatureSensor.getStatus.useQuery, J.terminalSession.listProfiles.useQuery, J.terminalSession.listInstances.useQuery, J.terminalSession.createInstance.useMutation, J.terminalSession.updateInstance.useMutation, J.terminalSession.deleteInstance.useMutation, J.terminalSession.setInstanceEnabled.useMutation, J.terminalSession.listLegacyCameras.useQuery, J.terminalSession.adoptLegacyMonitor.useMutation, J.terminalSession.listSessions.useQuery, J.terminalSession.openSession.useMutation, J.terminalSession.resize.useMutation, J.terminalSession.pullOutput.useMutation, J.terminalSession.writeInput.useMutation, J.terminalSession.close.useMutation, J.toast.onToast.useSubscription, J.turnProvider.getTurnServers.useQuery, J.update.installUpdate.useMutation, J.update.getStatus.useQuery, J.userManagement.listUsers.useQuery, J.userManagement.createUser.useMutation, J.userManagement.updateUser.useMutation, J.userManagement.deleteUser.useMutation, J.userManagement.resetPassword.useMutation, J.userManagement.setUserScopes.useMutation, J.userManagement.validateCredentials.useMutation, J.userManagement.listApiKeys.useQuery, J.userManagement.createApiKey.useMutation, J.userManagement.revokeApiKey.useMutation, J.userManagement.validateApiKey.useMutation, J.userManagement.createScopedToken.useMutation, J.userManagement.revokeScopedToken.useMutation, J.userManagement.validateScopedToken.useQuery, J.userManagement.listScopedTokens.useQuery, J.userManagement.setupTotp.useMutation, J.userManagement.confirmTotp.useMutation, J.userManagement.disableTotp.useMutation, J.userManagement.getTotpStatus.useQuery, J.userManagement.verifyTotp.useMutation, J.userManagement.oauthIssueCode.useMutation, J.userManagement.oauthExchangeCode.useMutation, J.userManagement.oauthRefresh.useMutation, J.userManagement.oauthVerifyAccessToken.useQuery, J.userManagement.listOauthSessions.useQuery, J.userManagement.revokeOauthSession.useMutation, J.vacuumControl.start.useMutation, J.vacuumControl.pause.useMutation, J.vacuumControl.stop.useMutation, J.vacuumControl.returnToBase.useMutation, J.vacuumControl.locate.useMutation, J.vacuumControl.setFanSpeed.useMutation, J.vacuumControl.getStatus.useQuery, J.valve.open.useMutation, J.valve.close.useMutation, J.valve.stop.useMutation, J.valve.setPosition.useMutation, J.valve.getStatus.useQuery, J.vibration.getStatus.useQuery, J.videoclips.listClips.useQuery, J.videoclips.getClipPlayback.useQuery, J.waterHeater.setTargetTemp.useMutation, J.waterHeater.setOperationMode.useMutation, J.waterHeater.setAway.useMutation, J.waterHeater.getStatus.useQuery, J.weather.getStatus.useQuery, J.webrtcSession.listStreams.useQuery, J.webrtcSession.createSession.useMutation, J.webrtcSession.handleOffer.useMutation, J.webrtcSession.handleAnswer.useMutation, J.webrtcSession.addIceCandidate.useMutation, J.webrtcSession.getIceCandidates.useQuery, J.webrtcSession.closeSession.useMutation, J.webrtcSession.hasAdaptiveBitrate.useQuery, J.webrtcSession.getSessionState.useQuery, J.zoneAnalytics.getCurrentSnapshot.useQuery, J.zoneAnalytics.getZoneHistory.useQuery, J.zoneAnalytics.getCameraHistory.useQuery, J.zoneAnalytics.getUnzonedHistory.useQuery, J.zoneRules.listRules.useQuery, J.zoneRules.setRules.useMutation, J.zones.listZones.useQuery, J.zones.addZone.useMutation, J.zones.removeZone.useMutation, J.zones.updateZone.useMutation;
2656
+ J.streamBroker.getBrokerStats.useQuery, J.streamBroker.probeStream.useMutation, J.streamBroker.listClients.useQuery, J.streamBroker.killClient.useMutation, J.streamBroker.restartProfile.useMutation, J.streamBroker.getStreamUrl.useQuery, J.streamBroker.getStreamWithCodec.useMutation, J.streamBroker.releaseStreamWithCodec.useMutation, J.streamBroker.acquireEgressTranscode.useMutation, J.streamBroker.releaseEgressTranscode.useMutation, J.streamBroker.subscribeAudioChunks.useMutation, J.streamBroker.pullAudioChunks.useQuery, J.streamBroker.unsubscribeAudioChunks.useMutation, J.streamBroker.subscribeFrames.useMutation, J.streamBroker.pullFrameHandles.useQuery, J.streamBroker.unsubscribeFrames.useMutation, J.streamBroker.setPreBufferDuration.useMutation, J.streamBroker.getPreBufferInfo.useQuery, J.streamBroker.getRtspPort.useQuery, J.streamBroker.getAllRtspEntries.useQuery, J.streamBroker.getRtspEntry.useQuery, J.streamBroker.regenerateRtspToken.useMutation, J.streamBroker.setRtspEnabled.useMutation, J.streamBroker.isRtspEnabled.useQuery, J.streamBroker.getDeviceAudioMute.useQuery, J.streamBroker.setDeviceAudioMute.useMutation, J.streamBroker.getDeviceSettingsContribution.useQuery, J.streamBroker.getDeviceLiveContribution.useQuery, J.streamBroker.applyDeviceSettingsPatch.useMutation, J.streamCatalog.getCatalog.useQuery, J.streamParams.getOptions.useQuery, J.streamParams.setProfile.useMutation, J.streamParams.getConfigSchema.useQuery, J.streamParams.getStatus.useQuery, J.switch.setState.useMutation, J.switch.getStatus.useQuery, J.system.info.useQuery, J.system.health.useQuery, J.system.featureFlags.useQuery, J.system.networkAddresses.useQuery, J.system.getRetentionConfig.useQuery, J.system.setRetentionConfig.useMutation, J.system.forceRetentionCleanup.useMutation, J.system.getSiteLocation.useQuery, J.system.setSiteLocation.useMutation, J.system.detectSiteLocation.useMutation, J.system.getRequestCensus.useQuery, J.system.getLoggingSettings.useQuery, J.system.setLoggingSettings.useMutation, J.tamper.getStatus.useQuery, J.temperatureSensor.getStatus.useQuery, J.terminalSession.listProfiles.useQuery, J.terminalSession.listInstances.useQuery, J.terminalSession.createInstance.useMutation, J.terminalSession.updateInstance.useMutation, J.terminalSession.deleteInstance.useMutation, J.terminalSession.setInstanceEnabled.useMutation, J.terminalSession.listLegacyCameras.useQuery, J.terminalSession.adoptLegacyMonitor.useMutation, J.terminalSession.listSessions.useQuery, J.terminalSession.openSession.useMutation, J.terminalSession.resize.useMutation, J.terminalSession.pullOutput.useMutation, J.terminalSession.writeInput.useMutation, J.terminalSession.close.useMutation, J.toast.onToast.useSubscription, J.turnProvider.getTurnServers.useQuery, J.update.installUpdate.useMutation, J.update.getStatus.useQuery, J.userManagement.listUsers.useQuery, J.userManagement.createUser.useMutation, J.userManagement.updateUser.useMutation, J.userManagement.deleteUser.useMutation, J.userManagement.resetPassword.useMutation, J.userManagement.setUserScopes.useMutation, J.userManagement.validateCredentials.useMutation, J.userManagement.listApiKeys.useQuery, J.userManagement.createApiKey.useMutation, J.userManagement.revokeApiKey.useMutation, J.userManagement.validateApiKey.useMutation, J.userManagement.createScopedToken.useMutation, J.userManagement.revokeScopedToken.useMutation, J.userManagement.validateScopedToken.useQuery, J.userManagement.listScopedTokens.useQuery, J.userManagement.setupTotp.useMutation, J.userManagement.confirmTotp.useMutation, J.userManagement.disableTotp.useMutation, J.userManagement.getTotpStatus.useQuery, J.userManagement.verifyTotp.useMutation, J.userManagement.oauthIssueCode.useMutation, J.userManagement.oauthExchangeCode.useMutation, J.userManagement.oauthRefresh.useMutation, J.userManagement.oauthVerifyAccessToken.useQuery, J.userManagement.listOauthSessions.useQuery, J.userManagement.revokeOauthSession.useMutation, J.vacuumControl.start.useMutation, J.vacuumControl.pause.useMutation, J.vacuumControl.stop.useMutation, J.vacuumControl.returnToBase.useMutation, J.vacuumControl.locate.useMutation, J.vacuumControl.setFanSpeed.useMutation, J.vacuumControl.getStatus.useQuery, J.valve.open.useMutation, J.valve.close.useMutation, J.valve.stop.useMutation, J.valve.setPosition.useMutation, J.valve.getStatus.useQuery, J.vibration.getStatus.useQuery, J.videoclips.listClips.useQuery, J.videoclips.getClipPlayback.useQuery, J.waterHeater.setTargetTemp.useMutation, J.waterHeater.setOperationMode.useMutation, J.waterHeater.setAway.useMutation, J.waterHeater.getStatus.useQuery, J.weather.getStatus.useQuery, J.webrtcSession.listStreams.useQuery, J.webrtcSession.createSession.useMutation, J.webrtcSession.handleOffer.useMutation, J.webrtcSession.handleAnswer.useMutation, J.webrtcSession.addIceCandidate.useMutation, J.webrtcSession.getIceCandidates.useQuery, J.webrtcSession.closeSession.useMutation, J.webrtcSession.hasAdaptiveBitrate.useQuery, J.webrtcSession.getSessionState.useQuery, J.zoneAnalytics.getCurrentSnapshot.useQuery, J.zoneAnalytics.getZoneHistory.useQuery, J.zoneAnalytics.getCameraHistory.useQuery, J.zoneAnalytics.getUnzonedHistory.useQuery, J.zoneRules.listRules.useQuery, J.zoneRules.setRules.useMutation, J.zones.listZones.useQuery, J.zones.addZone.useMutation, J.zones.removeZone.useMutation, J.zones.updateZone.useMutation;
2657
2657
  //#endregion
2658
2658
  //#region ../ui-library/src/composites/device-select-filter.ts
2659
2659
  function Yr(e, t) {
@@ -5846,7 +5846,7 @@ function Vo({ band: e, onChange: t, onRemove: n }) {
5846
5846
  type: "number",
5847
5847
  min: 0,
5848
5848
  value: e.preBufferSec ?? "",
5849
- placeholder: String(Ee.preBufferSec),
5849
+ placeholder: String(_e.preBufferSec),
5850
5850
  onChange: (e) => t({ preBufferSec: Bo(e.target.value) }),
5851
5851
  className: "w-16 rounded-md border border-border bg-background px-1 py-1 text-xs"
5852
5852
  }),
@@ -5860,7 +5860,7 @@ function Vo({ band: e, onChange: t, onRemove: n }) {
5860
5860
  type: "number",
5861
5861
  min: 0,
5862
5862
  value: e.postBufferSec ?? "",
5863
- placeholder: String(Ee.postBufferSec),
5863
+ placeholder: String(_e.postBufferSec),
5864
5864
  onChange: (e) => t({ postBufferSec: Bo(e.target.value) }),
5865
5865
  className: "w-16 rounded-md border border-border bg-background px-1 py-1 text-xs"
5866
5866
  }),
@@ -5901,10 +5901,10 @@ function Uo({ initial: e, availableProfiles: t, saving: n, onSave: r }) {
5901
5901
  ...c,
5902
5902
  ...e
5903
5903
  }
5904
- }), d = (e) => e === "" ? void 0 : Number(e), f = xe({
5904
+ }), d = (e) => e === "" ? void 0 : Number(e), f = ye({
5905
5905
  enabled: i.length > 0,
5906
5906
  bands: i
5907
- }), p = Se(t, o.profiles), m = (e) => {
5907
+ }), p = he(t, o.profiles), m = (e) => {
5908
5908
  let t = p.includes(e) ? p.filter((t) => t !== e) : [...p, e];
5909
5909
  s({
5910
5910
  ...o,
@@ -5917,7 +5917,7 @@ function Uo({ initial: e, availableProfiles: t, saving: n, onSave: r }) {
5917
5917
  }
5918
5918
  e !== f && a([No(e)]);
5919
5919
  }, g = () => {
5920
- let e = t.length > 0 ? Se(t, o.profiles) : o.profiles ? [...o.profiles] : void 0;
5920
+ let e = t.length > 0 ? he(t, o.profiles) : o.profiles ? [...o.profiles] : void 0;
5921
5921
  r({
5922
5922
  enabled: i.length > 0,
5923
5923
  bands: i,
@@ -5925,7 +5925,7 @@ function Uo({ initial: e, availableProfiles: t, saving: n, onSave: r }) {
5925
5925
  segmentSeconds: o.segmentSeconds,
5926
5926
  retention: o.retention
5927
5927
  });
5928
- }, _ = G.filter((e) => t.includes(e));
5928
+ }, _ = Ce.filter((e) => t.includes(e));
5929
5929
  return /* @__PURE__ */ B("div", {
5930
5930
  className: "space-y-4",
5931
5931
  children: [
@@ -6838,13 +6838,13 @@ function Ls({ deviceId: e }) {
6838
6838
  until: ge,
6839
6839
  limit: F,
6840
6840
  projection: "slim"
6841
- }, { enabled: me && M.has("object") }), ve = Ir({
6841
+ }, { enabled: me && M.has("object") }), K = Ir({
6842
6842
  deviceId: e,
6843
6843
  since: he,
6844
6844
  until: ge,
6845
6845
  limit: F,
6846
6846
  projection: "slim"
6847
- }, { enabled: me && M.has("motion") }), K = Rr({
6847
+ }, { enabled: me && M.has("motion") }), ve = Rr({
6848
6848
  deviceId: e,
6849
6849
  since: he,
6850
6850
  until: ge,
@@ -6860,14 +6860,14 @@ function Ls({ deviceId: e }) {
6860
6860
  label: t.label ?? t.className,
6861
6861
  mediaUrl: t.mediaUrl
6862
6862
  });
6863
- if (M.has("motion")) for (let t of ve.data ?? []) e.push({
6863
+ if (M.has("motion")) for (let t of K.data ?? []) e.push({
6864
6864
  id: t.id,
6865
6865
  timestamp: t.timestamp,
6866
6866
  kind: "motion",
6867
6867
  label: `Motion (${t.regionCount})`,
6868
6868
  mediaUrl: t.mediaUrl
6869
6869
  });
6870
- if (M.has("audio")) for (let t of K.data ?? []) e.push({
6870
+ if (M.has("audio")) for (let t of ve.data ?? []) e.push({
6871
6871
  id: t.id,
6872
6872
  timestamp: t.timestamp,
6873
6873
  kind: "audio",
@@ -6879,15 +6879,15 @@ function Ls({ deviceId: e }) {
6879
6879
  G,
6880
6880
  M,
6881
6881
  _e.data,
6882
- ve.data,
6883
- K.data
6884
- ]), be = h(() => !!(M.has("object") && (_e.data?.length ?? 0) === F || M.has("motion") && (ve.data?.length ?? 0) === F || M.has("audio") && (K.data?.length ?? 0) === F), [
6882
+ K.data,
6883
+ ve.data
6884
+ ]), be = h(() => !!(M.has("object") && (_e.data?.length ?? 0) === F || M.has("motion") && (K.data?.length ?? 0) === F || M.has("audio") && (ve.data?.length ?? 0) === F), [
6885
6885
  M,
6886
6886
  _e.data,
6887
- ve.data,
6888
6887
  K.data,
6888
+ ve.data,
6889
6889
  F
6890
- ]), q = o(async (r, i, a, o, c) => {
6890
+ ]), xe = o(async (r, i, a, o, c) => {
6891
6891
  d(r), p(null);
6892
6892
  try {
6893
6893
  let r = await t.trpcClient.recording.getPlaybackManifest.query({
@@ -6908,7 +6908,7 @@ function Ls({ deviceId: e }) {
6908
6908
  t,
6909
6909
  e,
6910
6910
  n
6911
- ]), xe = o((e) => {
6911
+ ]), Se = o((e) => {
6912
6912
  let t = ls(e, pe);
6913
6913
  if (!t) return;
6914
6914
  if (w.current) {
@@ -6921,18 +6921,18 @@ function Ls({ deviceId: e }) {
6921
6921
  hour: "2-digit",
6922
6922
  minute: "2-digit"
6923
6923
  })}`;
6924
- q(`seek:${t.fromMs}`, t.fromMs, t.toMs, n, t.fromMs);
6924
+ xe(`seek:${t.fromMs}`, t.fromMs, t.toMs, n, t.fromMs);
6925
6925
  }, [
6926
6926
  pe,
6927
- q,
6927
+ xe,
6928
6928
  ne
6929
- ]), Se = o(() => {
6929
+ ]), Ce = o(() => {
6930
6930
  ee("timeline");
6931
- }, [ee]), Ce = o((e) => {
6931
+ }, [ee]), we = o((e) => {
6932
6932
  O(e, "timeline");
6933
- }, [O]), we = o((e) => {
6933
+ }, [O]), Te = o((e) => {
6934
6934
  te(ls(e, pe)?.fromMs ?? e, "timeline");
6935
- }, [pe, te]), Te = o((e) => {
6935
+ }, [pe, te]), Ee = o((e) => {
6936
6936
  if (w.current) {
6937
6937
  ne(e.timestamp - Ns, "timeline");
6938
6938
  return;
@@ -6941,10 +6941,10 @@ function Ls({ deviceId: e }) {
6941
6941
  hour: "2-digit",
6942
6942
  minute: "2-digit"
6943
6943
  })}`;
6944
- q(`event:${e.id}`, e.timestamp - Ns, e.timestamp + Ps, t, e.timestamp);
6945
- }, [q, ne]), Ee = o((e) => {
6944
+ xe(`event:${e.id}`, e.timestamp - Ns, e.timestamp + Ps, t, e.timestamp);
6945
+ }, [xe, ne]), De = o((e) => {
6946
6946
  i((t) => t === e ? null : e);
6947
- }, []), De = ue.isLoading, Oe = de.isLoading, ke = (_e.isLoading || ve.isLoading || K.isLoading) && me, Ae = h(() => _s(H.fromMs, H.toMs, 5), [H.fromMs, H.toMs]), je = C ? D.scrubbing ? D.scrubEpoch : D.playheadEpoch : a, Me = C && (_ === "playing" || _ === "paused");
6947
+ }, []), Oe = ue.isLoading, ke = de.isLoading, q = (_e.isLoading || K.isLoading || ve.isLoading) && me, Ae = h(() => _s(H.fromMs, H.toMs, 5), [H.fromMs, H.toMs]), je = C ? D.scrubbing ? D.scrubEpoch : D.playheadEpoch : a, Me = C && (_ === "playing" || _ === "paused");
6948
6948
  return /* @__PURE__ */ B("div", {
6949
6949
  className: "space-y-3",
6950
6950
  children: [
@@ -7012,7 +7012,7 @@ function Ls({ deviceId: e }) {
7012
7012
  children: [/* @__PURE__ */ z("div", {
7013
7013
  className: "text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle",
7014
7014
  children: "Recorded"
7015
- }), De ? /* @__PURE__ */ z("div", { className: "h-5 animate-pulse rounded bg-background/40" }) : pe.length === 0 ? /* @__PURE__ */ z(ts, {
7015
+ }), Oe ? /* @__PURE__ */ z("div", { className: "h-5 animate-pulse rounded bg-background/40" }) : pe.length === 0 ? /* @__PURE__ */ z(ts, {
7016
7016
  icon: Ft,
7017
7017
  title: "No recordings for this window."
7018
7018
  }) : /* @__PURE__ */ z(vs, {
@@ -7020,11 +7020,11 @@ function Ls({ deviceId: e }) {
7020
7020
  windowTo: H.toMs,
7021
7021
  spans: pe,
7022
7022
  playheadMs: je,
7023
- onSeek: xe,
7023
+ onSeek: Se,
7024
7024
  ...C ? {
7025
- onScrubStart: Se,
7026
- onScrubMove: Ce,
7027
- onScrubEnd: we
7025
+ onScrubStart: Ce,
7026
+ onScrubMove: we,
7027
+ onScrubEnd: Te
7028
7028
  } : {}
7029
7029
  })]
7030
7030
  }),
@@ -7033,12 +7033,12 @@ function Ls({ deviceId: e }) {
7033
7033
  children: [/* @__PURE__ */ z("div", {
7034
7034
  className: "text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle",
7035
7035
  children: "Events · density"
7036
- }), Oe ? /* @__PURE__ */ z("div", { className: "h-6 animate-pulse rounded bg-background/40" }) : /* @__PURE__ */ z(bs, {
7036
+ }), ke ? /* @__PURE__ */ z("div", { className: "h-6 animate-pulse rounded bg-background/40" }) : /* @__PURE__ */ z(bs, {
7037
7037
  windowFrom: H.fromMs,
7038
7038
  windowTo: H.toMs,
7039
7039
  buckets: W,
7040
7040
  selectedIndex: r,
7041
- onSelectBucket: Ee
7041
+ onSelectBucket: De
7042
7042
  })]
7043
7043
  }),
7044
7044
  /* @__PURE__ */ z("div", {
@@ -7053,9 +7053,9 @@ function Ls({ deviceId: e }) {
7053
7053
  }),
7054
7054
  G ? /* @__PURE__ */ z(Ts, {
7055
7055
  clips: ye,
7056
- loading: ke,
7056
+ loading: q,
7057
7057
  busyKey: c,
7058
- onPlay: Te,
7058
+ onPlay: Ee,
7059
7059
  enabledKinds: M,
7060
7060
  onToggleKind: P,
7061
7061
  hasMore: be,
@@ -7076,7 +7076,7 @@ function zs(e) {
7076
7076
  return n > 0 ? `${n}h ${r}m` : r > 0 ? `${r}m ${i}s` : `${i}s`;
7077
7077
  }
7078
7078
  function Bs({ deviceId: e }) {
7079
- let t = ie(), n = qr({ deviceId: e }), r = Wr({ deviceId: e }), i = Gr(), a = Kr(), { data: s } = Jr(void 0, { staleTime: 3e4 }), c = h(() => he(s ?? [], e).map((e) => e.profile), [s, e]), l = (t) => {
7079
+ let t = ie(), n = qr({ deviceId: e }), r = Wr({ deviceId: e }), i = Gr(), a = Kr(), { data: s } = Jr(void 0, { staleTime: 3e4 }), c = h(() => De(s ?? [], e).map((e) => e.profile), [s, e]), l = (t) => {
7080
7080
  i.mutate({
7081
7081
  deviceId: e,
7082
7082
  config: t
@@ -7095,7 +7095,7 @@ function Bs({ deviceId: e }) {
7095
7095
  deviceId: e,
7096
7096
  fromMs: d - Rs,
7097
7097
  toMs: d
7098
- }), p = n.data ? Oe.safeParse(n.data) : null, m = p?.success ? p.data : null, g = r.data ? ce.safeParse(r.data) : null, _ = g?.success ? g.data : null, v = f.data?.ranges ?? [], y = v.reduce((e, t) => e + Math.max(0, t.endMs - t.startMs), 0), b = m?.enabled === !0 && m.activeMode === "continuous";
7098
+ }), p = n.data ? ue.safeParse(n.data) : null, m = p?.success ? p.data : null, g = r.data ? pe.safeParse(r.data) : null, _ = g?.success ? g.data : null, v = f.data?.ranges ?? [], y = v.reduce((e, t) => e + Math.max(0, t.endMs - t.startMs), 0), b = m?.enabled === !0 && m.activeMode === "continuous";
7099
7099
  return /* @__PURE__ */ B("div", {
7100
7100
  className: "space-y-3",
7101
7101
  children: [/* @__PURE__ */ z(k, {
@@ -7170,8 +7170,8 @@ function Bs({ deviceId: e }) {
7170
7170
  //#region ../ui-library/src/widgets/host-widgets.ts
7171
7171
  b();
7172
7172
  var Vs = {
7173
- "host/motion-zones-grid": d(() => import("./MotionZonesSettings-CJQ1qIkl.mjs").then((e) => ({ default: e.MotionZonesSettings }))),
7174
- "host/privacy-mask-grid": d(() => import("./PrivacyMaskSettings-DqyCPYRr.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))),
7173
+ "host/motion-zones-grid": d(() => import("./MotionZonesSettings-D0ZWade-.mjs").then((e) => ({ default: e.MotionZonesSettings }))),
7174
+ "host/privacy-mask-grid": d(() => import("./PrivacyMaskSettings-CCaDEYqV.mjs").then((e) => ({ default: e.PrivacyMaskSettings }))),
7175
7175
  "host/ptz-panel": ko,
7176
7176
  "host/consumables-panel": Ji,
7177
7177
  "host/ptz-autotrack": Hi,
@@ -8214,18 +8214,18 @@ function xc({ value: e, size: t = bc, className: n, alt: r }) {
8214
8214
  var Sc = "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";
8215
8215
  function Cc({ value: e, onChange: t, disabled: n }) {
8216
8216
  let r = [];
8217
- for (let e of ue) r.includes(e.region) || r.push(e.region);
8217
+ for (let e of de) r.includes(e.region) || r.push(e.region);
8218
8218
  return /* @__PURE__ */ B("select", {
8219
8219
  className: Sc,
8220
8220
  value: e,
8221
8221
  disabled: n,
8222
8222
  onChange: (e) => t(e.target.value),
8223
- children: [!ye(e) && /* @__PURE__ */ z("option", {
8223
+ children: [!Te(e) && /* @__PURE__ */ z("option", {
8224
8224
  value: "",
8225
8225
  children: "— Select timezone —"
8226
8226
  }), r.map((e) => /* @__PURE__ */ z("optgroup", {
8227
8227
  label: e,
8228
- children: ue.filter((t) => t.region === e).map((e) => /* @__PURE__ */ z("option", {
8228
+ children: de.filter((t) => t.region === e).map((e) => /* @__PURE__ */ z("option", {
8229
8229
  value: e.id,
8230
8230
  children: e.label
8231
8231
  }, e.id))
@@ -10065,7 +10065,7 @@ function Tl({ active: e, onClick: t, disabled: n, children: r, title: i }) {
10065
10065
  });
10066
10066
  }
10067
10067
  function El({ catalog: e, value: t, onChange: n, disabled: r }) {
10068
- let i = le(e), a = we(e, t), o = i.find((e) => e.family === a?.family)?.family ?? i[0]?.family ?? "", s = i.find((e) => e.family === o) ?? i[0];
10068
+ let i = Ee(e), a = G(e, t), o = i.find((e) => e.family === a?.family)?.family ?? i[0]?.family ?? "", s = i.find((e) => e.family === o) ?? i[0];
10069
10069
  if (!s) return null;
10070
10070
  let c = s.tiers.find((e) => e.tier === a?.tier)?.tier ?? s.tiers[0]?.tier ?? "", l = s.tiers.find((e) => e.tier === c) ?? s.tiers[0];
10071
10071
  if (!l) return null;
@@ -10076,7 +10076,7 @@ function El({ catalog: e, value: t, onChange: n, disabled: r }) {
10076
10076
  let t = l.options.filter((t) => t.resolution === e), r = t.find((e) => e.precision === (a?.precision ?? "fp32") && e.optimization === (a?.optimization ?? "standard")) ?? t[0];
10077
10077
  r && n(r.modelId);
10078
10078
  }, g = (t) => {
10079
- let r = Te(e, {
10079
+ let r = be(e, {
10080
10080
  family: s.family,
10081
10081
  tier: l.tier,
10082
10082
  precision: t.precision,
@@ -10198,7 +10198,7 @@ function kl({ models: e, value: t, onChange: n, disabled: r }) {
10198
10198
  r ? r.push(n) : t.set(e, [n]);
10199
10199
  }
10200
10200
  return t;
10201
- }, [e]), a = h(() => me.filter((e) => (i.get(e)?.length ?? 0) > 0), [i]), o = h(() => {
10201
+ }, [e]), a = h(() => fe.filter((e) => (i.get(e)?.length ?? 0) > 0), [i]), o = h(() => {
10202
10202
  let n = e.find((e) => e.id === t);
10203
10203
  return n ? Ol(n) : void 0;
10204
10204
  }, [e, t]) ?? (a.includes("camstack") ? "camstack" : a[0] ?? "camstack"), [s, c] = l(o);
@@ -11328,21 +11328,21 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11328
11328
  R.current = k, v(() => (R.current?.(A.current), () => R.current?.(null)), []);
11329
11329
  let V = u(null), H = u(null), ie = u(0), ae = u(!1), oe = u(!1), se = u(async () => {}), [U, ce] = l("idle"), [le, ue] = l(""), [de, fe] = l(i), pe = u(de);
11330
11330
  pe.current = de;
11331
- let [W, G] = l(!1), [me, he] = l(!1), ge = Mu(), [_e, ve] = l(!0), K = u(null), ye = u(!1);
11331
+ let [W, G] = l(!1), [me, he] = l(!1), ge = Mu(), [_e, K] = l(!0), ve = u(null), ye = u(!1);
11332
11332
  (b || y) && (ye.current = !0);
11333
- let be = ye.current, q = u(!1);
11334
- x && (q.current = !0);
11335
- let xe = q.current, [Se, Ce] = l(!1), we = u(null), [Te, Ee] = l(null), [De, Oe] = l(!1), ke = o(() => {
11333
+ let be = ye.current, xe = u(!1);
11334
+ x && (xe.current = !0);
11335
+ let Se = xe.current, [Ce, we] = l(!1), Te = u(null), [Ee, De] = l(null), [Oe, ke] = l(!1), q = o(() => {
11336
11336
  let e = A.current;
11337
11337
  if (!(!e || e.readyState < 2 || !e.videoWidth || !e.videoHeight)) try {
11338
11338
  let t = document.createElement("canvas");
11339
11339
  t.width = e.videoWidth, t.height = e.videoHeight;
11340
11340
  let n = t.getContext("2d");
11341
11341
  if (!n || (n.drawImage(e, 0, 0), Nu(n, t.width, t.height))) return;
11342
- we.current = t.toDataURL("image/jpeg", .6);
11342
+ Te.current = t.toDataURL("image/jpeg", .6);
11343
11343
  } catch {}
11344
11344
  }, []), Ae = o((e) => {
11345
- ce(e), e === "playing" && Ce(!0), m?.(e);
11345
+ ce(e), e === "playing" && we(!0), m?.(e);
11346
11346
  }, [m]), je = o(() => {
11347
11347
  if (N.current?.abort(), N.current = null, P.current &&= (clearTimeout(P.current), null), H.current &&= (clearTimeout(H.current), null), V.current = null, oe.current = !1, ie.current = 0, j.current &&= (j.current.close(), null), T && M.current.size > 0) {
11348
11348
  for (let e of M.current) T(e).catch(() => {});
@@ -11708,7 +11708,7 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11708
11708
  Pe,
11709
11709
  O
11710
11710
  ]);
11711
- let Re = xe ? Le : be ? Fe : Ie, ze = u(() => {}), Be = u(g);
11711
+ let Re = Se ? Le : be ? Fe : Ie, ze = u(() => {}), Be = u(g);
11712
11712
  Be.current = g;
11713
11713
  let Ve = u(() => {});
11714
11714
  Ve.current = (e) => {
@@ -11734,7 +11734,7 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11734
11734
  let Ue = u(!1);
11735
11735
  v(() => {
11736
11736
  if (r) {
11737
- if (xe) {
11737
+ if (Se) {
11738
11738
  if (!x) return;
11739
11739
  } else if (be) {
11740
11740
  if (!y || !b) return;
@@ -11743,7 +11743,7 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11743
11743
  }
11744
11744
  }, [
11745
11745
  r,
11746
- xe,
11746
+ Se,
11747
11747
  be,
11748
11748
  x,
11749
11749
  y,
@@ -11753,7 +11753,7 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11753
11753
  let We = () => {
11754
11754
  F.current = 0, Re();
11755
11755
  }, Ge = () => {
11756
- if (F.current = 0, j.current && xe) {
11756
+ if (F.current = 0, j.current && Se) {
11757
11757
  Le(!0);
11758
11758
  return;
11759
11759
  }
@@ -11939,30 +11939,30 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11939
11939
  e && (ju(e, i), i || e.play().catch(() => {}));
11940
11940
  }, [i]);
11941
11941
  let it = () => {
11942
- ge || (ve(!0), K.current && clearTimeout(K.current), K.current = setTimeout(() => ve(!1), 3e3));
11942
+ ge || (K(!0), ve.current && clearTimeout(ve.current), ve.current = setTimeout(() => K(!1), 3e3));
11943
11943
  }, at = () => {
11944
- ve((e) => !e), K.current && clearTimeout(K.current);
11944
+ K((e) => !e), ve.current && clearTimeout(ve.current);
11945
11945
  };
11946
11946
  v(() => {
11947
11947
  if (U === "playing") {
11948
- ke();
11949
- let e = setInterval(ke, 2e3);
11948
+ q();
11949
+ let e = setInterval(q, 2e3);
11950
11950
  return () => clearInterval(e);
11951
11951
  }
11952
- Se && we.current && Ee(we.current);
11952
+ Ce && Te.current && De(Te.current);
11953
11953
  }, [
11954
11954
  U,
11955
- Se,
11956
- ke
11955
+ Ce,
11956
+ q
11957
11957
  ]), v(() => {
11958
11958
  if (U !== "playing") {
11959
- Oe(!1);
11959
+ ke(!1);
11960
11960
  return;
11961
11961
  }
11962
11962
  let e = A.current;
11963
11963
  if (!e) return;
11964
11964
  let t = !1, n = () => {
11965
- t || Oe(!0);
11965
+ t || ke(!0);
11966
11966
  }, r;
11967
11967
  typeof e.requestVideoFrameCallback == "function" && (r = e.requestVideoFrameCallback(() => n())), e.addEventListener("loadeddata", n, { once: !0 });
11968
11968
  let i = setTimeout(n, 12e3);
@@ -11970,7 +11970,7 @@ function Bu({ serverUrl: e, streamKey: t, label: n, autoPlay: r = !0, muted: i =
11970
11970
  t = !0, clearTimeout(i), r !== void 0 && typeof e.cancelVideoFrameCallback == "function" && e.cancelVideoFrameCallback(r), e.removeEventListener("loadeddata", n);
11971
11971
  };
11972
11972
  }, [U]);
11973
- let ot = Se && Te ? Te : ee ?? null, st = !De && ot !== null;
11973
+ let ot = Ce && Ee ? Ee : ee ?? null, st = !Oe && ot !== null;
11974
11974
  return /* @__PURE__ */ B("div", {
11975
11975
  ref: re,
11976
11976
  className: `relative isolate bg-black overflow-hidden group ${p}`,
@@ -12218,7 +12218,7 @@ var Uu = {
12218
12218
  face: "#a855f7",
12219
12219
  plate: "#ec4899"
12220
12220
  }, Wu = Object.freeze({
12221
- ...Object.fromEntries(Object.values(ve).filter((e) => e.category === "detection" || e.kind === "motion").map((e) => [e.kind, e.color])),
12221
+ ...Object.fromEntries(Object.values(Oe).filter((e) => e.category === "detection" || e.kind === "motion").map((e) => [e.kind, e.color])),
12222
12222
  ...Uu
12223
12223
  }), Gu = [
12224
12224
  "#ef4444",
@@ -12231,11 +12231,11 @@ var Uu = {
12231
12231
  "#0891b2",
12232
12232
  "#7c3aed",
12233
12233
  "#059669"
12234
- ], Ku = ge;
12234
+ ], Ku = we;
12235
12235
  function qu(e, t) {
12236
12236
  if (t?.[e]) return t[e];
12237
12237
  if (t?.[e.toLowerCase()]) return t[e.toLowerCase()];
12238
- let n = ve[e] ?? ve[e.toLowerCase()];
12238
+ let n = Oe[e] ?? Oe[e.toLowerCase()];
12239
12239
  if (n !== void 0) return n.color;
12240
12240
  if (Wu[e]) return Wu[e];
12241
12241
  if (Wu[e.toLowerCase()]) return Wu[e.toLowerCase()];
@@ -13382,9 +13382,9 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13382
13382
  ]), v(() => {
13383
13383
  L && he && ge(!1);
13384
13384
  }, [L, he]);
13385
- let ve = o(() => {
13385
+ let K = o(() => {
13386
13386
  R(!0), me("smooth");
13387
- }, [me]), K = o(() => {
13387
+ }, [me]), ve = o(() => {
13388
13388
  if (V.current) {
13389
13389
  V.current = !1;
13390
13390
  return;
@@ -13395,7 +13395,7 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13395
13395
  R((e) => e === t ? e : t);
13396
13396
  }, []), ye = h(() => G.filter((e) => e.tags && Object.keys(e.tags).length > 0 || e.meta && Object.keys(e.meta).length > 0).map((e) => `${e.timestamp}|${e.level}|${e.scope ?? ""}|${e.message}`), [G]), be = o(() => {
13397
13397
  ie((e) => (e && U(/* @__PURE__ */ new Set()), !e));
13398
- }, []), q = o(() => {
13398
+ }, []), xe = o(() => {
13399
13399
  let e = G.map((e) => {
13400
13400
  let t = new Date(e.timestamp).toLocaleTimeString(), n = e.tags ? " " + Object.entries(e.tags).filter(([, e]) => e).map(([e, t]) => `${e}=${t}`).join(" ") : "";
13401
13401
  return `${t} [${e.level.toUpperCase()}]${e.scope ? ` [${e.scope}]` : ""}${n} ${e.message}`;
@@ -13403,23 +13403,23 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13403
13403
  navigator.clipboard.writeText(e.join("\n")).then(() => {
13404
13404
  oe(!0), setTimeout(() => oe(!1), 1500);
13405
13405
  });
13406
- }, [G]), xe = J.logs.clear.useMutation(), Se = o(() => {
13407
- I(Date.now()), M.reset(), xe.mutate(A ? { tags: A } : {});
13406
+ }, [G]), Se = J.logs.clear.useMutation(), Ce = o(() => {
13407
+ I(Date.now()), M.reset(), Se.mutate(A ? { tags: A } : {});
13408
13408
  }, [
13409
13409
  M,
13410
- xe,
13410
+ Se,
13411
13411
  A
13412
- ]), Ce = o((e) => {
13412
+ ]), we = o((e) => {
13413
13413
  U((t) => {
13414
13414
  let n = new Set(t);
13415
13415
  return n.has(e) ? n.delete(e) : n.add(e), n;
13416
13416
  });
13417
- }, []), [we, Te] = l(null), Ee = o((e, t) => {
13417
+ }, []), [Te, Ee] = l(null), De = o((e, t) => {
13418
13418
  let n = new Date(e.timestamp).toISOString(), r = e.tags ? " " + Object.entries(e.tags).filter(([, e]) => e).map(([e, t]) => `${e}=${t}`).join(" ") : "", i = e.meta && Object.keys(e.meta).length > 0 ? ` meta=${JSON.stringify(e.meta)}` : "", a = `${n} [${e.level.toUpperCase()}]${e.scope ? ` [${e.scope}]` : ""}${r} ${e.message}${i}`;
13419
13419
  navigator.clipboard.writeText(a).then(() => {
13420
- Te(t), setTimeout(() => Te((e) => e === t ? null : e), 1200);
13420
+ Ee(t), setTimeout(() => Ee((e) => e === t ? null : e), 1200);
13421
13421
  });
13422
- }, []), De = o((e) => `${e.timestamp}|${e.level}|${e.scope ?? ""}|${e.message}`, []);
13422
+ }, []), Oe = o((e) => `${e.timestamp}|${e.level}|${e.scope ?? ""}|${e.message}`, []);
13423
13423
  return /* @__PURE__ */ B("div", {
13424
13424
  className: Z("h-full min-h-0 flex flex-col", b),
13425
13425
  onClick: (e) => e.stopPropagation(),
@@ -13459,7 +13459,7 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13459
13459
  label: L ? "Following" : "Paused",
13460
13460
  active: L,
13461
13461
  onClick: () => {
13462
- L ? R(!1) : ve();
13462
+ L ? R(!1) : K();
13463
13463
  }
13464
13464
  }),
13465
13465
  /* @__PURE__ */ z(Pf, {
@@ -13472,13 +13472,13 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13472
13472
  /* @__PURE__ */ z(Pf, {
13473
13473
  icon: St,
13474
13474
  label: ae ? "Copied!" : "Copy",
13475
- onClick: q,
13475
+ onClick: xe,
13476
13476
  disabled: G.length === 0
13477
13477
  }),
13478
13478
  /* @__PURE__ */ z(Pf, {
13479
13479
  icon: F,
13480
13480
  label: "Clear",
13481
- onClick: Se
13481
+ onClick: Ce
13482
13482
  }),
13483
13483
  /* @__PURE__ */ B("div", {
13484
13484
  className: "relative",
@@ -13545,13 +13545,13 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13545
13545
  className: "relative flex-1 min-h-0 flex flex-col",
13546
13546
  children: [!L && he && /* @__PURE__ */ B("button", {
13547
13547
  type: "button",
13548
- onClick: ve,
13548
+ onClick: K,
13549
13549
  className: "absolute bottom-2 left-1/2 -translate-x-1/2 z-10 inline-flex items-center gap-1 px-2 py-1 rounded-full border border-primary/40 bg-primary/15 text-primary text-[10px] font-medium shadow-md backdrop-blur-sm hover:bg-primary/25 transition-colors",
13550
13550
  title: "Jump to the newest log line and resume following",
13551
13551
  children: [/* @__PURE__ */ z(Ne, { className: "h-3 w-3" }), "Jump to latest"]
13552
13552
  }), /* @__PURE__ */ B("div", {
13553
13553
  ref: ue,
13554
- onScroll: K,
13554
+ onScroll: ve,
13555
13555
  className: Z("flex-1 min-h-0 overflow-auto font-mono text-[10px]", d),
13556
13556
  children: [
13557
13557
  W && /* @__PURE__ */ B("div", {
@@ -13565,10 +13565,10 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13565
13565
  G.length > 0 && /* @__PURE__ */ z("table", {
13566
13566
  className: "w-full",
13567
13567
  children: /* @__PURE__ */ z("tbody", { children: G.map((e) => {
13568
- let t = Tf[e.level] ?? Tf.info, n = t.icon, r = De(e), i = H || se.has(r), a = e.tags && Object.keys(e.tags).length > 0, o = e.meta && Object.keys(e.meta).length > 0, s = a || o;
13568
+ let t = Tf[e.level] ?? Tf.info, n = t.icon, r = Oe(e), i = H || se.has(r), a = e.tags && Object.keys(e.tags).length > 0, o = e.meta && Object.keys(e.meta).length > 0, s = a || o;
13569
13569
  return /* @__PURE__ */ B("tr", {
13570
13570
  className: Z("hover:bg-surface-hover/30 border-b border-border/30", s && "cursor-pointer"),
13571
- onClick: s ? () => Ce(r) : void 0,
13571
+ onClick: s ? () => we(r) : void 0,
13572
13572
  children: [
13573
13573
  /* @__PURE__ */ z("td", {
13574
13574
  className: "px-2 py-1 text-foreground-subtle whitespace-nowrap align-top w-[70px]",
@@ -13638,8 +13638,8 @@ function Af({ agentId: e, addonId: t, deviceId: n, containerDeviceId: r, integra
13638
13638
  /* @__PURE__ */ z("td", {
13639
13639
  className: "px-1 py-1 align-top w-5",
13640
13640
  children: /* @__PURE__ */ z(Nf, {
13641
- copied: we === r,
13642
- onCopy: () => Ee(e, r)
13641
+ copied: Te === r,
13642
+ onCopy: () => De(e, r)
13643
13643
  })
13644
13644
  })
13645
13645
  ]
@@ -13702,122 +13702,122 @@ function Ff(e, t, n, r) {
13702
13702
  return !0;
13703
13703
  }
13704
13704
  var If = {
13705
- [W.AddonStarted]: {
13705
+ [q.AddonStarted]: {
13706
13706
  icon: En,
13707
13707
  color: "bg-emerald-500/15 text-emerald-400 border-emerald-500/30",
13708
13708
  label: "Started"
13709
13709
  },
13710
- [W.AddonInstalled]: {
13710
+ [q.AddonInstalled]: {
13711
13711
  icon: Ot,
13712
13712
  color: "bg-emerald-500/15 text-emerald-400 border-emerald-500/30",
13713
13713
  label: "Installed"
13714
13714
  },
13715
- [W.AddonRestarted]: {
13715
+ [q.AddonRestarted]: {
13716
13716
  icon: jn,
13717
13717
  color: "bg-blue-500/15 text-blue-400 border-blue-500/30",
13718
13718
  label: "Restarted"
13719
13719
  },
13720
- [W.AddonUpdated]: {
13720
+ [q.AddonUpdated]: {
13721
13721
  icon: ur,
13722
13722
  color: "bg-blue-500/15 text-blue-400 border-blue-500/30",
13723
13723
  label: "Updated"
13724
13724
  },
13725
- [W.AddonStopped]: {
13725
+ [q.AddonStopped]: {
13726
13726
  icon: P,
13727
13727
  color: "bg-foreground-subtle/10 text-foreground-subtle border-border",
13728
13728
  label: "Stopped"
13729
13729
  },
13730
- [W.AddonUninstalled]: {
13730
+ [q.AddonUninstalled]: {
13731
13731
  icon: F,
13732
13732
  color: "bg-foreground-subtle/10 text-foreground-subtle border-border",
13733
13733
  label: "Uninstalled"
13734
13734
  },
13735
- [W.AddonCrashed]: {
13735
+ [q.AddonCrashed]: {
13736
13736
  icon: st,
13737
13737
  color: "bg-red-500/15 text-red-400 border-red-500/30",
13738
13738
  label: "Crashed"
13739
13739
  },
13740
- [W.AddonError]: {
13740
+ [q.AddonError]: {
13741
13741
  icon: sr,
13742
13742
  color: "bg-red-500/15 text-red-400 border-red-500/30",
13743
13743
  label: "Error"
13744
13744
  },
13745
- [W.DetectionPhaseTransition]: {
13745
+ [q.DetectionPhaseTransition]: {
13746
13746
  icon: Ae,
13747
13747
  color: "bg-violet-500/15 text-violet-400 border-violet-500/30",
13748
13748
  label: "Phase"
13749
13749
  },
13750
- [W.DetectionResult]: {
13750
+ [q.DetectionResult]: {
13751
13751
  icon: Pn,
13752
13752
  color: "bg-purple-500/15 text-purple-400 border-purple-500/30",
13753
13753
  label: "Detection"
13754
13754
  },
13755
- [W.DetectionEvent]: {
13755
+ [q.DetectionEvent]: {
13756
13756
  icon: Mt,
13757
13757
  color: "bg-blue-500/15 text-blue-400 border-blue-500/30",
13758
13758
  label: "Event"
13759
13759
  },
13760
- [W.DetectionCameraNative]: {
13760
+ [q.DetectionCameraNative]: {
13761
13761
  icon: tr,
13762
13762
  color: "bg-cyan-500/15 text-cyan-400 border-cyan-500/30",
13763
13763
  label: "Camera AI"
13764
13764
  },
13765
- [W.ProviderMotion]: {
13765
+ [q.ProviderMotion]: {
13766
13766
  icon: Tr,
13767
13767
  color: "bg-orange-500/15 text-orange-400 border-orange-500/30",
13768
13768
  label: "Motion"
13769
13769
  },
13770
- [W.MotionOnMotionChanged]: {
13770
+ [q.MotionOnMotionChanged]: {
13771
13771
  icon: Tr,
13772
13772
  color: "bg-orange-500/15 text-orange-400 border-orange-500/30",
13773
13773
  label: "Motion"
13774
13774
  },
13775
- [W.MotionAnalysis]: {
13775
+ [q.MotionAnalysis]: {
13776
13776
  icon: Ae,
13777
13777
  color: "bg-orange-500/10 text-orange-300 border-orange-500/20",
13778
13778
  label: "Motion analysis"
13779
13779
  },
13780
- [W.MotionZonesRaw]: {
13780
+ [q.MotionZonesRaw]: {
13781
13781
  icon: Ae,
13782
13782
  color: "bg-orange-500/10 text-orange-300 border-orange-500/20",
13783
13783
  label: "Motion zones"
13784
13784
  },
13785
- [W.ProviderDetection]: {
13785
+ [q.ProviderDetection]: {
13786
13786
  icon: tr,
13787
13787
  color: "bg-cyan-500/15 text-cyan-400 border-cyan-500/30",
13788
13788
  label: "Provider Det"
13789
13789
  },
13790
- [W.PipelineAudioInferenceResult]: {
13790
+ [q.PipelineAudioInferenceResult]: {
13791
13791
  icon: M,
13792
13792
  color: "bg-pink-500/15 text-pink-400 border-pink-500/30",
13793
13793
  label: "Audio"
13794
13794
  },
13795
- [W.AgentOnline]: {
13795
+ [q.AgentOnline]: {
13796
13796
  icon: En,
13797
13797
  color: "bg-emerald-500/15 text-emerald-400 border-emerald-500/30",
13798
13798
  label: "Agent Online"
13799
13799
  },
13800
- [W.AgentOffline]: {
13800
+ [q.AgentOffline]: {
13801
13801
  icon: P,
13802
13802
  color: "bg-red-500/15 text-red-400 border-red-500/30",
13803
13803
  label: "Agent Offline"
13804
13804
  },
13805
- [W.DeviceRegistered]: {
13805
+ [q.DeviceRegistered]: {
13806
13806
  icon: Ot,
13807
13807
  color: "bg-emerald-500/15 text-emerald-400 border-emerald-500/30",
13808
13808
  label: "Registered"
13809
13809
  },
13810
- [W.DeviceUnregistered]: {
13810
+ [q.DeviceUnregistered]: {
13811
13811
  icon: F,
13812
13812
  color: "bg-red-500/15 text-red-400 border-red-500/30",
13813
13813
  label: "Unregistered"
13814
13814
  },
13815
- [W.DeviceStateChanged]: {
13815
+ [q.DeviceStateChanged]: {
13816
13816
  icon: Ae,
13817
13817
  color: "bg-foreground-subtle/10 text-foreground-subtle border-border",
13818
13818
  label: "State"
13819
13819
  },
13820
- [W.EventEmitted]: {
13820
+ [q.EventEmitted]: {
13821
13821
  icon: Tr,
13822
13822
  color: "bg-amber-500/15 text-amber-400 border-amber-500/30",
13823
13823
  label: "Event"
@@ -13829,7 +13829,7 @@ function Lf(e, t) {
13829
13829
  color: "bg-foreground-subtle/10 text-foreground-subtle border-border",
13830
13830
  label: e.split(".").pop() ?? e
13831
13831
  };
13832
- if (e === W.DeviceStateChanged && t && typeof t.capName == "string") {
13832
+ if (e === q.DeviceStateChanged && t && typeof t.capName == "string") {
13833
13833
  let e = t.capName;
13834
13834
  return {
13835
13835
  ...n,
@@ -13838,31 +13838,31 @@ function Lf(e, t) {
13838
13838
  }
13839
13839
  return n;
13840
13840
  }
13841
- var Rf = Object.freeze([...new Set(Object.values(W))].toSorted()), zf = Object.freeze([
13842
- W.PipelineCameraMetricsSnapshot,
13843
- W.PipelineRunnerLoadSnapshot,
13844
- W.PipelineEngineMetricsSnapshot,
13845
- W.PipelineInferenceResult,
13846
- W.PipelineTrace,
13847
- W.PipelineProgress,
13848
- W.StreamBrokerMetricsSnapshot,
13849
- W.MetricsNodeResourcesSnapshot,
13850
- W.MetricsNodeProcessesSnapshot,
13851
- W.ClusterTopologySnapshot,
13852
- W.MotionAnalysis,
13853
- W.MotionZonesRaw,
13854
- W.DetectionResult,
13855
- W.PipelineAudioInferenceResult,
13856
- W.PlatformProbePhase,
13857
- W.BenchmarkProgress,
13858
- W.ModelDownloadProgress
13841
+ var Rf = Object.freeze([...new Set(Object.values(q))].toSorted()), zf = Object.freeze([
13842
+ q.PipelineCameraMetricsSnapshot,
13843
+ q.PipelineRunnerLoadSnapshot,
13844
+ q.PipelineEngineMetricsSnapshot,
13845
+ q.PipelineInferenceResult,
13846
+ q.PipelineTrace,
13847
+ q.PipelineProgress,
13848
+ q.StreamBrokerMetricsSnapshot,
13849
+ q.MetricsNodeResourcesSnapshot,
13850
+ q.MetricsNodeProcessesSnapshot,
13851
+ q.ClusterTopologySnapshot,
13852
+ q.MotionAnalysis,
13853
+ q.MotionZonesRaw,
13854
+ q.DetectionResult,
13855
+ q.PipelineAudioInferenceResult,
13856
+ q.PlatformProbePhase,
13857
+ q.BenchmarkProgress,
13858
+ q.ModelDownloadProgress
13859
13859
  ]), Bf = new Set(zf), Vf = Object.freeze(Rf.filter((e) => !Bf.has(e)));
13860
13860
  function Hf(e, t) {
13861
- if (e === W.DetectionPhaseTransition) {
13861
+ if (e === q.DetectionPhaseTransition) {
13862
13862
  let e = t.to, n = t.from, r = typeof t.source == "string" ? t.source : null, i = typeof t.cooldownMs == "number" ? t.cooldownMs : null, a = r ? ` (${r}${i ? `, ${Math.round(i / 1e3)}s cooldown` : ""})` : "";
13863
13863
  return e === "active" ? `Motion detected — phase active${a}` : e === "watching" ? `Cooldown expired — phase watching${a}` : `Phase: ${String(n)} → ${String(e)}${a}`;
13864
13864
  }
13865
- if (e === W.DetectionResult) {
13865
+ if (e === q.DetectionResult) {
13866
13866
  let e = t.frame?.detections ?? [];
13867
13867
  if (e.length === 0) return null;
13868
13868
  let n = /* @__PURE__ */ new Map();
@@ -13872,19 +13872,19 @@ function Hf(e, t) {
13872
13872
  }
13873
13873
  return [...n.entries()].map(([e, t]) => t > 1 ? `${e} ×${t}` : e).join(", ");
13874
13874
  }
13875
- if (e === W.PipelineAudioInferenceResult) {
13875
+ if (e === q.PipelineAudioInferenceResult) {
13876
13876
  let e = t.frame?.detections ?? [];
13877
13877
  return e.length === 0 ? null : e.map((e) => {
13878
13878
  let t = e, n = t.macroClass ?? t.class ?? t.label, r = typeof n == "string" ? n : "", i = t.score;
13879
13879
  return i ? `${r} (${Math.round(i * 100)}%)` : r;
13880
13880
  }).filter(Boolean).join(", ");
13881
13881
  }
13882
- if (e === W.DetectionEvent) {
13882
+ if (e === q.DetectionEvent) {
13883
13883
  let e = t.label ?? t.class, n = t.score ?? t.confidence, r = [];
13884
13884
  return typeof e == "string" && r.push(e), typeof n == "number" && r.push(`${Math.round(n * 100)}%`), r.length > 0 ? r.join(" — ") : null;
13885
13885
  }
13886
- if (e === W.ProviderMotion) return t.active === !0 ? "motion start" : "motion stop";
13887
- if (e === W.DeviceStateChanged) {
13886
+ if (e === q.ProviderMotion) return t.active === !0 ? "motion start" : "motion stop";
13887
+ if (e === q.DeviceStateChanged) {
13888
13888
  let e = t.slice;
13889
13889
  if (e && typeof e == "object") {
13890
13890
  let t = Object.keys(e).filter((e) => e !== "lastFetchedAt" && e !== "ts");
@@ -13892,12 +13892,12 @@ function Hf(e, t) {
13892
13892
  }
13893
13893
  return null;
13894
13894
  }
13895
- if (e === W.EventEmitted) return (typeof t.eventType == "string" ? t.eventType : null) ?? null;
13896
- if (e === W.MotionOnMotionChanged) {
13895
+ if (e === q.EventEmitted) return (typeof t.eventType == "string" ? t.eventType : null) ?? null;
13896
+ if (e === q.MotionOnMotionChanged) {
13897
13897
  let e = t.detected, n = typeof t.source == "string" ? t.source : null, r = e === !0 ? "motion start" : e === !1 ? "motion stop" : "motion";
13898
13898
  return n ? `${r} (${n})` : r;
13899
13899
  }
13900
- if (e === W.ProviderDetection || e === W.DetectionCameraNative) {
13900
+ if (e === q.ProviderDetection || e === q.DetectionCameraNative) {
13901
13901
  let e = t.detections ?? [];
13902
13902
  if (!Array.isArray(e) || e.length === 0) return (typeof t.class == "string" ? t.class : null) ?? null;
13903
13903
  let n = /* @__PURE__ */ new Map();
@@ -13912,7 +13912,7 @@ function Hf(e, t) {
13912
13912
  }
13913
13913
  function Uf(e) {
13914
13914
  let t = e.category;
13915
- return t === W.DetectionResult || t === W.PipelineAudioInferenceResult ? Hf(t, e.data) !== null : !0;
13915
+ return t === q.DetectionResult || t === q.PipelineAudioInferenceResult ? Hf(t, e.data) !== null : !0;
13916
13916
  }
13917
13917
  var Wf = 300;
13918
13918
  function Gf({ agentId: e, addonId: t, deviceId: n, defaultCategories: r, categories: i, category: a, maxHeight: s = "max-h-96", limit: c = 50, showCategoryFilter: d = !0, showFilters: f = !1, liveBuffer: p, onClose: m, className: g }) {
@@ -14016,26 +14016,26 @@ function Gf({ agentId: e, addonId: t, deviceId: n, defaultCategories: r, categor
14016
14016
  x(new Set(_)), A(""), L(0);
14017
14017
  }, [_]), me = o(() => {
14018
14018
  L(Date.now()), w.reset();
14019
- }, [w]), [he, ge] = l(!1), [_e, ve] = l(null), K = o((e) => {
14019
+ }, [w]), [he, ge] = l(!1), [_e, K] = l(null), ve = o((e) => {
14020
14020
  let t = new Date(e.timestamp).toISOString(), n = Hf(e.category, e.data) ?? "", r = n ? ` ${n}` : "";
14021
14021
  return `${t} [${e.category}]${r} data=${JSON.stringify(e.data)}`;
14022
14022
  }, []), ye = o(() => {
14023
- let e = fe.map(K);
14023
+ let e = fe.map(ve);
14024
14024
  navigator.clipboard.writeText(e.join("\n")).then(() => {
14025
14025
  ge(!0), setTimeout(() => ge(!1), 1500);
14026
14026
  });
14027
- }, [fe, K]), be = o((e) => {
14028
- navigator.clipboard.writeText(K(e)).then(() => {
14029
- ve(e.id), setTimeout(() => ve((t) => t === e.id ? null : t), 1200);
14027
+ }, [fe, ve]), be = o((e) => {
14028
+ navigator.clipboard.writeText(ve(e)).then(() => {
14029
+ K(e.id), setTimeout(() => K((t) => t === e.id ? null : t), 1200);
14030
14030
  });
14031
- }, [K]), q = o(() => {
14031
+ }, [ve]), xe = o(() => {
14032
14032
  x(new Set(Rf));
14033
- }, []), xe = o(() => {
14033
+ }, []), Se = o(() => {
14034
14034
  x(/* @__PURE__ */ new Set());
14035
- }, []), Se = h(() => {
14035
+ }, []), Ce = h(() => {
14036
14036
  let e = N.trim().toLowerCase();
14037
14037
  return e ? Rf.filter((t) => t.toLowerCase().includes(e)) : Rf;
14038
- }, [N]), Ce = Rf.length, we = b.size, Te = we === Ce, Ee = Te ? "All" : `${we}/${Ce}`;
14038
+ }, [N]), we = Rf.length, Te = b.size, Ee = Te === we, De = Ee ? "All" : `${Te}/${we}`;
14039
14039
  return /* @__PURE__ */ B("div", {
14040
14040
  className: Z("h-full min-h-0 flex flex-col", g),
14041
14041
  onClick: (e) => e.stopPropagation(),
@@ -14081,22 +14081,22 @@ function Gf({ agentId: e, addonId: t, deviceId: n, defaultCategories: r, categor
14081
14081
  children: [/* @__PURE__ */ B("button", {
14082
14082
  type: "button",
14083
14083
  onClick: () => M((e) => !e),
14084
- className: Z("inline-flex items-center gap-1 text-[9px] px-1.5 py-0.5 rounded border transition-colors", Te ? "border-border text-foreground-subtle hover:text-foreground" : "border-violet-500/30 bg-violet-500/10 text-violet-400"),
14084
+ className: Z("inline-flex items-center gap-1 text-[9px] px-1.5 py-0.5 rounded border transition-colors", Ee ? "border-border text-foreground-subtle hover:text-foreground" : "border-violet-500/30 bg-violet-500/10 text-violet-400"),
14085
14085
  title: "Pick events to track",
14086
14086
  children: [
14087
14087
  /* @__PURE__ */ z(Bt, { className: "h-2.5 w-2.5" }),
14088
14088
  "Filter (",
14089
- Ee,
14089
+ De,
14090
14090
  ")"
14091
14091
  ]
14092
14092
  }), j && /* @__PURE__ */ z(Kf, {
14093
14093
  search: N,
14094
14094
  onSearchChange: P,
14095
- categories: Se,
14095
+ categories: Ce,
14096
14096
  active: b,
14097
14097
  onToggle: W,
14098
- onSelectAll: q,
14099
- onSelectNone: xe,
14098
+ onSelectAll: xe,
14099
+ onSelectNone: Se,
14100
14100
  onResetDefaults: G
14101
14101
  })]
14102
14102
  }),
@@ -14363,7 +14363,7 @@ function Jf({ copied: e, onCopy: t }) {
14363
14363
  }
14364
14364
  //#endregion
14365
14365
  //#region ../ui-library/src/composites/device-controls/atoms.tsx
14366
- b(), Object.freeze([...new Set(De.filter((e) => e.scope === "device").map((e) => e.name))].toSorted()), b(), b();
14366
+ b(), Object.freeze([...new Set(me.filter((e) => e.scope === "device").map((e) => e.name))].toSorted()), b(), b();
14367
14367
  function Yf({ value: e, unit: t, onDelta: n }) {
14368
14368
  return /* @__PURE__ */ B("div", {
14369
14369
  className: "flex h-8 w-full overflow-hidden rounded-lg border border-border bg-surface",
@@ -14638,7 +14638,7 @@ function gp({ trpc: e, deviceId: t, layout: n, optimistic: r, features: i }) {
14638
14638
  slice: (e) => e.state.lockControl
14639
14639
  }), { display: c, applyOptimistic: u } = mp(o, { enabled: r ?? !0 }), [d, f] = l(null), [p, m] = l(!1), [h, g] = l(null);
14640
14640
  if (c === void 0) return null;
14641
- let _ = c.state === "locked" || c.state === "locking", v = !s || c.state === "jammed", y = i?.includes(Ce.LockOpen) === !0, b = n === "compact", x = () => {
14641
+ let _ = c.state === "locked" || c.state === "locking", v = !s || c.state === "jammed", y = i?.includes(ve.LockOpen) === !0, b = n === "compact", x = () => {
14642
14642
  u({ state: "locking" }), a?.lock({});
14643
14643
  }, S = () => {
14644
14644
  u({ state: "unlocking" }), a?.unlock({});
@@ -15546,10 +15546,10 @@ b();
15546
15546
  var Gp = (e) => e;
15547
15547
  function Kp(e) {
15548
15548
  let t = e.capName === void 0 ? void 0 : e.display?.perCap?.[e.capName], n = t?.precision ?? e.display?.precision ?? e.roleDefault?.precision ?? e.slicePrecision, r = e.sliceUnit ?? e.canonicalUnit, i = t?.unit ?? e.display?.unit ?? e.roleDefault?.unit;
15549
- return i !== void 0 && r !== void 0 && i !== r && de(r, i) ? {
15549
+ return i !== void 0 && r !== void 0 && i !== r && Se(r, i) ? {
15550
15550
  unit: i,
15551
15551
  precision: n,
15552
- toDisplayValue: (e) => be(e, r, i) ?? e
15552
+ toDisplayValue: (e) => ge(e, r, i) ?? e
15553
15553
  } : {
15554
15554
  unit: r ?? "",
15555
15555
  precision: n,
@@ -16015,7 +16015,7 @@ function fm({ trpc: e, deviceId: t, features: n, optimistic: r }) {
16015
16015
  slice: (e) => e.state.cover
16016
16016
  }), { display: s, applyOptimistic: c } = mp(a, { enabled: r ?? !0 });
16017
16017
  if (i === void 0) return null;
16018
- let l = !o, u = (n ?? []).includes(Ce.CoverPositionable), d = (n ?? []).includes(Ce.CoverTilt), f = im(s?.state), p = s?.position ?? null, m = p !== null, h = s?.state === "open" || s?.state === "opening", g = (e, t) => {
16018
+ let l = !o, u = (n ?? []).includes(ve.CoverPositionable), d = (n ?? []).includes(ve.CoverTilt), f = im(s?.state), p = s?.position ?? null, m = p !== null, h = s?.state === "open" || s?.state === "opening", g = (e, t) => {
16019
16019
  l || !e || (t !== void 0 && c(t), e({}));
16020
16020
  }, _ = (e) => {
16021
16021
  l || (c({ position: e }), i?.setPosition({ position: e }));
@@ -17647,7 +17647,7 @@ function fh({ label: e, busy: t, variant: n, onClick: r, children: i }) {
17647
17647
  function ph({ trpc: e, deviceId: t, features: n, optimistic: r }) {
17648
17648
  let { cap: i, slice: a, available: o } = ah(e, t), { display: s, applyOptimistic: c } = mp(a, { enabled: r ?? !0 });
17649
17649
  if (i === void 0) return null;
17650
- let l = !o, u = (n ?? []).includes(Ce.ValvePositionable), d = im(s?.state), f = ih(s?.state), p = s?.position ?? null, m = p !== null, h = (e, t) => {
17650
+ let l = !o, u = (n ?? []).includes(ve.ValvePositionable), d = im(s?.state), f = ih(s?.state), p = s?.position ?? null, m = p !== null, h = (e, t) => {
17651
17651
  l || !e || (t !== void 0 && c(t), e({}));
17652
17652
  }, g = (e) => {
17653
17653
  l || (c({ position: e }), i.setPosition({ position: e }));
@@ -18940,7 +18940,7 @@ function Uh({ trpc: e, deviceId: t, deviceName: n }) {
18940
18940
  b();
18941
18941
  var Wh = 20, Gh = 9, Kh = "#f59e0b", qh = "#ef4444";
18942
18942
  function Jh(e) {
18943
- return Math.min(ke, Math.max(fe, e));
18943
+ return Math.min(ce, Math.max(ke, e));
18944
18944
  }
18945
18945
  var Yh = "\n@keyframes pf-eat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(2px)} }\n@keyframes pf-pulse { 0%,100%{opacity:.55} 50%{opacity:1} }\n@media (prefers-reduced-motion: reduce) {\n .pf-eat, .pf-pulse { animation: none !important; }\n}\n";
18946
18946
  function Xh({ trpc: e, deviceId: t, layout: n, optimistic: r }) {
@@ -19239,7 +19239,7 @@ function Qh({ icon: e, label: t }) {
19239
19239
  });
19240
19240
  }
19241
19241
  function $h({ grams: e, low: t, eating: n }) {
19242
- let r = Math.min(1, Math.max(0, (e ?? 0) / ke)), i = t ? qh : Kh, a = 52 - r * 24;
19242
+ let r = Math.min(1, Math.max(0, (e ?? 0) / ce)), i = t ? qh : Kh, a = 52 - r * 24;
19243
19243
  return /* @__PURE__ */ B("svg", {
19244
19244
  width: 72,
19245
19245
  height: 72,
@@ -19304,7 +19304,7 @@ function eg({ label: e, grams: t, busy: n, onGrams: r, onFeed: i }) {
19304
19304
  /* @__PURE__ */ z(tg, {
19305
19305
  label: `Decrease ${e} portion`,
19306
19306
  symbol: "−",
19307
- disabled: n || t <= fe,
19307
+ disabled: n || t <= ke,
19308
19308
  onClick: () => r(Jh(t - 1))
19309
19309
  }),
19310
19310
  /* @__PURE__ */ B("span", {
@@ -19317,7 +19317,7 @@ function eg({ label: e, grams: t, busy: n, onGrams: r, onFeed: i }) {
19317
19317
  /* @__PURE__ */ z(tg, {
19318
19318
  label: `Increase ${e} portion`,
19319
19319
  symbol: "+",
19320
- disabled: n || t >= ke,
19320
+ disabled: n || t >= ce,
19321
19321
  onClick: () => r(Jh(t + 1))
19322
19322
  })
19323
19323
  ]
@@ -20141,7 +20141,7 @@ function Hg({ trpc: e, deviceId: t, features: n, optimistic: r }) {
20141
20141
  slice: (e) => e.state.lockControl
20142
20142
  }), { display: s, applyOptimistic: c } = mp(a, { enabled: r ?? !0 });
20143
20143
  if (i === void 0 || s === void 0) return null;
20144
- let l = Ig(s.state), u = Lg(s.state) || !o, d = n?.includes(Ce.LockOpen) === !0, f = () => {
20144
+ let l = Ig(s.state), u = Lg(s.state) || !o, d = n?.includes(ve.LockOpen) === !0, f = () => {
20145
20145
  u || (l ? (c({ state: "unlocking" }), i.unlock({})) : (c({ state: "locking" }), i.lock({})));
20146
20146
  }, p = () => {
20147
20147
  u || i.open({});
@@ -20199,7 +20199,7 @@ function Xg({ trpc: e, deviceId: t, features: n, optimistic: r }) {
20199
20199
  slice: (e) => e.state.color
20200
20200
  }), s = mp(i.slice, { enabled: r ?? !0 }), c = mp(a.slice, { enabled: r ?? !0 }), l = mp(o.slice, { enabled: r ?? !0 });
20201
20201
  if (i.cap === void 0 || s.display === void 0) return null;
20202
- let u = s.display.on === !0, d = !i.available, f = c.display?.percentage ?? 0, p = !a.available, m = u ? f / 100 : 0, h = u ? Jg : Yg, g = (n?.includes(Ce.LightColorMired) ?? !1) && o.cap !== void 0, _ = l.display?.mireds, v = !o.available;
20202
+ let u = s.display.on === !0, d = !i.available, f = c.display?.percentage ?? 0, p = !a.available, m = u ? f / 100 : 0, h = u ? Jg : Yg, g = (n?.includes(ve.LightColorMired) ?? !1) && o.cap !== void 0, _ = l.display?.mireds, v = !o.available;
20203
20203
  return /* @__PURE__ */ B("div", {
20204
20204
  className: "flex flex-col items-stretch gap-4 rounded-lg border border-border bg-surface p-4",
20205
20205
  children: [
@@ -20324,7 +20324,7 @@ function $g({ trpc: e, deviceId: t, features: n, optimistic: r }) {
20324
20324
  slice: (e) => e.state.fanControl
20325
20325
  }), o = mp(i.slice, { enabled: r ?? !0 }), s = mp(a.slice, { enabled: r ?? !0 });
20326
20326
  if (i.cap === void 0 || o.display === void 0) return null;
20327
- let c = o.display.on === !0, l = !i.available, u = s.display?.percentage ?? 0, d = !a.available, f = c ? u / 100 : 0, p = c ? Zg : Qg, m = n?.includes(Ce.FanSpeed) ?? !1, h = (n?.includes(Ce.FanOscillating) ?? !1) && a.cap !== void 0, g = s.display?.availablePresets ?? [], _ = (n?.includes(Ce.FanPreset) ?? !1) && a.cap !== void 0 && g.length > 0, v = s.display?.preset ?? "", y = s.display?.oscillating === !0, b = () => {
20327
+ let c = o.display.on === !0, l = !i.available, u = s.display?.percentage ?? 0, d = !a.available, f = c ? u / 100 : 0, p = c ? Zg : Qg, m = n?.includes(ve.FanSpeed) ?? !1, h = (n?.includes(ve.FanOscillating) ?? !1) && a.cap !== void 0, g = s.display?.availablePresets ?? [], _ = (n?.includes(ve.FanPreset) ?? !1) && a.cap !== void 0 && g.length > 0, v = s.display?.preset ?? "", y = s.display?.oscillating === !0, b = () => {
20328
20328
  if (l) return;
20329
20329
  let e = !c;
20330
20330
  o.applyOptimistic({ on: e }), i.cap?.setState({ on: e });
@@ -20513,7 +20513,7 @@ function o_({ trpc: e, deviceId: t, features: n, optimistic: r }) {
20513
20513
  slice: (e) => e.state.mediaPlayer
20514
20514
  }), { display: s, applyOptimistic: c } = mp(a, { enabled: r ?? !0 });
20515
20515
  if (i === void 0 || s === void 0) return null;
20516
- let l = !o, u = t_(s.state), d = (n?.includes(Ce.MediaPlayerSeek) ?? !1) && s.durationMs !== null && s.durationMs > 0, f = n?.includes(Ce.MediaPlayerNext) ?? !1, p = n?.includes(Ce.MediaPlayerPrevious) ?? !1, m = (n?.includes(Ce.MediaPlayerVolume) ?? !1) && s.volumeLevel !== null, h = () => {
20516
+ let l = !o, u = t_(s.state), d = (n?.includes(ve.MediaPlayerSeek) ?? !1) && s.durationMs !== null && s.durationMs > 0, f = n?.includes(ve.MediaPlayerNext) ?? !1, p = n?.includes(ve.MediaPlayerPrevious) ?? !1, m = (n?.includes(ve.MediaPlayerVolume) ?? !1) && s.volumeLevel !== null, h = () => {
20517
20517
  l || (u === "play" ? (c({ state: "playing" }), i.play({})) : (c({ state: "paused" }), i.pause({})));
20518
20518
  }, g = s.currentMedia?.artist ?? s.currentMedia?.album ?? null, _ = n_(s.positionMs, s.durationMs), v = s.volumeLevel ?? 0;
20519
20519
  return /* @__PURE__ */ B("div", {
@@ -21329,7 +21329,7 @@ var K_ = {
21329
21329
  HeroCard: mm
21330
21330
  }
21331
21331
  };
21332
- Object.fromEntries(Object.values(K).map((e) => [e, K_[_e[e]]])), K.Cover, K.Valve, K.Thermostat, K.Climate, K.Control, K.Button, K.MediaPlayer, K.AlarmPanel, K.Lock, K.Vacuum, K.LawnMower, K.Humidifier, K.Switch, K.Siren, K.Light, K.Fan, K.WaterHeater, K.Sensor, K.Presence, K.EventEmitter, K.Notifier, K.Script, K.Automation, K.Camera, K.Hub, K.Update, K.Generic, K.Weather, K.Container, K.Image, K.PetFeeder, new Set(Object.values(K));
21332
+ Object.fromEntries(Object.values(W).map((e) => [e, K_[xe[e]]])), W.Cover, W.Valve, W.Thermostat, W.Climate, W.Control, W.Button, W.MediaPlayer, W.AlarmPanel, W.Lock, W.Vacuum, W.LawnMower, W.Humidifier, W.Switch, W.Siren, W.Light, W.Fan, W.WaterHeater, W.Sensor, W.Presence, W.EventEmitter, W.Notifier, W.Script, W.Automation, W.Camera, W.Hub, W.Update, W.Generic, W.Weather, W.Container, W.Image, W.PetFeeder, new Set(Object.values(W));
21333
21333
  //#endregion
21334
21334
  //#region ../ui-library/src/lib/format-last-seen.ts
21335
21335
  var q_ = 1e3;
@@ -24338,343 +24338,343 @@ b(), b();
24338
24338
  //#endregion
24339
24339
  //#region ../ui-library/src/composites/device-meta.ts
24340
24340
  var xw = {
24341
- [K.Camera]: {
24341
+ [W.Camera]: {
24342
24342
  icon: te,
24343
24343
  label: "Camera"
24344
24344
  },
24345
- [K.Hub]: {
24345
+ [W.Hub]: {
24346
24346
  icon: yn,
24347
24347
  label: "Hub"
24348
24348
  },
24349
- [K.Light]: {
24349
+ [W.Light]: {
24350
24350
  icon: Zt,
24351
24351
  label: "Light"
24352
24352
  },
24353
- [K.Siren]: {
24353
+ [W.Siren]: {
24354
24354
  icon: Un,
24355
24355
  label: "Siren"
24356
24356
  },
24357
- [K.Switch]: {
24357
+ [W.Switch]: {
24358
24358
  icon: rr,
24359
24359
  label: "Switch"
24360
24360
  },
24361
- [K.Sensor]: {
24361
+ [W.Sensor]: {
24362
24362
  icon: Ae,
24363
24363
  label: "Sensor"
24364
24364
  },
24365
- [K.Thermostat]: {
24365
+ [W.Thermostat]: {
24366
24366
  icon: nr,
24367
24367
  label: "Thermostat"
24368
24368
  },
24369
- [K.Climate]: {
24369
+ [W.Climate]: {
24370
24370
  icon: je,
24371
24371
  label: "Air conditioner"
24372
24372
  },
24373
- [K.Button]: {
24373
+ [W.Button]: {
24374
24374
  icon: ut,
24375
24375
  label: "Button"
24376
24376
  },
24377
- [K.EventEmitter]: {
24377
+ [W.EventEmitter]: {
24378
24378
  icon: Tr,
24379
24379
  label: "Event Emitter"
24380
24380
  },
24381
- [K.Update]: {
24381
+ [W.Update]: {
24382
24382
  icon: jn,
24383
24383
  label: "Update"
24384
24384
  },
24385
- [K.Generic]: {
24385
+ [W.Generic]: {
24386
24386
  icon: Ze,
24387
24387
  label: "Generic"
24388
24388
  },
24389
- [K.Notifier]: {
24389
+ [W.Notifier]: {
24390
24390
  icon: Ge,
24391
24391
  label: "Notifier"
24392
24392
  },
24393
- [K.Script]: {
24393
+ [W.Script]: {
24394
24394
  icon: Fn,
24395
24395
  label: "Script"
24396
24396
  },
24397
- [K.Automation]: {
24397
+ [W.Automation]: {
24398
24398
  icon: Sr,
24399
24399
  label: "Automation"
24400
24400
  },
24401
- [K.Lock]: {
24401
+ [W.Lock]: {
24402
24402
  icon: nn,
24403
24403
  label: "Lock"
24404
24404
  },
24405
- [K.Cover]: {
24405
+ [W.Cover]: {
24406
24406
  icon: Je,
24407
24407
  label: "Cover"
24408
24408
  },
24409
- [K.Valve]: {
24409
+ [W.Valve]: {
24410
24410
  icon: wn,
24411
24411
  label: "Valve"
24412
24412
  },
24413
- [K.Humidifier]: {
24413
+ [W.Humidifier]: {
24414
24414
  icon: vr,
24415
24415
  label: "Humidifier"
24416
24416
  },
24417
- [K.WaterHeater]: {
24417
+ [W.WaterHeater]: {
24418
24418
  icon: Ve,
24419
24419
  label: "Water heater"
24420
24420
  },
24421
- [K.Fan]: {
24421
+ [W.Fan]: {
24422
24422
  icon: Nt,
24423
24423
  label: "Fan"
24424
24424
  },
24425
- [K.MediaPlayer]: {
24425
+ [W.MediaPlayer]: {
24426
24426
  icon: dn,
24427
24427
  label: "Media player"
24428
24428
  },
24429
- [K.AlarmPanel]: {
24429
+ [W.AlarmPanel]: {
24430
24430
  icon: zn,
24431
24431
  label: "Alarm panel"
24432
24432
  },
24433
- [K.Control]: {
24433
+ [W.Control]: {
24434
24434
  icon: Kn,
24435
24435
  label: "Control"
24436
24436
  },
24437
- [K.Presence]: {
24437
+ [W.Presence]: {
24438
24438
  icon: an,
24439
24439
  label: "Presence"
24440
24440
  },
24441
- [K.Weather]: {
24441
+ [W.Weather]: {
24442
24442
  icon: vt,
24443
24443
  label: "Weather"
24444
24444
  },
24445
- [K.Vacuum]: {
24445
+ [W.Vacuum]: {
24446
24446
  icon: Xe,
24447
24447
  label: "Vacuum"
24448
24448
  },
24449
- [K.LawnMower]: {
24449
+ [W.LawnMower]: {
24450
24450
  icon: ar,
24451
24451
  label: "Lawn mower"
24452
24452
  },
24453
- [K.Container]: {
24453
+ [W.Container]: {
24454
24454
  icon: Ze,
24455
24455
  label: "Container"
24456
24456
  },
24457
- [K.Image]: {
24457
+ [W.Image]: {
24458
24458
  icon: qt,
24459
24459
  label: "Image"
24460
24460
  },
24461
- [K.PetFeeder]: {
24461
+ [W.PetFeeder]: {
24462
24462
  icon: Ye,
24463
24463
  label: "Pet feeder"
24464
24464
  }
24465
24465
  }, Sw = {
24466
- [q.Siren]: {
24466
+ [K.Siren]: {
24467
24467
  icon: Un,
24468
24468
  label: "Siren"
24469
24469
  },
24470
- [q.Floodlight]: {
24470
+ [K.Floodlight]: {
24471
24471
  icon: Zt,
24472
24472
  label: "Floodlight"
24473
24473
  },
24474
- [q.Spotlight]: {
24474
+ [K.Spotlight]: {
24475
24475
  icon: Lt,
24476
24476
  label: "Spotlight"
24477
24477
  },
24478
- [q.PirSensor]: {
24478
+ [K.PirSensor]: {
24479
24479
  icon: kn,
24480
24480
  label: "PIR sensor"
24481
24481
  },
24482
- [q.Chime]: {
24482
+ [K.Chime]: {
24483
24483
  icon: Ge,
24484
24484
  label: "Chime"
24485
24485
  },
24486
- [q.Autotrack]: {
24486
+ [K.Autotrack]: {
24487
24487
  icon: wt,
24488
24488
  label: "Auto-track"
24489
24489
  },
24490
- [q.Nightvision]: {
24490
+ [K.Nightvision]: {
24491
24491
  icon: fn,
24492
24492
  label: "Night vision"
24493
24493
  },
24494
- [q.PrivacyMask]: {
24494
+ [K.PrivacyMask]: {
24495
24495
  icon: N,
24496
24496
  label: "Privacy mask"
24497
24497
  },
24498
- [q.Doorbell]: {
24498
+ [K.Doorbell]: {
24499
24499
  icon: Et,
24500
24500
  label: "Doorbell"
24501
24501
  },
24502
- [q.BinaryHelper]: {
24502
+ [K.BinaryHelper]: {
24503
24503
  icon: rr,
24504
24504
  label: "Binary helper"
24505
24505
  },
24506
- [q.MotionSensor]: {
24506
+ [K.MotionSensor]: {
24507
24507
  icon: zt,
24508
24508
  label: "Motion sensor"
24509
24509
  },
24510
- [q.ContactSensor]: {
24510
+ [K.ContactSensor]: {
24511
24511
  icon: Dt,
24512
24512
  label: "Contact sensor"
24513
24513
  },
24514
- [q.LeakSensor]: {
24514
+ [K.LeakSensor]: {
24515
24515
  icon: kt,
24516
24516
  label: "Leak sensor"
24517
24517
  },
24518
- [q.SmokeSensor]: {
24518
+ [K.SmokeSensor]: {
24519
24519
  icon: Me,
24520
24520
  label: "Smoke sensor"
24521
24521
  },
24522
- [q.COSensor]: {
24522
+ [K.COSensor]: {
24523
24523
  icon: xr,
24524
24524
  label: "CO sensor"
24525
24525
  },
24526
- [q.GasSensor]: {
24526
+ [K.GasSensor]: {
24527
24527
  icon: It,
24528
24528
  label: "Gas sensor"
24529
24529
  },
24530
- [q.TamperSensor]: {
24530
+ [K.TamperSensor]: {
24531
24531
  icon: zn,
24532
24532
  label: "Tamper sensor"
24533
24533
  },
24534
- [q.VibrationSensor]: {
24534
+ [K.VibrationSensor]: {
24535
24535
  icon: hr,
24536
24536
  label: "Vibration sensor"
24537
24537
  },
24538
- [q.ConnectivitySensor]: {
24538
+ [K.ConnectivitySensor]: {
24539
24539
  icon: br,
24540
24540
  label: "Connectivity"
24541
24541
  },
24542
- [q.SoundSensor]: {
24542
+ [K.SoundSensor]: {
24543
24543
  icon: gr,
24544
24544
  label: "Sound sensor"
24545
24545
  },
24546
- [q.BinarySensor]: {
24546
+ [K.BinarySensor]: {
24547
24547
  icon: rr,
24548
24548
  label: "Binary sensor"
24549
24549
  },
24550
- [q.TemperatureSensor]: {
24550
+ [K.TemperatureSensor]: {
24551
24551
  icon: nr,
24552
24552
  label: "Temperature"
24553
24553
  },
24554
- [q.HumiditySensor]: {
24554
+ [K.HumiditySensor]: {
24555
24555
  icon: At,
24556
24556
  label: "Humidity"
24557
24557
  },
24558
- [q.AmbientLightSensor]: {
24558
+ [K.AmbientLightSensor]: {
24559
24559
  icon: Qn,
24560
24560
  label: "Ambient light"
24561
24561
  },
24562
- [q.PressureSensor]: {
24562
+ [K.PressureSensor]: {
24563
24563
  icon: Vt,
24564
24564
  label: "Pressure"
24565
24565
  },
24566
- [q.WindSensor]: {
24566
+ [K.WindSensor]: {
24567
24567
  icon: xr,
24568
24568
  label: "Wind"
24569
24569
  },
24570
- [q.RainSensor]: {
24570
+ [K.RainSensor]: {
24571
24571
  icon: gt,
24572
24572
  label: "Rain"
24573
24573
  },
24574
- [q.UvSensor]: {
24574
+ [K.UvSensor]: {
24575
24575
  icon: Zn,
24576
24576
  label: "UV index"
24577
24577
  },
24578
- [q.SolarRadiationSensor]: {
24578
+ [K.SolarRadiationSensor]: {
24579
24579
  icon: $n,
24580
24580
  label: "Solar radiation"
24581
24581
  },
24582
- [q.SoilMoistureSensor]: {
24582
+ [K.SoilMoistureSensor]: {
24583
24583
  icon: Xn,
24584
24584
  label: "Soil moisture"
24585
24585
  },
24586
- [q.PowerSensor]: {
24586
+ [K.PowerSensor]: {
24587
24587
  icon: Tr,
24588
24588
  label: "Power"
24589
24589
  },
24590
- [q.EnergySensor]: {
24590
+ [K.EnergySensor]: {
24591
24591
  icon: Tr,
24592
24592
  label: "Energy"
24593
24593
  },
24594
- [q.VoltageSensor]: {
24594
+ [K.VoltageSensor]: {
24595
24595
  icon: Tr,
24596
24596
  label: "Voltage"
24597
24597
  },
24598
- [q.CurrentSensor]: {
24598
+ [K.CurrentSensor]: {
24599
24599
  icon: Tr,
24600
24600
  label: "Current"
24601
24601
  },
24602
- [q.AirQualitySensor]: {
24602
+ [K.AirQualitySensor]: {
24603
24603
  icon: xr,
24604
24604
  label: "Air quality"
24605
24605
  },
24606
- [q.BatterySensor]: {
24606
+ [K.BatterySensor]: {
24607
24607
  icon: Vt,
24608
24608
  label: "Battery"
24609
24609
  },
24610
- [q.NumericSensor]: {
24610
+ [K.NumericSensor]: {
24611
24611
  icon: Gt,
24612
24612
  label: "Numeric sensor"
24613
24613
  },
24614
- [q.EnumSensor]: {
24614
+ [K.EnumSensor]: {
24615
24615
  icon: $t,
24616
24616
  label: "Enum sensor"
24617
24617
  },
24618
- [q.DateTimeSensor]: {
24618
+ [K.DateTimeSensor]: {
24619
24619
  icon: pt,
24620
24620
  label: "Date / time"
24621
24621
  },
24622
- [q.GenericSensor]: {
24622
+ [K.GenericSensor]: {
24623
24623
  icon: Vt,
24624
24624
  label: "Sensor"
24625
24625
  },
24626
- [q.NumericControl]: {
24626
+ [K.NumericControl]: {
24627
24627
  icon: Kn,
24628
24628
  label: "Numeric control"
24629
24629
  },
24630
- [q.SelectControl]: {
24630
+ [K.SelectControl]: {
24631
24631
  icon: Qt,
24632
24632
  label: "Select control"
24633
24633
  },
24634
- [q.TextControl]: {
24634
+ [K.TextControl]: {
24635
24635
  icon: lr,
24636
24636
  label: "Text control"
24637
24637
  },
24638
- [q.DateTimeControl]: {
24638
+ [K.DateTimeControl]: {
24639
24639
  icon: pt,
24640
24640
  label: "Date / time control"
24641
24641
  },
24642
- [q.MobilePushNotifier]: {
24642
+ [K.MobilePushNotifier]: {
24643
24643
  icon: qn,
24644
24644
  label: "Mobile push"
24645
24645
  },
24646
- [q.MessagingNotifier]: {
24646
+ [K.MessagingNotifier]: {
24647
24647
  icon: cn,
24648
24648
  label: "Messaging"
24649
24649
  },
24650
- [q.EmailNotifier]: {
24650
+ [K.EmailNotifier]: {
24651
24651
  icon: rn,
24652
24652
  label: "Email"
24653
24653
  },
24654
- [q.GenericNotifier]: {
24654
+ [K.GenericNotifier]: {
24655
24655
  icon: Ge,
24656
24656
  label: "Notifier"
24657
24657
  }
24658
- }, Cw = new Set(Object.values(K));
24659
- new Set(Object.values(q));
24658
+ }, Cw = new Set(Object.values(W));
24659
+ new Set(Object.values(K));
24660
24660
  function ww(e) {
24661
24661
  return Cw.has(e);
24662
24662
  }
24663
- var Tw = xw[K.Generic];
24664
- Sw[q.GenericSensor];
24663
+ var Tw = xw[W.Generic];
24664
+ Sw[K.GenericSensor];
24665
24665
  function Ew(e) {
24666
24666
  return ww(e) ? xw[e] ?? Tw : Tw;
24667
24667
  }
24668
24668
  //#endregion
24669
24669
  //#region ../ui-library/src/composites/filter-bar.tsx
24670
- Object.values(K).map((e) => {
24670
+ Object.values(W).map((e) => {
24671
24671
  let t = Ew(e);
24672
24672
  return {
24673
24673
  id: e,
24674
24674
  label: t.label,
24675
24675
  icon: t.icon
24676
24676
  };
24677
- }), b(), b(), b(), b(), _(null), b(), new Set([K.Sensor, K.Presence]), b(), b(), Object.freeze([]), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), GC({
24677
+ }), b(), b(), b(), b(), _(null), b(), new Set([W.Sensor, W.Presence]), b(), b(), Object.freeze([]), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), b(), GC({
24678
24678
  id: NC(),
24679
24679
  stableId: dC(),
24680
24680
  addonId: dC(),
@@ -24686,7 +24686,7 @@ Object.values(K).map((e) => {
24686
24686
  role: dC().nullable().optional(),
24687
24687
  features: UC(dC()).optional(),
24688
24688
  isCamera: LC().optional(),
24689
- sourceInfo: pe.optional()
24689
+ sourceInfo: le.optional()
24690
24690
  }), b(), b(), b(), b();
24691
24691
  //#endregion
24692
24692
  //#region ../ui-library/src/composites/hls-quality.ts
@@ -25434,11 +25434,11 @@ function Yw({ className: e }) {
25434
25434
  });
25435
25435
  }
25436
25436
  function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, getIceServers: i, addIceCandidate: a, getIceCandidates: s, closeSession: c, getSessionState: d, playbackUrl: f, playbackAuthToken: p, onExitPlayback: m, posterUrl: g, streams: _, activeStreamId: y, onStreamChange: b, deviceName: x, phase: S, pipelineMetrics: C, detections: w, defaultShowDetections: T = !0, defaultShowMotion: E = !1, streamStats: D, autoPlay: ee = !1, showPlayStop: O = !1, snapshotSrc: te, snapshotLoading: ne = !1, onRefreshSnapshot: k, showStreamStats: re = !1, children: j, extraOverlay: M, ptzAvailable: N = !1, ptzShown: P = !1, ptzOverlay: F, onPtzToggle: I, intercomAvailable: L = !1, intercomShown: R = !1, onIntercomToggle: H, chromeless: ie = !1, className: ae }) {
25437
- let oe = A(), se = qo(), [U, ce] = l(ee), [le, ue] = l(T), [de, fe] = l(E), [pe, W] = l(null), [G, me] = l([]), [he, ge] = l(-1), [_e, ve] = l(!1), K = u(null);
25437
+ let oe = A(), se = qo(), [U, ce] = l(ee), [le, ue] = l(T), [de, fe] = l(E), [pe, W] = l(null), [G, me] = l([]), [he, ge] = l(-1), [_e, K] = l(!1), ve = u(null);
25438
25438
  v(() => {
25439
25439
  if (!_e) return;
25440
25440
  function e(e) {
25441
- K.current && !K.current.contains(e.target) && ve(!1);
25441
+ ve.current && !ve.current.contains(e.target) && K(!1);
25442
25442
  }
25443
25443
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
25444
25444
  }, [_e]), v(() => {
@@ -25446,21 +25446,21 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25446
25446
  }, [f]);
25447
25447
  let ye = o((e) => {
25448
25448
  me(e);
25449
- }, []), be = y ?? pe ?? _?.[0]?.id ?? "", q = _?.find((e) => e.id === be) ?? _?.[0], xe = q?.inputFps == null ? null : {
25450
- status: q.status ?? "unknown",
25451
- inputFps: q.inputFps,
25452
- bitrateKbps: q.bitrateKbps ?? 0
25453
- }, Se = (e) => {
25449
+ }, []), be = y ?? pe ?? _?.[0]?.id ?? "", xe = _?.find((e) => e.id === be) ?? _?.[0], Se = xe?.inputFps == null ? null : {
25450
+ status: xe.status ?? "unknown",
25451
+ inputFps: xe.inputFps,
25452
+ bitrateKbps: xe.bitrateKbps ?? 0
25453
+ }, Ce = (e) => {
25454
25454
  W(e), b?.(e), U && O && (ce(!1), setTimeout(() => ce(!0), 50));
25455
- }, Ce = h(() => {
25456
- let e = q?.target;
25455
+ }, we = h(() => {
25456
+ let e = xe?.target;
25457
25457
  if (!(!e || !t)) return (n) => t(e, n);
25458
- }, [t, q]), we = h(() => {
25459
- let e = q?.target;
25458
+ }, [t, xe]), Te = h(() => {
25459
+ let e = xe?.target;
25460
25460
  if (!(!e || !r)) return (t, n) => r(e, t, n);
25461
- }, [r, q]), Te = h(() => {
25461
+ }, [r, xe]), Ee = h(() => {
25462
25462
  if (r) return (e, t, n) => r(n, t, e);
25463
- }, [r]), Ee = _, De = () => ce(!0), Oe = () => ce(!1), ke = C?.phase ?? S, Ae = ke === "active", je = !!w, Me = je && (le || de), Ne = N && P && !!F, Pe = !!f, Fe = Pe || (O ? U : !0);
25463
+ }, [r]), De = _, Oe = () => ce(!0), ke = () => ce(!1), q = C?.phase ?? S, Ae = q === "active", je = !!w, Me = je && (le || de), Ne = N && P && !!F, Pe = !!f, Fe = Pe || (O ? U : !0);
25464
25464
  return /* @__PURE__ */ B("div", {
25465
25465
  className: `overflow-hidden ${ie ? "" : "rounded-xl border border-border bg-surface"} ${ae ?? ""}`,
25466
25466
  children: [
@@ -25469,19 +25469,19 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25469
25469
  children: [/* @__PURE__ */ B("div", {
25470
25470
  className: "flex items-center gap-2 min-w-0",
25471
25471
  children: [
25472
- (D ?? xe) && /* @__PURE__ */ z("span", { className: `shrink-0 w-2 h-2 rounded-full ${Bw((D ?? xe).status)}` }),
25472
+ (D ?? Se) && /* @__PURE__ */ z("span", { className: `shrink-0 w-2 h-2 rounded-full ${Bw((D ?? Se).status)}` }),
25473
25473
  x && /* @__PURE__ */ z("span", {
25474
25474
  className: "text-xs font-medium text-foreground truncate",
25475
25475
  children: x
25476
25476
  }),
25477
- !Pe && Ee && Ee.length > 1 && /* @__PURE__ */ B("div", {
25477
+ !Pe && De && De.length > 1 && /* @__PURE__ */ B("div", {
25478
25478
  className: "relative",
25479
25479
  children: [/* @__PURE__ */ z("select", {
25480
25480
  "data-testid": "stream-profile-select",
25481
25481
  value: be,
25482
- onChange: (e) => Se(e.target.value),
25482
+ onChange: (e) => Ce(e.target.value),
25483
25483
  className: "appearance-none cursor-pointer rounded-md border border-border bg-surface-hover hover:bg-surface text-foreground text-[11px] font-medium pl-2 pr-6 py-1 focus:outline-none focus:ring-1 focus:ring-primary transition-colors",
25484
- children: Ee.map((e) => /* @__PURE__ */ z("option", {
25484
+ children: De.map((e) => /* @__PURE__ */ z("option", {
25485
25485
  value: e.id,
25486
25486
  children: e.label
25487
25487
  }, e.id))
@@ -25559,7 +25559,7 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25559
25559
  "data-testid": "stream-play-toggle",
25560
25560
  "data-stream-playing": Fe ? "true" : "false",
25561
25561
  "data-vod": Pe ? "true" : "false",
25562
- onClick: Pe ? m : Fe ? Oe : De,
25562
+ onClick: Pe ? m : Fe ? ke : Oe,
25563
25563
  className: `inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium transition-colors ${Pe ? "bg-primary/10 text-primary hover:bg-primary/20" : Fe ? "bg-danger/10 text-danger hover:bg-danger/20" : "bg-primary/10 text-primary hover:bg-primary/20"}`,
25564
25564
  title: Pe ? "Return to live" : Fe ? "Stop stream" : "Start stream",
25565
25565
  children: [z(Pe ? qw : Fe ? Uw : Hw, { className: "h-3 w-3" }), /* @__PURE__ */ z("span", {
@@ -25578,11 +25578,11 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25578
25578
  children: "Snapshot"
25579
25579
  })]
25580
25580
  }),
25581
- (je || N || C || ke || D || xe && xe.inputFps > 0) && /* @__PURE__ */ B("div", {
25582
- ref: K,
25581
+ (je || N || C || q || D || Se && Se.inputFps > 0) && /* @__PURE__ */ B("div", {
25582
+ ref: ve,
25583
25583
  className: "relative",
25584
25584
  children: [/* @__PURE__ */ z("button", {
25585
- onClick: () => ve((e) => !e),
25585
+ onClick: () => K((e) => !e),
25586
25586
  title: "More controls",
25587
25587
  className: "inline-flex items-center justify-center rounded-md p-1 text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors",
25588
25588
  children: /* @__PURE__ */ z(Gw, { className: "h-3.5 w-3.5" })
@@ -25615,23 +25615,23 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25615
25615
  })
25616
25616
  ]
25617
25617
  }),
25618
- !re && xe && xe.inputFps > 0 && /* @__PURE__ */ B("div", {
25618
+ !re && Se && Se.inputFps > 0 && /* @__PURE__ */ B("div", {
25619
25619
  className: "px-3 py-1.5 text-[10px] text-foreground-subtle border-b border-border-subtle",
25620
25620
  children: [/* @__PURE__ */ B("div", {
25621
25621
  className: "flex justify-between gap-3",
25622
25622
  children: [/* @__PURE__ */ z("span", { children: "Input" }), /* @__PURE__ */ B("span", {
25623
25623
  className: "tabular-nums text-foreground",
25624
- children: [xe.inputFps.toFixed(1), " fps"]
25624
+ children: [Se.inputFps.toFixed(1), " fps"]
25625
25625
  })]
25626
- }), xe.bitrateKbps > 0 && /* @__PURE__ */ B("div", {
25626
+ }), Se.bitrateKbps > 0 && /* @__PURE__ */ B("div", {
25627
25627
  className: "flex justify-between gap-3",
25628
25628
  children: [/* @__PURE__ */ z("span", { children: "Bitrate" }), /* @__PURE__ */ B("span", {
25629
25629
  className: "tabular-nums text-foreground",
25630
- children: [xe.bitrateKbps, " kbps"]
25630
+ children: [Se.bitrateKbps, " kbps"]
25631
25631
  })]
25632
25632
  })]
25633
25633
  }),
25634
- (C || je && ke) && /* @__PURE__ */ B("div", {
25634
+ (C || je && q) && /* @__PURE__ */ B("div", {
25635
25635
  className: "px-3 py-1.5 text-[10px] text-foreground-subtle border-b border-border-subtle",
25636
25636
  children: [
25637
25637
  /* @__PURE__ */ B("div", {
@@ -25670,7 +25670,7 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25670
25670
  label: "PTZ controls",
25671
25671
  active: P,
25672
25672
  onClick: () => {
25673
- I?.(), ve(!1);
25673
+ I?.(), K(!1);
25674
25674
  }
25675
25675
  })
25676
25676
  ]
@@ -25695,10 +25695,10 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25695
25695
  streamKey: be,
25696
25696
  autoPlay: !0,
25697
25697
  className: "w-full h-full",
25698
- createSession: Ce,
25698
+ createSession: we,
25699
25699
  sendAnswer: n,
25700
- handleOffer: we,
25701
- reoffer: Te,
25700
+ handleOffer: Te,
25701
+ reoffer: Ee,
25702
25702
  getSessionState: d,
25703
25703
  getIceServers: i,
25704
25704
  addIceCandidate: a,
@@ -25721,7 +25721,7 @@ function Xw({ serverUrl: e, createSession: t, sendAnswer: n, handleOffer: r, get
25721
25721
  }) : /* @__PURE__ */ z(Zw, {
25722
25722
  src: te ?? null,
25723
25723
  isLoading: ne,
25724
- onPlay: De,
25724
+ onPlay: Oe,
25725
25725
  onRetry: k,
25726
25726
  extraOverlay: M || Ne ? /* @__PURE__ */ B(V, { children: [M, Ne && F] }) : null,
25727
25727
  suppressPlayHover: !!M || Ne
@@ -26104,7 +26104,7 @@ function uT(e, t, n = 5e3) {
26104
26104
  }, [e, t])
26105
26105
  };
26106
26106
  }
26107
- b(), b(), b(), b(), b(), d(() => import("./MaskShapeCanvas-BDvrLf-K.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), d(() => import("./MotionZonesSettings-CJQ1qIkl.mjs").then((e) => ({ default: e.MotionZonesSettings }))), d(() => import("./SceneMonitorEditor-CN-XsRrp.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), d(() => import("./PrivacyMaskSettings-DqyCPYRr.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
26107
+ b(), b(), b(), b(), b(), d(() => import("./MaskShapeCanvas-BDvrLf-K.mjs").then((e) => ({ default: e.MaskShapeCanvas }))), d(() => import("./MotionZonesSettings-D0ZWade-.mjs").then((e) => ({ default: e.MotionZonesSettings }))), d(() => import("./SceneMonitorEditor-DxET6Fog.mjs").then((e) => ({ default: e.SceneMonitorEditor }))), d(() => import("./PrivacyMaskSettings-CCaDEYqV.mjs").then((e) => ({ default: e.PrivacyMaskSettings })));
26108
26108
  //#endregion
26109
26109
  //#region src/components/NodeSelector.tsx
26110
26110
  function dT({ selectedNodeId: e, onSelect: t }) {
@@ -29169,7 +29169,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29169
29169
  let [r, i] = l(null), [a, s] = l([]), [c, d] = l(null), [f, p] = l([]), [m, h] = l(""), [g, _] = l(null), [y, b] = l(""), [x, S] = l(null), [C, w] = l({
29170
29170
  w: 640,
29171
29171
  h: 480
29172
- }), [T, E] = l([]), [D, ee] = l(null), [O, te] = l(null), [ne, k] = l(null), [A, re] = l(!1), [j, M] = l(""), [N, P] = l(null), [F, I] = l(!0), [L, R] = l([]), [V, H] = l(200), [ie, ae] = l(4), [oe, se] = l(1), [U, ce] = l(!1), [le, ue] = l(null), [de, fe] = l(null), [pe, W] = l(null), [G, me] = l(null), he = u(null), [ge, _e] = l(/* @__PURE__ */ new Set()), ve = o((e, t) => {
29172
+ }), [T, E] = l([]), [D, ee] = l(null), [O, te] = l(null), [ne, k] = l(null), [A, re] = l(!1), [j, M] = l(""), [N, P] = l(null), [F, I] = l(!0), [L, R] = l([]), [V, H] = l(200), [ie, ae] = l(4), [oe, se] = l(1), [U, ce] = l(!1), [le, ue] = l(null), [de, fe] = l(null), [pe, W] = l(null), [G, me] = l(null), he = u(null), [ge, _e] = l(/* @__PURE__ */ new Set()), K = o((e, t) => {
29173
29173
  _e((n) => {
29174
29174
  let r = new Set(n);
29175
29175
  return t ? r.delete(e) : r.add(e), r;
@@ -29227,7 +29227,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29227
29227
  h(n);
29228
29228
  try {
29229
29229
  let t = await e.pipelineExecutor.getReferenceImage.query({ filename: n });
29230
- t && (_(t.base64), K(`data:image/jpeg;base64,${t.base64}`));
29230
+ t && (_(t.base64), ve(`data:image/jpeg;base64,${t.base64}`));
29231
29231
  } catch (e) {
29232
29232
  console.warn("[benchmark:image] Failed to load reference image:", e);
29233
29233
  }
@@ -29242,7 +29242,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29242
29242
  console.error("[benchmark:image] Failed to load pipeline data:", e), I(!1);
29243
29243
  });
29244
29244
  }, [e, t]);
29245
- let K = (e) => {
29245
+ let ve = (e) => {
29246
29246
  S(e);
29247
29247
  let t = new Image();
29248
29248
  t.addEventListener("load", () => w({
@@ -29253,11 +29253,11 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29253
29253
  h(t), P(null);
29254
29254
  try {
29255
29255
  let n = await e.pipelineExecutor.getReferenceImage.query({ filename: t });
29256
- n && (_(n.base64), K(`data:image/jpeg;base64,${n.base64}`));
29256
+ n && (_(n.base64), ve(`data:image/jpeg;base64,${n.base64}`));
29257
29257
  } catch (e) {
29258
29258
  console.warn("[benchmark:image] Failed to load image:", e);
29259
29259
  }
29260
- }, be = ne ? vT(ne.steps) : T.map((e) => wE(e)), q = async () => {
29260
+ }, be = ne ? vT(ne.steps) : T.map((e) => wE(e)), xe = async () => {
29261
29261
  re(!0), M(""), P(null), R([]);
29262
29262
  let n = `ui-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;
29263
29263
  he.current = n;
@@ -29283,7 +29283,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29283
29283
  } finally {
29284
29284
  he.current = null, re(!1);
29285
29285
  }
29286
- }, xe = async (n) => {
29286
+ }, Se = async (n) => {
29287
29287
  if (!g) {
29288
29288
  M("No image loaded");
29289
29289
  return;
@@ -29357,10 +29357,10 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29357
29357
  className: "text-sm text-foreground-subtle animate-pulse py-8 text-center",
29358
29358
  children: "Loading..."
29359
29359
  });
29360
- let Se = C.w, Ce = C.h, we = N?.detections ? [...N.detections] : [], Te = /* @__PURE__ */ new Set();
29361
- for (let e of we) e.kind === "first-level" && ge.has(e.id) && Te.add(e.id);
29362
- let Ee = we.filter((e) => !(ge.has(e.id) || e.kind === "detail" && e.parentId && Te.has(e.parentId))), De = {}, Oe = N?.debug?.stepTimings ?? [];
29363
- for (let e of Oe) De[`${e.source}${e.modelId ? ` (${e.modelId})` : ""}`] = e.ms;
29360
+ let Ce = C.w, we = C.h, Te = N?.detections ? [...N.detections] : [], Ee = /* @__PURE__ */ new Set();
29361
+ for (let e of Te) e.kind === "first-level" && ge.has(e.id) && Ee.add(e.id);
29362
+ let De = Te.filter((e) => !(ge.has(e.id) || e.kind === "detail" && e.parentId && Ee.has(e.parentId))), Oe = {}, ke = N?.debug?.stepTimings ?? [];
29363
+ for (let e of ke) Oe[`${e.source}${e.modelId ? ` (${e.modelId})` : ""}`] = e.ms;
29364
29364
  return /* @__PURE__ */ B("div", {
29365
29365
  className: "space-y-4",
29366
29366
  children: [
@@ -29381,7 +29381,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29381
29381
  uploadedName: y,
29382
29382
  onSelect: ye,
29383
29383
  onUpload: (e, t, n) => {
29384
- _(e), b(t), h(""), K(n), P(null);
29384
+ _(e), b(t), h(""), ve(n), P(null);
29385
29385
  }
29386
29386
  }),
29387
29387
  j && /* @__PURE__ */ z("div", {
@@ -29394,7 +29394,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29394
29394
  className: "space-y-2",
29395
29395
  children: [
29396
29396
  /* @__PURE__ */ z("button", {
29397
- onClick: q,
29397
+ onClick: xe,
29398
29398
  disabled: !A && !m && !g,
29399
29399
  className: `w-full px-4 py-2.5 text-sm font-medium rounded-lg transition-colors ${A ? "bg-primary text-primary-foreground animate-pulse" : "bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"}`,
29400
29400
  children: A ? L.length > 0 ? L[L.length - 1] : "Processing..." : "Run Pipeline"
@@ -29461,7 +29461,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29461
29461
  children: [
29462
29462
  /* @__PURE__ */ z("button", {
29463
29463
  type: "button",
29464
- onClick: () => xe("live-frame"),
29464
+ onClick: () => Se("live-frame"),
29465
29465
  disabled: U || !m && !g,
29466
29466
  title: "The live per-frame dispatch: one runPipeline per call with plane='frame' — root-plane steps only, crop children skipped (they are served per track via runDetailSubtree). This is the shape a production camera frame takes.",
29467
29467
  className: "px-3 py-2.5 sm:py-1.5 text-sm rounded-md border border-primary/40 bg-primary/10 hover:bg-primary hover:text-primary-foreground disabled:opacity-50 transition-colors",
@@ -29469,7 +29469,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29469
29469
  }),
29470
29470
  /* @__PURE__ */ z("button", {
29471
29471
  type: "button",
29472
- onClick: () => xe("full-tree"),
29472
+ onClick: () => Se("full-tree"),
29473
29473
  disabled: U || !m && !g,
29474
29474
  title: "One runPipeline per call on the default 'full' plane: root AND crop children together, through sharp encode → IPC → pool. Not the live path — the live path runs the root plane only.",
29475
29475
  className: "px-3 py-2.5 sm:py-1.5 text-sm rounded-md border border-border bg-surface hover:bg-primary/10 disabled:opacity-50 transition-colors",
@@ -29477,7 +29477,7 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29477
29477
  }),
29478
29478
  /* @__PURE__ */ z("button", {
29479
29479
  type: "button",
29480
- onClick: () => xe("inference"),
29480
+ onClick: () => Se("inference"),
29481
29481
  disabled: U || !m && !g,
29482
29482
  title: "Pure inference: frame cached in pool once, each call sends only a 5-byte reference. Isolates the model.predict() + batching cost — no IPC, no JPEG encode/decode.",
29483
29483
  className: "px-3 py-2.5 sm:py-1.5 text-sm rounded-md border border-border bg-surface hover:bg-primary/10 disabled:opacity-50 transition-colors",
@@ -29618,21 +29618,21 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29618
29618
  }),
29619
29619
  /* @__PURE__ */ z(Ju, {
29620
29620
  src: x,
29621
- imageWidth: Se,
29622
- imageHeight: Ce,
29623
- detections: Ee,
29621
+ imageWidth: Ce,
29622
+ imageHeight: we,
29623
+ detections: De,
29624
29624
  placeholder: "Select an image above"
29625
29625
  }),
29626
- N && Ee.length > 0 && /* @__PURE__ */ B("div", {
29626
+ N && De.length > 0 && /* @__PURE__ */ B("div", {
29627
29627
  className: "text-xs text-foreground-subtle",
29628
29628
  children: [
29629
- Ee.length,
29629
+ De.length,
29630
29630
  " detection",
29631
- Ee.length === 1 ? "" : "s",
29631
+ De.length === 1 ? "" : "s",
29632
29632
  " — ",
29633
- Se,
29633
+ Ce,
29634
29634
  "x",
29635
- Ce
29635
+ we
29636
29636
  ]
29637
29637
  }),
29638
29638
  L.length > 0 && /* @__PURE__ */ z("div", {
@@ -29642,14 +29642,14 @@ function TE({ trpc: e, nodeId: t, onNodeChange: n }) {
29642
29642
  children: [/* @__PURE__ */ z("span", { className: `h-1.5 w-1.5 rounded-full shrink-0 ${t === L.length - 1 ? "bg-primary animate-pulse" : "bg-foreground-subtle/30"}` }), e]
29643
29643
  }, t))
29644
29644
  }),
29645
- Object.keys(De).length > 0 && /* @__PURE__ */ z(zw, {
29646
- timings: De,
29645
+ Object.keys(Oe).length > 0 && /* @__PURE__ */ z(zw, {
29646
+ timings: Oe,
29647
29647
  totalMs: N?.debug?.totalInferenceMs
29648
29648
  }),
29649
29649
  N && /* @__PURE__ */ z(od, {
29650
- detections: we,
29650
+ detections: Te,
29651
29651
  hiddenKeys: ge,
29652
- onToggleVisibility: ve
29652
+ onToggleVisibility: K
29653
29653
  }),
29654
29654
  /* @__PURE__ */ z(Rw, {
29655
29655
  data: N,