@camera.ui/server 2.2.5-beta.2 → 2.2.5-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/interface/assets/{404-BDvtK1qR.js → 404-YZOLos9r.js} +1 -1
- package/dist/interface/assets/{About-B4A35rRx.js → About-HtxMc8JZ.js} +1 -1
- package/dist/interface/assets/Assistant-bB8RBo-m.js +1 -0
- package/dist/interface/assets/Automation-D3DcUyui.js +3 -0
- package/dist/interface/assets/{AutomationImport-CEJdhE_d.js → AutomationImport-Dp_hT6hQ.js} +2 -2
- package/dist/interface/assets/AutomationStore-BKR7GXMk.js +2 -0
- package/dist/interface/assets/{AutomationStoreDetail-BenRMMtV.js → AutomationStoreDetail-B9yh51WQ.js} +2 -2
- package/dist/interface/assets/Automations-BdZZW2eN.js +2 -0
- package/dist/interface/assets/Camera-Ct7ndOxr.js +2 -0
- package/dist/interface/assets/{CameraConsole-D24yXOQn.js → CameraConsole-BI93OaRt.js} +2 -2
- package/dist/interface/assets/Cameras-Ctub8sVt.js +651 -0
- package/dist/interface/assets/Camview-BjQdTHNh.js +1 -0
- package/dist/interface/assets/{CertificateUpload-26LAL4MY.js → CertificateUpload-xW55NA1Q.js} +1 -1
- package/dist/interface/assets/Config-CBTbYd5v.js +2 -0
- package/dist/interface/assets/{ConfigActionAssistant-Cl_kr3hp.js → ConfigActionAssistant-B488rOp5.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-CL4vXcNe.js → ConfigActionCameraControl-ZMUuBxOs.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-DtPgmqWh.js → ConfigActionDelay-BJ11xvOW.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-DnkZTP5l.js → ConfigActionHttp-DOUo69OR.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-3svn6YP9.js → ConfigActionImageInput-BMzuVZW9.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-BTsFTLgm.js → ConfigActionMqtt-Co_uksca.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-Cr4xJrZp.js → ConfigActionNotification-CcZkstYx.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-Cxkb_g8p.js → ConfigActionNotificationControl--VeucoTw.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-WTr7FGf_.js → ConfigActionOutput-CyDa1LGA.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-BpcJepbD.js → ConfigActionPlugin-Kfg3ZEQF.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-BgD_F-hD.js → ConfigActionSensor-DhAF0HPw.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-DjR-Z08N.js → ConfigActionSnapshot-zMe3SPvW.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-gPuPbjpm.js → ConfigActionVariable-BE5q3NwY.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-CUHKJmPx.js → ConfigConditionIfElse-BNIRtSVD.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-D-gPRqMu.js → ConfigConditionSensorState-DTNd-SzI.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-BRf1T5tJ.js → ConfigConditionSwitch-BU5wWMU1.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-BC0n6sWO.js → ConfigConditionTime-KXTCIVIV.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-BUHapx4M.js → ConfigSensorValueInput-BC1FpMm-.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-Byd6SLGg.js → ConfigTriggerDetection-hIN1hi53.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-Bl2ZacbY.js +1 -0
- package/dist/interface/assets/{ConfigTriggerManual-B2dWcFrl.js → ConfigTriggerManual-C5vwxS-e.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-B_aUDBu4.js → ConfigTriggerMqtt-B4PtWC3E.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-DAZo1PLj.js → ConfigTriggerSchedule-BZzUdGBa.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-BCqAiPu4.js → ConfigTriggerSensor-D18nwMsj.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-DuBydCiq.js → ConfigTriggerSystem-BhygWLB4.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-DDsnpwJr.js → ConfigTriggerWebhook-yyuBuhLD.js} +1 -1
- package/dist/interface/assets/Console-Cfk9MA9m.js +1 -0
- package/dist/interface/assets/CuiAssistantConversation-BHK_i56I.js +5 -0
- package/dist/interface/assets/CuiAssistantConversation-lkpZg3ML.css +1 -0
- package/dist/interface/assets/{CuiAutomationRunsDialog-C_sMg7E1.js → CuiAutomationRunsDialog-B0ohEHw0.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-D_0LrjA_.js → CuiBottomSheet-DWefGWK2.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-NgX7VFao.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-C2qaGJlH.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-BTD-CQAg.js +1 -0
- package/dist/interface/assets/{CuiCameraShares-BIUB1xMa.js → CuiCameraShares-DcqOcePX.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-D-UhqHk4.js → CuiCameraTable-BOkfp_5M.js} +2 -2
- package/dist/interface/assets/CuiCameraTable-KPk46Xcl.js +1 -0
- package/dist/interface/assets/{CuiChartTable-CSK4Mzn3.js → CuiChartTable-DP38uBwK.js} +1 -1
- package/dist/interface/assets/{CuiConsole-DAbJXJBq.js → CuiConsole-C7xE_nQg.js} +2 -2
- package/dist/interface/assets/{CuiDataTable-DgcJsG-K.js → CuiDataTable-CsqH-RB1.js} +1 -1
- package/dist/interface/assets/CuiLightControl-ChGYpQAK.js +1 -0
- package/dist/interface/assets/{CuiLightControl-DFrZm_sv.css → CuiLightControl-D9sm8NZb.css} +1 -1
- package/dist/interface/assets/{CuiList-HdsA9vV1.js → CuiList-DJp0__mV.js} +1 -1
- package/dist/interface/assets/CuiPluginCard-CWImTZ6l.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-C7R1jP7r.js → CuiPluginCategoryChip-Ch_upS6Y.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-BJJw0IaC.js → CuiPluginOAuthButton-DEQ9xILN.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-Bmm1qYdC.js → CuiPluginTrustBadge-sVWdvHcM.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-DTSEFMBt.js → CuiQRCode-DqSF4SkD.js} +1 -1
- package/dist/interface/assets/CuiSchema-ytExUVhI.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-B_KWykgq.js +1 -0
- package/dist/interface/assets/Faces-Cb6XMxDC.js +1 -0
- package/dist/interface/assets/FirstSteps-QNYTkEJo.js +1 -0
- package/dist/interface/assets/Floorplan-DbqADtN1.js +1 -0
- package/dist/interface/assets/Instances-DrMzPD65.js +1 -0
- package/dist/interface/assets/{Logs-BjcfuMQV.js → Logs-BSPT80vP.js} +2 -2
- package/dist/interface/assets/{Menu-BjjnSgdP.js → Menu-HHtuhIS2.js} +1 -1
- package/dist/interface/assets/Metrics-CqhUnVRA.js +12 -0
- package/dist/interface/assets/{OAuthDeviceFlow-9v-Czy_u.js → OAuthDeviceFlow-Bn1nlWNa.js} +1 -1
- package/dist/interface/assets/Plugin-DyOg_fbg.js +1 -0
- package/dist/interface/assets/{PluginConsole-C7sO42RG.js → PluginConsole-Cv-uhnPY.js} +2 -2
- package/dist/interface/assets/PluginDetail-cpOz7FkA.js +2 -0
- package/dist/interface/assets/{PluginSchema-D0eL9H-b.js → PluginSchema-DW3TGeTM.js} +1 -1
- package/dist/interface/assets/PluginSearch-BgecD9Ob.js +2 -0
- package/dist/interface/assets/PluginSearch-C8xHKikH.js +1 -0
- package/dist/interface/assets/{PluginUpdateProgress--MM9D8hs.js → PluginUpdateProgress-n6q6vzyd.js} +1 -1
- package/dist/interface/assets/Plugins-CuujWEtM.js +1 -0
- package/dist/interface/assets/{RecentEventsFilter-CvIJS8Se.js → RecentEventsFilter-CTR5JK_P.js} +1 -1
- package/dist/interface/assets/Recordings-ths9khZr.js +1 -0
- package/dist/interface/assets/SensorEdit-BzoIH7QC.js +1 -0
- package/dist/interface/assets/{SensorHistory-Efw0bZ-X.js → SensorHistory-9CdOpCPs.js} +1 -1
- package/dist/interface/assets/Sensors-CK5uExfU.js +2 -0
- package/dist/interface/assets/Settings-DN5hFtw_.js +1 -0
- package/dist/interface/assets/SettingsAccount-BCrmon5O.js +1 -0
- package/dist/interface/assets/SettingsAccount-CSy1BAIH.js +1 -0
- package/dist/interface/assets/{SettingsAccount-si-6gWl5.css → SettingsAccount-CY8YE_cy.css} +1 -1
- package/dist/interface/assets/SettingsAppearance-BY1xQMx4.js +1 -0
- package/dist/interface/assets/SettingsAppearance-h_XPZfQl.js +1 -0
- package/dist/interface/assets/SettingsAssistant-D8FmVbUL.js +1 -0
- package/dist/interface/assets/{SettingsBackup-BqKBKis5.js → SettingsBackup-D_weokqu.js} +1 -1
- package/dist/interface/assets/{SettingsList-BU191rmt.js → SettingsList-Bq24WTDU.js} +1 -1
- package/dist/interface/assets/SettingsMqtt-DCkLIYpF.js +1 -0
- package/dist/interface/assets/SettingsNotifications-8TZOUxg2.js +1 -0
- package/dist/interface/assets/{SettingsPermissions-sI64FPZG.js → SettingsPermissions-M8u_jrN0.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-CghrKErw.js → SettingsRecordings-C1Kp5xW_.js} +1 -1
- package/dist/interface/assets/SettingsRemote-DXlQKwlT.js +2 -0
- package/dist/interface/assets/{SettingsSystem-DP1p1Xns.js → SettingsSystem-Cetu2faJ.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-Dpej-he1.js → SettingsUsers-CDwtQLdV.js} +1 -1
- package/dist/interface/assets/{Terminal-DPRPXCSt.js → Terminal-Dl-aAZME.js} +2 -2
- package/dist/interface/assets/{Training-Dwf5rXyC.css → Training-B1oQjAr8.css} +1 -1
- package/dist/interface/assets/Training-DdZjXgt1.js +1 -0
- package/dist/interface/assets/{Updates-QTvCp1aS.js → Updates-CkB1lXuo.js} +1 -1
- package/dist/interface/assets/{VariableInput-DhusSZPw.js → VariableInput-BxPj5wo6.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-Bkzz4Mv3.js → VariableSuggestions-CbizvAkz.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-DjNSpSYy.js → VersionsHandler-CePyEUVO.js} +2 -2
- package/dist/interface/assets/{VirtualSensorCreate-soGT6h2c.js → VirtualSensorCreate-D_GVoeL7.js} +1 -1
- package/dist/interface/assets/Workers-7yiebNkl.js +2 -0
- package/dist/interface/assets/api-DK2Bav9D.js +4 -0
- package/dist/interface/assets/api-DTCqDA-h.css +2 -0
- package/dist/interface/assets/{api-CK2tonlH.js → api-DW2niHRN.js} +1 -1
- package/dist/interface/assets/{assistant-BEe1ExZL.js → assistant-BJ6xKcw_.js} +1 -1
- package/dist/interface/assets/{auth-QEpUGkWd.js → auth-Dc8bUpc-.js} +1 -1
- package/dist/interface/assets/{automations-BBIBV4Uu.js → automations-DXrjbArj.js} +1 -1
- package/dist/interface/assets/{cameraSources-Cm18cW9L.js → cameraSources-QJfUDOQJ.js} +1 -1
- package/dist/interface/assets/cloudHandoff-DtlquYGZ.js +1 -0
- package/dist/interface/assets/{config-vwkU8aqP.js → config-CiQDwB4t.js} +1 -1
- package/dist/interface/assets/{flowSchema-rzBroL0H.js → flowSchema-BRTZHQ1w.js} +1 -1
- package/dist/interface/assets/{intercomService-Du8V_HxF.js → intercomService-BnA-FQ0Q.js} +1 -1
- package/dist/interface/assets/{main-XHFrBKKz.css → main-BoGhBedC.css} +1 -1
- package/dist/interface/assets/main-D74mRIxc.js +3 -0
- package/dist/interface/assets/mqtt-iD9XHYO_.js +1 -0
- package/dist/interface/assets/{notifications-CN6eTJb_.js → notifications-CbAJX7RF.js} +1 -1
- package/dist/interface/assets/{plugins-DKtX7zQp.js → plugins-eIUrXNeM.js} +1 -1
- package/dist/interface/assets/rooms-BqPyo8jc.js +1 -0
- package/dist/interface/assets/{sensorIcons-ztqlMLDc.js → sensorIcons-DQVgryYP.js} +1 -1
- package/dist/interface/assets/{sensorSlots-D-uxjuv3.js → sensorSlots-BZCXtnb6.js} +1 -1
- package/dist/interface/assets/{sensors-DV2Z0IJt.js → sensors-DttBNEEt.js} +1 -1
- package/dist/interface/assets/{server-CfZnIVzn.js → server-DUFhf2c_.js} +1 -1
- package/dist/interface/assets/{theme-Bi7qdjBK.js → theme-BMmjtQ4w.js} +1 -1
- package/dist/interface/assets/{types-CNLAvgyw.js → types-5rE8Tz0_.js} +1 -1
- package/dist/interface/assets/{types-DwbeYXvn.js → types-CXw7CEzu.js} +1 -1
- package/dist/interface/assets/{types-DuwD8xp5.js → types-DWTSNJ79.js} +1 -1
- package/dist/interface/assets/ungrouped-D56FGIrg.js +1 -0
- package/dist/interface/assets/ungrouped-DHMJ9Rg1.css +1 -0
- package/dist/interface/assets/{updates-BqCH6Vr8.js → updates-TIPWXKzL.js} +1 -1
- package/dist/interface/assets/{useAppVersion-B-rmq3Bb.js → useAppVersion-BIz44Bg4.js} +1 -1
- package/dist/interface/assets/{useAssistantActions-Kf-5ijVf.js → useAssistantActions-CLkkw9kB.js} +1 -1
- package/dist/interface/assets/useBackupRestore-Crfd592q.js +1 -0
- package/dist/interface/assets/{useCameraOptions-Dt2J8sP_.js → useCameraOptions-A97teAIr.js} +1 -1
- package/dist/interface/assets/{useKeyboardInset-DtD3I2WC.js → useKeyboardInset-DXVi1dLG.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-CEhUQdiY.js → useLogsSocket-BlFxVXjF.js} +1 -1
- package/dist/interface/assets/{useNavLayout-CtpYjS5W.js → useNavLayout-C5obaCNv.js} +1 -1
- package/dist/interface/assets/{usePermissions-CJzuagwD.js → usePermissions-C8hB_pG1.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-BwoWN5yb.js → usePluginUpdates-DO0-Gk4Q.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-ANx4BS6_.js → usePushRegistration-BUttCraQ.js} +1 -1
- package/dist/interface/assets/{useServerRestart-7edyD8M0.js → useServerRestart-Cz9eVHUE.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-DCSWHdbW.js → useStreamStatus-BhS_MCCB.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-DfS3R3uP.js → useTabSwipe-D4k8lm1M.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-Cr9mSIRC.js → useUpdateChannel-D9lhfW0y.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-B5Rm9syb.js → useUpdatesSocket-DnH9sON5.js} +1 -1
- package/dist/interface/assets/{useUserOptions-CJjImz8V.js → useUserOptions-BTRBUuE2.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-BbGOMenD.js → vendor-cameraui-QXD8jkcj.js} +26 -26
- package/dist/interface/assets/{vendor-core-tgH2YubJ.js → vendor-core-CnhnyKDl.js} +1 -1
- package/dist/interface/assets/{vendor-primevue-DNJJiEZl.js → vendor-primevue-CCUqY55W.js} +207 -207
- package/dist/interface/ha/{404-Dl6JtQWv.js → 404-DLhJqxRl.js} +1 -1
- package/dist/interface/ha/{About-wjv4kCO3.js → About-DC0i1iE4.js} +3 -3
- package/dist/interface/ha/{Assistant-Dpb4IsDC.js → Assistant-BmazMPIg.js} +821 -825
- package/dist/interface/ha/{Automation-CqTPjCUh.js → Automation-gabF9YzQ.js} +336 -336
- package/dist/interface/ha/{AutomationImport-CvdeneoU.js → AutomationImport-DaqZNs9s.js} +8 -8
- package/dist/interface/ha/{AutomationStore-bVPE68io.js → AutomationStore-DzM4huo5.js} +54 -54
- package/dist/interface/ha/{AutomationStoreDetail-BYaNUjoH.js → AutomationStoreDetail-CpzQMt_D.js} +7 -7
- package/dist/interface/ha/{Automations-BfsYh2A_.js → Automations-Dcm4Us50.js} +81 -81
- package/dist/interface/ha/{Camera-C70onr_O.js → Camera-CNK3QR7l.js} +198 -198
- package/dist/interface/ha/{CameraConsole-Dg3lV-wq.js → CameraConsole-CpcF0411.js} +5 -5
- package/dist/interface/ha/{Cameras-DpM6gt3G.js → Cameras-Cf9rwRyf.js} +293 -294
- package/dist/interface/ha/{Camview-CO_bHntH.js → Camview-BFKR2t6C.js} +87 -87
- package/dist/interface/ha/{Config-D-cpocuH.js → Config-1XH3zfr2.js} +11 -11
- package/dist/interface/ha/{ConfigActionAssistant-DVVVfVvT.js → ConfigActionAssistant-C0-NFoTB.js} +5 -5
- package/dist/interface/ha/{ConfigActionCameraControl-BPpzE9-F.js → ConfigActionCameraControl-DNSKZPSZ.js} +5 -5
- package/dist/interface/ha/{ConfigActionDelay-zU6H75hY.js → ConfigActionDelay-iZ3lPGzw.js} +1 -1
- package/dist/interface/ha/{ConfigActionHttp-BsNy03j4.js → ConfigActionHttp-DVJAcGkl.js} +3 -3
- package/dist/interface/ha/{ConfigActionImageInput-JUvNYn0w.js → ConfigActionImageInput-VVbHHHZs.js} +3 -3
- package/dist/interface/ha/{ConfigActionMqtt-PZqAKfTo.js → ConfigActionMqtt-N5OUJDzM.js} +4 -4
- package/dist/interface/ha/{ConfigActionNotification-DIL7abEm.js → ConfigActionNotification-s142tQoU.js} +6 -6
- package/dist/interface/ha/{ConfigActionNotificationControl-BQ2w5yeg.js → ConfigActionNotificationControl-Dh7kaKVP.js} +3 -3
- package/dist/interface/ha/{ConfigActionOutput-DVilKhPV.js → ConfigActionOutput-B4HHTg5C.js} +1 -1
- package/dist/interface/ha/{ConfigActionPlugin-BUfTEJQ_.js → ConfigActionPlugin-D20G2Dqf.js} +5 -5
- package/dist/interface/ha/{ConfigActionSensor-Dzp16VyX.js → ConfigActionSensor-BS3jrFaG.js} +6 -6
- package/dist/interface/ha/{ConfigActionSnapshot-CRjD5AMC.js → ConfigActionSnapshot-CInLAcwK.js} +3 -3
- package/dist/interface/ha/{ConfigActionVariable-CR8g7gEh.js → ConfigActionVariable-C5vADGNF.js} +2 -2
- package/dist/interface/ha/{ConfigConditionIfElse-CHoSgzXF.js → ConfigConditionIfElse-CPeWDD31.js} +4 -4
- package/dist/interface/ha/{ConfigConditionSensorState-Dn8_OhQe.js → ConfigConditionSensorState-BM5GmpN6.js} +6 -6
- package/dist/interface/ha/{ConfigConditionSwitch-Ds-nqWeU.js → ConfigConditionSwitch-Dmz9FduJ.js} +4 -4
- package/dist/interface/ha/{ConfigConditionTime-DWNfEluj.js → ConfigConditionTime-DF6llIJq.js} +2 -2
- package/dist/interface/ha/{ConfigSensorValueInput-DwXM9wP1.js → ConfigSensorValueInput-Ch5njvtv.js} +7 -7
- package/dist/interface/ha/{ConfigTriggerDetection-D37OkR_u.js → ConfigTriggerDetection-BR2QWNyO.js} +5 -5
- package/dist/interface/ha/{ConfigTriggerGeofence-EbXy_y3Q.js → ConfigTriggerGeofence-CaImOjyW.js} +9 -9
- package/dist/interface/ha/{ConfigTriggerMqtt-BX6uNEZy.js → ConfigTriggerMqtt-DWz1XwZQ.js} +2 -2
- package/dist/interface/ha/{ConfigTriggerSensor-BFGEtBVF.js → ConfigTriggerSensor-lfnhz0im.js} +3 -3
- package/dist/interface/ha/{ConfigTriggerSystem-fRnAgUGR.js → ConfigTriggerSystem-CwUhyFAj.js} +3 -3
- package/dist/interface/ha/{ConfigTriggerWebhook-DegifRdj.js → ConfigTriggerWebhook-J6Xts7GQ.js} +2 -2
- package/dist/interface/ha/{Console-Bo6S5psN.js → Console-BSdKFm6Y.js} +8 -8
- package/dist/interface/ha/{CuiAutomationRunsDialog-DXpNJqDE.js → CuiAutomationRunsDialog-BU8sympp.js} +3 -3
- package/dist/interface/ha/{CuiBottomSheet-DLkC2OmT.js → CuiBottomSheet-Bnp7ta7V.js} +1 -1
- package/dist/interface/ha/{CuiCameraRecordings-9tdkxXiT.js → CuiCameraRecordings-E-mMqKSs.js} +18 -19
- package/dist/interface/ha/{CuiCameraShares-BbqY_2b7.js → CuiCameraShares-DcNwd2OC.js} +8 -8
- package/dist/interface/ha/{CuiCameraTable-BmH1yAgl.js → CuiCameraTable-DNW9Vm_A.js} +6 -6
- package/dist/interface/ha/{CuiChartTable-BjBBI7Fo.js → CuiChartTable-muC7jL2H.js} +6 -6
- package/dist/interface/ha/{CuiConsole-By3m4UbE.js → CuiConsole-ND8bcuTg.js} +2 -2
- package/dist/interface/ha/{CuiDataTable-C_ndu5My.js → CuiDataTable-CN4T8DgP.js} +13 -13
- package/dist/interface/ha/{CuiPluginCard-BLQ1galy.js → CuiPluginCard-nIQiyQvH.js} +31 -31
- package/dist/interface/ha/{CuiPluginOAuthButton-BDghklSy.js → CuiPluginOAuthButton-FJ49NfUh.js} +3 -3
- package/dist/interface/ha/{CuiPluginTrustBadge-DolANNao.js → CuiPluginTrustBadge-D6eanMyI.js} +2 -2
- package/dist/interface/ha/{CuiQRCode-CcjPngXI.js → CuiQRCode-BdJzeeoE.js} +2 -2
- package/dist/interface/ha/{CuiSchema-D9JFf0dp.js → CuiSchema-DY0V-8xP.js} +67 -67
- package/dist/interface/ha/{CuiTopNavbarItem-DcUEq-4e.js → CuiTopNavbarItem-DT5pAKHp.js} +7 -8
- package/dist/interface/ha/{Faces-DjXHzr77.js → Faces-C_svyTrr.js} +92 -92
- package/dist/interface/ha/{FirstSteps-CQAP9Siw.js → FirstSteps-yS2M2cor.js} +9 -9
- package/dist/interface/ha/{Floorplan-DyaPzlQO.js → Floorplan-DSOeScjI.js} +194 -194
- package/dist/interface/ha/{Instances-DWjaU5gj.js → Instances-B4h5EKpF.js} +20 -20
- package/dist/interface/ha/{Logs-Dlx-X1NS.js → Logs-BH0Lxvs6.js} +12 -12
- package/dist/interface/ha/{Menu-iqEe01qO.js → Menu-COH7QXuE.js} +13 -13
- package/dist/interface/ha/{Metrics-Br2Dyvzh.js → Metrics-BtnRqL_I.js} +136 -136
- package/dist/interface/ha/{OAuthDeviceFlow-CIGk92FD.js → OAuthDeviceFlow-D2QJ9MnP.js} +8 -8
- package/dist/interface/ha/{Plugin-DklIr7j2.js → Plugin-EfUSqwyh.js} +85 -85
- package/dist/interface/ha/{PluginConsole-DCfxPtGU.js → PluginConsole-hh_o15f7.js} +4 -4
- package/dist/interface/ha/PluginDetail-DFiXGkrY.js +805 -0
- package/dist/interface/ha/{PluginSearch-BTKBnjxb.js → PluginSearch-Cdrfubrj.js} +54 -54
- package/dist/interface/ha/{PluginUpdateProgress-Dej5AcCt.js → PluginUpdateProgress-BD2g2kVj.js} +3 -3
- package/dist/interface/ha/{Plugins-C2fONspm.js → Plugins-qFiHW-Nk.js} +45 -45
- package/dist/interface/ha/{RecentEventsFilter-ylgjiDo8.js → RecentEventsFilter-UWrXnvfq.js} +1 -1
- package/dist/interface/ha/{Recordings-w39I43cc.js → Recordings-BzeC6tOz.js} +437 -419
- package/dist/interface/ha/{SensorEdit-BkKi1l-A.js → SensorEdit-BSgy7lkZ.js} +360 -360
- package/dist/interface/ha/{SensorHistory-BGJjMlc3.js → SensorHistory-IDvP8LKH.js} +2 -2
- package/dist/interface/ha/{Sensors-D_Wi9XPa.js → Sensors-Diqp4oZ0.js} +96 -97
- package/dist/interface/ha/{Settings-Bn7WLWf0.js → Settings-BgDsxAlx.js} +11 -11
- package/dist/interface/ha/{SettingsAccount-CRTex-1j.js → SettingsAccount-DBXMQPYk.js} +159 -159
- package/dist/interface/ha/{SettingsAppearance-B1qmJnYk.js → SettingsAppearance-VmbjnT3o.js} +6 -6
- package/dist/interface/ha/{SettingsAssistant-DDd1X0BC.js → SettingsAssistant-C2R4ZetE.js} +133 -133
- package/dist/interface/ha/{SettingsBackup-DZbhSB13.js → SettingsBackup-BqY9TwYn.js} +20 -20
- package/dist/interface/ha/{SettingsList-BQdyPe0H.js → SettingsList-CzHcfo2N.js} +4 -4
- package/dist/interface/ha/{SettingsMqtt-CSZcY6ht.js → SettingsMqtt-DqV3h3Ow.js} +149 -149
- package/dist/interface/ha/{SettingsNotifications-CfEhl0-y.js → SettingsNotifications-yn5fIR_7.js} +6 -6
- package/dist/interface/ha/{SettingsRecordings-BnAGDvcH.js → SettingsRecordings-DDs1lyfY.js} +8 -8
- package/dist/interface/ha/{SettingsRemote-w86TQVUA.js → SettingsRemote-jBw3l5E0.js} +172 -172
- package/dist/interface/ha/{SettingsSystem-CENjHL3k.js → SettingsSystem-BOv9hNlk.js} +9 -9
- package/dist/interface/ha/{SettingsUsers-CqSHRklV.js → SettingsUsers-Biv-2F4C.js} +90 -90
- package/dist/interface/ha/{Terminal-WsuxG3k-.js → Terminal-CmcrGEV0.js} +4 -4
- package/dist/interface/ha/Training-BEzPiXZg.js +1512 -0
- package/dist/interface/ha/{Updates-Dl_lLLR2.js → Updates-DJAcmDQJ.js} +12 -12
- package/dist/interface/ha/{VariableInput-C8Q81GUt.js → VariableInput-DlYg7t0m.js} +2 -2
- package/dist/interface/ha/{VersionsHandler-BOvjesvp.js → VersionsHandler-UnrAWn-b.js} +11 -11
- package/dist/interface/ha/{VirtualSensorCreate-sgwATaky.js → VirtualSensorCreate-CssxeaCC.js} +2 -2
- package/dist/interface/ha/{Workers-CkDuQ9NG.js → Workers-CLpqLugC.js} +14 -14
- package/dist/interface/ha/{accordion-Xem2SzgR.js → accordion-BylV-jUK.js} +2 -2
- package/dist/interface/ha/{api-BmYisoxj.js → api-BP7mlzjP.js} +11181 -11736
- package/dist/interface/ha/{api-oqpIZTkx.js → api-B_tDa73J.js} +1 -1
- package/dist/interface/ha/{assistant-0jE4C19U.js → assistant-Cb6ACguQ.js} +1 -1
- package/dist/interface/ha/{auth-B4Msg7R-.js → auth-DOYDRgFm.js} +1 -1
- package/dist/interface/ha/{autocomplete-B94Amei3.js → autocomplete-Cp3u2Ywa.js} +4 -4
- package/dist/interface/ha/{automationBlueprint-C-12Yjl7.js → automationBlueprint-CbbG_ku4.js} +1 -1
- package/dist/interface/ha/cameraui-cards.js +1 -1
- package/dist/interface/ha/{cards-BrOcoiQJ.js → cards-BpBP1zVW.js} +1206 -1198
- package/dist/interface/ha/{config-IG56wp6m.js → config-DroY1HBs.js} +1 -1
- package/dist/interface/ha/{datepicker-B4Azs5zr.js → datepicker-DXk97lTw.js} +4 -4
- package/dist/interface/ha/{mqtt-pl13wSmG.js → mqtt-NJTVdd53.js} +1 -1
- package/dist/interface/ha/{multiselect-Dp4XDBRR.js → multiselect-BOb4ScAZ.js} +4 -4
- package/dist/interface/ha/{notifications-B6wxSmou.js → notifications-BPTvvgvv.js} +1 -1
- package/dist/interface/ha/{plugins-BwwaWxye.js → plugins-B29K3nQP.js} +1 -1
- package/dist/interface/ha/{rooms-NIzjFYAd.js → rooms-DLw0WUy_.js} +1 -1
- package/dist/interface/ha/{select-UR3ZRDew.js → select-DV7p2EDj.js} +4 -4
- package/dist/interface/ha/{server-YOLwDVAW.js → server-B4b5_Ecu.js} +1 -1
- package/dist/interface/ha/{speeddial-LCbl5g8p.js → speeddial-B5p0fuqL.js} +1 -1
- package/dist/interface/ha/{tooltip-Z7VN-E1u.js → tooltip-BDrlgLof.js} +1 -1
- package/dist/interface/ha/{types-B8B9MqK0.js → types-DJHHL7nn.js} +1 -1
- package/dist/interface/ha/{ungrouped-DttNEB62.js → ungrouped-xyK1QrsM.js} +344 -376
- package/dist/interface/ha/{updates-DVhiQhMM.js → updates-XFSu9Tfm.js} +5 -5
- package/dist/interface/ha/{useAppVersion-CG4D44Aa.js → useAppVersion-BH3rU1zz.js} +1 -1
- package/dist/interface/ha/{useLogsSocket-PKsRDttg.js → useLogsSocket-CaTRzvgU.js} +1 -1
- package/dist/interface/ha/{useNavLayout-DoEcPx9Z.js → useNavLayout-DV0_OQx0.js} +1 -1
- package/dist/interface/ha/{useServerRestart-CMl589qX.js → useServerRestart-C8tynLUf.js} +1 -1
- package/dist/interface/ha/{useTabSwipe-Cmqdn0J5.js → useTabSwipe-CFoLDp3j.js} +1 -1
- package/dist/interface/ha/{useUpdateChannel-BBW2EX7N.js → useUpdateChannel-DSG2RTPe.js} +2 -2
- package/dist/interface/ha/{useUpdatesSocket-B6ICpKKC.js → useUpdatesSocket-CSQ0g7-6.js} +1 -1
- package/dist/interface/ha/{useUserOptions-CzclRfar.js → useUserOptions-CFaCy6L1.js} +1 -1
- package/dist/interface/ha/{virtualscroller-C5j7FXj4.js → virtualscroller-B-UQZDMJ.js} +88 -88
- package/dist/interface/index.html +34 -34
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +22 -20
- package/dist/server/requirements.txt +1 -1
- package/dist/server/src/api/controllers/auth.controller.js +5 -6
- package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
- package/dist/server/src/api/controllers/plugins.controller.js +5 -5
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/api/database/checks.js +20 -8
- package/dist/server/src/api/database/checks.js.map +1 -1
- package/dist/server/src/api/database/selfcheck.js +2 -2
- package/dist/server/src/api/database/selfcheck.js.map +1 -1
- package/dist/server/src/api/index.js +8 -6
- package/dist/server/src/api/index.js.map +1 -1
- package/dist/server/src/api/plugins/logger.plugin.js +11 -11
- package/dist/server/src/api/plugins/logger.plugin.js.map +1 -1
- package/dist/server/src/api/services/twoFactor.service.d.ts +4 -5
- package/dist/server/src/api/services/twoFactor.service.js +16 -17
- package/dist/server/src/api/services/twoFactor.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +0 -1
- package/dist/server/src/api/utils/cert.js +128 -135
- package/dist/server/src/api/utils/cert.js.map +1 -1
- package/dist/server/src/api/utils/form-body.d.ts +2 -0
- package/dist/server/src/api/utils/form-body.js +22 -0
- package/dist/server/src/api/utils/form-body.js.map +1 -0
- package/dist/server/src/api/utils/install-logger.js +12 -12
- package/dist/server/src/api/utils/install-logger.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/logs.d.ts +7 -3
- package/dist/server/src/api/websocket/nsp/logs.js +79 -65
- package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
- package/dist/server/src/assistant/history.d.ts +2 -0
- package/dist/server/src/assistant/history.js +46 -0
- package/dist/server/src/assistant/history.js.map +1 -0
- package/dist/server/src/assistant/manager.js +2 -1
- package/dist/server/src/assistant/manager.js.map +1 -1
- package/dist/server/src/camera/controller.d.ts +1 -0
- package/dist/server/src/camera/controller.js +23 -18
- package/dist/server/src/camera/controller.js.map +1 -1
- package/dist/server/src/camera/decoder/worker.d.ts +3 -0
- package/dist/server/src/camera/decoder/worker.js +42 -5
- package/dist/server/src/camera/decoder/worker.js.map +1 -1
- package/dist/server/src/go2rtc/index.js +2 -2
- package/dist/server/src/go2rtc/index.js.map +1 -1
- package/dist/server/src/main.js +5 -5
- package/dist/server/src/main.js.map +1 -1
- package/dist/server/src/manager/discoveryManager.js +2 -2
- package/dist/server/src/manager/discoveryManager.js.map +1 -1
- package/dist/server/src/remote/services/cloudflare-managed.js +6 -3
- package/dist/server/src/remote/services/cloudflare-managed.js.map +1 -1
- package/dist/server/src/remote/services/cloudflare.d.ts +0 -1
- package/dist/server/src/remote/services/cloudflare.js +9 -20
- package/dist/server/src/remote/services/cloudflare.js.map +1 -1
- package/dist/server/src/remote/services/cloudflaredBinary.d.ts +3 -2
- package/dist/server/src/remote/services/cloudflaredBinary.js +9 -16
- package/dist/server/src/remote/services/cloudflaredBinary.js.map +1 -1
- package/dist/server/src/rpc/server.js +2 -2
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/utils/automation-registry/index.js +3 -3
- package/dist/server/src/utils/automation-registry/index.js.map +1 -1
- package/dist/server/src/utils/colors.d.ts +2 -0
- package/dist/server/src/utils/colors.js +8 -0
- package/dist/server/src/utils/colors.js.map +1 -0
- package/dist/server/src/utils/npm/auth.d.ts +3 -2
- package/dist/server/src/utils/npm/auth.js +1 -1
- package/dist/server/src/utils/npm/auth.js.map +1 -1
- package/dist/server/src/utils/npm/index.d.ts +3 -15
- package/dist/server/src/utils/npm/index.js +26 -17
- package/dist/server/src/utils/npm/index.js.map +1 -1
- package/dist/server/src/utils/npm/registry.d.ts +69 -0
- package/dist/server/src/utils/npm/registry.js +240 -0
- package/dist/server/src/utils/npm/registry.js.map +1 -0
- package/dist/server/src/utils/plugin-registry/index.js +3 -3
- package/dist/server/src/utils/plugin-registry/index.js.map +1 -1
- package/dist/server/src/utils/process.d.ts +10 -0
- package/dist/server/src/utils/process.js +112 -0
- package/dist/server/src/utils/process.js.map +1 -0
- package/dist/server/src/utils/totp.d.ts +12 -0
- package/dist/server/src/utils/totp.js +71 -0
- package/dist/server/src/utils/totp.js.map +1 -0
- package/dist/server/src/utils/ttl-cache.d.ts +20 -0
- package/dist/server/src/utils/ttl-cache.js +63 -0
- package/dist/server/src/utils/ttl-cache.js.map +1 -0
- package/npm-shrinkwrap.json +6427 -0
- package/package.json +22 -20
- package/dist/interface/assets/Assistant-BKxssfw-.js +0 -1
- package/dist/interface/assets/Automation-CP59cgP7.js +0 -3
- package/dist/interface/assets/AutomationStore-BZGR_5Xl.js +0 -2
- package/dist/interface/assets/Automations-BpXorYAS.js +0 -2
- package/dist/interface/assets/Camera-UBUfaR5a.js +0 -2
- package/dist/interface/assets/Cameras-B21Y8MdQ.js +0 -651
- package/dist/interface/assets/Camview-BySyPtU5.js +0 -1
- package/dist/interface/assets/Config-BGyGmukb.js +0 -2
- package/dist/interface/assets/ConfigTriggerGeofence-CkzTFEZn.js +0 -1
- package/dist/interface/assets/Console-HXmKYaK_.js +0 -1
- package/dist/interface/assets/CuiAssistantConversation-2qrRCsgw.js +0 -5
- package/dist/interface/assets/CuiAssistantConversation-DmSdiv1b.css +0 -1
- package/dist/interface/assets/CuiBottomSheet-CTr-KHC8.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-BZCayhy_.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-BbaEL2ST.js +0 -1
- package/dist/interface/assets/CuiCameraTable-C5tQHs63.js +0 -1
- package/dist/interface/assets/CuiLightControl-v6k9hVGl.js +0 -1
- package/dist/interface/assets/CuiPluginCard-5MRYJcF2.js +0 -2
- package/dist/interface/assets/CuiSchema-BDXeXora.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-BVknLbRO.js +0 -1
- package/dist/interface/assets/Faces-BEpYvbB0.js +0 -1
- package/dist/interface/assets/FirstSteps-U93RDOcP.js +0 -1
- package/dist/interface/assets/Floorplan-D8XoCNOB.js +0 -1
- package/dist/interface/assets/Instances-CFwZotvU.js +0 -1
- package/dist/interface/assets/Metrics-Ca_d5CbP.js +0 -12
- package/dist/interface/assets/Plugin-BjLw46Sw.js +0 -1
- package/dist/interface/assets/PluginDetail-BuLW4lkN.js +0 -2
- package/dist/interface/assets/PluginSearch--LLMEeyx.js +0 -2
- package/dist/interface/assets/PluginSearch-0akjE0ef.js +0 -1
- package/dist/interface/assets/Plugins-26O511gf.js +0 -1
- package/dist/interface/assets/Recordings-DQOGeSFm.js +0 -1
- package/dist/interface/assets/SensorEdit-DEW5D80x.js +0 -1
- package/dist/interface/assets/Sensors-C8yOyAwo.js +0 -2
- package/dist/interface/assets/Settings-B-RgMeVm.js +0 -1
- package/dist/interface/assets/SettingsAccount-B6aXFx3F.js +0 -1
- package/dist/interface/assets/SettingsAccount-_0ccrXYU.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CkDwzx6f.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DBFE3uVH.js +0 -1
- package/dist/interface/assets/SettingsAssistant-DN5OUJqt.js +0 -1
- package/dist/interface/assets/SettingsMqtt-hsKZkU-o.js +0 -1
- package/dist/interface/assets/SettingsNotifications-DIeiUEAk.js +0 -1
- package/dist/interface/assets/SettingsRemote-Doa0aBMC.js +0 -2
- package/dist/interface/assets/Training-DYlefOX1.js +0 -1
- package/dist/interface/assets/Workers-CUVvTuts.js +0 -2
- package/dist/interface/assets/api-B0wYDGQj.css +0 -2
- package/dist/interface/assets/api-BNrZVfeD.js +0 -4
- package/dist/interface/assets/cloudHandoff-Dnndt2el.js +0 -1
- package/dist/interface/assets/main-CRlC4FBY.js +0 -3
- package/dist/interface/assets/mqtt-BY6-Hrbv.js +0 -1
- package/dist/interface/assets/ring-resize-DyqCo2UN.js +0 -1
- package/dist/interface/assets/rooms-BHP4q6yf.js +0 -1
- package/dist/interface/assets/ungrouped-DBRZ-Ori.css +0 -1
- package/dist/interface/assets/ungrouped-DHLAmt__.js +0 -1
- package/dist/interface/assets/useBackupRestore-Dj-ZXODq.js +0 -1
- package/dist/interface/ha/PluginDetail-BFfRnkdG.js +0 -230
- package/dist/interface/ha/Training-hu_XOYBk.js +0 -1505
- package/dist/interface/ha/ring-resize-Dr2PxWIg.js +0 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ar as e,Dr as t,Rr as n,kr as r}from"./api-DK2Bav9D.js";import{K as i,Z as a}from"./vendor-DGke_6M4.js";async function o({signal:e}){return(await n.get(`/mqtt`,{signal:e})).data}async function s(e){return(await n.patch(`/mqtt`,e)).data}async function c({signal:e}){return(await n.get(`/mqtt/topics`,{signal:e})).data}async function l(e){return(await n.post(`/mqtt/test`,e)).data}var u=class{_queryClient=a();t=e.global.t;toast=r();get queryClient(){return this._queryClient}getMqttInfoQuery(){return t({queryKey:[`mqtt`],queryFn:({signal:e})=>o({signal:e}),staleTime:1e3})}patchMqttInfoMutation(){return i({mutationFn:s,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`mqtt`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.mqtt_updated`),life:3e3})}})}getMqttTopicsQuery(){return t({queryKey:[`mqtt`,`topics`],queryFn:({signal:e})=>c({signal:e}),staleTime:1e4})}testMqttConnectionMutation(){return i({mutationFn:l})}};export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Ar as e,Dr as t,Rr as n,kr as r}from"./api-DK2Bav9D.js";import{K as i,Z as a,dr as o}from"./vendor-DGke_6M4.js";async function s({signal:e}){return(await n.get(`/notifications/settings`,{signal:e})).data}async function c({settings:e}){return(await n.put(`/notifications/settings`,e)).data}async function l({signal:e}){return(await n.get(`/notifications/devices`,{signal:e})).data}async function u({signal:e}){return(await n.get(`/notifications/sources`,{signal:e})).data}async function d({signal:e}){return(await n.get(`/notifications/history`,{signal:e})).data}async function f(){await n.delete(`/notifications/history`)}async function p({deviceId:e}){await n.delete(`/notifications/devices/${encodeURIComponent(e)}`)}async function m(e){return(await n.post(`/notifications/devices`,e)).data}async function h({deviceId:e,patch:t}){return(await n.patch(`/notifications/devices/${encodeURIComponent(e)}`,t)).data}var g=class{_queryClient=a();t=e.global.t;toast=r();queryActivator=o([{name:`getSettingsQuery`,enabled:!0},{name:`listDevicesQuery`,enabled:!0},{name:`listSourcesQuery`,enabled:!0},{name:`getHistoryQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getSettingsQuery(){return t({queryKey:[`notifications`,`settings`],queryFn:({signal:e})=>s({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getSettingsQuery`&&e.enabled)})}setSettingsQuery(){return i({mutationFn:c,onSuccess:e=>{this._queryClient.setQueryData([`notifications`,`settings`],e),this.toast.add({severity:`success`,detail:this.t(`views.settings.notifications.saved`),life:3e3})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}setSettingsQuerySilent(){return i({mutationFn:c,onSuccess:e=>{this._queryClient.setQueryData([`notifications`,`settings`],e)}})}listDevicesQuery(e){return t({queryKey:[`notifications`,`devices`],queryFn:({signal:e})=>l({signal:e}),enabled:()=>(e?.()??!0)&&this.queryActivator.value.some(e=>e.name===`listDevicesQuery`&&e.enabled)})}listSourcesQuery(){return t({queryKey:[`notifications`,`sources`],queryFn:({signal:e})=>u({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`listSourcesQuery`&&e.enabled)})}getHistoryQuery(){return t({queryKey:[`notifications`,`history`],queryFn:({signal:e})=>d({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getHistoryQuery`&&e.enabled)})}clearHistoryQuery(){return i({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`history`]})}})}revokeDeviceQuery(){return i({mutationFn:p,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`devices`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.notifications.device_revoked`),life:3e3})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}updateDeviceQuery(){return i({mutationFn:h,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`devices`]})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as n,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dr as e,Ir as t,Or as n,Tr as r}from"./api-BNrZVfeD.js";import{K as i,Z as a,dr as o,yr as s}from"./vendor-DGke_6M4.js";var c=18e5,l=6e5;async function u({pluginData:e}){return(await t.post(`/plugins`,e,{timeout:c})).data}async function d({plugins:e}){return(await t.post(`/plugins/install`,{plugins:e},{timeout:c})).data}async function f({pluginNames:e}){return(await t.put(`/plugins/enable`,{pluginNames:e})).data}async function p({pluginNames:e}){return(await t.put(`/plugins/disable`,{pluginNames:e})).data}async function m({pluginNames:e,removeStorage:n}){return(await t.delete(`/plugins`,{data:{pluginNames:e},params:n?{removeStorage:!0}:void 0,timeout:l})).data}async function h({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}`,{signal:n})).data}async function g({pluginname:e,signal:n}){return(await t.get(`/plugins/${e}/versions`,{signal:n})).data}async function _({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/update`,{signal:n})).data}async function v({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/logo`,{signal:n})).data}async function y({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/config`,{signal:n})).data}async function b({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/contract`,{signal:n})).data}async function x({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/readme`,{signal:n})).data}async function S({pluginName:e,query:n,signal:r}){return(await t.get(`/plugins/${e}/changelog`,{params:n,signal:r})).data}async function C({pluginName:e,query:n,signal:r}){return(await t.get(`/plugins/${e}/compat`,{params:n,signal:r})).data}async function w({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/interface`,{signal:n})).data}async function T({parameter:e,signal:n}){return(await t.get(`/plugins`,{params:e,signal:n})).data}async function E({parameter:e,signal:n}){return(await t.get(`/plugins/extensions`,{params:e,signal:n})).data}async function D({pluginName:e}){return(await t.delete(`/plugins/${e}/log`)).data}async function O({pluginName:e,signal:n}){return(await t.get(`/plugins/${e}/log/download`,{signal:n})).data}async function k({parameter:e,signal:n}){return(await t.get(`/plugins/progress`,{params:e,signal:n})).data}async function A({query:e,parameter:n,refresh:r,signal:i}){return(await t.get(`/plugins/search`,{params:{...e,...n,...r?{refresh:!0}:{}},signal:i})).data}async function j({pluginName:e}){return(await t.put(`/plugins/${e}/enable`)).data}async function M({pluginName:e,configData:n}){return(await t.patch(`/plugins/${e}/config`,n)).data}async function N({pluginname:e,configData:n}){return(await t.put(`/plugins/${e}/config`,n)).data}async function P({pluginname:e,configData:n}){return(await t.post(`/plugins/${e}/config`,n)).data}async function F({pluginName:e}){return(await t.put(`/plugins/${e}/disable`)).data}async function I({pluginName:e}){return(await t.put(`/plugins/${e}/start`)).data}async function L({pluginName:e}){return(await t.put(`/plugins/${e}/stop`)).data}async function R({pluginName:e}){return(await t.put(`/plugins/${e}/restart`)).data}async function z({pluginName:e,removeStorage:n}){return(await t.delete(`/plugins/${e}`,{params:{removeStorage:n},timeout:l})).data}async function B(){return(await t.delete(`/plugins`,{timeout:l})).data}var V=class{_queryClient=a();t=n.global.t;toast=e();queryActivator=o([{name:`getPluginQuery`,enabled:!0},{name:`getPluginsQuery`,enabled:!0},{name:`getPluginsExtensionsQuery`,enabled:!0},{name:`searchPluginsQuery`,enabled:!0},{name:`getPluginVersionsQuery`,enabled:!0},{name:`getPluginUpdateQuery`,enabled:!0},{name:`getPluginLogoQuery`,enabled:!0},{name:`getPluginConfigQuery`,enabled:!0},{name:`getPluginContractQuery`,enabled:!0},{name:`getPluginReadmeQuery`,enabled:!0},{name:`getPluginInterfaceQuery`,enabled:!0},{name:`getPluginChangelogQuery`,enabled:!0},{name:`getPluginCompatQuery`,enabled:!0},{name:`getPluginsProgressQuery`,enabled:!0},{name:`installPluginQuery`,enabled:!0},{name:`enablePluginQuery`,enabled:!0},{name:`disablePluginQuery`,enabled:!0},{name:`patchPluginConfigQuery`,enabled:!0},{name:`setPluginConfigQuery`,enabled:!0},{name:`submitPluginConfigQuery`,enabled:!0},{name:`startPluginQuery`,enabled:!0},{name:`stopPluginQuery`,enabled:!0},{name:`restartPluginQuery`,enabled:!0},{name:`uninstallPluginQuery`,enabled:!0},{name:`uninstallPluginsQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0}]);get queryClient(){return this._queryClient}installPluginQuery(){return i({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_installed`),life:3e3})}})}getPluginQuery(e){return r({queryKey:[`plugins`,e],queryFn:({signal:t})=>h({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginQuery`&&e.enabled)})}getPluginsQuery(e){return r({queryKey:[`pluginsList`,e],queryFn:({signal:t})=>T({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsQuery`&&e.enabled)})}getPluginsExtensionsQuery(e){return r({queryKey:[`extensionsList`,e],queryFn:({signal:t})=>E({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsExtensionsQuery`&&e.enabled)})}getPluginsProgressQuery(e){return r({queryKey:[`pluginsProgress`,e],queryFn:({signal:t})=>k({parameter:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsProgressQuery`&&e.enabled)})}searchPluginsQuery(e,t,n){return r({queryKey:[`pluginsSearch`,e,t],queryFn:({signal:r})=>A({query:s(e),parameter:s(t),refresh:s(n),signal:r}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`searchPluginsQuery`&&e.enabled)})}getPluginVersionsQuery(e){return r({queryKey:[`plugins`,e,`versions`],queryFn:({signal:t})=>g({pluginname:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginVersionsQuery`&&e.enabled)})}getPluginUpdateQuery(e){return r({queryKey:[`plugins`,e,`update`],queryFn:({signal:t})=>_({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginUpdateQuery`&&e.enabled)})}getPluginLogoQuery(e){return r({queryKey:[`plugins`,e,`logo`],queryFn:({signal:t})=>v({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginLogoQuery`&&e.enabled)})}getPluginConfigQuery(e){return r({queryKey:[`plugins`,e,`config`],queryFn:({signal:t})=>y({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginConfigQuery`&&e.enabled)})}getPluginContractQuery(e){return r({queryKey:[`plugins`,e,`contract`],queryFn:({signal:t})=>b({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginContractQuery`&&e.enabled)})}getPluginReadmeQuery(e){return r({queryKey:[`plugins`,e,`readme`],queryFn:({signal:t})=>x({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginReadmeQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginInterfaceQuery(e){return r({queryKey:[`plugins`,e,`interface`],queryFn:({signal:t})=>w({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginInterfaceQuery`&&e.enabled)})}getPluginChangelogQuery(e,t){return r({queryKey:[`plugins`,e,`changelog`],queryFn:({signal:n})=>S({pluginName:s(e),query:s(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginCompatQuery(e,t){return r({queryKey:[`plugins`,e,`compat`],queryFn:({signal:n})=>C({pluginName:s(e),query:s(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginCompatQuery`&&e.enabled)})}patchPluginConfigQuery(){return i({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_config_updated`),life:3e3})}})}startPluginQuery(){return i({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_started`),life:3e3})}})}stopPluginQuery(){return i({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_stopped`),life:3e3})}})}restartPluginQuery(){return i({mutationFn:R,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_restarted`),life:3e3})}})}setPluginConfigQuery(){return i({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}submitPluginConfigQuery(){return i({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}enablePluginQuery(){return i({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_enabled`),life:3e3})}})}disablePluginQuery(){return i({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_disabled`),life:3e3})}})}uninstallPluginQuery(){return i({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_removed`),life:3e3})}})}uninstallPluginsQuery(){return i({mutationFn:B,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugins_removed`),life:3e3})}})}downloadLogQuery(e){return r({queryKey:[`logs`,e],queryFn:({signal:t})=>O({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return i({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.pluginName],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as a,S as c,d as i,_ as l,p as n,D as o,f as r,O as s,V as t,u};
|
|
1
|
+
import{Ar as e,Dr as t,Rr as n,kr as r}from"./api-DK2Bav9D.js";import{K as i,Z as a,dr as o,yr as s}from"./vendor-DGke_6M4.js";var c=18e5,l=6e5;async function u({pluginData:e}){return(await n.post(`/plugins`,e,{timeout:c})).data}async function d({plugins:e}){return(await n.post(`/plugins/install`,{plugins:e},{timeout:c})).data}async function f({pluginNames:e}){return(await n.put(`/plugins/enable`,{pluginNames:e})).data}async function p({pluginNames:e}){return(await n.put(`/plugins/disable`,{pluginNames:e})).data}async function m({pluginNames:e,removeStorage:t}){return(await n.delete(`/plugins`,{data:{pluginNames:e},params:t?{removeStorage:!0}:void 0,timeout:l})).data}async function h({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}`,{signal:t})).data}async function g({pluginname:e,signal:t}){return(await n.get(`/plugins/${e}/versions`,{signal:t})).data}async function _({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/update`,{signal:t})).data}async function v({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/logo`,{signal:t})).data}async function y({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/config`,{signal:t})).data}async function b({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/contract`,{signal:t})).data}async function x({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/readme`,{signal:t})).data}async function S({pluginName:e,query:t,signal:r}){return(await n.get(`/plugins/${e}/changelog`,{params:t,signal:r})).data}async function C({pluginName:e,query:t,signal:r}){return(await n.get(`/plugins/${e}/compat`,{params:t,signal:r})).data}async function w({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/interface`,{signal:t})).data}async function T({parameter:e,signal:t}){return(await n.get(`/plugins`,{params:e,signal:t})).data}async function E({parameter:e,signal:t}){return(await n.get(`/plugins/extensions`,{params:e,signal:t})).data}async function D({pluginName:e}){return(await n.delete(`/plugins/${e}/log`)).data}async function O({pluginName:e,signal:t}){return(await n.get(`/plugins/${e}/log/download`,{signal:t})).data}async function k({parameter:e,signal:t}){return(await n.get(`/plugins/progress`,{params:e,signal:t})).data}async function A({query:e,parameter:t,refresh:r,signal:i}){return(await n.get(`/plugins/search`,{params:{...e,...t,...r?{refresh:!0}:{}},signal:i})).data}async function j({pluginName:e}){return(await n.put(`/plugins/${e}/enable`)).data}async function M({pluginName:e,configData:t}){return(await n.patch(`/plugins/${e}/config`,t)).data}async function N({pluginname:e,configData:t}){return(await n.put(`/plugins/${e}/config`,t)).data}async function P({pluginname:e,configData:t}){return(await n.post(`/plugins/${e}/config`,t)).data}async function F({pluginName:e}){return(await n.put(`/plugins/${e}/disable`)).data}async function I({pluginName:e}){return(await n.put(`/plugins/${e}/start`)).data}async function L({pluginName:e}){return(await n.put(`/plugins/${e}/stop`)).data}async function R({pluginName:e}){return(await n.put(`/plugins/${e}/restart`)).data}async function z({pluginName:e,removeStorage:t}){return(await n.delete(`/plugins/${e}`,{params:{removeStorage:t},timeout:l})).data}async function B(){return(await n.delete(`/plugins`,{timeout:l})).data}var V=class{_queryClient=a();t=e.global.t;toast=r();queryActivator=o([{name:`getPluginQuery`,enabled:!0},{name:`getPluginsQuery`,enabled:!0},{name:`getPluginsExtensionsQuery`,enabled:!0},{name:`searchPluginsQuery`,enabled:!0},{name:`getPluginVersionsQuery`,enabled:!0},{name:`getPluginUpdateQuery`,enabled:!0},{name:`getPluginLogoQuery`,enabled:!0},{name:`getPluginConfigQuery`,enabled:!0},{name:`getPluginContractQuery`,enabled:!0},{name:`getPluginReadmeQuery`,enabled:!0},{name:`getPluginInterfaceQuery`,enabled:!0},{name:`getPluginChangelogQuery`,enabled:!0},{name:`getPluginCompatQuery`,enabled:!0},{name:`getPluginsProgressQuery`,enabled:!0},{name:`installPluginQuery`,enabled:!0},{name:`enablePluginQuery`,enabled:!0},{name:`disablePluginQuery`,enabled:!0},{name:`patchPluginConfigQuery`,enabled:!0},{name:`setPluginConfigQuery`,enabled:!0},{name:`submitPluginConfigQuery`,enabled:!0},{name:`startPluginQuery`,enabled:!0},{name:`stopPluginQuery`,enabled:!0},{name:`restartPluginQuery`,enabled:!0},{name:`uninstallPluginQuery`,enabled:!0},{name:`uninstallPluginsQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0}]);get queryClient(){return this._queryClient}installPluginQuery(){return i({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_installed`),life:3e3})}})}getPluginQuery(e){return t({queryKey:[`plugins`,e],queryFn:({signal:t})=>h({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginQuery`&&e.enabled)})}getPluginsQuery(e){return t({queryKey:[`pluginsList`,e],queryFn:({signal:t})=>T({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsQuery`&&e.enabled)})}getPluginsExtensionsQuery(e){return t({queryKey:[`extensionsList`,e],queryFn:({signal:t})=>E({parameter:s(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsExtensionsQuery`&&e.enabled)})}getPluginsProgressQuery(e){return t({queryKey:[`pluginsProgress`,e],queryFn:({signal:t})=>k({parameter:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsProgressQuery`&&e.enabled)})}searchPluginsQuery(e,n,r){return t({queryKey:[`pluginsSearch`,e,n],queryFn:({signal:t})=>A({query:s(e),parameter:s(n),refresh:s(r),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`searchPluginsQuery`&&e.enabled)})}getPluginVersionsQuery(e){return t({queryKey:[`plugins`,e,`versions`],queryFn:({signal:t})=>g({pluginname:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginVersionsQuery`&&e.enabled)})}getPluginUpdateQuery(e){return t({queryKey:[`plugins`,e,`update`],queryFn:({signal:t})=>_({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginUpdateQuery`&&e.enabled)})}getPluginLogoQuery(e){return t({queryKey:[`plugins`,e,`logo`],queryFn:({signal:t})=>v({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginLogoQuery`&&e.enabled)})}getPluginConfigQuery(e){return t({queryKey:[`plugins`,e,`config`],queryFn:({signal:t})=>y({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginConfigQuery`&&e.enabled)})}getPluginContractQuery(e){return t({queryKey:[`plugins`,e,`contract`],queryFn:({signal:t})=>b({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginContractQuery`&&e.enabled)})}getPluginReadmeQuery(e){return t({queryKey:[`plugins`,e,`readme`],queryFn:({signal:t})=>x({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginReadmeQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginInterfaceQuery(e){return t({queryKey:[`plugins`,e,`interface`],queryFn:({signal:t})=>w({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginInterfaceQuery`&&e.enabled)})}getPluginChangelogQuery(e,n){return t({queryKey:[`plugins`,e,`changelog`],queryFn:({signal:t})=>S({pluginName:s(e),query:s(n),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginCompatQuery(e,n){return t({queryKey:[`plugins`,e,`compat`],queryFn:({signal:t})=>C({pluginName:s(e),query:s(n),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginCompatQuery`&&e.enabled)})}patchPluginConfigQuery(){return i({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_config_updated`),life:3e3})}})}startPluginQuery(){return i({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_started`),life:3e3})}})}stopPluginQuery(){return i({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_stopped`),life:3e3})}})}restartPluginQuery(){return i({mutationFn:R,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_restarted`),life:3e3})}})}setPluginConfigQuery(){return i({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}submitPluginConfigQuery(){return i({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}enablePluginQuery(){return i({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_enabled`),life:3e3})}})}disablePluginQuery(){return i({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_disabled`),life:3e3})}})}uninstallPluginQuery(){return i({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_removed`),life:3e3})}})}uninstallPluginsQuery(){return i({mutationFn:B,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugins_removed`),life:3e3})}})}downloadLogQuery(e){return t({queryKey:[`logs`,e],queryFn:({signal:t})=>O({pluginName:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return i({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.pluginName],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as a,S as c,d as i,_ as l,p as n,D as o,f as r,O as s,V as t,u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Dr as e,Rr as t}from"./api-DK2Bav9D.js";import{K as n,Z as r}from"./vendor-DGke_6M4.js";async function i({signal:e}={}){return(await t.get(`/rooms`,{signal:e})).data}async function a(e){return(await t.post(`/rooms`,e)).data}async function o(e){await t.delete(`/rooms/${e}`)}var s=class{queryClient=r();getRoomsQuery(){return e({queryKey:[`rooms`],queryFn:({signal:e})=>i({signal:e}),staleTime:1e4})}createRoomMutation(){return n({mutationFn:a,onSuccess:async()=>{await this.queryClient.refetchQueries({queryKey:[`rooms`],exact:!0})}})}deleteRoomMutation(){return n({mutationFn:o,onSuccess:async()=>{await Promise.all([this.queryClient.refetchQueries({queryKey:[`rooms`],exact:!0}),this.queryClient.refetchQueries({queryKey:[`cameras`]})])}})}};export{i as n,s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Lr as e}from"./vendor-cameraui-
|
|
1
|
+
import{Lr as e}from"./vendor-cameraui-QXD8jkcj.js";import{Qt as t}from"./api-DK2Bav9D.js";import{In as n,cn as r,dn as i,sr as a}from"./vendor-DGke_6M4.js";import{n as o}from"./alert-outline-D7zaSJH_.js";import{a as s,c as ee,d as c,f as l,h as u,i as d,l as f,o as p,p as m,r as h,s as g,u as _}from"./eventIcons-cdzqQc0W.js";import{n as v,t as y}from"./cube-scan-DGhUFV1x.js";var b={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function x(e,t){return n(),i(`svg`,b,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`m22 12l-2 1l-1 1l-1-1l-1 3l-1-3l-1 8l-1-8l-1 2l-1-2l-1 4l-1-4l-1 9l-1-9l-1 6l-1-6l-1 1l-1-1l-2-1l2-1l1-1l1 1l1-6l1 6l1-9l1 9l1-4l1 4l1-2l1 2l1-8l1 8l1-3l1 3l1-1l1 1z`},null,-1)]])}var S=a({name:`mdi-waveform`,render:x}),C={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function w(e,t){return n(),i(`svg`,C,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M16 10H8V6h8m.67-2H15V2H9v2H7.33A1.33 1.33 0 0 0 6 5.33v15.34C6 21.4 6.6 22 7.33 22h9.34A1.33 1.33 0 0 0 18 20.67V5.33C18 4.6 17.4 4 16.67 4`},null,-1)]])}var T=a({name:`mdi-battery-70`,render:w}),E={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function D(e,t){return n(),i(`svg`,E,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6a6 6 0 0 1 6 6a6 6 0 0 1-6 6m8-2.69L23.31 12L20 8.69V4h-4.69L12 .69L8.69 4H4v4.69L.69 12L4 15.31V20h4.69L12 23.31L15.31 20H20z`},null,-1)]])}var O=a({name:`mdi-brightness-5`,render:D}),k={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function A(e,t){return n(),i(`svg`,k,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M5 7a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h3v-2H5V9h3V7zm6 0a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zm0 2h2v6h-2zm5 1.5V12h3v1.5h-1.5A1.5 1.5 0 0 0 16 15v3h4.5v-1.5h-3V15H19a1.5 1.5 0 0 0 1.5-1.5V12a1.5 1.5 0 0 0-1.5-1.5z`},null,-1)]])}var j=a({name:`mdi-molecule-co2`,render:A}),M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return n(),i(`svg`,M,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M4 18h9l-2 2H4c-.5 0-1.03-.21-1.41-.59S2 18.5 2 18V8h2zM17.63 4.84C17.27 4.33 16.67 4 16 4H8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c.67 0 1.27-.34 1.63-.85L22 10zM16 14H8V6h8l3.55 4Z`},null,-1)]])}var P=a({name:`mdi-label-multiple-outline`,render:N}),F={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function I(e,t){return n(),i(`svg`,F,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M15.5 9c.7 0 1.29-.24 1.77-.73c.49-.48.73-1.07.73-1.77c0-.67-.24-1.27-.73-1.77c-.48-.5-1.07-.73-1.77-.73c-.67 0-1.27.23-1.77.73S13 5.83 13 6.5c0 .7.23 1.29.73 1.77c.5.49 1.1.73 1.77.73m3.81-.09l3.1 3.09L21 13.41l-3.14-3.1c-.78.47-1.58.69-2.39.69c-1.25 0-2.31-.42-3.17-1.3c-.85-.87-1.3-1.93-1.3-3.2c0-1.23.45-2.3 1.33-3.17C13.2 2.45 14.27 2 15.5 2c1.27 0 2.33.45 3.2 1.33c.88.87 1.3 1.94 1.3 3.17c0 .83-.22 1.63-.69 2.41M16.5 18h-11l2.75-3.5l1.97 2.33l2.72-3.52zm1.5-5l2 2v5c0 .55-.19 1-.59 1.4c-.41.39-.88.6-1.41.6H4c-.55 0-1-.21-1.4-.6c-.39-.4-.6-.85-.6-1.4V6c0-.53.21-1 .6-1.41C3 4.19 3.45 4 4 4h5.5c-.3.64-.47 1.31-.5 2H4v14h14z`},null,-1)]])}var L=a({name:`mdi-image-search-outline`,render:I}),R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function z(e,t){return n(),i(`svg`,R,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M8 3c-1.11 0-2 .89-2 2v16h12V5c0-1.11-.89-2-2-2zm0 2h8v14H8zm5 6v2h2v-2z`},null,-1)]])}var B=a({name:`mdi-door`,render:z}),V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return n(),i(`svg`,V,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 3.25S6 10 6 14c0 3.32 2.69 6 6 6a6 6 0 0 0 6-6c0-4-6-10.75-6-10.75m2.47 6.72l1.06 1.06l-6 6l-1.06-1.06M9.75 10A1.25 1.25 0 0 1 11 11.25a1.25 1.25 0 0 1-1.25 1.25a1.25 1.25 0 0 1-1.25-1.25A1.25 1.25 0 0 1 9.75 10m4.5 4.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 14.25 17A1.25 1.25 0 0 1 13 15.75a1.25 1.25 0 0 1 1.25-1.25`},null,-1)]])}var U=a({name:`mdi-water-percent`,render:H}),te={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return n(),i(`svg`,te,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M9.61 16.11c0-2.08.98-3.92 2.49-5.11H5l1.5-4.5h11l1.22 3.66c.84.37 1.58.91 2.19 1.58L18.92 6c-.2-.58-.76-1-1.42-1h-11c-.66 0-1.22.42-1.42 1L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h4.29c-.43-.87-.68-1.85-.68-2.89M6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16m14.21 4.7l-.01.01zm-4.6-9.09c2.5 0 4.5 2 4.5 4.5c0 .89-.25 1.71-.69 2.39L23 21.61L21.61 23l-3.11-3.07c-.7.43-1.5.68-2.39.68c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 1 0 2.5 2.5c0-1.39-1.11-2.5-2.5-2.5`},null,-1)]])}var G=a({name:`mdi-car-search`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return n(),i(`svg`,K,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 17a2 2 0 0 1-2-2c0-1.11.89-2 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m6 3V10H6v10zm0-12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10c0-1.11.89-2 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3`},null,-1)]])}var J=a({name:`mdi-lock-outline`,render:q}),Y={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function X(e,t){return n(),i(`svg`,Y,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z`},null,-1)]])}var Z=a({name:`mdi-cube-outline`,render:X}),Q={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ne(e,t){return n(),i(`svg`,Q,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 3L2 12h3v8h14v-8h3zm0 5.75A2.25 2.25 0 0 1 14.25 11A2.25 2.25 0 0 1 12 13.25A2.25 2.25 0 0 1 9.75 11A2.25 2.25 0 0 1 12 8.75M12 15c1.5 0 4.5.75 4.5 2.25V18h-9v-.75c0-1.5 3-2.25 4.5-2.25`},null,-1)]])}var re=a({name:`mdi-home-account`,render:ne}),ie={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ae(e,t){return n(),i(`svg`,ie,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M16 7V3h-2v4h-4V3H8v4C7 7 6 8 6 9v5.5L9.5 18v3h5v-3l3.5-3.5V9c0-1-1-2-2-2m0 6.67l-2.91 2.92l-.42.41h-1.34l-.41-.41L8 13.67V9.09c0-.03.06-.09.09-.09h7.83c.03 0 .08.06.08.09z`},null,-1)]])}var oe=a({name:`mdi-power-plug-outline`,render:ae}),se={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ce(e,t){return n(),i(`svg`,se,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M8 14.25L4.75 11H7c.25-5.61 2.39-10 5-10c2 0 3.77 2.64 4.55 6.45C20.36 8.23 23 10 23 12c0 1.83-2.17 3.43-5.4 4.3l.29-2.03C19.8 13.72 21 12.91 21 12c0-1.06-1.65-2-4.13-2.5c.08.79.13 1.63.13 2.5c0 6.08-2.24 11-5 11c-1.83 0-3.43-2.17-4.3-5.4l2.03.29C10.28 19.8 11.09 21 12 21c1.66 0 3-4.03 3-9q0-1.5-.15-2.85Q13.5 9 12 9l-1.86.06l.29-2.01L12 7c.87 0 1.71.05 2.5.13C14 4.65 13.06 3 12 3c-1.54 0-2.82 3.5-3 8h2.25zM14.25 16L11 19.25V17c-5.61-.25-10-2.39-10-5c0-1.83 2.17-3.43 5.4-4.3l-.29 2.03C4.2 10.28 3 11.09 3 12c0 1.54 3.5 2.82 8 3v-2.25z`},null,-1)]])}var le=a({name:`mdi-rotate-orbit`,render:ce}),ue={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function de(e,t){return n(),i(`svg`,ue,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-1-7h2v3h3v-5h2l-6-5l-6 5h2v5h3z`},null,-1)]])}var fe=a({name:`mdi-shield-home-outline`,render:de}),pe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $(e,t){return n(),i(`svg`,pe,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4m0-7c-1.66 0-3 1.34-3 3s1.34 3 3 3s3-1.34 3-3s-1.34-3-3-3`},null,-1)]])}var me=a({name:`mdi-toggle-switch-outline`,render:$}),he={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ge(e,t){return n(),i(`svg`,he,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M15 13V5a3 3 0 0 0-6 0v8a5 5 0 1 0 6 0m-3-9a1 1 0 0 1 1 1v3h-2V5a1 1 0 0 1 1-1`},null,-1)]])}var _e=a({name:`mdi-thermometer`,render:ge}),ve={[e.Motion]:l,[e.Object]:y,[e.Audio]:S,[e.Face]:u,[e.LicensePlate]:G,[e.Classifier]:P,[e.Clip]:L,[e.ObjectAssist]:Z,[e.Contact]:B,[e.Temperature]:_e,[e.Humidity]:U,[e.Occupancy]:re,[e.Smoke]:p,[e.Leak]:h,[e.Gas]:_,[e.CarbonMonoxide]:f,[e.CarbonDioxide]:j,[e.Heat]:c,[e.Cold]:s,[e.Vibration]:d,[e.Tamper]:g,[e.Problem]:m,[e.Power]:oe,[e.Illuminance]:O,[e.Light]:o,[e.Siren]:v,[e.Switch]:me,[e.Lock]:J,[e.PTZ]:le,[e.SecuritySystem]:fe,[e.Garage]:ee,[e.Doorbell]:t,[e.Battery]:T};function ye(e){return ve[e]??l}export{J as n,ye as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Lr as e}from"./vendor-cameraui-
|
|
1
|
+
import{Lr as e}from"./vendor-cameraui-QXD8jkcj.js";import{D as t,S as n}from"./types-5rE8Tz0_.js";function r(r,a){if(!r.boundCameraId||r.pluginId===`cameraui.virtual`||!a||a._id!==r.boundCameraId||!n.has(r.type)&&(r.pluginId===a.pluginInfo?.id||i(a.assignments?.cameraController,r.pluginId)))return!0;let o=t(r.type);return i(a.assignments?.[o],r.pluginId)?!0:r.type===e.Object&&i(a.assignments?.objectAssist,r.pluginId)}function i(e,t){return Array.isArray(e)?e.some(e=>e.id===t):e?.id===t}export{r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Ar as e,Dr as t,Rr as n,kr as r}from"./api-DK2Bav9D.js";import{K as i,Z as a,dr as o,yr as s}from"./vendor-DGke_6M4.js";async function c({signal:e,cameraId:t}){return(await n.get(`/sensors`,{signal:e,params:t?{camera:t}:void 0})).data.sensors}async function l({data:e}){return(await n.post(`/sensors`,e)).data}async function u({id:e,data:t}){return(await n.patch(`/sensors/${e}`,t)).data}async function d({id:e}){await n.delete(`/sensors/${e}`)}async function f({ids:e}){return(await n.delete(`/sensors`,{data:{ids:e}})).data}async function p({id:e,signal:t}){return(await n.get(`/sensors/${e}/history`,{signal:t})).data.history}var m=class{_queryClient=a();t=e.global.t;toast=r();queryActivator=o([{name:`getSensorsQuery`,enabled:!0},{name:`getCameraSensorsQuery`,enabled:!0}]);getSensorsQuery(){return t({queryKey:[`sensorsList`],queryFn:({signal:e})=>c({signal:e}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getSensorsQuery`&&e.enabled)})}getCameraSensorsQuery(e){return t({queryKey:[`sensorsList`,e],queryFn:({signal:t})=>c({signal:t,cameraId:s(e)}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSensorsQuery`&&e.enabled)})}createVirtualSensorQuery(){return i({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.camera_options.virtual_sensor_created`),life:3e3})}})}patchSensorQuery(){return i({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}deleteSensorQuery(){return i({mutationFn:d,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}bulkDeleteSensorsQuery(){return i({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}};export{p as n,m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Ar as e,Dr as t,Rr as n,kr as r}from"./api-DK2Bav9D.js";import{K as i,Z as a,dr as o,yr as s}from"./vendor-DGke_6M4.js";async function c(){return(await n.get(`/server`)).data}async function l(e){return(await n.patch(`/server`,e)).data}async function u(){return(await n.get(`/server/certificate`)).data}async function d(e){let t=new FormData;return t.append(`cert`,e.cert),t.append(`key`,e.key),e.chain&&t.append(`chain`,e.chain),(await n.post(`/server/certificate`,t)).data}async function f(){return(await n.delete(`/server/certificate`)).data}async function p({serverData:e}){return(await n.post(`/server/update`,e,{timeout:96e4})).data}async function m({signal:e}){return(await n.get(`/server/version`,{signal:e})).data}async function h({version:e,signal:t}){return(await n.get(`/server/changelog`,{params:{version:e},signal:t})).data}async function g(e){let t=e&&e!==`all`?{source:e}:void 0;return(await n.delete(`/server/log`,{params:t})).data}async function _({signal:e,source:t}){let r=t&&t!==`all`?{source:t}:void 0;return(await n.get(`/server/log/download`,{signal:e,params:r})).data}async function v(){return(await n.post(`/server/cert`,{responseType:`arraybuffer`})).data}async function y({signal:e}){return(await n.get(`/server/go2rtc`,{signal:e})).data}async function b(){return(await n.put(`/server/restart`)).data}async function x(){return(await n.put(`/server/restart/go2rtc`)).data}async function S(){return(await n.put(`/server/reset`)).data}var C=class{_queryClient=a();t=e.global.t;toast=r();queryActivator=o([{name:`downloadLogQuery`,enabled:!0},{name:`getGo2RtcInfoQuery`,enabled:!0},{name:`checkVersionQuery`,enabled:!0},{name:`getServerChangelogQuery`,enabled:!0},{name:`getServerInfoQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getServerInfoQuery(){return t({queryKey:[`server`],queryFn:c})}patchSystemInfoQuery(){return i({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`server`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}updateServerQuery(){return i({mutationFn:p,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}downloadLogQuery(e){return t({queryKey:[`logs`,`server`,e??`all`],queryFn:({signal:t})=>_({signal:t,source:s(e)}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}downloadCertQuery(){return i({mutationFn:v})}clearLogQuery(){return i({mutationFn:e=>g(e),onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`logs`,`server`],exact:!1}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}checkVersionQuery(){return t({queryKey:[`version`],queryFn:({signal:e})=>m({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`checkVersionQuery`&&e.enabled)})}getServerChangelogQuery(e){return t({queryKey:[`version`,`changelog`,e],queryFn:({signal:t})=>h({version:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getServerChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getGo2RtcInfoQuery(){return t({queryKey:[`go2rtc`],queryFn:({signal:e})=>y({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getGo2RtcInfoQuery`&&e.enabled)})}restartGo2RtcQuery(){return i({mutationFn:x,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.go2rtc_restarted`),life:3e3})}})}restartServerQuery(){return i({mutationFn:b,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3})},onError:e=>{let t=e?.response?.status;if(t===void 0||t>=500){this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3});return}this.toast.add({severity:`error`,detail:e,life:3e3})}})}resetServerQuery(){return i({mutationFn:S,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_resetted`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{u as a,x as c,d,_ as i,b as l,g as n,h as o,v as r,f as s,C as t,p as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Oi as e,li as t}from"./vendor-cameraui-
|
|
1
|
+
import{Oi as e,li as t}from"./vendor-cameraui-QXD8jkcj.js";import{Sr as n}from"./api-DK2Bav9D.js";import{On as r,Xn as i,dr as a,lr as o}from"./vendor-DGke_6M4.js";import{f as s}from"./vendor-core-CnhnyKDl.js";async function c(e){}function l(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`cui_theme`);return e===`dark`||e===`light`?e:null}function u(){let e={theme:`dark`,autoMode:!0},t=localStorage.getItem(`theme`);if(!t)return e;if(t===`dark`||t===`light`)return{theme:t,autoMode:!1};try{let n=JSON.parse(t);return n?.theme!==`dark`&&n?.theme!==`light`?e:{theme:n.theme,autoMode:n.autoMode!==!1}}catch{return e}}function d(e,t){e.setAttribute(`data-mode`,t),e.classList.toggle(`dark-mode`,t===`dark`),e.classList.toggle(`light-mode`,t===`light`)}var f=s(`theme`,()=>{let s=new Set,f=u(),p=l();p&&(f.theme=p,f.autoMode=!1);let m=e(f.theme,{onBeforeChange(){if(!g.value)return!1},onChanged(e){f.theme=e,localStorage.setItem(`theme`,JSON.stringify(f))}}),h=e(f.autoMode,{onBeforeChange(e){if(e&&!g.value)return!1},onChanged(e){f.autoMode=e,localStorage.setItem(`theme`,JSON.stringify(f))}}),g=a(!0),_=o([`light`,`dark`]);function v(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function y(){return h.value?v():m.value}function b(e){for(let t of s)d(t,e);if(n()){document.documentElement.classList.toggle(`dark-mode`,e===`dark`),document.documentElement.classList.toggle(`light-mode`,e===`light`);return}document.documentElement.style.background=e===`dark`?`#0d0d0d`:`#f8fafc`,d(document.documentElement,e),c(e)}function x(e){return s.add(e),d(e,y()),()=>{s.delete(e)}}function S(e){h.value=!1,m.value=e}function C(){h.value?(h.value=!1,m.value=`light`):m.value===`light`?m.value=`dark`:h.value=!0}let w=t(`(prefers-color-scheme: dark)`);return i(h,e=>{e&&(m.value=v())},{immediate:!0,deep:!0}),i(m,e=>{r(()=>{b(e),g.value=!0}),g.value=!1}),i(w,e=>{h.value&&(m.value=e?`dark`:`light`)}),b(y()),{colors:_,theme:m,autoMode:h,setAppTheme:b,getSystemMode:v,toggleTheme:C,applyHostTheme:S,registerThemeRoot:x}});export{f as n,u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Gr as e,Hr as t,Ur as n,Wr as r}from"./vendor-cameraui-BbGOMenD.js";import{Vt as i}from"./vendor-DGke_6M4.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as ie,x as y,y as ae}from"./vendor-zod-CBbC1rE7.js";function oe(e){return e.mimetype!==void 0}function se(e){return oe(e)?Buffer.byteLength(e._buf):e.size}function ce(e){return oe(e)?e.mimetype:e.type}function b(e,t,n,r){return f().refine(t=>se(t)<=e,n).refine(e=>t.includes(ce(e)),r)}function le(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ue(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var x=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:y().trim().min(1).array().default([]),sensors:y().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=y().trim().min(1,`Detection label is required`),he=y().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:y().trim().min(1).array().optional(),plates:y().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),xe=v({name:y().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),Se=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:xe.default([])}).strict(),Ce=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:s().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(y().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),we=v({from:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:y().trim().min(1,`Timezone is required`)}),Te={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},Ee=v({enabled:d().default(!1),targetLabels:y().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:we.optional()}),C=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),De=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),Oe=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),ke=RegExp(`^(${Oe.join(`|`)})`),Ae=y().refine(e=>{if(!ke.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function w(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var je=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Me=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=v({id:y(),name:y().trim()}),Ne=v({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),Pe=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Fe=y().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),Ie=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:y().trim().max(128).optional()}).strict(),Le=v({mainStreamAnalysis:d().default(!1),decoder:Ie.optional(),workerDecoder:Ie.nullable().transform(e=>e??void 0).optional()}),E=a([p(`camera`),p(`doorbell`)]),Re=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),ze=a([p(`always-on`),p(`activity`),p(`standby`)]),D=v({streamingMode:Pe,streamingSource:De,playbackSource:Re.default(`auto`),activityMode:ze.default(`always-on`),aspectRatio:Fe}),O=v({model:y().trim().optional(),manufacturer:y().trim().optional(),hardware:y().trim().optional(),serialNumber:y().trim().optional(),firmwareVersion:y().trim().optional(),supportUrl:y().trim().optional()}),Be=v({id:y(),name:y().trim()}).strict(),k=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),A=v({_id:y().default(n()).transform(()=>n()),nativeId:y().trim().optional(),pluginInfo:Be.optional(),disabled:d().default(!1),name:y().trim().min(1,`Camera name is required`),room:y().trim().min(1,`Room is required`).default(`Default`),roomId:y().trim().min(1).nullable().default(null),type:E.default(`camera`),isCloud:d().default(!1),snapshotSettings:k.default({mode:`interval`,interval:60,maxAge:60}),info:O.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:je.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w),plugins:T.array().default([]),assignments:Ne.default({}),interfaceSettings:D.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:Se.default(le()),detectionSettings:Ce.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:Ee.default(Te),recordingSettings:x.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:Le.default({mainStreamAnalysis:!1})}).strict();function Ve(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=A.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}A.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ue(t)?{...e,isCloud:!0}:{...e}});var He=v({disabled:d().optional(),type:E.optional(),name:y().trim().min(1,`Camera name is required`).optional(),room:y().trim().min(1,`Room is required`).optional(),roomId:y().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:k.partial().optional(),info:O.partial().optional(),sources:Me.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w).optional(),plugins:T.array().optional(),assignments:Ne.partial().optional(),interfaceSettings:D.partial().optional(),zones:Se.optional(),detectionSettings:Ce.partial().optional(),ptzAutotrack:Ee.partial().optional(),recordingSettings:x.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:Le.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ue(t))return{...e,isCloud:!0}}return e});v({url:y().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:y()}),v({cameraname:y(),sourcename:y()}),v({cameraid:y(),sourcename:y()}),v({cameraname:y(),pluginname:y()}),v({cameraname:y(),scope:y(),pluginname:y()}),v({cameraname:y(),pluginname:y(),sensorId:y()}),v({cameraname:y(),scope:y(),pluginname:y(),sensorId:y()}),v({type:y().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(y().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(y().min(1)).min(1).max(1e3)});var j=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),M=[`de`,`en`],Ue=[`image/jpeg`,`image/jpg`,`image/png`],N=5242880,P=v({index:s(),cameraId:y(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),F=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),We=a([p(`dnd`),p(`view`)]),I=u([`aspect`,`contain`,`fill`,`cover`]),L=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),type:We,cardFit:I.optional()});v({name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),cardFit:I}).partial().optional();var Ge=v({views:L.array()}),Ke=r.filter(e=>e.shortcutable).map(e=>String(e.type)),R=u(Ke),qe=v({_id:y().default(n()).transform(()=>n()),type:p(`camera`),cameraId:y(),points:S}),Je=v({_id:y().default(n()).transform(()=>n()),type:p(`sensor`),sensorId:y(),sensorType:R,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:y(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:y(),sensorType:R,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:y().array().optional()});l(y().trim().min(1),y().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...M]),et=v({ungrouped:d()}),tt=v({main:y().array(),manage:y().array(),system:y().array(),settings:y().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:y().array().optional()}),it=v({language:$e.optional(),camview:Ge,cameras:l(y().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=y().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:y().default(n()).transform(()=>n()),username:y().trim().min(1,`Username is required`),password:z,passwordConfirm:y().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y().trim().min(1,`Username is required`),password:y().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:y().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:y().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:y().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:y().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ae(b(N,Ue,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y()}),v({username:y(),cameraname:y()}),v({username:y(),cameraname:y(),shortcutid:y()}),v({username:y(),viewid:y()}),v({username:y()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=v({id:y().trim().min(1).max(64).optional(),name:y().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:st,baseURL:y().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:y().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:y().trim().min(1).max(64).optional(),model:y().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(ct).max(20,`At most 20 models`).optional(),defaultModelId:y().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:y().trim().min(1).max(200),modelId:y().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(j).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:y().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:y().trim().min(1).max(64).optional(),name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:y().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(y().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:y().min(1).max(128)}),v({text:y().trim().min(1).max(500),language:y().max(10).optional(),timezone:y().max(64).optional()}),v({factId:y().min(1).max(128)}),v({threadId:y().min(1).max(128)}),v({title:y().trim().min(1).max(60)}),v({messages:_(ie()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:y().trim().max(64).default(``),disabledGroups:_(y().max(100)).max(50).default([]),instructions:y().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:y().min(1).max(128)}),v({user:y().trim().min(1).max(100).optional()});var lt=u([`push`,`thread`,`both`]);v({title:y().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:y().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:y().trim().min(9,`Cron expression is required`).max(100),profileId:y().trim().max(64).nullable().optional(),timezone:y().trim().max(64).optional(),language:y().trim().min(2).max(10).optional(),deliver:lt.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:y().min(1).max(128)});var ut=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},dt=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...ut],description:`Settings page`}},required:[`page`]}}],ft=i({id:`ask-user`,payloadSchema:v({toolCallId:y(),question:y(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(y()).optional()}),responseSchema:v({answer:y()})});v({tempToken:y().trim().min(1,`Temporary token is required`),code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({grant_type:y().optional(),username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`),scope:y().optional(),client_id:y().optional(),client_secret:y().optional()}),v({refresh_token:y().min(1,`Refresh token is required`)}),v({id:y()}),v({name:y().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:y()});var pt=v({id:y().trim().min(1),name:y().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),mt=v({id:y().trim().min(1),roomId:y().trim().min(1),name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),ht=v({id:y().trim().min(1),fromRoomId:y().trim().min(1),toRoomId:y().trim().min(1),fromShapeId:y().trim().min(1).nullable().default(null),toShapeId:y().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:y().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),gt=v({cameraId:y().trim().min(1),roomId:y().trim().min(1),note:y().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),_t=v({sensorId:y().trim().min(1),sensorType:y().trim().min(1),roomId:y().trim().min(1),connectionId:y().trim().min(1).nullable().default(null),note:y().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:pt.array().max(20),rooms:mt.array().max(200),connections:ht.array().max(500),cameras:gt.array().max(500),sensors:_t.array().max(500)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)})}),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)}).nullable().optional()}),v({id:y().min(1,`ID is required`)}),v({code:y().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(y().min(1)).min(1).max(1e3)});var vt=/^[\w-]+(\/[\w-]+)*$/,yt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:y().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:y().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:y().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(vt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:y().trim().nullable().optional(),cert:y().trim().nullable().optional(),key:y().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:y().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(vt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),bt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,xt=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),St=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),Ct=[`image/jpeg`,`image/png`],wt=2097152,Tt=[`video/mp4`,`video/quicktime`],Et=10485760,Dt=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ot=2097152,V=()=>b(wt,Ct,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),kt=f().transform(e=>JSON.parse(e.value)),At=v({pluginname:y().trim().refine(e=>bt.test(e),`Not a valid plugin name`),pluginversion:y().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:y(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:b(Ot,Dt,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:kt,config:H}),v({upload:b(Et,Tt,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:y()}),v({scope:y(),pluginname:y()}),St.extend({pluginname:y().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:y().trim().optional()}),v({pluginNames:_(y().trim().min(1)).min(1).max(1e3)}),v({plugins:_(At).min(1).max(1e3)});var jt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:y().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``)}).strict(),v({roomid:y().trim().min(1)});var Mt={securitySystem:`security_system`};function Nt(e){return Mt[e]??e}function Pt(){let e={};for(let t of r)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:{...t.cascadeTrigger,triggerType:Nt(t.assignmentKey)}}:{}};return e}var W=Pt();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Ft(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function It(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function Lt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Rt(e){return W[e].assignmentKey}function zt(){return Object.entries(W).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function Bt(){return Object.entries(W).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ht(e){return!W[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Ut(e,t){return G[e]?.[t]}function Wt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Kt(t,n){let r=W[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(Ft());var qt=new Set(Lt()),Jt=`cameraui.virtual`,Yt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:y().min(1,`Sensor ID is required`)});var Xt=v({cameraId:y().min(1).optional(),type:u(Yt),name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:y().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(y().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:y().trim().min(1,`Property is required`),value:ie()}),v({ids:_(y()).min(1).max(1e4)}),v({version:y().trim().optional().default(`latest`)}).strict();var Zt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:y().trim()}).strict(),l(y(),m()),v({key:y()}).strict(),v({key:y(),payload:m()}).strict();var Qt=v({label:y().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:y().trim().max(16).optional()}).strict();v({id:y().trim().min(1)}),v({id:y().trim().min(1)}),v({cursor:y().trim().min(1).optional()}),v({cameraId:y().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:Qt.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:y().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:y().min(1,`Camera ID is required`),agentId:y().min(1,`Agent ID is required`)}),v({cameraId:y().min(1,`Camera ID is required`)}),v({agentId:y().min(1,`Agent ID is required`)}),v({version:y().min(1).optional()}).optional(),v({code:y().min(1,`Pairing code is required`),agentId:y().min(1,`Agent ID is required`),name:y().min(1,`Worker name is required`)}),v({pluginName:y().min(1,`Plugin name is required`),agentId:y().min(1,`Agent ID is required`)}),v({pluginName:y().min(1,`Plugin name is required`)}),v({name:y().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:y().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function $t(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function an(e){return $t(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Y=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Y(e,t)):Y(e,t)}function on(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=Z(n);if(r!==void 0&&!t(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=Z(n));return t}default:return}}function sn(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=Z(n));return t}function cn(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function ln(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of cn(t)){if(n==null)return;n=n[e]}return n}function un(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=cn(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=ln(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function dn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function fn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function pn(e,t){let n=fn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function mn(e,t){let n=fn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function hn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return m();switch(e.type){case`string`:if(K(e)){if(e.multiple){let t=_(y().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=y().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||hn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var gn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function _n(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(gn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{L as $,Wt as A,Ot as B,W as C,Rt as D,Vt as E,Kt as F,dt as G,xt as H,jt as I,N as J,B as K,Dt as L,It as M,Gt as N,Bt as O,Ht as P,ot as Q,Tt as R,qt as S,Yt as T,yt as U,Et as V,ft as W,at as X,M as Y,z as Z,pn as _,_n as a,ve as at,Zt as b,tn as c,K as d,Oe as et,en as f,an as g,J as h,dn as i,C as it,Ut as j,zt as k,q as l,$t as m,sn as n,Ve as nt,Q as o,He as ot,rn as p,j as q,Z as r,xe as rt,nn as s,w as st,X as t,A as tt,on as u,mn as v,Jt as w,Xt as x,un as y,Ct as z};
|
|
1
|
+
import{Gr as e,Hr as t,Ur as n,Wr as r}from"./vendor-cameraui-QXD8jkcj.js";import{Vt as i}from"./vendor-DGke_6M4.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as ie,x as y,y as ae}from"./vendor-zod-CBbC1rE7.js";function oe(e){return e.mimetype!==void 0}function se(e){return oe(e)?Buffer.byteLength(e._buf):e.size}function ce(e){return oe(e)?e.mimetype:e.type}function b(e,t,n,r){return f().refine(t=>se(t)<=e,n).refine(e=>t.includes(ce(e)),r)}function le(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ue(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var x=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:y().trim().min(1).array().default([]),sensors:y().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=y().trim().min(1,`Detection label is required`),he=y().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:y().trim().min(1).array().optional(),plates:y().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),xe=v({name:y().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),Se=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:xe.default([])}).strict(),Ce=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:s().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(y().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),we=v({from:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:y().trim().min(1,`Timezone is required`)}),Te={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},Ee=v({enabled:d().default(!1),targetLabels:y().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:we.optional()}),C=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),De=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),Oe=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),ke=RegExp(`^(${Oe.join(`|`)})`),Ae=y().refine(e=>{if(!ke.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function w(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var je=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Me=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=v({id:y(),name:y().trim()}),Ne=v({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),Pe=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Fe=y().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),Ie=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:y().trim().max(128).optional()}).strict(),Le=v({mainStreamAnalysis:d().default(!1),decoder:Ie.optional(),workerDecoder:Ie.nullable().transform(e=>e??void 0).optional()}),E=a([p(`camera`),p(`doorbell`)]),Re=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),ze=a([p(`always-on`),p(`activity`),p(`standby`)]),D=v({streamingMode:Pe,streamingSource:De,playbackSource:Re.default(`auto`),activityMode:ze.default(`always-on`),aspectRatio:Fe}),O=v({model:y().trim().optional(),manufacturer:y().trim().optional(),hardware:y().trim().optional(),serialNumber:y().trim().optional(),firmwareVersion:y().trim().optional(),supportUrl:y().trim().optional()}),Be=v({id:y(),name:y().trim()}).strict(),k=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),A=v({_id:y().default(n()).transform(()=>n()),nativeId:y().trim().optional(),pluginInfo:Be.optional(),disabled:d().default(!1),name:y().trim().min(1,`Camera name is required`),room:y().trim().min(1,`Room is required`).default(`Default`),roomId:y().trim().min(1).nullable().default(null),type:E.default(`camera`),isCloud:d().default(!1),snapshotSettings:k.default({mode:`interval`,interval:60,maxAge:60}),info:O.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:je.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w),plugins:T.array().default([]),assignments:Ne.default({}),interfaceSettings:D.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:Se.default(le()),detectionSettings:Ce.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:Ee.default(Te),recordingSettings:x.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:Le.default({mainStreamAnalysis:!1})}).strict();function Ve(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=A.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}A.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ue(t)?{...e,isCloud:!0}:{...e}});var He=v({disabled:d().optional(),type:E.optional(),name:y().trim().min(1,`Camera name is required`).optional(),room:y().trim().min(1,`Room is required`).optional(),roomId:y().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:k.partial().optional(),info:O.partial().optional(),sources:Me.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w).optional(),plugins:T.array().optional(),assignments:Ne.partial().optional(),interfaceSettings:D.partial().optional(),zones:Se.optional(),detectionSettings:Ce.partial().optional(),ptzAutotrack:Ee.partial().optional(),recordingSettings:x.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:Le.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ue(t))return{...e,isCloud:!0}}return e});v({url:y().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:y()}),v({cameraname:y(),sourcename:y()}),v({cameraid:y(),sourcename:y()}),v({cameraname:y(),pluginname:y()}),v({cameraname:y(),scope:y(),pluginname:y()}),v({cameraname:y(),pluginname:y(),sensorId:y()}),v({cameraname:y(),scope:y(),pluginname:y(),sensorId:y()}),v({type:y().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(y().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(y().min(1)).min(1).max(1e3)});var j=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),M=[`de`,`en`],Ue=[`image/jpeg`,`image/jpg`,`image/png`],N=5242880,P=v({index:s(),cameraId:y(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),F=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),We=a([p(`dnd`),p(`view`)]),I=u([`aspect`,`contain`,`fill`,`cover`]),L=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),type:We,cardFit:I.optional()});v({name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),cardFit:I}).partial().optional();var Ge=v({views:L.array()}),Ke=r.filter(e=>e.shortcutable).map(e=>String(e.type)),R=u(Ke),qe=v({_id:y().default(n()).transform(()=>n()),type:p(`camera`),cameraId:y(),points:S}),Je=v({_id:y().default(n()).transform(()=>n()),type:p(`sensor`),sensorId:y(),sensorType:R,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:y(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:y(),sensorType:R,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:y().array().optional()});l(y().trim().min(1),y().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...M]),et=v({ungrouped:d()}),tt=v({main:y().array(),manage:y().array(),system:y().array(),settings:y().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:y().array().optional()}),it=v({language:$e.optional(),camview:Ge,cameras:l(y().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=y().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:y().default(n()).transform(()=>n()),username:y().trim().min(1,`Username is required`),password:z,passwordConfirm:y().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y().trim().min(1,`Username is required`),password:y().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:y().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:y().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:y().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:y().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ae(b(N,Ue,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y()}),v({username:y(),cameraname:y()}),v({username:y(),cameraname:y(),shortcutid:y()}),v({username:y(),viewid:y()}),v({username:y()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=v({id:y().trim().min(1).max(64).optional(),name:y().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:st,baseURL:y().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:y().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:y().trim().min(1).max(64).optional(),model:y().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(ct).max(20,`At most 20 models`).optional(),defaultModelId:y().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:y().trim().min(1).max(200),modelId:y().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(j).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:y().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:y().trim().min(1).max(64).optional(),name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:y().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(y().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:y().min(1).max(128)}),v({text:y().trim().min(1).max(500),language:y().max(10).optional(),timezone:y().max(64).optional()}),v({factId:y().min(1).max(128)}),v({threadId:y().min(1).max(128)}),v({title:y().trim().min(1).max(60)}),v({messages:_(ie()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:y().trim().max(64).default(``),disabledGroups:_(y().max(100)).max(50).default([]),instructions:y().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:y().min(1).max(128)}),v({user:y().trim().min(1).max(100).optional()});var lt=u([`push`,`thread`,`both`]);v({title:y().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:y().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:y().trim().min(9,`Cron expression is required`).max(100),profileId:y().trim().max(64).nullable().optional(),timezone:y().trim().max(64).optional(),language:y().trim().min(2).max(10).optional(),deliver:lt.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:y().min(1).max(128)});var ut=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},dt=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...ut],description:`Settings page`}},required:[`page`]}}],ft=i({id:`ask-user`,payloadSchema:v({toolCallId:y(),question:y(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(y()).optional()}),responseSchema:v({answer:y()})});v({tempToken:y().trim().min(1,`Temporary token is required`),code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({grant_type:y().optional(),username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`),scope:y().optional(),client_id:y().optional(),client_secret:y().optional()}),v({refresh_token:y().min(1,`Refresh token is required`)}),v({id:y()}),v({name:y().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:y()});var pt=v({id:y().trim().min(1),name:y().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),mt=v({id:y().trim().min(1),roomId:y().trim().min(1),name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),ht=v({id:y().trim().min(1),fromRoomId:y().trim().min(1),toRoomId:y().trim().min(1),fromShapeId:y().trim().min(1).nullable().default(null),toShapeId:y().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:y().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),gt=v({cameraId:y().trim().min(1),roomId:y().trim().min(1),note:y().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),_t=v({sensorId:y().trim().min(1),sensorType:y().trim().min(1),roomId:y().trim().min(1),connectionId:y().trim().min(1).nullable().default(null),note:y().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:pt.array().max(20),rooms:mt.array().max(200),connections:ht.array().max(500),cameras:gt.array().max(500),sensors:_t.array().max(500)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)})}),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)}).nullable().optional()}),v({id:y().min(1,`ID is required`)}),v({code:y().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(y().min(1)).min(1).max(1e3)});var vt=/^[\w-]+(\/[\w-]+)*$/,yt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:y().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:y().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:y().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(vt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:y().trim().nullable().optional(),cert:y().trim().nullable().optional(),key:y().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:y().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(vt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),bt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,xt=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),St=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),Ct=[`image/jpeg`,`image/png`],wt=2097152,Tt=[`video/mp4`,`video/quicktime`],Et=10485760,Dt=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ot=2097152,V=()=>b(wt,Ct,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),kt=f().transform(e=>JSON.parse(e.value)),At=v({pluginname:y().trim().refine(e=>bt.test(e),`Not a valid plugin name`),pluginversion:y().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:y(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:b(Ot,Dt,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:kt,config:H}),v({upload:b(Et,Tt,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:y()}),v({scope:y(),pluginname:y()}),St.extend({pluginname:y().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:y().trim().optional()}),v({pluginNames:_(y().trim().min(1)).min(1).max(1e3)}),v({plugins:_(At).min(1).max(1e3)});var jt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:y().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``)}).strict(),v({roomid:y().trim().min(1)});var Mt={securitySystem:`security_system`};function Nt(e){return Mt[e]??e}function Pt(){let e={};for(let t of r)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:{...t.cascadeTrigger,triggerType:Nt(t.assignmentKey)}}:{}};return e}var W=Pt();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Ft(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function It(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function Lt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Rt(e){return W[e].assignmentKey}function zt(){return Object.entries(W).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function Bt(){return Object.entries(W).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ht(e){return!W[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Ut(e,t){return G[e]?.[t]}function Wt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Kt(t,n){let r=W[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(Ft());var qt=new Set(Lt()),Jt=`cameraui.virtual`,Yt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:y().min(1,`Sensor ID is required`)});var Xt=v({cameraId:y().min(1).optional(),type:u(Yt),name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:y().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(y().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:y().trim().min(1,`Property is required`),value:ie()}),v({ids:_(y()).min(1).max(1e4)}),v({version:y().trim().optional().default(`latest`)}).strict();var Zt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:y().trim()}).strict(),l(y(),m()),v({key:y()}).strict(),v({key:y(),payload:m()}).strict();var Qt=v({label:y().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:y().trim().max(16).optional()}).strict();v({id:y().trim().min(1)}),v({id:y().trim().min(1)}),v({cursor:y().trim().min(1).optional()}),v({cameraId:y().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:Qt.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:y().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:y().min(1,`Camera ID is required`),agentId:y().min(1,`Agent ID is required`)}),v({cameraId:y().min(1,`Camera ID is required`)}),v({agentId:y().min(1,`Agent ID is required`)}),v({version:y().min(1).optional()}).optional(),v({code:y().min(1,`Pairing code is required`),agentId:y().min(1,`Agent ID is required`),name:y().min(1,`Worker name is required`)}),v({pluginName:y().min(1,`Plugin name is required`),agentId:y().min(1,`Agent ID is required`)}),v({pluginName:y().min(1,`Plugin name is required`)}),v({name:y().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:y().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function $t(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function an(e){return $t(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Y=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Y(e,t)):Y(e,t)}function on(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=Z(n);if(r!==void 0&&!t(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=Z(n));return t}default:return}}function sn(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=Z(n));return t}function cn(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function ln(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of cn(t)){if(n==null)return;n=n[e]}return n}function un(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=cn(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=ln(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function dn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function fn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function pn(e,t){let n=fn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function mn(e,t){let n=fn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function hn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return m();switch(e.type){case`string`:if(K(e)){if(e.multiple){let t=_(y().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=y().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||hn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var gn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function _n(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(gn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{L as $,Wt as A,Ot as B,W as C,Rt as D,Vt as E,Kt as F,dt as G,xt as H,jt as I,N as J,B as K,Dt as L,It as M,Gt as N,Bt as O,Ht as P,ot as Q,Tt as R,qt as S,Yt as T,yt as U,Et as V,ft as W,at as X,M as Y,z as Z,pn as _,_n as a,ve as at,Zt as b,tn as c,K as d,Oe as et,en as f,an as g,J as h,dn as i,C as it,Ut as j,zt as k,q as l,$t as m,sn as n,Ve as nt,Q as o,He as ot,rn as p,j as q,Z as r,xe as rt,nn as s,w as st,X as t,A as tt,on as u,mn as v,Jt as w,Xt as x,un as y,Ct as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Mn as e}from"./api-DK2Bav9D.js";import{Cr as t,Hn as n,In as r,cn as i,dn as a,ln as o,sn as s,sr as c,un as l,vn as u,yr as d}from"./vendor-DGke_6M4.js";import{r as f}from"./alert-outline-D7zaSJH_.js";import{f as p}from"./eventIcons-cdzqQc0W.js";import{t as m}from"./bell-ring-CyCFPUL_.js";import{n as h,t as g}from"./webhook-oVbP79Yk.js";import{i as _,n as v,r as y}from"./CuiPluginTrustBadge-sVWdvHcM.js";var b={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function x(e,t){return r(),a(`svg`,b,[...t[0]||=[i(`path`,{fill:`currentColor`,d:`M15 13h1.5v2.82l2.44 1.41l-.75 1.3L15 16.69zm4-5H5v11h4.67c-.43-.91-.67-1.93-.67-3a7 7 0 0 1 7-7c1.07 0 2.09.24 3 .67zM5 21a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2v6.1c1.24 1.26 2 2.99 2 4.9a7 7 0 0 1-7 7c-1.91 0-3.64-.76-4.9-2zm11-9.85A4.85 4.85 0 0 0 11.15 16c0 2.68 2.17 4.85 4.85 4.85A4.85 4.85 0 0 0 20.85 16c0-2.68-2.17-4.85-4.85-4.85`},null,-1)]])}var S=c({name:`mdi-calendar-clock`,render:x}),C={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function w(e,t){return r(),a(`svg`,C,[...t[0]||=[i(`path`,{fill:`currentColor`,d:`m20.84 2.18l-3.93.78l2.74 3.54l1.97-.4zm-6.87 1.36L12 3.93l2.75 3.53l1.96-.39zm-4.9.96l-1.97.41l2.75 3.53l1.96-.39zm-4.91 1l-.98.19a2 2 0 0 0-1.57 2.35L2 10l4.9-.97zM2 10v10a2 2 0 0 0 2 2h16c1.11 0 2-.89 2-2V10z`},null,-1)]])}var T=c({name:`mdi-movie-open`,render:w}),E={notification:{icon:m,labelKey:`components.automation_store.category_notification`},recording:{icon:y,labelKey:`components.automation_store.category_recording`},presence:{icon:h,labelKey:`components.automation_store.category_presence`},detection:{icon:p,labelKey:`components.automation_store.category_detection`},schedule:{icon:S,labelKey:`components.automation_store.category_schedule`},webhook:{icon:g,labelKey:`components.automation_store.category_webhook`},mqtt:{icon:f,labelKey:`components.automation_store.category_mqtt`},scene:{icon:T,labelKey:`components.automation_store.category_scene`},utility:{icon:v,labelKey:`components.automation_store.category_utility`},other:{icon:_,labelKey:`components.automation_store.category_other`}},D=[`notification`,`recording`,`presence`,`detection`,`schedule`,`webhook`,`mqtt`,`scene`,`utility`,`other`];function O(e){return e&&e in E?E[e]:E.other}var k={key:0,class:`cui-category-chip`},A={class:`cui-category-chip-label`},j=e(u({__name:`CuiAutomationCategoryChip`,props:{category:{}},setup(e){let c=e,u=s(()=>O(c.category));return(s,c)=>e.category?(r(),a(`span`,k,[(r(),o(n(d(u).icon),{class:`cui-category-chip-icon`})),i(`span`,A,t(s.$t(d(u).labelKey)),1)])):l(``,!0)}}),[[`__scopeId`,`data-v-ea2e312f`]]),M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return r(),a(`svg`,M,[...t[0]||=[i(`path`,{fill:`currentColor`,d:`M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.62L12 2L9.19 8.62L2 9.24l5.45 4.73L5.82 21z`},null,-1)]])}var P=c({name:`mdi-star`,render:N}),F={camera:`components.automation_store.input_camera`,plugin:`components.automation_store.input_plugin`,sensor:`components.automation_store.input_sensor`,"notification-targets":`components.automation_store.input_notification_targets`,"system-target":`components.automation_store.input_system_target`,text:`components.automation_store.input_text`};function I(e,t){return e?.length?e.map(e=>t(F[e.type],{count:e.count??1})):[]}export{D as a,E as i,P as n,j as r,I as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Tr as e}from"./vendor-cameraui-
|
|
1
|
+
import{Tr as e}from"./vendor-cameraui-QXD8jkcj.js";import{i as t}from"./eventLabels-BsPoPWS9.js";var n={trigger:`#22c55e`,condition:`#f59e0b`,action:`#3b82f6`,utility:`#8b5cf6`},r={mode:`drag`},i=[{key:`detectionSettings.snooze`,labelKey:`components.automation_nodes.camera_prop_snooze`,inputType:`boolean`,defaultValue:`false`},{key:`disabled`,labelKey:`components.automation_nodes.camera_prop_disabled`,inputType:`boolean`,defaultValue:`false`},{key:`recordingSettings.enabled`,labelKey:`components.automation_nodes.camera_prop_recording`,inputType:`boolean`,defaultValue:`true`},{key:`recordingSettings.mode`,labelKey:`components.automation_nodes.camera_prop_recording_mode`,inputType:`select`,options:[{labelKey:`components.automation_nodes.option_continuous`,value:`continuous`},{labelKey:`components.automation_nodes.option_event`,value:`event`},{labelKey:`components.automation_nodes.option_adhoc`,value:`adhoc`}],defaultValue:`continuous`},{key:`recordingSettings.preBuffer`,labelKey:`components.automation_nodes.camera_prop_recording_prebuffer`,inputType:`number`,min:0,max:60,step:1,defaultValue:`10`},{key:`recordingSettings.sources`,labelKey:`components.automation_nodes.camera_prop_recording_sources`,inputType:`multiselect`,options:[{labelKey:`components.automation_nodes.option_high`,value:`high`},{labelKey:`components.automation_nodes.option_mid`,value:`mid`},{labelKey:`components.automation_nodes.option_low`,value:`low`}],defaultValue:`["high","mid","low"]`},{key:`ptzAutotrack.enabled`,labelKey:`components.automation_nodes.camera_prop_ptz_autotrack`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.returnToHome`,labelKey:`components.automation_nodes.camera_prop_ptz_return_home`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.targetLabels`,labelKey:`components.automation_nodes.camera_prop_ptz_target_labels`,inputType:`multiselect`,options:e.map(e=>({labelKey:t(e),value:e})),defaultValue:`["person"]`},{key:`ptzAutotrack.minConfidence`,labelKey:`components.automation_nodes.camera_prop_ptz_min_confidence`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`},...e.map(e=>({key:`detectionSettings.object.confidences.${e}`,labelKey:`components.automation_nodes.camera_prop_object_confidence_${e}`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`})),{key:`detectionSettings.motion.timeout`,labelKey:`components.automation_nodes.camera_prop_motion_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.motion.resolution`,labelKey:`components.automation_nodes.camera_prop_motion_resolution`,inputType:`select`,options:[{labelKey:`components.automation_nodes.option_low`,value:`low`},{labelKey:`components.automation_nodes.option_medium`,value:`medium`},{labelKey:`components.automation_nodes.option_high`,value:`high`}],defaultValue:`low`},{key:`detectionSettings.audio.timeout`,labelKey:`components.automation_nodes.camera_prop_audio_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.audio.minDecibels`,labelKey:`components.automation_nodes.camera_prop_audio_min_decibels`,inputType:`number`,min:-100,max:0,defaultValue:`-40`},{key:`detectionSettings.audio.confidence`,labelKey:`components.automation_nodes.camera_prop_audio_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.7`},{key:`detectionSettings.object.suppressStatic`,labelKey:`components.automation_nodes.camera_prop_suppress_static`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.object.timeout`,labelKey:`components.automation_nodes.camera_prop_object_timeout`,inputType:`number`,min:10,defaultValue:`15`},{key:`detectionSettings.face.confidence`,labelKey:`components.automation_nodes.camera_prop_face_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.5`},{key:`detectionSettings.face.matchThreshold`,labelKey:`components.automation_nodes.camera_prop_face_match_threshold`,inputType:`number`,min:.3,max:.95,step:.05,defaultValue:`0.55`},{key:`detectionSettings.licensePlate.confidence`,labelKey:`components.automation_nodes.camera_prop_plate_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.3`},{key:`detectionSettings.licensePlate.ocrConfidence`,labelKey:`components.automation_nodes.camera_prop_plate_ocr_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.9`},{key:`detectionSettings.licensePlate.minLength`,labelKey:`components.automation_nodes.camera_prop_plate_min_length`,inputType:`number`,min:1,max:10,step:1,defaultValue:`4`},{key:`detectionSettings.sensor.timeout`,labelKey:`components.automation_nodes.camera_prop_sensor_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.cascadeDetection`,labelKey:`components.automation_nodes.camera_prop_cascade_detection`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.cascadeTimeout`,labelKey:`components.automation_nodes.camera_prop_cascade_timeout`,inputType:`number`,min:1,max:300,defaultValue:`10`},{key:`frameWorkerSettings.mainStreamAnalysis`,labelKey:`components.automation_nodes.camera_prop_main_stream_analysis`,inputType:`boolean`,defaultValue:`false`},{key:`snapshotSettings.mode`,labelKey:`components.automation_nodes.camera_prop_snapshot_mode`,inputType:`select`,options:[{labelKey:`components.automation_nodes.option_snapshot_interval`,value:`interval`},{labelKey:`components.automation_nodes.option_snapshot_on_view`,value:`onView`},{labelKey:`components.automation_nodes.option_snapshot_on_demand`,value:`onDemand`}],defaultValue:`interval`},{key:`snapshotSettings.interval`,labelKey:`components.automation_nodes.camera_prop_snapshot_interval`,inputType:`number`,min:10,max:3600,defaultValue:`60`},{key:`snapshotSettings.maxAge`,labelKey:`components.automation_nodes.camera_prop_snapshot_max_age`,inputType:`number`,min:10,max:3600,defaultValue:`60`}];export{n,r,i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$n as e,Gt as t,Kn as n,Mn as r,Mt as i,Pn as a,Ut as o,Vr as s,a as c,g as l,hi as u,i as d,l as f,m as p,ni as m,o as h,p as g,s as ee,u as te,z as _}from"./vendor-cameraui-QXD8jkcj.js";import{$ as ne,J as re,Mn as v,On as ie,Q as ae,Sn as oe,X as se,Y as ce,Z as le,bn as ue,ct as de,gn as fe,hn as pe,it as me,jn as he,kr as ge,q as _e,rt as ve,s as ye,wn as be,xn as xe}from"./api-DK2Bav9D.js";import{$n as Se,Bn as Ce,Cn as we,Cr as y,Dn as b,Hn as Te,In as x,Jn as S,On as Ee,Pn as De,Rn as C,Tn as Oe,Xn as ke,Zn as Ae,br as w,cn as T,dn as E,dr as D,en as je,er as Me,gn as O,ln as k,nn as Ne,or as A,rn as j,sn as M,sr as Pe,un as N,vn as P,yr as F,zn as I}from"./vendor-DGke_6M4.js";import{a as Fe}from"./intercomService-BnA-FQ0Q.js";import{i as Ie}from"./alert-outline-D7zaSJH_.js";import{t as Le}from"./eventIcons-cdzqQc0W.js";import{u as Re}from"./vendor-core-CnhnyKDl.js";import{M as ze,P as L}from"./vendor-primevue-CCUqY55W.js";var R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Be(e,t){return x(),E(`svg`,R,[...t[0]||=[T(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h3.5m4.92.61a2.1 2.1 0 0 1 2.97 2.97L18 22h-3v-3z`},null,-1)]])}var Ve=Pe({name:`tabler-user-edit`,render:Be}),z={class:`flex flex-col gap-4 w-full`},B={key:0,class:`flex justify-center`},V=[`src`,`alt`],H={class:`flex flex-col gap-2 w-full`},He={class:`cui-label`},U={class:`flex flex-col gap-2 w-full`},W={for:`reassignTarget`,class:`cui-label`},Ue=P({__name:`FaceReassign`,props:{cropUrl:{},oldName:{}},setup(e,{expose:t}){let n=e,{t:r}=s(),{plugin:a}=i(`@camera.ui/camera-ui-nvr`),o=D(null),c=D([]),l=D(!0),u=M(()=>n.oldName===`unknown`?r(`views.recordings.reassign_unknown_person`):n.oldName),d=M(()=>{let e=c.value.filter(e=>e!==n.oldName).map(e=>({label:e,value:e}));return n.oldName!==`unknown`&&e.push({label:r(`views.recordings.reassign_unknown`),value:``}),e});return De(async()=>{try{let e=await a.value?.listKnownFaces?.();c.value=(e??[]).map(e=>e.name)}catch{}finally{l.value=!1}}),t({onConfirm:async()=>o.value}),(e,t)=>{let r=_,i=ze;return x(),E(`div`,z,[n.cropUrl?(x(),E(`div`,B,[T(`img`,{src:n.cropUrl,alt:F(u),class:`w-36 h-36 rounded-xl object-cover bg-neutral-900`},null,8,V)])):N(``,!0),T(`div`,H,[T(`label`,He,y(e.$t(`views.recordings.reassign_current`)),1),O(r,{"model-value":F(u),class:`w-full`,fluid:``,disabled:``},null,8,[`model-value`])]),T(`div`,U,[T(`label`,W,y(e.$t(`views.recordings.reassign_new`)),1),O(i,{id:`reassignTarget`,modelValue:F(o),"onUpdate:modelValue":t[0]||=e=>A(o)?o.value=e:null,options:F(d),"option-label":`label`,"option-value":`value`,class:`w-full`,fluid:``,loading:F(l),disabled:F(l),placeholder:e.$t(`views.faces.enter_or_pick_name`)},null,8,[`modelValue`,`options`,`loading`,`disabled`,`placeholder`])])])}}}),We={key:0,class:`card-skeleton absolute inset-0 rounded-xl`},Ge={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},Ke={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},qe={class:`flex items-center gap-1.5`},Je={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},Ye={key:0,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},Xe=[`title`],Ze=[`title`,`disabled`],Qe={class:`text-[10px] text-white/70`},$e=[`aria-label`],et=[`aria-label`],tt={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},nt={class:`flex items-center gap-1 min-w-0`},rt=[`title`],it={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},at=[`onClick`],ot=[`src`,`alt`],st={key:0,class:`text-[10px] text-white/60 font-medium`},ct={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},lt={key:7,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},ut={class:`text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap`,style:{"font-variant-numeric":`tabular-nums`}},dt=24,ft=30,pt=22,mt=28,ht=8,gt=8,G=v(P({__name:`RecordingCard`,props:{event:{},cameraName:{},camera:{},loadThumbnails:{type:Function},semanticScore:{},segIndex:{},hideSegmentBadge:{type:Boolean},selectionMode:{type:Boolean},selected:{type:Boolean},siblingActive:{type:Boolean}},emits:[`scrollToEvent`,`select`,`openTrace`],setup(e,{emit:t}){let n=e,r=t,a=Fe(),o=ge(),{t:m}=s(),_=Re(),v=l(`@camera.ui/camera-ui-nvr`),{plugin:Se}=i(`@camera.ui/camera-ui-nvr`),Ce=de(),{icons:b}=Le(),Oe=v.getCachedThumbnails(n.event.id),Ae=Oe?c(Oe,n.event,`card`,n.segIndex).url?`loaded`:`empty`:`loading`,A=we(te,void 0),Pe=S(`rootRef`),P=S(`previewCanvasRef`),I=S(`footerRef`),ze=S(`cardMenuRef`),L=D(!1),R=D(!1),Be=le(Pe,()=>Gt(),()=>$()),z=D(!1),B=D(Oe??null),V=D(Ae),H=D(!1),He=D(0),U=D(null),W=D(!1),G=D(0),_t=M(()=>oe(void 0,`admin`)),K=M(()=>U.value??n.event.favorite??!1),vt=M(()=>{if(n.semanticScore==null)return;let e=Math.max(0,Math.min(1,n.semanticScore));return{pct:e,label:`${(e*100).toFixed(0)}%`,color:e>=.5?`bg-green-500/80`:e>=.25?`bg-yellow-500/80`:`bg-red-400/80`}}),q=M(()=>B.value?c(B.value,n.event,`card`,n.segIndex):null),J=M(()=>{let e=n.segIndex??q.value?.segIndex;return e===void 0?void 0:n.event.segments?.[e]}),yt=M(()=>q.value?.url),bt=M(()=>q.value?.label),xt=M(()=>q.value?.type??n.event.types[0]??`motion`),Y=M(()=>{if(n.hideSegmentBadge)return;let e=n.event.segments?.length??0;return n.segIndex!==void 0&&e>1?`${n.segIndex+1}/${e}`:void 0}),X=M(()=>{let e=B.value,t=q.value?.url;if(!e||!t)return[];let r=[{url:t,label:q.value?.label,type:xt.value,crop:!1}];for(let t of g(e,n.segIndex)){if(r.some(e=>e.url===t.url))continue;let e=t.key.split(`:`)[0];r.push({url:t.url,label:t.label,type:t.type,crop:!0,faceSeg:/^\d+$/.test(e)?Number(e):-1})}if(n.segIndex===void 0)for(let t of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let i=f(e.cards?.[t]??e.strips?.[t]);if(!i||r.some(e=>e.url===i))continue;let a=ne(n.event,t);r.push({url:i,label:a,type:a,crop:!1})}return r.length>1?r:[]}),St=M(()=>X.value.length>1),Ct=M(()=>X.value.length?Math.min(He.value,X.value.length-1):0),Z=M(()=>St.value?X.value[Ct.value]:void 0),wt=M(()=>!!Z.value?.crop),Tt=M(()=>Z.value?.url??yt.value),Et=M(()=>Z.value?.label??bt.value),Q=M(()=>{let e=J.value;return(e?p(n.event,e):[...new Set(n.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),Dt=M(()=>n.cameraName??n.event.cameraId),Ot=M(()=>X.value.map(e=>({url:e.url,type:e.type}))),kt=M(()=>Q.value.slice(0,At.value.icons)),At=M(()=>{let e=G.value;if(!e)return{icons:2,tiles:2};let t=e-ht;n.selectionMode&&(t-=mt);let r=Ot.value.length>0?52:0,i=Vt(Q.value.length,Math.max(0,t-r),dt),a=Q.value.length>0?Math.max(1,i):0,o=a*dt+(a<Q.value.length?pt:0);return{icons:a,tiles:Vt(Ot.value.length,Math.max(0,t-o),ft)}}),jt=M(()=>Q.value.slice(At.value.icons)),Mt=M(()=>Ot.value.slice(0,At.value.tiles)),Nt=M(()=>Ot.value.length-At.value.tiles),Pt=M(()=>{let e=new Date(J.value?.firstSeen??n.event.thumbnailAt??n.event.startTime),t=new Date,r=e.toDateString()===t.toDateString(),i=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${e.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`}),Ft=M(()=>!!(Se.value&&n.event.endTime&&n.event.hasRecording!==!1)),It=M(()=>A?R.value?m(`views.recordings.no_preview`):z.value?A.status.value===`unavailable`?m(`views.recordings.no_preview`):A.status.value===`playing`&&A.previewTimeMs.value?Wt(A.previewTimeMs.value):``:``:``),Lt=M(()=>{let e=Z.value;if(e&&e.type===`face`)return e.label?e.label:`unknown`}),Rt=M(()=>{let e=[];return _t.value&&Lt.value!==void 0&&e.push({key:`reassign`,label:m(`views.recordings.reassign_face`),icon:Ve,loading:W.value,onClick:()=>Zt()}),n.camera&&e.push({key:`trace`,label:m(`views.recordings.open_trace`),icon:ve,onClick:()=>r(`openTrace`,J.value?.firstSeen)}),e.push({key:`ask`,label:m(`views.recordings.ask_assistant`),icon:Ie,onClick:()=>Bt()}),Ft.value&&e.push({key:`download`,label:m(`views.recordings.download`),icon:me,loading:H.value,onClick:()=>en()}),e});function zt(){fe(ze.value?.hide)}function Bt(){let e=m(`views.recordings.ask_assistant_prompt`,{camera:n.cameraName??n.camera?.name??n.event.cameraId,time:new Date(n.event.startTime).toLocaleString(),id:n.event.id});_.push({path:`/assistant`,query:{prompt:e}})}function Vt(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-pt)/n))}function Ht(e){let t=X.value.length;t&&($(),He.value=(Ct.value+e+t)%t)}function Ut(e,t){St.value&&(t.stopPropagation(),$(),He.value=e)}function $(){R.value=!1,A&&z.value&&(z.value=!1,A.onHoverEnd())}function Wt(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function Gt(){if(!A||Ct.value>0)return;let e=P.value;if(!e)return;let t=d(n.event);if(n.event.hasRecording===!1||!t){R.value=!0;return}z.value=!0,A.onHoverStart(e,n.event.cameraId,n.event.id,n.event.startTime,t,n.camera?.zones?.privacy,ee(n.event))}function Kt(){Be.blocksMouseEnter()||Gt()}function qt(){R.value=!1,A&&(z.value=!1,A.onHoverEnd())}async function Jt(e=2){let t=await n.loadThumbnails(n.event.id,n.event.startTime);if(t){B.value=t;let e=c(t,n.event,`card`);V.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Jt(e-1);else V.value=n.event.state===`active`?`loading`:`empty`}function Yt(){if(!Be.consumesClick()){if(n.selectionMode){r(`select`);return}r(`scrollToEvent`,J.value?.firstSeen??ae(n.event))}}async function Xt(e){$(),L.value||(L.value=!0,await Ee()),ze.value?.toggleMenu(e)}function Zt(){let e=Lt.value;e!==void 0&&Ce.openComponentDialog(Ue,{data:{title:m(`views.recordings.reassign_face`),confirmText:m(`components.form.button.save`),contentProps:{cropUrl:Z.value?.url,oldName:e}},onConfirm:e=>Qt(e)})}async function Qt(e){let t=Lt.value;if(t===void 0||W.value)return;let r=Z.value?.faceSeg??-1,i=Se.value;if(i?.reassignEventFace){W.value=!0;try{await i.reassignEventFace(n.event.id,r,t,e)>0&&h(n.event.id),o.add({severity:`success`,detail:m(`views.recordings.reassign_done`),life:3e3})}catch(e){o.add({severity:`error`,detail:ye(e),life:5e3})}finally{W.value=!1}}}async function $t(){let e=!K.value;U.value=e;try{await v.setEventFavorite(n.event.id,e)}catch(e){U.value=null,o.add({severity:`error`,detail:ye(e),life:5e3})}}async function en(){if(H.value)return;let e=Se.value;if(e?.nvrExport&&n.event.endTime){H.value=!0;try{let t=await e.nvrExport(n.event.cameraId,n.event.startTime*1e3,n.event.endTime*1e3);await ie({url:t.url,filename:t.filename})}catch(e){a.error(`Download failed:`,e),o.add({severity:`error`,summary:m(`views.recordings.download_failed`),detail:ye(e),life:5e3})}finally{H.value=!1}}}return ke(()=>v.storeVersion.value,()=>{let e=v.getCachedThumbnails(n.event.id);if(!e){B.value&&Jt();return}B.value=e,c(e,n.event,`card`).url&&(V.value=`loaded`)}),u(I,e=>{let t=e[0]?.contentRect.width??0,n=Math.round(t/gt)*gt;n!==G.value&&(G.value=n)}),De(()=>{Ae===`loading`&&Jt()}),(t,n)=>{let r=he,i=_e,a=re,o=ce,s=se,c=ue,l=xe,u=be;return x(),E(`div`,{ref_key:`rootRef`,ref:Pe,class:`recording-card relative group cursor-pointer`,onClickCapture:zt,onClick:Yt,onMouseenter:Kt,onMouseleave:qt},[T(`div`,{class:w([`bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200`,{"ring-2 ring-inset ring-primary/70":e.siblingActive}]),style:{"aspect-ratio":`1/1`}},[F(V)===`loading`?(x(),E(`div`,We)):F(Tt)?(x(),k(r,{key:1,src:F(Tt),alt:F(Dt),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:F(wt)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])):(x(),E(`div`,Ge,[(x(),k(Te(F(b)[F(xt)]??F(b).motion),{class:`w-10 h-10 text-white/20`}))])),F(A)?Me((x(),E(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:P,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[je,F(z)]]):N(``,!0),n[2]||=T(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),T(`div`,Ke,[T(`div`,qe,[T(`p`,Je,y(F(Dt)),1),F(Y)?(x(),E(`span`,Ye,y(F(Y)),1)):N(``,!0),F(vt)?(x(),E(`span`,{key:1,class:w([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,F(vt).color])},y(F(vt).label),3)):N(``,!0),F(_t)&&!e.selectionMode?(x(),E(`button`,{key:2,title:F(K)?t.$t(`views.recordings.unfavorite`):t.$t(`views.recordings.favorite`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,onClick:Ne($t,[`stop`]),onMouseenter:$},[F(K)?(x(),k(i,{key:0,class:`w-3 h-3 text-yellow-400`})):(x(),k(a,{key:1,class:`w-3 h-3 text-white`}))],40,Xe)):N(``,!0),F(Rt).length>0&&!e.selectionMode?(x(),E(`button`,{key:3,title:t.$t(`views.recordings.more_actions`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,disabled:F(H)||F(W),onClick:Ne(Xt,[`stop`]),onMouseenter:$},[F(H)||F(W)?(x(),k(o,{key:0,class:`w-3 h-3 text-white`})):(x(),k(s,{key:1,class:`w-3 h-3 text-white`}))],40,Ze)):N(``,!0)]),T(`p`,Qe,y(F(Pt)),1)]),F(X).length>1?(x(),E(j,{key:4},[T(`button`,{type:`button`,class:`card-icon-button carousel-nav absolute left-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:n[0]||=Ne(e=>Ht(-1),[`stop`]),onMouseenter:$},[O(c,{class:`w-5 h-5 text-white`})],40,$e),T(`button`,{type:`button`,class:`card-icon-button carousel-nav absolute right-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:n[1]||=Ne(e=>Ht(1),[`stop`]),onMouseenter:$},[O(l,{class:`w-5 h-5 text-white`})],40,et)],64)):N(``,!0),F(Et)?(x(),E(`div`,{key:5,class:w([`absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200`,F(It)?`bottom-16`:`bottom-10`])},[T(`span`,tt,y(F(Et)),1)],2)):N(``,!0),T(`div`,{ref_key:`footerRef`,ref:I,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[T(`div`,nt,[e.selectionMode?(x(),E(`div`,{key:0,class:w([`w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0`,e.selected?`bg-primary border-primary`:`bg-black/40 border-white/80`])},[e.selected?(x(),k(u,{key:0,class:`w-4 h-4 text-white`})):N(``,!0)],2)):N(``,!0),(x(!0),E(j,null,C(F(kt),e=>(x(),E(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(x(),k(Te(F(b)[e]??F(b).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),F(jt).length>0?(x(),E(`span`,{key:1,title:F(jt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+y(F(jt).length),9,rt)):N(``,!0)]),F(Mt).length>0||F(Nt)>0?(x(),E(`div`,it,[(x(!0),E(j,null,C(F(Mt),(e,t)=>(x(),E(`div`,{key:t,class:w([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===F(Ct)?`border-primary/80`:`border-white/20`]),onClick:e=>Ut(t,e)},[T(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,ot)],10,at))),128)),F(Nt)>0?(x(),E(`span`,st,`+`+y(F(Nt)),1)):N(``,!0)])):N(``,!0)],512),F(A)&&F(z)&&F(A).isLoading.value?(x(),E(`div`,ct,[O(o,{class:`w-7 h-7 text-white`})])):N(``,!0),F(It)?(x(),E(`div`,lt,[T(`span`,ut,y(F(It)),1)])):N(``,!0)],2),F(L)?(x(),k(pe,{key:0,ref_key:`cardMenuRef`,ref:ze,items:F(Rt),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])):N(``,!0)],544)}}}),[[`__scopeId`,`data-v-22b538a5`]]),_t={name:`VirtualScroller`,components:{SpinnerIcon:o},extends:{name:`BaseVirtualScroller`,extends:t,provide(){return{$pcVirtualScroller:this,$parentInstance:this}},props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:`vertical`},rtl:{type:Boolean,default:!1},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},itemKey:{type:[String,Function],default:null}},style:L,beforeMount(){L.loadCSS({nonce:this.$primevueConfig?.csp?.nonce})}},inheritAttrs:!1,emits:[`update:numToleratedItems`,`scroll`,`scroll-index-change`,`lazy-load`],data(){let e=this.isBoth();return{first:e?{rows:0,cols:0}:0,last:e?{rows:0,cols:0}:0,page:e?{rows:0,cols:0}:0,numItemsInViewport:e?{rows:0,cols:0}:0,lastScrollPos:e?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{},observedWidth:0,observedHeight:0}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,computed:{containerClass(){return[`p-virtualscroller`,this.class,{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal(),"p-virtualscroller-rtl":this.rtl&&this.isHorizontal()}]},contentClass(){return[`p-virtualscroller-content`,{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return[`p-virtualscroller-loader`,{"p-virtualscroller-loader-mask":!this.$slots.loader}]},loadedItems(){return this.items&&!this.d_loading?this.isBoth()?this.items.slice(this.appendOnly?0:this.first.rows,this.last.rows).map(e=>this.columns?e:e.slice(this.appendOnly?0:this.first.cols,this.last.cols)):this.isHorizontal()&&this.columns?this.items:this.items.slice(this.appendOnly?0:this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){let e=this.isBoth(),t=this.isHorizontal();if(e||t)return this.d_loading&&this.loaderDisabled?e?this.loaderArr[0]:this.loaderArr:this.columns.slice(e?this.first.cols:this.first,e?this.last.cols:this.last)}return this.columns}},watch:{numToleratedItems(e){this.d_numToleratedItems=e},loading(e,t){this.lazy&&e!==t&&e!==this.d_loading&&(this.d_loading=e)},items(e,t){(!t||t.length!==(e||[]).length)&&this.scheduleInit()},itemSize(){this.scheduleInit()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.scheduleInit()},scrollWidth(){this.scheduleInit()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.unbindSizeObserver(),this.initialized=!1},methods:{resolveItemKey(e,t){let n=this.itemKey;return typeof n==`function`?n(e,t)??t:typeof n==`string`&&typeof e==`object`&&e?e[n]??t:t},viewInit(){n(this.element)&&(this.setContentEl(this.content),this.bindSizeObserver(),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=r(this.element),this.defaultHeight=a(this.element),this.defaultContentWidth=r(this.content),this.defaultContentHeight=a(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},scheduleInit(){this._initScheduled||(this._initScheduled=!0,Promise.resolve().then(()=>{this._initScheduled=!1,this.init(),this.calculateAutoSize()}))},isVertical(){return this.orientation===`vertical`},isHorizontal(){return this.orientation===`horizontal`},isBoth(){return this.orientation===`both`},scrollTo(e){this.element&&this.element.scrollTo(e)},scrollToIndex(e,t=`auto`){let n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r;if(n?e.every(e=>e>-1):e>-1){let a=this.first,{scrollTop:o=0,scrollLeft:s=0}=this.element,{numToleratedItems:c}=this.calculateNumItems(),l=this.getContentPosition(),u=this.itemSize,d=(e=0,t)=>e<=t?0:e,f=(e,t,n)=>e*t+n,p=(e=0,n=0)=>{i&&(e=this.element.scrollWidth-this.element.clientWidth-e),this.scrollTo({left:e,top:n,behavior:t})},m=n?{rows:0,cols:0}:0,h=!1,g=!1;n?(m={rows:d(e[0],c[0]),cols:d(e[1],c[1])},p(f(m.cols,u[1],l.left),f(m.rows,u[0],l.top)),g=this.lastScrollPos.top!==o||this.lastScrollPos.left!==s,h=m.rows!==a.rows||m.cols!==a.cols):(m=d(e,c),r?p(f(m,u,l.left),o):p(s,f(m,u,l.top)),g=this.lastScrollPos!==(r?s:o),h=m!==a),this.isRangeChanged=h,g&&(this.first=m)}},scrollInView(e,t,n=`auto`){if(t){let r=this.isBoth(),i=this.isHorizontal();if(r?e.every(e=>e>-1):e>-1){let{first:a,viewport:o}=this.getRenderedRange(),s=(e=0,t=0)=>this.scrollTo({left:e,top:t,behavior:n}),c=t===`to-start`,l=t===`to-end`;if(c){if(r)o.first.rows-a.rows>e[0]?s(o.first.cols*this.itemSize[1],(o.first.rows-1)*this.itemSize[0]):o.first.cols-a.cols>e[1]&&s((o.first.cols-1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.first-a>e){let e=(o.first-1)*this.itemSize;i?s(e,0):s(0,e)}}else if(l){if(r)o.last.rows-a.rows<=e[0]+1?s(o.first.cols*this.itemSize[1],(o.first.rows+1)*this.itemSize[0]):o.last.cols-a.cols<=e[1]+1&&s((o.first.cols+1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.last-a<=e+1){let e=(o.first+1)*this.itemSize;i?s(e,0):s(0,e)}}}}else this.scrollToIndex(e,n)},getRenderedRange(){let e=(e,t)=>Math.floor(e/(t||e)),t=this.first,n=0;if(this.element){let r=this.isBoth(),i=this.isHorizontal(),{scrollTop:a,scrollLeft:o}=this.element;r?(t={rows:e(a,this.itemSize[0]),cols:e(o,this.itemSize[1])},n={rows:t.rows+this.numItemsInViewport.rows,cols:t.cols+this.numItemsInViewport.cols}):(t=e(i?o:a,this.itemSize),n=t+this.numItemsInViewport)}return{first:this.first,last:this.last,viewport:{first:t,last:n}}},calculateNumItems(){let e=this.isBoth(),t=this.isHorizontal(),n=this.itemSize,r=this.getContentPosition(),i=this.observedWidth||(this.element?this.element.offsetWidth:0),a=this.observedHeight||(this.element?this.element.offsetHeight:0),o=i?i-r.left:0,s=a?a-r.top:0,c=(e,t)=>Math.ceil(e/(t||e)),l=e=>Math.ceil(e/2),u=e?{rows:c(s,n[0]),cols:c(o,n[1])}:c(t?o:s,n);return{numItemsInViewport:u,numToleratedItems:this.d_numToleratedItems||(e?[l(u.rows),l(u.cols)]:l(u))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let e=this.isBoth(),t=this.isHorizontal(),n=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[i,o]=[r(this.element),a(this.element)];(e||t)&&(this.element.style.width=i<this.defaultWidth?i+`px`:this.scrollWidth||this.defaultWidth+`px`),(e||n)&&(this.element.style.height=o<this.defaultHeight?o+`px`:this.scrollHeight||this.defaultHeight+`px`),this.content.style.minHeight=this.content.style.minWidth=``,this.content.style.position=``,this.element.style.contain=``}})},getLast(e=0,t){return this.items?Math.min(t?(this.columns||this.items[0])?.length||0:this.items?.length||0,e):0},getContentPosition(){if(this.content){if(this.cachedContentPosition&&this.cachedContentElement===this.content)return this.cachedContentPosition;let e=getComputedStyle(this.content),t=parseFloat(e.paddingLeft)+Math.max(parseFloat(e.left)||0,0),n=parseFloat(e.paddingRight)+Math.max(parseFloat(e.right)||0,0),r=parseFloat(e.paddingTop)+Math.max(parseFloat(e.top)||0,0),i=parseFloat(e.paddingBottom)+Math.max(parseFloat(e.bottom)||0,0);return this.cachedContentElement=this.content,this.cachedContentPosition={left:t,right:n,top:r,bottom:i,x:t+n,y:r+i},this.cachedContentPosition}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){let e=this.isBoth(),t=this.isHorizontal(),n=this.element.parentElement,r=this.scrollWidth||`${this.element.offsetWidth||n.offsetWidth}px`,i=this.scrollHeight||`${this.element.offsetHeight||n.offsetHeight}px`,a=(e,t)=>this.element.style[e]=t;e||t?(a(`height`,i),a(`width`,r)):a(`height`,i)}},setSpacerSize(){let e=this.items;if(e){let t=this.isBoth(),n=this.isHorizontal(),r=this.getContentPosition(),i=(e,t,n,r=0)=>this.spacerStyle={...this.spacerStyle,[`${e}`]:(t||[]).length*n+r+`px`};t?(i(`height`,e,this.itemSize[0],r.y),i(`width`,this.columns||e[1],this.itemSize[1],r.x)):n?i(`width`,this.columns||e,this.itemSize,r.x):i(`height`,e,this.itemSize,r.y)}},setContentPosition(e){if(this.content&&!this.appendOnly){let t=this.isBoth(),n=this.isHorizontal(),r=this.rtl&&n,i=e?e.first:this.first,a=(e,t)=>e*t,o=(e=0,t=0)=>{let n=r?-e:e;this.contentStyle={...this.contentStyle,transform:`translate3d(${n}px, ${t}px, 0)`}};if(t){let e=i.rows,t=i.cols,n=this.itemSize;o(a(t,n[1]),a(e,n[0]))}else{let e=i,t=this.itemSize,r=a(e,t);n?o(r,0):o(0,r)}}},onScrollPositionChange(e){let t=e.target,n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r,a=this.getContentPosition(),o=(e,t)=>e?e>t?e-t:e:0,s=(e,t)=>Math.floor(e/(t||e)),c=o(t.scrollTop,a.top),l=o(t.scrollLeft,a.left);i&&l<0&&(l=Math.abs(l));let u=n?{rows:0,cols:0}:0,d=this.last,f=!1,p=this.lastScrollPos;if(n){let e=this.lastScrollPos.top<=c,n=this.lastScrollPos.left<=l;if(!this.appendOnly||this.appendOnly&&(e||n)){let r={rows:s(c,this.itemSize[0]),cols:s(l,this.itemSize[1])},i={rows:this.calculateTriggerIndex(r.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateTriggerIndex(r.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n)};u={rows:this.calculateFirst(r.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateFirst(r.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n,!0)},d={rows:this.calculateLast(r.rows,u.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:this.calculateLast(r.cols,u.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},f=u.rows!==this.first.rows||d.rows!==this.last.rows||u.cols!==this.first.cols||d.cols!==this.last.cols||this.isRangeChanged,p={top:c,left:t.scrollLeft}}}else{let e=r?l:c,t=this.lastScrollPos<=e;if(!this.appendOnly||this.appendOnly&&t){let n=s(e,this.itemSize),r=this.calculateTriggerIndex(n,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t);u=this.calculateFirst(n,r,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t),d=this.calculateLast(n,u,this.last,this.numItemsInViewport,this.d_numToleratedItems),f=u!==this.first||d!==this.last||this.isRangeChanged,p=e}}return{first:u,last:d,isRangeChanged:f,scrollPos:p}},calculateTriggerIndex(e,t,n,r,i,a){return e<=i?i:a?n-r-i:t+i-1},calculateFirst(e,t,n,r,i,a,o,s=!1){if(e<=a)return 0;let c=Math.max(0,o?e<t?n:e-a:e>t?n:e-2*a),l=this.getLast(c,s);return c>l?l-i:c},calculateLast(e,t,n,r,i,a=!1){let o=t+r+2*i;return e>=i&&(o+=i+1),this.getLast(o,a)},onScrollChange(e){let{first:t,last:n,isRangeChanged:r,scrollPos:i}=this.onScrollPositionChange(e);if(r){let e={first:t,last:n};if(this.setContentPosition(e),this.first=t,this.last=n,this.lastScrollPos=i,this.$emit(`scroll-index-change`,e),this.lazy&&this.isPageChanged(t)){let e={first:this.step?Math.min(this.getPageByFirst(t)*this.step,(this.items?.length||0)-this.step):t,last:Math.min(this.step?(this.getPageByFirst(t)+1)*this.step:n,this.items?.length-1||0)};(this.lazyLoadState.first!==e.first||this.lazyLoadState.last!==e.last)&&this.$emit(`lazy-load`,e),this.lazyLoadState=e}}},onScroll(e){if(this.$emit(`scroll`,e),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.isPageChanged()){if(!this.d_loading&&this.showLoader){let{isRangeChanged:t}=this.onScrollPositionChange(e);(t||this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout(()=>{this.onScrollChange(e),this.d_loading&&this.showLoader&&(!this.lazy||this.loading===void 0)&&(this.d_loading=!1,this.page=this.getPageByFirst())},this.delay)}}else this.onScrollChange(e)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{if(n(this.element)){let e=this.isBoth(),t=this.isVertical(),n=this.isHorizontal(),[i,o]=[r(this.element),a(this.element)],[s,c]=[i!==this.defaultWidth,o!==this.defaultHeight];(e?s||c:n?s:t&&c)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=i,this.defaultHeight=o,this.defaultContentWidth=r(this.content),this.defaultContentHeight=a(this.content),this.init())}},this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener(`resize`,this.resizeListener),window.addEventListener(`orientationchange`,this.resizeListener))},bindSizeObserver(){this.sizeObserver||!this.element||typeof ResizeObserver>`u`||(this.sizeObserver=new ResizeObserver(e=>{let t=e[0]?.borderBoxSize?.[0];this.observedWidth=t?t.inlineSize:e[0]?.contentRect.width??0,this.observedHeight=t?t.blockSize:e[0]?.contentRect.height??0}),this.sizeObserver.observe(this.element))},unbindSizeObserver(){this.sizeObserver&&=(this.sizeObserver.disconnect(),null)},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(t){this.content=t||this.content||e(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},K=[`tabindex`];function vt(e,t,n,r,i,a){let o=Ce(`SpinnerIcon`);return e.disabled?(x(),E(j,{key:1},[I(e.$slots,`default`),I(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(x(),E(`div`,b({key:0,ref:a.elementRef,class:a.containerClass,tabindex:e.tabindex,style:e.style},e.ptmi(`root`),{onScroll:t[0]||=(...e)=>a.onScroll&&a.onScroll(...e)}),[I(e.$slots,`content`,{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:i.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:e.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:i.spacerStyle,contentStyle:i.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},()=>[T(`div`,b({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(x(!0),E(j,null,C(a.loadedItems,(t,n)=>I(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(x(),E(`div`,b({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):N(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(x(),E(`div`,b({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(x(!0),E(j,{key:0},C(i.loaderArr,(t,n)=>I(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):N(``,!0),I(e.$slots,`loadingicon`,{},()=>[O(o,b({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):N(``,!0)],16,K))}var q=v(_t,[[`render`,vt]]),J={aspectRatio:1,gap:8,hasMore:!1,loadMore:void 0,itemKey:void 0},yt={class:`recordings-row`},bt={key:1,class:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 z-10 rounded-full bg-black/60 p-1.5`},xt=v(P({__name:`CuiRecordingsGrid`,props:Oe({items:{},minItemWidth:{},aspectRatio:{},gap:{},hasMore:{type:Boolean},loadMore:{type:Function},itemKey:{type:Function}},J),setup(e,{expose:t}){let n=e,r=S(`containerRef`),{width:i,height:a}=m(r),o=D(0),s=D(!1),c=null,l=!1,u=M(()=>a.value>0?`${a.value}px`:void 0),d=M(()=>{let e=i.value;return e?Math.max(1,Math.floor((e+n.gap)/(n.minItemWidth+n.gap))):0}),f=M(()=>{let e=i.value,t=d.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),p=M(()=>f.value?Math.floor(f.value/n.aspectRatio):0),h=M(()=>p.value?p.value+n.gap:0),g=M(()=>{let e=d.value;if(!e)return[];let t=[];for(let r=0;r<n.items.length;r+=e)t.push(n.items.slice(r,r+e));return t});function ee(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function te(e){let t=e;if(t&&t.length!==0)return ee(t[0])}async function _(){if(s.value||!n.hasMore||!n.loadMore||c!==null&&n.items.length===c)return;s.value=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{s.value=!1,c=n.items.length===e?e:null}}function ne(e){let t=e.target;t&&(o.value=t.scrollTop,t.scrollTop+t.clientHeight>=t.scrollHeight-h.value*3&&_())}function re(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}return Ae(()=>{let e=r.value;e&&f.value&&(e.style.setProperty(`--cell-w`,`${f.value}px`),e.style.setProperty(`--cell-h`,`${p.value}px`),e.style.setProperty(`--cell-gap`,`${n.gap}px`))}),ke([()=>n.items.length,a,h,()=>n.hasMore],()=>{l||(l=!0,Ee(()=>{l=!1,n.hasMore&&h.value&&a.value&&g.value.length*h.value<a.value+h.value&&_()}))},{flush:`post`}),t({scrollToTop:re,scrollY:o}),(e,t)=>{let n=q,i=ce;return x(),E(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root relative`},[F(g).length>0&&F(f)>0?(x(),k(n,{key:0,items:F(g),"item-size":F(h),"scroll-height":F(u),"num-tolerated-items":F(2),"item-key":te,orientation:`vertical`,class:`recordings-scroll`,onScroll:ne},{item:Se(({item:t})=>[T(`div`,yt,[(x(!0),E(j,null,C(t,t=>(x(),E(`div`,{key:ee(t),class:`recordings-cell`},[I(e.$slots,`item`,{item:t},void 0,!0)]))),128))])]),_:3},8,[`items`,`item-size`,`scroll-height`,`num-tolerated-items`])):N(``,!0),F(s)?(x(),E(`div`,bt,[O(i,{width:`18px`,height:`18px`,class:`text-white`})])):N(``,!0)],512)}}}),[[`__scopeId`,`data-v-1270305c`]]);function Y(e){if(e.episode)return e.episode.endTime;if(e.segIndex!==void 0){let t=e.event.segments?.[e.segIndex];if(t)return t.firstSeen}return e.event.thumbnailAt??e.event.startTime}function X(e){let t=[];for(let n of e){let e=n.segments??[];if(e.length<=1){t.push({event:n,key:n.id});continue}e.forEach((e,r)=>{e&&t.push({event:n,key:`${n.id}:seg:${r}`,segIndex:r})})}return t.sort((e,t)=>Y(t)-Y(e)),t}export{G as i,Y as n,xt as r,X as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.card-icon-button[data-v-22b538a5]{cursor:pointer;background:#0009;border-radius:9999px;justify-content:center;align-items:center;padding:0;display:flex}.card-icon-button[data-v-22b538a5]:hover{background:#000c}.card-icon-button[data-v-22b538a5]:disabled{cursor:default}.carousel-nav[data-v-22b538a5]{background:#0006}.carousel-nav[data-v-22b538a5]:hover{background:#0009}.card-skeleton[data-v-22b538a5]{background:var(--p-skeleton-background,#ffffff0f);animation:1.4s ease-in-out infinite card-skeleton-pulse-22b538a5}@keyframes card-skeleton-pulse-22b538a5{50%{opacity:.55}}.recording-card[data-v-22b538a5]{contain:layout;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media (hover:hover) and (pointer:fine){.carousel-nav[data-v-22b538a5]{opacity:0}.recording-card:hover .carousel-nav[data-v-22b538a5],.recording-card:focus-within .carousel-nav[data-v-22b538a5]{opacity:1}}.recordings-grid-root[data-v-1270305c]{width:100%;height:100%;min-height:0}.recordings-scroll[data-v-1270305c]{overscroll-behavior:contain;scrollbar-width:none;scroll-snap-type:y proximity;width:100%;height:100%;overflow:hidden auto}.recordings-scroll[data-v-1270305c]::-webkit-scrollbar{display:none}.recordings-row[data-v-1270305c]{height:calc(var(--cell-h) + var(--cell-gap));align-items:stretch;gap:var(--cell-gap);scroll-snap-align:start;display:flex}.recordings-cell[data-v-1270305c]{width:var(--cell-w);height:var(--cell-h)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dr as e,
|
|
1
|
+
import{Dr as e,Rr as t,kr as n}from"./api-DK2Bav9D.js";import{K as r,Z as i,cr as a,dr as o,mr as s,sn as c}from"./vendor-DGke_6M4.js";import{f as l}from"./vendor-core-CnhnyKDl.js";import{l as u,u as d}from"./server-DUFhf2c_.js";import{n as f}from"./useServerRestart-Cz9eVHUE.js";import{t as p}from"./useUpdatesSocket-DnH9sON5.js";import{u as m}from"./plugins-eIUrXNeM.js";async function h({signal:e}={}){return(await t.get(`/updates/status`,{signal:e})).data}async function g(){return(await t.post(`/updates/run`)).data}async function _(){await t.post(`/updates/cancel`)}async function v(){await t.post(`/updates/check`,void 0,{timeout:6e4})}async function y(){return(await t.get(`/workers/config`)).data}async function b(e){return(await t.patch(`/workers/config`,e)).data}async function x(){return(await t.post(`/workers/pairings`)).data}async function S(e){await t.delete(`/workers/${e}`)}async function C(e){await t.post(`/workers/${e}/restart`)}async function w({agentId:e,version:n}){await t.post(`/workers/${e}/update`,n?{version:n}:{})}async function T({agentId:e,name:n}){await t.patch(`/workers/${e}`,{name:n})}async function E({cameraId:e,agentId:n}){return(await t.post(`/workers/assign`,{cameraId:e,agentId:n})).data}async function D({cameraId:e}){return(await t.post(`/workers/unassign`,{cameraId:e})).data}async function O({pluginName:e,agentId:n}){return(await t.post(`/workers/assign-plugin`,{pluginName:e,agentId:n})).data}async function k({pluginName:e}){return(await t.post(`/workers/unassign-plugin`,{pluginName:e})).data}var A=class{_queryClient=i();toast=n();getConfigQuery(){return e({queryKey:[`workersConfig`],queryFn:()=>y(),retry:!1})}patchConfigQuery(){return r({mutationFn:b,onSuccess:()=>this._queryClient.invalidateQueries({queryKey:[`workersConfig`]}),onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}createPairingQuery(){return r({mutationFn:x})}removeWorkerQuery(){return r({mutationFn:S,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}assignCameraQuery(){return r({mutationFn:E,onMutate:({cameraId:e,agentId:t})=>this.patchCameraWorker(e,t),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}unassignCameraQuery(){return r({mutationFn:D,onMutate:({cameraId:e})=>this.patchCameraWorker(e,void 0),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}restartWorkerQuery(){return r({mutationFn:C})}updateWorkerQuery(){return r({mutationFn:w,onError:e=>{this.toast.add({severity:`error`,detail:e,life:5e3})}})}renameWorkerQuery(){return r({mutationFn:T,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}assignPluginQuery(){return r({mutationFn:O,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}unassignPluginQuery(){return r({mutationFn:k,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}patchCameraWorker(e,t){let n=[];for(let[r,i]of this._queryClient.getQueriesData({queryKey:[`camerasList`]}))i?.result&&(n.push([r,i]),this._queryClient.setQueryData(r,{...i,result:i.result.map(n=>n._id===e?{...n,workerAgentId:t}:n)}));return{rollback:()=>{for(let[e,t]of n)this._queryClient.setQueryData(e,t)}}}},j=3e4,M=l(`updates`,()=>{let e=n(),t=p(),{beginServerRestart:r}=f(),i=s(null),l=o(!1),y=o(Date.now()),b=o(!1),x,S=null,C=c(()=>{let e=new Map;for(let t of i.value?.run?.active?i.value.run.items:i.value?.lastRun?.items??[])e.set(t.id,t);for(let t of i.value?.manual??[])e.set(t.id,t);return e}),T=c(()=>{let e=i.value?.pending;if(!e)return[];let t=[];t.push(W({id:`server`,kind:`server`,name:`camera.ui`,installedVersion:e.server.installedVersion,latestVersion:e.server.latestVersion??e.server.installedVersion,status:e.server.updateAvailable?e.server.blockedReason?`blocked`:`pending`:`uptodate`,blockedReason:e.server.updateAvailable?e.server.blockedReason:void 0}));for(let n of e.plugins)t.push(W({id:`plugin:${n.pluginName}`,kind:`plugin`,name:n.displayName||n.pluginName,packageName:n.pluginName,installedVersion:n.installedVersion,latestVersion:n.latestVersion??n.installedVersion,status:n.updateAvailable?`pending`:`uptodate`}));for(let n of e.workers)t.push(W({id:`worker:${n.agentId}`,kind:`worker`,name:n.name,installedVersion:n.installedVersion,latestVersion:e.targetServerVersion,status:n.updateAvailable?n.updatable?`pending`:`blocked`:`uptodate`,blockedReason:n.updateAvailable&&!n.updatable?n.blockedReason:void 0}));return t}),E=c(()=>i.value?.run?.active===!0),D=c(()=>i.value?.run?.cancelRequested===!0),O=c(()=>i.value?.lastRun?.finishedAt??null),k=c(()=>i.value?.run?.active?i.value.run.items.length:0),A=c(()=>i.value?.run?.active?i.value.run.items.filter(e=>e.status===`success`||e.status===`error`).length:0),M=c(()=>T.value.filter(e=>e.status===`pending`||e.status===`error`)),N=c(()=>M.value.length),P=c(()=>T.value.filter(e=>e.status===`error`)),F=c(()=>T.value.filter(e=>e.status===`updating`)),I=c(()=>F.value[0]),L=c(()=>T.value.find(e=>e.status===`restarting`)),R=c(()=>T.value.some(e=>e.kind===`server`&&(e.status===`updating`||e.status===`restarting`))),z=c(()=>F.value.some(e=>e.kind!==`server`)),B=c(()=>E.value||R.value||z.value),V=c(()=>i.value!==null&&N.value===0&&!B.value),H=c(()=>T.value.some(e=>e.kind===`server`&&(e.status===`pending`||e.status===`error`))),U=c(()=>i.value?.pending.targetServerVersion);function W(e){let t=C.value.get(e.id);return!t||t.status===`success`&&e.status===`uptodate`||t.status===`success`&&e.status===`pending`&&e.latestVersion!==t.targetVersion?e:{...e,status:t.status,error:t.error,latestVersion:t.targetVersion??e.latestVersion}}async function G(){return S||(S=h().then(e=>{i.value=e,y.value=Date.now()}).catch(()=>{}).finally(()=>{S=null}),S)}function K(){b.value||(b.value=!0,t.connect(),t.onStatus(()=>{G()}),G(),x??=setInterval(()=>G(),j))}async function q(){if(!B.value){l.value=!0;try{await v().catch(()=>{}),await G()}finally{l.value=!1}}}async function J(t){let n=T.value.find(e=>e.id===t);if(n&&!E.value&&(n.status===`pending`||n.status===`error`))try{n.kind===`plugin`?await m({pluginData:{pluginname:n.packageName??n.name,pluginversion:n.latestVersion??`latest`}}):n.kind===`worker`?await w({agentId:t.slice(7),version:U.value}):(await d({serverData:{version:n.latestVersion??`latest`}}),r(),await u())}catch(t){e.add({severity:`error`,detail:t?.response?.data?.message??t?.message,life:5e3})}finally{G()}}async function Y(){if(!(B.value||N.value===0))try{await g()}catch(t){e.add({severity:`error`,detail:t?.response?.data?.message??t?.message,life:5e3})}finally{G()}}async function X(){if(E.value)try{await _()}catch{}finally{G()}}function Z(e){return T.value.filter(t=>t.kind===e)}return a(()=>{x&&clearInterval(x)}),{status:i,items:T,runActive:E,cancelRequested:D,runFinishedAt:O,isChecking:l,checkedAt:y,runTotal:k,runDone:A,pendingItems:M,pendingCount:N,failedItems:P,updatingItems:F,updatingItem:I,restartingItem:L,serverBusy:R,targetsBusy:z,busy:B,allUpToDate:V,serverPending:H,targetServerVersion:U,connect:K,refresh:q,updateItem:J,updateAll:Y,cancelRun:X,itemsOf:Z}});export{A as n,M as t};
|