@camera.ui/server 2.1.6 → 2.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/dist/interface/assets/{404-EUyzR8Cu.js → 404-D0lfw52Y.js} +1 -1
  2. package/dist/interface/assets/{About-BmfMwt66.js → About-DaaVZ9Cn.js} +1 -1
  3. package/dist/interface/assets/{Automation-DtTMxMlL.js → Automation-DQyPNAzK.js} +3 -3
  4. package/dist/interface/assets/{AutomationImport-Cxrhgzer.js → AutomationImport-BDD_LuC1.js} +2 -2
  5. package/dist/interface/assets/{AutomationStore-aTGlzTcI.js → AutomationStore-CeRF0iz6.js} +2 -2
  6. package/dist/interface/assets/{AutomationStoreDetail-BtmSvtyE.js → AutomationStoreDetail-DcCFUBJf.js} +2 -2
  7. package/dist/interface/assets/{Automations-CBeEWCad.js → Automations-GMWeSNQv.js} +2 -2
  8. package/dist/interface/assets/{Camera-9tFj730F.js → Camera-CYxRoESX.js} +2 -2
  9. package/dist/interface/assets/{CameraConsole-rCJr-qfx.js → CameraConsole-B0crXI59.js} +1 -1
  10. package/dist/interface/assets/{Cameras-DFuh9jxK.js → Cameras-V_twilcC.js} +2 -2
  11. package/dist/interface/assets/{Camview-C2byPDDS.js → Camview-CSb2iVBf.js} +1 -1
  12. package/dist/interface/assets/Config-BKuXgZxF.js +2 -0
  13. package/dist/interface/assets/{ConfigActionCameraControl-Caqlckcz.js → ConfigActionCameraControl-TFe1_K6j.js} +1 -1
  14. package/dist/interface/assets/{ConfigActionDelay-CZeAJTj7.js → ConfigActionDelay-DjFp5qpw.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionHttp-DcQCJ4zV.js → ConfigActionHttp-Cmjz4iAV.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionImageInput-DkgxdP2U.js → ConfigActionImageInput-B0Hll2M3.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionMqtt-Dp2-YpS9.js → ConfigActionMqtt-D2boY4u0.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionNotification-DDbDqLLs.js → ConfigActionNotification-7iRd0L5l.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionNotificationControl-CX83znhY.js → ConfigActionNotificationControl-DI_t2wHh.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionOutput-kMcDrgsm.js → ConfigActionOutput-BTGUzNQW.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionPlugin-Bv2Ke9_L.js → ConfigActionPlugin-CzspRdJx.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionSensor-CogS-K7S.js → ConfigActionSensor-CPK-s1E2.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionSnapshot-CdIciF5F.js → ConfigActionSnapshot-CcSw9Yw-.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionVariable-DS-nQLns.js → ConfigActionVariable-BCDtM13I.js} +1 -1
  25. package/dist/interface/assets/{ConfigConditionIfElse-BWYzHNnH.js → ConfigConditionIfElse-DZJkBeHI.js} +1 -1
  26. package/dist/interface/assets/{ConfigConditionSensorState-CxiaJpOs.js → ConfigConditionSensorState-CxWutq1T.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionSwitch-l01kWXVF.js → ConfigConditionSwitch-DBRR9cW4.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionTime-0Du7w_QE.js → ConfigConditionTime-B-5s6QW2.js} +1 -1
  29. package/dist/interface/assets/{ConfigSensorValueInput-Dm9r6m8t.js → ConfigSensorValueInput-B9MmHF-E.js} +1 -1
  30. package/dist/interface/assets/{ConfigTriggerDetection-CvK9Hvcd.js → ConfigTriggerDetection-DlY8ne3V.js} +1 -1
  31. package/dist/interface/assets/ConfigTriggerGeofence-DJt-3FpV.js +1 -0
  32. package/dist/interface/assets/{ConfigTriggerManual-IAo9sbiS.js → ConfigTriggerManual-BSxA9fGt.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerMqtt-16hSjN-I.js → ConfigTriggerMqtt-C7sFSgYi.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerSchedule-Ct_AN-xu.js → ConfigTriggerSchedule-fqVY5k3V.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerSensor-DkVWre58.js → ConfigTriggerSensor-BMZ74d8e.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSystem-BAd9IeRa.js → ConfigTriggerSystem-B8zwJpaY.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerWebhook-EmrFSoiV.js → ConfigTriggerWebhook-SklqcrZq.js} +1 -1
  38. package/dist/interface/assets/Console-BZB3MZKj.js +1 -0
  39. package/dist/interface/assets/CuiAutomationRunsDialog-N6NFABq2.js +1 -0
  40. package/dist/interface/assets/CuiBottomSheet-BnKYWBBA.js +1 -0
  41. package/dist/interface/assets/{CuiBottomSheet-DxrKqjWh.js → CuiBottomSheet-BuK_lFkK.js} +1 -1
  42. package/dist/interface/assets/{CuiCameraPipCard-C2nZsnPM.js → CuiCameraPipCard-DaJlFY1g.js} +1 -1
  43. package/dist/interface/assets/CuiCameraRecordings-z4WblFJ9.js +1 -0
  44. package/dist/interface/assets/{CuiCameraShares-DBZ01JcG.js → CuiCameraShares-CvKMe_kX.js} +1 -1
  45. package/dist/interface/assets/{CuiCameraTable-BlJHb3gX.js → CuiCameraTable-DOPSHZ28.js} +1 -1
  46. package/dist/interface/assets/CuiCameraTable-_7KwbPyM.js +1 -0
  47. package/dist/interface/assets/{CuiConsole-D56cxVKE.js → CuiConsole-BOfQ5I3b.js} +2 -2
  48. package/dist/interface/assets/{CuiDataTable-Ca51CpsO.js → CuiDataTable-DBNU5MJ_.js} +1 -1
  49. package/dist/interface/assets/{CuiLightControl-DP4pbkjr.js → CuiLightControl-CCwkaMEn.js} +1 -1
  50. package/dist/interface/assets/{CuiList-psx5r57o.js → CuiList-BOMdGNXj.js} +1 -1
  51. package/dist/interface/assets/{CuiPluginCard-DSQ7w6Nl.js → CuiPluginCard-CvNfBRhG.js} +2 -2
  52. package/dist/interface/assets/{CuiPluginCategoryChip-DiUXddOe.js → CuiPluginCategoryChip-JG_8D7Wt.js} +1 -1
  53. package/dist/interface/assets/{CuiPluginOAuthButton-ZRJJct-f.js → CuiPluginOAuthButton-6HQLdlfg.js} +2 -2
  54. package/dist/interface/assets/{CuiPluginTrustBadge-DNjUDEtv.js → CuiPluginTrustBadge-BS9iEcZr.js} +1 -1
  55. package/dist/interface/assets/{CuiQRCode-wxEwM1Sh.js → CuiQRCode-Vd-1ssJK.js} +1 -1
  56. package/dist/interface/assets/{CuiRecordingsGrid-DM5XDEMU.js → CuiRecordingsGrid-skKnK074.js} +1 -1
  57. package/dist/interface/assets/{CuiSchema-BJE7vHFH.js → CuiSchema-DvY3Bdnz.js} +1 -1
  58. package/dist/interface/assets/{CuiTopNavbarItem-DdFdvKkq.js → CuiTopNavbarItem-MCdYsYHh.js} +1 -1
  59. package/dist/interface/assets/Faces-DDTbgPtz.js +1 -0
  60. package/dist/interface/assets/{FirstSteps-CfKHB_uc.js → FirstSteps-T4ra4jxE.js} +1 -1
  61. package/dist/interface/assets/{Instances-DvAMsOPZ.js → Instances-D_Td0oJ-.js} +1 -1
  62. package/dist/interface/assets/{Logs-e3y9zMPD.js → Logs-DEQlc2WM.js} +2 -2
  63. package/dist/interface/assets/{Menu-DMLqFO8c.js → Menu-0EVo1-xs.js} +1 -1
  64. package/dist/interface/assets/Metrics-BstlZavQ.css +1 -0
  65. package/dist/interface/assets/Metrics-FFvFP2kR.js +1 -0
  66. package/dist/interface/assets/{OAuthDeviceFlow-C51WkjaT.js → OAuthDeviceFlow--YqcKa9u.js} +1 -1
  67. package/dist/interface/assets/{Plugin-DcdVF_OG.js → Plugin-CKcptqV9.js} +1 -1
  68. package/dist/interface/assets/{PluginConsole-D0n-Jf_E.js → PluginConsole-BB_dbd25.js} +1 -1
  69. package/dist/interface/assets/{PluginDetail-NOJPSqIS.js → PluginDetail-Y_jg8hAX.js} +2 -2
  70. package/dist/interface/assets/{PluginSchema-aG4DGAcH.js → PluginSchema-C4dQGJOV.js} +1 -1
  71. package/dist/interface/assets/PluginSearch-D2efYsof.js +1 -0
  72. package/dist/interface/assets/{PluginSearch-w9vvKCTP.js → PluginSearch-gY-PHMyu.js} +2 -2
  73. package/dist/interface/assets/{PluginUpdateProgress-DkdoTjZY.js → PluginUpdateProgress-BjeH5abL.js} +1 -1
  74. package/dist/interface/assets/{Plugins-BzQvLNj7.js → Plugins-Kz1A-VUA.js} +1 -1
  75. package/dist/interface/assets/Recordings-BlBmyZlM.js +1 -0
  76. package/dist/interface/assets/SensorEdit-CZyv_BYp.js +1 -0
  77. package/dist/interface/assets/{SensorHistory-C8vryAe_.js → SensorHistory-Mr03IqiL.js} +1 -1
  78. package/dist/interface/assets/Sensors-CHbtecpf.js +2 -0
  79. package/dist/interface/assets/{Settings-BqcsLKll.js → Settings-CIv_iZ_m.js} +1 -1
  80. package/dist/interface/assets/{SettingsAccount-CNfGFQuq.js → SettingsAccount-DA67jXmp.js} +1 -1
  81. package/dist/interface/assets/SettingsAccount-DPPwXOlM.js +1 -0
  82. package/dist/interface/assets/SettingsAppearance-C92Nlobb.js +1 -0
  83. package/dist/interface/assets/{SettingsAppearance-B-smgzKL.js → SettingsAppearance-DEQyCR5b.js} +1 -1
  84. package/dist/interface/assets/{SettingsBackup-C0ekmlJy.js → SettingsBackup-4y9MuseJ.js} +1 -1
  85. package/dist/interface/assets/{SettingsList-DeP1LOjz.js → SettingsList-DqyvUuS3.js} +1 -1
  86. package/dist/interface/assets/{SettingsMqtt-Bo4jZHMl.js → SettingsMqtt-CuTZBTrA.js} +1 -1
  87. package/dist/interface/assets/SettingsNotifications-D7Vs6NoU.js +1 -0
  88. package/dist/interface/assets/SettingsPermissions-C_8g_nff.js +1 -0
  89. package/dist/interface/assets/{SettingsRecordings-Dh-BqEba.js → SettingsRecordings-r9AwjQZX.js} +1 -1
  90. package/dist/interface/assets/{SettingsRemote-W3skn8qk.js → SettingsRemote-oDVzvhmy.js} +1 -1
  91. package/dist/interface/assets/{SettingsSystem-DnQSlgu0.js → SettingsSystem-QfBIPq4i.js} +2 -2
  92. package/dist/interface/assets/{SettingsUsers-CFBTzA0j.js → SettingsUsers-CqRJ8-7H.js} +1 -1
  93. package/dist/interface/assets/{Terminal-C7lDL745.js → Terminal-Xo2uy0RX.js} +3 -3
  94. package/dist/interface/assets/{VariableInput-DKmWb9RP.js → VariableInput-C3Jbe-vC.js} +1 -1
  95. package/dist/interface/assets/{VariableSuggestions-CjlK2Uqx.js → VariableSuggestions-pOrYkqys.js} +1 -1
  96. package/dist/interface/assets/{VersionsHandler-CrHCAiKn.js → VersionsHandler-BhBynPF8.js} +1 -1
  97. package/dist/interface/assets/{VirtualSensorCreate-DHhbE5iD.js → VirtualSensorCreate-B3bwlAJz.js} +1 -1
  98. package/dist/interface/assets/{Workers-CY-3Ah4u.js → Workers-tgzMqP3o.js} +2 -2
  99. package/dist/interface/assets/api-1K2Gzz8B.js +2 -0
  100. package/dist/interface/assets/{api-DwU_RUzW.js → api-B7yg8bdk.js} +1 -1
  101. package/dist/interface/assets/{auth-BhT4BtBc.js → auth-y-X5RKO6.js} +1 -1
  102. package/dist/interface/assets/{automations-ya-5P8Jc.js → automations-h1Wvnh36.js} +1 -1
  103. package/dist/interface/assets/cameras.schema-CKnsFYBP.js +1 -0
  104. package/dist/interface/assets/cloudHandoff-qezHiAZI.js +1 -0
  105. package/dist/interface/assets/{config-CgGpshGm.js → config-BZTZOfxI.js} +1 -1
  106. package/dist/interface/assets/{flowSchema-OrM5E_3R.js → flowSchema-Dxxlrn77.js} +1 -1
  107. package/dist/interface/assets/main-Ei2ORV9y.js +3 -0
  108. package/dist/interface/assets/main-kdyR9bI7.css +1 -0
  109. package/dist/interface/assets/{mqtt-CO84Q9sE.js → mqtt-CCq5JGGk.js} +1 -1
  110. package/dist/interface/assets/{notifications-DxDFtZSo.js → notifications-C8eyTPRM.js} +1 -1
  111. package/dist/interface/assets/{plugins-g-qkx8GX.js → plugins-D0Txz0BA.js} +1 -1
  112. package/dist/interface/assets/{round-restart-alt-YiDa63x6.js → round-restart-alt-Bw-T1H6w.js} +1 -1
  113. package/dist/interface/assets/{sensorIcons-4dvSmrEv.js → sensorIcons-r5wmAxeD.js} +1 -1
  114. package/dist/interface/assets/{sensors-BFCE7rbx.js → sensors-MIbrTUSa.js} +1 -1
  115. package/dist/interface/assets/{server-arWVymo1.js → server-alwZXRo-.js} +1 -1
  116. package/dist/interface/assets/{theme-Dw9-CwMe.js → theme-qmnHJ2WT.js} +1 -1
  117. package/dist/interface/assets/types-BTVMzSuj.js +1 -0
  118. package/dist/interface/assets/{types-D5c17URv.js → types-DBWHsh0W.js} +1 -1
  119. package/dist/interface/assets/{useAppVersion-Cp6mZ-ge.js → useAppVersion-BRc6OWZP.js} +1 -1
  120. package/dist/interface/assets/{useBackupRestore-Drc-2VXy.js → useBackupRestore-DCO_Pw9q.js} +1 -1
  121. package/dist/interface/assets/{useCameraOptions-BF3ASvVM.js → useCameraOptions-DYZKQx7X.js} +1 -1
  122. package/dist/interface/assets/{useElectron-BNGXeZEx.js → useElectron-CtslU_0f.js} +1 -1
  123. package/dist/interface/assets/{useLogsSocket-hJ9xUUtr.js → useLogsSocket-DvwkpzT2.js} +1 -1
  124. package/dist/interface/assets/{useNavLayout-CcDIO9RG.js → useNavLayout-CTX4KBkz.js} +1 -1
  125. package/dist/interface/assets/{usePermissions-C9kp5HQR.js → usePermissions-DpsfFydh.js} +1 -1
  126. package/dist/interface/assets/{usePluginUpdates-BJwtwD9v.js → usePluginUpdates-CiqRTrjF.js} +1 -1
  127. package/dist/interface/assets/usePushRegistration-Coz8RZob.js +2 -0
  128. package/dist/interface/assets/{useServerRestart-DwpQyv5H.js → useServerRestart-Bqpn8N4T.js} +1 -1
  129. package/dist/interface/assets/{useStreamStatus-C5dH33U5.js → useStreamStatus-BWCnwuaj.js} +1 -1
  130. package/dist/interface/assets/{useUpdateChannel-D7hnlzd5.js → useUpdateChannel-Cxm4QR-6.js} +1 -1
  131. package/dist/interface/assets/{useUserOptions-DFgkIDv8.js → useUserOptions-B2LNsU9C.js} +1 -1
  132. package/dist/interface/assets/{vendor-cameraui-GaXYUHUd.js → vendor-cameraui-C6beJsya.js} +44 -44
  133. package/dist/interface/assets/vendor-core-_ft7qIgH.js +1 -0
  134. package/dist/interface/assets/{vendor-primevue-CIRUBYsf.js → vendor-primevue-DfyAPSov.js} +1 -1
  135. package/dist/interface/index.html +24 -23
  136. package/dist/interface/sw.js +1 -1
  137. package/dist/server/package.json +4 -4
  138. package/dist/server/requirements.txt +1 -1
  139. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +4 -0
  140. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +4 -0
  141. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +3 -0
  142. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +26 -1
  143. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +6 -1
  144. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/events.py +2 -0
  145. package/dist/server/src/api/controllers/cameras.controller.d.ts +3 -1
  146. package/dist/server/src/api/controllers/cameras.controller.js +37 -0
  147. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  148. package/dist/server/src/api/routes/cameras.routes.js +24 -1
  149. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  150. package/dist/server/src/api/schemas/cameras.schema.d.ts +43 -0
  151. package/dist/server/src/api/schemas/cameras.schema.js +15 -0
  152. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  153. package/dist/server/src/api/services/cameras.service.d.ts +2 -1
  154. package/dist/server/src/api/services/cameras.service.js +15 -0
  155. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  156. package/dist/server/src/api/types/index.d.ts +4 -1
  157. package/dist/server/src/api/websocket/nsp/metrics.d.ts +1 -0
  158. package/dist/server/src/api/websocket/nsp/metrics.js +15 -0
  159. package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
  160. package/dist/server/src/api/websocket/types.d.ts +9 -0
  161. package/dist/server/src/camera/controller.js +1 -0
  162. package/dist/server/src/camera/controller.js.map +1 -1
  163. package/dist/server/src/camera/decoder/child.d.ts +2 -1
  164. package/dist/server/src/camera/decoder/child.js +10 -0
  165. package/dist/server/src/camera/decoder/child.js.map +1 -1
  166. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +4 -1
  167. package/dist/server/src/camera/decoder/detection-coordinator.js +23 -9
  168. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  169. package/dist/server/src/camera/decoder/event-manager.d.ts +3 -1
  170. package/dist/server/src/camera/decoder/event-manager.js +34 -6
  171. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  172. package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
  173. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  174. package/dist/server/src/camera/decoder/perf-tracker.d.ts +1 -0
  175. package/dist/server/src/camera/decoder/perf-tracker.js +14 -1
  176. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  177. package/dist/server/src/camera/decoder/types.d.ts +12 -0
  178. package/dist/server/src/camera/decoder/worker.js +16 -1
  179. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  180. package/dist/server/src/camera/index.d.ts +2 -1
  181. package/dist/server/src/camera/index.js +3 -0
  182. package/dist/server/src/camera/index.js.map +1 -1
  183. package/dist/server/src/camera/utils/filter.d.ts +3 -0
  184. package/dist/server/src/camera/utils/filter.js +12 -8
  185. package/dist/server/src/camera/utils/filter.js.map +1 -1
  186. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +5 -0
  187. package/dist/server/src/rpc/interfaces/frameworker.d.ts +2 -1
  188. package/package.json +4 -4
  189. package/dist/interface/assets/Config-C_IAFeWx.js +0 -2
  190. package/dist/interface/assets/ConfigTriggerGeofence-DQcdG6av.js +0 -1
  191. package/dist/interface/assets/Console-C7lP5TMv.js +0 -1
  192. package/dist/interface/assets/CuiAutomationRunsDialog-BoGUmS-Q.js +0 -1
  193. package/dist/interface/assets/CuiBottomSheet-II-Ajj4k.js +0 -1
  194. package/dist/interface/assets/CuiCameraRecordings-B4pJPGOQ.js +0 -1
  195. package/dist/interface/assets/CuiCameraTable-WOrw4_LR.js +0 -1
  196. package/dist/interface/assets/Faces-D4_QXhaT.js +0 -1
  197. package/dist/interface/assets/Metrics-C3RI973t.js +0 -1
  198. package/dist/interface/assets/Metrics-DqBC-wEo.css +0 -1
  199. package/dist/interface/assets/PluginSearch-JGQTNibA.js +0 -1
  200. package/dist/interface/assets/Recordings-_2r3gD4E.js +0 -1
  201. package/dist/interface/assets/SensorEdit-qcv6KAap.js +0 -1
  202. package/dist/interface/assets/Sensors-DnWG7VfR.js +0 -2
  203. package/dist/interface/assets/SettingsAccount-BrYKAfPE.js +0 -1
  204. package/dist/interface/assets/SettingsAppearance-eeRSh42a.js +0 -1
  205. package/dist/interface/assets/SettingsNotifications-Dx3me91s.js +0 -2
  206. package/dist/interface/assets/SettingsPermissions-DU1XvFFc.js +0 -1
  207. package/dist/interface/assets/api-CvO7u24f.js +0 -2
  208. package/dist/interface/assets/cameras.schema-BWH_Q16D.js +0 -1
  209. package/dist/interface/assets/cloudHandoff-BPjQsq7k.js +0 -1
  210. package/dist/interface/assets/main-Dd71JT_o.css +0 -1
  211. package/dist/interface/assets/main-rlz9T4Ug.js +0 -3
  212. package/dist/interface/assets/types-BCygqese.js +0 -1
  213. package/dist/interface/assets/vendor-core-BNfYBWH3.js +0 -1
