@camera.ui/server 2.2.8 → 2.3.0
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/LICENSE.md +8 -1
- package/dist/interface/assets/{404-BYV0u5qE.js → 404-C0X5UBF4.js} +1 -1
- package/dist/interface/assets/About-Ctp_u5qK.js +1 -0
- package/dist/interface/assets/Assistant-Bj2bAUHD.css +1 -0
- package/dist/interface/assets/Assistant-CDrBV_mg.js +1 -0
- package/dist/interface/assets/Automation-Dp6V80Iz.js +3 -0
- package/dist/interface/assets/{Automation-BSicfOGF.css → Automation-R5o9sXYY.css} +1 -1
- package/dist/interface/assets/{AutomationImport-Iu-K82Os.js → AutomationImport-DKgg7atE.js} +2 -2
- package/dist/interface/assets/AutomationStore-CU-m5VC8.js +2 -0
- package/dist/interface/assets/{AutomationStoreDetail-BbvLRJ5u.js → AutomationStoreDetail-CiyIs8Iu.js} +2 -2
- package/dist/interface/assets/Automations-Dljh-sWu.js +2 -0
- package/dist/interface/assets/Camera-0p0P_mbp.css +1 -0
- package/dist/interface/assets/Camera-Bvovab-8.js +2 -0
- package/dist/interface/assets/{CameraConsole-JBD3ZmJ6.js → CameraConsole-D_Fv-MAi.js} +1 -1
- package/dist/interface/assets/{Cameras-R5mJGMK9.js → Cameras-Cq7Gw-fk.js} +2 -2
- package/dist/interface/assets/{Camview-DH6_8CxH.css → Camview-Bs2VvmUS.css} +1 -1
- package/dist/interface/assets/Camview-CP6PA20C.js +1 -0
- package/dist/interface/assets/{CertificateUpload-B9S4EOQs.js → CertificateUpload-DjzNMFc3.js} +1 -1
- package/dist/interface/assets/{Config-CbFl5Wcp.js → Config-Dl2TlyFe.js} +1 -1
- package/dist/interface/assets/{ConfigActionAssistant-DIOh6-np.js → ConfigActionAssistant-DCkJ_Iqq.js} +1 -1
- package/dist/interface/assets/ConfigActionCameraControl-2pzl59gR.js +1 -0
- package/dist/interface/assets/{ConfigActionDelay-B9i4YZjy.js → ConfigActionDelay-BAp1dr0N.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-DFtxAa3U.js → ConfigActionHttp-_kqgEuun.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-CuTH4Nw2.js → ConfigActionImageInput-BgtACnCm.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-B9SfWP-G.js → ConfigActionMqtt-z7UzccW5.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-BGMIByJT.js → ConfigActionNotification-bhbb5AqU.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-Cz72szMd.js → ConfigActionNotificationControl-BbvX8MFu.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-BG6DoIRe.js → ConfigActionOutput-DdgSg3FU.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-B5oRSE9n.js → ConfigActionPlugin-DGjZd1L0.js} +1 -1
- package/dist/interface/assets/ConfigActionSensor-DmImWFAo.js +1 -0
- package/dist/interface/assets/{ConfigActionSnapshot-Di-uxMrg.js → ConfigActionSnapshot-hVHSfdtS.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-BBpUti5A.js → ConfigActionVariable-BIpruwsx.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-DjOKPXQw.js → ConfigConditionIfElse-DRSpsoR4.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BzvvZvD0.js → ConfigConditionSensorState-C2SNARH7.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-DQvdfUxR.js → ConfigConditionSwitch-4SbQcU7N.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-BqOElX5C.js → ConfigConditionTime-ESX3shbg.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-BT-0LhSH.js → ConfigSensorValueInput-CTUdAA-R.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-1OkudUah.js → ConfigTriggerDetection-BRr6ixxQ.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-HGatk3C5.js → ConfigTriggerGeofence-D-xRMGrT.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-DpRr_vVq.js → ConfigTriggerManual-aXD6k1qa.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-C_MId3BY.js → ConfigTriggerMqtt-pjHW4yOL.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-BmwDqd6N.js → ConfigTriggerSchedule-CYOt57qg.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-Rgx8q4g8.js → ConfigTriggerSensor-BwJ_cAqd.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-4VsHPmbn.js → ConfigTriggerSystem-DBXIrjzU.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-Bs7zEfY0.js → ConfigTriggerWebhook-CccBmMCb.js} +1 -1
- package/dist/interface/assets/Console-DWAaz1C6.js +1 -0
- package/dist/interface/assets/CuiAssistantConversation-B3xEiNNt.js +5 -0
- package/dist/interface/assets/{CuiAssistantConversation-BmBhwrNh.css → CuiAssistantConversation-C5ca1lgX.css} +1 -1
- package/dist/interface/assets/CuiAutomationRunsDialog-CfylVPLI.js +1 -0
- package/dist/interface/assets/CuiBottomSheet-ACN23VLS.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-Dd3uOtnC.js → CuiBottomSheet-DEVNeDqa.js} +1 -1
- package/dist/interface/assets/CuiCameraPipCard-rR_FW9zq.js +1 -0
- package/dist/interface/assets/CuiCameraRecordings-CnorhPhf.js +1 -0
- package/dist/interface/assets/CuiCameraShares-BxUgedC_.js +1 -0
- package/dist/interface/assets/{CuiCameraTable-C7WLZ2pA.js → CuiCameraTable-C3GB4Q2y.js} +2 -2
- package/dist/interface/assets/CuiCameraTable-MHfnZSyK.js +1 -0
- package/dist/interface/assets/CuiChartTable-TAzZgetO.js +1 -0
- package/dist/interface/assets/{CuiConsole-CkZML0iY.js → CuiConsole-Cf5lOCE1.js} +2 -2
- package/dist/interface/assets/{CuiDataTable-BFIhx1D3.js → CuiDataTable-DfjXa0C1.js} +1 -1
- package/dist/interface/assets/CuiLightControl-ChK-SvJp.js +1 -0
- package/dist/interface/assets/CuiList-C4fxd9lD.js +1 -0
- package/dist/interface/assets/CuiPluginCard-DMpANIQj.js +2 -0
- package/dist/interface/assets/CuiPluginCategoryChip-BKxJMid7.js +1 -0
- package/dist/interface/assets/{CuiPluginOAuthButton-BQZkTcgo.js → CuiPluginOAuthButton-DnQ838JJ.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-DbqdfdaL.js → CuiPluginTrustBadge-DyYDUWV6.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-2WsWJQFi.js → CuiQRCode-S9fPi0_l.js} +1 -1
- package/dist/interface/assets/CuiSchema-DScmDQsh.js +1 -0
- package/dist/interface/assets/CuiTopNavbarItem-CT10aAlO.js +1 -0
- package/dist/interface/assets/Faces-Coy-tUVM.js +1 -0
- package/dist/interface/assets/FirstSteps-CrMJC049.js +1 -0
- package/dist/interface/assets/Floorplan-Bj_mVrxp.js +1 -0
- package/dist/interface/assets/{Floorplan-Ci63Zd8W.css → Floorplan-CT5TrMSD.css} +1 -1
- package/dist/interface/assets/Instances-B_mpKAng.js +1 -0
- package/dist/interface/assets/{Logs-DMehPk0t.js → Logs-fY1dpQk4.js} +2 -2
- package/dist/interface/assets/Menu-Bgi-NLdg.js +1 -0
- package/dist/interface/assets/Metrics-DnMeIrkf.css +1 -0
- package/dist/interface/assets/Metrics-k9KACiwh.js +12 -0
- package/dist/interface/assets/OAuthDeviceFlow-xTh83xmc.js +1 -0
- package/dist/interface/assets/Plugin-BB7x7UHw.css +1 -0
- package/dist/interface/assets/Plugin-VWq7sONB.js +1 -0
- package/dist/interface/assets/{PluginConsole-D1BRQCO9.js → PluginConsole-LnnDOVBL.js} +2 -2
- package/dist/interface/assets/PluginDetail-CKD9sbDx.js +2 -0
- package/dist/interface/assets/{PluginSchema-B9VsBHOU.js → PluginSchema-BnB0_6Sk.js} +1 -1
- package/dist/interface/assets/PluginSearch-BoBZLLbr.js +1 -0
- package/dist/interface/assets/PluginSearch-kGhweU1J.js +2 -0
- package/dist/interface/assets/{PluginUpdateProgress-uj0XPV-_.js → PluginUpdateProgress-DMx0QlgE.js} +1 -1
- package/dist/interface/assets/{Plugins-CPx9Hszm.js → Plugins-Ekmr6aVa.js} +1 -1
- package/dist/interface/assets/RecentEventsFilter-StLJNuks.js +1 -0
- package/dist/interface/assets/Recordings-8PqxJOI3.css +1 -0
- package/dist/interface/assets/Recordings-Bvkuk_TV.js +1 -0
- package/dist/interface/assets/SensorEdit-CAf9Nb01.js +1 -0
- package/dist/interface/assets/SensorHistory-il8bDErX.js +1 -0
- package/dist/interface/assets/Sensors-sxQ6HLKo.js +2 -0
- package/dist/interface/assets/Settings-Bu0G7Ebx.js +1 -0
- package/dist/interface/assets/{Settings-D7495zbV.css → Settings-DtCSaLPb.css} +1 -1
- package/dist/interface/assets/SettingsAccount-8OZJLQi-.js +1 -0
- package/dist/interface/assets/SettingsAccount-bSfFi9YH.js +1 -0
- package/dist/interface/assets/SettingsAppearance-CnvN_Tzr.js +1 -0
- package/dist/interface/assets/SettingsAppearance-EvPWgF4c.js +1 -0
- package/dist/interface/assets/SettingsAssistant-B6s6pHCx.js +1 -0
- package/dist/interface/assets/SettingsBackup-Dd2FaUcN.js +1 -0
- package/dist/interface/assets/SettingsList-SvCO_gfG.js +1 -0
- package/dist/interface/assets/SettingsMqtt-BXBzHX84.js +1 -0
- package/dist/interface/assets/SettingsNotifications-CV-jJwFV.js +1 -0
- package/dist/interface/assets/SettingsPermissions-GchFaWjz.js +1 -0
- package/dist/interface/assets/SettingsRecordings-C4Ch_jmV.js +1 -0
- package/dist/interface/assets/SettingsRemote-OZHDJKSq.js +2 -0
- package/dist/interface/assets/SettingsSystem-BJlHXwVs.js +2 -0
- package/dist/interface/assets/SettingsUsers-RGOkOzx0.js +1 -0
- package/dist/interface/assets/Terminal-DX-ECC91.js +4 -0
- package/dist/interface/assets/Training-B8my7vka.js +1 -0
- package/dist/interface/assets/Training-D1DDjCCD.css +1 -0
- package/dist/interface/assets/Updates-DmavyhAn.js +2 -0
- package/dist/interface/assets/{VariableInput-CcILik4M.js → VariableInput-DQJle67Y.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-Bj0HdrYW.js → VariableSuggestions-D8V739dF.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BA8Lcysg.js → VersionsHandler-B41TJhgY.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-DvHyw7I2.js → VirtualSensorCreate-MfLh-LpH.js} +1 -1
- package/dist/interface/assets/Workers-CafDeRhH.js +2 -0
- package/dist/interface/assets/api-By0v6EeA.css +2 -0
- package/dist/interface/assets/api-D1iULsSy.js +4 -0
- package/dist/interface/assets/{api-CKbL5jC7.js → api-DbUdfXO_.js} +1 -1
- package/dist/interface/assets/{assistant-CwmHp5bB.js → assistant-7hqP6OpA.js} +1 -1
- package/dist/interface/assets/{auth-AfZrkJ2f.js → auth-CDxrn7fe.js} +1 -1
- package/dist/interface/assets/{automations-DOCG0q8-.js → automations-CTTQlGCW.js} +1 -1
- package/dist/interface/assets/{cameraSources-mHEz9ROa.js → cameraSources-MOiE_1-W.js} +1 -1
- package/dist/interface/assets/cloudHandoff-CJzFH7CW.js +1 -0
- package/dist/interface/assets/{config-AG0SnOiY.js → config-6EiGxiYm.js} +1 -1
- package/dist/interface/assets/eventLabels-idFWh3Y_.js +1 -0
- package/dist/interface/assets/{flowSchema-B0d3VjU7.js → flowSchema-Dp_-p9WA.js} +1 -1
- package/dist/interface/assets/{intercomService-DG3EeZ6s.js → intercomService-BQYzjnAi.js} +1 -1
- package/dist/interface/assets/main-0oXl_8v7.js +3 -0
- package/dist/interface/assets/main-CdvAniEp.css +1 -0
- package/dist/interface/assets/mqtt-ChvXxMhR.js +1 -0
- package/dist/interface/assets/{notifications-8FH4ApEz.js → notifications-CbL-1oMs.js} +1 -1
- package/dist/interface/assets/{plugins-2JLUEMYc.js → plugins-lsoAntRQ.js} +1 -1
- package/dist/interface/assets/{rooms-DoAfzA8W.js → rooms-P8WrRIco.js} +1 -1
- package/dist/interface/assets/sensorIcons-BRTtoaHX.js +1 -0
- package/dist/interface/assets/{sensorSlots-biaL-O8E.js → sensorSlots-BTj-IM7z.js} +1 -1
- package/dist/interface/assets/{sensors-DyAMdS-H.js → sensors-Dxc7HgjZ.js} +1 -1
- package/dist/interface/assets/{server-BDRUGj61.js → server-DlK8gUoE.js} +1 -1
- package/dist/interface/assets/{theme-CLxrnR60.js → theme-BOppzzar.js} +1 -1
- package/dist/interface/assets/types-CeruGCb8.js +1 -0
- package/dist/interface/assets/{types-8JXzkoC8.js → types-J1Drrxo1.js} +1 -1
- package/dist/interface/assets/types-U4AuTNLR.js +1 -0
- package/dist/interface/assets/ungrouped-ING_JAuK.js +1 -0
- package/dist/interface/assets/{updates-F-veEP1I.js → updates-DtVp84Y0.js} +1 -1
- package/dist/interface/assets/{useAppVersion-BjUQmB7M.js → useAppVersion-BGgCk5GD.js} +1 -1
- package/dist/interface/assets/{useAssistantActions-CNEJol4o.js → useAssistantActions-C13O5EHU.js} +1 -1
- package/dist/interface/assets/useBackupRestore-vrhmc9i-.js +1 -0
- package/dist/interface/assets/{useCameraOptions-D_oduve2.js → useCameraOptions-CI1baRmm.js} +1 -1
- package/dist/interface/assets/{useKeyboardInset-CPWSVYlA.js → useKeyboardInset-CvgJp091.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-B_jXUqv8.js → useLogsSocket-Bf0BI8ET.js} +1 -1
- package/dist/interface/assets/{useNavLayout-DEngIIeU.js → useNavLayout-6zM1Y-7B.js} +1 -1
- package/dist/interface/assets/{usePermissions-DAO92InI.js → usePermissions-DZitFsBQ.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-CJi8Y_wl.js → usePluginUpdates-VZdpJ_Ax.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-j9WCeFbv.js → usePushRegistration-vcbMrTxZ.js} +1 -1
- package/dist/interface/assets/{useServerRestart-BVks5tuC.js → useServerRestart-DrpuNbIu.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-DQ0NSyU8.js → useStreamStatus-l3Pfk1H4.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-CVq7EcIY.js → useTabSwipe-BSpi25WV.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-C0fjDvNP.js → useUpdateChannel-kAl-5UNY.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-DXKF9hzc.js → useUpdatesSocket-CaFz_fEb.js} +1 -1
- package/dist/interface/assets/{useUserOptions-UjMeAL5n.js → useUserOptions-BKteXnmU.js} +1 -1
- package/dist/interface/assets/vendor-cameraui-K1Nw4PvF.js +2326 -0
- package/dist/interface/assets/vendor-core-CJdfpB0I.js +1 -0
- package/dist/interface/assets/{vendor-primevue-Zx6t06A4.js → vendor-primevue-DoA2Rwcb.js} +871 -871
- package/dist/interface/assets/walk-B8FNhXuj.js +1 -0
- package/dist/interface/ha/{404-D5gfy0Cd.js → 404-RtgPpD9N.js} +1 -1
- package/dist/interface/ha/{About-JzlpCzBN.js → About-0PRv9bU0.js} +4 -4
- package/dist/interface/ha/{Assistant-DgOfGesf.js → Assistant-DbwxVfpl.js} +1021 -1021
- package/dist/interface/ha/{Automation-BDaWYiBu.js → Automation-D3HomdH7.js} +159 -155
- package/dist/interface/ha/{AutomationImport-BNB_PJ9R.js → AutomationImport-nQUUvZcv.js} +6 -6
- package/dist/interface/ha/{AutomationStore-_TeOt1wz.js → AutomationStore-BXDD92wZ.js} +8 -8
- package/dist/interface/ha/{AutomationStoreDetail-jjIEZoRi.js → AutomationStoreDetail-BYeq7FID.js} +19 -19
- package/dist/interface/ha/{Automations-DM6FEVOw.js → Automations-CJlGqmSP.js} +74 -74
- package/dist/interface/ha/Camera-Ai4BxVh_.js +747 -0
- package/dist/interface/ha/{CameraConsole-BoVql05l.js → CameraConsole-UMNOX3dE.js} +4 -4
- package/dist/interface/ha/{Cameras-cQBGvXq7.js → Cameras-BW-AEXYi.js} +266 -266
- package/dist/interface/ha/{Camview-mkG5FXZM.js → Camview-jikpVEE0.js} +195 -194
- package/dist/interface/ha/{Config-BNPDzo_h.js → Config-BOxwBH2D.js} +111 -111
- package/dist/interface/ha/{ConfigActionAssistant-C-8P3DYz.js → ConfigActionAssistant--3iWk9sq.js} +4 -4
- package/dist/interface/ha/{ConfigActionCameraControl-x1ksGL7m.js → ConfigActionCameraControl-DbVXWTeA.js} +3 -3
- package/dist/interface/ha/{ConfigActionHttp-DzCJp85z.js → ConfigActionHttp-Du3n2Yj0.js} +2 -2
- package/dist/interface/ha/{ConfigActionImageInput-C5C5U_2z.js → ConfigActionImageInput-BrJrTZTY.js} +4 -4
- package/dist/interface/ha/{ConfigActionMqtt-T29xb75r.js → ConfigActionMqtt-DZd1BNUt.js} +4 -4
- package/dist/interface/ha/{ConfigActionNotification-BcnyilF9.js → ConfigActionNotification-CJWW10gt.js} +3 -3
- package/dist/interface/ha/{ConfigActionNotificationControl-D3wIVKuU.js → ConfigActionNotificationControl-Bl41AVv1.js} +2 -2
- package/dist/interface/ha/{ConfigActionOutput-hD-yVczw.js → ConfigActionOutput-OTj7Lwgq.js} +1 -1
- package/dist/interface/ha/{ConfigActionPlugin-Bz1O-O4Q.js → ConfigActionPlugin-B790PEk0.js} +8 -8
- package/dist/interface/ha/{ConfigActionSensor-FOz-PYl_.js → ConfigActionSensor-BG3jZxge.js} +5 -5
- package/dist/interface/ha/{ConfigActionSnapshot-CmxEOuK1.js → ConfigActionSnapshot-fGmLl6jb.js} +2 -2
- package/dist/interface/ha/{ConfigActionVariable-BCvkrdCh.js → ConfigActionVariable-CK3vYDsr.js} +1 -1
- package/dist/interface/ha/{ConfigConditionIfElse-icfTG9OA.js → ConfigConditionIfElse-DyFLGg3y.js} +3 -3
- package/dist/interface/ha/{ConfigConditionSensorState-ClUAsm0d.js → ConfigConditionSensorState-BUTfeFO2.js} +7 -7
- package/dist/interface/ha/{ConfigConditionSwitch-C8AMCkn6.js → ConfigConditionSwitch-iDG_ubif.js} +5 -5
- package/dist/interface/ha/{ConfigSensorValueInput-ChvDQzGd.js → ConfigSensorValueInput-BmRIGUKB.js} +5 -5
- package/dist/interface/ha/{ConfigTriggerDetection-aUSyaClu.js → ConfigTriggerDetection-DyPQGt9M.js} +24 -24
- package/dist/interface/ha/{ConfigTriggerGeofence-DsJeJWP4.js → ConfigTriggerGeofence-CGE-bH_t.js} +6 -6
- package/dist/interface/ha/{ConfigTriggerMqtt-CsAxA7QZ.js → ConfigTriggerMqtt-CM3KZqBc.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSensor-CTxr9cfU.js → ConfigTriggerSensor-DoHMcwP4.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSystem-C8UEfpfs.js → ConfigTriggerSystem-BYKbW4Zr.js} +2 -2
- package/dist/interface/ha/{ConfigTriggerWebhook-frEE-SCB.js → ConfigTriggerWebhook-5PBAadG8.js} +2 -2
- package/dist/interface/ha/{Console-A3VtbsLg.js → Console-BEXzl4p1.js} +7 -7
- package/dist/interface/ha/{CuiAutomationRunsDialog-BlJvhBiX.js → CuiAutomationRunsDialog-DkK_ar5G.js} +3 -3
- package/dist/interface/ha/{CuiBottomSheet-Cu-t3H0Z.js → CuiBottomSheet-CYNvQV4T.js} +2 -2
- package/dist/interface/ha/{CuiCameraRecordings-R5ArEmqJ.js → CuiCameraRecordings-DYjecmE_.js} +30 -48
- package/dist/interface/ha/{CuiCameraShares-B9pfRkM4.js → CuiCameraShares-C0H60nZS.js} +7 -7
- package/dist/interface/ha/{CuiCameraTable-CKjGKaMC.js → CuiCameraTable-CQNMyBaq.js} +5 -5
- package/dist/interface/ha/{CuiChartTable-BxWjRe-k.js → CuiChartTable-Bhv1p9zj.js} +1161 -1161
- package/dist/interface/ha/{CuiConsole-C5fzsR7t.js → CuiConsole-DtXorGF5.js} +20 -20
- package/dist/interface/ha/{CuiDataTable-BOdQDY8J.js → CuiDataTable-Cy8EjCk9.js} +7 -7
- package/dist/interface/ha/{CuiList-CU2NJ1K6.js → CuiList-DnW6Q5m2.js} +1 -1
- package/dist/interface/ha/{CuiPluginCard-BT71RRAD.js → CuiPluginCard-B4SCUblV.js} +125 -125
- package/dist/interface/ha/{CuiPluginOAuthButton-moh9uS7G.js → CuiPluginOAuthButton-BKg9SftQ.js} +5 -5
- package/dist/interface/ha/{CuiPluginTrustBadge-F_pVWkPJ.js → CuiPluginTrustBadge-CEtUJhCJ.js} +1 -1
- package/dist/interface/ha/{CuiQRCode-BNuj-nJ4.js → CuiQRCode-gp-9hqyk.js} +7 -7
- package/dist/interface/ha/{CuiSchema-Cb_8Ks-I.js → CuiSchema-CYpr_dD7.js} +161 -161
- package/dist/interface/ha/{CuiTopNavbarItem-BGzrrTls.js → CuiTopNavbarItem-CM-1oPxf.js} +1 -1
- package/dist/interface/ha/Faces-pa60ySng.js +1575 -0
- package/dist/interface/ha/{FirstSteps-BFX0-EEi.js → FirstSteps-D42yZm7R.js} +68 -68
- package/dist/interface/ha/{Floorplan-D6MGqSJT.js → Floorplan-BvE546pE.js} +512 -511
- package/dist/interface/ha/{Instances-CHzIUyyA.js → Instances-CAGCyfbB.js} +64 -64
- package/dist/interface/ha/{Logs-DZKM3dWv.js → Logs-RB3Ba8WM.js} +12 -12
- package/dist/interface/ha/{Menu-BQz4dfQi.js → Menu-hAnHu_jq.js} +17 -17
- package/dist/interface/ha/{Metrics-CdpWJ1mm.js → Metrics-ChYTebkX.js} +94 -93
- package/dist/interface/ha/{OAuthDeviceFlow-DUELtx3X.js → OAuthDeviceFlow-C05pH-9o.js} +3 -3
- package/dist/interface/ha/{Plugin-5bbTF0Rv.js → Plugin-D7XwcXkW.js} +647 -439
- package/dist/interface/ha/{PluginConsole-C__0lzsS.js → PluginConsole-DphEIOlL.js} +4 -4
- package/dist/interface/ha/{PluginDetail-Blrktk9W.js → PluginDetail-DfMl-yCl.js} +9 -9
- package/dist/interface/ha/{PluginSearch-BKbdwHQ1.js → PluginSearch-BPN4Opg5.js} +34 -34
- package/dist/interface/ha/{PluginUpdateProgress-IsNiecu3.js → PluginUpdateProgress-ByJ0R5sW.js} +3 -3
- package/dist/interface/ha/{Plugins-CC2Dwlx5.js → Plugins-BhKmjjNn.js} +59 -59
- package/dist/interface/ha/{RecentEventsFilter-9ZkDHD1g.js → RecentEventsFilter-BkLMlGVJ.js} +5 -6
- package/dist/interface/ha/Recordings-BaU7M1OW.js +1836 -0
- package/dist/interface/ha/{SensorEdit-Bi2Yx_ji.js → SensorEdit-DWxcCJ0F.js} +88 -88
- package/dist/interface/ha/{SensorHistory-sqG_6eav.js → SensorHistory-DuA9E9wT.js} +2 -2
- package/dist/interface/ha/{Sensors-DLtOh1p4.js → Sensors-CVpIHcgG.js} +438 -435
- package/dist/interface/ha/{Settings-DI3_zenm.js → Settings-BO2eBGEn.js} +61 -61
- package/dist/interface/ha/{SettingsAccount-pS86Qyr-.js → SettingsAccount-BQZZfoSM.js} +255 -255
- package/dist/interface/ha/{SettingsAppearance-tS3bubKQ.js → SettingsAppearance-B_yGl89u.js} +16 -16
- package/dist/interface/ha/{SettingsAssistant-LejCRXsF.js → SettingsAssistant-kMOixl9g.js} +501 -501
- package/dist/interface/ha/{SettingsBackup-CkhD1Kze.js → SettingsBackup-BpG-W4j-.js} +24 -24
- package/dist/interface/ha/{SettingsList-bibwvPSM.js → SettingsList-Btnkzu94.js} +6 -6
- package/dist/interface/ha/{SettingsMqtt-DSt0B4Qg.js → SettingsMqtt-C4DX9cNC.js} +23 -23
- package/dist/interface/ha/{SettingsNotifications-BF7ajNwE.js → SettingsNotifications-DI6ImggH.js} +6 -6
- package/dist/interface/ha/{SettingsPermissions-Jh0FuIF7.js → SettingsPermissions-BCDyCFcb.js} +2 -2
- package/dist/interface/ha/{SettingsRecordings-BTIdncxg.js → SettingsRecordings-Bq5NkJhd.js} +10 -10
- package/dist/interface/ha/{SettingsRemote-Cba4P1-O.js → SettingsRemote-CtncaPIA.js} +308 -308
- package/dist/interface/ha/{SettingsSystem-_Nnh2ZF5.js → SettingsSystem-BJXuA7xA.js} +11 -11
- package/dist/interface/ha/{SettingsUsers-BfHFoxJi.js → SettingsUsers-BF0rDluv.js} +91 -91
- package/dist/interface/ha/{Terminal-Dv_7oWmS.js → Terminal-kTCe2jP3.js} +11 -11
- package/dist/interface/ha/Training-BM2Xb8Ef.js +1754 -0
- package/dist/interface/ha/{Updates-BHl5H7zE.js → Updates-Cv1EY_T0.js} +6 -6
- package/dist/interface/ha/{VariableInput-DtLo7-Nw.js → VariableInput-BO2zZu4N.js} +1 -1
- package/dist/interface/ha/{VersionsHandler-CF0DSeol.js → VersionsHandler-CRnT9-K7.js} +10 -10
- package/dist/interface/ha/{VirtualSensorCreate-C907EgIz.js → VirtualSensorCreate-6dVRxPjw.js} +8 -8
- package/dist/interface/ha/{Workers-Dz1d9gEQ.js → Workers-MHia86lu.js} +97 -97
- package/dist/interface/ha/{api-DUqpDJ2N.js → api-CH_Y8Hee.js} +17459 -14633
- package/dist/interface/ha/{api-gId1nlMj.js → api-DylRa66V.js} +3 -3
- package/dist/interface/ha/{assistant-BaR65gIY.js → assistant-smRQYA6p.js} +53 -53
- package/dist/interface/ha/{auth-Btsz_KxO.js → auth-BXj5Fm6s.js} +38 -38
- package/dist/interface/ha/{automationBlueprint-CuO3iOiM.js → automationBlueprint-DGjftXFC.js} +4 -4
- package/dist/interface/ha/cameraui-cards.js +1 -1
- package/dist/interface/ha/{cards-DWhezIPP.js → cards-E0zw1UVg.js} +114 -113
- package/dist/interface/ha/{config-BKStpoEQ.js → config-dG_DA6XL.js} +16 -16
- package/dist/interface/ha/{dist-CM7R4_Gj.js → dist-BQf9ANPx.js} +77 -77
- package/dist/interface/ha/{dist-BIngHzHx.js → dist-euRmladF.js} +4 -4
- package/dist/interface/ha/{eventIcons-BFNUgeGr.js → eventLabels-B5GrM5jO.js} +291 -233
- package/dist/interface/ha/{intercomService-B7HkLs6z.js → intercomService-BtJ_zUNd.js} +250 -264
- package/dist/interface/ha/{mqtt-ajcSmTB-.js → mqtt-CP3vVkRJ.js} +12 -12
- package/dist/interface/ha/{notifications-Cf9dXHEO.js → notifications-CZNwSXTg.js} +22 -22
- package/dist/interface/ha/{pinia-DIKO5lnE.js → pinia-CVnHHb-s.js} +533 -501
- package/dist/interface/ha/{plugins-ml823dJV.js → plugins--eatOIaI.js} +66 -66
- package/dist/interface/ha/{protocol-BB4jdtUC-DW3jl2tV.js → protocol-BB4jdtUC-BhEwymva.js} +129 -48
- package/dist/interface/ha/{rooms-C5gUErBi.js → rooms-D5E6K75d.js} +8 -8
- package/dist/interface/ha/{server-dArenpJI.js → server-D1BqEY7i.js} +31 -31
- package/dist/interface/ha/{types-DYymuACA.js → types-CWogEoya.js} +36 -36
- package/dist/interface/ha/ungrouped-Ch4UX4dy.js +58 -0
- package/dist/interface/ha/{updates-D5sFzGtC.js → updates-B48Owi1w.js} +28 -28
- package/dist/interface/ha/{useAppVersion-C5x3Ap4_.js → useAppVersion-D95sKTJR.js} +2 -2
- package/dist/interface/ha/{useAssistantActions-S1FrNe9b.js → useAssistantActions-kDwiO-u5.js} +1 -1
- package/dist/interface/ha/{useKeyboardInset-Cj0T2AFX.js → useKeyboardInset-C2R51vsC.js} +1 -1
- package/dist/interface/ha/{useLogsSocket-DtvfQlPh.js → useLogsSocket-BzNWa2y2.js} +1 -1
- package/dist/interface/ha/{useNavLayout-HSFBA4JV.js → useNavLayout-228cwwqA.js} +19 -19
- package/dist/interface/ha/{usePermissions-DaE_wFch.js → usePermissions-CfA5x7Df.js} +1 -1
- package/dist/interface/ha/{useServerRestart-Ci0SppGW.js → useServerRestart-B0c40zs5.js} +1 -1
- package/dist/interface/ha/{useTabSwipe-CPKkRmaH.js → useTabSwipe-CfZg5hWj.js} +2 -2
- package/dist/interface/ha/{useUpdateChannel-CXHHovK3.js → useUpdateChannel-DQxI7FrD.js} +2 -2
- package/dist/interface/ha/{useUpdatesSocket-DVST2YXV.js → useUpdatesSocket-B8LqBBd3.js} +1 -1
- package/dist/interface/ha/{useUserOptions-BYcYI6QA.js → useUserOptions-dZf6ejlz.js} +1 -1
- package/dist/interface/ha/walk-CsSXaeJw.js +33 -0
- package/dist/interface/index.html +35 -36
- package/dist/interface/sw.js +1 -1
- package/dist/interface/workbox-5f52ac45.js +1 -0
- package/dist/server/package.json +11 -11
- package/dist/server/requirements.txt +2 -2
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +22 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +92 -4
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +16 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +4 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +1 -1
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +3 -3
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/person_embedder.py +65 -0
- package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/segmenter.py +81 -0
- package/dist/server/src/api/database/index.d.ts +2 -1
- package/dist/server/src/api/database/index.js +31 -7
- package/dist/server/src/api/database/index.js.map +1 -1
- package/dist/server/src/api/database/migrations/v2-2-9.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-2-9.js +28 -0
- package/dist/server/src/api/database/migrations/v2-2-9.js.map +1 -0
- package/dist/server/src/api/database/record-schemas.d.ts +1 -1
- package/dist/server/src/api/database/types.d.ts +17 -1
- package/dist/server/src/api/schemas/assistant.schema.d.ts +1 -1
- package/dist/server/src/api/schemas/cameras.schema.d.ts +140 -76
- package/dist/server/src/api/schemas/cameras.schema.js +4 -2
- package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
- package/dist/server/src/api/schemas/training.schema.d.ts +15 -3
- package/dist/server/src/api/schemas/training.schema.js +4 -1
- package/dist/server/src/api/schemas/training.schema.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/worker-perf.js +2 -0
- package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
- package/dist/server/src/api/websocket/types.d.ts +1 -0
- package/dist/server/src/assistant/search.d.ts +17 -0
- package/dist/server/src/assistant/search.js +10 -2
- package/dist/server/src/assistant/search.js.map +1 -1
- package/dist/server/src/assistant/tools/plugins.js +7 -3
- package/dist/server/src/assistant/tools/plugins.js.map +1 -1
- package/dist/server/src/assistant/types.d.ts +2 -0
- package/dist/server/src/automations/actions/plugin.js +5 -9
- package/dist/server/src/automations/actions/plugin.js.map +1 -1
- package/dist/server/src/automations/pluginMethodRegistry.d.ts +6 -0
- package/dist/server/src/automations/pluginMethodRegistry.js +39 -0
- package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
- package/dist/server/src/automations/segment-picture.d.ts +16 -0
- package/dist/server/src/automations/segment-picture.js +152 -0
- package/dist/server/src/automations/segment-picture.js.map +1 -0
- package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -2
- package/dist/server/src/camera/decoder/detection-coordinator.js +45 -22
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-pipeline.d.ts +30 -2
- package/dist/server/src/camera/decoder/detection-pipeline.js +81 -21
- package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
- package/dist/server/src/camera/decoder/event-manager.d.ts +12 -2
- package/dist/server/src/camera/decoder/event-manager.js +77 -75
- package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
- package/dist/server/src/camera/decoder/event-trace.d.ts +41 -1
- package/dist/server/src/camera/decoder/event-trace.js +63 -8
- package/dist/server/src/camera/decoder/event-trace.js.map +1 -1
- package/dist/server/src/camera/decoder/face-tracks.d.ts +26 -0
- package/dist/server/src/camera/decoder/face-tracks.js +199 -0
- package/dist/server/src/camera/decoder/face-tracks.js.map +1 -0
- package/dist/server/src/camera/decoder/frame-scaler.d.ts +3 -1
- package/dist/server/src/camera/decoder/frame-scaler.js +36 -8
- package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
- package/dist/server/src/camera/decoder/nvr-sink.d.ts +6 -0
- package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
- package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
- package/dist/server/src/camera/decoder/perf-tracker.d.ts +2 -0
- package/dist/server/src/camera/decoder/perf-tracker.js +4 -0
- package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.d.ts +6 -1
- package/dist/server/src/camera/decoder/ptz/autotracker.js +107 -25
- package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
- package/dist/server/src/camera/decoder/secondary-stage.d.ts +10 -8
- package/dist/server/src/camera/decoder/secondary-stage.js +145 -125
- package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
- package/dist/server/src/camera/decoder/training-sink.d.ts +5 -2
- package/dist/server/src/camera/decoder/training-sink.js +30 -6
- package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +6 -2
- package/dist/server/src/camera/decoder/types.js +4 -2
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -1
- package/dist/server/src/manager/trainingCandidateManager.js +25 -3
- package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
- package/dist/server/src/manager/trainingSubmission.d.ts +5 -0
- package/dist/server/src/manager/trainingSubmission.js +73 -0
- package/dist/server/src/manager/trainingSubmission.js.map +1 -0
- package/dist/server/src/manager/types.d.ts +8 -2
- package/dist/server/src/manager/types.js.map +1 -1
- package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -0
- package/dist/server/src/remote/api/routes/train.d.ts +44 -3
- package/dist/server/src/remote/api/routes/train.js +2 -2
- package/dist/server/src/remote/api/routes/train.js.map +1 -1
- package/dist/server/src/rpc/interfaces/core.d.ts +6 -2
- package/dist/server/src/rpc/interfaces/detection.d.ts +20 -3
- package/dist/server/src/rpc/server.d.ts +2 -0
- package/dist/server/src/rpc/server.js +8 -5
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +1 -0
- package/dist/server/src/sensors/registry.js +20 -11
- package/dist/server/src/sensors/registry.js.map +1 -1
- package/dist/server/src/sensors/types.d.ts +1 -0
- package/dist/server/src/sensors/types.js +3 -0
- package/dist/server/src/sensors/types.js.map +1 -1
- package/dist/server/src/services/config/index.d.ts +1 -0
- package/dist/server/src/services/config/index.js +2 -0
- package/dist/server/src/services/config/index.js.map +1 -1
- package/dist/server/src/utils/image.d.ts +6 -0
- package/dist/server/src/utils/image.js +58 -22
- package/dist/server/src/utils/image.js.map +1 -1
- package/npm-shrinkwrap.json +115 -74
- package/package.json +11 -11
- package/dist/interface/assets/About-DBOS1rfw.js +0 -1
- package/dist/interface/assets/Assistant-BQ6Ld-bt.css +0 -1
- package/dist/interface/assets/Assistant-BRcHj8hq.js +0 -1
- package/dist/interface/assets/Automation-C0Emde7z.js +0 -3
- package/dist/interface/assets/AutomationStore-C2G0Bk8c.js +0 -2
- package/dist/interface/assets/Automations-D-vfqRnZ.js +0 -2
- package/dist/interface/assets/Camera-BpurrgAr.js +0 -2
- package/dist/interface/assets/Camera-D0B7yyVD.css +0 -1
- package/dist/interface/assets/Camview-IbOVRx20.js +0 -1
- package/dist/interface/assets/ConfigActionCameraControl-Bw_egtpP.js +0 -1
- package/dist/interface/assets/ConfigActionSensor-BErRRYfl.js +0 -1
- package/dist/interface/assets/Console-oCuuVKET.js +0 -1
- package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +0 -5
- package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +0 -1
- package/dist/interface/assets/CuiCameraShares-jrrUEHoZ.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +0 -1
- package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +0 -1
- package/dist/interface/assets/CuiLightControl-DitIWqUr.js +0 -1
- package/dist/interface/assets/CuiList-BewTNr2X.js +0 -1
- package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +0 -2
- package/dist/interface/assets/CuiPluginCategoryChip-DlzOwRgc.js +0 -1
- package/dist/interface/assets/CuiSchema-BL0QZmP2.js +0 -1
- package/dist/interface/assets/CuiTopNavbarItem-Ti2TueU1.js +0 -1
- package/dist/interface/assets/Faces-DARrGLXf.js +0 -1
- package/dist/interface/assets/FirstSteps-DBYPBvGr.js +0 -1
- package/dist/interface/assets/Floorplan-BaZvzoyv.js +0 -1
- package/dist/interface/assets/Instances-r0xReURi.js +0 -1
- package/dist/interface/assets/Menu-C34RRyLd.js +0 -1
- package/dist/interface/assets/Metrics-BjoC71_O.js +0 -12
- package/dist/interface/assets/Metrics-DsHBab6t.css +0 -1
- package/dist/interface/assets/OAuthDeviceFlow-CdZxelf2.js +0 -1
- package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +0 -1
- package/dist/interface/assets/Plugin-npx7CnwV.js +0 -1
- package/dist/interface/assets/PluginDetail-nwTrJmO6.js +0 -2
- package/dist/interface/assets/PluginSearch-CP2kQWKf.js +0 -1
- package/dist/interface/assets/PluginSearch-WEvbKMRs.js +0 -2
- package/dist/interface/assets/RecentEventsFilter-D5VSH2K1.js +0 -1
- package/dist/interface/assets/Recordings-BEKAn6QK.css +0 -1
- package/dist/interface/assets/Recordings-De6Zcv0M.js +0 -1
- package/dist/interface/assets/SensorEdit-SD_oHBRo.js +0 -1
- package/dist/interface/assets/SensorHistory-SxiLOloa.js +0 -1
- package/dist/interface/assets/Sensors-Djl64M-W.js +0 -2
- package/dist/interface/assets/Settings-CAf2reGs.js +0 -1
- package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +0 -1
- package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +0 -1
- package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +0 -1
- package/dist/interface/assets/SettingsAppearance-DQzQmVzE.js +0 -1
- package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +0 -1
- package/dist/interface/assets/SettingsBackup-CVExGnOo.js +0 -1
- package/dist/interface/assets/SettingsList-vo7sz_MY.js +0 -1
- package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +0 -1
- package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +0 -1
- package/dist/interface/assets/SettingsPermissions-BlOf6HEy.js +0 -1
- package/dist/interface/assets/SettingsRecordings-7tTBg6m1.js +0 -1
- package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +0 -2
- package/dist/interface/assets/SettingsSystem-DaFMsZpN.js +0 -2
- package/dist/interface/assets/SettingsUsers-DXACwVPi.js +0 -1
- package/dist/interface/assets/Terminal-DtGqlHbk.js +0 -4
- package/dist/interface/assets/Training-C-ToeAl4.css +0 -1
- package/dist/interface/assets/Training-Ca11D1Vj.js +0 -1
- package/dist/interface/assets/Updates-yenwuqnD.js +0 -2
- package/dist/interface/assets/Workers-Dyo44zxe.js +0 -2
- package/dist/interface/assets/api-CHQlxVtZ.css +0 -2
- package/dist/interface/assets/api-CLazgL-g.js +0 -4
- package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +0 -1
- package/dist/interface/assets/eventIcons-C3JWChgS.js +0 -1
- package/dist/interface/assets/eventLabels-BsPoPWS9.js +0 -1
- package/dist/interface/assets/main-CGY9cVyi.css +0 -1
- package/dist/interface/assets/main-DkHV6YgB.js +0 -3
- package/dist/interface/assets/mqtt-DE2VbNdt.js +0 -1
- package/dist/interface/assets/sensorIcons-BntiOPX7.js +0 -1
- package/dist/interface/assets/types-B4LLKzDW.js +0 -1
- package/dist/interface/assets/types-a7Nw-P-m.js +0 -1
- package/dist/interface/assets/ungrouped-BoAbb9w3.js +0 -1
- package/dist/interface/assets/ungrouped-ChmBvcXp.css +0 -1
- package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +0 -1
- package/dist/interface/assets/vendor-cameraui-GmMRyJ2R.js +0 -2326
- package/dist/interface/assets/vendor-core-BeAannbA.js +0 -1
- package/dist/interface/ha/Camera-sH9fRv18.js +0 -670
- package/dist/interface/ha/Faces-CsM5VO8Q.js +0 -1441
- package/dist/interface/ha/Recordings-B1XsJrzs.js +0 -1539
- package/dist/interface/ha/Training-CaSFA5oH.js +0 -1699
- package/dist/interface/ha/eventLabels-B4C1_4vT.js +0 -42
- package/dist/interface/ha/ungrouped-BHLAySWP.js +0 -1312
- package/dist/interface/workbox-778a14ff.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{B as e,E as t,G as n,Gi as r,Gr as i,J as a,M as o,Rr as s,S as c,V as l,Vi as u,Vt as d,Xt as f,Yt as p,ai as m,d as h,et as g,f as _,g as v,hr as y,j as b,k as x,m as S,n as C,nn as ee,ot as te,ti as w,ui as T,zi as ne,zr as E}from"./vendor-cameraui-K1Nw4PvF.js";import{B as re,Bn as D,Br as ie,G as ae,H as oe,Ht as se,I as O,In as ce,J as le,L as ue,Ln as de,Lr as k,Mn as fe,Q as pe,R as A,Rn as me,Tn as he,U as ge,Ut as _e,V as ve,Vn as ye,Y as be,_ as xe,_n as Se,bn as Ce,dn as we,jn as Te,ln as Ee,mn as j,or as De,q as Oe,rn as ke,un as Ae,vn as je,yn as Me,z as Ne,zn as Pe}from"./api-D1iULsSy.js";import{$n as M,Cn as Fe,Cr as N,Hn as P,In as F,Jn as Ie,Ln as Le,Pn as Re,Rn as I,Sr as ze,Xn as L,Zn as R,an as Be,br as Ve,cn as z,dn as B,dr as V,er as He,gn as H,hn as Ue,jn as We,ln as U,lr as Ge,mr as Ke,nn as qe,or as W,rn as G,sn as K,sr as Je,tn as Ye,un as q,vn as Xe,yr as J}from"./vendor-Df81FCJz.js";import{i as Ze}from"./alert-outline-B4ZZowEj.js";import{c as Qe,l as $e,n as et,o as tt,r as nt,s as rt}from"./eventLabels-idFWh3Y_.js";import{H as it,N as at,a as ot,f as st,i as Y,l as ct}from"./vendor-primevue-DoA2Rwcb.js";import{t as lt}from"./close-Be7oB7d_.js";import{s as ut,t as dt}from"./assistant-7hqP6OpA.js";import{n as ft,r as pt,t as mt}from"./ungrouped-ING_JAuK.js";import{t as ht}from"./utils-gctUU5q_.js";import{t as gt}from"./settings-DDOgc5BX.js";import{t as _t}from"./database-refresh-outline-B3OEQFF7.js";import{n as vt,t as yt}from"./round-alt-arrow-left-bold-CZHXzGS5.js";var bt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function X(e,t){return F(),B(`svg`,bt,[...t[0]||=[z(`g`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`},[z(`path`,{d:`M15 8h.01M11.5 21H6a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v5.5`}),z(`path`,{d:`M15 18a3 3 0 1 0 6 0a3 3 0 1 0-6 0m5.2 2.2L22 22M3 16l5-5c.928-.893 2.072-.893 3 0l2 2`})],-1)]])}var xt=Je({name:`tabler-photo-search`,render:X}),Z={class:`flex flex-col gap-4`},St={class:`text-sm text-pretty`},Ct={key:0,class:`flex flex-col gap-2`},wt={key:0,class:`flex justify-between text-sm text-muted`},Tt={key:0},Et=Xe({__name:`ClipReindex`,setup(e,{expose:t}){let n=Fe(`dialogRefProps`),{t:r}=y(),{status:i,isBusy:a,checking:o,refresh:s,start:c,cancel:l}=_(),u=V(!1),d=V(!1),f=V(0),p=K(()=>i.value?.running===!0),m=K(()=>{if(d.value){if(!i.value?.total)return r(`views.recordings.reindex.up_to_date`);let{done:e,total:t,skipped:n}=i.value;return n?r(`views.recordings.reindex.result_failed`,{done:e,total:t,skipped:n}):r(`views.recordings.reindex.result`,{done:e,total:t})}return o.value?r(`views.recordings.reindex.checking`):p.value?r(`views.recordings.reindex.running_intro`):r(`views.recordings.reindex.intro`)}),h=K(()=>{if(d.value)return f.value;let e=i.value?.total??0;return e<=0?0:Math.min(100,Math.round(((i.value?.done??0)+(i.value?.skipped??0))/e*100))});async function g(){return p.value?l():(u.value=!0,c()),null}return L(p,(e,t)=>{t&&!e&&u.value&&(d.value=!0,f.value=i.value?.total?100:0,i.value?.total||requestAnimationFrame(()=>f.value=100))}),R(()=>{n.hideConfirmButton&&(n.hideConfirmButton.value=d.value),n.confirmText&&(n.confirmText.value=p.value?r(`views.recordings.reindex.stop`):r(`views.recordings.reindex.start`)),n.confirmButtonProps&&(n.confirmButtonProps.value=p.value?{severity:`danger`}:{}),n.disabled&&(n.disabled.value=a.value)}),Re(()=>{i.value?.running&&(u.value=!0),s().then(()=>{i.value?.running&&(u.value=!0)})}),t({onConfirm:g}),(e,t)=>{let n=st;return F(),B(`div`,Z,[z(`span`,St,N(J(m)),1),J(u)||J(p)?(F(),B(`div`,Ct,[H(n,{mode:J(o)?`indeterminate`:`determinate`,value:J(h),"show-value":!1,class:`h-2`},null,8,[`mode`,`value`]),J(p)&&!J(o)?(F(),B(`div`,wt,[z(`span`,null,N(e.$t(`views.recordings.reindex.progress`,{done:J(i)?.done??0,total:J(i)?.total??0})),1),J(i)?.skipped?(F(),B(`span`,Tt,N(e.$t(`views.recordings.reindex.skipped`,{count:J(i).skipped})),1)):q(``,!0)])):q(``,!0)])):q(``,!0)])}}}),Dt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ot(e,t){return F(),B(`svg`,Dt,[...t[0]||=[z(`path`,{fill:`currentColor`,d:`m14 2l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm4 18V9h-5V4H6v16zm-2-2l-2.5-1.7V18H8v-5h5.5v1.7L16 13z`},null,-1)]])}var kt=Je({name:`mdi-file-video-outline`,render:Ot}),At={class:`flex flex-col gap-6`},jt={class:`flex flex-col field-gap`},Mt={class:`cui-label`},Q={class:`flex flex-col field-gap`},Nt={class:`cui-label`},Pt={class:`grid grid-cols-1 xs:grid-cols-2 gap-3`},Ft={class:`flex flex-col gap-1`},It={class:`text-xs text-muted`},Lt={class:`flex flex-col gap-1`},Rt={class:`text-xs text-muted`},zt={class:`grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4`},Bt={class:`flex flex-col field-gap`},Vt={class:`cui-label`},Ht={class:`flex flex-col field-gap`},Ut={class:`cui-label`},Wt={class:`flex flex-col field-gap`},Gt={class:`flex items-center gap-3`},Kt={class:`cui-label !mb-0`},qt={key:0,class:`ml-auto flex items-center gap-2.5 text-sm tabular-nums`},Jt={class:`font-semibold`},Yt={class:`font-semibold`},Xt={class:`border border-color rounded-xl card-background overflow-hidden`},$={class:`flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5`},Zt={key:0,class:`flex items-center justify-center gap-2 text-muted text-sm py-6`},Qt={key:1,class:`text-center text-muted text-sm py-6`},$t={class:`text-xs text-muted px-0.5`},en={class:`font-mono text-xs truncate flex-1`},tn={class:`text-xs text-muted tabular-nums shrink-0`},nn={class:`font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right`},rn=30,an=Xe({__name:`ExportRecordings`,props:{cameras:{},preselect:{}},setup(e,{expose:t}){let i=e,{t:a}=y(),o=ie(),s=Fe(`dialogRefProps`),{plugin:c}=d(`@camera.ui/camera-ui-nvr`),u=V([]),f=V(!1),m=V(i.preselect?.length?[...i.preselect]:[]),h=V(`best`),g=V(0),_=V(new Date(new Date().setHours(0,0,0,0))),v=V(new Date),b=K(()=>[{label:a(`views.recordings.export.quality_best`),value:`best`},{label:a(`views.recordings.export.quality_smallest`),value:`smallest`}]),x=K(()=>[0,1,2,5,10,30,60,120,180,240,300].map(e=>({label:e===0?a(`views.recordings.export.timelapse_off`):e<60?`${e} s`:`${e/60} min`,value:e}))),S=K(()=>g.value>0),C=K(()=>S.value?`~`:``),ee=K(()=>new Map(i.cameras.map(e=>[e.id,e.name]))),te=K(()=>_.value instanceof Date&&v.value instanceof Date&&_.value<v.value),w=K(()=>{if(!te.value)return[];let e=[],t=_.value.getTime(),n=v.value.getTime(),r=new Date(_.value);r.setHours(0,0,0,0);let i=new Date(v.value);for(i.setHours(0,0,0,0);r.getTime()<=i.getTime();){let i=new Date(r),a=new Date(r);a.setDate(a.getDate()+1);let o=Math.max(i.getTime(),t),s=Math.min(a.getTime(),n);s>o&&e.push({day:ae(i),startUs:o*1e3,endUs:s*1e3}),r.setDate(r.getDate()+1)}return e}),T=K(()=>u.value.map(e=>{let t=ee.value.get(e.cameraId)??e.cameraId,n=new Date(e.startUs/1e3),r=new Date(e.endUs/1e3),i=n.getHours()===0&&n.getMinutes()===0&&e.endUs-e.startUs===864e8,o=r.getHours()===0&&r.getMinutes()===0?`24:00`:oe(r);return{cameraId:e.cameraId,cameraName:t,name:`${se(t)}_${e.day}${S.value?`_timelapse`:``}.mp4`,span:i?a(`views.recordings.export.whole_day`):`${oe(n)}–${o}`,bytes:S.value?e.bytes/rn:e.bytes}})),ne=K(()=>{let e=new Map;for(let t of T.value){let n=e.get(t.cameraId);n||(n={cameraId:t.cameraId,cameraName:t.cameraName,files:[],bytes:0},e.set(t.cameraId,n)),n.files.push(t),n.bytes+=t.bytes}return[...e.values()]}),E=K(()=>T.value.reduce((e,t)=>e+t.bytes,0)),re=K(()=>m.value.length===0?a(`views.recordings.export.no_cameras`):te.value?a(`views.recordings.export.no_footage`):a(`views.recordings.export.no_range`));function D(e){return String(e).padStart(2,`0`)}function ae(e){return`${e.getFullYear()}-${D(e.getMonth()+1)}-${D(e.getDate())}`}function oe(e){return`${D(e.getHours())}:${D(e.getMinutes())}`}function se(e){return e.replace(/[^a-zA-Z0-9-_]/g,`_`)}function O(e){if(e<=0)return`0 MB`;let t=e/1e6;if(t<1e3)return`${t<10?t.toFixed(1):Math.round(t)} MB`;let n=e/1e9;return`${n.toFixed(+(n<10))} GB`}async function ce(){let e=c.value;if(!e?.nvrExportEstimate||m.value.length===0||w.value.length===0){u.value=[],f.value=!1;return}f.value=!0;try{let t=await e.nvrExportEstimate({cameras:m.value,slices:w.value,quality:h.value});u.value=t.files??[]}catch{u.value=[]}finally{f.value=!1}}async function le(){if(!te.value||m.value.length===0||w.value.length===0)return null;let e=c.value;if(!e?.nvrExportBatch)return o.add({severity:`error`,detail:a(`views.recordings.export.plugin_missing`),life:3e3}),null;let t=await e.nvrExportBatch({cameras:m.value,slices:w.value,quality:h.value,timelapseIntervalSec:S.value?g.value:0});await fe({url:t.url,filename:t.filename})}return r([m,w,h],ce,{debounce:350,immediate:!0,deep:!0}),R(()=>{s.disabled&&(s.disabled.value=!te.value||m.value.length===0||!f.value&&T.value.length===0)}),t({onConfirm:le}),(t,r)=>{let i=ct,a=n,o=at,s=l,c=it,u=ot,d=p,y=kt;return F(),B(`div`,At,[z(`div`,jt,[z(`label`,Mt,N(t.$t(`views.recordings.export.cameras`)),1),H(i,{modelValue:J(m),"onUpdate:modelValue":r[0]||=e=>W(m)?m.value=e:null,options:e.cameras,"option-label":`name`,"option-value":`id`,display:`chip`,filter:``,placeholder:t.$t(`views.recordings.export.cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),z(`div`,Q,[z(`label`,Nt,N(t.$t(`views.recordings.export.range`)),1),z(`div`,Pt,[z(`div`,Ft,[z(`span`,It,N(t.$t(`views.recordings.export.from`)),1),H(a,{modelValue:J(_),"onUpdate:modelValue":r[1]||=e=>W(_)?_.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"max-date":J(v)},null,8,[`modelValue`,`max-date`])]),z(`div`,Lt,[z(`span`,Rt,N(t.$t(`views.recordings.export.to`)),1),H(a,{modelValue:J(v),"onUpdate:modelValue":r[2]||=e=>W(v)?v.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"min-date":J(_)},null,8,[`modelValue`,`min-date`])])]),J(te)?(F(),U(o,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:M(()=>[Ue(N(t.$t(`views.recordings.export.range_hint`)),1)]),_:1})):(F(),U(o,{key:0,severity:`error`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:M(()=>[Ue(N(t.$t(`views.recordings.export.invalid_range`)),1)]),_:1}))]),z(`div`,zt,[z(`div`,Bt,[z(`label`,Vt,N(t.$t(`views.recordings.export.quality`)),1),H(s,{modelValue:J(h),"onUpdate:modelValue":r[3]||=e=>W(h)?h.value=e:null,options:J(b),"option-label":`label`,"option-value":`value`,"allow-empty":!1,pt:{root:{class:`flex w-full`},pcToggleButton:{root:{class:`flex-1`}}}},null,8,[`modelValue`,`options`])]),z(`div`,Ht,[z(`label`,Ut,N(t.$t(`views.recordings.export.timelapse`)),1),H(c,{modelValue:J(g),"onUpdate:modelValue":r[4]||=e=>W(g)?g.value=e:null,options:J(x),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])])]),z(`div`,Wt,[z(`div`,Gt,[z(`label`,Kt,N(t.$t(`views.recordings.export.result`)),1),J(T).length?(F(),B(`div`,qt,[z(`span`,Jt,N(J(T).length)+` `+N(J(T).length===1?t.$t(`views.recordings.export.file`):t.$t(`views.recordings.export.files`)),1),r[5]||=z(`span`,{class:`text-muted`},`·`,-1),z(`span`,Yt,N(J(C))+N(O(J(E))),1),H(u,{value:J(T).length===1?`MP4`:`ZIP`,severity:`info`},null,8,[`value`])])):q(``,!0)]),z(`div`,Xt,[z(`div`,$,[J(f)&&!J(T).length?(F(),B(`div`,Zt,[H(d,{style:{width:`1rem`,height:`1rem`},"stroke-width":`4`,class:`m-0`}),z(`span`,null,N(t.$t(`views.recordings.export.estimating`)),1)])):J(T).length?(F(!0),B(G,{key:2},I(J(ne),e=>(F(),B(`div`,{key:e.cameraId,class:`flex flex-col gap-1`},[z(`span`,$t,N(e.cameraName)+` · `+N(e.files.length)+` · `+N(J(C))+N(O(e.bytes)),1),(F(!0),B(G,null,I(e.files,e=>(F(),B(`div`,{key:e.name,class:`flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2`},[H(y,{class:`w-4 h-4 text-muted shrink-0`}),z(`span`,en,N(e.name),1),z(`span`,tn,N(e.span),1),z(`span`,nn,N(J(C))+N(O(e.bytes)),1)]))),128))]))),128)):(F(),B(`div`,Qt,N(J(re)),1))])])])])}}}),on=[`object`,`objectAssist`,`face`,`faceEmbedder`,`personEmbedder`,`licensePlate`,`clip`,`segmenter`],sn={class:`flex flex-col items-center gap-3`},cn={key:0,class:`relative max-w-full overflow-hidden rounded-md`},ln=[`src`],un={key:1,class:`text-sm text-muted text-center`},dn=Xe({__name:`SimilarImageSearch`,props:{image:{}},setup(e,{expose:t}){let n=new ke,r=e,{t:i}=y(),a=Fe(`dialogRef`),{openSimilarSearch:o}=le(),{data:s,isLoading:c}=n.getCamerasQuery({page:1,pageSize:-1}),l=URL.createObjectURL(r.image),u=K(()=>{let e,t=0;for(let n of s.value?.result??[]){let r=n.assignments??{};if(n.disabled||!(r.object||r.objectAssist))continue;let i=on.filter(e=>r[e]).length;i>t&&(e=n,t=i)}return e});async function d(e){let t=await pe(r.image,e.box,e.mask);a.value.close(),o({query:e.query,objectLabel:e.label,crop:t})}return We(()=>URL.revokeObjectURL(l)),t({}),(t,n)=>{let r=_e;return F(),B(`div`,sn,[J(u)?(F(),B(`div`,cn,[z(`img`,{src:J(l),alt:``,class:`block max-w-full max-h-[65vh]`},null,8,ln),H(r,{camera:J(u),frame:e.image,onPick:d,onClose:n[0]||=e=>J(a).close()},null,8,[`camera`,`frame`])])):J(c)?q(``,!0):(F(),B(`p`,un,N(J(i)(`components.similar.image_no_camera`)),1))])}}}),fn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function pn(e,t){return F(),B(`svg`,fn,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 9l6 6l6-6`},null,-1)]])}var mn=Je({name:`tabler-chevron-down`,render:pn}),hn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function gn(e,t){return F(),B(`svg`,hn,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 15l6-6l6 6`},null,-1)]])}var _n=Je({name:`tabler-chevron-up`,render:gn}),vn={class:`flex flex-col gap-2`},yn={class:`sidebar-section-title`},bn={class:`text-xs text-muted`},xn={class:`text-xs text-muted`},Sn={key:0,class:`flex flex-col gap-2`},Cn={class:`sidebar-section-title`},wn={class:`text-xs text-muted`},Tn={key:0,class:`inline-flex items-center gap-1 text-xs text-muted`},En={key:1,class:`flex flex-col gap-1.5 mt-1`},Dn={class:`text-xs text-muted`},On={class:`flex items-center gap-3`},kn={class:`text-xs font-mono w-8 text-right shrink-0`},An={key:0,class:`text-xs text-muted`},jn={class:`text-xs text-center`},Mn={key:1,class:`sidebar-divider`},Nn={key:2,class:`flex flex-col gap-2`},Pn={class:`sidebar-section-title`},Fn={class:`flex flex-col gap-2`},In={class:`sidebar-section-title`},Ln={class:`flex flex-col gap-2`},Rn={class:`sidebar-section-title`},zn={class:`relative rounded-md overflow-hidden`},Bn={key:4,class:`sidebar-divider`},Vn={key:5,class:`flex flex-col gap-2`},Hn={class:`sidebar-section-title`},Un={class:`flex items-center gap-3`},Wn={class:`text-xs font-mono w-8 text-right shrink-0`},Gn={class:`flex flex-col gap-2`},Kn={class:`sidebar-section-title`},qn={class:`flex flex-wrap gap-1`},Jn={class:`flex flex-col gap-2`},Yn={key:0,class:`flex flex-col gap-2`},Xn={class:`flex items-center gap-2 cursor-pointer text-sm`},Zn={key:0,class:`flex flex-col gap-2 ml-6`},Qn={class:`filter-logic-divider`},$n={class:`flex flex-col gap-2`},er={key:0,class:`flex flex-col gap-2`},tr={class:`filter-logic-divider`},nr={class:`flex flex-col gap-2`},rr={key:0,class:`flex flex-col gap-2`},ir={class:`flex items-center gap-2 cursor-pointer text-sm`},ar={class:`flex flex-col gap-2`},or={key:0,class:`flex flex-col gap-3`},sr={class:`flex flex-wrap gap-2`},cr=[`aria-label`,`aria-pressed`,`onClick`],lr={class:`flex flex-wrap gap-1`},ur={class:`text-xs text-muted`},dr=288,fr=ce(Xe({__name:`RecordingsFilterSidebar`,props:{filters:{},cameras:{},isOpen:{type:Boolean},isOverlay:{type:Boolean},resultCount:{},resultTotal:{},resultCapped:{type:Boolean},semanticCount:{},semanticSearchAvailable:{type:Boolean},semanticSearchLoading:{type:Boolean},assistantSearchAvailable:{type:Boolean},assistantSearchLoading:{type:Boolean},assistantSearchNote:{},imageSearchAvailable:{type:Boolean}},emits:[`update:filters`,`semantic-search`,`assistant-search`,`image-search`,`close`],setup(t,{expose:n,emit:r}){let o=new Set([`motion`,`audio`]),c={white:`#f5f5f5`,gray:`#9ca3af`,yellow:`#facc15`,red:`#ef4444`,green:`#22c55e`,blue:`#3b82f6`,black:`#111827`},d=t,p=r,{t:_}=y(),{topbarOffset:v}=ye(),{icons:x,generic:C}=$e(),te=x,T=_n,ne=mn,re=Ie(`sidebarRef`),D=V(d.filters.semanticQuery??``),ie=V(``),ae=V(d.filters.semanticQuery?`semantic`:`text`),oe=V(!1),O=Ge({eventTypes:!0,attributes:!0,sensorEvents:!0,vehicles:!0}),ce=K(()=>d.isOpen?dr:0),le=K(()=>{let e=[...new Set(d.cameras.map(e=>e.room).filter(e=>!!e))];return e.sort((e,t)=>e.localeCompare(t)),e.map(e=>({id:e,name:e===`Default`?_(`components.form.label.room_default`):e}))}),ue=K(()=>{let e=d.filters.rooms;return(e.length>0?d.cameras.filter(t=>e.includes(t.room??``)):d.cameras).map(e=>({id:e.id,name:e.name}))}),de=K(()=>{if(d.filters.cameraIds.length===1)return d.cameras.find(e=>e.id===d.filters.cameraIds[0])?.id}),k=K(()=>d.filters.contentKind===`episodes`),fe=K(()=>{let e=k.value?`episodes`:`recordings`;if(d.resultTotal===void 0)return _(`views.recordings.result_count_${e}`,{count:d.resultCount});let t=d.resultCapped?`${d.resultTotal}+`:d.resultTotal;return _(`views.recordings.result_count_${e}_of`,{count:d.resultCount,total:t})}),pe=K(()=>{let e=[];return k.value||(e.push({value:`text`,label:_(`views.recordings.search`),icon:pt}),e.push({value:`semantic`,label:_(`views.recordings.semantic_search`),icon:Ce})),d.assistantSearchAvailable&&e.push({value:`assistant`,label:_(`views.recordings.assistant_search`),icon:Ze}),d.imageSearchAvailable&&!k.value&&e.push({value:`image`,label:_(`views.recordings.image_search`),icon:xt}),e}),A=K(()=>pe.value.find(e=>e.value===ae.value)??pe.value[0]),me=K(()=>[{label:_(`views.recordings.content_kind_all`),value:`all`},{label:_(`views.recordings.content_kind_events`),value:`events`},{label:_(`views.recordings.content_kind_episodes`),value:`episodes`}]),he=K(()=>[{label:_(`views.recordings.filter_and`),value:`and`},{label:_(`views.recordings.filter_or`),value:`or`}]),ge=K(()=>[{label:_(`views.recordings.time_1h`),value:`1h`},{label:_(`views.recordings.time_1d`),value:`1d`},{label:_(`views.recordings.time_1w`),value:`1w`},{label:_(`views.recordings.time_1m`),value:`1m`}]),_e=K(()=>E.filter(e=>!o.has(e)).map(e=>({label:_(`views.recordings.type_${e}`),value:e,icon:x[e]??C}))),ve=K(()=>({label:_(`views.recordings.type_other`),value:b,icon:x.other??C})),be=K(()=>w.map(e=>({label:_(tt(e)),value:e,icon:te[e]??C}))),xe=K(()=>i.map(e=>({label:_(nt(e)),value:e,icon:x[e]??C}))),Se=K(()=>s.map(e=>({label:_(et(e)),value:e,icon:x[e]??C}))),we=K(()=>h.map(e=>({label:_(rt(e)),value:e,swatch:c[e]}))),Ee=K(()=>S.map(e=>({label:_(Qe(e)),value:e})));function j(e,t){p(`update:filters`,{...d.filters,[e]:t})}let De=u(e=>{j(`search`,e)},300);function Oe(e){let t=new Set(d.cameras.filter(t=>e.length===0||e.includes(t.room??``)).map(e=>e.id));p(`update:filters`,{...d.filters,rooms:e,cameraIds:d.filters.cameraIds.filter(e=>t.has(e))})}function ke(){let e=ie.value.trim();e&&!d.assistantSearchLoading&&p(`assistant-search`,e)}function Ae(e){oe.value=!1,Me(e.dataTransfer?.files)}function je(e){let t=e.target;Me(t.files),t.value=``}function Me(e){let t=Array.from(e??[]).find(e=>e.type.startsWith(`image/`));t&&p(`image-search`,t)}function Ne(){let e=D.value.trim();j(`semanticQuery`,e),p(`semantic-search`,e)}function Pe(e){let t=[...d.filters.eventTypes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),j(`eventTypes`,t)}function Fe(e){let t=[...d.filters.audioLabels],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),j(`audioLabels`,t)}function Le(e){let t=[...d.filters.sensorEvents],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),j(`sensorEvents`,t)}function Re(e){let t=[...d.filters.hasAttributes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),j(`hasAttributes`,t)}function R(e,t){let n=d.filters[e];j(e,n.includes(t)?n.filter(e=>e!==t):[...n,t])}function Be(e){O[e]=!O[e]}return L(D,e=>{!e?.trim()&&d.filters.semanticQuery&&j(`semanticQuery`,``)}),m(re,e=>{let t=e.target;t.closest(`#recordings-sidebar-toggle`)||t.closest(`[data-pc-section="overlay"], [data-pc-section="panel"], .p-connected-overlay`)||d.isOpen&&d.isOverlay&&p(`close`)}),n({sidebarWidth:ce}),(n,r)=>{let i=l,o=a,s=Y,c=f,u=Ce,d=e,p=xt,m=ct,h=Te,_=se,y=g,b=ee;return F(),B(`nav`,{ref_key:`sidebarRef`,ref:re,class:`recordings-sidebar fixed transition-all duration-200 overflow-x-hidden overflow-y-auto md:!pl-0 pl-safe flex flex-col z-4`,style:ze({width:`${J(ce)}px`,borderRightWidth:t.isOpen?`1px`:`0px`,paddingBottom:`calc(var(--safe-area-inset-top) + ${J(v)}px + var(--cui-bottom-bar) + var(--cui-bottom-gap))`})},[z(`div`,{class:`flex flex-col gap-4 px-4 pt-4`,style:ze({width:`${dr}px`})},[z(`div`,vn,[z(`label`,yn,N(n.$t(`views.recordings.content_kind`)),1),H(i,{"model-value":t.filters.contentKind,options:J(me),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`content-kind-toggle`,"onUpdate:modelValue":r[0]||=e=>j(`contentKind`,e)},null,8,[`model-value`,`options`]),J(k)?(F(),B(G,{key:0},[z(`span`,bn,N(J(fe)),1),z(`span`,xn,N(n.$t(`views.recordings.content_kind_episodes_hint`)),1)],64)):q(``,!0)]),r[27]||=z(`div`,{class:`sidebar-divider`},null,-1),J(A)?(F(),B(`div`,Sn,[z(`label`,Cn,N(J(A).label),1),J(pe).length>1?(F(),U(i,{key:0,"model-value":J(A).value,options:J(pe),"option-value":`value`,"data-key":`value`,"allow-empty":!1,class:`search-mode-toggle`,"onUpdate:modelValue":r[1]||=e=>ae.value=e},{option:M(({option:e})=>[He((F(),U(P(e.icon),{"aria-label":e.label,class:`w-4 h-4`},null,8,[`aria-label`])),[[b,e.label,void 0,{bottom:!0}]])]),_:1},8,[`model-value`,`options`])):q(``,!0),J(A).value===`text`?(F(),B(G,{key:1},[H(o,{"model-value":t.filters.search,placeholder:n.$t(`views.recordings.search_placeholder`),class:`w-full text-sm`,"onUpdate:modelValue":r[2]||=e=>J(De)(e)},null,8,[`model-value`,`placeholder`]),z(`span`,wn,N(J(fe)),1)],64)):J(A).value===`semantic`?(F(),B(G,{key:2},[H(s,{modelValue:J(D),"onUpdate:modelValue":r[3]||=e=>W(D)?D.value=e:null,placeholder:n.$t(`views.recordings.semantic_search_placeholder`),class:`w-full text-sm semantic-textarea`,rows:`3`,disabled:!t.semanticSearchAvailable},null,8,[`modelValue`,`placeholder`,`disabled`]),H(c,{label:n.$t(`views.recordings.semantic_search_button`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,loading:t.semanticSearchLoading,disabled:!t.semanticSearchAvailable||!J(D)?.trim(),onClick:Ne},null,8,[`label`,`loading`,`disabled`]),t.semanticCount==null?q(``,!0):(F(),B(`span`,Tn,[H(u,{class:`w-3 h-3`}),Ue(` `+N(n.$t(`views.recordings.semantic_results`,{count:t.semanticCount})),1)])),t.filters.semanticQuery?(F(),B(`div`,En,[z(`label`,Dn,N(n.$t(`views.recordings.min_match_score`)),1),z(`div`,On,[H(d,{"model-value":t.filters.minSemanticScore,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":r[4]||=e=>j(`minSemanticScore`,e)},null,8,[`model-value`]),z(`span`,kn,N(Math.round(t.filters.minSemanticScore*100))+`%`,1)])])):q(``,!0)],64)):J(A).value===`assistant`?(F(),B(G,{key:3},[H(o,{modelValue:J(ie),"onUpdate:modelValue":r[5]||=e=>W(ie)?ie.value=e:null,placeholder:n.$t(`views.recordings.assistant_search_placeholder`),class:`w-full text-sm`,disabled:t.assistantSearchLoading,onKeydown:Ye(qe(ke,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`disabled`,`onKeydown`]),H(c,{label:n.$t(`views.recordings.assistant_search_button`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,loading:t.assistantSearchLoading,disabled:!J(ie).trim(),onClick:ke},null,8,[`label`,`loading`,`disabled`]),t.assistantSearchNote?(F(),B(`span`,An,N(t.assistantSearchNote),1)):q(``,!0)],64)):(F(),B(`label`,{key:4,class:Ve([`image-drop`,{"image-drop-over":J(oe)}]),onDragover:r[6]||=qe(e=>oe.value=!0,[`prevent`]),onDragleave:r[7]||=qe(e=>oe.value=!1,[`prevent`]),onDrop:qe(Ae,[`prevent`])},[H(p,{class:`w-6 h-6`}),z(`span`,jn,N(n.$t(`views.recordings.image_search_drop`)),1),z(`input`,{type:`file`,accept:`image/*`,class:`hidden`,onChange:je},null,32)],34))])):q(``,!0),J(A)?(F(),B(`div`,Mn)):q(``,!0),J(le).length>1?(F(),B(`div`,Nn,[z(`label`,Pn,N(n.$t(`views.recordings.rooms`)),1),H(m,{"model-value":t.filters.rooms,options:J(le),"option-label":`name`,"option-value":`id`,placeholder:n.$t(`views.recordings.all_rooms`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":r[8]||=e=>Oe(e)},null,8,[`model-value`,`options`,`placeholder`])])):q(``,!0),z(`div`,Fn,[z(`label`,In,N(n.$t(`views.recordings.cameras`)),1),H(m,{"model-value":t.filters.cameraIds,options:J(ue),"option-label":`name`,"option-value":`id`,placeholder:n.$t(`views.recordings.all_cameras`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":r[9]||=e=>j(`cameraIds`,e)},null,8,[`model-value`,`options`,`placeholder`])]),J(de)&&!J(k)?(F(),B(G,{key:3},[r[20]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,Ln,[z(`label`,Rn,N(n.$t(`views.recordings.grid_search`)),1),z(`div`,zn,[H(h,{camera:J(de),"object-fit":`cover`},null,8,[`camera`]),H(_,{"model-value":t.filters.gridRegions,"onUpdate:modelValue":r[10]||=e=>j(`gridRegions`,e)},null,8,[`model-value`])]),H(c,{label:n.$t(`views.recordings.grid_clear`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,disabled:t.filters.gridRegions.length===0,onClick:r[11]||=e=>j(`gridRegions`,[])},null,8,[`label`,`disabled`])])],64)):q(``,!0),J(k)?q(``,!0):(F(),B(`div`,Bn)),J(k)?q(``,!0):(F(),B(`div`,Vn,[z(`label`,Hn,N(n.$t(`views.recordings.confidence`)),1),z(`div`,Un,[H(d,{"model-value":t.filters.minConfidence,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":r[12]||=e=>j(`minConfidence`,e)},null,8,[`model-value`]),z(`span`,Wn,N(Math.round(t.filters.minConfidence*100))+`%`,1)])])),r[28]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,Gn,[z(`label`,Kn,N(n.$t(`views.recordings.time_range`)),1),z(`div`,qn,[(F(!0),B(G,null,I(J(ge),e=>(F(),U(c,{key:e.value,label:e.label,severity:t.filters.timeRange===e.value?void 0:`secondary`,outlined:t.filters.timeRange!==e.value,size:`small`,class:`text-xs flex-1 min-w-0`,onClick:n=>j(`timeRange`,t.filters.timeRange===e.value?null:e.value)},null,8,[`label`,`severity`,`outlined`,`onClick`]))),128))])]),J(k)?q(``,!0):(F(),B(G,{key:6},[r[25]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,Jn,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[13]||=e=>Be(`sensorEvents`)},[z(`span`,null,N(n.$t(`views.recordings.sensor_events`)),1),(F(),U(P(J(O).sensorEvents?J(T):J(ne)),{class:`w-4 h-4 text-muted`}))]),J(O).sensorEvents?(F(),B(`div`,Yn,[(F(!0),B(G,null,I(J(be),e=>(F(),B(G,{key:e.value},[z(`label`,Xn,[H(y,{"model-value":t.filters.sensorEvents.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Le(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(F(),U(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,N(e.label),1)]),e.value===`audio`&&t.filters.sensorEvents.includes(`audio`)?(F(),B(`div`,Zn,[(F(!0),B(G,null,I(J(xe),e=>(F(),B(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[H(y,{"model-value":t.filters.audioLabels.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Fe(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(F(),U(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,N(e.label),1)]))),128))])):q(``,!0)],64))),128))])):q(``,!0)]),z(`div`,Qn,[r[21]||=z(`div`,{class:`filter-logic-line`},null,-1),H(i,{"model-value":t.filters.filterLogicTriggers,options:J(he),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":r[14]||=e=>j(`filterLogicTriggers`,e)},null,8,[`model-value`,`options`]),r[22]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,$n,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[15]||=e=>Be(`eventTypes`)},[z(`span`,null,N(n.$t(`views.recordings.event_type`)),1),(F(),U(P(J(O).eventTypes?J(T):J(ne)),{class:`w-4 h-4 text-muted`}))]),J(O).eventTypes?(F(),B(`div`,er,[(F(!0),B(G,null,I(J(_e),e=>(F(),B(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[H(y,{"model-value":t.filters.eventTypes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Pe(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(F(),U(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,N(e.label),1)]))),128))])):q(``,!0)]),z(`div`,tr,[r[23]||=z(`div`,{class:`filter-logic-line`},null,-1),H(i,{"model-value":t.filters.filterLogicAttributes,options:J(he),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":r[16]||=e=>j(`filterLogicAttributes`,e)},null,8,[`model-value`,`options`]),r[24]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,nr,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[17]||=e=>Be(`attributes`)},[z(`span`,null,N(n.$t(`views.recordings.attributes`)),1),(F(),U(P(J(O).attributes?J(T):J(ne)),{class:`w-4 h-4 text-muted`}))]),J(O).attributes?(F(),B(`div`,rr,[(F(!0),B(G,null,I(J(Se),e=>(F(),B(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[H(y,{"model-value":t.filters.hasAttributes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Re(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(F(),U(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,N(e.label),1)]))),128)),z(`label`,ir,[H(y,{"model-value":t.filters.eventTypes.includes(J(ve).value),binary:!0,"onUpdate:modelValue":r[18]||=e=>Pe(J(ve).value)},null,8,[`model-value`]),(F(),U(P(J(ve).icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,N(J(ve).label),1)])])):q(``,!0)]),r[26]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,ar,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[19]||=e=>Be(`vehicles`)},[z(`span`,null,N(n.$t(`views.recordings.vehicles`)),1),(F(),U(P(J(O).vehicles?J(T):J(ne)),{class:`w-4 h-4 text-muted`}))]),J(O).vehicles?(F(),B(`div`,or,[z(`div`,sr,[(F(!0),B(G,null,I(J(we),e=>He((F(),B(`button`,{key:e.value,class:Ve([`vehicle-color`,{"vehicle-color-active":t.filters.vehicleColors.includes(e.value)}]),style:ze({background:e.swatch}),"aria-label":e.label,"aria-pressed":t.filters.vehicleColors.includes(e.value),onClick:t=>R(`vehicleColors`,e.value)},null,14,cr)),[[b,{value:e.label},void 0,{top:!0}]])),128))]),z(`div`,lr,[(F(!0),B(G,null,I(J(Ee),e=>(F(),U(c,{key:e.value,label:e.label,severity:t.filters.vehicleTypes.includes(e.value)?void 0:`secondary`,outlined:!t.filters.vehicleTypes.includes(e.value),size:`small`,class:`text-xs`,onClick:t=>R(`vehicleTypes`,e.value)},null,8,[`label`,`severity`,`outlined`,`onClick`]))),128))]),z(`span`,ur,N(n.$t(`views.recordings.vehicle_filter_hint`)),1)])):q(``,!0)])],64))],4)],4)}}}),[[`__scopeId`,`data-v-be7d97b8`]]),pr={class:`font-semibold text-xl truncate`},mr={key:0,class:`image-drop-overlay`},hr={class:`text-sm font-semibold`},gr={class:`w-full h-full relative`},_r={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10`},vr={class:`relative z-2 page-title !m-0`},yr={key:1,class:`fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-safe-offset-2 flex items-center`},br={key:3,class:`flex justify-center py-4`},xr={key:4,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Sr={class:`text-muted text-sm`},Cr=288,wr=ce(Xe({__name:`Recordings`,setup(e){let n=new dt,r=new ke,i=new k,a=we(),s=xe(),{bottombarHeight:l}=ye(),{status:u,checking:d}=_(),{openEventTrace:p}=be(),{request:m,closeSimilarSearch:h}=le(),g=t(`@camera.ui/camera-ui-nvr`),b=ie(),{t:S,locale:w}=y(),{smBreakpoint:E,xlBreakpoint:se,mdBreakpoint:ce}=D(),{registerScrollToTop:fe}=ge();if(typeof VideoDecoder<`u`){let e=x({cacheSize:20});Le(o,e),ne(()=>e.dispose())}let{results:pe,isSearching:_e,isAvailable:Te,hasSearched:Fe,search:P,clear:I}=v(),{result:R,isSearching:Ue,isAvailable:We,licenseRequired:Ge,search:W,clear:Je}=C(),{data:Ye}=n.getAssistantStatusQuery(),{data:Xe}=r.getCamerasQuery({page:1,pageSize:-1}),{data:Ze}=i.getUserQuery(K(()=>s.user?.username??``)),Qe=Array.from({length:24},(e,t)=>t),$e={contentKind:`all`,favoritesOnly:!1,search:``,semanticQuery:``,filterLogicTriggers:`or`,filterLogicAttributes:`or`,rooms:[],cameraIds:[],timeRange:null,customDateRange:null,eventTypes:[],audioLabels:[],hasAttributes:[],vehicleColors:[],vehicleTypes:[],sensorEvents:[],gridRegions:[],minConfidence:.5,minSemanticScore:.5,onlyWithRecordings:!0},et={"1h":36e5,"1d":864e5,"1w":6048e5,"1m":2592e6},tt=Ie(`gridRef`),nt=Ie(`viewMenuRef`),rt=Ie(`reindexAnchorRef`),it=Ke({hasDetections:!0,withRecordingInfo:!0,hasRecording:!0}),at=Ke([]),ot=V(`closed`),st=V(!1),Y=V({...$e}),ct=V(!1),pt=V(``),bt=V(0),X=V(),Z=V(!1),St=V(null),Ct=!1,wt=JSON.stringify(it.value),{left:Tt}=T(rt),Dt=K(()=>{let e=l.value>0?`calc(1.25rem + var(--safe-area-inset-bottom))`:`calc(max(8px, var(--safe-area-inset-bottom)) + 0px)`;return`calc(${l.value}px + ${e})`}),Ot=K(()=>se.value?!0:ot.value===`opened`),kt=K(()=>ce.value),At=Pe(()=>tt.value?.scrollY??0),jt=K(()=>Ot.value&&kt.value?!0:At.value&&!u.value?.running),Mt=K(()=>ce.value?`0px`:Ot.value?`${Cr}px`:`0px`),Q=K(()=>(Xe.value?.result??[]).map(e=>({id:e._id,name:e.name,room:e.room}))),Nt=K(()=>{let e=new Map;for(let t of Q.value)e.set(t.id,t.name);return e}),Pt=K(()=>{let e=new Map;for(let t of Xe.value?.result??[])e.set(t._id,t);return e}),Ft=K(()=>{let e=Y.value.rooms;return(e.length>0?Q.value.filter(t=>e.includes(t.room??``)):Q.value).map(e=>e.id)}),It=K(()=>Y.value.cameraIds.filter(e=>Ft.value.includes(e))),Lt=K(()=>Ft.value);fe(()=>tt.value?.scrollToTop());let{events:Rt,isLoading:zt,hasMore:Bt,stats:Vt,loadMore:Ht,loadThumbnails:Ut,deleteEvents:Wt,reset:Gt,loadFailed:Kt,licenseRequired:qt,pluginUnavailable:Jt}=c({availableCameraIds:Lt,cameraIds:It,realtime:!0,pageSize:40,filter:it,withEpisodes:!0,withStats:!0}),Yt=K(()=>{let e=new Map;for(let t of pe.value??[]){let n=e.get(t.eventId);(!n||t.score>n)&&e.set(t.eventId,t.score)}return e}),Xt=K(()=>Fe.value),$=K(()=>!!m.value),Zt=K(()=>new Map((R.value?.events??[]).map(e=>[e.id,e]))),Qt=K(()=>{let e=[],t=new Set;for(let n of R.value?.matches??[]){let r=Zt.value.get(n.eventId);if(!r)continue;let i=n.segment>=0&&r.segments[n.segment]?n.segment:void 0,a=i===void 0?r.id:`${r.id}:seg:${i}`;t.has(a)||(t.add(a),e.push({event:r,key:a,segIndex:i}))}return e}),$t=K(()=>{let e=Y.value,t=It.value.length?It.value:e.rooms.length?Ft.value:[],n=e.timeRange===`custom`?e.customDateRange:null;return{cameraIds:t.length?t:void 0,startMs:n?n[0].getTime():X.value,endMs:n?n[1].getTime():void 0}}),en=K(()=>$.value?Ue.value:zt.value),tn=K(()=>{if($.value){let e=R.value;return!!e&&e?.mode!==`none`&&!Qt.value.length&&!Ue.value}return!rn.value.length&&!zt.value&&!_e.value}),nn=K(()=>$.value?S(`views.recordings.similar_empty`):qt.value?S(`views.recordings.vehicle_filter_license`):Jt.value?S(`views.recordings.recordings_unavailable`):Kt.value?S(`views.recordings.load_failed`):S(`views.recordings.no_recordings`)),rn=K(()=>{let e=Rt.value.filter(e=>e.state===`ended`||(e.segments?.length??0)>0),t=Y.value;if(X.value!==void 0){let t=X.value;e=e.filter(e=>e.startTime>=t)}return t.gridRegions.length>0&&(e=e.filter(e=>e.segments.some(e=>e.detections.some(e=>e.box&&ht(e.box,t.gridRegions))))),t.favoritesOnly&&(e=e.filter(e=>e.favorite)),Xt.value&&(e=e.filter(e=>{let n=Yt.value.get(e.id);return n!=null&&n>=t.minSemanticScore}),e.sort((e,t)=>(Yt.value.get(t.id)??0)-(Yt.value.get(e.id)??0))),e}),on=K(()=>Y.value.contentKind===`episodes`),sn=K(()=>{let e=Y.value;return e.search.trim()!==``||e.eventTypes.length>0||e.audioLabels.length>0||e.hasAttributes.length>0||e.vehicleColors.length>0||e.vehicleTypes.length>0||e.sensorEvents.length>0||e.minConfidence!==.5}),cn=K(()=>Ye.value?.state===`ready`),ln=K(()=>{if(Y.value.contentKind===`events`)return[];g.storeVersion.value;let e=Y.value;if(!on.value&&(Xt.value||e.gridRegions.length>0||sn.value))return[];let t=It.value.length>0?It.value:Lt.value,n=X.value??0,r=1/0;if(e.timeRange===`custom`&&e.customDateRange&&(n=Math.max(n,e.customDateRange[0].getTime()),r=e.customDateRange[1].getTime()),Bt.value&&!on.value){let e=1/0;for(let t of Rt.value)e=Math.min(e,t.thumbnailAt??t.startTime);n=Math.max(n,e)}let i=[];for(let a of g.getEpisodes())a.description&&(!e.favoritesOnly||a.favorite)&&(n&&a.endTime<n||a.startTime>r||t.length>0&&!a.members.some(e=>t.includes(e.cameraId))||i.push({event:void 0,key:`episode:${a.id}`,episode:a}));return i}),un=K(()=>{if($.value)return Qt.value;if(on.value)return[...ln.value].sort(ft);let e=Z.value&&at.value.length?[...at.value]:rn.value.map(e=>({event:e,key:e.id}));return ln.value.length&&(e.push(...ln.value),e.sort(ft)),e}),fn=K(()=>{let e=Vt.value,t=Y.value;if(!e||!Bt.value||Xt.value||t.gridRegions.length>0||t.timeRange&&X.value===void 0)return;if(on.value)return e.episodes;let n=Z.value?e.segments:e.total;if(n!==void 0)return n+(t.contentKind!==`events`&&!sn.value?e.episodes:0)}),pn=K(()=>he(void 0,`admin`)),mn=K(()=>rn.value.filter(e=>e.state===`ended`)),{selectionMode:hn,selectedIds:gn,allSelected:_n,bulkBusy:vn,enterSelectionMode:yn,exitSelectionMode:bn,toggleSelectAll:xn,toggleSelection:Sn}=O(mn,e=>e.id);function Cn(){let e=[...gn.value];e.length&&!vn.value&&a.openTextDialog({data:{title:S(`components.dialog.title.confirm`),contentText:S(`views.recordings.delete_selected_confirm`,{count:e.length}),confirmText:S(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{vn.value=!0;try{await Wt(e),bn(),b.add({severity:`success`,detail:S(`views.recordings.delete_selected_done`,{count:e.length}),life:5e3})}catch(e){b.add({severity:`error`,detail:e?.message??String(e),life:5e3})}finally{vn.value=!1}}})}let wn=K(()=>[{key:`ungroup`,label:S(`views.recordings.ungroup`),description:S(`views.recordings.ungroup_hint`),toggle:!0,toggleState:Z.value,onClick:()=>{Ct=!0,Z.value=!Z.value,s.updateUser({preferences:{recordings:{ungrouped:Z.value}}})}},{key:`onlyWithRecordings`,label:S(`views.recordings.only_with_recordings`),description:S(`views.recordings.only_with_recordings_hint`),toggle:!0,toggleState:Y.value.onlyWithRecordings,onClick:()=>{Y.value={...Y.value,onlyWithRecordings:!Y.value.onlyWithRecordings}}},...pn.value?[{key:`favoritesOnly`,label:S(`views.recordings.favorites_only`),description:S(`views.recordings.favorites_hint`),toggle:!0,toggleState:Y.value.favoritesOnly,onClick:()=>{Y.value={...Y.value,favoritesOnly:!Y.value.favoritesOnly}}}]:[]]);function Tn(){a.openComponentDialog(Et,{data:{title:S(`views.recordings.reindex.title`),contentProps:{},confirmText:S(`views.recordings.reindex.start`)}})}function En(){a.openComponentDialog(an,{data:{title:S(`views.recordings.export.title`),contentProps:{cameras:Q.value,preselect:Y.value.cameraIds?.length?Y.value.cameraIds:[]},confirmText:S(`views.recordings.export.confirm`)}})}function Dn(){let e=ot.value;ot.value=e===`opened`?`closed`:`opened`}function On(){ot.value=`closed`}function kn(e){!e.semanticQuery?.trim()&&Y.value.semanticQuery?.trim()&&I(),Y.value=e}async function An(e){ct.value=!0,pt.value=``;try{let t=await ut(e,w.value,Intl.DateTimeFormat().resolvedOptions().timeZone);kn({...$e,...t.filters,favoritesOnly:pn.value&&t.filters.favoritesOnly}),jn(t.filters.semanticQuery),pt.value=t.note}catch(e){b.add({severity:`error`,detail:e?.response?.data?.message??S(`views.recordings.assistant_search_failed`),life:5e3})}finally{ct.value=!1}}function jn(e){if(!e.trim()){I();return}P(e)}function Mn(e,t){let n=Zt.value.get(e);return n&&!g.getEvent(e)?g.loadThumbnails(e,n.cameraId,t):Ut(e,t)}function Nn(e){if(!e.vehicleColors.length&&!e.vehicleTypes.length)return;let t={};return e.vehicleColors.length&&(t.color=e.vehicleColors),e.vehicleTypes.length&&(t.vehicle_type=e.vehicleTypes),t}function Pn(e,t){let n=Pt.value.get(e.cameraId);n&&p(e,n,t)}function Fn(e){a.openComponentDialog(dn,{data:{title:S(`components.similar.image_search_title`),hideConfirmButton:!0,contentProps:{image:e}},dialogSize:{desktop:{width:`720px`}}})}function In(e){return!!e.dataTransfer?.types.includes(`Files`)}function Ln(e){We.value&&In(e)&&bt.value++}function Rn(e){In(e)&&(bt.value=Math.max(0,bt.value-1))}function zn(e){bt.value=0;let t=Array.from(e.dataTransfer?.files??[]).find(e=>e.type.startsWith(`image/`));t&&We.value&&Fn(t)}function Bn(e,t){let n=Pt.value.get(e.cameraId);n&&a.openComponentDialog(Oe,{data:{title:n.name,dedupeKey:`camera-event:${n._id}:${t}`,stayActive:!0,hideCancelButton:!0,hideConfirmButton:!0,contentProps:{camera:n,eventTimestamp:t},headerActions:e.segments?.some(e=>e?.description)?[{icon:Ce,toggle:!0,onClick:()=>{}}]:void 0,draggable:!0,blockDragOnSelectors:[`.p-dialog-body`],dismissableMask:!1,modal:!1,dialogContentClass:`!px-0 h-full`,goTo:`/cameras/${n.name}?startTs=${t}`},dialogSize:{desktop:{maxWidth:`800px`,maxHeight:`calc(100vh - max(1rem, var(--safe-area-inset-top)) - max(1rem, var(--safe-area-inset-bottom)))`,width:`50vw`}}})}return L(se,e=>{e&&(ot.value=`closed`)}),L(()=>Y.value.timeRange,e=>{X.value=e&&et[e]?Date.now()-et[e]:void 0},{immediate:!0}),L(Y,e=>{let t=e.eventTypes.length>0||e.sensorEvents.length>0||e.audioLabels.length>0||e.hasAttributes.length>0,n={types:e.eventTypes.length>0?e.eventTypes:void 0,triggers:e.sensorEvents.length>0?e.sensorEvents:void 0,triggerLabels:e.audioLabels.length>0?e.audioLabels:void 0,attributes:e.hasAttributes.length>0?e.hasAttributes:void 0,attributeLabels:Nn(e),filterLogicTriggers:t?e.filterLogicTriggers:void 0,filterLogicAttributes:t?e.filterLogicAttributes:void 0,search:e.search||void 0,minConfidence:e.minConfidence>0?e.minConfidence:void 0,hasDetections:!t,withRecordingInfo:!0,hasRecording:e.onlyWithRecordings||void 0,favoritesOnly:e.favoritesOnly||void 0,startedSinceMs:X.value},r=JSON.stringify(n);r!==wt&&(wt=r,it.value=n)},{deep:!0,immediate:!0}),L(Ze,e=>{if(!e||Ct)return;let t=e.preferences?.recordings?.ungrouped;t!==void 0&&(Z.value=t)},{immediate:!0}),L([m,()=>JSON.stringify($t.value),We],([e,,t])=>{e?t&&W(e.query,$t.value):Je()},{immediate:!0}),L([Z,rn,Xt],([e,t,n])=>{at.value=e?mt(t,n):[]}),L(()=>Y.value.cameraIds,e=>{e.length!==1&&Y.value.gridRegions.length>0&&(Y.value={...Y.value,gridRegions:[]})}),Re(()=>{requestAnimationFrame(()=>{st.value=!0})}),(e,t)=>{let n=oe,r=re,i=Ne,a=f,o=gt,s=xt,c=yt,l=vt,p=Ee,g=ae,_=Ae,v=je,y=te,b=Me,x=De,S=de,C=me,w=ee;return F(),B(`div`,null,[H(n,{position:`center`},{default:M(()=>[z(`span`,pr,N(e.$t(`views.recordings.title`)),1)]),_:1}),H(n,{position:`left`},{default:M(()=>[H(a,{id:`recordings-sidebar-toggle`,severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:Dn},{icon:M(()=>[J(ot)===`closed`?(F(),U(r,{key:0,width:`100%`,height:`100%`})):(F(),U(i,{key:1,width:`100%`,height:`100%`}))]),_:1})]),_:1}),H(n,{position:`right`},{default:M(()=>[H(a,{severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:t[0]||=e=>J(nt)?.toggleMenu(e)},{icon:M(()=>[H(o,{width:`100%`,height:`100%`})]),_:1})]),_:1}),H(fr,{filters:J(Y),cameras:J(Q),"is-open":J(Ot),"is-overlay":J(kt),"result-count":J(un).length,"result-total":J(fn),"result-capped":J(Vt)?.capped,"semantic-count":J(Xt)?J(Yt).size:void 0,"semantic-search-available":J(Te),"semantic-search-loading":J(_e),"assistant-search-available":J(cn),"assistant-search-loading":J(ct),"assistant-search-note":J(pt),"image-search-available":J(We),"onUpdate:filters":kn,onSemanticSearch:jn,onAssistantSearch:An,onImageSearch:Fn,onClose:On},null,8,[`filters`,`cameras`,`is-open`,`is-overlay`,`result-count`,`result-total`,`result-capped`,`semantic-count`,`semantic-search-available`,`semantic-search-loading`,`assistant-search-available`,`assistant-search-loading`,`assistant-search-note`,`image-search-available`]),(F(),U(Be,{to:`#container`,defer:``},[J(Ot)&&J(kt)?(F(),B(`div`,{key:0,class:`fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1`,onClick:On})):q(``,!0)])),z(`main`,{ref_key:`reindexAnchorRef`,ref:rt,class:`relative w-full h-full`,style:ze({paddingLeft:J(Mt),transition:J(st)?`padding-left 200ms`:void 0}),onDragenter:Ln,onDragleave:Rn,onDragover:t[3]||=qe(()=>{},[`prevent`]),onDrop:qe(zn,[`prevent`])},[J(bt)>0?(F(),B(`div`,mr,[H(s,{class:`w-10 h-10`}),z(`span`,hr,N(e.$t(`views.recordings.image_drop_overlay`)),1)])):q(``,!0),z(`div`,gr,[J(E)?q(``,!0):(F(),B(`div`,_r,[t[4]||=z(`div`,{class:`ml-2`},null,-1),J(se)?q(``,!0):(F(),U(a,{key:0,id:`recordings-sidebar-toggle`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Dn},{icon:M(()=>[J(Ot)?(F(),U(c,{key:0,width:`100%`,height:`100%`})):(F(),U(l,{key:1,width:`100%`,height:`100%`}))]),_:1})),z(`h1`,vr,N(e.$t(`views.recordings.title`)),1),t[5]||=z(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[z(`div`),z(`div`),z(`div`),z(`div`),z(`div`),z(`div`)],-1)])),J(E)?q(``,!0):(F(),B(`div`,yr,[He((F(),U(a,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg relative z-2`,onClick:t[1]||=e=>J(nt)?.toggleMenu(e)},{icon:M(()=>[H(o,{width:`100%`,height:`100%`})]),_:1})),[[w,{value:e.$t(`views.recordings.view_options`)},void 0,{bottom:!0}]])])),z(`div`,{class:Ve([`px-2 h-full w-full flex flex-col`,{"pt-4":J(E),"pt-[calc(40px+2rem)]":!J(E)}])},[J($)?(F(),U(p,{key:0,crop:J(m)?.crop,"object-label":J(m)?.objectLabel,result:J(R),count:J(Qt).length,searching:J(Ue)||!J(We),"license-required":J(Ge),onClose:J(h)},null,8,[`crop`,`object-label`,`result`,`count`,`searching`,`license-required`,`onClose`])):q(``,!0),J(un).length?(F(),U(v,{key:1,ref_key:`gridRef`,ref:tt,items:J(un),"min-item-width":J(E)?160:180,gap:8,"has-more":J(Bt)&&!J($),"load-more":J(Ht),"item-key":e=>e.key,class:`flex-1 min-h-0`,style:{"--cui-scroll-end":`calc(var(--cui-bottom-gap) - 8px)`}},{item:M(({item:e})=>[e.episode?(F(),U(g,{key:0,episode:e.episode,"camera-by-id":J(Pt),fluid:``,"click-disabled":J(hn)},null,8,[`episode`,`camera-by-id`,`click-disabled`])):(F(),U(_,{key:1,event:e.event,"camera-name":J(Nt).get(e.event.cameraId),camera:J(Pt).get(e.event.cameraId),"load-thumbnails":Mn,"semantic-score":J(Yt).get(e.event.id),"seg-index":e.segIndex,"selection-mode":J(hn)&&e.event.state===`ended`,selected:J(gn).has(e.event.id),"sibling-active":e.segIndex!==void 0&&J(St)===e.event.id,onSelect:t=>J(Sn)(e.event.id),onScrollToEvent:t=>Bn(e.event,t),onOpenTrace:t=>Pn(e.event,t),onMouseenter:t=>St.value=e.segIndex===void 0?null:e.event.id,onMouseleave:t[2]||=e=>St.value=null},null,8,[`event`,`camera-name`,`camera`,`semantic-score`,`seg-index`,`selection-mode`,`selected`,`sibling-active`,`onSelect`,`onScrollToEvent`,`onOpenTrace`,`onMouseenter`]))]),_:1},8,[`items`,`min-item-width`,`has-more`,`load-more`,`item-key`])):J(en)?(F(),U(v,{key:2,items:J(Qe),"min-item-width":J(E)?160:180,gap:8,"item-key":e=>e,class:`flex-1 min-h-0 pointer-events-none`},{item:M(()=>[H(y,{width:`100%`,height:`100%`,class:`rounded-xl`})]),_:1},8,[`items`,`min-item-width`,`item-key`])):q(``,!0),J(en)&&J(un).length&&!J(tt)?.loadingMore||J(_e)?(F(),B(`div`,br,[H(b,{width:`24px`,height:`24px`,class:`text-muted`})])):q(``,!0),J(tn)?(F(),B(`div`,xr,[H(x,{class:`w-12 h-12 text-muted`}),z(`span`,Sr,N(J(nn)),1),J(Kt)&&!J(Jt)&&!J($)&&!J(qt)?(F(),U(a,{key:0,severity:`secondary`,class:`cui-button-small`,label:e.$t(`views.recordings.load_failed_retry`),onClick:J(Gt)},null,8,[`label`,`onClick`])):q(``,!0)])):q(``,!0)],2)])],36),J(pn)&&J(Q).length?(F(),B(`div`,{key:0,class:Ve([`fixed z-10`,J(jt)?`scale-0 opacity-0`:`scale-100 opacity-100`]),style:ze({left:J(jt)?`calc(${J(Mt)} + 0.75rem + var(--safe-area-inset-left))`:`calc(${J(Tt)}px + ${J(Mt)} + 0.75rem)`,bottom:J(Dt),transition:J(st)?`left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out`:void 0})},[H(a,{severity:`secondary`,rounded:``,class:`shadow-lg`,disabled:J(u)?.running,label:J(d)?e.$t(`views.recordings.reindex.checking`):J(u)?.running?e.$t(`views.recordings.reindex.progress`,{done:J(u).done,total:J(u).total}):e.$t(`views.recordings.reindex.button`),onClick:Tn},{icon:M(()=>[J(u)?.running?(F(),U(J(Me),{key:0})):(F(),U(J(_t),{key:1}))]),_:1},8,[`disabled`,`label`])],6)):q(``,!0),J(Q).length?(F(),U(C,{key:1,"force-visible":J(hn),"scroll-y":J(tt)?.scrollY??0},{default:M(()=>[J(hn)?(F(),B(G,{key:1},[H(S,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:J(lt),"icon-props":{width:`100%`,height:`100%`},onClick:J(bn)},null,8,[`tooltip-props`,`icon`,`onClick`]),H(S,{grouped:``,"tooltip-props":{value:J(_n)?e.$t(`components.form.tooltip.deselect_all`):e.$t(`components.form.tooltip.select_all`)},"button-props":{severity:J(_n)?`primary`:`secondary`},icon:J(ve),"icon-props":{width:`100%`,height:`100%`},onClick:J(xn)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),H(S,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.delete_selected`)},"button-props":{severity:`danger`,disabled:!J(gn).size||J(vn)},icon:J(A),"icon-props":{width:`100%`,height:`100%`},onClick:Cn},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(F(),B(G,{key:0},[J(pn)&&J(rn).length&&!J($)?(F(),U(S,{key:0,grouped:``,"tooltip-props":{value:e.$t(`views.recordings.select`)},"button-props":{severity:`secondary`},icon:J(ue),"icon-props":{width:`100%`,height:`100%`},onClick:J(yn)},null,8,[`tooltip-props`,`icon`,`onClick`])):q(``,!0),H(S,{grouped:``,"tooltip-props":{value:e.$t(`views.recordings.export.title`)},"button-props":{class:`text-white`},icon:J(Se),"icon-props":{width:`26px`,height:`26px`},onClick:En},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`,`scroll-y`])):q(``,!0),H(j,{ref_key:`viewMenuRef`,ref:nt,items:J(wn),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}}),[[`__scopeId`,`data-v-4ed7ce40`]]);export{wr as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ar as e,Cr as t,Ct as n,Dr as r,Et as i,Fr as a,Hr as o,J as s,Lr as c,Nr as l,Ot as u,Pr as d,Qr as f,Sr as p,St as m,Tt as h,Vr as ee,Wr as g,_t as _,br as v,dt as te,hr as y,ht as b,jr as x,lt as S,mt as C,pt as w,ut as ne,vt as re,wt as ie,xr as ae,xt as oe,yr as se}from"./vendor-cameraui-K1Nw4PvF.js";import{In as T,Tn as E}from"./api-D1iULsSy.js";import{$n as D,Cr as O,Hn as k,In as A,Rn as j,Sr as M,Tn as N,_r as P,br as F,cn as I,dn as L,dr as R,gn as z,hn as B,ln as V,or as H,rn as U,sn as W,un as G,vn as K,yr as q}from"./vendor-Df81FCJz.js";import{E as J,N as ce,V as le,l as ue}from"./vendor-primevue-DoA2Rwcb.js";import{a as de,c as fe,d as pe,f as me,i as he,l as ge,m as _e,n as ve,o as ye,p as be,r as xe,s as Se,t as Ce,u as we}from"./CuiLightControl-ChK-SvJp.js";import{t as Y}from"./sensorIcons-BRTtoaHX.js";var Te={disabled:!1,size:`medium`},Ee={class:`cui-measurement-info__header`},De={class:`cui-measurement-info__icon`},Oe={class:`cui-measurement-info__info`},ke={key:0,class:`cui-measurement-info__label`},Ae={class:`cui-measurement-info__value`},je=T(K({__name:`CuiMeasurementInfo`,props:N({type:{},unit:{},current:{},label:{},disabled:{type:Boolean},size:{}},Te),setup(e){let{type:t}=P(e),n=W(()=>Y(t.value));return(t,r)=>(A(),L(`div`,{class:F([`cui-measurement-info`,[`cui-measurement-info--${e.size}`,{"cui-measurement-info--disabled":e.disabled}]])},[I(`div`,Ee,[I(`div`,De,[(A(),V(k(q(n)),{class:`cui-measurement-info__icon-svg`}))]),I(`div`,Oe,[e.label?(A(),L(`span`,ke,O(e.label),1)):G(``,!0),I(`span`,Ae,O(e.current==null?`--`:`${e.current} ${e.unit}`),1)])])],2))}}),[[`__scopeId`,`data-v-3344cbd6`]]),Me={detected:!1,disabled:!1,size:`medium`},Ne={class:`cui-binary-sensor__header`},Pe={class:`cui-binary-sensor__icon`},Fe={class:`cui-binary-sensor__info`},Ie={key:0,class:`cui-binary-sensor__label`},Le=T(K({__name:`CuiBinarySensor`,props:N({type:{},detected:{type:Boolean},label:{},disabled:{type:Boolean},size:{}},Me),setup(e){let t=e,{t:n}=y(),{type:r,detected:i}=P(t),a=W(()=>Y(r.value)),o=W(()=>({color:`rgb(239, 68, 68)`,filter:`drop-shadow(0 0 6px rgba(239, 68, 68, 0.5))`})),s=W(()=>({color:`var(--text-secondary-color)`})),c=W(()=>i.value?`cui-binary-sensor__status--detected`:`cui-binary-sensor__status--clear`),l=W(()=>i.value?`cui-binary-sensor__indicator--detected`:`cui-binary-sensor__indicator--clear`);return(t,r)=>(A(),L(`div`,{class:F([`cui-binary-sensor`,[`cui-binary-sensor--${e.size}`,{"cui-binary-sensor--disabled":e.disabled,"cui-binary-sensor--clear":!q(i),"cui-binary-sensor--detected":q(i)}]])},[I(`div`,Ne,[I(`div`,Pe,[(A(),V(k(q(a)),{class:`cui-binary-sensor__icon-svg`,style:M(q(i)?q(o):q(s))},null,8,[`style`]))]),I(`div`,Fe,[e.label?(A(),L(`span`,Ie,O(e.label),1)):G(``,!0),I(`span`,{class:F([`cui-binary-sensor__status`,q(c)])},O(q(i)?q(n)(`components.binary_sensor.detected`):q(n)(`components.binary_sensor.clear`)),3)]),I(`div`,{class:F([`cui-binary-sensor__indicator`,q(l)])},null,2)])],2))}}),[[`__scopeId`,`data-v-c89ce8e7`]]),Re={detected:!1,size:`medium`},ze={class:`cui-detection-info__header`},Be={class:`cui-detection-info__icon`},Ve={class:`cui-detection-info__info`},He={key:0,class:`cui-detection-info__label`},Ue={key:0,class:`cui-detection-info__decibels`},We=T(K({__name:`CuiDetectionSensorInfo`,props:N({type:{},label:{},detected:{type:Boolean},labels:{},decibels:{},size:{}},Re),setup(e){let t=e,{t:n}=y(),r={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 8px rgba(251, 146, 60, 0.6))`},i=W(()=>{if(!t.detected)return n(`components.detection_sensor.idle`);let e=(t.labels??[]).filter(Boolean);return e.length?e.join(`, `):n(`components.detection_sensor.detected`)});return(t,n)=>(A(),L(`div`,{class:F([`cui-detection-info`,[`cui-detection-info--${e.size}`,{"cui-detection-info--active":e.detected}]])},[I(`div`,ze,[I(`div`,Be,[(A(),V(k(q(Y)(e.type)),{class:`cui-detection-info__icon-svg`,style:M(e.detected?r:void 0)},null,8,[`style`]))]),I(`div`,Ve,[e.label?(A(),L(`span`,He,O(e.label),1)):G(``,!0),I(`span`,{class:F([`cui-detection-info__status`,e.detected?`cui-detection-info__status--active`:`cui-detection-info__status--idle`])},O(q(i)),3)]),e.decibels===void 0?G(``,!0):(A(),L(`span`,Ue,O(Math.round(e.decibels))+` dB`,1)),I(`div`,{class:F([`cui-detection-info__indicator`,e.detected?`cui-detection-info__indicator--active`:`cui-detection-info__indicator--idle`])},null,2)])],2))}}),[[`__scopeId`,`data-v-f3272b7a`]]),X=new Set([f.Motion,f.Object,f.Audio,f.Face,f.LicensePlate,f.Classifier]),Z=new Set([f.Gas,f.CarbonMonoxide,f.Heat,f.Cold,f.Vibration,f.Tamper,f.Problem,f.Power]),Q=new Map([[f.Illuminance,`lx`],[f.CarbonDioxide,`ppm`]]),Ge=new Set([...X,...Z,...Q.keys(),f.Light,f.Switch,f.Lock,f.Siren,f.SecuritySystem,f.Garage,f.Doorbell,f.Contact,f.Occupancy,f.Smoke,f.Leak,f.Temperature,f.Humidity,f.Battery]);function Ke(e){return Ge.has(e)}var qe=K({__name:`CuiSensorControl`,props:{sensor:{},disabled:{type:Boolean}},setup(s){function u(e){return Z.has(e.type)}function y(e){return Q.get(e.type)}function T(e){return X.has(e.type)}function E(e){let t=e.getProperty(`detections`)??[];return[...new Set(t.map(e=>e.label??e.attribute).filter(e=>!!e))]}return(D,O)=>{let k=Ce,j=ve,M=xe,N=he,P=de,F=pe,I=ye,L=Se,R=fe,z=ge,B=we,H=me,U=be,W=_e,K=Le,J=je;return q(_)(s.sensor)?(A(),V(k,{key:0,label:s.sensor.displayName.value,on:s.sensor.getProperty(q(x).On)??!1,brightness:s.sensor.getProperty(q(x).Brightness)??100,"has-brightness":s.sensor.hasCapability(`brightness`),disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:on":O[0]||=e=>s.sensor.setProperty(q(x).On,e),"onUpdate:brightness":O[1]||=e=>s.sensor.setProperty(q(x).Brightness,e)},null,8,[`label`,`on`,`brightness`,`has-brightness`,`disabled`])):q(h)(s.sensor)?(A(),V(j,{key:1,label:s.sensor.displayName.value,on:s.sensor.getProperty(q(v).On)??!1,disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:on":O[2]||=e=>s.sensor.setProperty(q(v).On,e)},null,8,[`label`,`on`,`disabled`])):q(re)(s.sensor)?(A(),V(M,{key:2,label:s.sensor.displayName.value,"current-state":s.sensor.getProperty(q(e).CurrentState)??2,"target-state":s.sensor.getProperty(q(e).TargetState)??0,disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":O[3]||=t=>s.sensor.setProperty(q(e).TargetState,t)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):q(n)(s.sensor)?(A(),V(N,{key:3,label:s.sensor.displayName.value,active:s.sensor.getProperty(q(p).Active)??!1,volume:s.sensor.getProperty(q(p).Volume)??100,"has-volume":s.sensor.hasCapability(`volume`),disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:active":O[4]||=e=>s.sensor.setProperty(q(p).Active,e),"onUpdate:volume":O[5]||=e=>s.sensor.setProperty(q(p).Volume,e)},null,8,[`label`,`active`,`volume`,`has-volume`,`disabled`])):q(m)(s.sensor)?(A(),V(P,{key:4,label:s.sensor.displayName.value,"current-state":s.sensor.getProperty(q(t).CurrentState)??3,"target-state":s.sensor.getProperty(q(t).TargetState)??3,disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":O[6]||=e=>s.sensor.setProperty(q(t).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):q(w)(s.sensor)?(A(),V(F,{key:5,label:s.sensor.displayName.value,"current-state":s.sensor.getProperty(q(a).CurrentState)??1,"target-state":s.sensor.getProperty(q(a).TargetState)??1,"obstruction-detected":s.sensor.getProperty(q(a).ObstructionDetected)??!1,disabled:s.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":O[7]||=e=>s.sensor.setProperty(q(a).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`obstruction-detected`,`disabled`])):q(te)(s.sensor)?(A(),V(I,{key:6,label:s.sensor.displayName.value,ring:s.sensor.getProperty(q(c).Ring)??!1,disabled:s.disabled,size:`small`,class:`card-border`,onTrigger:O[8]||=()=>s.sensor.setProperty(q(c).Ring,!0)},null,8,[`label`,`ring`,`disabled`])):q(ne)(s.sensor)?(A(),V(L,{key:7,label:s.sensor.displayName.value,detected:s.sensor.getProperty(q(ee).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):q(oe)(s.sensor)?(A(),V(R,{key:8,label:s.sensor.displayName.value,detected:s.sensor.getProperty(q(r).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):q(ie)(s.sensor)?(A(),V(z,{key:9,label:s.sensor.displayName.value,detected:s.sensor.getProperty(q(ae).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):q(b)(s.sensor)?(A(),V(B,{key:10,label:s.sensor.displayName.value,detected:s.sensor.getProperty(q(l).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):q(i)(s.sensor)?(A(),V(H,{key:11,label:s.sensor.displayName.value,current:s.sensor.getProperty(q(se).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):q(C)(s.sensor)?(A(),V(U,{key:12,label:s.sensor.displayName.value,current:s.sensor.getProperty(q(d).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):q(S)(s.sensor)?(A(),V(W,{key:13,label:s.sensor.displayName.value,level:s.sensor.getProperty(q(o).Level)??100,charging:s.sensor.getProperty(q(o).Charging)??`NOT_CHARGING`,low:s.sensor.getProperty(q(o).Low)??!1,size:`small`,class:`card-border`},null,8,[`label`,`level`,`charging`,`low`])):u(s.sensor)?(A(),V(K,{key:14,type:s.sensor.type,label:s.sensor.displayName.value,detected:s.sensor.getProperty(`detected`)??!1,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`])):y(s.sensor)?(A(),V(J,{key:15,type:s.sensor.type,label:s.sensor.displayName.value,current:s.sensor.getProperty(`current`)??void 0,unit:y(s.sensor),size:`small`,class:`card-border`},null,8,[`type`,`label`,`current`,`unit`])):T(s.sensor)?(A(),V(We,{key:16,type:s.sensor.type,label:s.sensor.displayName.value,detected:s.sensor.getProperty(`detected`)??!1,labels:E(s.sensor),decibels:s.sensor.type===q(f).Audio?s.sensor.getProperty(q(g).Decibels)??void 0:void 0,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`,`labels`,`decibels`])):G(``,!0)}}}),Je={class:`flex flex-col gap-4 w-full`},$={key:0,class:`flex flex-col field-gap`},Ye={class:`cui-label`},Xe={class:`flex flex-col field-gap`},Ze={for:`sensorDisplayName`,class:`cui-label`},Qe={key:1,class:`flex flex-col field-gap`},$e={for:`sensorNativeId`,class:`cui-label`},et={class:`flex flex-col field-gap`},tt={class:`cui-label`},nt={key:0,class:`flex flex-wrap gap-2`},rt={key:2,class:`flex items-center gap-4 cui-toggle-switch`},it={class:`flex flex-col min-w-0`},at={class:`cui-label-switch`},ot={class:`text-xs text-muted`},st=K({__name:`SensorEdit`,props:{sensor:{},cameraOptions:{}},setup(e,{expose:t}){let n=e,r=R(n.sensor.displayName||n.sensor.name),i=R([...n.sensor.assignedCameraIds]),a=R(n.sensor.exposed),{sensors:o}=u(),c=W(()=>E(void 0,`admin`)),l=W(()=>n.cameraOptions.filter(e=>n.sensor.assignedCameraIds.includes(e.value))),d=W(()=>Ke(n.sensor.type)),f=W(()=>o.value.find(e=>e.id===n.sensor.id));return t({onConfirm:async()=>({displayName:r.value||n.sensor.name,assignedCameraIds:i.value,exposed:a.value})}),(t,n)=>{let o=ce,u=s,p=J,m=ue,h=le;return A(),L(`div`,Je,[q(d)?(A(),L(`div`,$,[I(`label`,Ye,O(t.$t(`views.sensors.control`)),1),q(f)?(A(),V(qe,{key:0,sensor:q(f),disabled:!q(c)},null,8,[`sensor`,`disabled`])):(A(),V(o,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:D(()=>[B(O(t.$t(`views.sensors.control_offline`)),1)]),_:1}))])):G(``,!0),I(`div`,Xe,[I(`label`,Ze,O(t.$t(`components.camera_options.sensor_display_name`)),1),z(u,{id:`sensorDisplayName`,modelValue:q(r),"onUpdate:modelValue":n[0]||=e=>H(r)?r.value=e:null,modelModifiers:{trim:!0},class:`w-full`},null,8,[`modelValue`])]),e.sensor.nativeId?(A(),L(`div`,Qe,[I(`label`,$e,O(t.$t(`views.sensors.native_id`)),1),z(u,{id:`sensorNativeId`,"model-value":e.sensor.nativeId,readonly:``,class:`w-full font-mono text-sm`},null,8,[`model-value`])])):G(``,!0),I(`div`,et,[I(`label`,tt,O(t.$t(`views.sensors.assigned_cameras`)),1),e.sensor.assignmentLocked?(A(),L(`div`,nt,[(A(!0),L(U,null,j(q(l),e=>(A(),V(p,{key:e.value,label:e.label},null,8,[`label`]))),128))])):(A(),V(m,{key:1,modelValue:q(i),"onUpdate:modelValue":n[1]||=e=>H(i)?i.value=e:null,options:e.cameraOptions,"option-label":`label`,"option-value":`value`,placeholder:t.$t(`views.sensors.assigned_cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])),z(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:D(()=>[B(O(e.sensor.assignmentLocked?t.$t(`views.sensors.assigned_cameras_locked_hint`):t.$t(`views.sensors.assigned_cameras_hint`)),1)]),_:1})]),e.sensor.cameraBound?G(``,!0):(A(),L(`div`,rt,[I(`div`,it,[I(`label`,at,O(t.$t(`views.sensors.exposed`)),1),I(`span`,ot,O(t.$t(`views.sensors.exposed_hint`)),1)]),z(h,{modelValue:q(a),"onUpdate:modelValue":n[2]||=e=>H(a)?a.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])]))])}}});export{st as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{hr as e,ot as t}from"./vendor-cameraui-K1Nw4PvF.js";import{Cr as n,In as r,Pn as i,Rn as a,cn as o,dn as s,dr as c,gn as l,rn as u,vn as d,yr as f}from"./vendor-Df81FCJz.js";import{t as p}from"./history-D-FlZdKD.js";import{n as m}from"./sensors-Dxc7HgjZ.js";var h={class:`flex flex-col gap-2 w-full min-h-[200px] max-h-[60vh] overflow-y-auto`},g={key:0,class:`flex flex-col gap-2`},_={class:`flex flex-col flex-1 min-w-0`},v={class:`text-sm font-medium truncate`},y={class:`text-xs text-muted`},b={class:`text-sm font-mono shrink-0`},x={key:2,class:`flex flex-1 flex-col items-center justify-center gap-3 py-10`},S={class:`text-muted text-sm`},C=d({__name:`SensorHistory`,props:{sensorId:{},sensorType:{}},setup(d){let C=d,{t:w,te:T}=e(),E=c([]),D=c(!0);i(async()=>{try{E.value=await m({id:C.sensorId})}catch{E.value=[]}finally{D.value=!1}});function O(e){let t=`components.automation_nodes.sensor_property_${e}`;return T(t)?w(t):e}function k(e){return e==null?`–`:String(e)}function A(e){return new Date(e).toLocaleString()}return(e,i)=>{let c=t,d=p;return r(),s(`div`,h,[f(D)?(r(),s(`div`,g,[(r(),s(u,null,a(6,e=>l(c,{key:e,height:`40px`,class:`rounded-md`})),64))])):f(E).length?(r(!0),s(u,{key:1},a(f(E),(e,t)=>(r(),s(`div`,{key:t,class:`flex items-center gap-3 p-2 rounded-md border-color`},[o(`div`,_,[o(`span`,v,n(O(e.property)),1),o(`span`,y,n(A(e.timestamp)),1)]),o(`span`,b,n(k(e.value)),1)]))),128)):(r(),s(`div`,x,[l(d,{class:`w-10 h-10 text-muted`}),o(`span`,S,n(e.$t(`views.sensors.history_empty`)),1)]))])}}});export{C as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SensorEdit-CAf9Nb01.js","./vendor-cameraui-K1Nw4PvF.js","./rolldown-runtime-C0FnF6B9.js","./vendor-Df81FCJz.js","./api-D1iULsSy.js","./intercomService-BQYzjnAi.js","./vendor-zod-CBbC1rE7.js","./types-CeruGCb8.js","./alert-outline-B4ZZowEj.js","./eventLabels-idFWh3Y_.js","./vendor-core-CJdfpB0I.js","./vendor-dnd-C1kMh9_t.js","./vendor-primevue-DoA2Rwcb.js","./close-Be7oB7d_.js","./vendor-draggabilly-Cw1oJ6qc.js","./api-By0v6EeA.css","./CuiLightControl-ChK-SvJp.js","./bell-ring-CBf0Yn3H.js","./home-DPdzRxcM.js","./cube-scan-Cae03i_N.js","./CuiLightControl-D9sm8NZb.css","./sensorIcons-BRTtoaHX.js","./walk-B8FNhXuj.js","./SensorEdit-ono85O3c.css","./SensorHistory-il8bDErX.js","./history-D-FlZdKD.js","./sensors-Dxc7HgjZ.js","./VirtualSensorCreate-MfLh-LpH.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{J as e,Ot as t,Qr as n,Qt as r,Xt as ee,Yt as te,at as ne,et as re,hr as ie,nn as ae,zi as i}from"./vendor-cameraui-K1Nw4PvF.js";import{Bn as oe,Br as se,Dn as ce,H as le,I as ue,In as de,Jn as fe,L as pe,Ln as me,Rn as he,Tn as ge,V as _e,dn as ve,fn as a,kr as ye,mn as be,mr as xe,rn as Se,yn as Ce}from"./api-D1iULsSy.js";import{$n as o,Cr as s,Fn as c,Hn as we,Ht as l,In as u,Jn as Te,Pn as d,Sr as Ee,Xn as De,Z as Oe,br as f,cn as p,dn as m,dr as ke,er as h,gn as g,hn as _,ln as v,lr as y,nn as b,nr as Ae,or as je,rn as x,sn as S,sr as C,un as w,ur as T,vn as E,yr as D}from"./vendor-Df81FCJz.js";import{p as Me}from"./vendor-core-CJdfpB0I.js";import{C as Ne,E as Pe,G as Fe,W as Ie}from"./vendor-primevue-DoA2Rwcb.js";import{t as Le}from"./close-Be7oB7d_.js";import{t as Re}from"./history-D-FlZdKD.js";import{t as O}from"./sensors-Dxc7HgjZ.js";import{t as ze}from"./trash-can-outline-DVH3zgo0.js";import{t as Be}from"./CuiDataTable-DfjXa0C1.js";import{t as Ve}from"./sensorSlots-BTj-IM7z.js";import{t as He}from"./search-D75YW08B.js";import{n as Ue,t as We}from"./sensorIcons-BRTtoaHX.js";import{t as Ge}from"./back-filled-CJoz7Gkl.js";import{t as Ke}from"./plus-BBUb8_uL.js";import{t as qe}from"./settings-DDOgc5BX.js";import{t as Je}from"./radar-Dcvdz--e.js";var k={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function A(e,t){return u(),m(`svg`,k,[...t[0]||=[p(`path`,{fill:`currentColor`,d:`M14 10H3v2h11zm0-4H3v2h11zM3 16h7v-2H3zm18.5-4.5L23 13l-7 7l-4.5-4.5L13 14l3 3z`},null,-1)]])}var Ye=C({name:`mdi-playlist-check`,render:A}),j={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function M(e,t){return u(),m(`svg`,j,[...t[0]||=[p(`path`,{fill:`currentColor`,d:`M3 16h7v-2H3m15 0v-4h-2v4h-4v2h4v4h2v-4h4v-2m-8-8H3v2h11m0 2H3v2h11z`},null,-1)]])}var Xe=C({name:`mdi-playlist-plus`,render:M}),N=5e3,P=y({isLoading:!0,sensors:[],isScanning:!1,error:null}),F=null,I=null,L=!1,R=0,z=null,B=new Set;function Ze(){P.isLoading=!0,P.sensors=[],P.isScanning=!1,P.error=null}function Qe(){return I||(F=Ae(!0),F.run(()=>{let e=ye(`/sensors`);I=e,e.onReady(()=>{V()}),De(e.connected,(e,t)=>{!e&&t&&(L=!1)}),e.on(`sensors:discovered`,e=>{P.sensors=[...P.sensors.filter(t=>t.pluginId!==e.source),...e.sensors]}),e.on(`sensors:scanning`,e=>{P.isScanning=e.isScanning}),e.on(`sensors:adopted`,e=>{P.sensors=P.sensors.filter(t=>t.pluginId!==e.pluginId||t.id!==e.id)}),e.on(`sensor:source:changed`,e=>{for(let t of B)t(e)})}),I)}async function V(){if(!I||L)return{success:L,sensors:P.sensors,isScanning:P.isScanning};try{let e=await I.request(`sensors:subscribe`,{});return L=e.success,e.sensors&&(P.sensors=e.sensors),e.isScanning!==void 0&&(P.isScanning=e.isScanning),P.isLoading=!1,e}catch(e){return P.isLoading=!1,P.error=e instanceof Error?e.message:`subscribe failed`,{success:!1}}}async function H(){if(!I||!L)return{success:!0};try{let e=await I.request(`sensors:unsubscribe`,{});return L=!e.success,e}catch{return{success:!1}}}function $e(){L&&H(),F?.stop(),F=null,I=null,L=!1,Ze()}function et(){z&&=(clearTimeout(z),null),R++;function e(){Qe(),I?.connected.value&&!L&&V()}function t(){L&&H()}async function n(){if(!I?.ready.value)return{success:!1,error:`Not connected`};P.sensors=[],P.isScanning=!0;try{let e=await I.request(`sensors:rescan`,{});return e.success||(P.isScanning=!1),e}catch(e){return P.isScanning=!1,{success:!1,error:e instanceof Error?e.message:`rescan failed`}}}async function r(e){if(!I?.ready.value)return{success:!1,error:`Not connected`};let{pluginId:t,pluginName:n,...r}=e;try{return await I.request(`sensors:adopt`,{pluginId:t,sensor:r})}catch(e){return{success:!1,error:e instanceof Error?e.message:`adopt failed`}}}function ee(e){return B.add(e),()=>B.delete(e)}let te=S(()=>[...P.sensors].sort((e,t)=>e.name.localeCompare(t.name)));return i(()=>{R--,!(R>0)&&(R=0,z=setTimeout(()=>{R<=0&&($e(),z=null)},N))}),{state:T(P),isConnected:S(()=>I?.connected.value??!1),isLoading:S(()=>P.isLoading),sensors:S(()=>P.sensors),isScanning:S(()=>P.isScanning),error:S(()=>P.error),sortedSensors:te,connect:e,disconnect:t,subscribe:V,unsubscribe:H,forceRescan:n,adoptSensor:r,onSourceChanged:ee}}var tt={class:`flex flex-col`},nt={key:0,class:`page-title`},rt={class:`flex gap-2 mb-4`},it={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-16`},at={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-20`},ot={class:`text-muted text-sm`},st={key:3,class:`flex min-h-0 flex-col`},ct={class:`card-title`},lt={class:`flex items-center justify-center`},ut={class:`flex items-center gap-2 min-w-0`},dt={class:`flex flex-col min-w-0`},ft={class:`flex items-center gap-2 min-w-0`},pt={class:`font-bold text-color truncate`},mt={key:0,class:`text-xs text-muted truncate`},ht={key:1,class:`text-xs text-muted truncate font-mono`},gt={key:0,class:`text-xs text-muted truncate font-mono block`},_t={key:1,class:`text-xs text-muted`},vt={class:`text-xs text-muted whitespace-nowrap`},yt={class:`flex items-center justify-center gap-1 min-w-0`},bt={class:`flex items-center justify-end gap-1`},xt={key:0,class:`shrink-0`},St={class:`card-title`},Ct={class:`flex items-center justify-center`},wt={class:`flex items-center gap-2 min-w-0`},Tt={class:`flex flex-col min-w-0`},Et={class:`font-bold text-color truncate`},Dt={class:`text-xs text-muted truncate font-mono`},Ot={class:`text-xs text-muted whitespace-nowrap`},kt={key:1,class:`flex flex-col items-center justify-center py-6 gap-2`},At={class:`text-muted text-sm`},jt={class:`flex flex-wrap items-center gap-2 mt-4`},Mt=de(E({__name:`Sensors`,setup(i){let de=a(()=>l(()=>import(`./SensorEdit-CAf9Nb01.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url)),ye=a(()=>l(()=>import(`./SensorHistory-il8bDErX.js`),__vite__mapDeps([24,1,2,3,25,26,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url)),De=a(()=>l(()=>import(`./VirtualSensorCreate-MfLh-LpH.js`),__vite__mapDeps([27,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url)),y={connected:`green`,disconnected:`gray`,unavailable:`orange`,removed:`red`},Ae={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 6px rgba(251, 146, 60, 0.6))`},C=new Set([n.Motion,n.Object,n.Audio,n.Face,n.LicensePlate,n.Classifier,n.Contact,n.Occupancy,n.Smoke,n.Leak,n.Gas,n.CarbonMonoxide,n.Heat,n.Cold,n.Vibration,n.Tamper,n.Problem,n.Power]),T=new O,E=new Se,k=ve(),A=et(),j=Oe(),M=se(),{t:N}=ie(),{smBreakpoint:P}=oe(),F=fe(),{uiSettings:I}=Me(F),{sensors:L}=t(),{data:R,isBusy:z}=T.getSensorsQuery(),{data:B}=E.getCamerasQuery({page:1,pageSize:-1}),{mutateAsync:Ze,isPending:Qe}=T.createVirtualSensorQuery(),{mutateAsync:V}=T.patchSensorQuery(),{mutateAsync:H,isPending:$e}=T.deleteSensorQuery(),{mutateAsync:Mt}=T.bulkDeleteSensorsQuery(),Nt={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}},datatable:{class:`z-0`}},Pt=Te(`menuRef`),U=ke(``),W=ke(!1),Ft,It=S(()=>R.value===void 0&&z.value),G=S(()=>ge(void 0,`admin`)),K=S(()=>R.value??[]),Lt=S(()=>K.value.filter(e=>e.assignmentLocked).length),Rt=S(()=>K.value.filter(e=>!on(e)).length),zt=S(()=>[{key:`hideAllCameraBound`,label:N(`views.sensors.hide_all_camera_bound`),description:N(`views.sensors.hide_all_camera_bound_hint`),badge:Lt.value?String(Lt.value):void 0,toggle:!0,toggleState:I.value.sensors.hideAllCameraBound,onClick:()=>I.value.sensors.hideAllCameraBound=!I.value.sensors.hideAllCameraBound},{key:`onlyEnabledCameraBound`,label:N(`views.sensors.only_enabled_camera_bound`),description:N(`views.sensors.only_enabled_camera_bound_hint`),badge:Rt.value?String(Rt.value):void 0,toggle:!0,toggleState:I.value.sensors.onlyEnabledCameraBound,onClick:()=>I.value.sensors.onlyEnabledCameraBound=!I.value.sensors.onlyEnabledCameraBound}]),Bt=S(()=>(B.value?.result??[]).map(e=>({label:e.name,value:e._id}))),Vt=S(()=>new Map((B.value?.result??[]).map(e=>[e._id,e]))),Ht=S(()=>new Map(L.value.map(e=>[e.id,e]))),q=S(()=>{let e=U.value.toLowerCase().trim();return K.value.map(e=>{let t=cn(e);return{sensor:e,label:e.displayName||e.name,typeLabel:N(`components.camera_options.sensor_type_${e.type}`),nativeLabel:e.address??e.nativeId??``,pluginLabel:e.virtual?N(`views.sensors.owner_virtual`):e.pluginName,assignedLabel:e.assignedCameraIds.map(e=>Bt.value.find(t=>t.value===e)?.label).filter(Boolean).join(`, `),state:t,stateLabel:ln(t,e),stateColor:y[t]}}).filter(e=>!I.value.sensors.hideAllCameraBound||!e.sensor.assignmentLocked).filter(e=>!I.value.sensors.onlyEnabledCameraBound||on(e.sensor)).filter(t=>!e||[t.label,t.typeLabel,t.nativeLabel,t.pluginLabel,t.assignedLabel].some(t=>t.toLowerCase().includes(e))).sort((e,t)=>e.label.localeCompare(t.label))}),J=S(()=>A.isScanning.value),Y=S(()=>{let e=U.value.toLowerCase().trim();return A.sortedSensors.value.filter(t=>!e||[t.name,t.id,t.pluginName,t.room??``].some(t=>t.toLowerCase().includes(e)))}),{selectionMode:X,selectedIds:Ut,selectedItems:Wt,allSelected:Gt,bulkBusy:Kt,enterSelectionMode:qt,exitSelectionMode:Jt,toggleSelectAll:Yt,toggleSelection:Xt}=ue(()=>q.value,e=>e.sensor.id),{selectionMode:Z,selectedIds:Zt,selectedItems:Qt,allSelected:$t,bulkBusy:Q,enterSelectionMode:en,exitSelectionMode:tn,toggleSelectAll:nn,toggleSelection:rn}=ue(()=>Y.value,$),an=S(()=>Wt.value.filter(e=>gn(e.sensor)));function $(e){return`${e.pluginId}:${e.id}`}function on(e){if(!e.boundCameraId)return!0;let t=Vt.value.get(e.boundCameraId);return t?Ve(e,t):!1}function sn(e){return Ht.value.get(e.id)?.connected.value??e.connected}function cn(e){return sn(e)?e.sourceState===`removed`?`removed`:e.sourceState===`unavailable`?`unavailable`:`connected`:`disconnected`}function ln(e,t){switch(e){case`disconnected`:return N(`views.sensors.disconnected`);case`unavailable`:return N(`views.sensors.state_unavailable`);case`removed`:return N(`views.sensors.state_removed`,{plugin:t.pluginName});default:return N(`views.sensors.connected`)}}function un(){tn(),qt()}function dn(){Jt(),en()}function fn(e){if(Z.value){rn($(e));return}pn(e)}function pn(e){k.openTextDialog({data:{title:N(`views.sensors.adopt_title`),contentText:N(`views.sensors.adopt_confirm`,{name:e.name,plugin:e.pluginName}),confirmText:N(`components.form.button.add`),loading:W},onConfirm:async()=>{W.value=!0;try{let t=await A.adoptSensor(e);if(!t.success){M.add({severity:`error`,summary:N(`views.sensors.adopt_title`),detail:t.error,life:3e3});return}await j.refetchQueries({queryKey:[`sensorsList`]}),M.add({severity:`success`,detail:N(`views.sensors.adopted`,{name:e.name}),life:3e3})}finally{W.value=!1}}})}async function mn(){let e=await A.forceRescan();e.success||M.add({severity:`error`,summary:N(`views.sensors.rescan`),detail:e.error,life:3e3})}function hn(e){let t=Ht.value.get(e.id),r=n=>t?t.getProperty(n):e.properties?.[n];switch(e.type){case n.Light:case n.Switch:return!!r(`on`);case n.Siren:return!!r(`active`);case n.Doorbell:return!!r(`ring`);case n.Garage:case n.Lock:return r(`currentState`)===0;case n.SecuritySystem:return r(`currentState`)===4;case n.Battery:return!!r(`low`);default:return C.has(String(e.type))&&!!r(`detected`)}}function gn(e){return e.virtual||!e.assignmentLocked||!sn(e)}function _n(e){if(X.value){Xt(e.sensor.id);return}G.value&&k.openComponentDialog(de,{data:{title:e.label,confirmText:N(`components.form.button.save`),contentProps:{sensor:e.sensor,cameraOptions:Bt.value}},onConfirm:async t=>{t&&await V({id:e.sensor.id,data:t})}})}function vn(e){k.openComponentDialog(ye,{data:{title:`${e.displayName||e.name} · ${N(`views.sensors.history`)}`,hideConfirmButton:!0,contentProps:{sensorId:e.id,sensorType:String(e.type)}}})}function yn(e,t,n){t.length&&M.add({severity:`error`,summary:N(`views.sensors.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&M.add({severity:`success`,detail:N(n,{count:e}),life:5e3})}function bn(){let e=[...an.value];k.openTextDialog({data:{title:N(`components.dialog.title.confirm`),contentText:N(`views.sensors.delete_selected_confirm`,{count:e.length}),confirmText:N(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Kt.value=!0;try{let{skipped:t}=await Mt({ids:e.map(e=>e.sensor.id)}),n=e.filter(e=>t.includes(e.sensor.id)).map(e=>e.label);Jt(),yn(e.length-n.length,n,`views.sensors.delete_selected_done`)}finally{Kt.value=!1}}})}function xn(){let e=[...Qt.value];k.openTextDialog({data:{title:N(`views.sensors.adopt_title`),contentText:N(`views.sensors.adopt_selected_confirm`,{count:e.length}),confirmText:N(`components.form.button.add`)},onConfirm:async()=>{Q.value=!0;try{let t=[];for(let n of e)(await A.adoptSensor(n)).success||t.push(n.name);await j.refetchQueries({queryKey:[`sensorsList`]}),tn(),yn(e.length-t.length,t,`views.sensors.adopt_selected_done`)}finally{Q.value=!1}}})}function Sn(e){j.setQueryData([`sensorsList`],t=>t?.map(t=>t.id===e.sensorId?{...t,sourceState:e.sourceState,address:e.address}:t))}function Cn(){k.openComponentDialog(De,{data:{title:N(`views.sensors.create_virtual`),confirmText:N(`components.form.button.save`),loading:Qe,contentProps:{}},onConfirm:async e=>{e&&await Ze({data:e})}})}function wn(e){k.openTextDialog({data:{title:N(`views.sensors.delete`),contentText:N(`views.sensors.delete_confirm`),confirmText:N(`components.form.button.remove`),loading:$e,confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await H({id:e.id})}})}return d(()=>{G.value&&(A.connect(),Ft=A.onSourceChanged(Sn))}),c(()=>{Ft?.(),G.value&&A.unsubscribe()}),(t,n)=>{let ie=Ge,i=ee,oe=le,se=He,ue=Ie,de=e,fe=Fe,ge=qe,ve=be,a=te,ye=xe,Se=re,c=Ne,l=r,Te=ce,d=Pe,De=Ue,Oe=Re,ke=ze,y=Be,S=ne,C=Ce,T=Je,E=me,Me=he,O=ae;return u(),m(`div`,tt,[D(P)?w(``,!0):(u(),m(`h1`,nt,s(D(N)(`views.sensors.title`)),1)),g(oe,{position:`left`},{default:o(()=>[g(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:o(()=>[g(ie,{class:`w-6 h-6`})]),_:1})]),_:1}),p(`div`,rt,[g(fe,{class:`flex-1`},{default:o(()=>[g(ue,null,{default:o(()=>[g(se,{class:`w-4 h-4`})]),_:1}),g(de,{modelValue:D(U),"onUpdate:modelValue":n[1]||=e=>je(U)?U.value=e:null,placeholder:D(N)(`views.sensors.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),h((u(),v(i,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:n[2]||=e=>D(Pt)?.toggleMenu(e)},{icon:o(()=>[g(ge,{class:`w-4.5 h-4.5`})]),_:1})),[[O,{value:D(N)(`views.sensors.settings`)},void 0,{left:!0}]]),g(ve,{ref_key:`menuRef`,ref:Pt,items:D(zt),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])]),D(It)?(u(),m(`div`,it,[g(a,{"stroke-width":`5`,class:`w-[30px] h-[30px]`})])):!D(q).length&&!D(Y).length&&!D(J)?(u(),m(`div`,at,[g(ye,{class:`w-12 h-12 text-muted`}),p(`span`,ot,s(D(K).length?D(N)(`views.sensors.no_matches`):D(N)(`views.sensors.no_sensors`)),1)])):D(q).length?(u(),m(`div`,st,[p(`span`,ct,s(D(N)(`views.sensors.adopted_title`)),1),g(S,{class:`cui-card`},{content:o(()=>[g(y,{value:D(q),"striped-rows":``,pt:Nt,class:`w-full`,onRowClick:n[4]||=e=>_n(e.data)},{default:o(()=>[D(X)?(u(),v(c,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:o(({data:e})=>[g(Se,{"model-value":D(Ut).has(e.sensor.id),binary:``,size:`small`,onClick:n[3]||=b(()=>{},[`stop`]),"onUpdate:modelValue":t=>D(Xt)(e.sensor.id)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):w(``,!0),g(c,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:o(({data:e})=>[p(`div`,lt,[h(g(l,{style:Ee({background:e.stateColor})},null,8,[`style`]),[[O,{value:e.stateLabel}]])])]),_:1}),g(c,{field:`label`,header:D(N)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-[40%] min-w-[180px] max-w-0`},{body:o(({data:e})=>[p(`div`,ut,[(u(),v(we(D(We)(e.sensor.type)),{class:f([`w-5 h-5 shrink-0 transition-colors`,{"text-muted":!hn(e.sensor)}]),style:Ee(hn(e.sensor)?Ae:void 0)},null,8,[`class`,`style`])),p(`div`,dt,[p(`div`,ft,[h((u(),m(`span`,pt,[_(s(e.label),1)])),[[O,e.label]]),e.sensor.exposed?w(``,!0):h((u(),v(Te,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[O,D(N)(`views.sensors.not_exposed`)]])]),D(P)?(u(),m(`span`,mt,s(e.typeLabel)+` · `+s(e.pluginLabel),1)):w(``,!0),D(P)&&e.nativeLabel?h((u(),m(`span`,ht,[_(s(e.nativeLabel),1)])),[[O,e.nativeLabel]]):w(``,!0),D(P)&&e.state!==`connected`?(u(),m(`span`,{key:2,class:`text-xs truncate`,style:Ee({color:e.stateColor})},s(e.stateLabel),5)):w(``,!0)])])]),_:1},8,[`header`]),D(P)?w(``,!0):(u(),v(c,{key:1,field:`nativeLabel`,header:D(N)(`views.sensors.native_id`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 w-[28%] min-w-[160px] max-w-0 text-center`},{body:o(({data:e})=>[e.nativeLabel?h((u(),m(`span`,gt,[_(s(e.nativeLabel),1)])),[[O,e.nativeLabel]]):(u(),m(`span`,_t,`—`))]),_:1},8,[`header`])),D(P)?w(``,!0):(u(),v(c,{key:2,field:`typeLabel`,header:D(N)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:o(({data:e})=>[p(`span`,vt,s(e.typeLabel),1)]),_:1},8,[`header`])),D(P)?w(``,!0):(u(),v(c,{key:3,field:`pluginLabel`,header:D(N)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:o(({data:e})=>[g(d,{label:e.pluginLabel,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])),g(c,{field:`assignedLabel`,header:D(N)(`views.sensors.assigned_cameras`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 min-w-[140px] text-center`},{body:o(({data:e})=>[p(`div`,yt,[e.sensor.assignmentLocked?h((u(),v(De,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[O,D(N)(`views.sensors.assigned_cameras_locked_hint`)]]):w(``,!0),p(`span`,{class:f([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},s(e.assignedLabel||D(N)(`views.sensors.unassigned`)),3)])]),_:1},8,[`header`]),g(c,{header:``,"header-class":`p-2 pr-4 w-28`,class:`p-2 pr-4 w-28`},{body:o(({data:e})=>[p(`div`,bt,[h((u(),v(i,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:b(t=>vn(e.sensor),[`stop`])},{icon:o(()=>[g(Oe,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[O,D(N)(`views.sensors.history`),void 0,{left:!0}]]),D(G)?h((u(),m(`span`,xt,[g(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!gn(e.sensor),onClick:b(t=>wn(e.sensor),[`stop`])},{icon:o(()=>[g(ke,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[O,gn(e.sensor)?D(N)(`views.sensors.delete`):D(N)(`views.sensors.delete_camera_bound`),void 0,{left:!0}]]):w(``,!0)])]),_:1})]),_:1},8,[`value`])]),_:1})])):w(``,!0),D(G)&&!D(It)?(u(),m(`div`,{key:4,class:f([`flex min-h-0 flex-col`,{"mt-6":D(q).length}])},[p(`span`,St,s(D(N)(`views.sensors.discovered_title`)),1),g(S,{class:`cui-card`},{content:o(()=>[D(Y).length?(u(),v(y,{key:0,value:D(Y),"striped-rows":``,pt:Nt,class:f([`w-full`,{"opacity-60 pointer-events-none":D(W)||D(Q)}]),onRowClick:n[6]||=e=>fn(e.data)},{default:o(()=>[D(Z)?(u(),v(c,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:o(({data:e})=>[g(Se,{"model-value":D(Zt).has($(e)),binary:``,size:`small`,onClick:n[5]||=b(()=>{},[`stop`]),"onUpdate:modelValue":t=>D(rn)($(e))},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):w(``,!0),g(c,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:o(()=>[p(`div`,Ct,[h(g(l,{style:{background:`orange`}},null,512),[[O,{value:D(N)(`views.sensors.status_discovered`)}]])])]),_:1}),g(c,{field:`name`,header:D(N)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-full min-w-[200px] max-w-0`},{body:o(({data:e})=>[p(`div`,wt,[(u(),v(we(D(We)(e.type)),{class:`w-5 h-5 shrink-0 text-muted`})),p(`div`,Tt,[h((u(),m(`span`,Et,[_(s(e.name),1)])),[[O,e.name]]),h((u(),m(`span`,Dt,[_(s(e.address??e.id),1)])),[[O,e.address??e.id]])])])]),_:1},8,[`header`]),D(P)?w(``,!0):(u(),v(c,{key:1,field:`type`,header:D(N)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:o(({data:e})=>[p(`span`,Ot,s(D(N)(`components.camera_options.sensor_type_${e.type}`)),1)]),_:1},8,[`header`])),D(P)?w(``,!0):(u(),v(c,{key:2,field:`room`,header:D(N)(`components.form.label.room`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:o(({data:e})=>[e.room?(u(),v(d,{key:0,label:e.room,class:`text-xs whitespace-nowrap`},null,8,[`label`])):w(``,!0)]),_:1},8,[`header`])),g(c,{field:`pluginName`,header:D(N)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 pr-4 whitespace-nowrap`,class:`p-2 pr-4 whitespace-nowrap`},{body:o(({data:e})=>[g(d,{label:e.pluginName,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])]),_:1},8,[`value`,`class`])):(u(),m(`div`,kt,[D(J)?(u(),v(C,{key:0,width:`24px`,height:`24px`,class:`text-muted`})):(u(),v(T,{key:1,width:`32px`,height:`32px`,class:`text-muted`})),p(`span`,At,s(D(J)?D(N)(`views.sensors.scanning`):D(N)(`views.sensors.no_discovered`)),1)])),p(`div`,jt,[n[7]||=p(`div`,{class:`ml-auto`},null,-1),g(i,{severity:`secondary`,class:`cui-button-medium`,label:D(N)(`views.sensors.rescan`),loading:D(J),onClick:mn},null,8,[`label`,`loading`])])]),_:1})],2)):w(``,!0),D(G)?(u(),v(Me,{key:5,"force-visible":D(X)||D(Z)},{default:o(()=>[!D(X)&&!D(Z)?(u(),m(x,{key:0},[D(q).length?(u(),v(E,{key:0,grouped:``,"tooltip-props":{value:D(N)(`views.sensors.select`)},"button-props":{severity:`secondary`},icon:D(pe),"icon-props":{width:`100%`,height:`100%`},onClick:un},null,8,[`tooltip-props`,`icon`])):w(``,!0),D(Y).length?(u(),v(E,{key:1,grouped:``,"tooltip-props":{value:D(N)(`views.sensors.select_discovered`)},"button-props":{severity:`secondary`},icon:D(Ye),"icon-props":{width:`100%`,height:`100%`},onClick:dn},null,8,[`tooltip-props`,`icon`])):w(``,!0),g(E,{grouped:``,"tooltip-props":{value:D(N)(`views.sensors.create_virtual`)},"button-props":{class:`text-white`},icon:D(Ke),"icon-props":{width:`30px`,height:`30px`},onClick:Cn},null,8,[`tooltip-props`,`icon`])],64)):D(X)?(u(),m(x,{key:1},[g(E,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:D(Le),"icon-props":{width:`100%`,height:`100%`},onClick:D(Jt)},null,8,[`tooltip-props`,`icon`,`onClick`]),g(E,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.select_all`)},"button-props":{severity:D(Gt)?`primary`:`secondary`},icon:D(_e),"icon-props":{width:`100%`,height:`100%`},onClick:D(Yt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),g(E,{grouped:``,"tooltip-props":{value:D(N)(`views.sensors.delete_selected`)},"button-props":{severity:`danger`,disabled:!D(an).length||D(Kt)},icon:D(ze),"icon-props":{width:`100%`,height:`100%`},onClick:bn},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(u(),m(x,{key:2},[g(E,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:D(Le),"icon-props":{width:`100%`,height:`100%`},onClick:D(tn)},null,8,[`tooltip-props`,`icon`,`onClick`]),g(E,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.select_all`)},"button-props":{severity:D($t)?`primary`:`secondary`},icon:D(_e),"icon-props":{width:`100%`,height:`100%`},onClick:D(nn)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),g(E,{grouped:``,"tooltip-props":{value:D(N)(`views.sensors.adopt_selected`)},"button-props":{class:`text-white`,disabled:!D(Qt).length||D(Q)},icon:D(Xe),"icon-props":{width:`100%`,height:`100%`},onClick:xn},null,8,[`tooltip-props`,`button-props`,`icon`])],64))]),_:1},8,[`force-visible`])):w(``,!0)])}}}),[[`__scopeId`,`data-v-cf8a7b2d`]]);export{Mt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ti as e,Vi as t,Xt as n,Yt as r,ai as i,fi as a}from"./vendor-cameraui-K1Nw4PvF.js";import{Bn as o,Gn as s,H as c,In as l,Jn as u,Kn as d,Tn as f,Vn as p,qn as m,wn as h,x as g}from"./api-D1iULsSy.js";import{$n as _,Bn as v,Cr as y,Hn as b,In as x,Jn as S,On as C,Pn as w,Rn as T,Sr as E,Xn as D,_r as O,br as k,cn as A,dn as j,dr as M,gn as N,ln as P,rn as F,sn as I,un as L,vn as R,yr as z}from"./vendor-Df81FCJz.js";import{p as B,u as V}from"./vendor-core-CJdfpB0I.js";import{t as ee}from"./back-filled-CJoz7Gkl.js";import{t as H}from"./useTabSwipe-BSpi25WV.js";import{n as U,t as te}from"./round-alt-arrow-left-bold-CZHXzGS5.js";var W={},G={class:`w-full h-full flex items-center justify-center`};function K(e,t){let n=r;return x(),j(`div`,G,[N(n,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])}var q=l(W,[[`render`,K]]),J={key:0},Y={key:1},X={class:`overflow-hidden w-full`},Z={class:`ml-2 flex flex-row items-center justify-between`},ne={class:`text-start flex-1`},re={class:`text-sm font-bold max-w-100 truncate`},ie={key:0,class:`text-sm text-muted font-normal`},Q=l(R({__name:`CuiSubNavItem`,props:{label:{},to:{},description:{},icon:{},activeIcon:{}},setup(e){let{icon:t,activeIcon:r,label:i,description:a,to:o}=O(e);return(e,s)=>{let c=n,l=v(`RouterLink`);return x(),P(l,{to:z(o)},{default:_(({isExactActive:e})=>[N(c,{text:``,severity:`secondary`,class:k([`subnavitem-button w-full h-[120px] flex items-start justify-start p-6 bg-none text-color hover:!text-primary active:!text-primary focus:!text-primary rounded-none`,{"active !text-primary":e}]),fluid:``},{default:_(()=>[z(t)&&!e||!z(r)?(x(),j(`div`,J,[N(z(t),{class:`w-[24px] h-[24px]`})])):z(r)&&e?(x(),j(`div`,Y,[N(z(r),{class:`w-[24px] h-[24px]`})])):L(``,!0),A(`div`,X,[A(`div`,Z,[A(`div`,ne,[A(`div`,re,y(z(i)),1),z(a)?(x(),j(`div`,ie,y(z(a)),1)):L(``,!0)])])])]),_:2},1032,[`class`])]),_:1},8,[`to`])}}}),[[`__scopeId`,`data-v-a5399c04`]]),$={CLOSED:0,EXPANDED:288},ae=l(R({__name:`CuiSubNavbar`,setup(n,{expose:r}){let a=V(),{bus:c}=s(),{xlBreakpoint:l,mdBreakpoint:u}=o(),{subbarState:d,navbarState:m,topbarOffset:h}=p(),_=S(`subnavbarRef`),v=M(`closed`),b=I(()=>l.value?`opened`:v.value),O=I(()=>b.value===`closed`?$.CLOSED:$.EXPANDED),k=I(()=>g.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&f(e))),N=I(()=>[`personal`,`system`].map(e=>({key:e,routes:k.value.filter(t=>(t.meta.settingsBar.group??`personal`)===e)})).filter(e=>e.routes.length>0));function L(){v.value=`closed`,c.emit({subbarState:`closed`})}function R(){C(()=>{let e=_.value?.querySelector(`.subnavitem-button.active`);e&&e.scrollIntoView({block:`center`,behavior:`smooth`})})}let B=t(R,100);return i(_,e=>{let t=e.target,n=t.closest(`#menu-icon`),r=t.closest(`#submenu-icon`),i=t.closest(`#navbar-icon`);!n&&!r&&!i&&L()}),e(_,()=>{B()}),D(d,e=>{e&&e!==v.value&&(v.value=e)},{immediate:!0}),D(a.currentRoute,(e,t)=>{e.path!==t.path&&L()}),D(m,e=>{e===`opened`&&u.value&&L()}),w(()=>{R()}),r({subnavbarState:b}),(e,t)=>{let n=Q;return x(),j(`nav`,{ref_key:`subnavbarRef`,ref:_,class:`cui-subnavbar fixed transition-all duration-200 overflow-x-hidden overflow-y-scroll md:!pl-0 pl-safe w-full h-full flex flex-col`,style:E({width:`${z(O)}px`,borderRightWidth:z(b)===`opened`?`1px`:`0px`,paddingBottom:`calc(var(--safe-area-inset-top) + ${z(h)}px + var(--cui-bottom-bar) + var(--cui-bottom-gap))`})},[(x(!0),j(F,null,T(z(N),t=>(x(),j(F,{key:t.key},[A(`span`,{class:`shrink-0 pl-4 pt-4 pb-1 text-[11px] font-semibold uppercase tracking-widest text-muted`,style:E({width:`${z($).EXPANDED}px`})},y(e.$t(`views.settings.section_${t.key}`)),5),(x(!0),j(F,null,T(t.routes,t=>(x(),P(n,{key:t.name,icon:t.meta.settingsBar.icon.default,"active-icon":t.meta.settingsBar.icon.active,to:t.path,label:e.$t(`navigation.${(t.meta?.name).toLowerCase()}`),description:e.$t(`navigation_description.${t.meta?.description}`),class:`cui-list-item !m-0 !p-0 shrink-0`,style:E({width:`${z($).EXPANDED}px`})},null,8,[`icon`,`active-icon`,`to`,`label`,`description`,`style`]))),128))],64))),128))],4)}}}),[[`__scopeId`,`data-v-7cd5afb1`]]),oe={class:`font-semibold text-xl truncate`},se={class:`w-full h-full relative`},ce={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-2`},le={class:`relative z-2 page-title !m-0`},ue=R({__name:`Settings`,setup(e){let t=V(),r=d(),{bus:i}=s(),{mdBreakpoint:l,xlBreakpoint:p,smBreakpoint:C}=o(),w=h(),{routerLoading:T}=B(w),O=[`personal`,`system`].flatMap(e=>g.find(e=>e.name===`Settings`).children.filter(t=>f(t)&&t.meta?.settingsBar&&(t.meta.settingsBar.group??`personal`)===e)),M=S(`subnavbarRef`),F=S(`containerRef`),R=I(()=>t.currentRoute.value.path===`/settings`);H(F,e=>{if(R.value)return;let n=O.findIndex(e=>e.path===t.currentRoute.value.path.split(`/settings/`)[1]),r=e===`right`?O[n-1]:O[n+1];r&&t.push({path:r.path})});let W=a(M),G=I(()=>M.value?.subnavbarState??`closed`);function K(){let e=G.value===`opened`?`closed`:`opened`;i.emit({subbarState:e})}return D(C,e=>{if(!e&&R.value){let e=u().uiSettings.interface.selectedSettingsView;t.replace(`/settings/${m.includes(e)?e:`account`}`)}}),(e,t)=>{let i=c,a=ee,o=n,s=ae,u=te,d=U,f=q,m=v(`RouterView`);return x(),j(`div`,null,[N(i,{position:`center`},{default:_(()=>[A(`span`,oe,y(e.$t(`views.settings.title_${e.$route.meta?.name}`)),1)]),_:1}),N(i,{position:`left`},{default:_(()=>[N(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:t[0]||=t=>e.$router.push(z(R)?`/menu`:`/settings`)},{icon:_(()=>[N(a,{class:`w-6 h-6`})]),_:1})]),_:1}),z(C)?L(``,!0):(x(),P(s,{key:0,ref_key:`subnavbarRef`,ref:M,class:`z-4 min-w-0`},null,512)),A(`main`,{class:`relative w-full h-full`,style:E({paddingLeft:z(l)?`0px`:`${z(W).width.value}px`})},[A(`div`,se,[z(C)?L(``,!0):(x(),j(`div`,ce,[t[1]||=A(`div`,{class:`ml-2`},null,-1),z(p)?L(``,!0):(x(),P(o,{key:0,id:`submenu-icon`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:K},{icon:_(()=>[z(G)===`opened`?(x(),P(u,{key:0,width:`100%`,height:`100%`})):(x(),P(d,{key:1,width:`100%`,height:`100%`}))]),_:1})),A(`h1`,le,y(e.$t(`views.settings.title_${e.$route.meta?.name}`)),1),t[2]||=A(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[A(`div`),A(`div`),A(`div`),A(`div`),A(`div`),A(`div`)],-1)])),A(`div`,{ref_key:`containerRef`,ref:F,class:k([`px-2 h-full w-full`,{"pt-4":z(C),"pt-[calc(40px+2rem)]":!z(C)}])},[z(T)&&z(r).showRouterLoadingSub.value?(x(),P(f,{key:0,class:`w-full h-full relative overflow-x-hidden`})):(x(),P(m,{key:1},{default:_(({Component:e})=>[(x(),P(b(e),{class:`h-full`}))]),_:1}))],2)])],4)])}}});export{ue as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.subnavitem-button[data-v-a5399c04]{background:var(--subnavbar-item-background);border-color:#0000}.subnavitem-button[data-v-a5399c04]:hover{background:var(--subnavbar-item-hover-background);border-color:#0000}.subnavitem-button[data-v-a5399c04]:active,.subnavitem-button.active[data-v-a5399c04]{background:var(--subnavbar-item-active-background);border-color:#0000}.cui-subnavbar[data-v-
|
|
1
|
+
.subnavitem-button[data-v-a5399c04]{background:var(--subnavbar-item-background);border-color:#0000}.subnavitem-button[data-v-a5399c04]:hover{background:var(--subnavbar-item-hover-background);border-color:#0000}.subnavitem-button[data-v-a5399c04]:active,.subnavitem-button.active[data-v-a5399c04]{background:var(--subnavbar-item-active-background);border-color:#0000}.cui-subnavbar[data-v-7cd5afb1]{background:var(--subnavbar-background);border-right-style:solid;border-right-color:var(--border-color)}.cui-subnavbar span+.cui-list-item[data-v-7cd5afb1]{border-top:1px solid var(--border-color)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e,Xt as t,Yt as n,at as r,hr as i,nn as a}from"./vendor-cameraui-K1Nw4PvF.js";import{Br as o,D as s,Dr as c,In as l,R as u,_ as d,cr as ee,ct as f,dn as p,g as m,hn as te,i as h,j as ne,l as re,st as ie}from"./api-D1iULsSy.js";import{$n as g,C as ae,Cn as _,Cr as v,Dn as y,Hn as oe,In as b,Jn as x,Pn as se,Rn as S,S as C,Xt as w,_r as T,cn as E,dn as D,dr as O,er as ce,gn as k,hn as le,ln as A,mr as ue,or as j,rn as de,sn as M,sr as N,un as P,vn as F,x as I,yr as L}from"./vendor-Df81FCJz.js";import{i as R,r as z}from"./vendor-zod-CBbC1rE7.js";import{C as fe}from"./eventLabels-idFWh3Y_.js";import{p as pe}from"./vendor-core-CJdfpB0I.js";import{C as me,M as he,N as ge,V as _e,a as ve,j as ye,s as be,u as xe}from"./vendor-primevue-DoA2Rwcb.js";import{t as Se}from"./CuiDataTable-DfjXa0C1.js";import{t as Ce}from"./CuiQRCode-S9fPi0_l.js";import{n as we,t as B}from"./auth-CDxrn7fe.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return b(),D(`svg`,V,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M7 14c-1.1 0-2-.9-2-2s.9-2 2-2s2 .9 2 2s-.9 2-2 2m5.6-4c-.8-2.3-3-4-5.6-4c-3.3 0-6 2.7-6 6s2.7 6 6 6c2.6 0 4.8-1.7 5.6-4H16v4h4v-4h3v-4z`},null,-1)]])}var Te=N({name:`mdi-key`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return b(),D(`svg`,U,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2`},null,-1)]])}var Ee=N({name:`mdi-cellphone`,render:W}),G={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function K(e,t){return b(),D(`svg`,G,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M22 18v4h-4v-3h-3v-3h-3l-2.26-2.26c-.55.17-1.13.26-1.74.26a6 6 0 0 1-6-6a6 6 0 0 1 6-6a6 6 0 0 1 6 6c0 .61-.09 1.19-.26 1.74zM7 5a2 2 0 0 0-2 2a2 2 0 0 0 2 2a2 2 0 0 0 2-2a2 2 0 0 0-2-2`},null,-1)]])}var De=N({name:`mdi-key-variant`,render:K}),Oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ke(e,t){return b(),D(`svg`,Oe,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M4 6h16v10H4m16 2a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H4c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2H0v2h24v-2z`},null,-1)]])}var Ae=N({name:`mdi-laptop`,render:ke}),je={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Me(e,t){return b(),D(`svg`,je,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M21 17H3V5h18m0-2H3a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5v2h8v-2h5a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2`},null,-1)]])}var Ne=N({name:`mdi-television`,render:Me}),Pe={class:`flex flex-col gap-6`},Fe={class:`token-box`},Ie={class:`token-value`},Le=l(F({__name:`ApiTokenCreated`,props:{token:{}},setup(e,{expose:n}){let r=e,s=o(),{t:c}=i(),{token:l}=T(r);async function u(){await h(l.value)?s.add({severity:`success`,detail:c(`components.toast.copied`),life:1500}):s.add({severity:`error`,detail:c(`components.toast.copy_failed`),life:3e3})}async function d(){}return n({onConfirm:d}),(e,n)=>{let r=ge,i=t,o=a;return b(),D(`div`,Pe,[k(r,{severity:`warn`},{default:g(()=>[le(v(e.$t(`views.settings.api_tokens.created_warning`)),1)]),_:1}),E(`div`,Fe,[E(`span`,Ie,v(L(l)),1),ce((b(),A(i,{text:``,rounded:``,class:`cui-icon-md shrink-0`,onClick:u},{icon:g(()=>[k(L(ie),{width:`100%`,height:`100%`})]),_:1})),[[o,{value:e.$t(`components.form.button.copy`)}]])])])}}}),[[`__scopeId`,`data-v-591cfcb4`]]),Re={class:`flex flex-col gap-2 w-full`},ze={for:`apiTokenName`,class:`cui-label`},Be={key:0,class:`text-xs text-red-500`},Ve=F({__name:`CreateApiToken`,props:{existingNames:{}},setup(t,{expose:n}){let r=t,i=O(``),a=M(()=>r.existingNames.includes(i.value.trim()));return n({onConfirm:async()=>{let e=i.value.trim();return!e||a.value?null:e}}),(t,n)=>{let r=e;return b(),D(`div`,Re,[E(`label`,ze,v(t.$t(`views.settings.api_tokens.name_label`)),1),k(r,{id:`apiTokenName`,modelValue:L(i),"onUpdate:modelValue":n[0]||=e=>j(i)?i.value=e:null,class:`w-full`,placeholder:t.$t(`views.settings.api_tokens.name_placeholder`),autofocus:``,invalid:L(a)},null,8,[`modelValue`,`placeholder`,`invalid`]),L(a)?(b(),D(`span`,Be,v(t.$t(`views.settings.api_tokens.name_exists`)),1)):P(``,!0)])}}}),He={class:`flex flex-col gap-6`},Ue={class:`backup-codes-grid`},We=l(F({__name:`TwoFactorBackupCodes`,props:{backupCodes:{}},setup(e,{expose:t}){let{backupCodes:n}=T(e);async function r(){}return t({onConfirm:r}),(e,t)=>{let r=ge;return b(),D(`div`,He,[k(r,{severity:`warn`},{default:g(()=>[le(v(e.$t(`views.settings.security.backup_warning`)),1)]),_:1}),E(`div`,Ue,[(b(!0),D(de,null,S(L(n),e=>(b(),D(`span`,{key:e,class:`backup-code`},v(e),1))),128))])])}}}),[[`__scopeId`,`data-v-0761a2ae`]]),Ge={class:`flex flex-col gap-6`},Ke={class:`text-muted`},qe={class:`flex flex-col gap-2 justify-center items-center mt-5`},Je={class:`cui-label`},Ye=F({__name:`TwoFactorDisable`,setup(e,{expose:t}){let n=new B,r=o(),{t:a}=i(),s=_(`dialogRefProps`),{mutateAsync:c,isPending:l}=n.disable2FAQuery(),u=O(``),d=M(()=>!!(s.loading?.value||l.value)),ee=M(()=>u.value.length<6);async function f(){if(u.value.length<6)return null;try{await c({code:u.value}),r.add({severity:`success`,detail:a(`views.settings.security.2fa_disabled_success`),life:3e3})}catch(e){return r.add({severity:`error`,detail:e,life:3e3}),null}}return t({isLoading:d,isDisabled:ee,onConfirm:f}),(e,t)=>{let n=xe;return b(),D(`div`,Ge,[E(`p`,Ke,v(e.$t(`views.settings.security.disable_confirm`)),1),E(`div`,qe,[E(`label`,Je,v(e.$t(`views.settings.security.enter_code`)),1),k(n,{modelValue:L(u),"onUpdate:modelValue":t[0]||=e=>j(u)?u.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),Xe={class:`flex flex-col gap-6`},Ze={class:`text-muted`},q={class:`flex flex-col gap-2 justify-center items-center mt-5`},J={class:`cui-label`},Qe=F({__name:`TwoFactorRegenerate`,props:{onBackupCodesGenerated:{type:Function}},setup(e,{expose:t}){let n=new B,r=e,a=o(),{t:s}=i(),c=_(`dialogRefProps`),{mutateAsync:l,isPending:u}=n.regenerateBackupCodesQuery(),d=O(``),ee=M(()=>!!(c.loading?.value||u.value)),f=M(()=>d.value.length<6);async function p(){if(d.value.length<6)return null;try{let e=await l({code:d.value});a.add({severity:`success`,detail:s(`views.settings.security.backup_regenerated`),life:3e3}),r.onBackupCodesGenerated&&r.onBackupCodesGenerated(e.backupCodes)}catch(e){return a.add({severity:`error`,detail:e,life:3e3}),null}}return t({isLoading:ee,isDisabled:f,onConfirm:p}),(e,t)=>{let n=xe;return b(),D(`div`,Xe,[E(`p`,Ze,v(e.$t(`views.settings.security.regenerate_confirm`)),1),E(`div`,q,[E(`label`,J,v(e.$t(`views.settings.security.enter_code`)),1),k(n,{modelValue:L(d),"onUpdate:modelValue":t[0]||=e=>j(d)?d.value=e:null,length:6,"integer-only":``,class:`justify-center`},null,8,[`modelValue`])])])}}}),$e={class:`flex flex-col w-full gap-6`},et={class:`relative`},tt={class:`image-upload rounded-full z-1`},nt={for:`file-input`},rt={class:`card-title`},it={class:`flex flex-col gap-6`},at={for:`username`,class:`cui-label`},ot={class:`card-title`},st={class:`flex flex-col gap-6`},ct={for:`password`,class:`cui-label`},lt={for:`passwordConfirm`,class:`cui-label`},ut={class:`relative`},dt={class:`image-upload rounded-full z-1`},ft={for:`file-input`},pt={class:`card-title`},mt={class:`flex flex-col gap-6`},ht={class:`flex flex-col field-gap`},gt={for:`username`,class:`cui-label`},_t={class:`flex flex-row items-end justify-end`},vt={class:`card-title`},yt={for:`password`,class:`cui-label`},bt={for:`passwordConfirm`,class:`cui-label`},xt={class:`flex flex-row items-end justify-end`},St={class:`card-title`},Ct={key:0,class:`flex justify-center py-6`},wt={key:`initial`,class:`flex flex-col gap-6`},Tt={class:`flex flex-col gap-1`},Et={class:`tfa-row-title`},Dt={class:`tfa-row-description`},Ot={key:`loading`,class:`flex flex-col items-center py-8 gap-3`},kt={class:`text-sm text-muted`},At={key:`setup`,class:`tfa-setup`},jt={class:`tfa-setup-qr`},Mt={class:`text-sm text-muted text-center mt-3`},Nt={class:`flex flex-col gap-5 flex-1`},Pt={class:`flex flex-col field-gap`},Ft={class:`cui-label`},It={class:`flex flex-col field-gap`},Lt={class:`cui-label`},Rt={class:`flex gap-2 justify-end`},zt={key:`enabled`,class:`flex flex-col gap-6`},Bt={class:`tfa-row tfa-row-enabled`},Vt={class:`tfa-status-icon`},Ht={class:`tfa-row-content`},Ut={class:`tfa-row-title`},Wt={key:0,class:`tfa-backup-info`},Gt={class:`flex gap-2 justify-end`},Kt={key:0},qt={class:`card-title`},Jt={class:`flex items-center gap-4`},Yt={class:`flex flex-col field-switch-gap min-w-0`},Xt={class:`text-sm font-bold text-color`},Zt={class:`card-title`},Qt={class:`flex flex-col gap-6`},$t={class:`text-sm text-muted`},en={class:`text-muted text-sm`},tn={class:`flex items-center gap-3`},nn={class:`flex flex-col min-w-0`},rn={class:`text-sm font-semibold text-color truncate`},an={class:`text-xs text-muted truncate font-mono`},on={class:`text-xs text-muted`},sn={class:`flex flex-row items-end justify-end gap-2`},cn={class:`card-title`},ln={class:`flex flex-col gap-6`},un={class:`text-muted text-sm`},dn={class:`flex items-center gap-3`},fn={class:`flex flex-col min-w-0`},pn={class:`flex items-center gap-2`},mn={class:`text-sm font-semibold text-color truncate`},hn={class:`text-xs text-muted truncate`},gn={key:0,class:`flex flex-row items-end justify-end gap-2`},Y=l(F({__name:`SettingsAccount`,props:{firststeps:{type:Boolean}},setup(l,{expose:_}){let S=new B,N=l,F=p(),V=o(),{t:H}=i(),{firststeps:U}=T(N),W=d(),{user:G}=pe(W),{data:K,isLoading:Oe}=S.toggleQueryActivator(`get2FAStatusQuery`,!U.value).get2FAStatusQuery(),{mutateAsync:ke,isPending:je}=S.setup2FAQuery(),{mutateAsync:Me,isPending:Pe}=S.enable2FAQuery(),{data:Fe,isBusy:Ie}=S.toggleQueryActivator(`listSessionsQuery`,!U.value).listSessionsQuery({page:1,pageSize:-1}),{mutateAsync:Re}=S.revokeSessionQuery(),{mutateAsync:ze}=S.revokeOtherSessionsQuery(),{data:Be,isBusy:He}=S.toggleQueryActivator(`listApiTokensQuery`,!U.value).listApiTokensQuery(),{mutateAsync:Ue,isPending:Ge}=S.createApiTokenQuery(),{mutateAsync:Ke}=S.revokeApiTokenQuery(),qe=z({password:s,passwordConfirm:R().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Je=z({username:R().min(1),password:s,passwordConfirm:R().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Xe=x(`formRef`),Ze=x(`passwordFormRef`),q=ue(),J=O(`avatar`),Y=O(G.value?.username??``),X=O(!1),Z=O(!1),Q=O(null),$=O(``),_n=O(null),vn=O(!1),yn=O(null);O(!1);let bn=O(!1),xn=O(!1),Sn=M(()=>!1),Cn={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}}},wn=M(()=>(Fe.value??[]).filter(e=>!e.is_current).length),Tn=M(()=>!Q.value?.secret||!G.value?.username?``:`otpauth://totp/${encodeURIComponent(`camera.ui:${G.value.username}`)}?secret=${Q.value.secret}&issuer=camera.ui`);async function En(){Q.value?.secret&&await h(Q.value.secret)}function Dn(e){return e===`tv`?Ne:e===`native`?Ee:Ae}async function On(e){_n.value=e;try{await Re({id:e})}catch(e){V.add({severity:`error`,detail:e,life:3e3})}finally{_n.value=null}}function kn(){F.openComponentDialog(Ve,{data:{title:H(`views.settings.api_tokens.create`),confirmText:H(`views.settings.api_tokens.create_confirm`),contentProps:{existingNames:(Be.value??[]).map(e=>e.name)}},onConfirm:async e=>{if(e)try{An((await Ue({name:e})).token)}catch(e){V.add({severity:`error`,detail:e,life:3e3})}}})}function An(e){F.openComponentDialog(Le,{data:{title:H(`views.settings.api_tokens.created_title`),confirmText:H(`components.form.button.close`),hideCancelButton:!0,contentProps:{token:e}}})}function jn(e){F.openTextDialog({data:{title:H(`views.settings.api_tokens.revoke_title`),contentText:H(`views.settings.api_tokens.revoke_confirm`,{name:e.name}),confirmText:H(`views.settings.api_tokens.revoke`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{yn.value=e.id;try{await Ke({id:e.id})}catch(e){V.add({severity:`error`,detail:e,life:3e3})}finally{yn.value=null}}})}function Mn(){F.openTextDialog({data:{title:H(`views.settings.active_sessions.revoke_others_title`),contentText:H(`views.settings.active_sessions.revoke_others_confirm`,{count:wn.value}),confirmText:H(`views.settings.active_sessions.revoke`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{vn.value=!0;try{await ze()}catch(e){V.add({severity:`error`,detail:e,life:3e3})}finally{vn.value=!1}}})}async function Nn(){try{Q.value=await ke()}catch(e){V.add({severity:`error`,detail:e,life:3e3})}}function Pn(){Q.value=null,$.value=``}async function Fn(){try{let e=await Me({code:$.value});Q.value=null,$.value=``,V.add({severity:`success`,detail:H(`views.settings.security.2fa_enabled_success`),life:3e3}),Rn(e.backupCodes)}catch(e){V.add({severity:`error`,detail:e,life:3e3})}}function In(){F.openComponentDialog(Ye,{data:{title:H(`views.settings.security.disable_2fa`),confirmText:H(`views.settings.security.disable_2fa`),confirmButtonProps:{severity:`danger`},contentProps:{}}})}function Ln(){F.openComponentDialog(Qe,{data:{title:H(`views.settings.security.regenerate_backup`),confirmText:H(`views.settings.security.regenerate_backup`),contentProps:{onBackupCodesGenerated:e=>{Rn(e)}}}})}function Rn(e){F.openComponentDialog(We,{data:{title:H(`views.settings.security.backup_codes`),confirmText:H(`components.form.button.close`),hideCancelButton:!0,contentProps:{backupCodes:e}}})}async function zn(e){let t=e.target?.files;q.value=t?.[0],J.value=await m(e)??J.value}async function Bn(){X.value=!0;try{let e;q.value&&(e=new FormData,e.append(`upload`,q.value));let t=G.value?.username!==Y.value;if(t)await W.updateUser({username:Y.value},e);else if(e)await W.updateUser(void 0,e);else{X.value=!1;return}V.add({severity:`success`,detail:H(`components.toast.profile_updated`),life:3e3}),q.value=void 0,t&&W.logout()}catch{}X.value=!1}async function Vn(e){Z.value=!0;try{await W.updateUser({password:e.password,passwordConfirm:e.passwordConfirm}),V.add({severity:`success`,detail:H(`components.toast.password_updated`),life:3e3}),Ze.value?.resetForm(),W.logout()}catch(e){V.add({severity:`error`,detail:e,life:3e3})}Z.value=!1}async function Hn(){}async function Un(e){if(e!==bn.value){if(e){V.add({severity:`info`,detail:H(`views.settings.biometric.enable_hint`),life:3e3});return}xn.value=!0;try{await ne(c()),bn.value=!1,V.add({severity:`success`,detail:H(`views.settings.biometric.cleared`),life:3e3})}finally{xn.value=!1}}}return se(()=>{Hn()}),_({formRef:Xe}),(i,o)=>{let s=te,c=e,l=he,d=r,p=be,m=t,h=n,ne=Ce,_=f,x=ye,se=xe,S=ee,T=Te,O=fe,ue=ge,M=_e,N=me,F=u,R=Se,z=ve,pe=we,B=a;return b(),D(`div`,null,[E(`div`,$e,[L(U)?(b(),A(L(ae),{key:0,ref_key:`formRef`,ref:Xe,"validation-schema":L(Je),class:`flex flex-col w-full gap-6`},{default:g(()=>[E(`div`,et,[E(`div`,tt,[E(`label`,nt,[k(s,{src:L(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),E(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:o[0]||=e=>zn(e)},null,32)])]),E(`span`,rt,v(i.$t(`views.settings.profile`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,it,[k(L(C),{"model-value":L(G)?.username,name:`username`,as:`div`,class:`flex flex-col field-gap`},{default:g(({field:e,errors:t})=>[E(`label`,at,v(i.$t(`components.form.label.username`)),1),k(l,null,{default:g(()=>[k(c,y(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`])]),_:2},1024),k(w,{name:`fade`},{default:g(()=>[k(L(I),{name:`username`,class:`cui-input-error`})]),_:1})]),_:1},8,[`model-value`])])]),_:1})]),E(`div`,null,[E(`span`,ot,v(i.$t(`views.settings.password`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,st,[k(L(C),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:g(({field:e,errors:t})=>[E(`label`,ct,v(i.$t(`components.form.label.new_password`)),1),k(l,null,{default:g(()=>[k(p,y({invalid:t.length>0},e,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),k(w,{name:`fade`},{default:g(()=>[k(L(I),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),k(L(C),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:g(({field:e,errors:t})=>[E(`label`,lt,v(i.$t(`components.form.label.new_password_confirm`)),1),k(l,null,{default:g(()=>[k(p,y({invalid:t.length>0},e,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),k(w,{name:`fade`},{default:g(()=>[k(L(I),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1})])]),_:1})])]),_:1},8,[`validation-schema`])):(b(),D(de,{key:1},[E(`div`,ut,[E(`div`,dt,[E(`label`,ft,[k(s,{src:L(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),E(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:o[1]||=e=>zn(e)},null,32)])]),E(`span`,pt,v(i.$t(`views.settings.profile`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,mt,[E(`div`,ht,[E(`label`,gt,v(i.$t(`components.form.label.username`)),1),k(l,null,{default:g(()=>[k(c,{modelValue:L(Y),"onUpdate:modelValue":o[2]||=e=>j(Y)?Y.value=e:null,loading:L(X),type:`text`},null,8,[`modelValue`,`loading`])]),_:1})]),E(`div`,_t,[k(m,{loading:L(X),class:`cui-button-medium`,label:i.$t(`components.form.button.update_profile`),onClick:Bn},null,8,[`loading`,`label`])])])]),_:1})]),E(`div`,null,[E(`span`,vt,v(i.$t(`views.settings.password`)),1),k(d,{class:`cui-card`},{content:g(()=>[k(L(ae),{ref_key:`passwordFormRef`,ref:Ze,"validation-schema":L(qe),class:`flex flex-col gap-6`,onSubmit:o[3]||=e=>Vn(e)},{default:g(()=>[k(L(C),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:g(({field:e,errors:t})=>[E(`label`,yt,v(i.$t(`components.form.label.new_password`)),1),k(l,null,{default:g(()=>[k(p,y({invalid:t.length>0},e,{loading:L(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),k(w,{name:`fade`},{default:g(()=>[k(L(I),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),k(L(C),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:g(({field:e,errors:t})=>[E(`label`,bt,v(i.$t(`components.form.label.new_password_confirm`)),1),k(l,null,{default:g(()=>[k(p,y({invalid:t.length>0},e,{loading:L(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),k(w,{name:`fade`},{default:g(()=>[k(L(I),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1}),E(`div`,xt,[k(m,{type:`submit`,loading:L(Z),class:`cui-button-medium`,label:i.$t(`components.form.button.change_password`)},null,8,[`loading`,`label`])])]),_:1},8,[`validation-schema`])]),_:1})]),E(`div`,null,[E(`span`,St,v(i.$t(`views.settings.security.title`)),1),k(d,{class:`cui-card`},{content:g(()=>[L(Oe)?(b(),D(`div`,Ct,[k(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(w,{key:1,name:`fade`,mode:`out-in`},{default:g(()=>[!L(K)?.enabled&&!L(Q)&&!L(je)?(b(),D(`div`,wt,[E(`div`,Tt,[E(`span`,Et,v(i.$t(`views.settings.security.2fa_title`)),1),E(`span`,Dt,v(i.$t(`views.settings.security.2fa_description`)),1)]),k(m,{class:`cui-button-medium ml-auto`,label:i.$t(`views.settings.security.setup_2fa`),onClick:Nn},null,8,[`label`])])):!L(K)?.enabled&&L(je)?(b(),D(`div`,Ot,[k(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`}),E(`span`,kt,v(i.$t(`views.settings.security.generating_qr`)),1)])):!L(K)?.enabled&&L(Q)?(b(),D(`div`,At,[E(`div`,jt,[k(ne,{value:L(Tn),size:160,"logo-size":36},null,8,[`value`]),E(`p`,Mt,v(i.$t(`views.settings.security.scan_qr`)),1)]),E(`div`,Nt,[E(`div`,Pt,[E(`label`,Ft,v(i.$t(`views.settings.security.manual_entry`)),1),k(l,null,{default:g(()=>[k(c,{"model-value":L(Q)?.secret,readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),k(x,null,{default:g(()=>[k(_,{"action-text":i.$t(`components.form.tooltip.copied`),icon:L(ie),"button-props":{severity:`secondary`,text:!0},onAction:En},null,8,[`action-text`,`icon`])]),_:1})]),_:1})]),E(`div`,It,[E(`label`,Lt,v(i.$t(`views.settings.security.enter_code`)),1),k(se,{modelValue:L($),"onUpdate:modelValue":o[4]||=e=>j($)?$.value=e:null,length:6,"integer-only":``},null,8,[`modelValue`])]),E(`div`,Rt,[k(m,{severity:`secondary`,class:`cui-button-medium`,label:i.$t(`components.form.button.cancel`),onClick:Pn},null,8,[`label`]),k(m,{class:`cui-button-medium`,label:i.$t(`views.settings.security.enable_2fa`),loading:L(Pe),disabled:L($).length<6,onClick:Fn},null,8,[`label`,`loading`,`disabled`])])])])):(b(),D(`div`,zt,[E(`div`,Bt,[E(`div`,Vt,[k(S,{class:`w-5 h-5`})]),E(`div`,Ht,[E(`span`,Ut,v(i.$t(`views.settings.security.2fa_enabled`)),1)])]),L(K)?.backupCodesCount===void 0?P(``,!0):(b(),D(`div`,Wt,[k(T,{class:`w-4 h-4`}),E(`span`,null,v(i.$t(`views.settings.security.backup_codes_remaining`,{count:L(K).backupCodesCount})),1)])),E(`div`,Gt,[k(m,{severity:`secondary`,class:`cui-button-medium`,label:i.$t(`views.settings.security.regenerate_backup`),onClick:Ln},null,8,[`label`]),k(m,{severity:`danger`,class:`cui-button-medium`,label:i.$t(`views.settings.security.disable_2fa`),onClick:In},null,8,[`label`])])]))]),_:1}))]),_:1})]),L(Sn)?(b(),D(`div`,Kt,[E(`span`,qt,v(i.$t(`views.settings.biometric.title`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,Jt,[k(O,{class:`shrink-0 w-6 h-6 text-color`}),E(`div`,Yt,[E(`span`,Xt,v(i.$t(`views.settings.biometric.label`)),1),k(ue,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:g(()=>[le(v(i.$t(`views.settings.biometric.description`)),1)]),_:1})]),k(M,{"model-value":L(bn),loading:L(xn),class:`ml-auto shrink-0`,"onUpdate:modelValue":Un},null,8,[`model-value`,`loading`])])]),_:1})])):P(``,!0),E(`div`,null,[E(`span`,Zt,v(i.$t(`views.settings.api_tokens.title`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,Qt,[E(`span`,$t,v(i.$t(`views.settings.api_tokens.info`)),1),k(R,{value:L(Be)??[],"data-key":`id`,loading:L(He),pt:Cn,"striped-rows":``,scrollable:``},{loading:g(()=>[k(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:g(()=>[E(`span`,en,v(i.$t(`views.settings.api_tokens.empty`)),1)]),default:g(()=>[k(N,{field:`name`,header:i.$t(`views.settings.api_tokens.name_label`),"header-class":`p-2 h-7 min-h-7 max-h-7`,class:`p-2 h-7 min-h-7 max-h-7`},{body:g(({data:e})=>[E(`div`,tn,[k(L(De),{class:`cui-session-icon`}),E(`div`,nn,[E(`span`,rn,v(e.name),1),E(`span`,an,v(e.token_hint),1)])])]),_:1},8,[`header`]),k(N,{field:`last_seen_at`,header:i.$t(`views.settings.api_tokens.last_used`),"header-class":`p-2 h-7 min-h-7 max-h-7`,class:`p-2 h-7 min-h-7 max-h-7`},{body:g(({data:e})=>[E(`span`,on,v(e.last_seen_at>e.created_at?L(re)(e.last_seen_at):i.$t(`views.settings.api_tokens.never`)),1)]),_:1},8,[`header`]),k(N,{field:`action`,"header-class":`p-2 h-7 min-h-7 max-h-7`,class:`p-2 h-7 min-h-7 max-h-7 text-right`},{body:g(({data:e})=>[ce((b(),A(m,{severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:L(yn)===e.id,onClick:t=>jn(e)},{icon:g(()=>[k(F,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:i.$t(`views.settings.api_tokens.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),E(`div`,sn,[k(m,{loading:L(Ge),class:`cui-button-medium mr-4 md:mr-0`,label:i.$t(`views.settings.api_tokens.create`),onClick:kn},null,8,[`loading`,`label`])])])]),_:1})]),E(`div`,null,[E(`span`,cn,v(i.$t(`views.settings.active_sessions.title`)),1),k(d,{class:`cui-card`},{content:g(()=>[E(`div`,ln,[k(R,{value:L(Fe)??[],"data-key":`id`,loading:L(Ie),pt:Cn,"striped-rows":``,scrollable:``},{loading:g(()=>[k(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:g(()=>[E(`span`,un,v(i.$t(`views.settings.active_sessions.empty`)),1)]),default:g(()=>[k(N,{field:`device`,header:i.$t(`views.settings.title_device`),"header-class":`p-2 h-7 min-h-7 max-h-7`,class:`p-2 h-7 min-h-7 max-h-7`},{body:g(({data:e})=>[E(`div`,dn,[(b(),A(oe(Dn(e.device.kind)),{class:`cui-session-icon`})),E(`div`,fn,[E(`div`,pn,[E(`span`,mn,v(e.device.name),1),e.is_current?(b(),A(z,{key:0,severity:`success`,value:i.$t(`views.settings.active_sessions.this_device`),class:`cui-session-tag`},null,8,[`value`])):P(``,!0)]),E(`span`,hn,v(e.device.ip||`—`),1)])])]),_:1},8,[`header`]),k(N,{field:`action`,"header-class":`p-2 h-7 min-h-7 max-h-7`,class:`p-2 h-7 min-h-7 max-h-7 text-right`},{body:g(({data:e})=>[e.is_current?P(``,!0):ce((b(),A(m,{key:0,severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:L(_n)===e.id,onClick:t=>On(e.id)},{icon:g(()=>[k(pe,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:i.$t(`views.settings.active_sessions.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),L(wn)>0?(b(),D(`div`,gn,[k(m,{loading:L(vn),class:`cui-button-medium mr-4 md:mr-0`,label:i.$t(`views.settings.active_sessions.revoke_all_others`,{count:L(wn)}),onClick:Mn},null,8,[`loading`,`label`])])):P(``,!0)])]),_:1})])],64))])])}}}),[[`__scopeId`,`data-v-f85a1758`]]);export{Y as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./SettingsAccount-8OZJLQi-.js";export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./SettingsAppearance-EvPWgF4c.js";export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{at as e,hr as t,ya as n}from"./vendor-cameraui-K1Nw4PvF.js";import{Fr as r,Jn as i,Tn as ee,qn as a,v as o,y as s}from"./api-D1iULsSy.js";import{$n as c,Cr as l,Fn as te,In as u,Rn as ne,cn as d,dn as f,dr as p,gn as m,hn as h,or as g,rn as re,sn as _,un as v,vn as y,yr as b}from"./vendor-Df81FCJz.js";import{p as x}from"./vendor-core-CJdfpB0I.js";import{H as ie,N as ae,V as oe}from"./vendor-primevue-DoA2Rwcb.js";import{n as se,r as ce}from"./useNavLayout-6zM1Y-7B.js";import{n as le}from"./theme-BOppzzar.js";var S={class:`flex flex-col w-full gap-6`},C={key:0},w={class:`card-title`},T={class:`flex flex-col gap-6`},E={class:`flex flex-col field-gap`},D={class:`cui-label`},O={class:`w-full flex flex-col gap-2`},k={class:`flex flex-col field-gap cui-toggle-switch`},A={class:`flex items-center gap-4`},j={class:`flex flex-col field-switch-gap`},M={class:`cui-label-switch`},N={key:1},P={class:`card-title`},F={class:`flex flex-col gap-6`},I={class:`flex flex-col field-gap`},L={class:`cui-label`},R={key:2},z={class:`card-title`},B={class:`flex flex-col gap-6`},V={class:`flex flex-col field-gap`},H={class:`cui-label`},U={key:0,class:`flex flex-col field-gap`},W={class:`cui-label`},ue={class:`flex flex-col field-gap`},de={class:`cui-label`},fe={class:`w-full flex flex-col gap-2`},pe={class:`flex flex-col field-gap cui-toggle-switch`},me={class:`flex items-center gap-4`},he={class:`flex flex-col field-switch-gap`},ge={class:`cui-label-switch`},_e={key:3},ve={class:`card-title`},ye={class:`w-full flex flex-col gap-2`},be={class:`flex flex-col field-gap cui-toggle-switch`},xe={class:`flex items-center gap-4`},Se={class:`flex flex-col field-switch-gap`},Ce={class:`cui-label-switch`},we={class:`flex items-center gap-4`},Te={class:`flex flex-col field-switch-gap`},Ee={class:`cui-label-switch`},De={class:`card-title`},Oe={class:`w-full flex flex-col gap-2`},ke={class:`flex flex-col field-gap cui-toggle-switch`},Ae={class:`flex items-center gap-4`},je={class:`flex flex-col field-switch-gap`},Me={class:`cui-label-switch`},Ne={class:`flex flex-col field-gap cui-toggle-switch`},Pe={class:`flex items-center gap-4`},Fe={class:`flex flex-col field-switch-gap`},Ie={class:`cui-label-switch`},G=y({__name:`SettingsAppearance`,props:{compact:{type:Boolean,default:!1}},setup(y){let{t:G}=t(),{settingsInNav:K,isCollapsible:Le,setCollapsible:Re,setSettingsInNav:ze}=ce(),Be=o(),{language:q,languageOptions:Ve}=x(Be),He=le(),{colors:Ue,theme:J,autoMode:Y}=x(He),We=i(),{uiSettings:X}=x(We),Z=p(n.isRecording()),Q=p(n.isDebug()),$=[5,10,15,25,50,100],Ge=_(()=>[...se,...K.value?[`settings`]:[]]),Ke=_(()=>s().map(e=>({label:G(`navigation.${e.meta.name}`),value:e.path}))),qe=_(()=>a.map(e=>({label:G(`navigation.${e}`),value:e}))),Je=n.onChange(()=>{Z.value=n.isRecording(),Q.value=n.isDebug()});function Ye(e){n.setRecording(e),e||n.clear()}function Xe(e){n.setDebug(e)}return te(Je),(t,n)=>{let i=ie,a=ae,o=oe,s=e;return u(),f(`div`,null,[d(`div`,S,[b(r)()?v(``,!0):(u(),f(`div`,C,[d(`span`,w,l(t.$t(`views.settings.theme`)),1),m(s,{class:`cui-card`},{content:c(()=>[d(`div`,T,[d(`div`,E,[d(`label`,D,l(t.$t(`components.form.label.theme`)),1),m(i,{modelValue:b(J),"onUpdate:modelValue":n[0]||=e=>g(J)?J.value=e:null,options:b(Ue),disabled:b(Y)},null,8,[`modelValue`,`options`,`disabled`])]),d(`div`,O,[d(`div`,k,[d(`div`,A,[d(`div`,j,[d(`label`,M,l(t.$t(`components.form.label.system_preference`)),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.system_preference`)),1)]),_:1})]),m(o,{modelValue:b(Y),"onUpdate:modelValue":n[1]||=e=>g(Y)?Y.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),b(r)()?v(``,!0):(u(),f(`div`,N,[d(`span`,P,l(t.$t(`views.settings.locale`)),1),m(s,{class:`cui-card`},{content:c(()=>[d(`div`,F,[d(`div`,I,[d(`label`,L,l(t.$t(`components.form.label.language`)),1),m(i,{modelValue:b(q),"onUpdate:modelValue":n[2]||=e=>g(q)?q.value=e:null,options:b(Ve),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`])])])]),_:1})])),y.compact?v(``,!0):(u(),f(`div`,R,[d(`span`,z,l(t.$t(`views.settings.interface`)),1),m(s,{class:`cui-card`},{content:c(()=>[d(`div`,B,[d(`div`,V,[d(`label`,H,l(t.$t(`components.form.label.default_landing_page`)),1),m(i,{modelValue:b(X).interface.landingPage,"onUpdate:modelValue":n[3]||=e=>b(X).interface.landingPage=e,options:b(Ke),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.default_landing_page`)),1)]),_:1})]),(`hasPermission`in t?t.hasPermission:b(ee))(void 0,`admin`)?(u(),f(`div`,U,[d(`label`,W,l(t.$t(`components.form.label.default_settings_page`)),1),m(i,{modelValue:b(X).interface.selectedSettingsView,"onUpdate:modelValue":n[4]||=e=>b(X).interface.selectedSettingsView=e,options:b(qe),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.default_settings_page`)),1)]),_:1})])):v(``,!0),d(`div`,ue,[d(`label`,de,l(t.$t(`components.form.label.table_rows`)),1),m(i,{modelValue:b(X).interface.tableRows,"onUpdate:modelValue":n[5]||=e=>b(X).interface.tableRows=e,options:$},null,8,[`modelValue`]),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.table_rows`)),1)]),_:1})]),d(`div`,fe,[d(`div`,pe,[d(`div`,me,[d(`div`,he,[d(`label`,ge,l(t.$t(`components.form.label.navbar_stay_collapsed`)),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.navbar_stay_collapsed`)),1)]),_:1})]),m(o,{modelValue:b(X).interface.navbarStayCollapsed,"onUpdate:modelValue":n[6]||=e=>b(X).interface.navbarStayCollapsed=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),y.compact?v(``,!0):(u(),f(`div`,_e,[d(`span`,ve,l(t.$t(`views.settings.navigation`)),1),m(s,{class:`cui-card`},{content:c(()=>[d(`div`,ye,[d(`div`,be,[d(`div`,xe,[d(`div`,Se,[d(`label`,Ce,l(t.$t(`components.form.label.nav_settings_in_nav`)),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.nav_settings_in_nav`)),1)]),_:1})]),m(o,{"model-value":b(K),class:`ml-auto shrink-0`,"onUpdate:modelValue":n[7]||=e=>b(ze)(e)},null,8,[`model-value`])])]),(u(!0),f(re,null,ne(b(Ge),e=>(u(),f(`div`,{key:e,class:`flex flex-col field-gap cui-toggle-switch`},[d(`div`,we,[d(`div`,Te,[d(`label`,Ee,l(t.$t(`components.form.label.nav_group_collapsible`,{group:t.$t(`navigation.group_${e}`)})),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.nav_group_collapsible`,{group:t.$t(`navigation.group_${e}`)})),1)]),_:2},1024)]),m(o,{"model-value":b(Le)(e),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>b(Re)(e,t)},null,8,[`model-value`,`onUpdate:modelValue`])])]))),128))])]),_:1})])),d(`div`,null,[d(`span`,De,l(t.$t(`views.settings.debugging`)),1),m(s,{class:`cui-card`},{content:c(()=>[d(`div`,Oe,[d(`div`,ke,[d(`div`,Ae,[d(`div`,je,[d(`label`,Me,l(t.$t(`components.form.label.debug_verbose`)),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.debug_verbose`)),1)]),_:1})]),m(o,{"model-value":b(Q),class:`ml-auto shrink-0`,"onUpdate:modelValue":Xe},null,8,[`model-value`])])]),d(`div`,Ne,[d(`div`,Pe,[d(`div`,Fe,[d(`label`,Ie,l(t.$t(`components.form.label.record_logs`)),1),m(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[h(l(t.$t(`components.form.hint.record_logs`)),1)]),_:1})]),m(o,{"model-value":b(Z),class:`ml-auto shrink-0`,"onUpdate:modelValue":Ye},null,8,[`model-value`])])])])]),_:1})])])])}}});export{G as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e,Xt as t,Yt as n,at as r,hr as i,nn as a}from"./vendor-cameraui-K1Nw4PvF.js";import{Br as o,In as s,R as ee,Zr as c,ct as te,dn as l,i as u,m as d,mn as f,o as p}from"./api-D1iULsSy.js";import{$n as m,An as ne,Bn as re,Cr as h,In as g,Jn as _,Rn as v,Xn as y,br as b,cn as x,dn as S,dr as C,er as w,gn as T,hn as E,hr as D,ln as O,or as k,rn as A,sn as j,sr as M,un as N,vn as P,yr as F}from"./vendor-Df81FCJz.js";import{q as I}from"./types-CeruGCb8.js";import{C as L,F as R,H as ie,I as ae,M as oe,N as se,P as ce,R as le,T as ue,V as de,a as fe,f as z,i as B,j as pe,l as me,s as he,v as ge,z as _e}from"./vendor-primevue-DoA2Rwcb.js";import{t as ve}from"./chevron-down-CxK4Sfjs.js";import{t as ye}from"./assistant-7hqP6OpA.js";import{a as V,d as be,i as xe,n as Se,o as H,r as Ce,s as we,t as Te}from"./assistantModels-D3ncWWu0.js";import{t as Ee}from"./pencil-outline-D-GmPf8M.js";import{t as De}from"./content-copy-BcYlfuFc.js";import{t as Oe}from"./brain-uZ03n3LW.js";import{t as ke}from"./plus-BJb7U4bN.js";import{t as Ae}from"./restore-xRBt3Grb.js";import{t as je}from"./CuiDataTable-DfjXa0C1.js";import{t as Me}from"./dots-vertical-Kby1GY8_.js";import{t as U}from"./pause-DHqHYA3V.js";var W={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function G(e,t){return g(),S(`svg`,W,[...t[0]||=[x(`path`,{fill:`currentColor`,d:`m22.61 19l-9.08-9.09c.93-2.34.47-5.1-1.44-7C9.79.61 6.21.4 3.66 2.26L7.5 6.11L6.08 7.5L2.25 3.69C.39 6.23.6 9.82 2.9 12.11c1.86 1.86 4.57 2.35 6.89 1.48l9.11 9.11c.39.39 1.02.39 1.41 0l2.3-2.3c.39-.4.39-1.01 0-1.4m-3 1.59l-9.46-9.46c-.61.45-1.29.72-2 .82c-1.36.2-2.79-.21-3.83-1.25C3.37 9.76 2.93 8.5 3 7.26l3.09 3.09l4.24-4.24L7.24 3c1.26-.05 2.49.39 3.44 1.33a4.47 4.47 0 0 1 1.24 3.96a4.35 4.35 0 0 1-.88 1.96l9.46 9.45z`},null,-1)]])}var Ne=M({name:`mdi-wrench-outline`,render:G}),Pe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Fe(e,t){return g(),S(`svg`,Pe,[...t[0]||=[x(`path`,{fill:`currentColor`,d:`m12 15.39l-3.76 2.27l.99-4.28l-3.32-2.88l4.38-.37L12 6.09l1.71 4.04l4.38.37l-3.32 2.88l.99 4.28M22 9.24l-7.19-.61L12 2L9.19 8.63L2 9.24l5.45 4.73L5.82 21L12 17.27L18.18 21l-1.64-7.03z`},null,-1)]])}var Ie=M({name:`mdi-star-outline`,render:Fe}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return g(),S(`svg`,K,[...t[0]||=[x(`path`,{fill:`currentColor`,d:`M11 9.47V11h3.76L13 14.53V13H9.24zM13 1L6 15h5v8l7-14h-5z`},null,-1)]])}var Le=M({name:`mdi-lightning-bolt-outline`,render:q}),Re={class:`flex w-full flex-col gap-6`},ze={class:`flex flex-col field-gap`},Be={for:`assistantModelProvider`,class:`cui-label`},Ve={key:0,class:`flex flex-col field-gap`},He={for:`assistantModelBaseUrl`,class:`cui-label`},Ue={key:1,class:`flex flex-col field-gap`},J={for:`assistantModelKey`,class:`cui-label`},Y={key:2,class:`flex flex-col field-gap`},X={for:`assistantModelPluginModel`,class:`cui-label`},We={key:3,class:`flex flex-col field-gap`},Z={for:`assistantModelModel`,class:`cui-label`},Ge={key:4,class:`flex flex-col field-gap`},Ke={for:`assistantModelContext`,class:`cui-label`},qe={class:`flex flex-col field-gap`},Q={for:`assistantModelName`,class:`cui-label`},Je={class:`flex items-center gap-4 cui-toggle-switch`},Ye={class:`flex flex-col field-switch-gap`},Xe={for:`assistantModelUsers`,class:`cui-label-switch`},Ze={class:`flex items-center gap-4 cui-toggle-switch`},$={class:`flex flex-col field-switch-gap`},Qe={for:`assistantModelRouting`,class:`cui-label-switch`},$e={key:5,class:`flex items-center gap-4 cui-toggle-switch`},et={class:`flex flex-col field-switch-gap`},tt={for:`assistantModelImages`,class:`cui-label-switch`},nt=P({__name:`AssistantModel`,props:{entry:{},models:{},modelProviders:{}},setup(t,{expose:n}){let r=new ye,a=t,{t:s,locale:ee}=i(),c=o(),te=r.listAssistantModelsMutation(),l=C(a.entry?.provider??`ollama`),u=C(a.entry?.baseURL??``),d=C(``),f=C(a.entry?.model??``),p=C(a.entry&&a.entry.name!==a.entry.model?a.entry.name:``),re=C(a.entry?.sendImages??!1),_=C(a.entry?.contextTokens??null),v=C(a.entry?.toolRouting??!1),b=C(a.entry?.userAccess!==!1),w=C(`new`),D=C([]),M=C([]),P=C(!1),I=j(()=>[...Ce.map(e=>({label:e.label,value:e.value})),...a.modelProviders.map(e=>({label:s(`views.settings.assistant_provider_plugin`,{name:e.pluginName}),value:e.provider}))]),L=j(()=>a.modelProviders.find(e=>e.provider===l.value)),R=j(()=>L.value?.models??[]),ae=j(()=>L.value?.status),oe=j(()=>{let e=ae.value?.ready===!1?ae.value.progress:void 0;return e===void 0?void 0:Math.round(e*100)}),ce=j(()=>{if(ae.value?.ready===!1)return ae.value.message||s(`views.settings.assistant_model_plugin_loading`);if(!R.value.length)return s(`views.settings.assistant_model_plugin_none`);let e=R.value.find(e=>e.id===f.value);if(!e)return s(`views.settings.assistant_model_plugin_info`);let t=s(`views.settings.assistant_model_context`,{tokens:e.contextTokens.toLocaleString(ee.value)});return e.note?`${e.note} ${t}`:t}),le=j(()=>Se.includes(l.value)&&!L.value),fe=j(()=>l.value===`ollama`||l.value===`openai-compatible`),B=j(()=>a.entry?.apiKeySet===!0&&a.entry.provider===l.value),pe=j(()=>a.models.filter(e=>e._id!==a.entry?._id&&e.provider===l.value&&e.apiKeySet)),me=j(()=>[{label:B.value?s(`views.settings.assistant_api_key_stored`):s(`views.settings.assistant_api_key_new`),value:`new`},...pe.value.map(e=>({label:s(`views.settings.assistant_api_key_from`,{name:e.name}),value:e._id}))]),_e=j(()=>le.value&&w.value===`new`&&!d.value&&!B.value);function ve(){return B.value?`new`:pe.value[0]?._id??`new`}function V(){let e=w.value===`new`?d.value?{apiKey:d.value}:a.entry&&!B.value?{apiKey:null}:{}:{copyKeyFrom:w.value};return{...a.entry?{id:a.entry._id,retest:!0,sendImages:re.value}:{},...e,name:p.value,provider:l.value,baseURL:fe.value&&u.value?u.value:null,model:f.value.trim(),userAccess:b.value,contextTokens:L.value?null:_.value??null,toolRouting:v.value}}function be(){u.value=``,f.value=``,D.value=[],M.value=[],w.value=ve()}function xe(e){let t=e.query.toLowerCase();M.value=D.value.filter(e=>e.toLowerCase().includes(t))}async function H(){let e=await te.mutateAsync(V());if(e.error){c.add({severity:`warn`,detail:s(`views.settings.assistant_models_failed`,{message:e.error}),life:5e3});return}D.value=e.models,M.value=e.models}return y(()=>R.value.find(e=>e.id===f.value),e=>{e&&a.entry?.toolRouting==null&&(v.value=e.toolRouting===!0)},{immediate:!0}),ne(()=>{w.value=ve()}),n({onConfirm:async()=>!f.value.trim()||_e.value?(P.value=!0,null):V()}),(n,r)=>{let i=ie,a=se,o=e,s=he,ee=z,c=ue,ne=ge,y=de;return g(),S(`div`,Re,[x(`div`,ze,[x(`label`,Be,h(n.$t(`views.settings.assistant_provider_label`)),1),T(i,{modelValue:F(l),"onUpdate:modelValue":r[0]||=e=>k(l)?l.value=e:null,"input-id":`assistantModelProvider`,options:F(I),"option-label":`label`,"option-value":`value`,fluid:``,onChange:be},null,8,[`modelValue`,`options`]),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_provider_hint`)),1)]),_:1})]),F(fe)?(g(),S(`div`,Ve,[x(`label`,He,h(n.$t(`views.settings.assistant_base_url_label`)),1),T(o,{id:`assistantModelBaseUrl`,modelValue:F(u),"onUpdate:modelValue":r[1]||=e=>k(u)?u.value=e:null,modelModifiers:{trim:!0},placeholder:F(Te)[F(l)],fluid:``,autocomplete:`off`},null,8,[`modelValue`,`placeholder`])])):N(``,!0),F(le)||F(l)===`openai-compatible`?(g(),S(`div`,Ue,[x(`label`,J,h(n.$t(`views.settings.assistant_api_key_label`)),1),F(pe).length?(g(),O(i,{key:0,modelValue:F(w),"onUpdate:modelValue":r[2]||=e=>k(w)?w.value=e:null,options:F(me),"option-label":`label`,"option-value":`value`,fluid:``},null,8,[`modelValue`,`options`])):N(``,!0),F(w)===F(`new`)?(g(),S(A,{key:1},[T(s,{modelValue:F(d),"onUpdate:modelValue":r[3]||=e=>k(d)?d.value=e:null,"input-id":`assistantModelKey`,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`new-password`,invalid:F(P)&&F(_e),placeholder:F(B)?`••••••••`:``},null,8,[`modelValue`,`invalid`,`placeholder`]),F(B)?(g(),O(a,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_api_key_keep_hint`)),1)]),_:1})):F(le)?N(``,!0):(g(),O(a,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_api_key_optional`)),1)]),_:1}))],64)):N(``,!0)])):N(``,!0),F(L)?(g(),S(`div`,Y,[x(`label`,X,h(n.$t(`views.settings.assistant_model_label`)),1),F(R).length?(g(),O(i,{key:0,modelValue:F(f),"onUpdate:modelValue":r[4]||=e=>k(f)?f.value=e:null,"input-id":`assistantModelPluginModel`,options:F(R),"option-label":`name`,"option-value":`id`,fluid:``,invalid:F(P)&&!F(f).trim()},null,8,[`modelValue`,`options`,`invalid`])):F(oe)===void 0?N(``,!0):(g(),O(ee,{key:1,value:F(oe),"show-value":!1,class:`!h-1`},null,8,[`value`])),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(F(ce)),1)]),_:1})])):(g(),S(`div`,We,[x(`label`,Z,h(n.$t(`views.settings.assistant_model_label`)),1),T(c,{modelValue:F(f),"onUpdate:modelValue":r[5]||=e=>k(f)?f.value=e:null,"input-id":`assistantModelModel`,suggestions:F(M),loading:F(te).isPending.value,invalid:F(P)&&!F(f).trim(),dropdown:``,fluid:``,placeholder:n.$t(`views.settings.assistant_model_placeholder`),onComplete:xe,onDropdownClick:H},null,8,[`modelValue`,`suggestions`,`loading`,`invalid`,`placeholder`]),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_model_info`)),1)]),_:1})])),F(L)?N(``,!0):(g(),S(`div`,Ge,[x(`label`,Ke,h(n.$t(`views.settings.assistant_model_context_label`)),1),T(ne,{modelValue:F(_),"onUpdate:modelValue":r[6]||=e=>k(_)?_.value=e:null,"input-id":`assistantModelContext`,min:1e3,max:4e5,step:1e3,"use-grouping":!1,placeholder:n.$t(`views.settings.assistant_model_context_placeholder`),fluid:``},null,8,[`modelValue`,`placeholder`]),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_model_context_info`)),1)]),_:1})])),x(`div`,qe,[x(`label`,Q,h(n.$t(`views.settings.assistant_model_name_label`)),1),T(o,{id:`assistantModelName`,modelValue:F(p),"onUpdate:modelValue":r[7]||=e=>k(p)?p.value=e:null,modelModifiers:{trim:!0},placeholder:F(f).trim()||n.$t(`views.settings.assistant_model_name_placeholder`),maxlength:`40`,fluid:``},null,8,[`modelValue`,`placeholder`])]),x(`div`,Je,[x(`div`,Ye,[x(`label`,Xe,h(n.$t(`views.settings.assistant_model_users`)),1),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_model_users_info`)),1)]),_:1})]),T(y,{modelValue:F(b),"onUpdate:modelValue":r[8]||=e=>k(b)?b.value=e:null,"input-id":`assistantModelUsers`,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),x(`div`,Ze,[x(`div`,$,[x(`label`,Qe,h(n.$t(`views.settings.assistant_model_routing`)),1),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(n.$t(`views.settings.assistant_model_routing_info`)),1)]),_:1})]),T(y,{modelValue:F(v),"onUpdate:modelValue":r[9]||=e=>k(v)?v.value=e:null,"input-id":`assistantModelRouting`,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),t.entry?(g(),S(`div`,$e,[x(`div`,et,[x(`label`,tt,h(n.$t(`views.settings.assistant_send_images`)),1),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(t.entry.capabilities?.vision===!1?n.$t(`views.settings.assistant_send_images_no_vision`):n.$t(`views.settings.assistant_send_images_info`)),1)]),_:1})]),T(y,{modelValue:F(re),"onUpdate:modelValue":r[10]||=e=>k(re)?re.value=e:null,"input-id":`assistantModelImages`,class:`ml-auto shrink-0`},null,8,[`modelValue`])])):N(``,!0)])}}}),rt={class:`flex w-full flex-col field-gap`},it={for:`assistantScheduleModel`,class:`cui-label`},at=P({__name:`AssistantScheduleModel`,props:{models:{},modelId:{},fallback:{}},setup(e,{expose:t}){let n=e,r=C(n.models.some(e=>e._id===n.modelId)?n.modelId??null:null);return t({onConfirm:async()=>({modelId:r.value??null})}),(t,n)=>{let i=ie,a=se;return g(),S(`div`,rt,[x(`label`,it,h(t.$t(`views.settings.assistant_schedule_model_label`)),1),T(i,{modelValue:F(r),"onUpdate:modelValue":n[0]||=e=>k(r)?r.value=e:null,"input-id":`assistantScheduleModel`,options:e.models,"option-label":`name`,"option-value":`_id`,"show-clear":``,fluid:``,placeholder:e.fallback},null,8,[`modelValue`,`options`,`placeholder`]),T(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(t.$t(`views.settings.assistant_schedule_model_hint`)),1)]),_:1})])}}}),ot={class:`w-full h-full`},st={key:0,class:`w-full h-full flex items-center justify-center`},ct={key:1,class:`flex flex-col w-full gap-6`},lt={class:`card-title`},ut={class:`flex items-center gap-4`},dt={class:`flex flex-col field-switch-gap min-w-0`},ft={class:`text-sm font-bold text-color`},pt={class:`card-title`},mt={class:`flex flex-col gap-6`},ht={class:`flex items-center gap-4 cui-toggle-switch`},gt={class:`flex flex-col field-switch-gap`},_t={for:`enabled`,class:`cui-label-switch`},vt={key:0,class:`flex flex-col divide-y divide-(--border-color)`},yt={class:`flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1`},bt={class:`max-w-full basis-full truncate font-medium text-color md:basis-auto`},xt={class:`order-3 mt-1 flex flex-wrap items-center gap-1.5 md:order-2 md:mt-0`},St={class:`order-2 basis-full truncate text-muted md:order-3`},Ct={key:0,class:`order-4 basis-full text-xs text-danger line-clamp-2`},wt={key:1,class:`order-4 basis-full text-xs text-muted line-clamp-2`},Tt={class:`hidden shrink-0 items-center gap-1 md:flex`},Et={class:`shrink-0 md:hidden`},Dt={key:1,class:`text-sm text-muted`},Ot={class:`flex`},kt={class:`card-title`},At={class:`flex flex-col gap-6`},jt={class:`flex min-w-0 items-center gap-2`},Mt=[`for`],Nt={key:1,class:`text-sm text-muted`},Pt={class:`flex`},Ft={class:`card-title`},It={class:`flex flex-col gap-6`},Lt={class:`flex items-center gap-4 cui-toggle-switch`},Rt={class:`flex flex-col field-switch-gap`},zt={for:`memoryEnabled`,class:`cui-label-switch`},Bt={class:`flex items-center gap-4 cui-toggle-switch`},Vt={class:`flex flex-col field-switch-gap`},Ht={for:`terminalEnabled`,class:`cui-label-switch`},Ut={class:`flex flex-col field-gap`},Wt={for:`language`,class:`cui-label`},Gt={class:`flex flex-col field-gap`},Kt={for:`reasoning`,class:`cui-label`},qt={class:`flex flex-col md:flex-row gap-6`},Jt={class:`flex flex-col field-gap flex-1`},Yt={for:`maxIterations`,class:`cui-label`},Xt={class:`flex flex-col field-gap flex-1`},Zt={for:`maxToolCalls`,class:`cui-label`},Qt={class:`flex flex-col field-gap`},$t={for:`contextTokens`,class:`cui-label`},en={class:`flex flex-col md:flex-row gap-4`},tn={class:`flex flex-col field-gap flex-1`},nn={for:`historyThreads`,class:`cui-label`},rn={class:`flex flex-col field-gap flex-1`},an={for:`historyImages`,class:`cui-label`},on={class:`flex flex-col field-gap`},sn={for:`systemPromptExtra`,class:`cui-label`},cn={class:`flex items-center gap-2`},ln={class:`card-title`},un={class:`flex flex-col gap-6`},dn={class:`flex flex-col gap-4`},fn={class:`flex items-center justify-between gap-4`},pn={class:`flex flex-col`},mn={class:`text-sm font-medium text-color`},hn={class:`text-xs text-muted`},gn={class:`flex items-center justify-between gap-4`},_n={class:`flex flex-col`},vn={class:`text-sm font-medium text-color`},yn={class:`text-xs text-muted`},bn={key:0,class:`flex flex-col gap-6`},xn={class:`flex flex-col field-gap`},Sn={for:`mcpEndpoint`,class:`cui-label`},Cn={class:`flex flex-col field-gap`},wn={for:`mcpClient`,class:`cui-label`},Tn={class:`flex`},En={class:`card-title`},Dn={class:`flex flex-col gap-6`},On=[`aria-expanded`,`onClick`],kn={class:`flex min-w-0 flex-1 flex-col gap-0.5`},An={class:`truncate text-sm font-medium text-color`},jn=[`inert`],Mn={class:`flex flex-col gap-4 px-4 pb-4`},Nn={class:`flex items-center gap-4 cui-toggle-switch`},Pn={class:`flex flex-col field-switch-gap`},Fn=[`for`],In={class:`flex flex-col md:flex-row gap-4`},Ln={class:`flex flex-col field-gap md:w-56`},Rn=[`for`],zn={class:`flex flex-col field-gap flex-1`},Bn=[`for`],Vn={class:`flex flex-col field-gap`},Hn=[`for`],Un={class:`flex items-center gap-4 cui-toggle-switch`},Wn={class:`flex flex-col field-switch-gap`},Gn=[`for`],Kn={class:`flex`},qn={class:`flex items-center gap-2`},Jn={class:`card-title`},Yn={class:`flex flex-col gap-6`},Xn={key:0,class:`flex flex-col divide-y divide-(--border-color)`},Zn={class:`max-w-full basis-full truncate font-medium text-color md:basis-auto`},Qn={class:`flex flex-wrap items-center gap-1.5`},$n={class:`basis-full text-muted line-clamp-2`},er={class:`basis-full text-xs text-muted`},tr={key:0},nr={key:1},rr={key:0,class:`basis-full text-xs text-danger line-clamp-2`},ir={class:`shrink-0`},ar={class:`flex flex-col md:flex-row gap-6`},or={class:`flex flex-col field-gap flex-1`},sr={for:`scheduleTitle`,class:`cui-label`},cr={class:`flex flex-col field-gap w-full md:w-52 shrink-0`},lr={for:`scheduleDeliver`,class:`cui-label`},ur={class:`flex flex-col field-gap`},dr={for:`schedulePrompt`,class:`cui-label`},fr={class:`flex flex-col md:flex-row gap-6`},pr={key:0,class:`flex flex-col field-gap flex-1`},mr={for:`scheduleProfile`,class:`cui-label`},hr={class:`flex flex-col field-gap flex-1`},gr={for:`scheduleModel`,class:`cui-label`},_r={class:`flex flex-col md:flex-row gap-6`},vr={class:`flex flex-col field-gap flex-1`},yr={for:`schedulePreset`,class:`cui-label`},br={key:0,class:`flex flex-col field-gap w-full md:w-40 shrink-0`},xr={for:`scheduleTime`,class:`cui-label`},Sr={key:1,class:`flex flex-col field-gap flex-1`},Cr={for:`scheduleCron`,class:`cui-label`},wr={class:`flex`},Tr={class:`card-title`},Er={class:`flex flex-col gap-3`},Dr={class:`text-sm text-muted`},Or={class:`truncate`},kr={class:`truncate`},Ar={class:`card-title`},jr={key:0,class:`text-sm text-muted`},Mr={key:1,class:`flex flex-col gap-6`},Nr={key:0,class:`mb-4 flex flex-col field-gap`},Pr=[`for`],Fr={class:`flex max-h-96 flex-col divide-y divide-(--border-color) overflow-y-auto pr-2`},Ir={class:`min-w-0 flex-1`},Lr={class:`flex flex-wrap items-center gap-2`},Rr={class:`font-medium text-color`},zr={class:`text-muted`},Br={key:0,class:`flex`},Vr=`none`,Hr=s(P({__name:`SettingsAssistant`,setup(s){let ne={icon:ee,iconProps:{class:`text-red-500`},labelProps:{class:`text-red-500`},buttonProps:{severity:`danger`}},M={memoryEnabled:!0,terminalEnabled:!1,language:null,reasoning:`default`,maxIterations:8,maxToolCalls:25,contextTokens:48e3,historyThreads:50,historyImages:24},P={columnHeaderContent:{class:`justify-end`}},ue={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}}},z=new ye,Se=o(),Te=l(),{t:W,locale:G}=i(),{data:Pe,isLoading:Fe}=z.usageAllQuery(),{data:K}=z.getAssistantInfoQuery(),q=z.patchAssistantInfoMutation(),{data:Re}=z.listProfilesQuery(),{data:ze}=z.listSchedulesQuery(),Be=z.createScheduleMutation(),Ve=z.patchScheduleMutation(),He=z.deleteScheduleMutation(),Ue=z.runScheduleMutation(),J=C(null),Y=C({title:``,prompt:``,preset:`daily`,time:`20:00`,cron:``,deliver:`push`,profileId:null,modelId:null}),X=C({}),We=C([]),Z=C([]),Ge=C(`claude-code`),Ke=C(`core`),qe=_(`rowMenuRef`),Q=j(()=>K.value?.settings.models??[]),Je=j(()=>K.value?V(K.value.settings):void 0),Ye=j(()=>[{label:W(`views.settings.assistant_plugin_no_access`),value:Vr},...Q.value.map(e=>({label:e.name,value:e._id}))]),Xe=j(()=>{let e=new Map;for(let t of K.value?.tools??[]){let n=t.source.kind===`plugin`?t.source.pluginId:t.source.kind===`external`?t.source.serverId:`core`,r=t.source.kind===`plugin`?t.source.pluginName:t.source.kind===`external`?t.source.serverName:`camera.ui`,i=e.get(n)??{key:n,label:r,serverId:t.source.kind===`external`?t.source.serverId:void 0,tools:[]};i.tools.push(t),e.set(n,i)}return Array.from(e.values())}),Ze=j(()=>Pe.value?.map(e=>({...e,key:`${e.userId}-${e.month}-${e.provider}-${e.model}`}))),$=j(()=>K.value?.status),Qe=j(()=>{let e=new Intl.DisplayNames([G.value],{type:`language`}),t=I.map(t=>({label:e.of(t)??t,value:t})).sort((e,t)=>e.label.localeCompare(t.label,G.value));return[{label:W(`views.settings.assistant_language_auto`),value:null},...t]}),$e=j(()=>[`default`,`off`,`low`,`high`].map(e=>({label:W(`views.settings.assistant_reasoning_${e}`),value:e}))),et=j(()=>new URL(`${c.defaults.baseURL??`/api`}/assistant/mcp`.replace(/\/{2,}/g,`/`),window.location.origin).toString()),tt=j(()=>[{label:`Claude Code`,value:`claude-code`},{label:`Cursor, Windsurf, VS Code`,value:`cursor`},{label:`Claude Desktop`,value:`claude-desktop`}]),rt=j(()=>{let e=et.value;return Ge.value===`claude-code`?`claude mcp add --transport http camera-ui ${e} --header "Authorization: Bearer <api token>"`:Ge.value===`cursor`?JSON.stringify({mcpServers:{"camera-ui":{url:e,headers:{Authorization:`Bearer <api token>`}}}},null,2):JSON.stringify({mcpServers:{"camera-ui":{command:`npx`,args:[`-y`,`mcp-remote`,e,`--header`,`Authorization: Bearer <api token>`]}}},null,2)}),it=j(()=>[`push`,`thread`,`both`].map(e=>({label:W(`views.settings.assistant_schedule_deliver_${e}`),value:e}))),Hr=j(()=>[`daily`,`weekdays`,`weekends`,`weekly`,`hourly`,`custom`].map(e=>({label:W(`views.settings.assistant_schedule_preset_${e}`),value:e}))),Ur=j(()=>{let{preset:e,time:t,cron:n}=Y.value,[r,i]=t.split(`:`).map(e=>Number.parseInt(e,10));return e===`custom`?n.trim():e===`hourly`?`0 * * * *`:Number.isNaN(r)||Number.isNaN(i)?``:`${i} ${r} * * ${e===`weekdays`?`1-5`:e===`weekends`?`0,6`:e===`weekly`?`0`:`*`}`}),Wr=j(()=>{switch($.value?.state){case`ready`:return`success`;case`unconfigured`:return`warn`;default:return`secondary`}}),Gr=j(()=>W(`views.settings.assistant_state_${$.value?.state??`disabled`}`)),Kr=j(()=>$.value?$.value.state===`ready`?W(`views.settings.assistant_status_ready`,{model:$.value.model}):W(`views.settings.assistant_status_info`):``);function qr(e){let t=/^(\d+) (\d+) \* \* (\*|1-5|0,6|0)$/.exec(e);if(!t)return e;let n=`${t[2].padStart(2,`0`)}:${t[1].padStart(2,`0`)}`,r=t[3]===`*`?`daily`:t[3]===`1-5`?`weekdays`:t[3]===`0`?`weekly`:`weekends`;return`${W(`views.settings.assistant_schedule_preset_${r}`)} ${n}`}function Jr(e){return e===`push`?`info`:e===`thread`?`secondary`:`success`}function Yr(e){return new Date(e).toLocaleString(G.value,{day:`2-digit`,month:`2-digit`,hour:`2-digit`,minute:`2-digit`})}async function Xr(){await Be.mutateAsync({title:Y.value.title,prompt:Y.value.prompt,cron:Ur.value,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,language:G.value,deliver:Y.value.deliver,profileId:Y.value.profileId,modelId:Y.value.modelId,enabled:!0}),Y.value={...Y.value,title:``,prompt:``,cron:``,profileId:null,modelId:null}}function Zr(e){return e.replace(/^\[[^\]]+\]\s*/,``)}function Qr(e){if(e.source.kind!==`external`)return e.approval;let{serverId:t,toolName:n}=e.source;return J.value?.mcpServers.find(e=>e.id===t)?.toolApproval[n]??e.approval}function $r(e){return e.tools.flatMap(e=>e.source.kind===`external`?[{label:be(e.name),value:e.source.toolName}]:[])}function ei(e){return e.tools.flatMap(e=>e.source.kind===`external`&&!Qr(e)?[e.source.toolName]:[])}function ti(e,t){let n=J.value?.mcpServers.find(t=>t.id===e.serverId);n&&(n.toolApproval=Object.fromEntries($r(e).map(e=>[e.value,!t.includes(e.value)])))}function ni(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4))}k`:`${(e/1e6).toFixed(2)}M`}function ri(e){return K.value?.external.find(t=>t.id===e)}function ii(e){let t=ri(e);return t?t.state===`connected`?W(`views.settings.assistant_external_state_connected`,{n:t.toolCount}):t.state===`error`?W(`views.settings.assistant_external_state_error`,{message:t.error??``}):W(`views.settings.assistant_external_state_${t.state}`):``}function ai(e){let t=ri(e)?.state;return t===`connected`?`text-success`:t===`error`?`text-danger`:`text-muted`}function oi(){if(!J.value)return;let e=d();J.value.mcpServers.push({id:e,name:``,url:``,enabled:!0,insecure:!1,tokenSet:!1,toolApproval:{}}),Z.value.push(e)}function si(e){Z.value=Z.value.includes(e)?Z.value.filter(t=>t!==e):[...Z.value,e]}function ci(e){J.value&&(J.value.mcpServers=J.value.mcpServers.filter(t=>t.id!==e),Z.value=Z.value.filter(t=>t!==e),delete X.value[e])}function li(){let e=p(J.value);return{language:e.language,maxIterations:e.maxIterations,maxToolCalls:e.maxToolCalls,contextTokens:e.contextTokens,historyThreads:e.historyThreads,historyImages:e.historyImages,terminalEnabled:e.terminalEnabled,reasoning:e.reasoning,systemPromptExtra:e.systemPromptExtra,mcpEnabled:e.mcpEnabled,mcpWrites:e.mcpWrites,memoryEnabled:e.memoryEnabled,plugins:e.plugins.map(({pluginId:e,modelId:t})=>({pluginId:e,modelId:t})),mcpServers:e.mcpServers.filter(e=>e.name.trim()||e.url.trim()).map(e=>({id:e.id,name:e.name.trim(),url:e.url.trim(),enabled:e.enabled,insecure:e.insecure,toolApproval:e.toolApproval,...X.value[e.id]?{token:X.value[e.id]}:{}}))}}function ui(){J.value&&Object.assign(J.value,M)}async function di(){J.value&&(await q.mutateAsync(li()),X.value={})}function fi(e){let t=K.value?.modelProviders.find(t=>t.provider===e);return t?W(`views.settings.assistant_provider_plugin`,{name:t.pluginName}):Ce.find(t=>t.value===e)?.label??e}function pi(e){return K.value?.modelProviders.find(t=>t.provider===e.provider)?.models.find(t=>t.id===e.model)?.name??e.model}function mi(e){let t=K.value?.modelProviders.find(t=>t.provider===e)?.status;if(!t||t.ready)return;let n=typeof t.progress==`number`?` (${Math.round(t.progress*100)}%)`:``;return`${t.message||W(`views.settings.assistant_model_plugin_loading`)}${n}`}async function hi(e){return q.mutateAsync({models:e})}function gi(e,t){We.value=[{label:W(`views.settings.assistant_model_make_default`),icon:Ie,hide:t._id===Je.value?._id,disabled:q.isPending.value,onClick:()=>Si(t)},{label:W(`views.settings.assistant_model_edit`),icon:Ee,onClick:()=>yi(t)},{...ne,label:W(`views.settings.assistant_model_delete`),onClick:()=>xi(t)}],qe.value?.toggleMenu(e)}function _i(e){Ve.mutate({scheduleId:e._id,patch:{enabled:!e.enabled}})}function vi(e,t){We.value=[{label:W(`views.settings.assistant_schedule_run`),icon:Le,onClick:()=>Ue.mutate(t._id)},t.enabled?{label:W(`views.settings.assistant_schedule_pause`),icon:U,onClick:()=>_i(t)}:{label:W(`views.settings.assistant_schedule_resume`),icon:we,onClick:()=>_i(t)},{label:W(`views.settings.assistant_schedule_model_change`),icon:Oe,onClick:()=>ki(t)},{...ne,label:W(`views.settings.assistant_schedule_delete`),onClick:()=>He.mutate(t._id)}],qe.value?.toggleMenu(e)}function yi(e){let t=new Set(Q.value.map(e=>e._id));Te.openComponentDialog(nt,{data:{title:W(e?`views.settings.assistant_model_edit`:`views.settings.assistant_model_add`),confirmText:W(`components.form.button.save`),awaitConfirm:!0,contentProps:{entry:e?D(e):void 0,models:D(Q.value),modelProviders:D(K.value?.modelProviders??[])}},onConfirm:async n=>{bi((await hi(e?Q.value.map(t=>t._id===e._id?n:H(t)):[...Q.value.map(H),n])).settings.models.find(n=>e?n._id===e._id:!t.has(n._id)))}})}function bi(e){let t=e?.capabilities;if(!t)return;let n=K.value?.modelProviders.find(t=>t.provider===e.provider)?.models.find(t=>t.id===e.model),r=t.error?W(`views.settings.assistant_test_failed`,{message:t.error}):t.toolCalling?t.vision===!1?W(`views.settings.assistant_test_vision_missing`):``:W(n?.toolCalling===!1?`views.settings.assistant_test_tools_declared`:`views.settings.assistant_test_tools_missing`);r&&Se.add({severity:t.error?`error`:`warn`,detail:r,life:8e3})}function xi(e){Te.openTextDialog({data:{title:W(`views.settings.assistant_model_delete`),contentText:W(`views.settings.assistant_model_delete_confirm`,{name:e.name}),confirmText:W(`views.settings.assistant_model_delete`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await hi(Q.value.filter(t=>t._id!==e._id).map(H))}})}async function Si(e){await q.mutateAsync({defaultModelId:e._id})}function Ci(e){return J.value?.plugins.find(t=>t.pluginId===e)?.modelId??Vr}function wi(e){return Q.value.find(t=>t._id===Ci(e))}function Ti(e,t){if(!J.value)return;let n=J.value.plugins.filter(t=>t.pluginId!==e);J.value.plugins=t===Vr?n:[...n,{pluginId:e,modelId:t}]}function Ei(e){return Q.value.find(t=>t.provider===e.provider&&t.model===e.model)?.name??e.model}function Di(e){return Q.value.some(t=>t._id===e.modelId)?e.modelId??null:null}function Oi(e){let t=Re.value?.find(t=>t._id===e),n=(Q.value.find(e=>e._id===t?.modelId)??Je.value)?.name;return n?W(`views.settings.assistant_schedule_model_default`,{name:n}):void 0}function ki(e){Te.openComponentDialog(at,{data:{title:e.title,confirmText:W(`components.form.button.save`),contentProps:{models:D(Q.value),modelId:e.modelId,fallback:Oi(e.profileId)}},onConfirm:({modelId:t})=>{Ve.mutate({scheduleId:e._id,patch:{modelId:t}})}})}function Ai(e){return Q.value.find(t=>t._id===e)?.name}function ji(e){return Re.value?.find(t=>t._id===e)?.name}return y(K,e=>{e&&!J.value&&(J.value=p(e.settings))},{immediate:!0}),(i,o)=>{let s=n,c=se,l=fe,d=r,p=de,ne=Ie,_=t,y=Ee,C=ee,D=Me,j=ke,M=ie,I=ge,z=B,ye=Ae,V=e,Se=te,H=pe,Ce=oe,we=re(`RouterLink`),Te=ve,Oe=he,U=L,W=je,G=ce,Pe=R,Le=me,Ve=Ne,He=ae,$=le,nt=_e,at=a;return g(),S(`div`,ot,[F(J)?(g(),S(`div`,ct,[x(`div`,null,[x(`span`,lt,h(i.$t(`views.settings.status`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,ut,[x(`div`,dt,[x(`span`,ft,h(i.$t(`views.settings.assistant_title`)),1),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint truncate`},{default:m(()=>[E(h(F(Kr)),1)]),_:1})]),T(l,{class:`ml-auto shrink-0`,severity:F(Wr),value:F(Gr)},null,8,[`severity`,`value`])])]),_:1})]),x(`div`,null,[x(`span`,pt,h(i.$t(`views.settings.assistant_model`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,mt,[x(`div`,ht,[x(`div`,gt,[x(`label`,_t,h(i.$t(`components.form.label.enabled`)),1),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_enabled_info`)),1)]),_:1})]),T(p,{"model-value":F(K)?.settings.enabled??!1,"input-id":`enabled`,disabled:F(q).isPending.value,class:`ml-auto shrink-0`,"onUpdate:modelValue":o[0]||=e=>F(q).mutate({enabled:e})},null,8,[`model-value`,`disabled`])]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_models_info`)),1)]),_:1}),F(Q).length?(g(),S(`div`,vt,[(g(!0),S(A,null,v(F(Q),e=>(g(),S(`div`,{key:e._id,class:`flex items-start gap-3 py-3 text-sm`},[x(`div`,yt,[x(`span`,bt,h(e.name),1),x(`div`,xt,[e._id===F(Je)?._id?(g(),O(l,{key:0,severity:`info`,value:i.$t(`views.settings.assistant_model_default`),class:`text-[10px]`},null,8,[`value`])):N(``,!0),e.userAccess===!1?(g(),O(l,{key:1,severity:`secondary`,value:i.$t(`views.settings.assistant_model_admins_only`),class:`text-[10px]`},null,8,[`value`])):N(``,!0),(g(!0),S(A,null,v(F(xe)(e),e=>(g(),O(l,{key:e.key,severity:e.severity,value:i.$t(`views.settings.assistant_capability_${e.key}`),class:`text-[10px]`},null,8,[`severity`,`value`]))),128))]),x(`div`,St,h(fi(e.provider))+` · `+h(pi(e)),1),e.capabilities?.error?(g(),S(`div`,Ct,h(e.capabilities.error),1)):N(``,!0),mi(e.provider)?(g(),S(`div`,wt,h(mi(e.provider)),1)):N(``,!0)]),x(`div`,Tt,[e._id===F(Je)?._id?N(``,!0):w((g(),O(_,{key:0,type:`button`,severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,disabled:F(q).isPending.value,onClick:t=>Si(e)},{icon:m(()=>[T(ne,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])),[[at,{value:i.$t(`views.settings.assistant_model_make_default`)},void 0,{top:!0}]]),w((g(),O(_,{type:`button`,severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,onClick:t=>yi(e)},{icon:m(()=>[T(y,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[at,{value:i.$t(`views.settings.assistant_model_edit`)},void 0,{top:!0}]]),w((g(),O(_,{type:`button`,severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,onClick:t=>xi(e)},{icon:m(()=>[T(C,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[at,{value:i.$t(`views.settings.assistant_model_delete`)},void 0,{top:!0}]])]),x(`div`,Et,[T(_,{type:`button`,severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,onClick:t=>gi(t,e)},{icon:m(()=>[T(D,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])])]))),128))])):(g(),S(`div`,Dt,h(i.$t(`views.settings.assistant_models_empty`)),1)),x(`div`,Ot,[T(_,{type:`button`,severity:`secondary`,outlined:``,class:`cui-button-medium ml-auto`,label:i.$t(`views.settings.assistant_model_add`),disabled:F(Q).length>=20,onClick:o[1]||=e=>yi()},{icon:m(()=>[T(j,{class:`w-4 h-4`})]),_:1},8,[`label`,`disabled`])])])]),_:1})]),x(`div`,null,[x(`span`,kt,h(i.$t(`views.settings.assistant_plugins`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,At,[T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_plugins_info`)),1)]),_:1}),F(K)?.plugins.length?(g(!0),S(A,{key:0},v(F(K).plugins,e=>(g(),S(`div`,{key:e.id,class:`flex flex-col field-gap`},[x(`div`,jt,[x(`label`,{for:`plugin-${e.id}`,class:`cui-label truncate`},h(e.name),9,Mt),wi(e.id)?.capabilities?.vision===!1?(g(),O(l,{key:0,severity:`warn`,value:i.$t(`views.settings.assistant_capability_no_vision`),class:`shrink-0 text-[10px]`},null,8,[`value`])):N(``,!0)]),T(M,{"model-value":Ci(e.id),"input-id":`plugin-${e.id}`,options:F(Ye),"option-label":`label`,"option-value":`value`,fluid:``,"onUpdate:modelValue":t=>Ti(e.id,t)},null,8,[`model-value`,`input-id`,`options`,`onUpdate:modelValue`])]))),128)):(g(),S(`div`,Nt,h(i.$t(`views.settings.assistant_plugins_empty`)),1)),x(`div`,Pt,[T(_,{type:`button`,loading:F(q).isPending.value,class:`cui-button-medium ml-auto`,label:i.$t(`components.form.button.save`),onClick:di},null,8,[`loading`,`label`])])])]),_:1})]),x(`div`,null,[x(`span`,Ft,h(i.$t(`views.settings.assistant_behavior`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,It,[x(`div`,Lt,[x(`div`,Rt,[x(`label`,zt,h(i.$t(`views.settings.assistant_memory`)),1),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_memory_info`)),1)]),_:1})]),T(p,{modelValue:F(J).memoryEnabled,"onUpdate:modelValue":o[2]||=e=>F(J).memoryEnabled=e,"input-id":`memoryEnabled`,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),x(`div`,Bt,[x(`div`,Vt,[x(`label`,Ht,h(i.$t(`views.settings.assistant_terminal`)),1),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_terminal_info`)),1)]),_:1})]),T(p,{modelValue:F(J).terminalEnabled,"onUpdate:modelValue":o[3]||=e=>F(J).terminalEnabled=e,"input-id":`terminalEnabled`,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),x(`div`,Ut,[x(`label`,Wt,h(i.$t(`views.settings.assistant_language_label`)),1),T(M,{modelValue:F(J).language,"onUpdate:modelValue":o[4]||=e=>F(J).language=e,"input-id":`language`,options:F(Qe),"option-label":`label`,"option-value":`value`,filter:``,fluid:``},null,8,[`modelValue`,`options`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_language_info`)),1)]),_:1})]),x(`div`,Gt,[x(`label`,Kt,h(i.$t(`views.settings.assistant_reasoning_label`)),1),T(M,{modelValue:F(J).reasoning,"onUpdate:modelValue":o[5]||=e=>F(J).reasoning=e,"input-id":`reasoning`,options:F($e),"option-label":`label`,"option-value":`value`,fluid:``},null,8,[`modelValue`,`options`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_reasoning_info`)),1)]),_:1})]),x(`div`,qt,[x(`div`,Jt,[x(`label`,Yt,h(i.$t(`views.settings.assistant_max_iterations_label`)),1),T(I,{modelValue:F(J).maxIterations,"onUpdate:modelValue":o[6]||=e=>F(J).maxIterations=e,min:1,max:30,"use-grouping":!1,fluid:``},null,8,[`modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_max_iterations_info`)),1)]),_:1})]),x(`div`,Xt,[x(`label`,Zt,h(i.$t(`views.settings.assistant_max_tool_calls_label`)),1),T(I,{modelValue:F(J).maxToolCalls,"onUpdate:modelValue":o[7]||=e=>F(J).maxToolCalls=e,min:1,max:100,"use-grouping":!1,fluid:``},null,8,[`modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_max_tool_calls_info`)),1)]),_:1})])]),x(`div`,Qt,[x(`label`,$t,h(i.$t(`views.settings.assistant_context_tokens_label`)),1),T(I,{id:`contextTokens`,modelValue:F(J).contextTokens,"onUpdate:modelValue":o[8]||=e=>F(J).contextTokens=e,min:8e3,max:4e5,step:1e3,"use-grouping":!1,fluid:``},null,8,[`modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_context_tokens_info`)),1)]),_:1})]),x(`div`,en,[x(`div`,tn,[x(`label`,nn,h(i.$t(`views.settings.assistant_history_threads_label`)),1),T(I,{id:`historyThreads`,modelValue:F(J).historyThreads,"onUpdate:modelValue":o[9]||=e=>F(J).historyThreads=e,min:5,max:500,"use-grouping":!1,fluid:``},null,8,[`modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_history_threads_info`)),1)]),_:1})]),x(`div`,rn,[x(`label`,an,h(i.$t(`views.settings.assistant_history_images_label`)),1),T(I,{id:`historyImages`,modelValue:F(J).historyImages,"onUpdate:modelValue":o[10]||=e=>F(J).historyImages=e,min:0,max:200,"use-grouping":!1,fluid:``},null,8,[`modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_history_images_info`)),1)]),_:1})])]),x(`div`,on,[x(`label`,sn,h(i.$t(`views.settings.assistant_extra_prompt_label`)),1),T(z,{modelValue:F(J).systemPromptExtra,"onUpdate:modelValue":o[11]||=e=>F(J).systemPromptExtra=e,rows:`3`,"auto-resize":``,placeholder:i.$t(`views.settings.assistant_extra_prompt_placeholder`)},null,8,[`modelValue`,`placeholder`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_extra_prompt_info`)),1)]),_:1})]),x(`div`,cn,[T(_,{type:`button`,severity:`secondary`,outlined:``,class:`cui-button-medium ml-auto`,label:i.$t(`components.form.button.reset_defaults`),onClick:ui},{icon:m(()=>[T(ye,{class:`w-4 h-4`})]),_:1},8,[`label`]),T(_,{type:`button`,loading:F(q).isPending.value,class:`cui-button-medium`,label:i.$t(`components.form.button.save`),onClick:di},null,8,[`loading`,`label`])])])]),_:1})]),x(`div`,null,[x(`span`,ln,h(i.$t(`views.settings.assistant_mcp`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,un,[T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_mcp_info`)),1)]),_:1}),x(`div`,dn,[x(`div`,fn,[x(`div`,pn,[x(`span`,mn,h(i.$t(`views.settings.assistant_mcp_enabled_label`)),1),x(`span`,hn,h(i.$t(`views.settings.assistant_mcp_enabled_info`)),1)]),T(p,{modelValue:F(J).mcpEnabled,"onUpdate:modelValue":o[12]||=e=>F(J).mcpEnabled=e},null,8,[`modelValue`])]),x(`div`,gn,[x(`div`,_n,[x(`span`,vn,h(i.$t(`views.settings.assistant_mcp_writes_label`)),1),x(`span`,yn,h(i.$t(`views.settings.assistant_mcp_writes_info`)),1)]),T(p,{modelValue:F(J).mcpWrites,"onUpdate:modelValue":o[13]||=e=>F(J).mcpWrites=e,disabled:!F(J).mcpEnabled},null,8,[`modelValue`,`disabled`])])]),F(J).mcpEnabled?(g(),S(`div`,bn,[x(`div`,xn,[x(`label`,Sn,h(i.$t(`views.settings.assistant_mcp_endpoint_label`)),1),T(Ce,null,{default:m(()=>[T(V,{id:`mcpEndpoint`,"model-value":F(et),readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),T(H,null,{default:m(()=>[T(Se,{"action-text":i.$t(`components.form.tooltip.copied`),icon:F(De),"button-props":{severity:`secondary`,text:!0},onAction:o[14]||=e=>F(u)(F(et))},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_mcp_token_info`))+` `,1),T(we,{to:{name:`SettingsAccount`},class:`underline`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_mcp_token_link`)),1)]),_:1})]),_:1})]),x(`div`,Cn,[x(`label`,wn,h(i.$t(`views.settings.assistant_mcp_client_label`)),1),T(M,{modelValue:F(Ge),"onUpdate:modelValue":o[15]||=e=>k(Ge)?Ge.value=e:null,"input-id":`mcpClient`,options:F(tt),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`]),T(Ce,null,{default:m(()=>[T(z,{id:`mcpSnippet`,"model-value":F(rt),readonly:``,"auto-resize":``,rows:`3`,class:`font-mono text-xs`},null,8,[`model-value`]),T(H,null,{default:m(()=>[T(Se,{"action-text":i.$t(`components.form.tooltip.copied`),icon:F(De),"button-props":{severity:`secondary`,text:!0},onAction:o[16]||=e=>F(u)(F(rt))},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_mcp_snippet_info`)),1)]),_:1})])])):N(``,!0),x(`div`,Tn,[T(_,{type:`button`,loading:F(q).isPending.value,class:`cui-button-medium ml-auto`,label:i.$t(`components.form.button.save`),onClick:di},null,8,[`loading`,`label`])])])]),_:1})]),x(`div`,null,[x(`span`,En,h(i.$t(`views.settings.assistant_external`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,Dn,[T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_external_info`)),1)]),_:1}),(g(!0),S(A,null,v(F(J).mcpServers,e=>(g(),S(`div`,{key:e.id,class:`cui-assistant-server overflow-hidden rounded-xl`},[x(`button`,{type:`button`,class:`flex w-full cursor-pointer items-center gap-3 p-4 text-left`,"aria-expanded":F(Z).includes(e.id),onClick:t=>si(e.id)},[x(`div`,kn,[x(`span`,An,h(e.name||i.$t(`views.settings.assistant_external_new`)),1),ii(e.id)?(g(),S(`span`,{key:0,class:b([`truncate text-xs`,ai(e.id)])},h(ii(e.id)),3)):N(``,!0)]),T(Te,{class:b([`h-5 w-5 shrink-0 text-muted transition-transform duration-200`,{"rotate-180":F(Z).includes(e.id)}])},null,8,[`class`])],8,On),x(`div`,{class:b([`cui-assistant-server-body grid`,{"cui-assistant-server-open":F(Z).includes(e.id)}])},[x(`div`,{class:`min-h-0 overflow-hidden`,inert:!F(Z).includes(e.id)},[x(`div`,Mn,[x(`div`,Nn,[x(`div`,Pn,[x(`label`,{for:`server-enabled-${e.id}`,class:`cui-label-switch`},h(i.$t(`components.form.label.enabled`)),9,Fn),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_external_enabled_info`)),1)]),_:1})]),T(p,{modelValue:e.enabled,"onUpdate:modelValue":t=>e.enabled=t,"input-id":`server-enabled-${e.id}`,class:`ml-auto shrink-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`input-id`])]),x(`div`,In,[x(`div`,Ln,[x(`label`,{for:`server-name-${e.id}`,class:`cui-label`},h(i.$t(`views.settings.assistant_external_name`)),9,Rn),T(V,{id:`server-name-${e.id}`,modelValue:e.name,"onUpdate:modelValue":t=>e.name=t,fluid:``,placeholder:`Home Assistant`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])]),x(`div`,zn,[x(`label`,{for:`server-url-${e.id}`,class:`cui-label`},h(i.$t(`views.settings.assistant_external_url`)),9,Bn),T(V,{id:`server-url-${e.id}`,modelValue:e.url,"onUpdate:modelValue":t=>e.url=t,fluid:``,placeholder:`http://homeassistant.local:8123/api/mcp`},null,8,[`id`,`modelValue`,`onUpdate:modelValue`])])]),x(`div`,Vn,[x(`label`,{for:`server-token-${e.id}`,class:`cui-label`},h(i.$t(`views.settings.assistant_external_token`)),9,Hn),T(Oe,{id:`server-token-${e.id}`,modelValue:F(X)[e.id],"onUpdate:modelValue":t=>F(X)[e.id]=t,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`new-password`,placeholder:e.tokenSet?`••••••••`:``},null,8,[`id`,`modelValue`,`onUpdate:modelValue`,`placeholder`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(e.tokenSet?i.$t(`views.settings.assistant_external_token_set`):i.$t(`views.settings.assistant_external_token_info`)),1)]),_:2},1024)]),x(`div`,Un,[x(`div`,Wn,[x(`label`,{for:`server-insecure-${e.id}`,class:`cui-label-switch`},h(i.$t(`views.settings.assistant_external_insecure`)),9,Gn),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_external_insecure_info`)),1)]),_:1})]),T(p,{"input-id":`server-insecure-${e.id}`,modelValue:e.insecure,"onUpdate:modelValue":t=>e.insecure=t,class:`ml-auto shrink-0`},null,8,[`input-id`,`modelValue`,`onUpdate:modelValue`])]),x(`div`,Kn,[T(_,{type:`button`,severity:`danger`,outlined:``,class:`cui-button-medium ml-auto`,label:i.$t(`views.settings.assistant_external_remove`),onClick:t=>ci(e.id)},{icon:m(()=>[T(C,{class:`w-4 h-4`})]),_:1},8,[`label`,`onClick`])])])],8,jn)],2)]))),128)),x(`div`,qn,[T(_,{type:`button`,severity:`secondary`,outlined:``,class:`cui-button-medium`,label:i.$t(`views.settings.assistant_external_add`),disabled:F(J).mcpServers.length>=10,onClick:oi},{icon:m(()=>[T(j,{class:`w-4 h-4`})]),_:1},8,[`label`,`disabled`]),T(_,{type:`button`,loading:F(q).isPending.value,class:`cui-button-medium ml-auto`,label:i.$t(`components.form.button.save`),onClick:di},null,8,[`loading`,`label`])])])]),_:1})]),x(`div`,null,[x(`span`,Jn,h(i.$t(`views.settings.assistant_schedules`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,Yn,[T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_schedules_info`)),1)]),_:1}),F(ze)?.length?(g(),S(`div`,Xn,[(g(!0),S(A,null,v(F(ze),e=>(g(),S(`div`,{key:e._id,class:`flex items-start gap-3 py-3 text-sm`},[x(`div`,{class:b([`flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1`,{"opacity-60":!e.enabled}])},[x(`span`,Zn,h(e.title),1),x(`div`,Qn,[T(l,{severity:`secondary`,value:qr(e.cron),class:`text-[10px]`},null,8,[`value`]),T(l,{severity:Jr(e.deliver),value:i.$t(`views.settings.assistant_schedule_deliver_${e.deliver}`),class:`text-[10px]`},null,8,[`severity`,`value`]),e.profileId?(g(),O(l,{key:0,severity:ji(e.profileId)?`secondary`:`warn`,value:ji(e.profileId)??i.$t(`views.settings.assistant_schedule_profile_missing`),class:`text-[10px]`},null,8,[`severity`,`value`])):N(``,!0),Di(e)?(g(),O(l,{key:1,severity:`secondary`,value:Ai(Di(e)),class:`text-[10px]`},null,8,[`value`])):N(``,!0)]),x(`div`,$n,h(e.prompt),1),x(`div`,er,[e.enabled&&e.nextRun?(g(),S(`span`,tr,h(i.$t(`views.settings.assistant_schedule_next`,{time:Yr(e.nextRun)})),1)):e.enabled?N(``,!0):(g(),S(`span`,nr,h(i.$t(`views.settings.assistant_schedule_paused`)),1)),e.lastRun?(g(),S(`span`,{key:2,class:b({"text-danger":e.lastRun.status===`error`})},` · `+h(i.$t(`views.settings.assistant_schedule_last_${e.lastRun.status}`,{time:Yr(e.lastRun.at)})),3)):N(``,!0)]),e.lastRun?.status===`error`&&e.lastRun.message?(g(),S(`div`,rr,h(e.lastRun.message),1)):N(``,!0)],2),x(`div`,ir,[x(`div`,null,[w((g(),O(_,{type:`button`,severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,loading:F(Ue).isPending.value&&F(Ue).variables.value===e._id,onClick:t=>vi(t,e)},{icon:m(()=>[T(D,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[at,{value:i.$t(`views.settings.assistant_schedule_actions`)},void 0,{top:!0}]])])])]))),128))])):N(``,!0),x(`div`,{class:b([`flex flex-col gap-6`,{"cui-assistant-schedule-form":F(ze)?.length}])},[x(`div`,ar,[x(`div`,or,[x(`label`,sr,h(i.$t(`views.settings.assistant_schedule_title_label`)),1),T(V,{modelValue:F(Y).title,"onUpdate:modelValue":o[17]||=e=>F(Y).title=e,modelModifiers:{trim:!0},type:`text`,placeholder:i.$t(`views.settings.assistant_schedule_title_placeholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),x(`div`,cr,[x(`label`,lr,h(i.$t(`views.settings.assistant_schedule_deliver_label`)),1),T(M,{modelValue:F(Y).deliver,"onUpdate:modelValue":o[18]||=e=>F(Y).deliver=e,options:F(it),"option-label":`label`,"option-value":`value`,fluid:``},null,8,[`modelValue`,`options`])])]),x(`div`,ur,[x(`label`,dr,h(i.$t(`views.settings.assistant_schedule_prompt_label`)),1),T(z,{modelValue:F(Y).prompt,"onUpdate:modelValue":o[19]||=e=>F(Y).prompt=e,rows:`2`,"auto-resize":``,placeholder:i.$t(`views.settings.assistant_schedule_prompt_placeholder`)},null,8,[`modelValue`,`placeholder`])]),x(`div`,fr,[F(Re)?.length?(g(),S(`div`,pr,[x(`label`,mr,h(i.$t(`views.settings.assistant_schedule_profile_label`)),1),T(M,{modelValue:F(Y).profileId,"onUpdate:modelValue":o[20]||=e=>F(Y).profileId=e,"input-id":`scheduleProfile`,options:F(Re),"option-label":`name`,"option-value":`_id`,"show-clear":``,fluid:``,placeholder:i.$t(`views.settings.assistant_schedule_profile_none`)},null,8,[`modelValue`,`options`,`placeholder`])])):N(``,!0),x(`div`,hr,[x(`label`,gr,h(i.$t(`views.settings.assistant_schedule_model_label`)),1),T(M,{modelValue:F(Y).modelId,"onUpdate:modelValue":o[21]||=e=>F(Y).modelId=e,"input-id":`scheduleModel`,options:F(Q),"option-label":`name`,"option-value":`_id`,"show-clear":``,fluid:``,placeholder:Oi(F(Y).profileId)},null,8,[`modelValue`,`options`,`placeholder`])])]),x(`div`,_r,[x(`div`,vr,[x(`label`,yr,h(i.$t(`views.settings.assistant_schedule_when_label`)),1),T(M,{modelValue:F(Y).preset,"onUpdate:modelValue":o[22]||=e=>F(Y).preset=e,options:F(Hr),"option-label":`label`,"option-value":`value`,fluid:``},null,8,[`modelValue`,`options`])]),F(Y).preset!==`hourly`&&F(Y).preset!==`custom`?(g(),S(`div`,br,[x(`label`,xr,h(i.$t(`views.settings.assistant_schedule_time_label`)),1),T(V,{modelValue:F(Y).time,"onUpdate:modelValue":o[23]||=e=>F(Y).time=e,type:`time`,class:`cui-time-input w-full`},null,8,[`modelValue`])])):N(``,!0),F(Y).preset===`custom`?(g(),S(`div`,Sr,[x(`label`,Cr,h(i.$t(`views.settings.assistant_schedule_cron_label`)),1),T(V,{modelValue:F(Y).cron,"onUpdate:modelValue":o[24]||=e=>F(Y).cron=e,modelModifiers:{trim:!0},type:`text`,placeholder:`0 20 * * *`,class:`w-full font-mono text-sm`},null,8,[`modelValue`])])):N(``,!0)]),x(`div`,wr,[T(_,{type:`button`,loading:F(Be).isPending.value,disabled:!F(Y).title||!F(Y).prompt||!F(Ur),class:`cui-button-medium ml-auto`,label:i.$t(`views.settings.assistant_schedule_add`),onClick:Xr},null,8,[`loading`,`disabled`,`label`])])],2)])]),_:1})]),x(`div`,null,[x(`span`,Tr,h(i.$t(`views.settings.assistant_usage`)),1),T(d,{class:`cui-card`},{content:m(()=>[x(`div`,Er,[T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_usage_info`)),1)]),_:1}),T(W,{value:F(Ze)??[],"data-key":`key`,loading:F(Fe),pt:ue,"striped-rows":``,scrollable:``},{loading:m(()=>[T(s,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:m(()=>[x(`span`,Dr,h(i.$t(`views.settings.assistant_usage_empty`)),1)]),default:m(()=>[T(U,{field:`month`,header:i.$t(`views.settings.assistant_usage_month`),"header-class":`p-2`,class:`p-2 tabular-nums`},null,8,[`header`]),T(U,{field:`username`,header:i.$t(`views.settings.assistant_usage_user`),"header-class":`p-2`,class:`p-2`},{body:m(({data:e})=>[x(`span`,Or,h(e.pluginName??e.username??e.userId),1)]),_:1},8,[`header`]),T(U,{field:`model`,header:i.$t(`views.settings.assistant_usage_model`),"header-class":`p-2`,class:`p-2`},{body:m(({data:e})=>[x(`span`,kr,h(Ei(e)),1)]),_:1},8,[`header`]),T(U,{field:`runs`,header:i.$t(`views.settings.assistant_usage_runs`),"header-class":`p-2`,class:`p-2 text-right tabular-nums`,pt:P},null,8,[`header`]),T(U,{field:`promptTokens`,header:i.$t(`views.settings.assistant_usage_in`),"header-class":`p-2`,class:`p-2 text-right tabular-nums`,pt:P},{body:m(({data:e})=>[E(h(ni(e.promptTokens)),1)]),_:1},8,[`header`]),T(U,{field:`completionTokens`,header:i.$t(`views.settings.assistant_usage_out`),"header-class":`p-2`,class:`p-2 text-right tabular-nums`,pt:P},{body:m(({data:e})=>[E(h(ni(e.completionTokens)),1)]),_:1},8,[`header`]),T(U,{field:`costUsd`,header:i.$t(`views.settings.assistant_usage_cost`),"header-class":`p-2`,class:`p-2 text-right tabular-nums`,pt:P},{body:m(({data:e})=>[E(h(e.costUsd?`$${e.costUsd.toFixed(e.costUsd<1?3:2)}`:`–`),1)]),_:1},8,[`header`])]),_:1},8,[`value`,`loading`])])]),_:1})]),x(`div`,null,[x(`span`,Ar,h(i.$t(`views.settings.assistant_tools`)),1),T(d,{class:`cui-card`},{content:m(()=>[F(Xe).length?(g(),S(`div`,Mr,[T(nt,{value:F(Ke),"onUpdate:value":o[25]||=e=>k(Ke)?Ke.value=e:null,scrollable:``},{default:m(()=>[T(Pe,{class:`mb-3`},{default:m(()=>[(g(!0),S(A,null,v(F(Xe),e=>(g(),O(G,{key:e.key,value:e.key,class:`text-sm`},{default:m(()=>[E(h(e.label)+` (`+h(e.tools.length)+`)`,1)]),_:2},1032,[`value`]))),128))]),_:1}),T($,{class:`!p-0 !bg-transparent`},{default:m(()=>[(g(!0),S(A,null,v(F(Xe),e=>(g(),O(He,{key:e.key,value:e.key},{default:m(()=>[e.serverId?(g(),S(`div`,Nr,[x(`label`,{for:`trusted-${e.key}`,class:`cui-label`},h(i.$t(`views.settings.assistant_tools_trusted_label`)),9,Pr),T(Le,{"model-value":ei(e),"input-id":`trusted-${e.key}`,options:$r(e),"option-label":`label`,"option-value":`value`,"max-selected-labels":3,"selected-items-label":i.$t(`views.settings.assistant_tools_trusted_selected`,{n:ei(e).length}),placeholder:i.$t(`views.settings.assistant_tools_trusted_none`),filter:``,fluid:``,"onUpdate:modelValue":t=>ti(e,t)},null,8,[`model-value`,`input-id`,`options`,`selected-items-label`,`placeholder`,`onUpdate:modelValue`]),T(c,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[E(h(i.$t(`views.settings.assistant_tools_trusted_info`)),1)]),_:1})])):N(``,!0),x(`div`,Fr,[(g(!0),S(A,null,v(e.tools,e=>(g(),S(`div`,{key:e.name,class:`flex items-start gap-3 py-2 text-sm`},[T(Ve,{class:`w-4 h-4 mt-0.5 shrink-0 text-muted`}),x(`div`,Ir,[x(`div`,Lr,[x(`span`,Rr,h(F(be)(e.name)),1),Qr(e)?(g(),O(l,{key:0,severity:`warn`,value:i.$t(`views.settings.assistant_tool_approval`),class:`text-[10px]`},null,8,[`value`])):N(``,!0),e.adminOnly?(g(),O(l,{key:1,severity:`info`,value:i.$t(`views.settings.assistant_tool_admin`),class:`text-[10px]`},null,8,[`value`])):N(``,!0)]),x(`div`,zr,h(Zr(e.description)),1)])]))),128))])]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`]),F(Xe).some(e=>e.serverId)?(g(),S(`div`,Br,[T(_,{type:`button`,loading:F(q).isPending.value,class:`cui-button-medium ml-auto`,label:i.$t(`components.form.button.save`),onClick:di},null,8,[`loading`,`label`])])):N(``,!0)])):(g(),S(`div`,jr,h(i.$t(`views.settings.assistant_tools_empty`)),1))]),_:1})])])):(g(),S(`div`,st,[T(s,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])),T(f,{ref_key:`rowMenuRef`,ref:qe,items:F(We),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}}),[[`__scopeId`,`data-v-e1fc7b04`]]);export{Hr as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e,Xt as t,Yt as n,at as r,hr as i,nn as a}from"./vendor-cameraui-K1Nw4PvF.js";import{Br as o,Mn as s,dn as c,s as l}from"./api-D1iULsSy.js";import{$n as u,Cr as d,Hn as f,In as p,Jn as m,Pn as h,Rn as g,_r as _,cn as v,dn as y,dr as b,er as x,gn as S,hn as C,ln as w,lr as T,mr as E,nn as D,rn as O,sn as k,sr as A,un as j,vn as M,yr as N}from"./vendor-Df81FCJz.js";import{H as P,L as F,N as ee,U as I,V as L,v as R}from"./vendor-primevue-DoA2Rwcb.js";import{a as z,c as te,i as ne,n as re,o as ie,r as ae,s as oe}from"./useBackupRestore-vrhmc9i-.js";import{t as se}from"./theme-BOppzzar.js";import{t as ce}from"./trash-can-outline-DVH3zgo0.js";import{t as B}from"./close-circle-D7Jmhp_7.js";import{t as le}from"./download-C291Yq7I.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return p(),y(`svg`,V,[...t[0]||=[v(`path`,{fill:`currentColor`,d:`M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.89 2 1.99 2H15v-8h5V8zm-1 7V3.5L18.5 9zm4 12.66V16h5.66v2h-2.24l2.95 2.95l-1.41 1.41L19 19.41v2.24h-2z`},null,-1)]])}var U=A({name:`ic-baseline-file-open`,render:H}),W={class:`flex flex-col gap-6 p-4 items-center justify-center w-full`},G={class:`flex flex-col justify-center items-center`},K={for:`restoreInput`,class:`cursor-pointer text-center`},q=[`accept`],J={key:0,class:`text-red`},Y={class:`mx-2`},X={class:`text-muted`},ue=M({__name:`CuiUploadFiles`,props:{multiple:{type:Boolean,default:!1},accept:{},icon:{default:U}},emits:[`files-uploaded`],setup(e,{expose:n,emit:r}){let i=e,a=r,{accept:o,multiple:s}=_(i),c=m(`fileInputRef`),l=E([]),h=b(!1),g=b(!1);function x(e){let t=l.value.findIndex(t=>t.name===e);t>-1&&(l.value.splice(t,1),O())}function C(e){if(h.value=!1,g.value=!1,l.value=[],e.dataTransfer){if(!s.value&&e.dataTransfer.files.length>1)g.value=!0;else{for(let[,t]of Object.entries(e.dataTransfer.files))l.value.push(t);a(`files-uploaded`,l.value)}}}function T(e){g.value=!1,l.value=[];let t=e.target;if(t&&t.files){if(!s.value&&t.files?.length>1)g.value=!0;else{for(let[,e]of Object.entries(t.files))l.value.push(e);a(`files-uploaded`,l.value)}}}function O(){c.value&&(c.value.value=``)}function k(){l.value=[],O()}return n({reset:k}),(n,r)=>{let i=B,a=t,s=F,m=I;return p(),y(`div`,{class:`file-upload-box`,onDrop:r[0]||=D(e=>C(e),[`prevent`]),onDragover:r[1]||=D(e=>h.value=!0,[`prevent`]),onDragenter:r[2]||=D(e=>h.value=!0,[`prevent`]),onDragleave:r[3]||=D(e=>h.value=!1,[`prevent`])},[v(`div`,W,[v(`div`,G,[(p(),w(f(e.icon),{class:`w-15 h-15`})),v(`label`,K,d(n.$t(`components.upload_files.drop_or_select_file`)),1),v(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:c,type:`file`,class:`hidden`,accept:N(o),onChange:T},null,40,q),N(g)?(p(),y(`p`,J,d(n.$t(`components.upload_files.only_one_file_allowed`)),1)):j(``,!0)]),N(l).length>0?(p(),w(m,{key:0,items:N(l),"item-size":50,"scroll-height":`50px`,"scroll-width":`100%`,class:`w-full`},{item:u(({item:e})=>[(p(),y(`div`,{key:e.name,class:`w-full flex flex-row items-center justify-start p-2`},[S(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:t=>x(e.name)},{icon:u(()=>[S(i,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`]),v(`b`,Y,d(e.name),1),v(`span`,X,`(`+d(e.size)+` bytes)`,1)])),N(l).length>1?(p(),w(s,{key:0,class:`m-0 py-4`})):j(``,!0)]),_:1},8,[`items`])):j(``,!0)])],32)}}}),de={class:`flex flex-col w-full gap-6`},fe={class:`card-title`},pe={class:`flex flex-col gap-6`},me={class:`text-sm`},he={class:`card-title`},ge={class:`flex flex-col gap-6`},_e={class:`text-sm`},ve={class:`card-title`},ye={key:0,class:`flex w-full items-center justify-center py-6`},be={key:1,class:`flex flex-col gap-6`},xe={class:`flex items-center gap-4`},Se={class:`flex flex-col gap-1 min-w-0`},Ce={class:`text-sm`},we={class:`text-xs text-muted`},Te={class:`grid grid-cols-1 sm:grid-cols-2 gap-4`},Ee={class:`flex flex-col field-gap`},De={for:`backupInterval`,class:`cui-label`},Oe={class:`flex flex-col field-gap`},ke={for:`backupTime`,class:`cui-label`},Ae={key:0,class:`flex flex-col field-gap`},je={for:`backupWeekday`,class:`cui-label`},Me={key:1,class:`flex flex-col field-gap`},Ne={for:`backupDayOfMonth`,class:`cui-label`},Pe={class:`flex flex-col field-gap`},Fe={for:`backupRetention`,class:`cui-label`},Ie={class:`flex flex-col field-gap`},Le={for:`backupDestination`,class:`cui-label`},Re={class:`flex items-center gap-2`},ze={key:1,class:`flex flex-col gap-2`},Be={class:`text-sm font-semibold border-b-[1px] border-color pb-2`},Ve={class:`flex flex-col min-w-0`},He={class:`text-sm truncate`},Ue={class:`text-xs text-muted`},We={class:`flex gap-1 ml-auto shrink-0`},Z=M({__name:`SettingsBackup`,setup(f){let _=c(),D=o(),{t:A,locale:M}=i(),F=m(`filesRef`),I=E([]),B=b(!1),V=b(!0),H=b(!1),U=b(!1),W=b(null),G=b([]),K=b(``),q=b(),J=T({enabled:!1,interval:`daily`,time:`03:00`,weekday:0,dayOfMonth:1,retention:7,destinationPath:``}),Y=k(()=>/^([01]\d|2[0-3]):[0-5]\d$/.test(J.time)),X=k(()=>[`daily`,`weekly`,`monthly`].map(e=>({label:A(`views.settings.backup_interval_${e}`),value:e}))),Z=k(()=>Array.from({length:7},(e,t)=>({label:new Intl.DateTimeFormat(M.value,{weekday:`long`}).format(new Date(Date.UTC(2024,0,7+t,12))),value:t}))),Ge=k(()=>{if(!q.value)return A(`views.settings.backup_last_run`,{info:A(`views.settings.backup_last_run_never`)});let e=new Date(q.value.timestamp).toLocaleString(),t=q.value.status===`success`?`✓`:`✗ ${q.value.message??``}`;return A(`views.settings.backup_last_run`,{info:`${e} ${t}`})});async function Q(){B.value=!0;try{let e={},t=localStorage.getItem(`ui`);if(t)try{e.ui=JSON.parse(t)}catch{}let n=localStorage.getItem(`language`);n&&(e.language=n),localStorage.getItem(`theme`)&&(e.theme=se());let r=Date.now(),i=await ne(e);await s({blob:new Blob([i]),filename:`cameraui-backup-${r}.tar.gz`,mimeType:`application/gzip`})}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}B.value=!1}function Ke(){_.openTextDialog({data:{title:A(`components.dialog.title.confirm`),contentText:A(`components.dialog.message.confirm_restore`),confirmText:A(`components.form.button.restore_and_restart`),loading:B},onConfirm:qe})}async function qe(){let e=I.value[0];e&&(B.value=!0,await re().run(e),F.value?.reset(),B.value=!1)}function Je(e){if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=-1;do n/=1024,r++;while(n>=1024&&r<t.length-1);return`${n.toFixed(1)} ${t[r]}`}async function $(){try{let e=await ie(),{lastRun:t,...n}=e.settings;Object.assign(J,n),q.value=t,G.value=e.backups,K.value=e.defaultDestination}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}finally{V.value=!1}}async function Ye(){if(Y.value){H.value=!0;try{let e=await oe({...J});q.value=e.lastRun,D.add({severity:`success`,detail:A(`components.toast.backup_scheduler_saved`),life:3e3})}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}finally{H.value=!1}}}async function Xe(){U.value=!0;try{let e=await te();q.value=e,D.add({severity:`success`,detail:A(`components.toast.backup_created`),life:3e3})}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}finally{U.value=!1,await $()}}async function Ze(e){W.value=e.filename;try{let t=await z(e.filename);await s({blob:new Blob([t]),filename:e.filename,mimeType:`application/gzip`})}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}finally{W.value=null}}function Qe(e){_.openTextDialog({data:{title:A(`components.dialog.title.confirm`),contentText:A(`components.dialog.message.confirm_delete_backup`,{filename:e.filename}),confirmText:A(`components.form.button.remove`)},onConfirm:async()=>{try{await ae(e.filename),D.add({severity:`success`,detail:A(`components.toast.backup_deleted`),life:3e3}),await $()}catch(e){D.add({severity:`error`,detail:l(e),life:3e3})}}})}return h($),(i,o)=>{let s=t,c=r,l=ue,f=n,m=L,h=P,_=e,b=R,T=ee,E=le,D=ce,k=a;return p(),y(`div`,null,[v(`div`,de,[v(`div`,null,[v(`span`,fe,d(i.$t(`views.settings.create_backup`)),1),S(c,{class:`cui-card`},{content:u(()=>[v(`div`,pe,[v(`span`,me,d(i.$t(`views.settings.create_backup_info`)),1),S(s,{loading:N(B),class:`ml-auto cui-button-medium`,label:i.$t(`components.form.button.download_backup_archive`),onClick:Q},null,8,[`loading`,`label`])])]),_:1})]),v(`div`,null,[v(`span`,he,d(i.$t(`views.settings.restore_backup`)),1),S(c,{class:`cui-card`},{content:u(()=>[v(`div`,ge,[v(`span`,_e,d(i.$t(`views.settings.restore_backup_info`)),1),S(l,{ref_key:`filesRef`,ref:F,accept:`application/gzip, .tar, .tar.gz`,onFilesUploaded:o[0]||=e=>I.value=e},null,512),S(s,{loading:N(B),disabled:!N(I).length,class:`ml-auto cui-button-medium`,label:i.$t(`components.form.button.restore_backup_archive`),onClick:Ke},null,8,[`loading`,`disabled`,`label`])])]),_:1})]),v(`div`,null,[v(`span`,ve,d(i.$t(`views.settings.scheduled_backup`)),1),S(c,{class:`cui-card`},{content:u(()=>[N(V)?(p(),y(`div`,ye,[S(f,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(p(),y(`div`,be,[v(`div`,xe,[v(`div`,Se,[v(`span`,Ce,d(i.$t(`views.settings.scheduled_backup_info`)),1),v(`span`,we,d(N(Ge)),1)]),S(m,{modelValue:N(J).enabled,"onUpdate:modelValue":o[1]||=e=>N(J).enabled=e,disabled:N(H),class:`ml-auto shrink-0`},null,8,[`modelValue`,`disabled`])]),N(J).enabled?(p(),y(O,{key:0},[v(`div`,Te,[v(`div`,Ee,[v(`label`,De,d(i.$t(`views.settings.backup_interval`)),1),S(h,{modelValue:N(J).interval,"onUpdate:modelValue":o[2]||=e=>N(J).interval=e,"input-id":`backupInterval`,options:N(X),"option-label":`label`,"option-value":`value`,disabled:N(H)},null,8,[`modelValue`,`options`,`disabled`])]),v(`div`,Oe,[v(`label`,ke,d(i.$t(`views.settings.backup_time`)),1),S(_,{id:`backupTime`,modelValue:N(J).time,"onUpdate:modelValue":o[3]||=e=>N(J).time=e,placeholder:`03:00`,disabled:N(H),invalid:!N(Y)},null,8,[`modelValue`,`disabled`,`invalid`])]),N(J).interval===`weekly`?(p(),y(`div`,Ae,[v(`label`,je,d(i.$t(`views.settings.backup_weekday`)),1),S(h,{modelValue:N(J).weekday,"onUpdate:modelValue":o[4]||=e=>N(J).weekday=e,"input-id":`backupWeekday`,options:N(Z),"option-label":`label`,"option-value":`value`,disabled:N(H)},null,8,[`modelValue`,`options`,`disabled`])])):j(``,!0),N(J).interval===`monthly`?(p(),y(`div`,Me,[v(`label`,Ne,d(i.$t(`views.settings.backup_day_of_month`)),1),S(b,{modelValue:N(J).dayOfMonth,"onUpdate:modelValue":o[5]||=e=>N(J).dayOfMonth=e,"input-id":`backupDayOfMonth`,min:1,max:28,"show-buttons":``,"use-grouping":!1,disabled:N(H)},null,8,[`modelValue`,`disabled`])])):j(``,!0),v(`div`,Pe,[v(`label`,Fe,d(i.$t(`views.settings.backup_retention`)),1),S(b,{modelValue:N(J).retention,"onUpdate:modelValue":o[6]||=e=>N(J).retention=e,"input-id":`backupRetention`,min:1,max:60,"show-buttons":``,"use-grouping":!1,disabled:N(H)},null,8,[`modelValue`,`disabled`]),S(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:u(()=>[C(d(i.$t(`views.settings.backup_retention_hint`)),1)]),_:1})])]),v(`div`,Ie,[v(`label`,Le,d(i.$t(`views.settings.backup_destination`)),1),S(_,{id:`backupDestination`,modelValue:N(J).destinationPath,"onUpdate:modelValue":o[7]||=e=>N(J).destinationPath=e,placeholder:N(K),disabled:N(H)},null,8,[`modelValue`,`placeholder`,`disabled`]),S(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:u(()=>[C(d(i.$t(`views.settings.backup_destination_hint`)),1)]),_:1})])],64)):j(``,!0),v(`div`,Re,[S(s,{severity:`secondary`,outlined:``,loading:N(U),disabled:N(H),class:`ml-auto cui-button-medium`,label:i.$t(`components.form.button.run_now`),onClick:Xe},null,8,[`loading`,`disabled`,`label`]),S(s,{loading:N(H),disabled:N(U)||!N(Y),class:`cui-button-medium`,label:i.$t(`components.form.button.save`),onClick:Ye},null,8,[`loading`,`disabled`,`label`])]),N(G).length?(p(),y(`div`,ze,[v(`span`,Be,d(i.$t(`views.settings.backup_existing`)),1),(p(!0),y(O,null,g(N(G),e=>(p(),y(`div`,{key:e.filename,class:`flex items-center gap-3 py-1 min-w-0`},[v(`div`,Ve,[v(`span`,He,d(e.filename),1),v(`span`,Ue,d(new Date(e.timestamp).toLocaleString())+` · `+d(Je(e.size)),1)]),v(`div`,We,[x((p(),w(s,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,disabled:N(W)===e.filename,onClick:t=>Ze(e)},{icon:u(()=>[S(E,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])),[[k,{value:i.$t(`components.form.button.download`)},void 0,{top:!0}]]),x((p(),w(s,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md`,onClick:t=>Qe(e)},{icon:u(()=>[S(D,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[k,{value:i.$t(`components.form.button.remove`)},void 0,{top:!0}]])])]))),128))])):j(``,!0)]))]),_:1})])])])}}});export{Z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{hr as e}from"./vendor-cameraui-K1Nw4PvF.js";import{Sn as t,Tn as n,gn as r,x as i}from"./api-D1iULsSy.js";import{$n as a,Cr as o,Hn as s,In as c,Rn as l,cn as u,dn as d,gn as f,hn as p,ln as m,rn as h,sn as g,vn as _,yr as v}from"./vendor-Df81FCJz.js";import{t as y}from"./CuiList-C4fxd9lD.js";var b={class:`card-title`},x=_({__name:`SettingsList`,setup(_){let{t:x}=e(),S=g(()=>i.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&n(e)).map(e=>({to:`/settings/${e.path}`,label:x(`navigation.${e.meta.name.toLowerCase()}`),icon:e.meta.settingsBar.icon.default,group:e.meta.settingsBar.group??`personal`}))),C=g(()=>[`personal`,`system`].map(e=>({key:e,items:S.value.filter(t=>t.group===e)})).filter(e=>e.items.length>0));return(e,n)=>{let i=t,g=r,_=y;return c(),d(`div`,null,[(c(!0),d(h,null,l(v(C),t=>(c(),d(h,{key:t.key},[u(`span`,b,o(e.$t(`views.settings.section_${t.key}`)),1),f(_,{size:`large`,dividers:``,class:`!h-auto mb-4 last:mb-0`},{default:a(()=>[(c(!0),d(h,null,l(t.items,e=>(c(),m(g,{key:e.to,to:e.to},{prepend:a(()=>[(c(),m(s(e.icon),{class:`w-5 h-5 text-muted`}))]),append:a(()=>[f(i,{class:`w-5 h-5 text-muted`})]),default:a(()=>[p(` `+o(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:2},1024)],64))),128))])}}});export{x as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{J as e,Xt as t,Yt as ee,at as te,hr as n}from"./vendor-cameraui-K1Nw4PvF.js";import{Br as r,ct as ne,i,kr as a,o,st as s}from"./api-D1iULsSy.js";import{$n as c,C as re,Cr as l,Dn as u,In as d,S as f,Xn as p,Xt as m,cn as h,dn as g,dr as _,gn as v,hn as y,ln as b,or as ie,rn as x,sn as S,un as C,vn as w,x as T,yr as E}from"./vendor-Df81FCJz.js";import{U as D}from"./types-CeruGCb8.js";import{H as ae,M as oe,N as se,V as ce,a as le,i as ue,j as de,s as fe,v as pe}from"./vendor-primevue-DoA2Rwcb.js";import{t as O}from"./mqtt-ChvXxMhR.js";var me=D,k={class:`w-full h-full`},A={key:0,class:`w-full h-full flex items-center justify-center`},j={key:1,class:`flex flex-col w-full gap-6`},M={class:`card-title`},N={class:`flex items-center gap-4`},P={class:`flex flex-col field-switch-gap min-w-0`},F={class:`text-sm font-bold text-color`},I={class:`card-title`},L={class:`flex flex-col gap-6`},R={class:`flex items-center gap-4 cui-toggle-switch`},z={class:`flex flex-col field-switch-gap`},he={for:`enabled`,class:`cui-label-switch`},ge={class:`flex flex-col field-gap`},_e={for:`mode`,class:`cui-label`},ve={class:`flex flex-col sm:flex-row gap-6`},ye={for:`host`,class:`cui-label`},be={class:`flex flex-col field-gap w-full sm:w-40 shrink-0`},xe={for:`port`,class:`cui-label`},Se={class:`flex flex-col field-gap`},Ce={for:`protocol`,class:`cui-label`},we={class:`flex flex-col sm:flex-row gap-6`},Te={class:`flex flex-col field-gap flex-1 min-w-0`},Ee={for:`username`,class:`cui-label`},De={class:`flex flex-col field-gap flex-1 min-w-0`},Oe={for:`password`,class:`cui-label`},ke={class:`flex flex-col field-gap`},Ae={for:`brokerAddress`,class:`cui-label`},je={class:`flex flex-col sm:flex-row gap-6`},Me={class:`flex flex-col field-gap w-full sm:w-40 shrink-0`},Ne={for:`brokerPort`,class:`cui-label`},Pe={class:`flex flex-col field-gap flex-1 min-w-0`},Fe={for:`brokerUsername`,class:`cui-label`},Ie={class:`flex flex-col field-gap flex-1 min-w-0`},Le={for:`brokerPassword`,class:`cui-label`},B={class:`flex flex-col sm:flex-row gap-6`},Re={for:`clientId`,class:`cui-label`},ze={for:`topicPrefix`,class:`cui-label`},Be={class:`flex items-center gap-4 cui-toggle-switch`},Ve={class:`flex flex-col field-switch-gap`},He={for:`rejectUnauthorized`,class:`cui-label-switch`},Ue={class:`flex flex-col field-gap`},We={for:`tlsCa`,class:`cui-label`},Ge={class:`flex flex-col field-gap`},Ke={for:`tlsCert`,class:`cui-label`},qe={class:`flex flex-col field-gap`},Je={for:`tlsKey`,class:`cui-label`},Ye={class:`flex items-center gap-4 cui-toggle-switch`},Xe={class:`flex flex-col field-switch-gap`},Ze={for:`haDiscovery`,class:`cui-label-switch`},Qe={for:`haDiscovery.prefix`,class:`cui-label`},$e={class:`flex items-center gap-3`},V=w({__name:`SettingsMqtt`,setup(w){let D=new O,V=r(),{t:H}=n(),{data:U}=D.getMqttInfoQuery(),W=D.patchMqttInfoMutation(),G=D.testMqttConnectionMutation(),K=a(`/server`),et=[{label:`mqtt:// (TCP)`,value:`mqtt`},{label:`mqtts:// (TLS)`,value:`mqtts`}],tt=[{label:H(`views.settings.mqtt_mode_external`),value:`external`},{label:H(`views.settings.mqtt_mode_embedded`),value:`embedded`}],q=_(null),J=_(``),Y=_(null),X=S(()=>U.value?.passwordSet??!1),Z=S(()=>Y.value??U.value?.status??null),nt=S(()=>{switch(Z.value?.state){case`connected`:return`success`;case`connecting`:case`reconnecting`:return`warn`;case`error`:return`danger`;default:return`secondary`}}),rt=S(()=>{let e=Z.value?.state??`disabled`;return H(`views.settings.mqtt_state_${e}`)}),it=S(()=>Z.value?.lastError?Z.value.lastError:Z.value?.broker?.running?H(`views.settings.mqtt_broker_running`,{port:Z.value.broker.port}):H(`views.settings.mqtt_status_info`)),Q=S(()=>`mqtt://${window.location.hostname}:${q.value?.broker.port??1883}`);function $(){let e=o(q.value),t={enabled:e.enabled,mode:e.mode,broker:{port:e.broker.port,username:e.broker.username?.trim()?e.broker.username.trim():null,password:e.broker.password?.trim()?e.broker.password:null},host:e.host?.trim()?e.host.trim():null,port:e.port,protocol:e.protocol,username:e.username?.trim()?e.username.trim():null,clientId:e.clientId,topicPrefix:e.topicPrefix,tls:{rejectUnauthorized:e.tls.rejectUnauthorized,ca:e.tls.ca?.trim()?e.tls.ca:null,cert:e.tls.cert?.trim()?e.tls.cert:null,key:e.tls.key?.trim()?e.tls.key:null},haDiscovery:{enabled:e.haDiscovery.enabled,prefix:e.haDiscovery.prefix}};return J.value&&(t.password=J.value),t}async function at(){q.value&&(await W.mutateAsync($()),J.value=``)}async function ot(){if(!q.value)return;let e=await G.mutateAsync($());e.ok?V.add({severity:`success`,detail:H(`components.toast.mqtt_test_success`),life:3e3}):V.add({severity:`error`,detail:H(`components.toast.mqtt_test_failed`,{message:e.message??``}),life:5e3})}return p(U,e=>{e&&!q.value&&(q.value=o(e.settings))},{immediate:!0}),K.on(`mqtt-status`,e=>{Y.value=e}),K.onReady(async()=>{try{let e=await K.request(`get-mqtt-status`);e&&(Y.value=e)}catch{}}),(n,r)=>{let a=ee,o=se,p=le,_=te,S=ce,w=ae,D=e,O=pe,V=fe,H=ne,U=de,K=oe,Y=ue,Z=t;return d(),g(`div`,k,[E(q)?(d(),g(`div`,j,[h(`div`,null,[h(`span`,M,l(n.$t(`views.settings.status`)),1),v(_,{class:`cui-card`},{content:c(()=>[h(`div`,N,[h(`div`,P,[h(`span`,F,l(n.$t(`views.settings.mqtt_broker`)),1),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint truncate`},{default:c(()=>[y(l(E(it)),1)]),_:1})]),v(p,{class:`ml-auto shrink-0`,severity:E(nt),value:E(rt)},null,8,[`severity`,`value`])])]),_:1})]),v(E(re),{class:`flex flex-col w-full gap-6`,"validation-schema":E(me),onSubmit:at},{default:c(()=>[h(`div`,null,[h(`span`,I,l(n.$t(`views.settings.mqtt_broker`)),1),v(_,{class:`cui-card`},{content:c(()=>[h(`div`,L,[h(`div`,R,[h(`div`,z,[h(`label`,he,l(n.$t(`components.form.label.enabled`)),1),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_enabled_info`)),1)]),_:1})]),v(S,{modelValue:E(q).enabled,"onUpdate:modelValue":r[0]||=e=>E(q).enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),h(`div`,ge,[h(`label`,_e,l(n.$t(`views.settings.mqtt_mode_label`)),1),v(w,{modelValue:E(q).mode,"onUpdate:modelValue":r[1]||=e=>E(q).mode=e,options:tt,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`]),E(q).mode===`embedded`?(d(),b(o,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_mode_embedded_info`)),1)]),_:1})):C(``,!0)]),E(q).mode===`external`?(d(),g(x,{key:0},[h(`div`,ve,[v(E(f),{modelValue:E(q).host,"onUpdate:modelValue":r[2]||=e=>E(q).host=e,modelModifiers:{trim:!0},name:`host`,as:`div`,class:`flex flex-col field-gap flex-1 min-w-0`},{default:c(({field:e,errors:t})=>[h(`label`,ye,l(n.$t(`views.settings.mqtt_host_label`)),1),v(D,u(e,{invalid:t.length>0,type:`text`,placeholder:`192.168.1.10`,class:`w-full`}),null,16,[`invalid`]),v(m,{name:`fade`},{default:c(()=>[v(E(T),{name:`host`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),h(`div`,be,[h(`label`,xe,l(n.$t(`views.settings.mqtt_port_label`)),1),v(O,{modelValue:E(q).port,"onUpdate:modelValue":r[3]||=e=>E(q).port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])])]),h(`div`,Se,[h(`label`,Ce,l(n.$t(`views.settings.mqtt_protocol_label`)),1),v(w,{modelValue:E(q).protocol,"onUpdate:modelValue":r[4]||=e=>E(q).protocol=e,options:et,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`])]),h(`div`,we,[h(`div`,Te,[h(`label`,Ee,l(n.$t(`views.settings.mqtt_username_label`)),1),v(D,{modelValue:E(q).username,"onUpdate:modelValue":r[5]||=e=>E(q).username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),h(`div`,De,[h(`label`,Oe,l(n.$t(`views.settings.mqtt_password_label`)),1),v(V,{modelValue:E(J),"onUpdate:modelValue":r[6]||=e=>ie(J)?J.value=e:null,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`new-password`,placeholder:E(X)?`••••••••`:``},null,8,[`modelValue`,`placeholder`]),E(X)?(d(),b(o,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_password_keep_hint`)),1)]),_:1})):C(``,!0)])])],64)):(d(),g(x,{key:1},[h(`div`,ke,[h(`label`,Ae,l(n.$t(`views.settings.mqtt_broker_address`)),1),v(K,null,{default:c(()=>[v(D,{"model-value":E(Q),readonly:``,class:`font-mono text-xs`},null,8,[`model-value`]),v(U,null,{default:c(()=>[v(H,{"action-text":n.$t(`components.form.tooltip.copied`),icon:E(s),"button-props":{severity:`secondary`,text:!0},onAction:r[7]||=e=>E(i)(E(Q))},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_broker_address_hint`)),1)]),_:1})]),h(`div`,je,[h(`div`,Me,[h(`label`,Ne,l(n.$t(`views.settings.mqtt_port_label`)),1),v(O,{modelValue:E(q).broker.port,"onUpdate:modelValue":r[8]||=e=>E(q).broker.port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])]),h(`div`,Pe,[h(`label`,Fe,l(n.$t(`views.settings.mqtt_username_label`)),1),v(D,{modelValue:E(q).broker.username,"onUpdate:modelValue":r[9]||=e=>E(q).broker.username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),h(`div`,Ie,[h(`label`,Le,l(n.$t(`views.settings.mqtt_password_label`)),1),v(K,null,{default:c(()=>[v(V,{modelValue:E(q).broker.password,"onUpdate:modelValue":r[10]||=e=>E(q).broker.password=e,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`off`},null,8,[`modelValue`]),v(U,null,{default:c(()=>[v(H,{"action-text":n.$t(`components.form.tooltip.copied`),icon:E(s),"button-props":{severity:`secondary`,text:!0},onAction:r[11]||=e=>E(i)(E(q).broker.password??``)},null,8,[`action-text`,`icon`])]),_:1})]),_:1})])])],64)),h(`div`,B,[v(E(f),{modelValue:E(q).clientId,"onUpdate:modelValue":r[12]||=e=>E(q).clientId=e,modelModifiers:{trim:!0},name:`clientId`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:c(({field:e,errors:t})=>[h(`label`,Re,l(n.$t(`views.settings.mqtt_client_id_label`)),1),v(D,u(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`]),v(m,{name:`fade`},{default:c(()=>[v(E(T),{name:`clientId`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),v(E(f),{modelValue:E(q).topicPrefix,"onUpdate:modelValue":r[13]||=e=>E(q).topicPrefix=e,modelModifiers:{trim:!0},name:`topicPrefix`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:c(({field:e,errors:t})=>[h(`label`,ze,l(n.$t(`views.settings.mqtt_topic_prefix_label`)),1),v(D,u(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`]),v(m,{name:`fade`},{default:c(()=>[v(E(T),{name:`topicPrefix`,class:`cui-input-error`})]),_:1}),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_topic_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])]),E(q).mode===`external`&&E(q).protocol===`mqtts`?(d(),g(x,{key:2},[h(`div`,Be,[h(`div`,Ve,[h(`label`,He,l(n.$t(`views.settings.mqtt_tls_reject_unauthorized`)),1),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_tls_reject_unauthorized_info`)),1)]),_:1})]),v(S,{modelValue:E(q).tls.rejectUnauthorized,"onUpdate:modelValue":r[14]||=e=>E(q).tls.rejectUnauthorized=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),h(`div`,Ue,[h(`label`,We,l(n.$t(`views.settings.mqtt_tls_ca_label`)),1),v(Y,{modelValue:E(q).tls.ca,"onUpdate:modelValue":r[15]||=e=>E(q).tls.ca=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),h(`div`,Ge,[h(`label`,Ke,l(n.$t(`views.settings.mqtt_tls_cert_label`)),1),v(Y,{modelValue:E(q).tls.cert,"onUpdate:modelValue":r[16]||=e=>E(q).tls.cert=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),h(`div`,qe,[h(`label`,Je,l(n.$t(`views.settings.mqtt_tls_key_label`)),1),v(Y,{modelValue:E(q).tls.key,"onUpdate:modelValue":r[17]||=e=>E(q).tls.key=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])])],64)):C(``,!0),h(`div`,Ye,[h(`div`,Xe,[h(`label`,Ze,l(n.$t(`views.settings.mqtt_ha_discovery`)),1),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_ha_discovery_info`)),1)]),_:1})]),v(S,{modelValue:E(q).haDiscovery.enabled,"onUpdate:modelValue":r[18]||=e=>E(q).haDiscovery.enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),E(q).haDiscovery.enabled?(d(),b(E(f),{key:3,modelValue:E(q).haDiscovery.prefix,"onUpdate:modelValue":r[19]||=e=>E(q).haDiscovery.prefix=e,modelModifiers:{trim:!0},name:`haDiscovery.prefix`,as:`div`,class:`flex flex-col field-gap`},{default:c(({field:e,errors:t})=>[h(`label`,Qe,l(n.$t(`views.settings.mqtt_ha_prefix_label`)),1),v(D,u(e,{invalid:t.length>0,type:`text`,placeholder:`homeassistant`}),null,16,[`invalid`]),v(m,{name:`fade`},{default:c(()=>[v(E(T),{name:`haDiscovery.prefix`,class:`cui-input-error`})]),_:1}),v(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:c(()=>[y(l(n.$t(`views.settings.mqtt_ha_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])):C(``,!0),h(`div`,$e,[v(Z,{type:`button`,severity:`secondary`,loading:E(G).isPending.value,disabled:E(q).mode===`external`&&!E(q).host,class:`cui-button-medium`,label:n.$t(`views.settings.mqtt_test`),onClick:ot},null,8,[`loading`,`disabled`,`label`]),v(Z,{type:`submit`,loading:E(W).isPending.value,class:`cui-button-medium ml-auto`,label:n.$t(`components.form.button.save`)},null,8,[`loading`,`label`])])])]),_:1})])]),_:1},8,[`validation-schema`])])):(d(),g(`div`,A,[v(a,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]))])}}});export{V as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{G as e,J as t,Xt as n,Yt as r,at as ee,hr as i,nn as te}from"./vendor-cameraui-K1Nw4PvF.js";import{Br as a,Dr as o,Tn as s}from"./api-D1iULsSy.js";import{$n as c,Bn as ne,Cr as l,In as u,Pn as d,Rn as f,Xn as p,cn as m,dn as h,dr as g,er as re,gn as _,hn as v,ln as y,lr as b,rn as x,sn as S,tn as ie,un as C,vn as w,yr as T}from"./vendor-Df81FCJz.js";import{i as E}from"./intercomService-BQYzjnAi.js";import{C as ae,E as oe,L as se,N as ce,V as le}from"./vendor-primevue-DoA2Rwcb.js";import{t as D}from"./notifications-CbL-1oMs.js";import{t as O}from"./usePushRegistration-vcbMrTxZ.js";import{t as ue}from"./delete-BWgOAzKl.js";import{t as de}from"./CuiDataTable-DfjXa0C1.js";import{t as k}from"./usePermissions-DZitFsBQ.js";var fe={class:`flex flex-col w-full gap-6`},pe={class:`card-title`},me={class:`flex flex-col gap-6`},he={class:`text-sm`},ge={key:1,class:`flex items-center justify-center py-8`},_e={class:`flex items-center gap-4`},ve={class:`flex flex-col field-switch-gap`},ye={class:`cui-label-switch`},be={key:0,class:`flex items-center gap-4`},xe={class:`flex flex-col field-switch-gap min-w-0`},Se={class:`cui-label-switch`},Ce={key:1,class:`flex items-center gap-4`},we={class:`flex flex-col field-switch-gap min-w-0`},Te={class:`cui-label-switch`},Ee={key:2,class:`flex flex-col gap-2`},De={class:`flex items-center gap-4`},Oe={class:`flex flex-col field-switch-gap`},ke={class:`cui-label-switch`},Ae={key:0,class:`grid grid-cols-1 sm:grid-cols-3 gap-3 mt-2`},je={class:`flex flex-col field-gap`},Me={for:`qh-from`,class:`cui-label`},Ne={class:`flex flex-col field-gap`},Pe={for:`qh-to`,class:`cui-label`},Fe={class:`flex flex-col field-gap`},Ie={for:`qh-tz`,class:`cui-label`},Le={key:0},Re={class:`card-title`},ze={class:`flex flex-col gap-6`},Be={class:`text-sm`},Ve={key:0,class:`flex items-center justify-center py-8`},He={key:1,class:`text-sm text-muted text-center py-8`},Ue={key:2,class:`flex flex-col gap-3`},We={class:`flex items-center gap-4`},Ge={class:`flex flex-col field-switch-gap`},Ke={class:`cui-label-switch`},qe={key:1},Je={class:`card-title`},Ye={class:`flex flex-col gap-6`},Xe={class:`text-sm`},Ze={key:0,class:`flex items-center justify-center py-8`},Qe={key:1,class:`text-sm text-muted text-center py-8`},$e={key:2,class:`flex flex-col gap-3`},et={class:`flex items-center gap-4`},tt={class:`flex flex-col field-switch-gap`},nt={class:`cui-label-switch`},rt={key:2},it={class:`card-title`},at={class:`flex flex-col gap-6`},ot={class:`text-sm`},st={key:0,class:`flex items-center justify-center py-8`},ct={key:1,class:`text-sm text-muted text-center py-8`},lt={key:3,class:`flex justify-end gap-2`},A=w({__name:`SettingsNotifications`,setup(w){let A=new D,{t:j,te:ut}=i(),M=a(),dt=s(void 0,`admin`),{registerForPush:ft,forgetIfThisDevice:pt,getSyncState:mt,restoreMarker:ht}=O(),{isElectronApp:N,electron:P}=E(),{states:gt,refresh:_t}=k(),{data:F,isLoading:vt}=A.getSettingsQuery(),{data:I,isLoading:yt}=A.listDevicesQuery(()=>!0),{data:L,isLoading:bt}=A.listSourcesQuery(),{mutate:xt,isPending:St}=A.setSettingsQuery(),{mutateAsync:Ct}=A.setSettingsQuerySilent(),{mutate:wt}=A.revokeDeviceQuery(),{mutate:R}=A.updateDeviceQuery(),z=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`,B=g(null),V=g(``),H=g(!1),U=g(!1),W=g(!1),G=g(!0),K=g(!1),q=g(null),J=b({}),Y=g(null),Tt=S(()=>!!B.value&&JSON.stringify(B.value)!==V.value),X=S(()=>!!B.value?.enabled),Z=S(()=>St.value),Et=S(()=>$(B.value?.quietHours?.from)),Dt=S(()=>$(B.value?.quietHours?.to));function Q(e){e&&(B.value=JSON.parse(JSON.stringify(e)),V.value=JSON.stringify(e))}function Ot(){Q(F.value)}function kt(e){B.value&&(e?B.value.quietHours={from:`22:00`,to:`07:00`,timezone:z}:delete B.value.quietHours)}function $(e){if(!e)return null;let[t,n]=e.split(`:`).map(Number);if(!Number.isFinite(t)||!Number.isFinite(n))return null;let r=new Date;return r.setHours(t,n,0,0),r}function At(e){return e?`${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}`:`00:00`}function jt(e,t){B.value?.quietHours&&(B.value.quietHours[e]=At(t))}function Mt(e){return B.value?.systemTypes?.[e]!==!1}function Nt(e,t){B.value&&(B.value.systemTypes||(B.value.systemTypes={}),t?delete B.value.systemTypes[e]:B.value.systemTypes[e]=!1)}function Pt(e){return B.value?.sources?.[e]!==!1}function Ft(e,t){B.value&&(B.value.sources||(B.value.sources={}),t?delete B.value.sources[e]:B.value.sources[e]=!1)}function It(e){let t=`views.settings.notifications.system_types.${e.type.replaceAll(`.`,`_`)}`;return ut(t)?j(t):e.label}function Lt(){B.value&&xt({settings:B.value},{onSuccess:e=>Q(e)})}async function Rt(e){if(B.value&&F.value){H.value=!0;try{Q(await Ct({settings:{...F.value,enabled:e}}))}catch(e){M.add({severity:`error`,detail:e,life:3e3})}finally{H.value=!1}}}async function zt(){let e=o(),t=e?await mt(e,I.value):{status:`unknown`};U.value=t.status===`registered`,t.status===`registered`&&t.device&&e&&await ht(e,t.device.id)}async function Bt(){if(N&&P)try{G.value=await P.invoke(`get-desktop-notifications`)}catch{}}async function Vt(e){if(P){K.value=!0;try{G.value=await P.invoke(`set-desktop-notifications`,e)}catch(e){M.add({severity:`error`,detail:e,life:3e3})}finally{K.value=!1}}}async function Ht(){W.value=!0;try{await ft(),await zt(),await A.queryClient.invalidateQueries({queryKey:[`notifications`,`devices`]})}catch(e){M.add({severity:`error`,detail:e,life:3e3})}finally{W.value=!1}}function Ut(e){q.value=e;let t=o();wt({deviceId:e},{onSuccess:async()=>{t&&await pt(t,e),zt()},onSettled:()=>q.value=null})}function Wt(e){let t=J[e.id];if(t==null)return;let n=t.trim();if(!n||n===e.name){delete J[e.id];return}Y.value=e.id,R({deviceId:e.id,patch:{name:n}},{onSuccess:()=>delete J[e.id],onSettled:()=>Y.value=null})}function Gt(e,t){Y.value=e,R({deviceId:e,patch:{active:t}},{onSettled:()=>Y.value=null})}return p(F,Q,{immediate:!0}),p(I,()=>!1,{immediate:!0}),d(()=>{N&&Bt(),_t()}),(i,a)=>{let o=ne(`RouterLink`),s=ce,d=r,p=le,g=n,b=e,S=t,w=ee,E=se,D=ae,O=oe,k=ue,A=de,j=te;return u(),h(`div`,null,[m(`div`,fe,[m(`div`,null,[m(`span`,pe,l(i.$t(`views.settings.notifications.general`)),1),_(w,{class:`cui-card`},{content:c(()=>[m(`div`,me,[m(`span`,he,l(i.$t(`views.settings.notifications.general_info`)),1),T(gt).notifications===`denied`?(u(),y(s,{key:0,severity:`warn`,size:`small`},{default:c(()=>[v(l(i.$t(`views.settings.notifications.os_permission_denied`))+` `,1),_(o,{to:`/settings/permissions`,class:`underline`},{default:c(()=>[v(l(i.$t(`views.settings.notifications.os_permission_link`)),1)]),_:1})]),_:1})):C(``,!0),T(vt)&&!T(B)?(u(),h(`div`,ge,[_(d,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):T(B)?(u(),h(x,{key:2},[m(`div`,_e,[m(`div`,ve,[m(`label`,ye,l(i.$t(`views.settings.notifications.enable`)),1),_(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[v(l(i.$t(`views.settings.notifications.enable_info`)),1)]),_:1})]),_(p,{"model-value":T(B).enabled,loading:T(H),class:`ml-auto shrink-0`,"onUpdate:modelValue":Rt},null,8,[`model-value`,`loading`])]),T(!1)&&T(B).enabled?(u(),h(`div`,be,[m(`div`,xe,[m(`label`,Se,l(i.$t(`views.settings.notifications.this_device`)),1),_(s,{severity:T(U)?`secondary`:`warn`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[v(l(T(U)?i.$t(`views.settings.notifications.this_device_synced`):i.$t(`views.settings.notifications.this_device_unsynced`)),1)]),_:1},8,[`severity`])]),_(g,{severity:T(U)?`secondary`:void 0,loading:T(W),class:`cui-button-small ml-auto shrink-0`,label:T(U)?i.$t(`views.settings.notifications.resync`):i.$t(`views.settings.notifications.sync`),onClick:Ht},null,8,[`severity`,`loading`,`label`])])):T(N)&&T(B).enabled?(u(),h(`div`,Ce,[m(`div`,we,[m(`label`,Te,l(i.$t(`views.settings.notifications.this_device`)),1),_(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[v(l(i.$t(`views.settings.notifications.this_device_desktop`)),1)]),_:1})]),_(p,{"model-value":T(G),loading:T(K),class:`ml-auto shrink-0`,"onUpdate:modelValue":Vt},null,8,[`model-value`,`loading`])])):C(``,!0),T(B).enabled?(u(),h(`div`,Ee,[m(`div`,De,[m(`div`,Oe,[m(`label`,ke,l(i.$t(`views.settings.notifications.quiet_hours`)),1),_(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[v(l(i.$t(`views.settings.notifications.quiet_hours_info`)),1)]),_:1})]),_(p,{"model-value":!!T(B).quietHours,class:`ml-auto shrink-0`,"onUpdate:modelValue":kt},null,8,[`model-value`])]),T(B).quietHours?(u(),h(`div`,Ae,[m(`div`,je,[m(`label`,Me,l(i.$t(`views.settings.notifications.from`)),1),_(b,{"input-id":`qh-from`,"model-value":T(Et),"time-only":``,"show-icon":``,"icon-display":`input`,class:`w-full`,"onUpdate:modelValue":a[0]||=e=>jt(`from`,e)},null,8,[`model-value`])]),m(`div`,Ne,[m(`label`,Pe,l(i.$t(`views.settings.notifications.to`)),1),_(b,{"input-id":`qh-to`,"model-value":T(Dt),"time-only":``,"show-icon":``,"icon-display":`input`,class:`w-full`,"onUpdate:modelValue":a[1]||=e=>jt(`to`,e)},null,8,[`model-value`])]),m(`div`,Fe,[m(`label`,Ie,l(i.$t(`views.settings.notifications.timezone`)),1),_(S,{id:`qh-tz`,modelValue:T(B).quietHours.timezone,"onUpdate:modelValue":a[2]||=e=>T(B).quietHours.timezone=e,placeholder:T(z)},null,8,[`modelValue`,`placeholder`])])])):C(``,!0)])):C(``,!0)],64)):C(``,!0)])]),_:1})]),T(X)&&T(dt)?(u(),h(`div`,Le,[m(`span`,Re,l(i.$t(`views.settings.notifications.system_notifications`)),1),_(w,{class:`cui-card`},{content:c(()=>[m(`div`,ze,[m(`span`,Be,l(i.$t(`views.settings.notifications.system_notifications_info`)),1),T(bt)&&!T(L)?(u(),h(`div`,Ve,[_(d,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):T(L)?.system?.length?(u(),h(`div`,Ue,[(u(!0),h(x,null,f(T(L).system,(e,t)=>(u(),h(`div`,{key:e.type},[m(`div`,We,[m(`div`,Ge,[m(`label`,Ke,l(It(e)),1),e.description?(u(),y(s,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:c(()=>[v(l(e.description),1)]),_:2},1024)):C(``,!0)]),_(p,{"model-value":Mt(e.type),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>Nt(e.type,t)},null,8,[`model-value`,`onUpdate:modelValue`])]),t<T(L).system.length-1?(u(),y(E,{key:0,class:`my-2`})):C(``,!0)]))),128))])):(u(),h(`div`,He,l(i.$t(`views.settings.notifications.no_system_types`)),1))])]),_:1})])):C(``,!0),T(X)?(u(),h(`div`,qe,[m(`span`,Je,l(i.$t(`views.settings.notifications.plugin_notifications`)),1),_(w,{class:`cui-card`},{content:c(()=>[m(`div`,Ye,[m(`span`,Xe,l(i.$t(`views.settings.notifications.plugin_notifications_info`)),1),T(bt)&&!T(L)?(u(),h(`div`,Ze,[_(d,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):T(L)?.plugins?.length?(u(),h(`div`,$e,[(u(!0),h(x,null,f(T(L).plugins,(e,t)=>(u(),h(`div`,{key:e.id},[m(`div`,et,[m(`div`,tt,[m(`label`,nt,l(e.name),1)]),_(p,{"model-value":Pt(e.id),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>Ft(e.id,t)},null,8,[`model-value`,`onUpdate:modelValue`])]),t<T(L).plugins.length-1?(u(),y(E,{key:0,class:`my-2`})):C(``,!0)]))),128))])):(u(),h(`div`,Qe,l(i.$t(`views.settings.notifications.no_plugin_sources`)),1))])]),_:1})])):C(``,!0),T(X)?(u(),h(`div`,rt,[m(`span`,it,l(i.$t(`views.settings.notifications.devices`)),1),_(w,{class:`cui-card`},{content:c(()=>[m(`div`,at,[m(`span`,ot,l(i.$t(`views.settings.notifications.devices_info`)),1),T(yt)&&!T(I)?(u(),h(`div`,st,[_(d,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):T(I)?.length?(u(),y(A,{key:2,value:T(I),"striped-rows":``},{default:c(()=>[_(D,{field:`name`,header:i.$t(`views.settings.notifications.col_name`)},{body:c(({data:e})=>[_(S,{"model-value":T(J)[e.id]??e.name,disabled:T(Y)===e.id,class:`w-full max-w-xs min-w-[150px]`,"onUpdate:modelValue":t=>T(J)[e.id]=t??``,onBlur:t=>Wt(e),onKeyup:ie(t=>Wt(e),[`enter`])},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`,`onBlur`,`onKeyup`])]),_:1},8,[`header`]),_(D,{field:`pluginName`,header:i.$t(`views.settings.notifications.col_plugin`)},{body:c(({data:e})=>[_(O,{label:e.pluginName,class:`text-xs`},null,8,[`label`])]),_:1},8,[`header`]),_(D,{field:`active`,header:i.$t(`views.settings.notifications.col_active`),style:{width:`7rem`}},{body:c(({data:e})=>[_(p,{"model-value":e.active,loading:T(Y)===e.id,"onUpdate:modelValue":t=>Gt(e.id,t)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:1},8,[`header`]),_(D,{field:`actions`,header:``,style:{width:`6rem`}},{body:c(({data:e})=>[re((u(),y(g,{severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:T(q)===e.id,onClick:t=>Ut(e.id)},{icon:c(()=>[_(k,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[j,{value:i.$t(`views.settings.notifications.revoke`)}]])]),_:1})]),_:1},8,[`value`])):(u(),h(`div`,ct,l(i.$t(`views.settings.notifications.no_devices`)),1))])]),_:1})])):C(``,!0),T(B)&&T(Tt)?(u(),h(`div`,lt,[_(g,{severity:`secondary`,outlined:``,class:`cui-button-medium`,disabled:T(Z),label:i.$t(`views.settings.notifications.reset`),onClick:Ot},null,8,[`disabled`,`label`]),_(g,{severity:`success`,class:`cui-button-medium`,loading:T(Z),label:i.$t(`views.settings.notifications.save`),onClick:Lt},null,8,[`loading`,`label`])])):C(``,!0)])])}}});export{A as default};
|