@@ -0,0 +1 @@
1
+ import{$n as e,Ir as t,J as n,K as r,M as i,Mr as a,Q as o,Sr as s,X as c,Z as l,_r as u,at as d,ct as f,dr as p,dt as m,er as h,et as ee,hr as g,it as _,lt as te,mr as ne,nr as v,ot as y,pr as b,q as x,rr as S,sr as C,st as re,tr as ie,tt as ae,ur as w,wr as oe,xr as se}from"./vendor-cameraui-C6beJsya.js";import{Cn as T,hn as E}from"./api-1K2Gzz8B.js";import{Fn as D,Nn as O,Sn as k,Xn as A,_r as j,an as M,br as N,cn as P,cr as F,en as I,fn as L,gr as R,hn as z,in as B,mr as V,on as H,pn as U,rr as W,sn as G,yr as K,zn as q}from"./vendor-BaiDFVEr.js";import{K as J,T as ce,l as le,z as ue}from"./vendor-primevue-DfyAPSov.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-CCwkaMEn.js";import{t as Y}from"./sensorIcons-r5wmAxeD.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(z({__name:`CuiMeasurementInfo`,props:k({type:{},unit:{},current:{},label:{},disabled:{type:Boolean},size:{}},Te),setup(e){let{type:t}=V(e),n=B(()=>Y(t.value));return(t,r)=>(O(),P(`div`,{class:j([`cui-measurement-info`,[`cui-measurement-info--${e.size}`,{"cui-measurement-info--disabled":e.disabled}]])},[M(`div`,Ee,[M(`div`,De,[(O(),H(q(R(n)),{class:`cui-measurement-info__icon-svg`}))]),M(`div`,Oe,[e.label?(O(),P(`span`,ke,N(e.label),1)):G(``,!0),M(`span`,Ae,N(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(z({__name:`CuiBinarySensor`,props:k({type:{},detected:{type:Boolean},label:{},disabled:{type:Boolean},size:{}},Me),setup(e){let n=e,{t:r}=t(),{type:i,detected:a}=V(n),o=B(()=>Y(i.value)),s=B(()=>({color:`rgb(239, 68, 68)`,filter:`drop-shadow(0 0 6px rgba(239, 68, 68, 0.5))`})),c=B(()=>({color:`var(--text-secondary-color)`})),l=B(()=>a.value?`cui-binary-sensor__status--detected`:`cui-binary-sensor__status--clear`),u=B(()=>a.value?`cui-binary-sensor__indicator--detected`:`cui-binary-sensor__indicator--clear`);return(t,n)=>(O(),P(`div`,{class:j([`cui-binary-sensor`,[`cui-binary-sensor--${e.size}`,{"cui-binary-sensor--disabled":e.disabled,"cui-binary-sensor--clear":!R(a),"cui-binary-sensor--detected":R(a)}]])},[M(`div`,Ne,[M(`div`,Pe,[(O(),H(q(R(o)),{class:`cui-binary-sensor__icon-svg`,style:K(R(a)?R(s):R(c))},null,8,[`style`]))]),M(`div`,Fe,[e.label?(O(),P(`span`,Ie,N(e.label),1)):G(``,!0),M(`span`,{class:j([`cui-binary-sensor__status`,R(l)])},N(R(a)?R(r)(`components.binary_sensor.detected`):R(r)(`components.binary_sensor.clear`)),3)]),M(`div`,{class:j([`cui-binary-sensor__indicator`,R(u)])},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(z({__name:`CuiDetectionSensorInfo`,props:k({type:{},label:{},detected:{type:Boolean},labels:{},decibels:{},size:{}},Re),setup(e){let n=e,{t:r}=t(),i={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 8px rgba(251, 146, 60, 0.6))`},a=B(()=>{if(!n.detected)return r(`components.detection_sensor.idle`);let e=(n.labels??[]).filter(Boolean);return e.length?e.join(`, `):r(`components.detection_sensor.detected`)});return(t,n)=>(O(),P(`div`,{class:j([`cui-detection-info`,[`cui-detection-info--${e.size}`,{"cui-detection-info--active":e.detected}]])},[M(`div`,ze,[M(`div`,Be,[(O(),H(q(R(Y)(e.type)),{class:`cui-detection-info__icon-svg`,style:K(e.detected?i:void 0)},null,8,[`style`]))]),M(`div`,Ve,[e.label?(O(),P(`span`,He,N(e.label),1)):G(``,!0),M(`span`,{class:j([`cui-detection-info__status`,e.detected?`cui-detection-info__status--active`:`cui-detection-info__status--idle`])},N(R(a)),3)]),e.decibels===void 0?G(``,!0):(O(),P(`span`,Ue,N(Math.round(e.decibels))+` dB`,1)),M(`div`,{class:j([`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([a.Motion,a.Object,a.Audio,a.Face,a.LicensePlate,a.Classifier]),Z=new Set([a.Gas,a.CarbonMonoxide,a.Heat,a.Cold,a.Vibration,a.Tamper,a.Problem,a.Power]),Q=new Map([[a.Illuminance,`lx`],[a.CarbonDioxide,`ppm`]]),Ge=new Set([...X,...Z,...Q.keys(),a.Light,a.Switch,a.Lock,a.Siren,a.SecuritySystem,a.Garage,a.Doorbell,a.Contact,a.Occupancy,a.Smoke,a.Leak,a.Temperature,a.Humidity,a.Battery]);function Ke(e){return Ge.has(e)}var qe=z({__name:`CuiSensorControl`,props:{sensor:{},disabled:{type:Boolean}},setup(t){function i(e){return Z.has(e.type)}function m(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,k)=>{let A=Ce,j=ve,M=xe,N=he,P=de,F=pe,I=ye,L=Se,z=fe,B=ge,V=we,U=me,W=be,K=_e,q=Le,J=je;return R(ee)(t.sensor)?(O(),H(A,{key:0,label:t.sensor.displayName.value,on:t.sensor.getProperty(R(p).On)??!1,brightness:t.sensor.getProperty(R(p).Brightness)??100,"has-brightness":t.sensor.hasCapability(`brightness`),disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[0]||=e=>t.sensor.setProperty(R(p).On,e),"onUpdate:brightness":k[1]||=e=>t.sensor.setProperty(R(p).Brightness,e)},null,8,[`label`,`on`,`brightness`,`has-brightness`,`disabled`])):R(f)(t.sensor)?(O(),H(j,{key:1,label:t.sensor.displayName.value,on:t.sensor.getProperty(R(h).On)??!1,disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[2]||=e=>t.sensor.setProperty(R(h).On,e)},null,8,[`label`,`on`,`disabled`])):R(ae)(t.sensor)?(O(),H(M,{key:2,label:t.sensor.displayName.value,"current-state":t.sensor.getProperty(R(w).CurrentState)??2,"target-state":t.sensor.getProperty(R(w).TargetState)??0,disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[3]||=e=>t.sensor.setProperty(R(w).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):R(y)(t.sensor)?(O(),H(N,{key:3,label:t.sensor.displayName.value,active:t.sensor.getProperty(R(v).Active)??!1,volume:t.sensor.getProperty(R(v).Volume)??100,"has-volume":t.sensor.hasCapability(`volume`),disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:active":k[4]||=e=>t.sensor.setProperty(R(v).Active,e),"onUpdate:volume":k[5]||=e=>t.sensor.setProperty(R(v).Volume,e)},null,8,[`label`,`active`,`volume`,`has-volume`,`disabled`])):R(d)(t.sensor)?(O(),H(P,{key:4,label:t.sensor.displayName.value,"current-state":t.sensor.getProperty(R(S).CurrentState)??3,"target-state":t.sensor.getProperty(R(S).TargetState)??3,disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[6]||=e=>t.sensor.setProperty(R(S).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):R(c)(t.sensor)?(O(),H(F,{key:5,label:t.sensor.displayName.value,"current-state":t.sensor.getProperty(R(g).CurrentState)??1,"target-state":t.sensor.getProperty(R(g).TargetState)??1,"obstruction-detected":t.sensor.getProperty(R(g).ObstructionDetected)??!1,disabled:t.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[7]||=e=>t.sensor.setProperty(R(g).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`obstruction-detected`,`disabled`])):R(n)(t.sensor)?(O(),H(I,{key:6,label:t.sensor.displayName.value,ring:t.sensor.getProperty(R(u).Ring)??!1,disabled:t.disabled,size:`small`,class:`card-border`,onTrigger:k[8]||=()=>t.sensor.setProperty(R(u).Ring,!0)},null,8,[`label`,`ring`,`disabled`])):R(x)(t.sensor)?(O(),H(L,{key:7,label:t.sensor.displayName.value,detected:t.sensor.getProperty(R(se).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):R(_)(t.sensor)?(O(),H(z,{key:8,label:t.sensor.displayName.value,detected:t.sensor.getProperty(R(C).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):R(re)(t.sensor)?(O(),H(B,{key:9,label:t.sensor.displayName.value,detected:t.sensor.getProperty(R(ie).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):R(o)(t.sensor)?(O(),H(V,{key:10,label:t.sensor.displayName.value,detected:t.sensor.getProperty(R(b).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):R(te)(t.sensor)?(O(),H(U,{key:11,label:t.sensor.displayName.value,current:t.sensor.getProperty(R(e).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):R(l)(t.sensor)?(O(),H(W,{key:12,label:t.sensor.displayName.value,current:t.sensor.getProperty(R(ne).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):R(r)(t.sensor)?(O(),H(K,{key:13,label:t.sensor.displayName.value,level:t.sensor.getProperty(R(s).Level)??100,charging:t.sensor.getProperty(R(s).Charging)??`NOT_CHARGING`,low:t.sensor.getProperty(R(s).Low)??!1,size:`small`,class:`card-border`},null,8,[`label`,`level`,`charging`,`low`])):i(t.sensor)?(O(),H(q,{key:14,type:t.sensor.type,label:t.sensor.displayName.value,detected:t.sensor.getProperty(`detected`)??!1,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`])):m(t.sensor)?(O(),H(J,{key:15,type:t.sensor.type,label:t.sensor.displayName.value,current:t.sensor.getProperty(`current`)??void 0,unit:m(t.sensor),size:`small`,class:`card-border`},null,8,[`type`,`label`,`current`,`unit`])):T(t.sensor)?(O(),H(We,{key:16,type:t.sensor.type,label:t.sensor.displayName.value,detected:t.sensor.getProperty(`detected`)??!1,labels:E(t.sensor),decibels:t.sensor.type===R(a).Audio?t.sensor.getProperty(R(oe).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={class:`flex flex-col field-gap`},$e={class:`cui-label`},et={key:0,class:`flex flex-wrap gap-2`},tt={key:1,class:`flex items-center gap-4 cui-toggle-switch`},nt={class:`flex flex-col min-w-0`},rt={class:`cui-label-switch`},it={class:`text-xs text-muted`},at=z({__name:`SensorEdit`,props:{sensor:{},cameraOptions:{}},setup(e,{expose:t}){let n=e,r=F(n.sensor.displayName||n.sensor.name),a=F([...n.sensor.assignedCameraIds]),o=F(n.sensor.exposed),{sensors:s}=m(),c=B(()=>E(void 0,`admin`)),l=B(()=>n.cameraOptions.filter(e=>n.sensor.assignedCameraIds.includes(e.value))),u=B(()=>Ke(n.sensor.type)),d=B(()=>s.value.find(e=>e.id===n.sensor.id));return t({onConfirm:async()=>({displayName:r.value||n.sensor.name,assignedCameraIds:a.value,exposed:o.value})}),(t,n)=>{let s=ue,f=i,p=ce,m=le,h=J;return O(),P(`div`,Je,[R(u)?(O(),P(`div`,$,[M(`label`,Ye,N(t.$t(`views.sensors.control`)),1),R(d)?(O(),H(qe,{key:0,sensor:R(d),disabled:!R(c)},null,8,[`sensor`,`disabled`])):(O(),H(s,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:A(()=>[L(N(t.$t(`views.sensors.control_offline`)),1)]),_:1}))])):G(``,!0),M(`div`,Xe,[M(`label`,Ze,N(t.$t(`components.camera_options.sensor_display_name`)),1),U(f,{id:`sensorDisplayName`,modelValue:R(r),"onUpdate:modelValue":n[0]||=e=>W(r)?r.value=e:null,modelModifiers:{trim:!0},class:`w-full`},null,8,[`modelValue`])]),M(`div`,Qe,[M(`label`,$e,N(t.$t(`views.sensors.assigned_cameras`)),1),e.sensor.assignmentLocked?(O(),P(`div`,et,[(O(!0),P(I,null,D(R(l),e=>(O(),H(p,{key:e.value,label:e.label},null,8,[`label`]))),128))])):(O(),H(m,{key:1,modelValue:R(a),"onUpdate:modelValue":n[1]||=e=>W(a)?a.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`])),U(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:A(()=>[L(N(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):(O(),P(`div`,tt,[M(`div`,nt,[M(`label`,rt,N(t.$t(`views.sensors.exposed`)),1),M(`span`,it,N(t.$t(`views.sensors.exposed_hint`)),1)]),U(h,{modelValue:R(o),"onUpdate:modelValue":n[2]||=e=>W(o)?o.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])]))])}}});export{at as default};
@@ -1 +1 @@
1
- import{Fr as e,U as t}from"./vendor-cameraui-GaXYUHUd.js";import{Fn as n,Nn as r,an as i,br as a,cn as o,cr as s,en as c,gr as l,hn as u,jn as d,pn as f}from"./vendor-BaiDFVEr.js";import{n as p}from"./sensors-BFCE7rbx.js";import{t as m}from"./history-SuH8IHAj.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=u({__name:`SensorHistory`,props:{sensorId:{},sensorType:{}},setup(u){let C=u,{t:w,te:T}=e(),E=s([]),D=s(!0);d(async()=>{try{E.value=await p({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,s)=>{let u=t,d=m;return r(),o(`div`,h,[l(D)?(r(),o(`div`,g,[(r(),o(c,null,n(6,e=>f(u,{key:e,height:`40px`,class:`rounded-md`})),64))])):l(E).length?(r(!0),o(c,{key:1},n(l(E),(e,t)=>(r(),o(`div`,{key:t,class:`flex items-center gap-3 p-2 rounded-md border-color`},[i(`div`,_,[i(`span`,v,a(O(e.property)),1),i(`span`,y,a(A(e.timestamp)),1)]),i(`span`,b,a(k(e.value)),1)]))),128)):(r(),o(`div`,x,[f(d,{class:`w-10 h-10 text-muted`}),i(`span`,S,a(e.$t(`views.sensors.history_empty`)),1)]))])}}});export{C as default};
1
+ import{Ir as e,U as t}from"./vendor-cameraui-C6beJsya.js";import{Fn as n,Nn as r,an as i,br as a,cn as o,cr as s,en as c,gr as l,hn as u,jn as d,pn as f}from"./vendor-BaiDFVEr.js";import{n as p}from"./sensors-MIbrTUSa.js";import{t as m}from"./history-SuH8IHAj.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=u({__name:`SensorHistory`,props:{sensorId:{},sensorType:{}},setup(u){let C=u,{t:w,te:T}=e(),E=s([]),D=s(!0);d(async()=>{try{E.value=await p({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,s)=>{let u=t,d=m;return r(),o(`div`,h,[l(D)?(r(),o(`div`,g,[(r(),o(c,null,n(6,e=>f(u,{key:e,height:`40px`,class:`rounded-md`})),64))])):l(E).length?(r(!0),o(c,{key:1},n(l(E),(e,t)=>(r(),o(`div`,{key:t,class:`flex items-center gap-3 p-2 rounded-md border-color`},[i(`div`,_,[i(`span`,v,a(O(e.property)),1),i(`span`,y,a(A(e.timestamp)),1)]),i(`span`,b,a(k(e.value)),1)]))),128)):(r(),o(`div`,x,[f(d,{class:`w-10 h-10 text-muted`}),i(`span`,S,a(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-CZyv_BYp.js","./vendor-cameraui-C6beJsya.js","./rolldown-runtime-C0FnF6B9.js","./vendor-BaiDFVEr.js","./api-1K2Gzz8B.js","./useElectron-CtslU_0f.js","./vendor-zod-Dbq0fBXY.js","./types-BTVMzSuj.js","./lightbulb-outline-ClK17CO6.js","./vendor-core-_ft7qIgH.js","./vendor-primevue-DfyAPSov.js","./vendor-dnd-ChrDrMuz.js","./close-BNAWPz0y.js","./vendor-draggabilly-DSeIE_bQ.js","./api-Bj4QRftG.css","./CuiLightControl-CCwkaMEn.js","./bell-ring-DSX81yd4.js","./home-CUykMSBW.js","./cube-scan-DOe6W9mW.js","./CuiLightControl-DFrZm_sv.css","./sensorIcons-r5wmAxeD.js","./SensorEdit-ono85O3c.css","./SensorHistory-Mr03IqiL.js","./sensors-MIbrTUSa.js","./history-SuH8IHAj.js","./VirtualSensorCreate-B3bwlAJz.js"])))=>i.map(i=>d[i]);
2
+ import{Ft as e,H as t,Ir as n,L as ee,Lt as te,M as ne,Mr as r,Vt as re,dt as ie,jt as ae}from"./vendor-cameraui-C6beJsya.js";import{B as oe,Cn as i,En as se,Gn as ce,I as le,L as ue,Pn as de,Tn as fe,_n as pe,_t as me,cn as he,ct as a,hn as ge,mr as _e,st as ve,wn as ye,z as be,zn as xe}from"./api-1K2Gzz8B.js";import{$t as o,Fn as Se,Gn as Ce,Nn as s,Rt as c,Xn as l,Zn as u,_r as d,an as f,br as p,cn as m,cr as h,en as g,gr as _,hn as v,in as y,ir as b,on as x,pn as S,rr as we,sn as C,yr as w,zn as Te}from"./vendor-BaiDFVEr.js";import{p as T}from"./vendor-core-_ft7qIgH.js";import{F as Ee,P as De,S as Oe,T as ke}from"./vendor-primevue-DfyAPSov.js";import{t as Ae}from"./close-BNAWPz0y.js";import{n as je,t as Me}from"./eye-off-CaRq7Ks2.js";import{t as E}from"./sensors-MIbrTUSa.js";import{t as Ne}from"./trash-can-outline-DLKniIWM.js";import{t as Pe}from"./CuiDataTable-DBNU5MJ_.js";import{t as Fe}from"./history-SuH8IHAj.js";import{t as Ie}from"./search-BZkSqZO5.js";import{n as Le,t as Re}from"./sensorIcons-r5wmAxeD.js";import{t as ze}from"./back-filled-DcBDBvvP.js";import{t as Be}from"./plus-CA5o30dE.js";import{t as Ve}from"./settings-BUEZ5iRE.js";import{t as He}from"./table-2-line-B-z0xvbG.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return s(),m(`svg`,D,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M2 5.27L3.28 4L20 20.72L18.73 22l-3.08-3.08c-1.15.38-2.37.58-3.65.58c-5 0-9.27-3.11-11-7.5c.69-1.76 1.79-3.31 3.19-4.54zM12 9a3 3 0 0 1 3 3a3 3 0 0 1-.17 1L11 9.17A3 3 0 0 1 12 9m0-4.5c5 0 9.27 3.11 11 7.5a11.8 11.8 0 0 1-4 5.19l-1.42-1.43A9.86 9.86 0 0 0 20.82 12A9.82 9.82 0 0 0 12 6.5c-1.09 0-2.16.18-3.16.5L7.3 5.47c1.44-.62 3.03-.97 4.7-.97M3.18 12A9.82 9.82 0 0 0 12 17.5c.69 0 1.37-.07 2-.21L11.72 15A3.064 3.064 0 0 1 9 12.28L5.6 8.87c-.99.85-1.82 1.91-2.42 3.13`},null,-1)]])}var Ue=b({name:`mdi-eye-off-outline`,render:O}),We={class:`flex flex-col`},Ge={key:0,class:`page-title`},Ke={class:`flex gap-2 mb-4`},qe={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-16`},Je={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-20`},Ye={class:`text-muted text-sm`},Xe={key:3,class:`flex min-h-0 flex-col`},Ze=[`onClick`],Qe={class:`flex flex-col gap-3`},$e={class:`flex items-center gap-3 min-w-0`},et={class:`flex flex-col min-w-0 flex-1`},tt={class:`flex items-center gap-2 min-w-0`},nt={class:`font-bold text-color truncate`},rt={class:`text-xs text-muted truncate`},it={class:`flex items-center gap-1 min-w-0`},at={class:`flex items-center gap-1 ml-auto`},ot={key:1,class:`shrink-0`},st={key:0,class:`flex items-center justify-end mt-4`},ct={key:4,class:`flex min-h-0 flex-col`},lt={class:`flex items-center justify-center`},ut={class:`flex flex-col min-w-0`},dt={class:`flex items-center gap-2 min-w-0`},ft={class:`font-bold text-color truncate`},pt={key:0,class:`text-xs text-muted truncate`},mt={class:`flex items-center justify-end gap-1`},ht={key:2,class:`shrink-0`},gt={key:0,class:`flex items-center justify-end mt-4`},k=i(v({__name:`Sensors`,setup(i){let v=a(()=>c(()=>import(`./SensorEdit-CZyv_BYp.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]),import.meta.url)),b=a(()=>c(()=>import(`./SensorHistory-Mr03IqiL.js`),__vite__mapDeps([22,1,2,3,23,4,5,6,7,8,9,10,11,12,13,14,24]),import.meta.url)),D=a(()=>c(()=>import(`./VirtualSensorCreate-B3bwlAJz.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)),O={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 6px rgba(251, 146, 60, 0.6))`},k=new Set([r.Motion,r.Object,r.Audio,r.Face,r.LicensePlate,r.Classifier,r.Contact,r.Occupancy,r.Smoke,r.Leak,r.Gas,r.CarbonMonoxide,r.Heat,r.Cold,r.Vibration,r.Tamper,r.Problem,r.Power]),A=new E,j=new me,M=ve(),N=_e(),{t:P}=n(),{smBreakpoint:F}=se(),I=de(),{uiSettings:L}=T(I),{sensors:R}=ie(),{data:_t,isBusy:vt}=A.getSensorsQuery(),{data:yt}=j.getCamerasQuery({page:1,pageSize:-1}),{mutateAsync:bt,isPending:xt}=A.createVirtualSensorQuery(),{mutateAsync:St}=A.patchSensorQuery(),{mutateAsync:Ct,isPending:wt}=A.deleteSensorQuery(),{mutateAsync:Tt}=A.bulkDeleteSensorsQuery(),{mutateAsync:Et}=A.bulkPatchSensorsQuery(),Dt={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}},datatable:{class:`z-0`}},Ot=Ce(`menuRef`),z=h(``),B=h(!1),V=y(()=>ge(void 0,`admin`)),H=y(()=>_t.value??[]),kt=y(()=>H.value.filter(e=>e.assignmentLocked).length),At=y(()=>[{key:`hideCameraBound`,label:P(`views.sensors.hide_camera_bound`),description:P(`views.sensors.hide_camera_bound_hint`),badge:kt.value?String(kt.value):void 0,toggle:!0,toggleState:L.value.sensors.hideCameraBound,onClick:()=>L.value.sensors.hideCameraBound=!L.value.sensors.hideCameraBound}]),jt=y(()=>(yt.value?.result??[]).map(e=>({label:e.name,value:e._id}))),U=y(()=>{let e=z.value.toLowerCase().trim();return H.value.map(e=>({sensor:e,label:e.displayName||e.name,typeLabel:P(`components.camera_options.sensor_type_${e.type}`),pluginLabel:e.virtual?P(`views.sensors.owner_virtual`):e.pluginName,assignedLabel:e.assignedCameraIds.map(e=>jt.value.find(t=>t.value===e)?.label).filter(Boolean).join(`, `)})).filter(e=>!L.value.sensors.hideCameraBound||!e.sensor.assignmentLocked).filter(t=>!e||[t.label,t.typeLabel,t.pluginLabel,t.assignedLabel].some(t=>t.toLowerCase().includes(e))).sort((e,t)=>e.label.localeCompare(t.label))}),W=y(()=>B.value?U.value:U.value.filter(e=>!e.sensor.hidden)),G=y(()=>U.value.filter(e=>e.sensor.hidden).length),K=y(()=>L.value.sensors.view),Mt=y(()=>new Map(R.value.map(e=>[e.id,e]))),{selectionMode:q,selectedIds:Nt,selectedItems:J,allSelected:Pt,bulkBusy:Y,enterSelectionMode:Ft,exitSelectionMode:It,toggleSelectAll:Lt,toggleSelection:Rt}=le(()=>W.value,e=>e.sensor.id),zt=y(()=>J.value.filter(e=>Q(e.sensor)));function Bt(){L.value.sensors.view=K.value===`cards`?`table`:`cards`}function X(e){let t=Mt.value.get(e.id),n=n=>t?t.getProperty(n):e.properties?.[n];switch(e.type){case r.Light:case r.Switch:return!!n(`on`);case r.Siren:return!!n(`active`);case r.Doorbell:return!!n(`ring`);case r.Garage:case r.Lock:return n(`currentState`)===0;case r.SecuritySystem:return n(`currentState`)===4;case r.Battery:return!!n(`low`);default:return k.has(String(e.type))&&!!n(`detected`)}}function Z(e){return e.sensor.hidden?`opacity-50`:``}function Q(e){return e.virtual||!e.connected}function Vt(e){if(q.value){Rt(e.sensor.id);return}!V.value||e.sensor.hidden||M.openComponentDialog(v,{data:{title:e.label,confirmText:P(`components.form.button.save`),contentProps:{sensor:e.sensor,cameraOptions:jt.value}},onConfirm:async t=>{t&&await St({id:e.sensor.id,data:t})}})}function Ht(e){M.openComponentDialog(b,{data:{title:`${e.displayName||e.name} · ${P(`views.sensors.history`)}`,hideConfirmButton:!0,contentProps:{sensorId:e.id,sensorType:String(e.type)}}})}async function $(e,t){await St({id:e.id,data:{hidden:t}})}function Ut(e,t,n){t.length&&N.add({severity:`error`,summary:P(`views.sensors.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&N.add({severity:`success`,detail:P(n,{count:e}),life:5e3})}async function Wt(e){let t=[...J.value];Y.value=!0;try{let{succeeded:n,failed:ee}=await Et({ids:t.map(e=>e.sensor.id),data:{hidden:e}}),te=t.filter(e=>ee.some(t=>t.id===e.sensor.id)).map(e=>e.label);It(),Ut(n.length,te,e?`views.sensors.hide_selected_done`:`views.sensors.unhide_selected_done`)}catch(e){N.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{Y.value=!1}}function Gt(){let e=[...zt.value];M.openTextDialog({data:{title:P(`components.dialog.title.confirm`),contentText:P(`views.sensors.delete_selected_confirm`,{count:e.length}),confirmText:P(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Y.value=!0;try{let{skipped:t}=await Tt({ids:e.map(e=>e.sensor.id)}),n=e.filter(e=>t.includes(e.sensor.id)).map(e=>e.label);It(),Ut(e.length-n.length,n,`views.sensors.delete_selected_done`)}finally{Y.value=!1}}})}function Kt(){M.openComponentDialog(D,{data:{title:P(`views.sensors.create_virtual`),confirmText:P(`components.form.button.save`),loading:xt,contentProps:{}},onConfirm:async e=>{e&&await bt({data:e})}})}function qt(e){M.openTextDialog({data:{title:P(`views.sensors.delete`),contentText:P(`views.sensors.delete_confirm`),confirmText:P(`components.form.button.remove`),loading:wt,confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await Ct({id:e.id})}})}return(n,r)=>{let ie=ze,i=e,se=oe,le=Ie,de=De,me=ne,a=Ee,ge=Ve,_e=he,ve=ae,Ce=ce,c=pe,h=Ue,v=te,y=Le,b=Fe,T=je,E=Me,D=Ne,k=t,A=ee,j=Oe,M=ke,N=Pe,I=ye,L=fe,R=re;return s(),m(`div`,We,[_(F)?C(``,!0):(s(),m(`h1`,Ge,p(_(P)(`views.sensors.title`)),1)),S(se,{position:`left`},{default:l(()=>[S(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:l(()=>[S(ie,{class:`w-6 h-6`})]),_:1})]),_:1}),f(`div`,Ke,[S(a,{class:`flex-1`},{default:l(()=>[S(de,null,{default:l(()=>[S(le,{class:`w-4 h-4`})]),_:1}),S(me,{modelValue:_(z),"onUpdate:modelValue":r[1]||=e=>we(z)?z.value=e:null,placeholder:_(P)(`views.sensors.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),u((s(),x(i,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:r[2]||=e=>_(Ot)?.toggleMenu(e)},{icon:l(()=>[S(ge,{class:`w-4.5 h-4.5`})]),_:1})),[[R,{value:_(P)(`views.sensors.settings`)},void 0,{left:!0}]]),S(_e,{ref_key:`menuRef`,ref:Ot,items:_(At),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])]),_(vt)?(s(),m(`div`,qe,[S(ve,{"stroke-width":`5`,class:`w-[30px] h-[30px]`})])):_(U).length?_(K)===`cards`?(s(),m(`div`,Xe,[f(`div`,{class:`grid w-full gap-2`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${_(F)?`100%`:`300px`}, 1fr))`})},[(s(!0),m(g,null,Se(_(W),e=>(s(),m(`div`,{key:e.sensor.id,class:`relative`},[_(q)?(s(),m(`div`,{key:0,class:`absolute inset-0 z-4 cursor-pointer`,onClick:t=>_(Rt)(e.sensor.id)},null,8,Ze)):C(``,!0),S(k,{class:d([`cui-card h-full`,[Z(e),{"cursor-pointer":_(V)&&!e.sensor.hidden}]]),onClick:t=>Vt(e)},{content:l(()=>[f(`div`,Qe,[f(`div`,$e,[_(q)?(s(),m(`div`,{key:0,class:d([`w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0`,_(Nt).has(e.sensor.id)?`bg-primary border-primary`:`border-color`])},[_(Nt).has(e.sensor.id)?(s(),x(c,{key:0,class:`w-4 h-4 text-white`})):C(``,!0)],2)):C(``,!0),(s(),x(Te(_(Re)(e.sensor.type)),{class:d([`w-6 h-6 shrink-0 transition-colors`,{"text-muted":!X(e.sensor)}]),style:w(X(e.sensor)?O:void 0)},null,8,[`class`,`style`])),f(`div`,et,[f(`div`,tt,[f(`span`,nt,p(e.label),1),e.sensor.exposed?C(``,!0):u((s(),x(h,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[R,_(P)(`views.sensors.not_exposed`)]])]),f(`span`,rt,p(e.typeLabel)+` · `+p(e.pluginLabel),1)]),u(S(v,{class:`shrink-0`,style:w({background:e.sensor.connected?`green`:`gray`})},null,8,[`style`]),[[R,{value:e.sensor.connected?_(P)(`views.sensors.connected`):_(P)(`views.sensors.disconnected`)}]])]),f(`div`,it,[e.sensor.assignmentLocked?u((s(),x(y,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[R,_(P)(`views.sensors.assigned_cameras_locked_hint`)]]):C(``,!0),f(`span`,{class:d([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},p(e.assignedLabel||_(P)(`views.sensors.unassigned`)),3),f(`div`,at,[u((s(),x(i,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:o(t=>Ht(e.sensor),[`stop`])},{icon:l(()=>[S(b,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[R,_(P)(`views.sensors.history`),void 0,{left:!0}]]),_(V)?u((s(),x(i,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:o(t=>$(e.sensor,!e.sensor.hidden),[`stop`])},{icon:l(()=>[e.sensor.hidden?(s(),x(T,{key:0,width:`100%`,height:`100%`,class:`text-muted`})):(s(),x(E,{key:1,width:`100%`,height:`100%`,class:`text-muted`}))]),_:2},1032,[`onClick`])),[[R,e.sensor.hidden?_(P)(`views.sensors.unhide`):_(P)(`views.sensors.hide`),void 0,{left:!0}]]):C(``,!0),_(V)?u((s(),m(`span`,ot,[S(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!Q(e.sensor),onClick:o(t=>qt(e.sensor),[`stop`])},{icon:l(()=>[S(D,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[R,Q(e.sensor)?_(P)(`views.sensors.delete`):_(P)(`views.sensors.delete_connected`),void 0,{left:!0}]]):C(``,!0)])])])]),_:2},1032,[`class`,`onClick`])]))),128))],4),_(G)>0?(s(),m(`div`,st,[S(i,{severity:`secondary`,class:`cui-button-medium`,label:_(B)?_(P)(`views.sensors.hide_hidden`):`${_(P)(`views.sensors.show_hidden`)} (${_(G)})`,onClick:r[3]||=e=>B.value=!_(B)},null,8,[`label`])])):C(``,!0)])):(s(),m(`div`,ct,[S(k,{class:`cui-card`},{content:l(()=>[S(N,{value:_(W),"striped-rows":``,pt:Dt,class:`w-full`,onRowClick:r[5]||=e=>Vt(e.data)},{default:l(()=>[_(q)?(s(),x(j,{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:l(({data:e})=>[S(A,{"model-value":_(Nt).has(e.sensor.id),binary:``,size:`small`,onClick:r[4]||=o(()=>{},[`stop`]),"onUpdate:modelValue":t=>_(Rt)(e.sensor.id)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):C(``,!0),S(j,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:l(({data:e})=>[f(`div`,lt,[u(S(v,{style:w({background:e.sensor.connected?`green`:`gray`})},null,8,[`style`]),[[R,{value:e.sensor.connected?_(P)(`views.sensors.connected`):_(P)(`views.sensors.disconnected`)}]])])]),_:1}),S(j,{field:`label`,header:_(P)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-full min-w-[180px] max-w-0`},{body:l(({data:e})=>[f(`div`,{class:d([`flex items-center gap-2 min-w-0`,Z(e)])},[(s(),x(Te(_(Re)(e.sensor.type)),{class:d([`w-5 h-5 shrink-0 transition-colors`,{"text-muted":!X(e.sensor)}]),style:w(X(e.sensor)?O:void 0)},null,8,[`class`,`style`])),f(`div`,ut,[f(`div`,dt,[f(`span`,ft,p(e.label),1),e.sensor.exposed?C(``,!0):u((s(),x(h,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[R,_(P)(`views.sensors.not_exposed`)]])]),_(F)?(s(),m(`span`,pt,p(e.typeLabel)+` · `+p(e.pluginLabel),1)):C(``,!0)])],2)]),_:1},8,[`header`]),_(F)?C(``,!0):(s(),x(j,{key:1,field:`typeLabel`,header:_(P)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:l(({data:e})=>[f(`span`,{class:d([`text-xs text-muted whitespace-nowrap`,Z(e)])},p(e.typeLabel),3)]),_:1},8,[`header`])),_(F)?C(``,!0):(s(),x(j,{key:2,field:`pluginLabel`,header:_(P)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:l(({data:e})=>[S(M,{label:e.pluginLabel,class:d([`text-xs whitespace-nowrap`,Z(e)])},null,8,[`label`,`class`])]),_:1},8,[`header`])),S(j,{field:`assignedLabel`,header:_(P)(`views.sensors.assigned_cameras`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 min-w-[140px]`},{body:l(({data:e})=>[f(`div`,{class:d([`flex items-center gap-1 min-w-0`,Z(e)])},[e.sensor.assignmentLocked?u((s(),x(y,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[R,_(P)(`views.sensors.assigned_cameras_locked_hint`)]]):C(``,!0),f(`span`,{class:d([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},p(e.assignedLabel||_(P)(`views.sensors.unassigned`)),3)],2)]),_:1},8,[`header`]),S(j,{header:``,"header-class":`p-2 pr-4 w-28`,class:`p-2 pr-4 w-28`},{body:l(({data:e})=>[f(`div`,mt,[u((s(),x(i,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:o(t=>Ht(e.sensor),[`stop`])},{icon:l(()=>[S(b,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[R,_(P)(`views.sensors.history`),void 0,{left:!0}]]),_(V)&&!e.sensor.hidden?u((s(),x(i,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:o(t=>$(e.sensor,!0),[`stop`])},{icon:l(()=>[S(E,{width:`100%`,height:`100%`,class:`text-muted`})]),_:1},8,[`onClick`])),[[R,_(P)(`views.sensors.hide`),void 0,{left:!0}]]):_(V)?u((s(),x(i,{key:1,text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:o(t=>$(e.sensor,!1),[`stop`])},{icon:l(()=>[S(T,{width:`100%`,height:`100%`,class:`text-muted`})]),_:1},8,[`onClick`])),[[R,_(P)(`views.sensors.unhide`),void 0,{left:!0}]]):C(``,!0),_(V)?u((s(),m(`span`,ht,[S(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!Q(e.sensor),onClick:o(t=>qt(e.sensor),[`stop`])},{icon:l(()=>[S(D,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[R,Q(e.sensor)?_(P)(`views.sensors.delete`):_(P)(`views.sensors.delete_connected`),void 0,{left:!0}]]):C(``,!0)])]),_:1})]),_:1},8,[`value`]),_(G)>0?(s(),m(`div`,gt,[S(i,{severity:`secondary`,class:`cui-button-medium`,label:_(B)?_(P)(`views.sensors.hide_hidden`):`${_(P)(`views.sensors.show_hidden`)} (${_(G)})`,onClick:r[6]||=e=>B.value=!_(B)},null,8,[`label`])])):C(``,!0)]),_:1})])):(s(),m(`div`,Je,[S(Ce,{class:`w-12 h-12 text-muted`}),f(`span`,Ye,p(_(H).length?_(P)(`views.sensors.no_matches`):_(P)(`views.sensors.no_sensors`)),1)])),_(V)?(s(),x(L,{key:5,"force-visible":_(q)},{default:l(()=>[_(q)?(s(),m(g,{key:1},[S(I,{grouped:``,"tooltip-props":{value:n.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:_(Ae),"icon-props":{width:`100%`,height:`100%`},onClick:_(It)},null,8,[`tooltip-props`,`icon`,`onClick`]),S(I,{grouped:``,"tooltip-props":{value:n.$t(`components.form.tooltip.select_all`)},"button-props":{severity:_(Pt)?`primary`:`secondary`},icon:_(be),"icon-props":{width:`100%`,height:`100%`},onClick:_(Lt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),S(I,{grouped:``,"tooltip-props":{value:_(P)(`views.sensors.hide_selected`)},"button-props":{severity:`secondary`,disabled:!_(J).length||_(Y)},icon:_(Me),"icon-props":{width:`100%`,height:`100%`},onClick:r[7]||=e=>Wt(!0)},null,8,[`tooltip-props`,`button-props`,`icon`]),S(I,{grouped:``,"tooltip-props":{value:_(P)(`views.sensors.unhide_selected`)},"button-props":{severity:`secondary`,disabled:!_(J).length||_(Y)},icon:_(je),"icon-props":{width:`100%`,height:`100%`},onClick:r[8]||=e=>Wt(!1)},null,8,[`tooltip-props`,`button-props`,`icon`]),S(I,{grouped:``,"tooltip-props":{value:_(P)(`views.sensors.delete_selected`)},"button-props":{severity:`danger`,disabled:!_(zt).length||_(Y)},icon:_(Ne),"icon-props":{width:`100%`,height:`100%`},onClick:Gt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(s(),m(g,{key:0},[_(W).length?(s(),x(I,{key:0,grouped:``,"tooltip-props":{value:_(P)(`views.sensors.select`)},"button-props":{severity:`secondary`},icon:_(ue),"icon-props":{width:`100%`,height:`100%`},onClick:_(Ft)},null,8,[`tooltip-props`,`icon`,`onClick`])):C(``,!0),S(I,{grouped:``,"tooltip-props":{value:_(K)===`cards`?_(P)(`views.sensors.view_table`):_(P)(`views.sensors.view_cards`)},"button-props":{severity:`secondary`},icon:_(K)===`cards`?_(He):_(xe),"icon-props":{width:`100%`,height:`100%`},onClick:Bt},null,8,[`tooltip-props`,`icon`]),S(I,{grouped:``,"tooltip-props":{value:_(P)(`views.sensors.create_virtual`)},"button-props":{class:`text-white`},icon:_(Be),"icon-props":{width:`30px`,height:`30px`},onClick:Kt},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`])):C(``,!0)])}}}),[[`__scopeId`,`data-v-d07d5dd5`]]);export{k as default};
@@ -1 +1 @@
1
- import{Ft as e,Ur as t,Yr as n,ci as r,jt as i,pi as a,si as o,wi as s}from"./vendor-cameraui-GaXYUHUd.js";import{B as c,C as l,Cn as u,Dn as d,En as f,Mn as p,Nn as m,On as h,Pn as g,b as _,hn as v,jn as y}from"./api-CvO7u24f.js";import{Fn as b,Gn as x,Ln as S,Nn as C,Tn as w,Xn as T,_r as E,an as D,br as O,cn as k,cr as A,en as j,gr as M,hn as N,in as P,jn as F,mr as I,on as L,pn as R,qn as z,sn as B,yr as V,zn as ee}from"./vendor-BaiDFVEr.js";import{p as te,u as H}from"./vendor-core-BNfYBWH3.js";import{t as U}from"./back-filled-DcBDBvvP.js";import{n as W,t as ne}from"./round-alt-arrow-left-bold-BxX4ufd0.js";var G={},K={class:`w-full h-full flex items-center justify-center`};function q(e,t){let n=i;return C(),k(`div`,K,[R(n,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])}var re=u(G,[[`render`,q]]),J={key:0},Y={key:1},X={class:`overflow-hidden w-full`},Z={class:`ml-2 flex flex-row items-center justify-between`},Q={class:`text-start flex-1`},ie={class:`text-sm font-bold max-w-100 truncate`},ae={key:0,class:`text-sm text-muted font-normal`},oe=u(N({__name:`CuiSubNavItem`,props:{label:{},to:{},description:{},icon:{},activeIcon:{}},setup(t){let{icon:n,activeIcon:r,label:i,description:a,to:o}=I(t);return(t,s)=>{let c=e,l=S(`RouterLink`);return C(),L(l,{to:M(o)},{default:T(({isExactActive:e})=>[R(c,{text:``,severity:`secondary`,class:E([`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:T(()=>[M(n)&&!e||!M(r)?(C(),k(`div`,J,[R(M(n),{class:`w-[24px] h-[24px]`})])):M(r)&&e?(C(),k(`div`,Y,[R(M(r),{class:`w-[24px] h-[24px]`})])):B(``,!0),D(`div`,X,[D(`div`,Z,[D(`div`,Q,[D(`div`,ie,O(M(i)),1),M(a)?(C(),k(`div`,ae,O(M(a)),1)):B(``,!0)])])])]),_:2},1032,[`class`])]),_:1},8,[`to`])}}}),[[`__scopeId`,`data-v-a5399c04`]]),$={CLOSED:0,EXPANDED:288},se=u(N({__name:`CuiSubNavbar`,setup(e,{expose:n}){let i=H(),{bus:a}=y(),{xlBreakpoint:o,mdBreakpoint:c}=f(),{bottombarHeight:l,subbarState:u,navbarState:p,topbarHeight:m}=d(),h=x(`subnavbarRef`),g=A(`closed`),S=P(()=>o.value?`opened`:g.value),T=P(()=>S.value===`closed`?$.CLOSED:$.EXPANDED),E=P(()=>_.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&v(e))),N=P(()=>[`personal`,`system`].map(e=>({key:e,routes:E.value.filter(t=>(t.meta.settingsBar.group??`personal`)===e)})).filter(e=>e.routes.length>0));function I(){g.value=`closed`,a.emit({subbarState:`closed`})}function R(){w(()=>{let e=h.value?.querySelector(`.subnavitem-button.active`);e&&e.scrollIntoView({block:`center`,behavior:`smooth`})})}let B=s(R,100);return t(h,e=>{let t=e.target,n=t.closest(`#menu-icon`),r=t.closest(`#submenu-icon`),i=t.closest(`#navbar-icon`);!n&&!r&&!i&&I()}),r(h,()=>{B()}),z(u,e=>{e&&e!==g.value&&(g.value=e)},{immediate:!0}),z(i.currentRoute,(e,t)=>{e.path!==t.path&&I()}),z(p,e=>{e===`opened`&&c.value&&I()}),F(()=>{R()}),n({subnavbarState:S}),(e,t)=>{let n=oe;return C(),k(`nav`,{ref_key:`subnavbarRef`,ref:h,class:`cui-subnavbar fixed transition-all duration-200 overflow-x-hidden overflow-y-scroll md:!pl-0 pl-safe pb-safe w-full h-full flex flex-col`,style:V({width:`${M(T)}px`,borderRightWidth:M(S)===`opened`?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${M(l)}px + ${M(m)}px)`})},[(C(!0),k(j,null,b(M(N),t=>(C(),k(j,{key:t.key},[D(`span`,{class:`shrink-0 pl-4 pt-4 pb-1 text-[11px] font-semibold uppercase tracking-widest text-muted`,style:V({width:`${M($).EXPANDED}px`})},O(e.$t(`views.settings.section_${t.key}`)),5),(C(!0),k(j,null,b(t.routes,t=>(C(),L(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:V({width:`${M($).EXPANDED}px`})},null,8,[`icon`,`active-icon`,`to`,`label`,`description`,`style`]))),128))],64))),128))],4)}}}),[[`__scopeId`,`data-v-ed100a45`]]),ce={class:`font-semibold text-xl truncate`},le={class:`w-full h-full relative`},ue={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-2`},de={class:`relative z-2 page-title !m-0`},fe=N({__name:`Settings`,setup(t){let r=H(),i=p(),{bus:s}=y(),{isTouch:u}=h(),{mdBreakpoint:d,xlBreakpoint:b,smBreakpoint:w}=f(),j=l(),{routerLoading:N}=te(j),F=[`personal`,`system`].flatMap(e=>_.find(e=>e.name===`Settings`).children.filter(t=>v(t)&&t.meta?.settingsBar&&(t.meta.settingsBar.group??`personal`)===e)),I=x(`subnavbarRef`),G=x(`containerRef`),K=A(!0),q=P(()=>r.currentRoute.value.path===`/settings`),{isSwiping:J,direction:Y}=u.value?a(G,{threshold:50,onSwipeStart(e){let t=e.target;([`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`].includes(t.tagName)||t.closest(`.p-datatable`))&&(K.value=!1)},onSwipeEnd(){K.value=!0}}):o(G,{threshold:50,onSwipeStart(e){let t=e.target;([`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`].includes(t.tagName)||t.closest(`.p-datatable`))&&(K.value=!1)},onSwipeEnd(){K.value=!0}}),X=n(I),Z=P(()=>I.value?.subnavbarState??`closed`);function Q(){let e=Z.value===`opened`?`closed`:`opened`;s.emit({subbarState:e})}return z(w,e=>{if(!e&&q.value){let e=g().uiSettings.interface.selectedSettingsView;r.replace(`/settings/${m.includes(e)?e:`account`}`)}}),z([J,Y],()=>{if(J.value&&K.value&&!q.value){let e=F.findIndex(e=>e.path===r.currentRoute.value.path.split(`/settings/`)[1]);switch(Y.value){case`right`:{let t=F[e-1];t&&r.push({path:t.path})}break;case`left`:{let t=F[e+1];t&&r.push({path:t.path})}}}}),(t,n)=>{let r=c,a=U,o=e,s=se,l=ne,u=W,f=re,p=S(`RouterView`);return C(),k(`div`,null,[R(r,{position:`center`},{default:T(()=>[D(`span`,ce,O(t.$t(`views.settings.title_${t.$route.meta?.name}`)),1)]),_:1}),R(r,{position:`left`},{default:T(()=>[R(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(M(q)?`/menu`:`/settings`)},{icon:T(()=>[R(a,{class:`w-6 h-6`})]),_:1})]),_:1}),M(w)?B(``,!0):(C(),L(s,{key:0,ref_key:`subnavbarRef`,ref:I,class:`z-4 min-w-0`},null,512)),D(`main`,{class:`relative w-full h-full`,style:V({paddingLeft:M(d)?`0px`:`${M(X).width.value}px`})},[D(`div`,le,[M(w)?B(``,!0):(C(),k(`div`,ue,[n[1]||=D(`div`,{class:`ml-2`},null,-1),M(b)?B(``,!0):(C(),L(o,{key:0,id:`submenu-icon`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Q},{icon:T(()=>[M(Z)===`opened`?(C(),L(l,{key:0,width:`100%`,height:`100%`})):(C(),L(u,{key:1,width:`100%`,height:`100%`}))]),_:1})),D(`h1`,de,O(t.$t(`views.settings.title_${t.$route.meta?.name}`)),1),n[2]||=D(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[D(`div`),D(`div`),D(`div`),D(`div`),D(`div`),D(`div`)],-1)])),D(`div`,{ref_key:`containerRef`,ref:G,class:E([`px-2 h-full w-full`,{"py-4":M(w),"pt-[calc(40px+2rem)] pb-2":!M(w)}])},[M(N)&&M(i).showRouterLoadingSub.value?(C(),L(f,{key:0,class:`w-full h-full relative overflow-x-hidden`})):(C(),L(p,{key:1},{default:T(({Component:e})=>[(C(),L(ee(e),{class:`h-full`}))]),_:1}))],2)])],4)])}}});export{fe as default};
1
+ import{Ft as e,Ti as t,Wr as n,Xr as r,ci as i,jt as a,li as o,mi as s}from"./vendor-cameraui-C6beJsya.js";import{B as c,C as l,Cn as u,Dn as d,En as f,Mn as p,Nn as m,On as h,Pn as g,b as _,hn as v,jn as y}from"./api-1K2Gzz8B.js";import{Fn as b,Gn as x,Ln as S,Nn as C,Tn as w,Xn as T,_r as E,an as D,br as O,cn as k,cr as A,en as j,gr as M,hn as N,in as P,jn as F,mr as I,on as L,pn as R,qn as z,sn as B,yr as V,zn as ee}from"./vendor-BaiDFVEr.js";import{p as te,u as H}from"./vendor-core-_ft7qIgH.js";import{t as U}from"./back-filled-DcBDBvvP.js";import{n as W,t as ne}from"./round-alt-arrow-left-bold-BxX4ufd0.js";var G={},K={class:`w-full h-full flex items-center justify-center`};function q(e,t){let n=a;return C(),k(`div`,K,[R(n,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])}var re=u(G,[[`render`,q]]),J={key:0},Y={key:1},X={class:`overflow-hidden w-full`},Z={class:`ml-2 flex flex-row items-center justify-between`},Q={class:`text-start flex-1`},ie={class:`text-sm font-bold max-w-100 truncate`},ae={key:0,class:`text-sm text-muted font-normal`},oe=u(N({__name:`CuiSubNavItem`,props:{label:{},to:{},description:{},icon:{},activeIcon:{}},setup(t){let{icon:n,activeIcon:r,label:i,description:a,to:o}=I(t);return(t,s)=>{let c=e,l=S(`RouterLink`);return C(),L(l,{to:M(o)},{default:T(({isExactActive:e})=>[R(c,{text:``,severity:`secondary`,class:E([`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:T(()=>[M(n)&&!e||!M(r)?(C(),k(`div`,J,[R(M(n),{class:`w-[24px] h-[24px]`})])):M(r)&&e?(C(),k(`div`,Y,[R(M(r),{class:`w-[24px] h-[24px]`})])):B(``,!0),D(`div`,X,[D(`div`,Z,[D(`div`,Q,[D(`div`,ie,O(M(i)),1),M(a)?(C(),k(`div`,ae,O(M(a)),1)):B(``,!0)])])])]),_:2},1032,[`class`])]),_:1},8,[`to`])}}}),[[`__scopeId`,`data-v-a5399c04`]]),$={CLOSED:0,EXPANDED:288},se=u(N({__name:`CuiSubNavbar`,setup(e,{expose:r}){let i=H(),{bus:a}=y(),{xlBreakpoint:s,mdBreakpoint:c}=f(),{bottombarHeight:l,subbarState:u,navbarState:p,topbarHeight:m}=d(),h=x(`subnavbarRef`),g=A(`closed`),S=P(()=>s.value?`opened`:g.value),T=P(()=>S.value===`closed`?$.CLOSED:$.EXPANDED),E=P(()=>_.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&v(e))),N=P(()=>[`personal`,`system`].map(e=>({key:e,routes:E.value.filter(t=>(t.meta.settingsBar.group??`personal`)===e)})).filter(e=>e.routes.length>0));function I(){g.value=`closed`,a.emit({subbarState:`closed`})}function R(){w(()=>{let e=h.value?.querySelector(`.subnavitem-button.active`);e&&e.scrollIntoView({block:`center`,behavior:`smooth`})})}let B=t(R,100);return n(h,e=>{let t=e.target,n=t.closest(`#menu-icon`),r=t.closest(`#submenu-icon`),i=t.closest(`#navbar-icon`);!n&&!r&&!i&&I()}),o(h,()=>{B()}),z(u,e=>{e&&e!==g.value&&(g.value=e)},{immediate:!0}),z(i.currentRoute,(e,t)=>{e.path!==t.path&&I()}),z(p,e=>{e===`opened`&&c.value&&I()}),F(()=>{R()}),r({subnavbarState:S}),(e,t)=>{let n=oe;return C(),k(`nav`,{ref_key:`subnavbarRef`,ref:h,class:`cui-subnavbar fixed transition-all duration-200 overflow-x-hidden overflow-y-scroll md:!pl-0 pl-safe pb-safe w-full h-full flex flex-col`,style:V({width:`${M(T)}px`,borderRightWidth:M(S)===`opened`?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${M(l)}px + ${M(m)}px)`})},[(C(!0),k(j,null,b(M(N),t=>(C(),k(j,{key:t.key},[D(`span`,{class:`shrink-0 pl-4 pt-4 pb-1 text-[11px] font-semibold uppercase tracking-widest text-muted`,style:V({width:`${M($).EXPANDED}px`})},O(e.$t(`views.settings.section_${t.key}`)),5),(C(!0),k(j,null,b(t.routes,t=>(C(),L(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:V({width:`${M($).EXPANDED}px`})},null,8,[`icon`,`active-icon`,`to`,`label`,`description`,`style`]))),128))],64))),128))],4)}}}),[[`__scopeId`,`data-v-ed100a45`]]),ce={class:`font-semibold text-xl truncate`},le={class:`w-full h-full relative`},ue={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-2`},de={class:`relative z-2 page-title !m-0`},fe=N({__name:`Settings`,setup(t){let n=H(),a=p(),{bus:o}=y(),{isTouch:u}=h(),{mdBreakpoint:d,xlBreakpoint:b,smBreakpoint:w}=f(),j=l(),{routerLoading:N}=te(j),F=[`personal`,`system`].flatMap(e=>_.find(e=>e.name===`Settings`).children.filter(t=>v(t)&&t.meta?.settingsBar&&(t.meta.settingsBar.group??`personal`)===e)),I=x(`subnavbarRef`),G=x(`containerRef`),K=A(!0),q=P(()=>n.currentRoute.value.path===`/settings`),{isSwiping:J,direction:Y}=u.value?s(G,{threshold:50,onSwipeStart(e){let t=e.target;([`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`].includes(t.tagName)||t.closest(`.p-datatable`))&&(K.value=!1)},onSwipeEnd(){K.value=!0}}):i(G,{threshold:50,onSwipeStart(e){let t=e.target;([`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`].includes(t.tagName)||t.closest(`.p-datatable`))&&(K.value=!1)},onSwipeEnd(){K.value=!0}}),X=r(I),Z=P(()=>I.value?.subnavbarState??`closed`);function Q(){let e=Z.value===`opened`?`closed`:`opened`;o.emit({subbarState:e})}return z(w,e=>{if(!e&&q.value){let e=g().uiSettings.interface.selectedSettingsView;n.replace(`/settings/${m.includes(e)?e:`account`}`)}}),z([J,Y],()=>{if(J.value&&K.value&&!q.value){let e=F.findIndex(e=>e.path===n.currentRoute.value.path.split(`/settings/`)[1]);switch(Y.value){case`right`:{let t=F[e-1];t&&n.push({path:t.path})}break;case`left`:{let t=F[e+1];t&&n.push({path:t.path})}}}}),(t,n)=>{let r=c,i=U,o=e,s=se,l=ne,u=W,f=re,p=S(`RouterView`);return C(),k(`div`,null,[R(r,{position:`center`},{default:T(()=>[D(`span`,ce,O(t.$t(`views.settings.title_${t.$route.meta?.name}`)),1)]),_:1}),R(r,{position:`left`},{default:T(()=>[R(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(M(q)?`/menu`:`/settings`)},{icon:T(()=>[R(i,{class:`w-6 h-6`})]),_:1})]),_:1}),M(w)?B(``,!0):(C(),L(s,{key:0,ref_key:`subnavbarRef`,ref:I,class:`z-4 min-w-0`},null,512)),D(`main`,{class:`relative w-full h-full`,style:V({paddingLeft:M(d)?`0px`:`${M(X).width.value}px`})},[D(`div`,le,[M(w)?B(``,!0):(C(),k(`div`,ue,[n[1]||=D(`div`,{class:`ml-2`},null,-1),M(b)?B(``,!0):(C(),L(o,{key:0,id:`submenu-icon`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Q},{icon:T(()=>[M(Z)===`opened`?(C(),L(l,{key:0,width:`100%`,height:`100%`})):(C(),L(u,{key:1,width:`100%`,height:`100%`}))]),_:1})),D(`h1`,de,O(t.$t(`views.settings.title_${t.$route.meta?.name}`)),1),n[2]||=D(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[D(`div`),D(`div`),D(`div`),D(`div`),D(`div`),D(`div`)],-1)])),D(`div`,{ref_key:`containerRef`,ref:G,class:E([`px-2 h-full w-full`,{"py-4":M(w),"pt-[calc(40px+2rem)] pb-2":!M(w)}])},[M(N)&&M(a).showRouterLoadingSub.value?(C(),L(f,{key:0,class:`w-full h-full relative overflow-x-hidden`})):(C(),L(p,{key:1},{default:T(({Component:e})=>[(C(),L(ee(e),{class:`h-full`}))]),_:1}))],2)])],4)])}}});export{fe as default};
@@ -1 +1 @@
1
- import{Fr as e,Ft as t,H as n,M as r,Vt as i,jt as a}from"./vendor-cameraui-GaXYUHUd.js";import{Bn as o,Cn as s,D as c,R as l,Vn as u,g as d,gt as ee,h as f,ht as te,i as p,ir as m,j as h,l as ne,ln as re,mr as g,st as ie}from"./api-CvO7u24f.js";import{Fn as ae,Gn as oe,Nn as _,Xn as v,Zn as se,an as y,b as ce,bn as b,br as x,cn as S,cr as C,dr as le,en as ue,fn as de,gr as w,hn as T,in as E,ir as D,jn as O,mr as k,on as A,pn as j,qt as M,rr as N,sn as P,v as F,wn as I,y as L,zn as fe}from"./vendor-BaiDFVEr.js";import{n as R,r as z}from"./vendor-zod-Dbq0fBXY.js";import{p as pe}from"./vendor-core-BNfYBWH3.js";import{K as me,L as he,R as ge,S as _e,a as ve,s as ye,u as be,z as xe}from"./vendor-primevue-CIRUBYsf.js";import{t as Se}from"./CuiDataTable-Ca51CpsO.js";import{t as Ce}from"./CuiQRCode-wxEwM1Sh.js";import{n as we,t as B}from"./auth-BhT4BtBc.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return _(),S(`svg`,V,[...t[0]||=[y(`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=D({name:`mdi-key`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return _(),S(`svg`,U,[...t[0]||=[y(`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=D({name:`mdi-cellphone`,render:W}),G={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function K(e,t){return _(),S(`svg`,G,[...t[0]||=[y(`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=D({name:`mdi-key-variant`,render:K}),Oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ke(e,t){return _(),S(`svg`,Oe,[...t[0]||=[y(`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=D({name:`mdi-laptop`,render:ke}),je={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Me(e,t){return _(),S(`svg`,je,[...t[0]||=[y(`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=D({name:`mdi-television`,render:Me}),Pe={class:`flex flex-col gap-6`},Fe={class:`token-box`},Ie={class:`token-value`},Le=s(T({__name:`ApiTokenCreated`,props:{token:{}},setup(n,{expose:r}){let a=n,o=g(),{t:s}=e(),{token:c}=k(a);async function l(){await p(c.value)?o.add({severity:`success`,detail:s(`components.toast.copied`),life:1500}):o.add({severity:`error`,detail:s(`components.toast.copy_failed`),life:3e3})}async function u(){}return r({onConfirm:u}),(e,n)=>{let r=xe,a=t,o=i;return _(),S(`div`,Pe,[j(r,{severity:`warn`},{default:v(()=>[de(x(e.$t(`views.settings.api_tokens.created_warning`)),1)]),_:1}),y(`div`,Fe,[y(`span`,Ie,x(w(c)),1),se((_(),A(a,{text:``,rounded:``,class:`cui-icon-md shrink-0`,onClick:l},{icon:v(()=>[j(w(te),{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=T({__name:`CreateApiToken`,props:{existingNames:{}},setup(e,{expose:t}){let n=e,i=C(``),a=E(()=>n.existingNames.includes(i.value.trim()));return t({onConfirm:async()=>{let e=i.value.trim();return!e||a.value?null:e}}),(e,t)=>{let n=r;return _(),S(`div`,Re,[y(`label`,ze,x(e.$t(`views.settings.api_tokens.name_label`)),1),j(n,{id:`apiTokenName`,modelValue:w(i),"onUpdate:modelValue":t[0]||=e=>N(i)?i.value=e:null,class:`w-full`,placeholder:e.$t(`views.settings.api_tokens.name_placeholder`),autofocus:``,invalid:w(a)},null,8,[`modelValue`,`placeholder`,`invalid`]),w(a)?(_(),S(`span`,Be,x(e.$t(`views.settings.api_tokens.name_exists`)),1)):P(``,!0)])}}}),He={class:`flex flex-col gap-6`},Ue={class:`backup-codes-grid`},We=s(T({__name:`TwoFactorBackupCodes`,props:{backupCodes:{}},setup(e,{expose:t}){let{backupCodes:n}=k(e);async function r(){}return t({onConfirm:r}),(e,t)=>{let r=xe;return _(),S(`div`,He,[j(r,{severity:`warn`},{default:v(()=>[de(x(e.$t(`views.settings.security.backup_warning`)),1)]),_:1}),y(`div`,Ue,[(_(!0),S(ue,null,ae(w(n),e=>(_(),S(`span`,{key:e,class:`backup-code`},x(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=T({__name:`TwoFactorDisable`,setup(t,{expose:n}){let r=new B,i=g(),{t:a}=e(),o=b(`dialogRefProps`),{mutateAsync:s,isPending:c}=r.disable2FAQuery(),l=C(``),u=E(()=>!!(o.loading?.value||c.value)),d=E(()=>l.value.length<6);async function ee(){if(l.value.length<6)return null;try{await s({code:l.value}),i.add({severity:`success`,detail:a(`views.settings.security.2fa_disabled_success`),life:3e3})}catch(e){return i.add({severity:`error`,detail:e,life:3e3}),null}}return n({isLoading:u,isDisabled:d,onConfirm:ee}),(e,t)=>{let n=be;return _(),S(`div`,Ge,[y(`p`,Ke,x(e.$t(`views.settings.security.disable_confirm`)),1),y(`div`,qe,[y(`label`,Je,x(e.$t(`views.settings.security.enter_code`)),1),j(n,{modelValue:w(l),"onUpdate:modelValue":t[0]||=e=>N(l)?l.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=T({__name:`TwoFactorRegenerate`,props:{onBackupCodesGenerated:{type:Function}},setup(t,{expose:n}){let r=new B,i=t,a=g(),{t:o}=e(),s=b(`dialogRefProps`),{mutateAsync:c,isPending:l}=r.regenerateBackupCodesQuery(),u=C(``),d=E(()=>!!(s.loading?.value||l.value)),ee=E(()=>u.value.length<6);async function f(){if(u.value.length<6)return null;try{let e=await c({code:u.value});a.add({severity:`success`,detail:o(`views.settings.security.backup_regenerated`),life:3e3}),i.onBackupCodesGenerated&&i.onBackupCodesGenerated(e.backupCodes)}catch(e){return a.add({severity:`error`,detail:e,life:3e3}),null}}return n({isLoading:d,isDisabled:ee,onConfirm:f}),(e,t)=>{let n=be;return _(),S(`div`,Xe,[y(`p`,Ze,x(e.$t(`views.settings.security.regenerate_confirm`)),1),y(`div`,q,[y(`label`,J,x(e.$t(`views.settings.security.enter_code`)),1),j(n,{modelValue:w(u),"onUpdate:modelValue":t[0]||=e=>N(u)?u.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=s(T({__name:`SettingsAccount`,props:{firststeps:{type:Boolean}},setup(s,{expose:ae}){let b=new B,T=s,D=ie(),V=g(),{t:H}=e(),{firststeps:U}=k(T),W=d(),{user:G}=pe(W),{data:K,isLoading:Oe}=b.toggleQueryActivator(`get2FAStatusQuery`,!U.value).get2FAStatusQuery(),{mutateAsync:ke,isPending:je}=b.setup2FAQuery(),{mutateAsync:Me,isPending:Pe}=b.enable2FAQuery(),{data:Fe,isBusy:Ie}=b.toggleQueryActivator(`listSessionsQuery`,!U.value).listSessionsQuery({page:1,pageSize:-1}),{mutateAsync:Re}=b.revokeSessionQuery(),{mutateAsync:ze}=b.revokeOtherSessionsQuery(),{data:Be,isBusy:He}=b.toggleQueryActivator(`listApiTokensQuery`,!U.value).listApiTokensQuery(),{mutateAsync:Ue,isPending:Ge}=b.createApiTokenQuery(),{mutateAsync:Ke}=b.revokeApiTokenQuery(),qe=R({password:c,passwordConfirm:z().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Je=R({username:z().min(1),password:c,passwordConfirm:z().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Xe=oe(`formRef`),Ze=oe(`passwordFormRef`),q=le(),J=C(`avatar`),Y=C(G.value?.username??``),X=C(!1),Z=C(!1),Q=C(null),$=C(``),_n=C(null),vn=C(!1),yn=C(null);C(!1);let bn=C(!1),xn=C(!1),Sn=E(()=>!1),Cn={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}}},wn=E(()=>(Fe.value??[]).filter(e=>!e.is_current).length),Tn=E(()=>!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 p(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(){D.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){D.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){D.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(){D.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(){D.openComponentDialog(Ye,{data:{title:H(`views.settings.security.disable_2fa`),confirmText:H(`views.settings.security.disable_2fa`),confirmButtonProps:{severity:`danger`},contentProps:{}}})}function Ln(){D.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){D.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 f(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 h(m()),bn.value=!1,V.add({severity:`success`,detail:H(`views.settings.biometric.cleared`),life:3e3})}finally{xn.value=!1}}}return O(()=>{Hn()}),ae({formRef:Xe}),(e,s)=>{let c=re,d=r,f=ge,p=n,m=ye,h=t,g=a,ie=Ce,ae=ee,oe=he,b=be,C=o,le=Te,T=u,E=xe,D=me,O=_e,k=l,R=Se,z=ve,pe=we,B=i;return _(),S(`div`,null,[y(`div`,$e,[w(U)?(_(),A(w(ce),{key:0,ref_key:`formRef`,ref:Xe,"validation-schema":w(Je),class:`flex flex-col w-full gap-6`},{default:v(()=>[y(`div`,et,[y(`div`,tt,[y(`label`,nt,[j(c,{src:w(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),y(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:s[0]||=e=>zn(e)},null,32)])]),y(`span`,rt,x(e.$t(`views.settings.profile`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,it,[j(w(L),{"model-value":w(G)?.username,name:`username`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:t,errors:n})=>[y(`label`,at,x(e.$t(`components.form.label.username`)),1),j(f,null,{default:v(()=>[j(d,I(t,{invalid:n.length>0,type:`text`}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`username`,class:`cui-input-error`})]),_:1})]),_:1},8,[`model-value`])])]),_:1})]),y(`div`,null,[y(`span`,ot,x(e.$t(`views.settings.password`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,st,[j(w(L),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:t,errors:n})=>[y(`label`,ct,x(e.$t(`components.form.label.new_password`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:n.length>0},t,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),j(w(L),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:t,errors:n})=>[y(`label`,lt,x(e.$t(`components.form.label.new_password_confirm`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:n.length>0},t,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1})])]),_:1})])]),_:1},8,[`validation-schema`])):(_(),S(ue,{key:1},[y(`div`,ut,[y(`div`,dt,[y(`label`,ft,[j(c,{src:w(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),y(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:s[1]||=e=>zn(e)},null,32)])]),y(`span`,pt,x(e.$t(`views.settings.profile`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,mt,[y(`div`,ht,[y(`label`,gt,x(e.$t(`components.form.label.username`)),1),j(f,null,{default:v(()=>[j(d,{modelValue:w(Y),"onUpdate:modelValue":s[2]||=e=>N(Y)?Y.value=e:null,loading:w(X),type:`text`},null,8,[`modelValue`,`loading`])]),_:1})]),y(`div`,_t,[j(h,{loading:w(X),class:`cui-button-medium`,label:e.$t(`components.form.button.update_profile`),onClick:Bn},null,8,[`loading`,`label`])])])]),_:1})]),y(`div`,null,[y(`span`,vt,x(e.$t(`views.settings.password`)),1),j(p,{class:`cui-card`},{content:v(()=>[j(w(ce),{ref_key:`passwordFormRef`,ref:Ze,"validation-schema":w(qe),class:`flex flex-col gap-6`,onSubmit:s[3]||=e=>Vn(e)},{default:v(()=>[j(w(L),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:t,errors:n})=>[y(`label`,yt,x(e.$t(`components.form.label.new_password`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:n.length>0},t,{loading:w(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),j(w(L),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:t,errors:n})=>[y(`label`,bt,x(e.$t(`components.form.label.new_password_confirm`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:n.length>0},t,{loading:w(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1}),y(`div`,xt,[j(h,{type:`submit`,loading:w(Z),class:`cui-button-medium`,label:e.$t(`components.form.button.change_password`)},null,8,[`loading`,`label`])])]),_:1},8,[`validation-schema`])]),_:1})]),y(`div`,null,[y(`span`,St,x(e.$t(`views.settings.security.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[w(Oe)?(_(),S(`div`,Ct,[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(_(),A(M,{key:1,name:`fade`,mode:`out-in`},{default:v(()=>[!w(K)?.enabled&&!w(Q)&&!w(je)?(_(),S(`div`,wt,[y(`div`,Tt,[y(`span`,Et,x(e.$t(`views.settings.security.2fa_title`)),1),y(`span`,Dt,x(e.$t(`views.settings.security.2fa_description`)),1)]),j(h,{class:`cui-button-medium ml-auto`,label:e.$t(`views.settings.security.setup_2fa`),onClick:Nn},null,8,[`label`])])):!w(K)?.enabled&&w(je)?(_(),S(`div`,Ot,[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`}),y(`span`,kt,x(e.$t(`views.settings.security.generating_qr`)),1)])):!w(K)?.enabled&&w(Q)?(_(),S(`div`,At,[y(`div`,jt,[j(ie,{value:w(Tn),size:160,"logo-size":36},null,8,[`value`]),y(`p`,Mt,x(e.$t(`views.settings.security.scan_qr`)),1)]),y(`div`,Nt,[y(`div`,Pt,[y(`label`,Ft,x(e.$t(`views.settings.security.manual_entry`)),1),j(f,null,{default:v(()=>[j(d,{"model-value":w(Q)?.secret,readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),j(oe,null,{default:v(()=>[j(ae,{"action-text":e.$t(`components.form.tooltip.copied`),icon:w(te),"button-props":{severity:`secondary`,text:!0},onAction:En},null,8,[`action-text`,`icon`])]),_:1})]),_:1})]),y(`div`,It,[y(`label`,Lt,x(e.$t(`views.settings.security.enter_code`)),1),j(b,{modelValue:w($),"onUpdate:modelValue":s[4]||=e=>N($)?$.value=e:null,length:6,"integer-only":``},null,8,[`modelValue`])]),y(`div`,Rt,[j(h,{severity:`secondary`,class:`cui-button-medium`,label:e.$t(`components.form.button.cancel`),onClick:Pn},null,8,[`label`]),j(h,{class:`cui-button-medium`,label:e.$t(`views.settings.security.enable_2fa`),loading:w(Pe),disabled:w($).length<6,onClick:Fn},null,8,[`label`,`loading`,`disabled`])])])])):(_(),S(`div`,zt,[y(`div`,Bt,[y(`div`,Vt,[j(C,{class:`w-5 h-5`})]),y(`div`,Ht,[y(`span`,Ut,x(e.$t(`views.settings.security.2fa_enabled`)),1)])]),w(K)?.backupCodesCount===void 0?P(``,!0):(_(),S(`div`,Wt,[j(le,{class:`w-4 h-4`}),y(`span`,null,x(e.$t(`views.settings.security.backup_codes_remaining`,{count:w(K).backupCodesCount})),1)])),y(`div`,Gt,[j(h,{severity:`secondary`,class:`cui-button-medium`,label:e.$t(`views.settings.security.regenerate_backup`),onClick:Ln},null,8,[`label`]),j(h,{severity:`danger`,class:`cui-button-medium`,label:e.$t(`views.settings.security.disable_2fa`),onClick:In},null,8,[`label`])])]))]),_:1}))]),_:1})]),w(Sn)?(_(),S(`div`,Kt,[y(`span`,qt,x(e.$t(`views.settings.biometric.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,Jt,[j(T,{class:`shrink-0 w-6 h-6 text-color`}),y(`div`,Yt,[y(`span`,Xt,x(e.$t(`views.settings.biometric.label`)),1),j(E,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:v(()=>[de(x(e.$t(`views.settings.biometric.description`)),1)]),_:1})]),j(D,{"model-value":w(bn),loading:w(xn),class:`ml-auto shrink-0`,"onUpdate:modelValue":Un},null,8,[`model-value`,`loading`])])]),_:1})])):P(``,!0),y(`div`,null,[y(`span`,Zt,x(e.$t(`views.settings.api_tokens.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,Qt,[y(`span`,$t,x(e.$t(`views.settings.api_tokens.info`)),1),j(R,{value:w(Be)??[],"data-key":`id`,loading:w(He),pt:Cn,"striped-rows":``,scrollable:``},{loading:v(()=>[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:v(()=>[y(`span`,en,x(e.$t(`views.settings.api_tokens.empty`)),1)]),default:v(()=>[j(O,{field:`name`,header:e.$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:v(({data:e})=>[y(`div`,tn,[j(w(De),{class:`cui-session-icon`}),y(`div`,nn,[y(`span`,rn,x(e.name),1),y(`span`,an,x(e.token_hint),1)])])]),_:1},8,[`header`]),j(O,{field:`last_seen_at`,header:e.$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:v(({data:t})=>[y(`span`,on,x(t.last_seen_at>t.created_at?w(ne)(t.last_seen_at):e.$t(`views.settings.api_tokens.never`)),1)]),_:1},8,[`header`]),j(O,{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:v(({data:t})=>[se((_(),A(h,{severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:w(yn)===t.id,onClick:e=>jn(t)},{icon:v(()=>[j(k,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:e.$t(`views.settings.api_tokens.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),y(`div`,sn,[j(h,{loading:w(Ge),class:`cui-button-medium mr-4 md:mr-0`,label:e.$t(`views.settings.api_tokens.create`),onClick:kn},null,8,[`loading`,`label`])])])]),_:1})]),y(`div`,null,[y(`span`,cn,x(e.$t(`views.settings.active_sessions.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,ln,[j(R,{value:w(Fe)??[],"data-key":`id`,loading:w(Ie),pt:Cn,"striped-rows":``,scrollable:``},{loading:v(()=>[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:v(()=>[y(`span`,un,x(e.$t(`views.settings.active_sessions.empty`)),1)]),default:v(()=>[j(O,{field:`device`,header:e.$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:v(({data:t})=>[y(`div`,dn,[(_(),A(fe(Dn(t.device.kind)),{class:`cui-session-icon`})),y(`div`,fn,[y(`div`,pn,[y(`span`,mn,x(t.device.name),1),t.is_current?(_(),A(z,{key:0,severity:`success`,value:e.$t(`views.settings.active_sessions.this_device`),class:`cui-session-tag`},null,8,[`value`])):P(``,!0)]),y(`span`,hn,x(t.device.ip||`—`),1)])])]),_:1},8,[`header`]),j(O,{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:v(({data:t})=>[t.is_current?P(``,!0):se((_(),A(h,{key:0,severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:w(_n)===t.id,onClick:e=>On(t.id)},{icon:v(()=>[j(pe,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:e.$t(`views.settings.active_sessions.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),w(wn)>0?(_(),S(`div`,gn,[j(h,{loading:w(vn),class:`cui-button-medium mr-4 md:mr-0`,label:e.$t(`views.settings.active_sessions.revoke_all_others`,{count:w(wn)}),onClick:Mn},null,8,[`loading`,`label`])])):P(``,!0)])]),_:1})])],64))])])}}}),[[`__scopeId`,`data-v-de51a7b1`]]);export{Y as t};
1
+ import{Ft as e,H as t,Ir as n,M as r,Vt as i,jt as a}from"./vendor-cameraui-C6beJsya.js";import{Bn as o,Cn as s,D as c,R as l,Vn as u,g as d,gt as ee,h as f,ht as te,i as p,ir as m,j as h,l as ne,ln as re,mr as g,st as ie}from"./api-1K2Gzz8B.js";import{Fn as ae,Gn as oe,Nn as _,Xn as v,Zn as se,an as y,b as ce,bn as b,br as x,cn as S,cr as C,dr as le,en as ue,fn as de,gr as w,hn as T,in as E,ir as D,jn as O,mr as k,on as A,pn as j,qt as M,rr as N,sn as P,v as F,wn as I,y as L,zn as fe}from"./vendor-BaiDFVEr.js";import{n as R,r as z}from"./vendor-zod-Dbq0fBXY.js";import{p as pe}from"./vendor-core-_ft7qIgH.js";import{K as me,L as he,R as ge,S as _e,a as ve,s as ye,u as be,z as xe}from"./vendor-primevue-DfyAPSov.js";import{t as Se}from"./CuiDataTable-DBNU5MJ_.js";import{t as Ce}from"./CuiQRCode-Vd-1ssJK.js";import{n as we,t as B}from"./auth-y-X5RKO6.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return _(),S(`svg`,V,[...t[0]||=[y(`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=D({name:`mdi-key`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return _(),S(`svg`,U,[...t[0]||=[y(`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=D({name:`mdi-cellphone`,render:W}),G={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function K(e,t){return _(),S(`svg`,G,[...t[0]||=[y(`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=D({name:`mdi-key-variant`,render:K}),Oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ke(e,t){return _(),S(`svg`,Oe,[...t[0]||=[y(`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=D({name:`mdi-laptop`,render:ke}),je={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Me(e,t){return _(),S(`svg`,je,[...t[0]||=[y(`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=D({name:`mdi-television`,render:Me}),Pe={class:`flex flex-col gap-6`},Fe={class:`token-box`},Ie={class:`token-value`},Le=s(T({__name:`ApiTokenCreated`,props:{token:{}},setup(t,{expose:r}){let a=t,o=g(),{t:s}=n(),{token:c}=k(a);async function l(){await p(c.value)?o.add({severity:`success`,detail:s(`components.toast.copied`),life:1500}):o.add({severity:`error`,detail:s(`components.toast.copy_failed`),life:3e3})}async function u(){}return r({onConfirm:u}),(t,n)=>{let r=xe,a=e,o=i;return _(),S(`div`,Pe,[j(r,{severity:`warn`},{default:v(()=>[de(x(t.$t(`views.settings.api_tokens.created_warning`)),1)]),_:1}),y(`div`,Fe,[y(`span`,Ie,x(w(c)),1),se((_(),A(a,{text:``,rounded:``,class:`cui-icon-md shrink-0`,onClick:l},{icon:v(()=>[j(w(te),{width:`100%`,height:`100%`})]),_:1})),[[o,{value:t.$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=T({__name:`CreateApiToken`,props:{existingNames:{}},setup(e,{expose:t}){let n=e,i=C(``),a=E(()=>n.existingNames.includes(i.value.trim()));return t({onConfirm:async()=>{let e=i.value.trim();return!e||a.value?null:e}}),(e,t)=>{let n=r;return _(),S(`div`,Re,[y(`label`,ze,x(e.$t(`views.settings.api_tokens.name_label`)),1),j(n,{id:`apiTokenName`,modelValue:w(i),"onUpdate:modelValue":t[0]||=e=>N(i)?i.value=e:null,class:`w-full`,placeholder:e.$t(`views.settings.api_tokens.name_placeholder`),autofocus:``,invalid:w(a)},null,8,[`modelValue`,`placeholder`,`invalid`]),w(a)?(_(),S(`span`,Be,x(e.$t(`views.settings.api_tokens.name_exists`)),1)):P(``,!0)])}}}),He={class:`flex flex-col gap-6`},Ue={class:`backup-codes-grid`},We=s(T({__name:`TwoFactorBackupCodes`,props:{backupCodes:{}},setup(e,{expose:t}){let{backupCodes:n}=k(e);async function r(){}return t({onConfirm:r}),(e,t)=>{let r=xe;return _(),S(`div`,He,[j(r,{severity:`warn`},{default:v(()=>[de(x(e.$t(`views.settings.security.backup_warning`)),1)]),_:1}),y(`div`,Ue,[(_(!0),S(ue,null,ae(w(n),e=>(_(),S(`span`,{key:e,class:`backup-code`},x(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=T({__name:`TwoFactorDisable`,setup(e,{expose:t}){let r=new B,i=g(),{t:a}=n(),o=b(`dialogRefProps`),{mutateAsync:s,isPending:c}=r.disable2FAQuery(),l=C(``),u=E(()=>!!(o.loading?.value||c.value)),d=E(()=>l.value.length<6);async function ee(){if(l.value.length<6)return null;try{await s({code:l.value}),i.add({severity:`success`,detail:a(`views.settings.security.2fa_disabled_success`),life:3e3})}catch(e){return i.add({severity:`error`,detail:e,life:3e3}),null}}return t({isLoading:u,isDisabled:d,onConfirm:ee}),(e,t)=>{let n=be;return _(),S(`div`,Ge,[y(`p`,Ke,x(e.$t(`views.settings.security.disable_confirm`)),1),y(`div`,qe,[y(`label`,Je,x(e.$t(`views.settings.security.enter_code`)),1),j(n,{modelValue:w(l),"onUpdate:modelValue":t[0]||=e=>N(l)?l.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=T({__name:`TwoFactorRegenerate`,props:{onBackupCodesGenerated:{type:Function}},setup(e,{expose:t}){let r=new B,i=e,a=g(),{t:o}=n(),s=b(`dialogRefProps`),{mutateAsync:c,isPending:l}=r.regenerateBackupCodesQuery(),u=C(``),d=E(()=>!!(s.loading?.value||l.value)),ee=E(()=>u.value.length<6);async function f(){if(u.value.length<6)return null;try{let e=await c({code:u.value});a.add({severity:`success`,detail:o(`views.settings.security.backup_regenerated`),life:3e3}),i.onBackupCodesGenerated&&i.onBackupCodesGenerated(e.backupCodes)}catch(e){return a.add({severity:`error`,detail:e,life:3e3}),null}}return t({isLoading:d,isDisabled:ee,onConfirm:f}),(e,t)=>{let n=be;return _(),S(`div`,Xe,[y(`p`,Ze,x(e.$t(`views.settings.security.regenerate_confirm`)),1),y(`div`,q,[y(`label`,J,x(e.$t(`views.settings.security.enter_code`)),1),j(n,{modelValue:w(u),"onUpdate:modelValue":t[0]||=e=>N(u)?u.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=s(T({__name:`SettingsAccount`,props:{firststeps:{type:Boolean}},setup(s,{expose:ae}){let b=new B,T=s,D=ie(),V=g(),{t:H}=n(),{firststeps:U}=k(T),W=d(),{user:G}=pe(W),{data:K,isLoading:Oe}=b.toggleQueryActivator(`get2FAStatusQuery`,!U.value).get2FAStatusQuery(),{mutateAsync:ke,isPending:je}=b.setup2FAQuery(),{mutateAsync:Me,isPending:Pe}=b.enable2FAQuery(),{data:Fe,isBusy:Ie}=b.toggleQueryActivator(`listSessionsQuery`,!U.value).listSessionsQuery({page:1,pageSize:-1}),{mutateAsync:Re}=b.revokeSessionQuery(),{mutateAsync:ze}=b.revokeOtherSessionsQuery(),{data:Be,isBusy:He}=b.toggleQueryActivator(`listApiTokensQuery`,!U.value).listApiTokensQuery(),{mutateAsync:Ue,isPending:Ge}=b.createApiTokenQuery(),{mutateAsync:Ke}=b.revokeApiTokenQuery(),qe=R({password:c,passwordConfirm:z().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Je=R({username:z().min(1),password:c,passwordConfirm:z().min(1)}).refine(e=>e.password===e.passwordConfirm,{message:`Passwords do not match`,path:[`passwordConfirm`]}),Xe=oe(`formRef`),Ze=oe(`passwordFormRef`),q=le(),J=C(`avatar`),Y=C(G.value?.username??``),X=C(!1),Z=C(!1),Q=C(null),$=C(``),_n=C(null),vn=C(!1),yn=C(null);C(!1);let bn=C(!1),xn=C(!1),Sn=E(()=>!1),Cn={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}}},wn=E(()=>(Fe.value??[]).filter(e=>!e.is_current).length),Tn=E(()=>!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 p(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(){D.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){D.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){D.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(){D.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(){D.openComponentDialog(Ye,{data:{title:H(`views.settings.security.disable_2fa`),confirmText:H(`views.settings.security.disable_2fa`),confirmButtonProps:{severity:`danger`},contentProps:{}}})}function Ln(){D.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){D.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 f(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 h(m()),bn.value=!1,V.add({severity:`success`,detail:H(`views.settings.biometric.cleared`),life:3e3})}finally{xn.value=!1}}}return O(()=>{Hn()}),ae({formRef:Xe}),(n,s)=>{let c=re,d=r,f=ge,p=t,m=ye,h=e,g=a,ie=Ce,ae=ee,oe=he,b=be,C=o,le=Te,T=u,E=xe,D=me,O=_e,k=l,R=Se,z=ve,pe=we,B=i;return _(),S(`div`,null,[y(`div`,$e,[w(U)?(_(),A(w(ce),{key:0,ref_key:`formRef`,ref:Xe,"validation-schema":w(Je),class:`flex flex-col w-full gap-6`},{default:v(()=>[y(`div`,et,[y(`div`,tt,[y(`label`,nt,[j(c,{src:w(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),y(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:s[0]||=e=>zn(e)},null,32)])]),y(`span`,rt,x(n.$t(`views.settings.profile`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,it,[j(w(L),{"model-value":w(G)?.username,name:`username`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:e,errors:t})=>[y(`label`,at,x(n.$t(`components.form.label.username`)),1),j(f,null,{default:v(()=>[j(d,I(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`username`,class:`cui-input-error`})]),_:1})]),_:1},8,[`model-value`])])]),_:1})]),y(`div`,null,[y(`span`,ot,x(n.$t(`views.settings.password`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,st,[j(w(L),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:e,errors:t})=>[y(`label`,ct,x(n.$t(`components.form.label.new_password`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:t.length>0},e,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),j(w(L),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:e,errors:t})=>[y(`label`,lt,x(n.$t(`components.form.label.new_password_confirm`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:t.length>0},e,{feedback:!1,"toggle-mask":``}),null,16,[`invalid`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1})])]),_:1})])]),_:1},8,[`validation-schema`])):(_(),S(ue,{key:1},[y(`div`,ut,[y(`div`,dt,[y(`label`,ft,[j(c,{src:w(J),size:64,"show-border":!1,class:`cursor-pointer`},null,8,[`src`]),y(`input`,{id:`file-input`,type:`file`,class:`hidden`,accept:`image/png,image/jpeg,image/jpg`,onChange:s[1]||=e=>zn(e)},null,32)])]),y(`span`,pt,x(n.$t(`views.settings.profile`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,mt,[y(`div`,ht,[y(`label`,gt,x(n.$t(`components.form.label.username`)),1),j(f,null,{default:v(()=>[j(d,{modelValue:w(Y),"onUpdate:modelValue":s[2]||=e=>N(Y)?Y.value=e:null,loading:w(X),type:`text`},null,8,[`modelValue`,`loading`])]),_:1})]),y(`div`,_t,[j(h,{loading:w(X),class:`cui-button-medium`,label:n.$t(`components.form.button.update_profile`),onClick:Bn},null,8,[`loading`,`label`])])])]),_:1})]),y(`div`,null,[y(`span`,vt,x(n.$t(`views.settings.password`)),1),j(p,{class:`cui-card`},{content:v(()=>[j(w(ce),{ref_key:`passwordFormRef`,ref:Ze,"validation-schema":w(qe),class:`flex flex-col gap-6`,onSubmit:s[3]||=e=>Vn(e)},{default:v(()=>[j(w(L),{name:`password`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:e,errors:t})=>[y(`label`,yt,x(n.$t(`components.form.label.new_password`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:t.length>0},e,{loading:w(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`password`,class:`cui-input-error`})]),_:1})]),_:1}),j(w(L),{name:`passwordConfirm`,as:`div`,class:`flex flex-col field-gap`},{default:v(({field:e,errors:t})=>[y(`label`,bt,x(n.$t(`components.form.label.new_password_confirm`)),1),j(f,null,{default:v(()=>[j(m,I({invalid:t.length>0},e,{loading:w(Z),feedback:!1,"toggle-mask":``}),null,16,[`invalid`,`loading`])]),_:2},1024),j(M,{name:`fade`},{default:v(()=>[j(w(F),{name:`passwordConfirm`,class:`cui-input-error`})]),_:1})]),_:1}),y(`div`,xt,[j(h,{type:`submit`,loading:w(Z),class:`cui-button-medium`,label:n.$t(`components.form.button.change_password`)},null,8,[`loading`,`label`])])]),_:1},8,[`validation-schema`])]),_:1})]),y(`div`,null,[y(`span`,St,x(n.$t(`views.settings.security.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[w(Oe)?(_(),S(`div`,Ct,[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(_(),A(M,{key:1,name:`fade`,mode:`out-in`},{default:v(()=>[!w(K)?.enabled&&!w(Q)&&!w(je)?(_(),S(`div`,wt,[y(`div`,Tt,[y(`span`,Et,x(n.$t(`views.settings.security.2fa_title`)),1),y(`span`,Dt,x(n.$t(`views.settings.security.2fa_description`)),1)]),j(h,{class:`cui-button-medium ml-auto`,label:n.$t(`views.settings.security.setup_2fa`),onClick:Nn},null,8,[`label`])])):!w(K)?.enabled&&w(je)?(_(),S(`div`,Ot,[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`}),y(`span`,kt,x(n.$t(`views.settings.security.generating_qr`)),1)])):!w(K)?.enabled&&w(Q)?(_(),S(`div`,At,[y(`div`,jt,[j(ie,{value:w(Tn),size:160,"logo-size":36},null,8,[`value`]),y(`p`,Mt,x(n.$t(`views.settings.security.scan_qr`)),1)]),y(`div`,Nt,[y(`div`,Pt,[y(`label`,Ft,x(n.$t(`views.settings.security.manual_entry`)),1),j(f,null,{default:v(()=>[j(d,{"model-value":w(Q)?.secret,readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),j(oe,null,{default:v(()=>[j(ae,{"action-text":n.$t(`components.form.tooltip.copied`),icon:w(te),"button-props":{severity:`secondary`,text:!0},onAction:En},null,8,[`action-text`,`icon`])]),_:1})]),_:1})]),y(`div`,It,[y(`label`,Lt,x(n.$t(`views.settings.security.enter_code`)),1),j(b,{modelValue:w($),"onUpdate:modelValue":s[4]||=e=>N($)?$.value=e:null,length:6,"integer-only":``},null,8,[`modelValue`])]),y(`div`,Rt,[j(h,{severity:`secondary`,class:`cui-button-medium`,label:n.$t(`components.form.button.cancel`),onClick:Pn},null,8,[`label`]),j(h,{class:`cui-button-medium`,label:n.$t(`views.settings.security.enable_2fa`),loading:w(Pe),disabled:w($).length<6,onClick:Fn},null,8,[`label`,`loading`,`disabled`])])])])):(_(),S(`div`,zt,[y(`div`,Bt,[y(`div`,Vt,[j(C,{class:`w-5 h-5`})]),y(`div`,Ht,[y(`span`,Ut,x(n.$t(`views.settings.security.2fa_enabled`)),1)])]),w(K)?.backupCodesCount===void 0?P(``,!0):(_(),S(`div`,Wt,[j(le,{class:`w-4 h-4`}),y(`span`,null,x(n.$t(`views.settings.security.backup_codes_remaining`,{count:w(K).backupCodesCount})),1)])),y(`div`,Gt,[j(h,{severity:`secondary`,class:`cui-button-medium`,label:n.$t(`views.settings.security.regenerate_backup`),onClick:Ln},null,8,[`label`]),j(h,{severity:`danger`,class:`cui-button-medium`,label:n.$t(`views.settings.security.disable_2fa`),onClick:In},null,8,[`label`])])]))]),_:1}))]),_:1})]),w(Sn)?(_(),S(`div`,Kt,[y(`span`,qt,x(n.$t(`views.settings.biometric.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,Jt,[j(T,{class:`shrink-0 w-6 h-6 text-color`}),y(`div`,Yt,[y(`span`,Xt,x(n.$t(`views.settings.biometric.label`)),1),j(E,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:v(()=>[de(x(n.$t(`views.settings.biometric.description`)),1)]),_:1})]),j(D,{"model-value":w(bn),loading:w(xn),class:`ml-auto shrink-0`,"onUpdate:modelValue":Un},null,8,[`model-value`,`loading`])])]),_:1})])):P(``,!0),y(`div`,null,[y(`span`,Zt,x(n.$t(`views.settings.api_tokens.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,Qt,[y(`span`,$t,x(n.$t(`views.settings.api_tokens.info`)),1),j(R,{value:w(Be)??[],"data-key":`id`,loading:w(He),pt:Cn,"striped-rows":``,scrollable:``},{loading:v(()=>[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:v(()=>[y(`span`,en,x(n.$t(`views.settings.api_tokens.empty`)),1)]),default:v(()=>[j(O,{field:`name`,header:n.$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:v(({data:e})=>[y(`div`,tn,[j(w(De),{class:`cui-session-icon`}),y(`div`,nn,[y(`span`,rn,x(e.name),1),y(`span`,an,x(e.token_hint),1)])])]),_:1},8,[`header`]),j(O,{field:`last_seen_at`,header:n.$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:v(({data:e})=>[y(`span`,on,x(e.last_seen_at>e.created_at?w(ne)(e.last_seen_at):n.$t(`views.settings.api_tokens.never`)),1)]),_:1},8,[`header`]),j(O,{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:v(({data:e})=>[se((_(),A(h,{severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:w(yn)===e.id,onClick:t=>jn(e)},{icon:v(()=>[j(k,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:n.$t(`views.settings.api_tokens.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),y(`div`,sn,[j(h,{loading:w(Ge),class:`cui-button-medium mr-4 md:mr-0`,label:n.$t(`views.settings.api_tokens.create`),onClick:kn},null,8,[`loading`,`label`])])])]),_:1})]),y(`div`,null,[y(`span`,cn,x(n.$t(`views.settings.active_sessions.title`)),1),j(p,{class:`cui-card`},{content:v(()=>[y(`div`,ln,[j(R,{value:w(Fe)??[],"data-key":`id`,loading:w(Ie),pt:Cn,"striped-rows":``,scrollable:``},{loading:v(()=>[j(g,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:v(()=>[y(`span`,un,x(n.$t(`views.settings.active_sessions.empty`)),1)]),default:v(()=>[j(O,{field:`device`,header:n.$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:v(({data:e})=>[y(`div`,dn,[(_(),A(fe(Dn(e.device.kind)),{class:`cui-session-icon`})),y(`div`,fn,[y(`div`,pn,[y(`span`,mn,x(e.device.name),1),e.is_current?(_(),A(z,{key:0,severity:`success`,value:n.$t(`views.settings.active_sessions.this_device`),class:`cui-session-tag`},null,8,[`value`])):P(``,!0)]),y(`span`,hn,x(e.device.ip||`—`),1)])])]),_:1},8,[`header`]),j(O,{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:v(({data:e})=>[e.is_current?P(``,!0):se((_(),A(h,{key:0,severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:w(_n)===e.id,onClick:t=>On(e.id)},{icon:v(()=>[j(pe,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[B,{value:n.$t(`views.settings.active_sessions.revoke`)}]])]),_:1})]),_:1},8,[`value`,`loading`]),w(wn)>0?(_(),S(`div`,gn,[j(h,{loading:w(vn),class:`cui-button-medium mr-4 md:mr-0`,label:n.$t(`views.settings.active_sessions.revoke_all_others`,{count:w(wn)}),onClick:Mn},null,8,[`loading`,`label`])])):P(``,!0)])]),_:1})])],64))])])}}}),[[`__scopeId`,`data-v-de51a7b1`]]);export{Y as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./SettingsAccount-DA67jXmp.js";export{e as default};
@@ -0,0 +1 @@
1
+ import{t as e}from"./SettingsAppearance-DEQyCR5b.js";export{e as default};
@@ -1 +1 @@
1
- import{Fr as e,H as t,na as n}from"./vendor-cameraui-GaXYUHUd.js";import{Nn as r,Pn as i,_ as a,hn as ee,ur as o,v as s}from"./api-CvO7u24f.js";import{Fn as te,Mn as ne,Nn as c,Xn as l,an as u,br as d,cn as f,cr as p,en as re,fn as m,gr as h,hn as g,in as _,pn as v,rr as y,sn as b}from"./vendor-BaiDFVEr.js";import{p as x}from"./vendor-core-BNfYBWH3.js";import{K as ie,j as ae,z as oe}from"./vendor-primevue-CIRUBYsf.js";import{n as se,r as ce}from"./useNavLayout-CcDIO9RG.js";import{t as le}from"./theme-Dw9-CwMe.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=g({__name:`SettingsAppearance`,props:{compact:{type:Boolean,default:!1}},setup(g){let{t:G}=e(),{settingsInNav:K,isCollapsible:Le,setCollapsible:Re,setSettingsInNav:ze}=ce(),Be=a(),{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=_(()=>r.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 ne(Je),(e,n)=>{let r=ae,i=oe,a=ie,s=t;return c(),f(`div`,null,[u(`div`,S,[h(o)()?b(``,!0):(c(),f(`div`,C,[u(`span`,w,d(e.$t(`views.settings.theme`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,T,[u(`div`,E,[u(`label`,D,d(e.$t(`components.form.label.theme`)),1),v(r,{modelValue:h(J),"onUpdate:modelValue":n[0]||=e=>y(J)?J.value=e:null,options:h(Ue),disabled:h(Y)},null,8,[`modelValue`,`options`,`disabled`])]),u(`div`,O,[u(`div`,k,[u(`div`,A,[u(`div`,j,[u(`label`,M,d(e.$t(`components.form.label.system_preference`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.system_preference`)),1)]),_:1})]),v(a,{modelValue:h(Y),"onUpdate:modelValue":n[1]||=e=>y(Y)?Y.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),h(o)()?b(``,!0):(c(),f(`div`,N,[u(`span`,P,d(e.$t(`views.settings.locale`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,F,[u(`div`,I,[u(`label`,L,d(e.$t(`components.form.label.language`)),1),v(r,{modelValue:h(q),"onUpdate:modelValue":n[2]||=e=>y(q)?q.value=e:null,options:h(Ve),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`])])])]),_:1})])),g.compact?b(``,!0):(c(),f(`div`,R,[u(`span`,z,d(e.$t(`views.settings.interface`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,B,[u(`div`,V,[u(`label`,H,d(e.$t(`components.form.label.default_landing_page`)),1),v(r,{modelValue:h(X).interface.landingPage,"onUpdate:modelValue":n[3]||=e=>h(X).interface.landingPage=e,options:h(Ke),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.default_landing_page`)),1)]),_:1})]),(`hasPermission`in e?e.hasPermission:h(ee))(void 0,`admin`)?(c(),f(`div`,U,[u(`label`,W,d(e.$t(`components.form.label.default_settings_page`)),1),v(r,{modelValue:h(X).interface.selectedSettingsView,"onUpdate:modelValue":n[4]||=e=>h(X).interface.selectedSettingsView=e,options:h(qe),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.default_settings_page`)),1)]),_:1})])):b(``,!0),u(`div`,ue,[u(`label`,de,d(e.$t(`components.form.label.table_rows`)),1),v(r,{modelValue:h(X).interface.tableRows,"onUpdate:modelValue":n[5]||=e=>h(X).interface.tableRows=e,options:$},null,8,[`modelValue`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.table_rows`)),1)]),_:1})]),u(`div`,fe,[u(`div`,pe,[u(`div`,me,[u(`div`,he,[u(`label`,ge,d(e.$t(`components.form.label.navbar_stay_collapsed`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.navbar_stay_collapsed`)),1)]),_:1})]),v(a,{modelValue:h(X).interface.navbarStayCollapsed,"onUpdate:modelValue":n[6]||=e=>h(X).interface.navbarStayCollapsed=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),g.compact?b(``,!0):(c(),f(`div`,_e,[u(`span`,ve,d(e.$t(`views.settings.navigation`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,ye,[u(`div`,be,[u(`div`,xe,[u(`div`,Se,[u(`label`,Ce,d(e.$t(`components.form.label.nav_settings_in_nav`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.nav_settings_in_nav`)),1)]),_:1})]),v(a,{"model-value":h(K),class:`ml-auto shrink-0`,"onUpdate:modelValue":n[7]||=e=>h(ze)(e)},null,8,[`model-value`])])]),(c(!0),f(re,null,te(h(Ge),t=>(c(),f(`div`,{key:t,class:`flex flex-col field-gap cui-toggle-switch`},[u(`div`,we,[u(`div`,Te,[u(`label`,Ee,d(e.$t(`components.form.label.nav_group_collapsible`,{group:e.$t(`navigation.group_${t}`)})),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.nav_group_collapsible`,{group:e.$t(`navigation.group_${t}`)})),1)]),_:2},1024)]),v(a,{"model-value":h(Le)(t),class:`ml-auto shrink-0`,"onUpdate:modelValue":e=>h(Re)(t,e)},null,8,[`model-value`,`onUpdate:modelValue`])])]))),128))])]),_:1})])),u(`div`,null,[u(`span`,De,d(e.$t(`views.settings.debugging`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,Oe,[u(`div`,ke,[u(`div`,Ae,[u(`div`,je,[u(`label`,Me,d(e.$t(`components.form.label.debug_verbose`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.debug_verbose`)),1)]),_:1})]),v(a,{"model-value":h(Q),class:`ml-auto shrink-0`,"onUpdate:modelValue":Xe},null,8,[`model-value`])])]),u(`div`,Ne,[u(`div`,Pe,[u(`div`,Fe,[u(`label`,Ie,d(e.$t(`components.form.label.record_logs`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(e.$t(`components.form.hint.record_logs`)),1)]),_:1})]),v(a,{"model-value":h(Z),class:`ml-auto shrink-0`,"onUpdate:modelValue":Ye},null,8,[`model-value`])])])])]),_:1})])])])}}});export{G as t};
1
+ import{H as e,Ir as t,ra as n}from"./vendor-cameraui-C6beJsya.js";import{Nn as r,Pn as i,_ as a,hn as ee,ur as o,v as s}from"./api-1K2Gzz8B.js";import{Fn as te,Mn as ne,Nn as c,Xn as l,an as u,br as d,cn as f,cr as p,en as re,fn as m,gr as h,hn as g,in as _,pn as v,rr as y,sn as b}from"./vendor-BaiDFVEr.js";import{p as x}from"./vendor-core-_ft7qIgH.js";import{K as ie,j as ae,z as oe}from"./vendor-primevue-DfyAPSov.js";import{n as se,r as ce}from"./useNavLayout-CTX4KBkz.js";import{t as le}from"./theme-qmnHJ2WT.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=g({__name:`SettingsAppearance`,props:{compact:{type:Boolean,default:!1}},setup(g){let{t:G}=t(),{settingsInNav:K,isCollapsible:Le,setCollapsible:Re,setSettingsInNav:ze}=ce(),Be=a(),{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=_(()=>r.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 ne(Je),(t,n)=>{let r=ae,i=oe,a=ie,s=e;return c(),f(`div`,null,[u(`div`,S,[h(o)()?b(``,!0):(c(),f(`div`,C,[u(`span`,w,d(t.$t(`views.settings.theme`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,T,[u(`div`,E,[u(`label`,D,d(t.$t(`components.form.label.theme`)),1),v(r,{modelValue:h(J),"onUpdate:modelValue":n[0]||=e=>y(J)?J.value=e:null,options:h(Ue),disabled:h(Y)},null,8,[`modelValue`,`options`,`disabled`])]),u(`div`,O,[u(`div`,k,[u(`div`,A,[u(`div`,j,[u(`label`,M,d(t.$t(`components.form.label.system_preference`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.system_preference`)),1)]),_:1})]),v(a,{modelValue:h(Y),"onUpdate:modelValue":n[1]||=e=>y(Y)?Y.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),h(o)()?b(``,!0):(c(),f(`div`,N,[u(`span`,P,d(t.$t(`views.settings.locale`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,F,[u(`div`,I,[u(`label`,L,d(t.$t(`components.form.label.language`)),1),v(r,{modelValue:h(q),"onUpdate:modelValue":n[2]||=e=>y(q)?q.value=e:null,options:h(Ve),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`])])])]),_:1})])),g.compact?b(``,!0):(c(),f(`div`,R,[u(`span`,z,d(t.$t(`views.settings.interface`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,B,[u(`div`,V,[u(`label`,H,d(t.$t(`components.form.label.default_landing_page`)),1),v(r,{modelValue:h(X).interface.landingPage,"onUpdate:modelValue":n[3]||=e=>h(X).interface.landingPage=e,options:h(Ke),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.default_landing_page`)),1)]),_:1})]),(`hasPermission`in t?t.hasPermission:h(ee))(void 0,`admin`)?(c(),f(`div`,U,[u(`label`,W,d(t.$t(`components.form.label.default_settings_page`)),1),v(r,{modelValue:h(X).interface.selectedSettingsView,"onUpdate:modelValue":n[4]||=e=>h(X).interface.selectedSettingsView=e,options:h(qe),"option-label":`label`,"option-value":`value`},null,8,[`modelValue`,`options`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.default_settings_page`)),1)]),_:1})])):b(``,!0),u(`div`,ue,[u(`label`,de,d(t.$t(`components.form.label.table_rows`)),1),v(r,{modelValue:h(X).interface.tableRows,"onUpdate:modelValue":n[5]||=e=>h(X).interface.tableRows=e,options:$},null,8,[`modelValue`]),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.table_rows`)),1)]),_:1})]),u(`div`,fe,[u(`div`,pe,[u(`div`,me,[u(`div`,he,[u(`label`,ge,d(t.$t(`components.form.label.navbar_stay_collapsed`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.navbar_stay_collapsed`)),1)]),_:1})]),v(a,{modelValue:h(X).interface.navbarStayCollapsed,"onUpdate:modelValue":n[6]||=e=>h(X).interface.navbarStayCollapsed=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])])])])])]),_:1})])),g.compact?b(``,!0):(c(),f(`div`,_e,[u(`span`,ve,d(t.$t(`views.settings.navigation`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,ye,[u(`div`,be,[u(`div`,xe,[u(`div`,Se,[u(`label`,Ce,d(t.$t(`components.form.label.nav_settings_in_nav`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.nav_settings_in_nav`)),1)]),_:1})]),v(a,{"model-value":h(K),class:`ml-auto shrink-0`,"onUpdate:modelValue":n[7]||=e=>h(ze)(e)},null,8,[`model-value`])])]),(c(!0),f(re,null,te(h(Ge),e=>(c(),f(`div`,{key:e,class:`flex flex-col field-gap cui-toggle-switch`},[u(`div`,we,[u(`div`,Te,[u(`label`,Ee,d(t.$t(`components.form.label.nav_group_collapsible`,{group:t.$t(`navigation.group_${e}`)})),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.nav_group_collapsible`,{group:t.$t(`navigation.group_${e}`)})),1)]),_:2},1024)]),v(a,{"model-value":h(Le)(e),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>h(Re)(e,t)},null,8,[`model-value`,`onUpdate:modelValue`])])]))),128))])]),_:1})])),u(`div`,null,[u(`span`,De,d(t.$t(`views.settings.debugging`)),1),v(s,{class:`cui-card`},{content:l(()=>[u(`div`,Oe,[u(`div`,ke,[u(`div`,Ae,[u(`div`,je,[u(`label`,Me,d(t.$t(`components.form.label.debug_verbose`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.debug_verbose`)),1)]),_:1})]),v(a,{"model-value":h(Q),class:`ml-auto shrink-0`,"onUpdate:modelValue":Xe},null,8,[`model-value`])])]),u(`div`,Ne,[u(`div`,Pe,[u(`div`,Fe,[u(`label`,Ie,d(t.$t(`components.form.label.record_logs`)),1),v(i,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[m(d(t.$t(`components.form.hint.record_logs`)),1)]),_:1})]),v(a,{"model-value":h(Z),class:`ml-auto shrink-0`,"onUpdate:modelValue":Ye},null,8,[`model-value`])])])])]),_:1})])])])}}});export{G as t};
@@ -1 +1 @@
1
- import{Fr as e,Ft as t,H as n,M as r,Vt as i,jt as a}from"./vendor-cameraui-GaXYUHUd.js";import{mr as o,s,st as c,xn as l}from"./api-CvO7u24f.js";import{$t as u,Fn as d,Gn as f,Nn as p,Xn as m,Zn as h,an as g,br as _,cn as v,cr as y,dr as b,en as x,fn as S,gr as C,hn as w,in as T,ir as E,jn as D,mr as O,on as k,or as ee,pn as A,sn as j,zn as M}from"./vendor-BaiDFVEr.js";import{K as N,M as P,U as F,_ as I,j as L,z as R}from"./vendor-primevue-CIRUBYsf.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-Drc-2VXy.js";import{t as se}from"./trash-can-outline-DLKniIWM.js";import{t as B}from"./close-circle-zhDWvz98.js";import{t as ce}from"./download-BCPfm6aN.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return p(),v(`svg`,V,[...t[0]||=[g(`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=E({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`},le=w({__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}=O(i),c=f(`fileInputRef`),l=b([]),d=y(!1),h=y(!1);function x(e){let t=l.value.findIndex(t=>t.name===e);t>-1&&(l.value.splice(t,1),T())}function S(e){if(d.value=!1,h.value=!1,l.value=[],e.dataTransfer)if(!s.value&&e.dataTransfer.files.length>1)h.value=!0;else{for(let[,t]of Object.entries(e.dataTransfer.files))l.value.push(t);a(`files-uploaded`,l.value)}}function w(e){h.value=!1,l.value=[];let t=e.target;if(t&&t.files)if(!s.value&&t.files?.length>1)h.value=!0;else{for(let[,e]of Object.entries(t.files))l.value.push(e);a(`files-uploaded`,l.value)}}function T(){c.value&&(c.value.value=``)}function E(){l.value=[],T()}return n({reset:E}),(n,r)=>{let i=B,a=t,s=F,f=P;return p(),v(`div`,{class:`file-upload-box`,onDrop:r[0]||=u(e=>S(e),[`prevent`]),onDragover:r[1]||=u(e=>d.value=!0,[`prevent`]),onDragenter:r[2]||=u(e=>d.value=!0,[`prevent`]),onDragleave:r[3]||=u(e=>d.value=!1,[`prevent`])},[g(`div`,W,[g(`div`,G,[(p(),k(M(e.icon),{class:`w-15 h-15`})),g(`label`,K,_(n.$t(`components.upload_files.drop_or_select_file`)),1),g(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:c,type:`file`,class:`hidden`,accept:C(o),onChange:w},null,40,q),C(h)?(p(),v(`p`,J,_(n.$t(`components.upload_files.only_one_file_allowed`)),1)):j(``,!0)]),C(l).length>0?(p(),k(f,{key:0,items:C(l),"item-size":50,"scroll-height":`50px`,"scroll-width":`100%`,class:`w-full`},{item:m(({item:e})=>[(p(),v(`div`,{key:e.name,class:`w-full flex flex-row items-center justify-start p-2`},[A(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:t=>x(e.name)},{icon:m(()=>[A(i,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`]),g(`b`,Y,_(e.name),1),g(`span`,X,`(`+_(e.size)+` bytes)`,1)])),C(l).length>1?(p(),k(s,{key:0,class:`m-0 py-4`})):j(``,!0)]),_:1},8,[`items`])):j(``,!0)])],32)}}}),ue={class:`flex flex-col w-full gap-6`},de={class:`card-title`},fe={class:`flex flex-col gap-6`},pe={class:`text-sm`},me={class:`card-title`},he={class:`flex flex-col gap-6`},ge={class:`text-sm`},_e={class:`card-title`},ve={key:0,class:`flex w-full items-center justify-center py-6`},ye={key:1,class:`flex flex-col gap-6`},be={class:`flex items-center gap-4`},xe={class:`flex flex-col gap-1 min-w-0`},Se={class:`text-sm`},Ce={class:`text-xs text-muted`},we={class:`grid grid-cols-1 sm:grid-cols-2 gap-4`},Te={class:`flex flex-col field-gap`},Ee={for:`backupInterval`,class:`cui-label`},De={class:`flex flex-col field-gap`},Oe={for:`backupTime`,class:`cui-label`},ke={key:0,class:`flex flex-col field-gap`},Ae={for:`backupWeekday`,class:`cui-label`},je={key:1,class:`flex flex-col field-gap`},Me={for:`backupDayOfMonth`,class:`cui-label`},Ne={class:`flex flex-col field-gap`},Pe={for:`backupRetention`,class:`cui-label`},Fe={class:`flex flex-col field-gap`},Ie={for:`backupDestination`,class:`cui-label`},Le={class:`flex items-center gap-2`},Re={key:1,class:`flex flex-col gap-2`},ze={class:`text-sm font-semibold border-b-[1px] border-color pb-2`},Be={class:`flex flex-col min-w-0`},Ve={class:`text-sm truncate`},He={class:`text-xs text-muted`},Z={class:`flex gap-1 ml-auto shrink-0`},Q=w({__name:`SettingsBackup`,setup(u){let w=c(),E=o(),{t:O,locale:M}=e(),P=f(`filesRef`),F=b([]),B=y(!1),V=y(!0),H=y(!1),U=y(!1),W=y(null),G=y([]),K=y(``),q=y(),J=ee({enabled:!1,interval:`daily`,time:`03:00`,weekday:0,dayOfMonth:1,retention:7,destinationPath:``}),Y=T(()=>/^([01]\d|2[0-3]):[0-5]\d$/.test(J.time)),X=T(()=>[`daily`,`weekly`,`monthly`].map(e=>({label:O(`views.settings.backup_interval_${e}`),value:e}))),Q=T(()=>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}))),Ue=T(()=>{if(!q.value)return O(`views.settings.backup_last_run`,{info:O(`views.settings.backup_last_run_never`)});let e=new Date(q.value.timestamp).toLocaleString(),t=q.value.status===`success`?`✓`:`✗ ${q.value.message??``}`;return O(`views.settings.backup_last_run`,{info:`${e} ${t}`})});async function We(){B.value=!0;try{let e={};if(localStorage.getItem(`ui`)){let t=localStorage.getItem(`ui`);e.ui=JSON.parse(t)}if(localStorage.getItem(`language`)&&(e.language=localStorage.getItem(`language`)),localStorage.getItem(`theme`)){let t=localStorage.getItem(`theme`);e.theme=JSON.parse(t)}let t=Date.now(),n=await ne(e);await l({blob:new Blob([n]),filename:`cameraui-backup-${t}.tar.gz`,mimeType:`application/gzip`})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}B.value=!1}function Ge(){w.openTextDialog({data:{title:O(`components.dialog.title.confirm`),contentText:O(`components.dialog.message.confirm_restore`),confirmText:O(`components.form.button.restore_and_restart`),loading:B},onConfirm:Ke})}async function Ke(){let e=F.value[0];e&&(B.value=!0,await re().run(e),P.value?.reset(),B.value=!1)}function qe(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){E.add({severity:`error`,detail:s(e),life:3e3})}finally{V.value=!1}}async function Je(){if(Y.value){H.value=!0;try{let e=await oe({...J});q.value=e.lastRun,E.add({severity:`success`,detail:O(`components.toast.backup_scheduler_saved`),life:3e3})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{H.value=!1}}}async function Ye(){U.value=!0;try{let e=await te();q.value=e,E.add({severity:`success`,detail:O(`components.toast.backup_created`),life:3e3})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{U.value=!1,await $()}}async function Xe(e){W.value=e.filename;try{let t=await z(e.filename);await l({blob:new Blob([t]),filename:e.filename,mimeType:`application/gzip`})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{W.value=null}}function Ze(e){w.openTextDialog({data:{title:O(`components.dialog.title.confirm`),contentText:O(`components.dialog.message.confirm_delete_backup`,{filename:e.filename}),confirmText:O(`components.form.button.remove`)},onConfirm:async()=>{try{await ae(e.filename),E.add({severity:`success`,detail:O(`components.toast.backup_deleted`),life:3e3}),await $()}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}}})}return D($),(e,o)=>{let s=t,c=n,l=le,u=a,f=N,y=L,b=r,w=I,T=R,E=ce,D=se,O=i;return p(),v(`div`,null,[g(`div`,ue,[g(`div`,null,[g(`span`,de,_(e.$t(`views.settings.create_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[g(`div`,fe,[g(`span`,pe,_(e.$t(`views.settings.create_backup_info`)),1),A(s,{loading:C(B),class:`ml-auto cui-button-medium`,label:e.$t(`components.form.button.download_backup_archive`),onClick:We},null,8,[`loading`,`label`])])]),_:1})]),g(`div`,null,[g(`span`,me,_(e.$t(`views.settings.restore_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[g(`div`,he,[g(`span`,ge,_(e.$t(`views.settings.restore_backup_info`)),1),A(l,{ref_key:`filesRef`,ref:P,accept:`application/gzip, .tar, .tar.gz`,onFilesUploaded:o[0]||=e=>F.value=e},null,512),A(s,{loading:C(B),disabled:!C(F).length,class:`ml-auto cui-button-medium`,label:e.$t(`components.form.button.restore_backup_archive`),onClick:Ge},null,8,[`loading`,`disabled`,`label`])])]),_:1})]),g(`div`,null,[g(`span`,_e,_(e.$t(`views.settings.scheduled_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[C(V)?(p(),v(`div`,ve,[A(u,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(p(),v(`div`,ye,[g(`div`,be,[g(`div`,xe,[g(`span`,Se,_(e.$t(`views.settings.scheduled_backup_info`)),1),g(`span`,Ce,_(C(Ue)),1)]),A(f,{modelValue:C(J).enabled,"onUpdate:modelValue":o[1]||=e=>C(J).enabled=e,disabled:C(H),class:`ml-auto shrink-0`},null,8,[`modelValue`,`disabled`])]),C(J).enabled?(p(),v(x,{key:0},[g(`div`,we,[g(`div`,Te,[g(`label`,Ee,_(e.$t(`views.settings.backup_interval`)),1),A(y,{modelValue:C(J).interval,"onUpdate:modelValue":o[2]||=e=>C(J).interval=e,"input-id":`backupInterval`,options:C(X),"option-label":`label`,"option-value":`value`,disabled:C(H)},null,8,[`modelValue`,`options`,`disabled`])]),g(`div`,De,[g(`label`,Oe,_(e.$t(`views.settings.backup_time`)),1),A(b,{id:`backupTime`,modelValue:C(J).time,"onUpdate:modelValue":o[3]||=e=>C(J).time=e,placeholder:`03:00`,disabled:C(H),invalid:!C(Y)},null,8,[`modelValue`,`disabled`,`invalid`])]),C(J).interval===`weekly`?(p(),v(`div`,ke,[g(`label`,Ae,_(e.$t(`views.settings.backup_weekday`)),1),A(y,{modelValue:C(J).weekday,"onUpdate:modelValue":o[4]||=e=>C(J).weekday=e,"input-id":`backupWeekday`,options:C(Q),"option-label":`label`,"option-value":`value`,disabled:C(H)},null,8,[`modelValue`,`options`,`disabled`])])):j(``,!0),C(J).interval===`monthly`?(p(),v(`div`,je,[g(`label`,Me,_(e.$t(`views.settings.backup_day_of_month`)),1),A(w,{modelValue:C(J).dayOfMonth,"onUpdate:modelValue":o[5]||=e=>C(J).dayOfMonth=e,"input-id":`backupDayOfMonth`,min:1,max:28,"show-buttons":``,"use-grouping":!1,disabled:C(H)},null,8,[`modelValue`,`disabled`])])):j(``,!0),g(`div`,Ne,[g(`label`,Pe,_(e.$t(`views.settings.backup_retention`)),1),A(w,{modelValue:C(J).retention,"onUpdate:modelValue":o[6]||=e=>C(J).retention=e,"input-id":`backupRetention`,min:1,max:60,"show-buttons":``,"use-grouping":!1,disabled:C(H)},null,8,[`modelValue`,`disabled`]),A(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[S(_(e.$t(`views.settings.backup_retention_hint`)),1)]),_:1})])]),g(`div`,Fe,[g(`label`,Ie,_(e.$t(`views.settings.backup_destination`)),1),A(b,{id:`backupDestination`,modelValue:C(J).destinationPath,"onUpdate:modelValue":o[7]||=e=>C(J).destinationPath=e,placeholder:C(K),disabled:C(H)},null,8,[`modelValue`,`placeholder`,`disabled`]),A(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[S(_(e.$t(`views.settings.backup_destination_hint`)),1)]),_:1})])],64)):j(``,!0),g(`div`,Le,[A(s,{severity:`secondary`,outlined:``,loading:C(U),disabled:C(H),class:`ml-auto cui-button-medium`,label:e.$t(`components.form.button.run_now`),onClick:Ye},null,8,[`loading`,`disabled`,`label`]),A(s,{loading:C(H),disabled:C(U)||!C(Y),class:`cui-button-medium`,label:e.$t(`components.form.button.save`),onClick:Je},null,8,[`loading`,`disabled`,`label`])]),C(G).length?(p(),v(`div`,Re,[g(`span`,ze,_(e.$t(`views.settings.backup_existing`)),1),(p(!0),v(x,null,d(C(G),t=>(p(),v(`div`,{key:t.filename,class:`flex items-center gap-3 py-1 min-w-0`},[g(`div`,Be,[g(`span`,Ve,_(t.filename),1),g(`span`,He,_(new Date(t.timestamp).toLocaleString())+` · `+_(qe(t.size)),1)]),g(`div`,Z,[h((p(),k(s,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,disabled:C(W)===t.filename,onClick:e=>Xe(t)},{icon:m(()=>[A(E,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])),[[O,{value:e.$t(`components.form.button.download`)},void 0,{top:!0}]]),h((p(),k(s,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md`,onClick:e=>Ze(t)},{icon:m(()=>[A(D,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[O,{value:e.$t(`components.form.button.remove`)},void 0,{top:!0}]])])]))),128))])):j(``,!0)]))]),_:1})])])])}}});export{Q as default};
1
+ import{Ft as e,H as t,Ir as n,M as r,Vt as i,jt as a}from"./vendor-cameraui-C6beJsya.js";import{mr as o,s,st as c,xn as l}from"./api-1K2Gzz8B.js";import{$t as u,Fn as d,Gn as f,Nn as p,Xn as m,Zn as h,an as g,br as _,cn as v,cr as y,dr as b,en as x,fn as S,gr as C,hn as w,in as T,ir as E,jn as D,mr as O,on as k,or as ee,pn as A,sn as j,zn as M}from"./vendor-BaiDFVEr.js";import{K as N,M as P,U as F,_ as I,j as L,z as R}from"./vendor-primevue-DfyAPSov.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-DCO_Pw9q.js";import{t as se}from"./trash-can-outline-DLKniIWM.js";import{t as B}from"./close-circle-zhDWvz98.js";import{t as ce}from"./download-BCPfm6aN.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return p(),v(`svg`,V,[...t[0]||=[g(`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=E({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`},le=w({__name:`CuiUploadFiles`,props:{multiple:{type:Boolean,default:!1},accept:{},icon:{default:U}},emits:[`files-uploaded`],setup(t,{expose:n,emit:r}){let i=t,a=r,{accept:o,multiple:s}=O(i),c=f(`fileInputRef`),l=b([]),d=y(!1),h=y(!1);function x(e){let t=l.value.findIndex(t=>t.name===e);t>-1&&(l.value.splice(t,1),T())}function S(e){if(d.value=!1,h.value=!1,l.value=[],e.dataTransfer)if(!s.value&&e.dataTransfer.files.length>1)h.value=!0;else{for(let[,t]of Object.entries(e.dataTransfer.files))l.value.push(t);a(`files-uploaded`,l.value)}}function w(e){h.value=!1,l.value=[];let t=e.target;if(t&&t.files)if(!s.value&&t.files?.length>1)h.value=!0;else{for(let[,e]of Object.entries(t.files))l.value.push(e);a(`files-uploaded`,l.value)}}function T(){c.value&&(c.value.value=``)}function E(){l.value=[],T()}return n({reset:E}),(n,r)=>{let i=B,a=e,s=F,f=P;return p(),v(`div`,{class:`file-upload-box`,onDrop:r[0]||=u(e=>S(e),[`prevent`]),onDragover:r[1]||=u(e=>d.value=!0,[`prevent`]),onDragenter:r[2]||=u(e=>d.value=!0,[`prevent`]),onDragleave:r[3]||=u(e=>d.value=!1,[`prevent`])},[g(`div`,W,[g(`div`,G,[(p(),k(M(t.icon),{class:`w-15 h-15`})),g(`label`,K,_(n.$t(`components.upload_files.drop_or_select_file`)),1),g(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:c,type:`file`,class:`hidden`,accept:C(o),onChange:w},null,40,q),C(h)?(p(),v(`p`,J,_(n.$t(`components.upload_files.only_one_file_allowed`)),1)):j(``,!0)]),C(l).length>0?(p(),k(f,{key:0,items:C(l),"item-size":50,"scroll-height":`50px`,"scroll-width":`100%`,class:`w-full`},{item:m(({item:e})=>[(p(),v(`div`,{key:e.name,class:`w-full flex flex-row items-center justify-start p-2`},[A(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:t=>x(e.name)},{icon:m(()=>[A(i,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`]),g(`b`,Y,_(e.name),1),g(`span`,X,`(`+_(e.size)+` bytes)`,1)])),C(l).length>1?(p(),k(s,{key:0,class:`m-0 py-4`})):j(``,!0)]),_:1},8,[`items`])):j(``,!0)])],32)}}}),ue={class:`flex flex-col w-full gap-6`},de={class:`card-title`},fe={class:`flex flex-col gap-6`},pe={class:`text-sm`},me={class:`card-title`},he={class:`flex flex-col gap-6`},ge={class:`text-sm`},_e={class:`card-title`},ve={key:0,class:`flex w-full items-center justify-center py-6`},ye={key:1,class:`flex flex-col gap-6`},be={class:`flex items-center gap-4`},xe={class:`flex flex-col gap-1 min-w-0`},Se={class:`text-sm`},Ce={class:`text-xs text-muted`},we={class:`grid grid-cols-1 sm:grid-cols-2 gap-4`},Te={class:`flex flex-col field-gap`},Ee={for:`backupInterval`,class:`cui-label`},De={class:`flex flex-col field-gap`},Oe={for:`backupTime`,class:`cui-label`},ke={key:0,class:`flex flex-col field-gap`},Ae={for:`backupWeekday`,class:`cui-label`},je={key:1,class:`flex flex-col field-gap`},Me={for:`backupDayOfMonth`,class:`cui-label`},Ne={class:`flex flex-col field-gap`},Pe={for:`backupRetention`,class:`cui-label`},Fe={class:`flex flex-col field-gap`},Ie={for:`backupDestination`,class:`cui-label`},Le={class:`flex items-center gap-2`},Re={key:1,class:`flex flex-col gap-2`},ze={class:`text-sm font-semibold border-b-[1px] border-color pb-2`},Be={class:`flex flex-col min-w-0`},Ve={class:`text-sm truncate`},He={class:`text-xs text-muted`},Z={class:`flex gap-1 ml-auto shrink-0`},Q=w({__name:`SettingsBackup`,setup(u){let w=c(),E=o(),{t:O,locale:M}=n(),P=f(`filesRef`),F=b([]),B=y(!1),V=y(!0),H=y(!1),U=y(!1),W=y(null),G=y([]),K=y(``),q=y(),J=ee({enabled:!1,interval:`daily`,time:`03:00`,weekday:0,dayOfMonth:1,retention:7,destinationPath:``}),Y=T(()=>/^([01]\d|2[0-3]):[0-5]\d$/.test(J.time)),X=T(()=>[`daily`,`weekly`,`monthly`].map(e=>({label:O(`views.settings.backup_interval_${e}`),value:e}))),Q=T(()=>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}))),Ue=T(()=>{if(!q.value)return O(`views.settings.backup_last_run`,{info:O(`views.settings.backup_last_run_never`)});let e=new Date(q.value.timestamp).toLocaleString(),t=q.value.status===`success`?`✓`:`✗ ${q.value.message??``}`;return O(`views.settings.backup_last_run`,{info:`${e} ${t}`})});async function We(){B.value=!0;try{let e={};if(localStorage.getItem(`ui`)){let t=localStorage.getItem(`ui`);e.ui=JSON.parse(t)}if(localStorage.getItem(`language`)&&(e.language=localStorage.getItem(`language`)),localStorage.getItem(`theme`)){let t=localStorage.getItem(`theme`);e.theme=JSON.parse(t)}let t=Date.now(),n=await ne(e);await l({blob:new Blob([n]),filename:`cameraui-backup-${t}.tar.gz`,mimeType:`application/gzip`})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}B.value=!1}function Ge(){w.openTextDialog({data:{title:O(`components.dialog.title.confirm`),contentText:O(`components.dialog.message.confirm_restore`),confirmText:O(`components.form.button.restore_and_restart`),loading:B},onConfirm:Ke})}async function Ke(){let e=F.value[0];e&&(B.value=!0,await re().run(e),P.value?.reset(),B.value=!1)}function qe(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){E.add({severity:`error`,detail:s(e),life:3e3})}finally{V.value=!1}}async function Je(){if(Y.value){H.value=!0;try{let e=await oe({...J});q.value=e.lastRun,E.add({severity:`success`,detail:O(`components.toast.backup_scheduler_saved`),life:3e3})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{H.value=!1}}}async function Ye(){U.value=!0;try{let e=await te();q.value=e,E.add({severity:`success`,detail:O(`components.toast.backup_created`),life:3e3})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{U.value=!1,await $()}}async function Xe(e){W.value=e.filename;try{let t=await z(e.filename);await l({blob:new Blob([t]),filename:e.filename,mimeType:`application/gzip`})}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}finally{W.value=null}}function Ze(e){w.openTextDialog({data:{title:O(`components.dialog.title.confirm`),contentText:O(`components.dialog.message.confirm_delete_backup`,{filename:e.filename}),confirmText:O(`components.form.button.remove`)},onConfirm:async()=>{try{await ae(e.filename),E.add({severity:`success`,detail:O(`components.toast.backup_deleted`),life:3e3}),await $()}catch(e){E.add({severity:`error`,detail:s(e),life:3e3})}}})}return D($),(n,o)=>{let s=e,c=t,l=le,u=a,f=N,y=L,b=r,w=I,T=R,E=ce,D=se,O=i;return p(),v(`div`,null,[g(`div`,ue,[g(`div`,null,[g(`span`,de,_(n.$t(`views.settings.create_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[g(`div`,fe,[g(`span`,pe,_(n.$t(`views.settings.create_backup_info`)),1),A(s,{loading:C(B),class:`ml-auto cui-button-medium`,label:n.$t(`components.form.button.download_backup_archive`),onClick:We},null,8,[`loading`,`label`])])]),_:1})]),g(`div`,null,[g(`span`,me,_(n.$t(`views.settings.restore_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[g(`div`,he,[g(`span`,ge,_(n.$t(`views.settings.restore_backup_info`)),1),A(l,{ref_key:`filesRef`,ref:P,accept:`application/gzip, .tar, .tar.gz`,onFilesUploaded:o[0]||=e=>F.value=e},null,512),A(s,{loading:C(B),disabled:!C(F).length,class:`ml-auto cui-button-medium`,label:n.$t(`components.form.button.restore_backup_archive`),onClick:Ge},null,8,[`loading`,`disabled`,`label`])])]),_:1})]),g(`div`,null,[g(`span`,_e,_(n.$t(`views.settings.scheduled_backup`)),1),A(c,{class:`cui-card`},{content:m(()=>[C(V)?(p(),v(`div`,ve,[A(u,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(p(),v(`div`,ye,[g(`div`,be,[g(`div`,xe,[g(`span`,Se,_(n.$t(`views.settings.scheduled_backup_info`)),1),g(`span`,Ce,_(C(Ue)),1)]),A(f,{modelValue:C(J).enabled,"onUpdate:modelValue":o[1]||=e=>C(J).enabled=e,disabled:C(H),class:`ml-auto shrink-0`},null,8,[`modelValue`,`disabled`])]),C(J).enabled?(p(),v(x,{key:0},[g(`div`,we,[g(`div`,Te,[g(`label`,Ee,_(n.$t(`views.settings.backup_interval`)),1),A(y,{modelValue:C(J).interval,"onUpdate:modelValue":o[2]||=e=>C(J).interval=e,"input-id":`backupInterval`,options:C(X),"option-label":`label`,"option-value":`value`,disabled:C(H)},null,8,[`modelValue`,`options`,`disabled`])]),g(`div`,De,[g(`label`,Oe,_(n.$t(`views.settings.backup_time`)),1),A(b,{id:`backupTime`,modelValue:C(J).time,"onUpdate:modelValue":o[3]||=e=>C(J).time=e,placeholder:`03:00`,disabled:C(H),invalid:!C(Y)},null,8,[`modelValue`,`disabled`,`invalid`])]),C(J).interval===`weekly`?(p(),v(`div`,ke,[g(`label`,Ae,_(n.$t(`views.settings.backup_weekday`)),1),A(y,{modelValue:C(J).weekday,"onUpdate:modelValue":o[4]||=e=>C(J).weekday=e,"input-id":`backupWeekday`,options:C(Q),"option-label":`label`,"option-value":`value`,disabled:C(H)},null,8,[`modelValue`,`options`,`disabled`])])):j(``,!0),C(J).interval===`monthly`?(p(),v(`div`,je,[g(`label`,Me,_(n.$t(`views.settings.backup_day_of_month`)),1),A(w,{modelValue:C(J).dayOfMonth,"onUpdate:modelValue":o[5]||=e=>C(J).dayOfMonth=e,"input-id":`backupDayOfMonth`,min:1,max:28,"show-buttons":``,"use-grouping":!1,disabled:C(H)},null,8,[`modelValue`,`disabled`])])):j(``,!0),g(`div`,Ne,[g(`label`,Pe,_(n.$t(`views.settings.backup_retention`)),1),A(w,{modelValue:C(J).retention,"onUpdate:modelValue":o[6]||=e=>C(J).retention=e,"input-id":`backupRetention`,min:1,max:60,"show-buttons":``,"use-grouping":!1,disabled:C(H)},null,8,[`modelValue`,`disabled`]),A(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[S(_(n.$t(`views.settings.backup_retention_hint`)),1)]),_:1})])]),g(`div`,Fe,[g(`label`,Ie,_(n.$t(`views.settings.backup_destination`)),1),A(b,{id:`backupDestination`,modelValue:C(J).destinationPath,"onUpdate:modelValue":o[7]||=e=>C(J).destinationPath=e,placeholder:C(K),disabled:C(H)},null,8,[`modelValue`,`placeholder`,`disabled`]),A(T,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:m(()=>[S(_(n.$t(`views.settings.backup_destination_hint`)),1)]),_:1})])],64)):j(``,!0),g(`div`,Le,[A(s,{severity:`secondary`,outlined:``,loading:C(U),disabled:C(H),class:`ml-auto cui-button-medium`,label:n.$t(`components.form.button.run_now`),onClick:Ye},null,8,[`loading`,`disabled`,`label`]),A(s,{loading:C(H),disabled:C(U)||!C(Y),class:`cui-button-medium`,label:n.$t(`components.form.button.save`),onClick:Je},null,8,[`loading`,`disabled`,`label`])]),C(G).length?(p(),v(`div`,Re,[g(`span`,ze,_(n.$t(`views.settings.backup_existing`)),1),(p(!0),v(x,null,d(C(G),e=>(p(),v(`div`,{key:e.filename,class:`flex items-center gap-3 py-1 min-w-0`},[g(`div`,Be,[g(`span`,Ve,_(e.filename),1),g(`span`,He,_(new Date(e.timestamp).toLocaleString())+` · `+_(qe(e.size)),1)]),g(`div`,Z,[h((p(),k(s,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,disabled:C(W)===e.filename,onClick:t=>Xe(e)},{icon:m(()=>[A(E,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])),[[O,{value:n.$t(`components.form.button.download`)},void 0,{top:!0}]]),h((p(),k(s,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md`,onClick:t=>Ze(e)},{icon:m(()=>[A(D,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[O,{value:n.$t(`components.form.button.remove`)},void 0,{top:!0}]])])]))),128))])):j(``,!0)]))]),_:1})])])])}}});export{Q as default};
@@ -1 +1 @@
1
- import{Fr as e}from"./vendor-cameraui-GaXYUHUd.js";import{b as t,hn as n,mn as r,un as i}from"./api-CvO7u24f.js";import{Fn as a,Nn as o,Xn as s,an as c,br as l,cn as u,en as d,fn as f,gr as p,hn as m,in as h,on as g,pn as _,zn as v}from"./vendor-BaiDFVEr.js";import{t as y}from"./CuiList-psx5r57o.js";var b={class:`card-title`},x=m({__name:`SettingsList`,setup(m){let{t:x}=e(),S=h(()=>t.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=h(()=>[`personal`,`system`].map(e=>({key:e,items:S.value.filter(t=>t.group===e)})).filter(e=>e.items.length>0));return(e,t)=>{let n=r,m=i,h=y;return o(),u(`div`,null,[(o(!0),u(d,null,a(p(C),t=>(o(),u(d,{key:t.key},[c(`span`,b,l(e.$t(`views.settings.section_${t.key}`)),1),_(h,{size:`large`,dividers:``,class:`!h-auto mb-4`},{default:s(()=>[(o(!0),u(d,null,a(t.items,e=>(o(),g(m,{key:e.to,to:e.to},{prepend:s(()=>[(o(),g(v(e.icon),{class:`w-5 h-5 text-muted`}))]),append:s(()=>[_(n,{class:`w-5 h-5 text-muted`})]),default:s(()=>[f(` `+l(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:2},1024)],64))),128))])}}});export{x as default};
1
+ import{Ir as e}from"./vendor-cameraui-C6beJsya.js";import{b as t,hn as n,mn as r,un as i}from"./api-1K2Gzz8B.js";import{Fn as a,Nn as o,Xn as s,an as c,br as l,cn as u,en as d,fn as f,gr as p,hn as m,in as h,on as g,pn as _,zn as v}from"./vendor-BaiDFVEr.js";import{t as y}from"./CuiList-BOMdGNXj.js";var b={class:`card-title`},x=m({__name:`SettingsList`,setup(m){let{t:x}=e(),S=h(()=>t.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=h(()=>[`personal`,`system`].map(e=>({key:e,items:S.value.filter(t=>t.group===e)})).filter(e=>e.items.length>0));return(e,t)=>{let n=r,m=i,h=y;return o(),u(`div`,null,[(o(!0),u(d,null,a(p(C),t=>(o(),u(d,{key:t.key},[c(`span`,b,l(e.$t(`views.settings.section_${t.key}`)),1),_(h,{size:`large`,dividers:``,class:`!h-auto mb-4`},{default:s(()=>[(o(!0),u(d,null,a(t.items,e=>(o(),g(m,{key:e.to,to:e.to},{prepend:s(()=>[(o(),g(v(e.icon),{class:`w-5 h-5 text-muted`}))]),append:s(()=>[_(n,{class:`w-5 h-5 text-muted`})]),default:s(()=>[f(` `+l(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:2},1024)],64))),128))])}}});export{x as default};
@@ -1 +1 @@
1
- import{Fr as e,Ft as t,H as n,M as ee,jt as te}from"./vendor-cameraui-GaXYUHUd.js";import{gt as ne,ht as r,i,mr as a,o,or as s}from"./api-CvO7u24f.js";import{Nn as c,Xn as l,an as u,b as re,br as d,cn as f,cr as p,en as m,fn as h,gr as g,hn as _,in as v,on as y,pn as b,qn as x,qt as S,rr as ie,sn as C,v as w,wn as T,y as E}from"./vendor-BaiDFVEr.js";import{J as D}from"./types-BCygqese.js";import{K as ae,L as oe,R as se,_ as ce,a as le,i as ue,j as de,s as fe,z as pe}from"./vendor-primevue-CIRUBYsf.js";import{t as O}from"./mqtt-CO84Q9sE.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`},B={class:`flex flex-col field-gap flex-1 min-w-0`},Ie={for:`brokerPassword`,class:`cui-label`},Le={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=_({__name:`SettingsMqtt`,setup(_){let D=new O,V=a(),{t:H}=e(),{data:U}=D.getMqttInfoQuery(),W=D.patchMqttInfoMutation(),G=D.testMqttConnectionMutation(),K=s(`/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=p(null),J=p(``),Y=p(null),X=v(()=>U.value?.passwordSet??!1),Z=v(()=>Y.value??U.value?.status??null),nt=v(()=>{switch(Z.value?.state){case`connected`:return`success`;case`connecting`:case`reconnecting`:return`warn`;case`error`:return`danger`;default:return`secondary`}}),rt=v(()=>{let e=Z.value?.state??`disabled`;return H(`views.settings.mqtt_state_${e}`)}),it=v(()=>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=v(()=>`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 x(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{}}),(e,a)=>{let o=te,s=pe,p=le,_=n,v=ae,x=de,D=ee,O=ce,V=fe,H=ne,U=oe,K=se,Y=ue,Z=t;return c(),f(`div`,k,[g(q)?(c(),f(`div`,j,[u(`div`,null,[u(`span`,M,d(e.$t(`views.settings.status`)),1),b(_,{class:`cui-card`},{content:l(()=>[u(`div`,N,[u(`div`,P,[u(`span`,F,d(e.$t(`views.settings.mqtt_broker`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint truncate`},{default:l(()=>[h(d(g(it)),1)]),_:1})]),b(p,{class:`ml-auto shrink-0`,severity:g(nt),value:g(rt)},null,8,[`severity`,`value`])])]),_:1})]),b(g(re),{class:`flex flex-col w-full gap-6`,"validation-schema":g(me),onSubmit:at},{default:l(()=>[u(`div`,null,[u(`span`,I,d(e.$t(`views.settings.mqtt_broker`)),1),b(_,{class:`cui-card`},{content:l(()=>[u(`div`,L,[u(`div`,R,[u(`div`,z,[u(`label`,he,d(e.$t(`components.form.label.enabled`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_enabled_info`)),1)]),_:1})]),b(v,{modelValue:g(q).enabled,"onUpdate:modelValue":a[0]||=e=>g(q).enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),u(`div`,ge,[u(`label`,_e,d(e.$t(`views.settings.mqtt_mode_label`)),1),b(x,{modelValue:g(q).mode,"onUpdate:modelValue":a[1]||=e=>g(q).mode=e,options:tt,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`]),g(q).mode===`embedded`?(c(),y(s,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_mode_embedded_info`)),1)]),_:1})):C(``,!0)]),g(q).mode===`external`?(c(),f(m,{key:0},[u(`div`,ve,[b(g(E),{modelValue:g(q).host,"onUpdate:modelValue":a[2]||=e=>g(q).host=e,modelModifiers:{trim:!0},name:`host`,as:`div`,class:`flex flex-col field-gap flex-1 min-w-0`},{default:l(({field:t,errors:n})=>[u(`label`,ye,d(e.$t(`views.settings.mqtt_host_label`)),1),b(D,T(t,{invalid:n.length>0,type:`text`,placeholder:`192.168.1.10`,class:`w-full`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`host`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),u(`div`,be,[u(`label`,xe,d(e.$t(`views.settings.mqtt_port_label`)),1),b(O,{modelValue:g(q).port,"onUpdate:modelValue":a[3]||=e=>g(q).port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])])]),u(`div`,Se,[u(`label`,Ce,d(e.$t(`views.settings.mqtt_protocol_label`)),1),b(x,{modelValue:g(q).protocol,"onUpdate:modelValue":a[4]||=e=>g(q).protocol=e,options:et,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`])]),u(`div`,we,[u(`div`,Te,[u(`label`,Ee,d(e.$t(`views.settings.mqtt_username_label`)),1),b(D,{modelValue:g(q).username,"onUpdate:modelValue":a[5]||=e=>g(q).username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),u(`div`,De,[u(`label`,Oe,d(e.$t(`views.settings.mqtt_password_label`)),1),b(V,{modelValue:g(J),"onUpdate:modelValue":a[6]||=e=>ie(J)?J.value=e:null,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`new-password`,placeholder:g(X)?`••••••••`:``},null,8,[`modelValue`,`placeholder`]),g(X)?(c(),y(s,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_password_keep_hint`)),1)]),_:1})):C(``,!0)])])],64)):(c(),f(m,{key:1},[u(`div`,ke,[u(`label`,Ae,d(e.$t(`views.settings.mqtt_broker_address`)),1),b(K,null,{default:l(()=>[b(D,{"model-value":g(Q),readonly:``,class:`font-mono text-xs`},null,8,[`model-value`]),b(U,null,{default:l(()=>[b(H,{"action-text":e.$t(`components.form.tooltip.copied`),icon:g(r),"button-props":{severity:`secondary`,text:!0},onAction:a[7]||=e=>g(i)(g(Q))},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_broker_address_hint`)),1)]),_:1})]),u(`div`,je,[u(`div`,Me,[u(`label`,Ne,d(e.$t(`views.settings.mqtt_port_label`)),1),b(O,{modelValue:g(q).broker.port,"onUpdate:modelValue":a[8]||=e=>g(q).broker.port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])]),u(`div`,Pe,[u(`label`,Fe,d(e.$t(`views.settings.mqtt_username_label`)),1),b(D,{modelValue:g(q).broker.username,"onUpdate:modelValue":a[9]||=e=>g(q).broker.username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),u(`div`,B,[u(`label`,Ie,d(e.$t(`views.settings.mqtt_password_label`)),1),b(K,null,{default:l(()=>[b(V,{modelValue:g(q).broker.password,"onUpdate:modelValue":a[10]||=e=>g(q).broker.password=e,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`off`},null,8,[`modelValue`]),b(U,null,{default:l(()=>[b(H,{"action-text":e.$t(`components.form.tooltip.copied`),icon:g(r),"button-props":{severity:`secondary`,text:!0},onAction:a[11]||=e=>g(i)(g(q).broker.password??``)},null,8,[`action-text`,`icon`])]),_:1})]),_:1})])])],64)),u(`div`,Le,[b(g(E),{modelValue:g(q).clientId,"onUpdate:modelValue":a[12]||=e=>g(q).clientId=e,modelModifiers:{trim:!0},name:`clientId`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:l(({field:t,errors:n})=>[u(`label`,Re,d(e.$t(`views.settings.mqtt_client_id_label`)),1),b(D,T(t,{invalid:n.length>0,type:`text`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`clientId`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),b(g(E),{modelValue:g(q).topicPrefix,"onUpdate:modelValue":a[13]||=e=>g(q).topicPrefix=e,modelModifiers:{trim:!0},name:`topicPrefix`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:l(({field:t,errors:n})=>[u(`label`,ze,d(e.$t(`views.settings.mqtt_topic_prefix_label`)),1),b(D,T(t,{invalid:n.length>0,type:`text`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`topicPrefix`,class:`cui-input-error`})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_topic_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])]),g(q).mode===`external`&&g(q).protocol===`mqtts`?(c(),f(m,{key:2},[u(`div`,Be,[u(`div`,Ve,[u(`label`,He,d(e.$t(`views.settings.mqtt_tls_reject_unauthorized`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_tls_reject_unauthorized_info`)),1)]),_:1})]),b(v,{modelValue:g(q).tls.rejectUnauthorized,"onUpdate:modelValue":a[14]||=e=>g(q).tls.rejectUnauthorized=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),u(`div`,Ue,[u(`label`,We,d(e.$t(`views.settings.mqtt_tls_ca_label`)),1),b(Y,{modelValue:g(q).tls.ca,"onUpdate:modelValue":a[15]||=e=>g(q).tls.ca=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),u(`div`,Ge,[u(`label`,Ke,d(e.$t(`views.settings.mqtt_tls_cert_label`)),1),b(Y,{modelValue:g(q).tls.cert,"onUpdate:modelValue":a[16]||=e=>g(q).tls.cert=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),u(`div`,qe,[u(`label`,Je,d(e.$t(`views.settings.mqtt_tls_key_label`)),1),b(Y,{modelValue:g(q).tls.key,"onUpdate:modelValue":a[17]||=e=>g(q).tls.key=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])])],64)):C(``,!0),u(`div`,Ye,[u(`div`,Xe,[u(`label`,Ze,d(e.$t(`views.settings.mqtt_ha_discovery`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_ha_discovery_info`)),1)]),_:1})]),b(v,{modelValue:g(q).haDiscovery.enabled,"onUpdate:modelValue":a[18]||=e=>g(q).haDiscovery.enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),g(q).haDiscovery.enabled?(c(),y(g(E),{key:3,modelValue:g(q).haDiscovery.prefix,"onUpdate:modelValue":a[19]||=e=>g(q).haDiscovery.prefix=e,modelModifiers:{trim:!0},name:`haDiscovery.prefix`,as:`div`,class:`flex flex-col field-gap`},{default:l(({field:t,errors:n})=>[u(`label`,Qe,d(e.$t(`views.settings.mqtt_ha_prefix_label`)),1),b(D,T(t,{invalid:n.length>0,type:`text`,placeholder:`homeassistant`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`haDiscovery.prefix`,class:`cui-input-error`})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(e.$t(`views.settings.mqtt_ha_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])):C(``,!0),u(`div`,$e,[b(Z,{type:`button`,severity:`secondary`,loading:g(G).isPending.value,disabled:g(q).mode===`external`&&!g(q).host,class:`cui-button-medium`,label:e.$t(`views.settings.mqtt_test`),onClick:ot},null,8,[`loading`,`disabled`,`label`]),b(Z,{type:`submit`,loading:g(W).isPending.value,class:`cui-button-medium ml-auto`,label:e.$t(`components.form.button.save`)},null,8,[`loading`,`label`])])])]),_:1})])]),_:1},8,[`validation-schema`])])):(c(),f(`div`,A,[b(o,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]))])}}});export{V as default};
1
+ import{Ft as e,H as t,Ir as n,M as ee,jt as te}from"./vendor-cameraui-C6beJsya.js";import{gt as ne,ht as r,i,mr as a,o,or as s}from"./api-1K2Gzz8B.js";import{Nn as c,Xn as l,an as u,b as re,br as d,cn as f,cr as p,en as m,fn as h,gr as g,hn as _,in as v,on as y,pn as b,qn as x,qt as S,rr as ie,sn as C,v as w,wn as T,y as E}from"./vendor-BaiDFVEr.js";import{J as D}from"./types-BTVMzSuj.js";import{K as ae,L as oe,R as se,_ as ce,a as le,i as ue,j as de,s as fe,z as pe}from"./vendor-primevue-DfyAPSov.js";import{t as O}from"./mqtt-CCq5JGGk.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`},B={class:`flex flex-col field-gap flex-1 min-w-0`},Ie={for:`brokerPassword`,class:`cui-label`},Le={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=_({__name:`SettingsMqtt`,setup(_){let D=new O,V=a(),{t:H}=n(),{data:U}=D.getMqttInfoQuery(),W=D.patchMqttInfoMutation(),G=D.testMqttConnectionMutation(),K=s(`/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=p(null),J=p(``),Y=p(null),X=v(()=>U.value?.passwordSet??!1),Z=v(()=>Y.value??U.value?.status??null),nt=v(()=>{switch(Z.value?.state){case`connected`:return`success`;case`connecting`:case`reconnecting`:return`warn`;case`error`:return`danger`;default:return`secondary`}}),rt=v(()=>{let e=Z.value?.state??`disabled`;return H(`views.settings.mqtt_state_${e}`)}),it=v(()=>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=v(()=>`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 x(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,a)=>{let o=te,s=pe,p=le,_=t,v=ae,x=de,D=ee,O=ce,V=fe,H=ne,U=oe,K=se,Y=ue,Z=e;return c(),f(`div`,k,[g(q)?(c(),f(`div`,j,[u(`div`,null,[u(`span`,M,d(n.$t(`views.settings.status`)),1),b(_,{class:`cui-card`},{content:l(()=>[u(`div`,N,[u(`div`,P,[u(`span`,F,d(n.$t(`views.settings.mqtt_broker`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint truncate`},{default:l(()=>[h(d(g(it)),1)]),_:1})]),b(p,{class:`ml-auto shrink-0`,severity:g(nt),value:g(rt)},null,8,[`severity`,`value`])])]),_:1})]),b(g(re),{class:`flex flex-col w-full gap-6`,"validation-schema":g(me),onSubmit:at},{default:l(()=>[u(`div`,null,[u(`span`,I,d(n.$t(`views.settings.mqtt_broker`)),1),b(_,{class:`cui-card`},{content:l(()=>[u(`div`,L,[u(`div`,R,[u(`div`,z,[u(`label`,he,d(n.$t(`components.form.label.enabled`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_enabled_info`)),1)]),_:1})]),b(v,{modelValue:g(q).enabled,"onUpdate:modelValue":a[0]||=e=>g(q).enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),u(`div`,ge,[u(`label`,_e,d(n.$t(`views.settings.mqtt_mode_label`)),1),b(x,{modelValue:g(q).mode,"onUpdate:modelValue":a[1]||=e=>g(q).mode=e,options:tt,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`]),g(q).mode===`embedded`?(c(),y(s,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_mode_embedded_info`)),1)]),_:1})):C(``,!0)]),g(q).mode===`external`?(c(),f(m,{key:0},[u(`div`,ve,[b(g(E),{modelValue:g(q).host,"onUpdate:modelValue":a[2]||=e=>g(q).host=e,modelModifiers:{trim:!0},name:`host`,as:`div`,class:`flex flex-col field-gap flex-1 min-w-0`},{default:l(({field:e,errors:t})=>[u(`label`,ye,d(n.$t(`views.settings.mqtt_host_label`)),1),b(D,T(e,{invalid:t.length>0,type:`text`,placeholder:`192.168.1.10`,class:`w-full`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`host`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),u(`div`,be,[u(`label`,xe,d(n.$t(`views.settings.mqtt_port_label`)),1),b(O,{modelValue:g(q).port,"onUpdate:modelValue":a[3]||=e=>g(q).port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])])]),u(`div`,Se,[u(`label`,Ce,d(n.$t(`views.settings.mqtt_protocol_label`)),1),b(x,{modelValue:g(q).protocol,"onUpdate:modelValue":a[4]||=e=>g(q).protocol=e,options:et,"option-label":`label`,"option-value":`value`},null,8,[`modelValue`])]),u(`div`,we,[u(`div`,Te,[u(`label`,Ee,d(n.$t(`views.settings.mqtt_username_label`)),1),b(D,{modelValue:g(q).username,"onUpdate:modelValue":a[5]||=e=>g(q).username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),u(`div`,De,[u(`label`,Oe,d(n.$t(`views.settings.mqtt_password_label`)),1),b(V,{modelValue:g(J),"onUpdate:modelValue":a[6]||=e=>ie(J)?J.value=e:null,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`new-password`,placeholder:g(X)?`••••••••`:``},null,8,[`modelValue`,`placeholder`]),g(X)?(c(),y(s,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_password_keep_hint`)),1)]),_:1})):C(``,!0)])])],64)):(c(),f(m,{key:1},[u(`div`,ke,[u(`label`,Ae,d(n.$t(`views.settings.mqtt_broker_address`)),1),b(K,null,{default:l(()=>[b(D,{"model-value":g(Q),readonly:``,class:`font-mono text-xs`},null,8,[`model-value`]),b(U,null,{default:l(()=>[b(H,{"action-text":n.$t(`components.form.tooltip.copied`),icon:g(r),"button-props":{severity:`secondary`,text:!0},onAction:a[7]||=e=>g(i)(g(Q))},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_broker_address_hint`)),1)]),_:1})]),u(`div`,je,[u(`div`,Me,[u(`label`,Ne,d(n.$t(`views.settings.mqtt_port_label`)),1),b(O,{modelValue:g(q).broker.port,"onUpdate:modelValue":a[8]||=e=>g(q).broker.port=e,min:1,max:65535,"use-grouping":!1,fluid:``},null,8,[`modelValue`])]),u(`div`,Pe,[u(`label`,Fe,d(n.$t(`views.settings.mqtt_username_label`)),1),b(D,{modelValue:g(q).broker.username,"onUpdate:modelValue":a[9]||=e=>g(q).broker.username=e,modelModifiers:{trim:!0},type:`text`,autocomplete:`off`,class:`w-full`},null,8,[`modelValue`])]),u(`div`,B,[u(`label`,Ie,d(n.$t(`views.settings.mqtt_password_label`)),1),b(K,null,{default:l(()=>[b(V,{modelValue:g(q).broker.password,"onUpdate:modelValue":a[10]||=e=>g(q).broker.password=e,feedback:!1,"toggle-mask":``,fluid:``,autocomplete:`off`},null,8,[`modelValue`]),b(U,null,{default:l(()=>[b(H,{"action-text":n.$t(`components.form.tooltip.copied`),icon:g(r),"button-props":{severity:`secondary`,text:!0},onAction:a[11]||=e=>g(i)(g(q).broker.password??``)},null,8,[`action-text`,`icon`])]),_:1})]),_:1})])])],64)),u(`div`,Le,[b(g(E),{modelValue:g(q).clientId,"onUpdate:modelValue":a[12]||=e=>g(q).clientId=e,modelModifiers:{trim:!0},name:`clientId`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:l(({field:e,errors:t})=>[u(`label`,Re,d(n.$t(`views.settings.mqtt_client_id_label`)),1),b(D,T(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`clientId`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`]),b(g(E),{modelValue:g(q).topicPrefix,"onUpdate:modelValue":a[13]||=e=>g(q).topicPrefix=e,modelModifiers:{trim:!0},name:`topicPrefix`,as:`div`,class:`flex flex-col field-gap flex-1`},{default:l(({field:e,errors:t})=>[u(`label`,ze,d(n.$t(`views.settings.mqtt_topic_prefix_label`)),1),b(D,T(e,{invalid:t.length>0,type:`text`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`topicPrefix`,class:`cui-input-error`})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_topic_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])]),g(q).mode===`external`&&g(q).protocol===`mqtts`?(c(),f(m,{key:2},[u(`div`,Be,[u(`div`,Ve,[u(`label`,He,d(n.$t(`views.settings.mqtt_tls_reject_unauthorized`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_tls_reject_unauthorized_info`)),1)]),_:1})]),b(v,{modelValue:g(q).tls.rejectUnauthorized,"onUpdate:modelValue":a[14]||=e=>g(q).tls.rejectUnauthorized=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),u(`div`,Ue,[u(`label`,We,d(n.$t(`views.settings.mqtt_tls_ca_label`)),1),b(Y,{modelValue:g(q).tls.ca,"onUpdate:modelValue":a[15]||=e=>g(q).tls.ca=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),u(`div`,Ge,[u(`label`,Ke,d(n.$t(`views.settings.mqtt_tls_cert_label`)),1),b(Y,{modelValue:g(q).tls.cert,"onUpdate:modelValue":a[16]||=e=>g(q).tls.cert=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])]),u(`div`,qe,[u(`label`,Je,d(n.$t(`views.settings.mqtt_tls_key_label`)),1),b(Y,{modelValue:g(q).tls.key,"onUpdate:modelValue":a[17]||=e=>g(q).tls.key=e,rows:`3`,"auto-resize":``,class:`font-mono text-xs`},null,8,[`modelValue`])])],64)):C(``,!0),u(`div`,Ye,[u(`div`,Xe,[u(`label`,Ze,d(n.$t(`views.settings.mqtt_ha_discovery`)),1),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_ha_discovery_info`)),1)]),_:1})]),b(v,{modelValue:g(q).haDiscovery.enabled,"onUpdate:modelValue":a[18]||=e=>g(q).haDiscovery.enabled=e,class:`ml-auto shrink-0`},null,8,[`modelValue`])]),g(q).haDiscovery.enabled?(c(),y(g(E),{key:3,modelValue:g(q).haDiscovery.prefix,"onUpdate:modelValue":a[19]||=e=>g(q).haDiscovery.prefix=e,modelModifiers:{trim:!0},name:`haDiscovery.prefix`,as:`div`,class:`flex flex-col field-gap`},{default:l(({field:e,errors:t})=>[u(`label`,Qe,d(n.$t(`views.settings.mqtt_ha_prefix_label`)),1),b(D,T(e,{invalid:t.length>0,type:`text`,placeholder:`homeassistant`}),null,16,[`invalid`]),b(S,{name:`fade`},{default:l(()=>[b(g(w),{name:`haDiscovery.prefix`,class:`cui-input-error`})]),_:1}),b(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:l(()=>[h(d(n.$t(`views.settings.mqtt_ha_prefix_info`)),1)]),_:1})]),_:1},8,[`modelValue`])):C(``,!0),u(`div`,$e,[b(Z,{type:`button`,severity:`secondary`,loading:g(G).isPending.value,disabled:g(q).mode===`external`&&!g(q).host,class:`cui-button-medium`,label:n.$t(`views.settings.mqtt_test`),onClick:ot},null,8,[`loading`,`disabled`,`label`]),b(Z,{type:`submit`,loading:g(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`])])):(c(),f(`div`,A,[b(o,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]))])}}});export{V as default};
@@ -0,0 +1 @@
1
+ import{A as e,Ft as t,H as n,Ir as r,M as ee,Vt as te,jt as ne}from"./vendor-cameraui-C6beJsya.js";import{hn as i,ir as a,mr as o}from"./api-1K2Gzz8B.js";import{Fn as s,Ln as re,Nn as c,Qt as ie,Xn as l,Zn as ae,an as u,br as d,cn as f,cr as p,en as m,fn as h,gr as g,hn as _,in as v,jn as y,on as b,or as x,pn as S,qn as C,sn as w}from"./vendor-BaiDFVEr.js";import{t as T}from"./useElectron-CtslU_0f.js";import{K as oe,S as se,T as ce,U as le,z as ue}from"./vendor-primevue-DfyAPSov.js";import{t as E}from"./notifications-C8eyTPRM.js";import{t as D}from"./usePushRegistration-Coz8RZob.js";import{t as de}from"./delete-BF6keuqy.js";import{t as fe}from"./CuiDataTable-DBNU5MJ_.js";import{t as O}from"./usePermissions-DpsfFydh.js";var pe={class:`flex flex-col w-full gap-6`},me={class:`card-title`},he={class:`flex flex-col gap-6`},ge={class:`text-sm`},_e={key:1,class:`flex items-center justify-center py-8`},ve={class:`flex items-center gap-4`},ye={class:`flex flex-col field-switch-gap`},be={class:`cui-label-switch`},xe={key:0,class:`flex items-center gap-4`},Se={class:`flex flex-col field-switch-gap min-w-0`},Ce={class:`cui-label-switch`},we={key:1,class:`flex items-center gap-4`},Te={class:`flex flex-col field-switch-gap min-w-0`},Ee={class:`cui-label-switch`},De={key:2,class:`flex flex-col gap-2`},Oe={class:`flex items-center gap-4`},ke={class:`flex flex-col field-switch-gap`},Ae={class:`cui-label-switch`},je={key:0,class:`grid grid-cols-1 sm:grid-cols-3 gap-3 mt-2`},Me={class:`flex flex-col field-gap`},Ne={for:`qh-from`,class:`cui-label`},Pe={class:`flex flex-col field-gap`},Fe={for:`qh-to`,class:`cui-label`},Ie={class:`flex flex-col field-gap`},Le={for:`qh-tz`,class:`cui-label`},Re={key:0},ze={class:`card-title`},Be={class:`flex flex-col gap-6`},Ve={class:`text-sm`},He={key:0,class:`flex items-center justify-center py-8`},Ue={key:1,class:`text-sm text-muted text-center py-8`},We={key:2,class:`flex flex-col gap-3`},Ge={class:`flex items-center gap-4`},Ke={class:`flex flex-col field-switch-gap`},qe={class:`cui-label-switch`},Je={key:1},Ye={class:`card-title`},Xe={class:`flex flex-col gap-6`},Ze={class:`text-sm`},Qe={key:0,class:`flex items-center justify-center py-8`},$e={key:1,class:`text-sm text-muted text-center py-8`},et={key:2,class:`flex flex-col gap-3`},tt={class:`flex items-center gap-4`},nt={class:`flex flex-col field-switch-gap`},rt={class:`cui-label-switch`},it={key:2},at={class:`card-title`},ot={class:`flex flex-col gap-6`},st={class:`text-sm`},ct={key:0,class:`flex items-center justify-center py-8`},lt={key:1,class:`text-sm text-muted text-center py-8`},ut={key:3,class:`flex justify-end gap-2`},k=_({__name:`SettingsNotifications`,setup(_){let k=new E,{t:A,te:dt}=r(),j=o(),ft=i(void 0,`admin`),{registerForPush:pt,forgetIfThisDevice:mt,getSyncState:ht,restoreMarker:gt}=D(),{isElectronApp:M,electron:N}=T(),{states:_t,refresh:vt}=O(),{data:P,isLoading:yt}=k.getSettingsQuery(),{data:F,isLoading:bt}=k.listDevicesQuery(()=>!0),{data:I,isLoading:xt}=k.listSourcesQuery(),{mutate:St,isPending:Ct}=k.setSettingsQuery(),{mutateAsync:wt}=k.setSettingsQuerySilent(),{mutate:Tt}=k.revokeDeviceQuery(),{mutate:L}=k.updateDeviceQuery(),R=Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`,z=p(null),B=p(``),V=p(!1),H=p(!1),U=p(!1),W=p(!0),G=p(!1),K=p(null),q=x({}),J=p(null),Et=v(()=>!!z.value&&JSON.stringify(z.value)!==B.value),Y=v(()=>!!z.value?.enabled),X=v(()=>Ct.value),Dt=v(()=>Q(z.value?.quietHours?.from)),Ot=v(()=>Q(z.value?.quietHours?.to));function Z(e){e&&(z.value=JSON.parse(JSON.stringify(e)),B.value=JSON.stringify(e))}function kt(){Z(P.value)}function At(e){z.value&&(e?z.value.quietHours={from:`22:00`,to:`07:00`,timezone:R}:delete z.value.quietHours)}function Q(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 jt(e){return e?`${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}`:`00:00`}function $(e,t){z.value?.quietHours&&(z.value.quietHours[e]=jt(t))}function Mt(e){return z.value?.systemTypes?.[e]!==!1}function Nt(e,t){z.value&&(z.value.systemTypes||(z.value.systemTypes={}),t?delete z.value.systemTypes[e]:z.value.systemTypes[e]=!1)}function Pt(e){return z.value?.sources?.[e]!==!1}function Ft(e,t){z.value&&(z.value.sources||(z.value.sources={}),t?delete z.value.sources[e]:z.value.sources[e]=!1)}function It(e){let t=`views.settings.notifications.system_types.${e.type.replaceAll(`.`,`_`)}`;return dt(t)?A(t):e.label}function Lt(){z.value&&St({settings:z.value},{onSuccess:e=>Z(e)})}async function Rt(e){if(!(!z.value||!P.value)){V.value=!0;try{Z(await wt({settings:{...P.value,enabled:e}}))}catch(e){j.add({severity:`error`,detail:e,life:3e3})}finally{V.value=!1}}}async function zt(){let e=a(),t=e?await ht(e,F.value):{status:`unknown`};H.value=t.status===`registered`,t.status===`registered`&&t.device&&e&&await gt(e,t.device.id)}async function Bt(){if(!(!M||!N))try{W.value=await N.invoke(`get-desktop-notifications`)}catch{}}async function Vt(e){if(N){G.value=!0;try{W.value=await N.invoke(`set-desktop-notifications`,e)}catch(e){j.add({severity:`error`,detail:e,life:3e3})}finally{G.value=!1}}}async function Ht(){U.value=!0;try{await pt(),await zt(),await k.queryClient.invalidateQueries({queryKey:[`notifications`,`devices`]})}catch(e){j.add({severity:`error`,detail:e,life:3e3})}finally{U.value=!1}}function Ut(e){K.value=e;let t=a();Tt({deviceId:e},{onSuccess:async()=>{t&&await mt(t,e),zt()},onSettled:()=>K.value=null})}function Wt(e){let t=q[e.id];if(t==null)return;let n=t.trim();if(!n||n===e.name){delete q[e.id];return}J.value=e.id,L({deviceId:e.id,patch:{name:n}},{onSuccess:()=>delete q[e.id],onSettled:()=>J.value=null})}function Gt(e,t){J.value=e,L({deviceId:e,patch:{active:t}},{onSettled:()=>J.value=null})}return C(P,Z,{immediate:!0}),C(F,()=>!1,{immediate:!0}),y(()=>{M&&Bt(),vt()}),(r,i)=>{let a=re(`RouterLink`),o=ue,p=ne,_=oe,v=t,y=e,x=ee,C=n,T=le,E=se,D=ce,O=de,k=fe,A=te;return c(),f(`div`,null,[u(`div`,pe,[u(`div`,null,[u(`span`,me,d(r.$t(`views.settings.notifications.general`)),1),S(C,{class:`cui-card`},{content:l(()=>[u(`div`,he,[u(`span`,ge,d(r.$t(`views.settings.notifications.general_info`)),1),g(_t).notifications===`denied`?(c(),b(o,{key:0,severity:`warn`,size:`small`},{default:l(()=>[h(d(r.$t(`views.settings.notifications.os_permission_denied`))+` `,1),S(a,{to:`/settings/permissions`,class:`underline`},{default:l(()=>[h(d(r.$t(`views.settings.notifications.os_permission_link`)),1)]),_:1})]),_:1})):w(``,!0),g(yt)&&!g(z)?(c(),f(`div`,_e,[S(p,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):g(z)?(c(),f(m,{key:2},[u(`div`,ve,[u(`div`,ye,[u(`label`,be,d(r.$t(`views.settings.notifications.enable`)),1),S(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(r.$t(`views.settings.notifications.enable_info`)),1)]),_:1})]),S(_,{"model-value":g(z).enabled,loading:g(V),class:`ml-auto shrink-0`,"onUpdate:modelValue":Rt},null,8,[`model-value`,`loading`])]),g(!1)&&g(z).enabled?(c(),f(`div`,xe,[u(`div`,Se,[u(`label`,Ce,d(r.$t(`views.settings.notifications.this_device`)),1),S(o,{severity:g(H)?`secondary`:`warn`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(g(H)?r.$t(`views.settings.notifications.this_device_synced`):r.$t(`views.settings.notifications.this_device_unsynced`)),1)]),_:1},8,[`severity`])]),S(v,{severity:g(H)?`secondary`:void 0,loading:g(U),class:`cui-button-small ml-auto shrink-0`,label:g(H)?r.$t(`views.settings.notifications.resync`):r.$t(`views.settings.notifications.sync`),onClick:Ht},null,8,[`severity`,`loading`,`label`])])):g(M)&&g(z).enabled?(c(),f(`div`,we,[u(`div`,Te,[u(`label`,Ee,d(r.$t(`views.settings.notifications.this_device`)),1),S(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(r.$t(`views.settings.notifications.this_device_desktop`)),1)]),_:1})]),S(_,{"model-value":g(W),loading:g(G),class:`ml-auto shrink-0`,"onUpdate:modelValue":Vt},null,8,[`model-value`,`loading`])])):w(``,!0),g(z).enabled?(c(),f(`div`,De,[u(`div`,Oe,[u(`div`,ke,[u(`label`,Ae,d(r.$t(`views.settings.notifications.quiet_hours`)),1),S(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(r.$t(`views.settings.notifications.quiet_hours_info`)),1)]),_:1})]),S(_,{"model-value":!!g(z).quietHours,class:`ml-auto shrink-0`,"onUpdate:modelValue":At},null,8,[`model-value`])]),g(z).quietHours?(c(),f(`div`,je,[u(`div`,Me,[u(`label`,Ne,d(r.$t(`views.settings.notifications.from`)),1),S(y,{"input-id":`qh-from`,"model-value":g(Dt),"time-only":``,"show-icon":``,"icon-display":`input`,class:`w-full`,"onUpdate:modelValue":i[0]||=e=>$(`from`,e)},null,8,[`model-value`])]),u(`div`,Pe,[u(`label`,Fe,d(r.$t(`views.settings.notifications.to`)),1),S(y,{"input-id":`qh-to`,"model-value":g(Ot),"time-only":``,"show-icon":``,"icon-display":`input`,class:`w-full`,"onUpdate:modelValue":i[1]||=e=>$(`to`,e)},null,8,[`model-value`])]),u(`div`,Ie,[u(`label`,Le,d(r.$t(`views.settings.notifications.timezone`)),1),S(x,{id:`qh-tz`,modelValue:g(z).quietHours.timezone,"onUpdate:modelValue":i[2]||=e=>g(z).quietHours.timezone=e,placeholder:g(R)},null,8,[`modelValue`,`placeholder`])])])):w(``,!0)])):w(``,!0)],64)):w(``,!0)])]),_:1})]),g(Y)&&g(ft)?(c(),f(`div`,Re,[u(`span`,ze,d(r.$t(`views.settings.notifications.system_notifications`)),1),S(C,{class:`cui-card`},{content:l(()=>[u(`div`,Be,[u(`span`,Ve,d(r.$t(`views.settings.notifications.system_notifications_info`)),1),g(xt)&&!g(I)?(c(),f(`div`,He,[S(p,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):g(I)?.system?.length?(c(),f(`div`,We,[(c(!0),f(m,null,s(g(I).system,(e,t)=>(c(),f(`div`,{key:e.type},[u(`div`,Ge,[u(`div`,Ke,[u(`label`,qe,d(It(e)),1),e.description?(c(),b(o,{key:0,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:l(()=>[h(d(e.description),1)]),_:2},1024)):w(``,!0)]),S(_,{"model-value":Mt(e.type),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>Nt(e.type,t)},null,8,[`model-value`,`onUpdate:modelValue`])]),t<g(I).system.length-1?(c(),b(T,{key:0,class:`my-2`})):w(``,!0)]))),128))])):(c(),f(`div`,Ue,d(r.$t(`views.settings.notifications.no_system_types`)),1))])]),_:1})])):w(``,!0),g(Y)?(c(),f(`div`,Je,[u(`span`,Ye,d(r.$t(`views.settings.notifications.plugin_notifications`)),1),S(C,{class:`cui-card`},{content:l(()=>[u(`div`,Xe,[u(`span`,Ze,d(r.$t(`views.settings.notifications.plugin_notifications_info`)),1),g(xt)&&!g(I)?(c(),f(`div`,Qe,[S(p,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):g(I)?.plugins?.length?(c(),f(`div`,et,[(c(!0),f(m,null,s(g(I).plugins,(e,t)=>(c(),f(`div`,{key:e.id},[u(`div`,tt,[u(`div`,nt,[u(`label`,rt,d(e.name),1)]),S(_,{"model-value":Pt(e.id),class:`ml-auto shrink-0`,"onUpdate:modelValue":t=>Ft(e.id,t)},null,8,[`model-value`,`onUpdate:modelValue`])]),t<g(I).plugins.length-1?(c(),b(T,{key:0,class:`my-2`})):w(``,!0)]))),128))])):(c(),f(`div`,$e,d(r.$t(`views.settings.notifications.no_plugin_sources`)),1))])]),_:1})])):w(``,!0),g(Y)?(c(),f(`div`,it,[u(`span`,at,d(r.$t(`views.settings.notifications.devices`)),1),S(C,{class:`cui-card`},{content:l(()=>[u(`div`,ot,[u(`span`,st,d(r.$t(`views.settings.notifications.devices_info`)),1),g(bt)&&!g(F)?(c(),f(`div`,ct,[S(p,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):g(F)?.length?(c(),b(k,{key:2,value:g(F),"striped-rows":``},{default:l(()=>[S(E,{field:`name`,header:r.$t(`views.settings.notifications.col_name`)},{body:l(({data:e})=>[S(x,{"model-value":g(q)[e.id]??e.name,disabled:g(J)===e.id,class:`w-full max-w-xs min-w-[150px]`,"onUpdate:modelValue":t=>g(q)[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`]),S(E,{field:`pluginName`,header:r.$t(`views.settings.notifications.col_plugin`)},{body:l(({data:e})=>[S(D,{label:e.pluginName,class:`text-xs`},null,8,[`label`])]),_:1},8,[`header`]),S(E,{field:`active`,header:r.$t(`views.settings.notifications.col_active`),style:{width:`7rem`}},{body:l(({data:e})=>[S(_,{"model-value":e.active,loading:g(J)===e.id,"onUpdate:modelValue":t=>Gt(e.id,t)},null,8,[`model-value`,`loading`,`onUpdate:modelValue`])]),_:1},8,[`header`]),S(E,{field:`actions`,header:``,style:{width:`6rem`}},{body:l(({data:e})=>[ae((c(),b(v,{severity:`danger`,text:``,rounded:``,class:`cui-icon-md`,loading:g(K)===e.id,onClick:t=>Ut(e.id)},{icon:l(()=>[S(O,{width:`100%`,height:`100%`})]),_:1},8,[`loading`,`onClick`])),[[A,{value:r.$t(`views.settings.notifications.revoke`)}]])]),_:1})]),_:1},8,[`value`])):(c(),f(`div`,lt,d(r.$t(`views.settings.notifications.no_devices`)),1))])]),_:1})])):w(``,!0),g(z)&&g(Et)?(c(),f(`div`,ut,[S(v,{severity:`secondary`,outlined:``,class:`cui-button-medium`,disabled:g(X),label:r.$t(`views.settings.notifications.reset`),onClick:kt},null,8,[`disabled`,`label`]),S(v,{severity:`success`,class:`cui-button-medium`,loading:g(X),label:r.$t(`views.settings.notifications.save`),onClick:Lt},null,8,[`loading`,`label`])])):w(``,!0)])])}}});export{k as default};
@@ -0,0 +1 @@
1
+ import{$r as e,Ft as t,H as n}from"./vendor-cameraui-C6beJsya.js";import{Fn as r,Nn as i,Xn as a,an as o,br as s,cn as c,cr as l,en as u,fn as d,gr as f,hn as p,jn as m,on as h,pn as g,sn as _}from"./vendor-BaiDFVEr.js";import{a as v,z as y}from"./vendor-primevue-DfyAPSov.js";import{t as b}from"./usePermissions-DpsfFydh.js";var x={class:`flex flex-col w-full gap-6`},S={class:`card-title`},C={class:`flex flex-col gap-6`},w={class:`text-sm`},T={class:`flex flex-col field-switch-gap min-w-0`},E={class:`cui-label-switch`},D={class:`flex items-center gap-2 ml-auto shrink-0`},O=p({__name:`SettingsPermissions`,setup(p){let{states:O,canOpenSettings:k,refresh:A,request:j,openSettings:M}=b(),N=[{name:`microphone`},{name:`location`},{name:`notifications`}],P=l(null);function F(e){return e===`granted`?`success`:e===`denied`?`danger`:e===`prompt`?`warn`:`secondary`}async function I(e){P.value=e;try{await j(e)}finally{P.value=null}}return e(document,`visibilitychange`,()=>{document.visibilityState===`visible`&&A()}),m(()=>{A()}),(e,l)=>{let p=y,m=v,b=t,A=n;return i(),c(`div`,null,[o(`div`,x,[o(`div`,null,[o(`span`,S,s(e.$t(`views.settings.permissions.general`)),1),g(A,{class:`cui-card`},{content:a(()=>[o(`div`,C,[o(`span`,w,s(e.$t(`views.settings.permissions.general_info`)),1),(i(),c(u,null,r(N,t=>o(`div`,{key:t.name,class:`flex items-center gap-4`},[o(`div`,T,[o(`label`,E,s(e.$t(`views.settings.permissions.${t.name}`)),1),g(p,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:a(()=>[d(s(e.$t(`views.settings.permissions.${t.name}_info`)),1)]),_:2},1024),f(O)[t.name]===`denied`&&!f(k)?(i(),h(p,{key:0,severity:`warn`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:a(()=>[d(s(e.$t(`views.settings.permissions.browser_hint`)),1)]),_:1})):_(``,!0)]),o(`div`,D,[g(m,{severity:F(f(O)[t.name]),value:e.$t(`views.settings.permissions.state_${f(O)[t.name]}`)},null,8,[`severity`,`value`]),f(O)[t.name]===`prompt`||f(O)[t.name]===`unknown`?(i(),h(b,{key:0,loading:f(P)===t.name,class:`cui-button-small`,label:e.$t(`views.settings.permissions.request`),onClick:e=>I(t.name)},null,8,[`loading`,`label`,`onClick`])):f(O)[t.name]===`denied`&&f(k)?(i(),h(b,{key:1,severity:`secondary`,class:`cui-button-small`,label:e.$t(`views.settings.permissions.open_settings`),onClick:f(M)},null,8,[`label`,`onClick`])):_(``,!0)])])),64))])]),_:1})])])])}}});export{O as default};
@@ -1 +1 @@
1
- import{Fr as e,H as t,Tt as n,b as r,jt as ee,xt as i}from"./vendor-cameraui-GaXYUHUd.js";import{Wt as a,mr as o}from"./api-CvO7u24f.js";import{Nn as s,Xn as c,an as l,br as u,cn as d,cr as f,fn as p,gr as m,hn as h,in as g,jn as _,on as v,pn as y,qn as b,sn as x}from"./vendor-BaiDFVEr.js";import{z as S}from"./vendor-primevue-CIRUBYsf.js";import{t as C}from"./CuiSchema-BJE7vHFH.js";import{t as w}from"./alert-outline-GrD7-zHq.js";import{t as te}from"./CuiPluginOAuthButton-ZRJJct-f.js";var T={class:`flex flex-col w-full gap-6`},E={key:0,class:`cui-banner cui-banner-error`},D={key:1,class:`cui-banner cui-banner-warn`},O={key:2,class:`cui-banner cui-banner-warn`},k={class:`card-title`},A={class:`flex items-center justify-between gap-4`},j={class:`min-w-0`},M={class:`text-sm`},N={class:`text-xs text-muted-color mt-1`},P={key:5},F={class:`card-title`},I={key:0,class:`flex items-center justify-center py-8`},L={key:1,class:`text-sm text-muted text-center py-8`},R=`@camera.ui/camera-ui-nvr`,z=h({__name:`SettingsRecordings`,setup(h){let{t:z}=e(),B=o(),{stats:V,isLoading:H,refresh:U}=r(),{state:W,refresh:G}=i(R),{isConnected:K,isLoading:q,config:J,getConfig:Y,setConfig:X,setValue:Z,submitValue:Q}=n(R),$=f(!1),ne=g(()=>({License:z(`views.settings.recordings.group_info_license`),Storage:z(`views.settings.recordings.group_info_storage`),"Face Recognition":z(`views.settings.recordings.group_info_faces`),GenAI:z(`views.settings.recordings.group_info_genai`),Moments:z(`views.settings.recordings.group_info_moments`),Episodes:z(`views.settings.recordings.group_info_episodes`)})),re=g(()=>{switch(W.value.status){case`connected`:return z(`components.oauth.connected_as`,{email:W.value.userEmail||`—`});case`awaiting_user`:case`polling`:return z(`components.oauth.tooltip_authorizing`);case`error`:return z(`components.oauth.error_generic`);default:return z(`views.settings.recordings.license_disconnected`)}});async function ie(e){try{await Z(e.key,void 0),B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}async function ae(e){try{let t=await Q(e.key,e.payload);t?.toast?B.add({severity:t.toast.type,detail:t.toast.message,life:3e3}):B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}async function oe(e){try{await X(e),B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}return b(K,async e=>{e&&await Y()},{immediate:!0}),_(async()=>{try{await G()}finally{$.value=!0}}),(e,n)=>{let r=a,i=w,o=S,f=t,h=ee;return s(),d(`div`,null,[l(`div`,T,[m(V)&&m(V).paused===!0?(s(),d(`div`,E,[y(r,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(e.$t(`views.settings.recordings.disk_critical`)),1)])):m(V)&&m(V).diskFreePercent>0&&m(V).diskFreePercent<8?(s(),d(`div`,D,[y(i,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(e.$t(`views.settings.recordings.disk_warning`)),1)])):x(``,!0),m(V)&&m(V).smallVolume?(s(),d(`div`,O,[y(i,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(e.$t(`views.settings.recordings.disk_small_volume`)),1)])):x(``,!0),m($)&&m(W).status!==`connected`?(s(),v(o,{key:3,severity:`warn`,size:`small`},{default:c(()=>[p(u(e.$t(`views.settings.recordings.cloud_login_hint`)),1)]),_:1})):x(``,!0),l(`div`,null,[l(`span`,k,u(e.$t(`views.settings.recordings.license_title`)),1),y(f,{class:`cui-card`},{content:c(()=>[l(`div`,A,[l(`div`,j,[l(`p`,M,u(m(re)),1),l(`p`,N,u(e.$t(`views.settings.recordings.license_description`)),1)]),y(te,{"plugin-name":R,class:`flex-shrink-0`})])]),_:1})]),m(J)?(s(),v(C,{key:4,"schema-form":{schema:m(J).schema,config:m(J).config},loading:m(q),"groups-as-cards":``,"group-descriptions":m(ne),onOnAction:ie,onOnSubmit:ae,onOnFormSubmit:oe},null,8,[`schema-form`,`loading`,`group-descriptions`])):(s(),d(`div`,P,[l(`span`,F,u(e.$t(`views.settings.recordings.global_settings`)),1),y(f,{class:`cui-card`},{content:c(()=>[m(H)||m(q)?(s(),d(`div`,I,[y(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(s(),d(`div`,L,u(e.$t(`views.settings.recordings.not_available`)),1))]),_:1})]))])])}}});export{z as default};
1
+ import{H as e,Ir as t,Tt as n,_ as r,jt as ee,xt as i}from"./vendor-cameraui-C6beJsya.js";import{Wt as a,mr as o}from"./api-1K2Gzz8B.js";import{Nn as s,Xn as c,an as l,br as u,cn as d,cr as f,fn as p,gr as m,hn as h,in as g,jn as _,on as v,pn as y,qn as b,sn as x}from"./vendor-BaiDFVEr.js";import{z as S}from"./vendor-primevue-DfyAPSov.js";import{t as C}from"./CuiSchema-DvY3Bdnz.js";import{t as w}from"./alert-outline-GrD7-zHq.js";import{t as te}from"./CuiPluginOAuthButton-6HQLdlfg.js";var T={class:`flex flex-col w-full gap-6`},E={key:0,class:`cui-banner cui-banner-error`},D={key:1,class:`cui-banner cui-banner-warn`},O={key:2,class:`cui-banner cui-banner-warn`},k={class:`card-title`},A={class:`flex items-center justify-between gap-4`},j={class:`min-w-0`},M={class:`text-sm`},N={class:`text-xs text-muted-color mt-1`},P={key:5},F={class:`card-title`},I={key:0,class:`flex items-center justify-center py-8`},L={key:1,class:`text-sm text-muted text-center py-8`},R=`@camera.ui/camera-ui-nvr`,z=h({__name:`SettingsRecordings`,setup(h){let{t:z}=t(),B=o(),{stats:V,isLoading:H,refresh:U}=r(),{state:W,refresh:G}=i(R),{isConnected:K,isLoading:q,config:J,getConfig:Y,setConfig:X,setValue:Z,submitValue:Q}=n(R),$=f(!1),ne=g(()=>({License:z(`views.settings.recordings.group_info_license`),Storage:z(`views.settings.recordings.group_info_storage`),"Face Recognition":z(`views.settings.recordings.group_info_faces`),GenAI:z(`views.settings.recordings.group_info_genai`),Moments:z(`views.settings.recordings.group_info_moments`),Episodes:z(`views.settings.recordings.group_info_episodes`)})),re=g(()=>{switch(W.value.status){case`connected`:return z(`components.oauth.connected_as`,{email:W.value.userEmail||`—`});case`awaiting_user`:case`polling`:return z(`components.oauth.tooltip_authorizing`);case`error`:return z(`components.oauth.error_generic`);default:return z(`views.settings.recordings.license_disconnected`)}});async function ie(e){try{await Z(e.key,void 0),B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}async function ae(e){try{let t=await Q(e.key,e.payload);t?.toast?B.add({severity:t.toast.type,detail:t.toast.message,life:3e3}):B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}async function oe(e){try{await X(e),B.add({severity:`success`,detail:z(`components.toast.config_updated`),life:3e3}),U()}catch(e){B.add({severity:`error`,detail:e,life:3e3})}}return b(K,async e=>{e&&await Y()},{immediate:!0}),_(async()=>{try{await G()}finally{$.value=!0}}),(t,n)=>{let r=a,i=w,o=S,f=e,h=ee;return s(),d(`div`,null,[l(`div`,T,[m(V)&&m(V).paused===!0?(s(),d(`div`,E,[y(r,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(t.$t(`views.settings.recordings.disk_critical`)),1)])):m(V)&&m(V).diskFreePercent>0&&m(V).diskFreePercent<8?(s(),d(`div`,D,[y(i,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(t.$t(`views.settings.recordings.disk_warning`)),1)])):x(``,!0),m(V)&&m(V).smallVolume?(s(),d(`div`,O,[y(i,{class:`shrink-0 w-5 h-5`}),l(`span`,null,u(t.$t(`views.settings.recordings.disk_small_volume`)),1)])):x(``,!0),m($)&&m(W).status!==`connected`?(s(),v(o,{key:3,severity:`warn`,size:`small`},{default:c(()=>[p(u(t.$t(`views.settings.recordings.cloud_login_hint`)),1)]),_:1})):x(``,!0),l(`div`,null,[l(`span`,k,u(t.$t(`views.settings.recordings.license_title`)),1),y(f,{class:`cui-card`},{content:c(()=>[l(`div`,A,[l(`div`,j,[l(`p`,M,u(m(re)),1),l(`p`,N,u(t.$t(`views.settings.recordings.license_description`)),1)]),y(te,{"plugin-name":R,class:`flex-shrink-0`})])]),_:1})]),m(J)?(s(),v(C,{key:4,"schema-form":{schema:m(J).schema,config:m(J).config},loading:m(q),"groups-as-cards":``,"group-descriptions":m(ne),onOnAction:ie,onOnSubmit:ae,onOnFormSubmit:oe},null,8,[`schema-form`,`loading`,`group-descriptions`])):(s(),d(`div`,P,[l(`span`,F,u(t.$t(`views.settings.recordings.global_settings`)),1),y(f,{class:`cui-card`},{content:c(()=>[m(H)||m(q)?(s(),d(`div`,I,[y(h,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(s(),d(`div`,L,u(t.$t(`views.settings.recordings.not_available`)),1))]),_:1})]))])])}}});export{z as default};