@camera.ui/server 2.2.6 → 2.2.8

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 (560) hide show
  1. package/dist/interface/assets/{404-BLVuKvLk.js → 404-BYV0u5qE.js} +1 -1
  2. package/dist/interface/assets/{About-C-AJ0jfI.js → About-DBOS1rfw.js} +1 -1
  3. package/dist/interface/assets/Assistant-BRcHj8hq.js +1 -0
  4. package/dist/interface/assets/Automation-C0Emde7z.js +3 -0
  5. package/dist/interface/assets/{AutomationImport-C8VYjDzf.js → AutomationImport-Iu-K82Os.js} +2 -2
  6. package/dist/interface/assets/{AutomationStore-CE4PKRGd.js → AutomationStore-C2G0Bk8c.js} +2 -2
  7. package/dist/interface/assets/{AutomationStoreDetail-DavWfjLv.js → AutomationStoreDetail-BbvLRJ5u.js} +2 -2
  8. package/dist/interface/assets/Automations-D-vfqRnZ.js +2 -0
  9. package/dist/interface/assets/Camera-BpurrgAr.js +2 -0
  10. package/dist/interface/assets/Camera-D0B7yyVD.css +1 -0
  11. package/dist/interface/assets/{CameraConsole-C4AmtcrM.js → CameraConsole-JBD3ZmJ6.js} +2 -2
  12. package/dist/interface/assets/{Cameras-DR577Bno.js → Cameras-R5mJGMK9.js} +2 -2
  13. package/dist/interface/assets/{Camview-Bri_T7Tq.css → Camview-DH6_8CxH.css} +1 -1
  14. package/dist/interface/assets/Camview-IbOVRx20.js +1 -0
  15. package/dist/interface/assets/{CertificateUpload-BYFKZCP9.js → CertificateUpload-B9S4EOQs.js} +1 -1
  16. package/dist/interface/assets/Config-CbFl5Wcp.js +2 -0
  17. package/dist/interface/assets/{ConfigActionAssistant-YtCVI8LZ.js → ConfigActionAssistant-DIOh6-np.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionCameraControl-Dg_1zOYt.js → ConfigActionCameraControl-Bw_egtpP.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionDelay-_EqbfWgo.js → ConfigActionDelay-B9i4YZjy.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionHttp-BzwLv2tn.js → ConfigActionHttp-DFtxAa3U.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionImageInput-CLdY2sV4.js → ConfigActionImageInput-CuTH4Nw2.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionMqtt-lGqYshl3.js → ConfigActionMqtt-B9SfWP-G.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionNotification-D5Dj3EoU.js → ConfigActionNotification-BGMIByJT.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionNotificationControl-Dy5fKamr.js → ConfigActionNotificationControl-Cz72szMd.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionOutput-DzsQ31L0.js → ConfigActionOutput-BG6DoIRe.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionPlugin-BFrBcXvL.js → ConfigActionPlugin-B5oRSE9n.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionSensor-CX8ePlan.js → ConfigActionSensor-BErRRYfl.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionSnapshot-BATLRmh6.js → ConfigActionSnapshot-Di-uxMrg.js} +1 -1
  29. package/dist/interface/assets/{ConfigActionVariable-Dgn5jvaR.js → ConfigActionVariable-BBpUti5A.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionIfElse-D5IIBjyk.js → ConfigConditionIfElse-DjOKPXQw.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionSensorState-C0JxBWdG.js → ConfigConditionSensorState-BzvvZvD0.js} +1 -1
  32. package/dist/interface/assets/{ConfigConditionSwitch-Brlgd0XP.js → ConfigConditionSwitch-DQvdfUxR.js} +1 -1
  33. package/dist/interface/assets/{ConfigConditionTime-CM4bSMyU.js → ConfigConditionTime-BqOElX5C.js} +1 -1
  34. package/dist/interface/assets/{ConfigSensorValueInput-CtuH8dCa.js → ConfigSensorValueInput-BT-0LhSH.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerDetection-DsL7lLQl.js → ConfigTriggerDetection-1OkudUah.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerGeofence-CAGIk1_W.js → ConfigTriggerGeofence-HGatk3C5.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerManual-DgkR-GWy.js → ConfigTriggerManual-DpRr_vVq.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerMqtt-B_iFalAQ.js → ConfigTriggerMqtt-C_MId3BY.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSchedule-E_QWfNKy.js → ConfigTriggerSchedule-BmwDqd6N.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerSensor-hYNbLXUu.js → ConfigTriggerSensor-Rgx8q4g8.js} +1 -1
  41. package/dist/interface/assets/{ConfigTriggerSystem-DR1EFpE9.js → ConfigTriggerSystem-4VsHPmbn.js} +1 -1
  42. package/dist/interface/assets/{ConfigTriggerWebhook-C-B5GGFH.js → ConfigTriggerWebhook-Bs7zEfY0.js} +1 -1
  43. package/dist/interface/assets/Console-oCuuVKET.js +1 -0
  44. package/dist/interface/assets/{CuiAssistantConversation-BmshW6Vc.css → CuiAssistantConversation-BmBhwrNh.css} +1 -1
  45. package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +5 -0
  46. package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +1 -0
  47. package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +1 -0
  48. package/dist/interface/assets/{CuiBottomSheet-C2sM2E3M.js → CuiBottomSheet-Dd3uOtnC.js} +1 -1
  49. package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +1 -0
  50. package/dist/interface/assets/CuiCameraPipCard-TYTCfwXf.css +1 -0
  51. package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +1 -0
  52. package/dist/interface/assets/{CuiCameraShares-B6jdUBVm.js → CuiCameraShares-jrrUEHoZ.js} +1 -1
  53. package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +1 -0
  54. package/dist/interface/assets/{CuiCameraTable-CpBo25Qc.js → CuiCameraTable-C7WLZ2pA.js} +2 -2
  55. package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +1 -0
  56. package/dist/interface/assets/CuiChartTable-DCr_AsSw.css +1 -0
  57. package/dist/interface/assets/{CuiConsole-BGptpT6r.js → CuiConsole-CkZML0iY.js} +2 -2
  58. package/dist/interface/assets/CuiDataTable-BFIhx1D3.js +1 -0
  59. package/dist/interface/assets/{CuiLightControl-wbZi3fA1.js → CuiLightControl-DitIWqUr.js} +1 -1
  60. package/dist/interface/assets/{CuiList-Dsu5m0TA.js → CuiList-BewTNr2X.js} +1 -1
  61. package/dist/interface/assets/CuiMarkdownContent-Do04YgHe.js +1 -0
  62. package/dist/interface/assets/{CuiMarkdownContent-BYBQX_aF.js → CuiMarkdownContent-qOPm3VEi.js} +1 -1
  63. package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +2 -0
  64. package/dist/interface/assets/{CuiPluginCategoryChip-BtJ_6_gN.js → CuiPluginCategoryChip-DlzOwRgc.js} +1 -1
  65. package/dist/interface/assets/{CuiPluginOAuthButton-Duf35I8K.js → CuiPluginOAuthButton-BQZkTcgo.js} +2 -2
  66. package/dist/interface/assets/{CuiPluginTrustBadge-jxXeRTH2.js → CuiPluginTrustBadge-DbqdfdaL.js} +1 -1
  67. package/dist/interface/assets/{CuiQRCode-BNchrpoB.js → CuiQRCode-2WsWJQFi.js} +1 -1
  68. package/dist/interface/assets/{CuiSchema-DGTMkVSe.js → CuiSchema-BL0QZmP2.js} +1 -1
  69. package/dist/interface/assets/{CuiTopNavbarItem-CHtLvn53.js → CuiTopNavbarItem-Ti2TueU1.js} +1 -1
  70. package/dist/interface/assets/Faces-DARrGLXf.js +1 -0
  71. package/dist/interface/assets/{FirstSteps-HzaBMDbH.js → FirstSteps-DBYPBvGr.js} +1 -1
  72. package/dist/interface/assets/Floorplan-BaZvzoyv.js +1 -0
  73. package/dist/interface/assets/{Instances-Dl-6rL5O.js → Instances-r0xReURi.js} +1 -1
  74. package/dist/interface/assets/{Logs-DsJkuQFq.js → Logs-DMehPk0t.js} +2 -2
  75. package/dist/interface/assets/{Menu-D_woMkjL.js → Menu-C34RRyLd.js} +1 -1
  76. package/dist/interface/assets/Metrics-BjoC71_O.js +12 -0
  77. package/dist/interface/assets/Metrics-DsHBab6t.css +1 -0
  78. package/dist/interface/assets/{OAuthDeviceFlow-CXfILAE1.js → OAuthDeviceFlow-CdZxelf2.js} +1 -1
  79. package/dist/interface/assets/Plugin-npx7CnwV.js +1 -0
  80. package/dist/interface/assets/{PluginConsole-C96m5zKy.js → PluginConsole-D1BRQCO9.js} +2 -2
  81. package/dist/interface/assets/PluginDetail-nwTrJmO6.js +2 -0
  82. package/dist/interface/assets/{PluginSchema-u1bqXU29.js → PluginSchema-B9VsBHOU.js} +1 -1
  83. package/dist/interface/assets/PluginSearch-CP2kQWKf.js +1 -0
  84. package/dist/interface/assets/PluginSearch-WEvbKMRs.js +2 -0
  85. package/dist/interface/assets/{PluginUpdateProgress-BT4lN9HT.js → PluginUpdateProgress-uj0XPV-_.js} +1 -1
  86. package/dist/interface/assets/Plugins-CPx9Hszm.js +1 -0
  87. package/dist/interface/assets/{RecentEventsFilter-Kp_lTOuG.js → RecentEventsFilter-D5VSH2K1.js} +1 -1
  88. package/dist/interface/assets/Recordings-De6Zcv0M.js +1 -0
  89. package/dist/interface/assets/SensorEdit-SD_oHBRo.js +1 -0
  90. package/dist/interface/assets/{SensorHistory-Cet35_RO.js → SensorHistory-SxiLOloa.js} +1 -1
  91. package/dist/interface/assets/Sensors-Djl64M-W.js +2 -0
  92. package/dist/interface/assets/{Settings-C-LCDIbK.js → Settings-CAf2reGs.js} +1 -1
  93. package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +1 -0
  94. package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +1 -0
  95. package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +1 -0
  96. package/dist/interface/assets/{SettingsAppearance-BS4EQNjH.js → SettingsAppearance-DQzQmVzE.js} +1 -1
  97. package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +1 -0
  98. package/dist/interface/assets/{SettingsBackup-DBlV1gej.js → SettingsBackup-CVExGnOo.js} +1 -1
  99. package/dist/interface/assets/{SettingsList-D8eSwbBY.js → SettingsList-vo7sz_MY.js} +1 -1
  100. package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +1 -0
  101. package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +1 -0
  102. package/dist/interface/assets/{SettingsPermissions-CJiz0Z7B.js → SettingsPermissions-BlOf6HEy.js} +1 -1
  103. package/dist/interface/assets/{SettingsRecordings-CLz9Zp47.js → SettingsRecordings-7tTBg6m1.js} +1 -1
  104. package/dist/interface/assets/SettingsRemote-CsIGx-LU.css +1 -0
  105. package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +2 -0
  106. package/dist/interface/assets/{SettingsSystem-txTFGomQ.js → SettingsSystem-DaFMsZpN.js} +2 -2
  107. package/dist/interface/assets/{SettingsUsers-CUp6vQPc.js → SettingsUsers-DXACwVPi.js} +1 -1
  108. package/dist/interface/assets/Terminal-DtGqlHbk.js +4 -0
  109. package/dist/interface/assets/{Training-Bkn52mPJ.css → Training-C-ToeAl4.css} +1 -1
  110. package/dist/interface/assets/Training-Ca11D1Vj.js +1 -0
  111. package/dist/interface/assets/Updates-yenwuqnD.js +2 -0
  112. package/dist/interface/assets/{VariableInput-183LygmK.js → VariableInput-CcILik4M.js} +1 -1
  113. package/dist/interface/assets/{VariableSuggestions-DwLtlzVz.js → VariableSuggestions-Bj0HdrYW.js} +1 -1
  114. package/dist/interface/assets/{VersionsHandler-DkbkcypK.js → VersionsHandler-BA8Lcysg.js} +1 -1
  115. package/dist/interface/assets/{VirtualSensorCreate-Bn4tgdxA.js → VirtualSensorCreate-DvHyw7I2.js} +1 -1
  116. package/dist/interface/assets/{Workers-DH59zE1C.css → Workers-Dey1snI4.css} +1 -1
  117. package/dist/interface/assets/Workers-Dyo44zxe.js +2 -0
  118. package/dist/interface/assets/{account-DwW7pBOb.js → account-DjBQulDn.js} +1 -1
  119. package/dist/interface/assets/ace-BPAekgyf.js +1 -0
  120. package/dist/interface/assets/{ace.config-CCyX_Ohk.js → ace.config-CvKE-yp1.js} +1 -1
  121. package/dist/interface/assets/{alert-circle-BdUVAt1B.js → alert-circle-B-JCMbb9.js} +1 -1
  122. package/dist/interface/assets/{alert-outline-IRxYbw0j.js → alert-outline-B4ZZowEj.js} +1 -1
  123. package/dist/interface/assets/api-CHQlxVtZ.css +2 -0
  124. package/dist/interface/assets/{api-h4HRB3ef.js → api-CKbL5jC7.js} +1 -1
  125. package/dist/interface/assets/api-CLazgL-g.js +4 -0
  126. package/dist/interface/assets/{arrow-left-Bk-ZrOVr.js → arrow-left-PeaVwpHd.js} +1 -1
  127. package/dist/interface/assets/{assistant-4hYyIu6D.js → assistant-CwmHp5bB.js} +1 -1
  128. package/dist/interface/assets/{assistantModels-BsSgRsws.js → assistantModels-D3ncWWu0.js} +1 -1
  129. package/dist/interface/assets/{auth-DFesRtwI.js → auth-AfZrkJ2f.js} +1 -1
  130. package/dist/interface/assets/{automations-D2bnX8uw.js → automations-DOCG0q8-.js} +1 -1
  131. package/dist/interface/assets/{back-filled-D-X19YMO.js → back-filled-CJoz7Gkl.js} +1 -1
  132. package/dist/interface/assets/{bell-ring-DreEHgoT.js → bell-ring-CBf0Yn3H.js} +1 -1
  133. package/dist/interface/assets/{brain-DuDAg544.js → brain-uZ03n3LW.js} +1 -1
  134. package/dist/interface/assets/cameraSources-mHEz9ROa.js +1 -0
  135. package/dist/interface/assets/{cctv-DM-C_8_6.js → cctv-VgKQ-dBV.js} +1 -1
  136. package/dist/interface/assets/{check-circle-Bevuw8-0.js → check-circle-BU-KNgPB.js} +1 -1
  137. package/dist/interface/assets/{check-circle-outline-aMxkvksr.js → check-circle-outline-BsxzAMed.js} +1 -1
  138. package/dist/interface/assets/{chevron-down-CCFn9Z56.js → chevron-down-CxK4Sfjs.js} +1 -1
  139. package/dist/interface/assets/{chevron-up-CSImUM3_.js → chevron-up-DWfNH8va.js} +1 -1
  140. package/dist/interface/assets/{clock-outline-DH3WIEJt.js → clock-outline-BtWx4GaF.js} +1 -1
  141. package/dist/interface/assets/{close-CMxyM4v9.js → close-Be7oB7d_.js} +1 -1
  142. package/dist/interface/assets/{close-circle-CfgJCZ9A.js → close-circle-D7Jmhp_7.js} +1 -1
  143. package/dist/interface/assets/{cloud-check-CbdFLIdR.js → cloud-check-zCGJxpWI.js} +1 -1
  144. package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +1 -0
  145. package/dist/interface/assets/{config-DDaCrMSU.js → config-AG0SnOiY.js} +1 -1
  146. package/dist/interface/assets/{content-copy-Bz49QPOI.js → content-copy-BcYlfuFc.js} +1 -1
  147. package/dist/interface/assets/{copy-DA6QQHRt.js → copy-DuY-M96E.js} +1 -1
  148. package/dist/interface/assets/{cube-scan-IiH8zwm2.js → cube-scan-Cae03i_N.js} +1 -1
  149. package/dist/interface/assets/{database-refresh-outline-CIUDpcuq.js → database-refresh-outline-B3OEQFF7.js} +1 -1
  150. package/dist/interface/assets/{delete-Btu-UVx9.js → delete-BWgOAzKl.js} +1 -1
  151. package/dist/interface/assets/{dist-D_qWDAKp.js → dist-DmpuuM9s.js} +1 -1
  152. package/dist/interface/assets/{dots-vertical-D496SIss.js → dots-vertical-Kby1GY8_.js} +1 -1
  153. package/dist/interface/assets/{download-BSC7lwq_.js → download-C291Yq7I.js} +1 -1
  154. package/dist/interface/assets/esm-B2TVBF3B.js +1 -0
  155. package/dist/interface/assets/esm-BEntuCG7.js +1 -0
  156. package/dist/interface/assets/esm-BRnyrFH8.js +1 -0
  157. package/dist/interface/assets/esm-CCwXzd_8.js +1 -0
  158. package/dist/interface/assets/esm-CEjwTsuD.js +1 -0
  159. package/dist/interface/assets/esm-CGGV9tC4.js +1 -0
  160. package/dist/interface/assets/esm-CI2tTOc5.js +1 -0
  161. package/dist/interface/assets/esm-CgxZmMYv.js +1 -0
  162. package/dist/interface/assets/esm-Csc6f5Fy.js +1 -0
  163. package/dist/interface/assets/esm-Qzx3d-Ie.js +1 -0
  164. package/dist/interface/assets/esm-a_w7mTdx.js +1 -0
  165. package/dist/interface/assets/esm-iKfsu7-H.js +1 -0
  166. package/dist/interface/assets/esm-ks5kvk_e.js +1 -0
  167. package/dist/interface/assets/esm-nJfTguKF.js +1 -0
  168. package/dist/interface/assets/{eventIcons-UQutPG3p.js → eventIcons-C3JWChgS.js} +1 -1
  169. package/dist/interface/assets/{eye-off-CSU0U8g7.js → eye-off-zGCIHKOK.js} +1 -1
  170. package/dist/interface/assets/{flowSchema-YJtAu9gB.js → flowSchema-B0d3VjU7.js} +1 -1
  171. package/dist/interface/assets/{help-circle-outline-Cr_yNhPi.js → help-circle-outline-DXFepDAG.js} +1 -1
  172. package/dist/interface/assets/{history-anuCbp1T.js → history-D-FlZdKD.js} +1 -1
  173. package/dist/interface/assets/{home-N3bDR1vX.js → home-DPdzRxcM.js} +1 -1
  174. package/dist/interface/assets/{information-outline-CMWIvLNB.js → information-outline-ChOM9qgI.js} +1 -1
  175. package/dist/interface/assets/{intercomService-CjoJaOZ7.js → intercomService-DG3EeZ6s.js} +1 -1
  176. package/dist/interface/assets/{lan-CYXjdk7L.js → lan-DvYEO83l.js} +1 -1
  177. package/dist/interface/assets/{main-DVa5U7UB.css → main-CGY9cVyi.css} +1 -1
  178. package/dist/interface/assets/main-DkHV6YgB.js +3 -0
  179. package/dist/interface/assets/{microphone-BB2pATI_.js → microphone-D-T9xga4.js} +1 -1
  180. package/dist/interface/assets/{minus-BCp3ZNKO.js → minus-4T4INuO4.js} +1 -1
  181. package/dist/interface/assets/mqtt-DE2VbNdt.js +1 -0
  182. package/dist/interface/assets/native-CtfXrwj5.js +1 -0
  183. package/dist/interface/assets/native-JMtkOkIV.js +1 -0
  184. package/dist/interface/assets/{nodeDefinitions-ByrqsENY.js → nodeDefinitions-Dp8cnne1.js} +1 -1
  185. package/dist/interface/assets/{notifications-5yeK345h.js → notifications-8FH4ApEz.js} +1 -1
  186. package/dist/interface/assets/{pause-BQlxwAW2.js → pause-DHqHYA3V.js} +1 -1
  187. package/dist/interface/assets/{pencil-outline-CIQL5Kui.js → pencil-outline-D-GmPf8M.js} +1 -1
  188. package/dist/interface/assets/{pencil-CDsNnEXi.js → pencil-vACi-JzY.js} +1 -1
  189. package/dist/interface/assets/plugin-Dt5Xetfz.js +1 -0
  190. package/dist/interface/assets/{plugins-BTOdE_zv.js → plugins-2JLUEMYc.js} +1 -1
  191. package/dist/interface/assets/{plus-Bp4q9G7S.js → plus-BBUb8_uL.js} +1 -1
  192. package/dist/interface/assets/{plus-CySoovdr.js → plus-BJb7U4bN.js} +1 -1
  193. package/dist/interface/assets/{power-WmBLDR0-.js → power-Dm_aNIz-.js} +1 -1
  194. package/dist/interface/assets/{radar-CyYAmume.js → radar-Dcvdz--e.js} +1 -1
  195. package/dist/interface/assets/{refresh-CHTA3jVN.js → refresh-CO4F18Je.js} +1 -1
  196. package/dist/interface/assets/{restore-C8RNM5yX.js → restore-xRBt3Grb.js} +1 -1
  197. package/dist/interface/assets/{rooms-BCdm6IAx.js → rooms-DoAfzA8W.js} +1 -1
  198. package/dist/interface/assets/{round-alt-arrow-left-bold-Gh5mi_yR.js → round-alt-arrow-left-bold-CZHXzGS5.js} +1 -1
  199. package/dist/interface/assets/{search-BajCVmOI.js → search-D75YW08B.js} +1 -1
  200. package/dist/interface/assets/{sensorIcons-5Ynqwo3e.js → sensorIcons-BntiOPX7.js} +1 -1
  201. package/dist/interface/assets/{sensorSlots-BF70tpV7.js → sensorSlots-biaL-O8E.js} +1 -1
  202. package/dist/interface/assets/{sensors-CeFEEz8r.js → sensors-DyAMdS-H.js} +1 -1
  203. package/dist/interface/assets/server-BDRUGj61.js +1 -0
  204. package/dist/interface/assets/{settings-DnksaK7m.js → settings-DDOgc5BX.js} +1 -1
  205. package/dist/interface/assets/{source-branch-CzqIPffP.js → source-branch-DVHuYlkZ.js} +1 -1
  206. package/dist/interface/assets/{theme-DF_XA58O.js → theme-CLxrnR60.js} +1 -1
  207. package/dist/interface/assets/{trash-2-DJeEhHf4.js → trash-2-DDKPtl2x.js} +1 -1
  208. package/dist/interface/assets/{trash-can-outline-DrT6iw7I.js → trash-can-outline-DVH3zgo0.js} +1 -1
  209. package/dist/interface/assets/{trash-fill-Bb_-UicM.js → trash-fill-C_IJ4Vu2.js} +1 -1
  210. package/dist/interface/assets/{trash2-Dsl8gfxq.js → trash2-DY0XTaJD.js} +1 -1
  211. package/dist/interface/assets/{types-CklFkUXk.js → types-8JXzkoC8.js} +1 -1
  212. package/dist/interface/assets/{types-ArGM5-5O.js → types-B4LLKzDW.js} +1 -1
  213. package/dist/interface/assets/types-a7Nw-P-m.js +1 -0
  214. package/dist/interface/assets/{undo-DoqJW-k7.js → undo-YRkBYCnf.js} +1 -1
  215. package/dist/interface/assets/ungrouped-BoAbb9w3.js +1 -0
  216. package/dist/interface/assets/ungrouped-ChmBvcXp.css +1 -0
  217. package/dist/interface/assets/updates-F-veEP1I.js +1 -0
  218. package/dist/interface/assets/{upload-DtIcwiNC.js → upload-2WcHRjTq.js} +1 -1
  219. package/dist/interface/assets/{upload-C3w1XH-o.js → upload-BiE7VzTj.js} +1 -1
  220. package/dist/interface/assets/{useAppVersion-Dcvu95bZ.js → useAppVersion-BjUQmB7M.js} +1 -1
  221. package/dist/interface/assets/{useAssistantActions-Cc_O6M9_.js → useAssistantActions-CNEJol4o.js} +1 -1
  222. package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +1 -0
  223. package/dist/interface/assets/{useCameraOptions-8I4MTDgj.js → useCameraOptions-D_oduve2.js} +1 -1
  224. package/dist/interface/assets/useKeyboardInset-CPWSVYlA.js +1 -0
  225. package/dist/interface/assets/{useLogsSocket-bpOiLgWT.js → useLogsSocket-B_jXUqv8.js} +1 -1
  226. package/dist/interface/assets/{useNavLayout-Cjf6Da2u.js → useNavLayout-DEngIIeU.js} +1 -1
  227. package/dist/interface/assets/{usePermissions-BXTw4tII.js → usePermissions-DAO92InI.js} +1 -1
  228. package/dist/interface/assets/{usePluginUpdates-bOMj-IvL.js → usePluginUpdates-CJi8Y_wl.js} +1 -1
  229. package/dist/interface/assets/{usePushRegistration-HOvLuUVP.js → usePushRegistration-j9WCeFbv.js} +2 -2
  230. package/dist/interface/assets/{useServerRestart-CQN4cdHJ.js → useServerRestart-BVks5tuC.js} +1 -1
  231. package/dist/interface/assets/{useStreamStatus-Da7c2Wme.js → useStreamStatus-DQ0NSyU8.js} +1 -1
  232. package/dist/interface/assets/{useTabSwipe-fFuyJJBQ.js → useTabSwipe-CVq7EcIY.js} +1 -1
  233. package/dist/interface/assets/{useUpdateChannel-Ca1RX32u.js → useUpdateChannel-C0fjDvNP.js} +1 -1
  234. package/dist/interface/assets/{useUpdatesSocket-DHZNpLQX.js → useUpdatesSocket-DXKF9hzc.js} +1 -1
  235. package/dist/interface/assets/useUserOptions-UjMeAL5n.js +1 -0
  236. package/dist/interface/assets/{variable-ywTlRfo5.js → variable-Cp8o-q8t.js} +1 -1
  237. package/dist/interface/assets/vendor-Df81FCJz.js +29 -0
  238. package/dist/interface/assets/{vendor-ace-CvEoip98.js → vendor-ace-QSsGUspX.js} +1 -1
  239. package/dist/interface/assets/{vendor-cameraui-CK4yHsJi.js → vendor-cameraui-GmMRyJ2R.js} +45 -45
  240. package/dist/interface/assets/{vendor-capacitor-Bs_WzL0Q.js → vendor-capacitor-t5EIN1GG.js} +2 -2
  241. package/dist/interface/assets/{vendor-chart-DBK083Hu.js → vendor-chart-BiJYkx5_.js} +1 -1
  242. package/dist/interface/assets/{vendor-core-B-Q4es-f.js → vendor-core-BeAannbA.js} +1 -1
  243. package/dist/interface/assets/{vendor-dnd-DGQLvX6Y.js → vendor-dnd-C1kMh9_t.js} +1 -1
  244. package/dist/interface/assets/{vendor-draggabilly-D8CK6M-y.js → vendor-draggabilly-Cw1oJ6qc.js} +1 -1
  245. package/dist/interface/assets/vendor-leaflet-OSZlONe5.js +1 -0
  246. package/dist/interface/assets/{vendor-markdown-qHIinIUE.js → vendor-markdown-DTWiWKBj.js} +1 -1
  247. package/dist/interface/assets/{vendor-primevue-Cmp3VjIC.js → vendor-primevue-Zx6t06A4.js} +77 -77
  248. package/dist/interface/assets/{vendor-vueflow-bSwRZ9X8.js → vendor-vueflow-DWU_IzGe.js} +1 -1
  249. package/dist/interface/assets/web-B98ahwoP.js +1 -0
  250. package/dist/interface/assets/web-BSsSrRZf.js +1 -0
  251. package/dist/interface/assets/web-BiNRDta4.js +1 -0
  252. package/dist/interface/assets/web-BjKL51lK-CZKmYhby.js +1 -0
  253. package/dist/interface/assets/web-BjtOcquy.js +1 -0
  254. package/dist/interface/assets/web-CkTE9nCG.js +1 -0
  255. package/dist/interface/assets/web-Cvogq5S5.js +1 -0
  256. package/dist/interface/assets/web-D-A4EBKj.js +1 -0
  257. package/dist/interface/assets/web-DVGMBduz.js +1 -0
  258. package/dist/interface/assets/web-SpWB7I6X.js +1 -0
  259. package/dist/interface/assets/web-k0ihT_qK.js +1 -0
  260. package/dist/interface/assets/web-ovBpm7Dl.js +1 -0
  261. package/dist/interface/assets/web-z5Xz9tOQ.js +1 -0
  262. package/dist/interface/assets/web-zfhkFevT.js +1 -0
  263. package/dist/interface/assets/{webhook-CWKf2Qxu.js → webhook-DIjChTrs.js} +1 -1
  264. package/dist/interface/assets/workbox-window.prod.es5-DRKojI0e.js +1 -0
  265. package/dist/interface/assets/{zoom-in-CHkXAWHy.js → zoom-in-rMB152Uz.js} +1 -1
  266. package/dist/interface/ha/{404-C0mWQGWl.js → 404-D5gfy0Cd.js} +1 -1
  267. package/dist/interface/ha/{About-ByE7XErJ.js → About-JzlpCzBN.js} +3 -3
  268. package/dist/interface/ha/{Assistant-Z3FTR868.js → Assistant-DgOfGesf.js} +2239 -1725
  269. package/dist/interface/ha/{Automation-COQqTFNw.js → Automation-BDaWYiBu.js} +146 -146
  270. package/dist/interface/ha/{AutomationImport-ueWqMBX9.js → AutomationImport-BNB_PJ9R.js} +6 -6
  271. package/dist/interface/ha/{AutomationStore-DBO4aZqy.js → AutomationStore-_TeOt1wz.js} +73 -73
  272. package/dist/interface/ha/{AutomationStoreDetail-DMnYu7hf.js → AutomationStoreDetail-jjIEZoRi.js} +20 -20
  273. package/dist/interface/ha/{Automations-CMdbidc0.js → Automations-DM6FEVOw.js} +110 -110
  274. package/dist/interface/ha/Camera-sH9fRv18.js +670 -0
  275. package/dist/interface/ha/{CameraConsole-oMNZfKE6.js → CameraConsole-BoVql05l.js} +4 -4
  276. package/dist/interface/ha/{Cameras-CsqrLx97.js → Cameras-cQBGvXq7.js} +349 -347
  277. package/dist/interface/ha/{Camview-Br0LUakz.js → Camview-mkG5FXZM.js} +323 -319
  278. package/dist/interface/ha/{Config-Y5eUNSW7.js → Config-BNPDzo_h.js} +11 -11
  279. package/dist/interface/ha/{ConfigActionAssistant-hl-6ZACj.js → ConfigActionAssistant-C-8P3DYz.js} +4 -4
  280. package/dist/interface/ha/{ConfigActionCameraControl-DnXlVFWD.js → ConfigActionCameraControl-x1ksGL7m.js} +3 -3
  281. package/dist/interface/ha/{ConfigActionHttp-BkpkMmRd.js → ConfigActionHttp-DzCJp85z.js} +2 -2
  282. package/dist/interface/ha/{ConfigActionImageInput-Dp78_QS_.js → ConfigActionImageInput-C5C5U_2z.js} +1 -1
  283. package/dist/interface/ha/{ConfigActionMqtt-DA_UWb5j.js → ConfigActionMqtt-T29xb75r.js} +4 -4
  284. package/dist/interface/ha/{ConfigActionNotification-CQ4Ses3a.js → ConfigActionNotification-BcnyilF9.js} +3 -3
  285. package/dist/interface/ha/{ConfigActionNotificationControl-Cb5PNGz-.js → ConfigActionNotificationControl-D3wIVKuU.js} +2 -2
  286. package/dist/interface/ha/{ConfigActionOutput-DLuNHwRb.js → ConfigActionOutput-hD-yVczw.js} +1 -1
  287. package/dist/interface/ha/{ConfigActionPlugin-ChKFCNaj.js → ConfigActionPlugin-Bz1O-O4Q.js} +5 -5
  288. package/dist/interface/ha/{ConfigActionSensor-DOutFalW.js → ConfigActionSensor-FOz-PYl_.js} +5 -5
  289. package/dist/interface/ha/{ConfigActionSnapshot-GWgY6YIN.js → ConfigActionSnapshot-CmxEOuK1.js} +2 -2
  290. package/dist/interface/ha/{ConfigActionVariable-bu-9VYTG.js → ConfigActionVariable-BCvkrdCh.js} +1 -1
  291. package/dist/interface/ha/{ConfigConditionIfElse-iNp8tlZV.js → ConfigConditionIfElse-icfTG9OA.js} +3 -3
  292. package/dist/interface/ha/{ConfigConditionSensorState-Dn7kcHpJ.js → ConfigConditionSensorState-ClUAsm0d.js} +4 -4
  293. package/dist/interface/ha/{ConfigConditionSwitch-DaUlDgo0.js → ConfigConditionSwitch-C8AMCkn6.js} +5 -5
  294. package/dist/interface/ha/{ConfigSensorValueInput-D6m6suqJ.js → ConfigSensorValueInput-ChvDQzGd.js} +4 -4
  295. package/dist/interface/ha/{ConfigTriggerDetection-C5B_DC_L.js → ConfigTriggerDetection-aUSyaClu.js} +2 -2
  296. package/dist/interface/ha/{ConfigTriggerGeofence-B4WVNcK5.js → ConfigTriggerGeofence-DsJeJWP4.js} +7 -7
  297. package/dist/interface/ha/{ConfigTriggerMqtt-wnMfk_Un.js → ConfigTriggerMqtt-CsAxA7QZ.js} +1 -1
  298. package/dist/interface/ha/{ConfigTriggerSensor-xFpI5KPu.js → ConfigTriggerSensor-CTxr9cfU.js} +1 -1
  299. package/dist/interface/ha/{ConfigTriggerSystem-YI9WYYVM.js → ConfigTriggerSystem-C8UEfpfs.js} +2 -2
  300. package/dist/interface/ha/{ConfigTriggerWebhook-58c2KgUe.js → ConfigTriggerWebhook-frEE-SCB.js} +1 -1
  301. package/dist/interface/ha/{Console-Coiqh32K.js → Console-A3VtbsLg.js} +12 -12
  302. package/dist/interface/ha/{CuiAutomationRunsDialog-CJ2MGfEY.js → CuiAutomationRunsDialog-BlJvhBiX.js} +2 -2
  303. package/dist/interface/ha/{CuiBottomSheet-BlG9Pl9j.js → CuiBottomSheet-Cu-t3H0Z.js} +1 -1
  304. package/dist/interface/ha/{CuiCameraRecordings-DLXEB4Q7.js → CuiCameraRecordings-R5ArEmqJ.js} +10 -10
  305. package/dist/interface/ha/{CuiCameraShares-BCIeaM6u.js → CuiCameraShares-B9pfRkM4.js} +5 -5
  306. package/dist/interface/ha/{CuiCameraTable-PYYC7sOu.js → CuiCameraTable-CKjGKaMC.js} +9 -9
  307. package/dist/interface/ha/{CuiChartTable-FQ2iR5Hd.js → CuiChartTable-BxWjRe-k.js} +89 -74
  308. package/dist/interface/ha/{CuiConsole-C77k5q_-.js → CuiConsole-C5fzsR7t.js} +4 -4
  309. package/dist/interface/ha/{CuiDataTable-CIKQLseG.js → CuiDataTable-BOdQDY8J.js} +5 -5
  310. package/dist/interface/ha/{CuiPluginCard-DZNXKP_P.js → CuiPluginCard-BT71RRAD.js} +33 -33
  311. package/dist/interface/ha/{CuiPluginOAuthButton-DVf52_Zc.js → CuiPluginOAuthButton-moh9uS7G.js} +7 -7
  312. package/dist/interface/ha/{CuiPluginTrustBadge-CPljYiM8.js → CuiPluginTrustBadge-F_pVWkPJ.js} +1 -1
  313. package/dist/interface/ha/{CuiQRCode-oe8PLnLj.js → CuiQRCode-BNuj-nJ4.js} +6 -6
  314. package/dist/interface/ha/{CuiSchema-CQy94ZTs.js → CuiSchema-Cb_8Ks-I.js} +125 -125
  315. package/dist/interface/ha/{CuiTopNavbarItem-D6OHZLQY.js → CuiTopNavbarItem-BGzrrTls.js} +1 -1
  316. package/dist/interface/ha/{Faces-DxAPvemO.js → Faces-CsM5VO8Q.js} +247 -247
  317. package/dist/interface/ha/{FirstSteps-ZINTSaeL.js → FirstSteps-BFX0-EEi.js} +12 -12
  318. package/dist/interface/ha/{Floorplan-DkbL8ppT.js → Floorplan-D6MGqSJT.js} +198 -199
  319. package/dist/interface/ha/{Instances-totWtqd7.js → Instances-CHzIUyyA.js} +72 -72
  320. package/dist/interface/ha/{Logs-CzabIFja.js → Logs-DZKM3dWv.js} +10 -10
  321. package/dist/interface/ha/{Menu-DcVBOQfw.js → Menu-BQz4dfQi.js} +8 -8
  322. package/dist/interface/ha/{Metrics-B_SN5hbp.js → Metrics-CdpWJ1mm.js} +310 -308
  323. package/dist/interface/ha/{OAuthDeviceFlow-B28TPsTQ.js → OAuthDeviceFlow-DUELtx3X.js} +9 -9
  324. package/dist/interface/ha/{Plugin-B2PbbB8d.js → Plugin-5bbTF0Rv.js} +92 -92
  325. package/dist/interface/ha/{PluginConsole-_KeG4FvO.js → PluginConsole-C__0lzsS.js} +4 -4
  326. package/dist/interface/ha/{PluginDetail-GK_Fx14e.js → PluginDetail-Blrktk9W.js} +9 -9
  327. package/dist/interface/ha/{PluginSearch-qSy4aqAW.js → PluginSearch-BKbdwHQ1.js} +121 -121
  328. package/dist/interface/ha/{PluginUpdateProgress-C4Q2j6VO.js → PluginUpdateProgress-IsNiecu3.js} +3 -3
  329. package/dist/interface/ha/{Plugins-D0tvZHie.js → Plugins-CC2Dwlx5.js} +53 -53
  330. package/dist/interface/ha/{Recordings-CpxJYaAa.js → Recordings-B1XsJrzs.js} +303 -301
  331. package/dist/interface/ha/{SensorEdit-8KtqLXEu.js → SensorEdit-Bi2Yx_ji.js} +46 -46
  332. package/dist/interface/ha/{SensorHistory-CPTTsdjM.js → SensorHistory-sqG_6eav.js} +2 -2
  333. package/dist/interface/ha/{Sensors-DJt_Hnn2.js → Sensors-DLtOh1p4.js} +509 -510
  334. package/dist/interface/ha/{Settings-B-OdG5pG.js → Settings-DI3_zenm.js} +38 -38
  335. package/dist/interface/ha/{SettingsAccount-Ba2-2Lbi.js → SettingsAccount-pS86Qyr-.js} +251 -251
  336. package/dist/interface/ha/{SettingsAppearance-D56HjSuQ.js → SettingsAppearance-tS3bubKQ.js} +4 -4
  337. package/dist/interface/ha/{SettingsAssistant-DglU0auc.js → SettingsAssistant-LejCRXsF.js} +501 -501
  338. package/dist/interface/ha/{SettingsBackup-DZx4McDz.js → SettingsBackup-CkhD1Kze.js} +23 -23
  339. package/dist/interface/ha/{SettingsList-D9nIGkbE.js → SettingsList-bibwvPSM.js} +2 -2
  340. package/dist/interface/ha/{SettingsMqtt-BOszh--k.js → SettingsMqtt-DSt0B4Qg.js} +18 -18
  341. package/dist/interface/ha/{SettingsNotifications-DBVpZfp0.js → SettingsNotifications-BF7ajNwE.js} +118 -118
  342. package/dist/interface/ha/{SettingsRecordings-D3oJnizu.js → SettingsRecordings-BTIdncxg.js} +9 -9
  343. package/dist/interface/ha/{SettingsRemote-BOotvcOT.js → SettingsRemote-Cba4P1-O.js} +347 -344
  344. package/dist/interface/ha/{SettingsSystem-Bg11qoQX.js → SettingsSystem-_Nnh2ZF5.js} +9 -9
  345. package/dist/interface/ha/{SettingsUsers-KpLs9Jnh.js → SettingsUsers-BfHFoxJi.js} +83 -83
  346. package/dist/interface/ha/{Terminal-D6opTHYI.js → Terminal-Dv_7oWmS.js} +11 -11
  347. package/dist/interface/ha/Training-CaSFA5oH.js +1699 -0
  348. package/dist/interface/ha/{Updates-C_OvXJjd.js → Updates-BHl5H7zE.js} +15 -15
  349. package/dist/interface/ha/{VariableInput-CfaDp67S.js → VariableInput-DtLo7-Nw.js} +1 -1
  350. package/dist/interface/ha/{VersionsHandler-D1FVeYUZ.js → VersionsHandler-CF0DSeol.js} +10 -10
  351. package/dist/interface/ha/{VirtualSensorCreate-DJIgMVrt.js → VirtualSensorCreate-C907EgIz.js} +2 -2
  352. package/dist/interface/ha/Workers-Dz1d9gEQ.js +814 -0
  353. package/dist/interface/ha/{ace-B3bPzJu9.js → ace-C9MtBQVV.js} +1 -1
  354. package/dist/interface/ha/{ace.config-Dt55Nqby.js → ace.config-CSXnaIzV.js} +1 -1
  355. package/dist/interface/ha/{api-D2VzV4is.js → api-DUqpDJ2N.js} +14361 -14070
  356. package/dist/interface/ha/{api-CDawdL4p.js → api-gId1nlMj.js} +4 -4
  357. package/dist/interface/ha/{assistant-BmDAfChm.js → assistant-BaR65gIY.js} +50 -50
  358. package/dist/interface/ha/{auth-CvLz9C4w.js → auth-Btsz_KxO.js} +38 -38
  359. package/dist/interface/ha/{automationBlueprint-BhNaeOZ1.js → automationBlueprint-CuO3iOiM.js} +3 -3
  360. package/dist/interface/ha/cameraui-cards.js +1 -1
  361. package/dist/interface/ha/{cards-MQrnU0T8.js → cards-DWhezIPP.js} +1447 -1407
  362. package/dist/interface/ha/{config-t_oAKFkJ.js → config-BKStpoEQ.js} +12 -12
  363. package/dist/interface/ha/{dist-oFWkn6pD.js → dist-CM7R4_Gj.js} +34 -25
  364. package/dist/interface/ha/{mqtt-C20h1uze.js → mqtt-ajcSmTB-.js} +14 -14
  365. package/dist/interface/ha/{notifications-Cy9DKiEn.js → notifications-Cf9dXHEO.js} +18 -18
  366. package/dist/interface/ha/{pinia-BokSpDzj.js → pinia-DIKO5lnE.js} +267 -259
  367. package/dist/interface/ha/{plugins-jozYyBhV.js → plugins-ml823dJV.js} +61 -61
  368. package/dist/interface/ha/{rooms-DyfT3cXp.js → rooms-C5gUErBi.js} +9 -9
  369. package/dist/interface/ha/{server-hCCjQjZE.js → server-dArenpJI.js} +26 -26
  370. package/dist/interface/ha/{types-RG0SckNR.js → types-DYymuACA.js} +25 -25
  371. package/dist/interface/ha/{ungrouped-BbyfoCQp.js → ungrouped-BHLAySWP.js} +237 -213
  372. package/dist/interface/ha/{updates-hUgVDgoD.js → updates-D5sFzGtC.js} +33 -33
  373. package/dist/interface/ha/{useAppVersion-wNhZDuvR.js → useAppVersion-C5x3Ap4_.js} +1 -1
  374. package/dist/interface/ha/{useKeyboardInset-Cmbvb_W3.js → useKeyboardInset-Cj0T2AFX.js} +1 -1
  375. package/dist/interface/ha/{useLogsSocket-y9Aex3tJ.js → useLogsSocket-DtvfQlPh.js} +1 -1
  376. package/dist/interface/ha/{useNavLayout-Ehb0t34k.js → useNavLayout-HSFBA4JV.js} +13 -13
  377. package/dist/interface/ha/{useServerRestart-CRSVcz3z.js → useServerRestart-Ci0SppGW.js} +1 -1
  378. package/dist/interface/ha/{useTabSwipe-B_bseZkI.js → useTabSwipe-CPKkRmaH.js} +1 -1
  379. package/dist/interface/ha/{useUpdateChannel-C_GU6lj6.js → useUpdateChannel-CXHHovK3.js} +2 -2
  380. package/dist/interface/ha/{useUpdatesSocket-CYgHb7UX.js → useUpdatesSocket-DVST2YXV.js} +1 -1
  381. package/dist/interface/ha/{useUserOptions-pVYr-s3O.js → useUserOptions-BYcYI6QA.js} +1 -1
  382. package/dist/interface/index.html +70 -70
  383. package/dist/interface/sw.js +1 -1
  384. package/dist/server/package.json +16 -16
  385. package/dist/server/requirements.txt +2 -2
  386. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +8 -0
  387. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +5 -1
  388. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/camera_config_internal.py +5 -1
  389. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +2 -1
  390. package/dist/server/src/api/controllers/api.controller.js +1 -1
  391. package/dist/server/src/api/controllers/api.controller.js.map +1 -1
  392. package/dist/server/src/api/controllers/plugins.controller.js +1 -0
  393. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  394. package/dist/server/src/api/controllers/workers.controller.d.ts +2 -2
  395. package/dist/server/src/api/controllers/workers.controller.js +8 -2
  396. package/dist/server/src/api/controllers/workers.controller.js.map +1 -1
  397. package/dist/server/src/api/database/record-schemas.d.ts +3 -0
  398. package/dist/server/src/api/database/record-schemas.js +1 -0
  399. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  400. package/dist/server/src/api/database/types.d.ts +4 -0
  401. package/dist/server/src/api/routes/workers.routes.js +4 -4
  402. package/dist/server/src/api/routes/workers.routes.js.map +1 -1
  403. package/dist/server/src/api/schemas/cameras.schema.d.ts +38 -0
  404. package/dist/server/src/api/schemas/cameras.schema.js +22 -0
  405. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  406. package/dist/server/src/api/schemas/users.schema.d.ts +12 -0
  407. package/dist/server/src/api/schemas/users.schema.js +4 -0
  408. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  409. package/dist/server/src/api/schemas/workers.schema.d.ts +5 -4
  410. package/dist/server/src/api/schemas/workers.schema.js +6 -3
  411. package/dist/server/src/api/schemas/workers.schema.js.map +1 -1
  412. package/dist/server/src/api/services/cameras.service.d.ts +3 -0
  413. package/dist/server/src/api/services/cameras.service.js +47 -2
  414. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  415. package/dist/server/src/api/services/plugins.service.d.ts +1 -0
  416. package/dist/server/src/api/services/plugins.service.js +5 -1
  417. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  418. package/dist/server/src/api/services/workers.service.d.ts +2 -0
  419. package/dist/server/src/api/services/workers.service.js +15 -0
  420. package/dist/server/src/api/services/workers.service.js.map +1 -1
  421. package/dist/server/src/api/types/index.d.ts +3 -2
  422. package/dist/server/src/api/websocket/nsp/notifications.d.ts +1 -0
  423. package/dist/server/src/api/websocket/nsp/notifications.js +7 -0
  424. package/dist/server/src/api/websocket/nsp/notifications.js.map +1 -1
  425. package/dist/server/src/assistant/automation-catalog.js +12 -2
  426. package/dist/server/src/assistant/automation-catalog.js.map +1 -1
  427. package/dist/server/src/assistant/pricing.js +39 -10
  428. package/dist/server/src/assistant/pricing.js.map +1 -1
  429. package/dist/server/src/assistant/providers.js +9 -1
  430. package/dist/server/src/assistant/providers.js.map +1 -1
  431. package/dist/server/src/camera/decoder/event-manager.d.ts +1 -2
  432. package/dist/server/src/camera/decoder/event-manager.js +37 -59
  433. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  434. package/dist/server/src/manager/coreManager.d.ts +2 -1
  435. package/dist/server/src/manager/coreManager.js +9 -2
  436. package/dist/server/src/manager/coreManager.js.map +1 -1
  437. package/dist/server/src/manager/notificationManager.d.ts +1 -0
  438. package/dist/server/src/manager/notificationManager.js +11 -0
  439. package/dist/server/src/manager/notificationManager.js.map +1 -1
  440. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js +1 -1
  441. package/dist/server/src/plugins/runtime/node/proxy/coreManager.js.map +1 -1
  442. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +3 -0
  443. package/dist/server/src/plugins/runtime/python/proxy/core_manager.py +1 -1
  444. package/dist/server/src/plugins/runtime/python/rpc/typings.py +1 -1
  445. package/dist/server/src/rpc/interfaces/core.d.ts +1 -1
  446. package/dist/server/src/sensors/registry.d.ts +2 -0
  447. package/dist/server/src/sensors/registry.js +24 -0
  448. package/dist/server/src/sensors/registry.js.map +1 -1
  449. package/dist/server/src/services/config/index.d.ts +1 -0
  450. package/dist/server/src/services/config/index.js +12 -1
  451. package/dist/server/src/services/config/index.js.map +1 -1
  452. package/dist/server/src/utils/ipc.js +23 -17
  453. package/dist/server/src/utils/ipc.js.map +1 -1
  454. package/dist/server/src/workers/agent.js +2 -0
  455. package/dist/server/src/workers/agent.js.map +1 -1
  456. package/dist/server/src/workers/manager.d.ts +1 -0
  457. package/dist/server/src/workers/manager.js +22 -0
  458. package/dist/server/src/workers/manager.js.map +1 -1
  459. package/dist/server/src/workers/types.d.ts +5 -0
  460. package/dist/server/src/workers/types.js.map +1 -1
  461. package/npm-shrinkwrap.json +111 -111
  462. package/package.json +16 -16
  463. package/dist/interface/assets/Assistant-BJKGIvVo.js +0 -1
  464. package/dist/interface/assets/Automation-C95DzuZb.js +0 -3
  465. package/dist/interface/assets/Automations-BOP_17Ri.js +0 -2
  466. package/dist/interface/assets/Camera-BW9ikKqh.css +0 -1
  467. package/dist/interface/assets/Camera-C5S7eI9a.js +0 -2
  468. package/dist/interface/assets/Camview-CHxKB41T.js +0 -1
  469. package/dist/interface/assets/Config-BrDDGWpr.js +0 -2
  470. package/dist/interface/assets/Console-cIr6lYux.js +0 -1
  471. package/dist/interface/assets/CuiAssistantConversation-Bigl43Ph.js +0 -5
  472. package/dist/interface/assets/CuiAutomationRunsDialog-Ci7SWAml.js +0 -1
  473. package/dist/interface/assets/CuiBottomSheet-ViBOgklN.js +0 -1
  474. package/dist/interface/assets/CuiCameraPipCard-BQKk4fxY.css +0 -1
  475. package/dist/interface/assets/CuiCameraPipCard-wdK7xir-.js +0 -1
  476. package/dist/interface/assets/CuiCameraRecordings-BB7bF67B.js +0 -1
  477. package/dist/interface/assets/CuiCameraTable-CHnQFkce.js +0 -1
  478. package/dist/interface/assets/CuiChartTable-DXY7rY3O.css +0 -1
  479. package/dist/interface/assets/CuiChartTable-dIcxGtfl.js +0 -1
  480. package/dist/interface/assets/CuiDataTable-CQmp5mAy.js +0 -1
  481. package/dist/interface/assets/CuiMarkdownContent-DTAm-EDR.js +0 -1
  482. package/dist/interface/assets/CuiPluginCard-BjIc7It9.js +0 -2
  483. package/dist/interface/assets/Faces-p18jNfXl.js +0 -1
  484. package/dist/interface/assets/Floorplan-DYyEx7WO.js +0 -1
  485. package/dist/interface/assets/Metrics-ChVnC6f6.css +0 -1
  486. package/dist/interface/assets/Metrics-l3UwykCM.js +0 -12
  487. package/dist/interface/assets/Plugin-Ldj3HygQ.js +0 -1
  488. package/dist/interface/assets/PluginDetail-CnfaI1vh.js +0 -2
  489. package/dist/interface/assets/PluginSearch-BiXG3Xk2.js +0 -2
  490. package/dist/interface/assets/PluginSearch-BuE7we1T.js +0 -1
  491. package/dist/interface/assets/Plugins-Csx6AXaW.js +0 -1
  492. package/dist/interface/assets/Recordings-D0KTY5cI.js +0 -1
  493. package/dist/interface/assets/SensorEdit-zs-f_o1N.js +0 -1
  494. package/dist/interface/assets/Sensors-BLAoalEt.js +0 -2
  495. package/dist/interface/assets/SettingsAccount-BsN7jGmo.js +0 -1
  496. package/dist/interface/assets/SettingsAccount-DuVyCSE-.js +0 -1
  497. package/dist/interface/assets/SettingsAppearance-DQcGbYbV.js +0 -1
  498. package/dist/interface/assets/SettingsAssistant-DViJklFd.js +0 -1
  499. package/dist/interface/assets/SettingsMqtt-JoszJJgV.js +0 -1
  500. package/dist/interface/assets/SettingsNotifications-3veSrxa_.js +0 -1
  501. package/dist/interface/assets/SettingsRemote-CtP6Gz9C.css +0 -1
  502. package/dist/interface/assets/SettingsRemote-DUyl8k7I.js +0 -2
  503. package/dist/interface/assets/Terminal-hln2UuSR.js +0 -4
  504. package/dist/interface/assets/Training-D6lhvUf-.js +0 -1
  505. package/dist/interface/assets/Updates-BwSWt9w7.js +0 -2
  506. package/dist/interface/assets/Workers-B6b15izn.js +0 -2
  507. package/dist/interface/assets/ace-DzzM-RlW.js +0 -1
  508. package/dist/interface/assets/api-C9mnOxie.js +0 -4
  509. package/dist/interface/assets/api-Cj9a6qPu.css +0 -2
  510. package/dist/interface/assets/cameraSources-DmVZWs4-.js +0 -1
  511. package/dist/interface/assets/cloudHandoff-Ba98bzeq.js +0 -1
  512. package/dist/interface/assets/esm-Bn9gXwX4.js +0 -1
  513. package/dist/interface/assets/esm-BzM6y2-F.js +0 -1
  514. package/dist/interface/assets/esm-CP3JWrtj.js +0 -1
  515. package/dist/interface/assets/esm-CjAXkqCf.js +0 -1
  516. package/dist/interface/assets/esm-Cqxk-j1S.js +0 -1
  517. package/dist/interface/assets/esm-DFHd3JNU.js +0 -1
  518. package/dist/interface/assets/esm-DfMLJtug.js +0 -1
  519. package/dist/interface/assets/esm-DhDrpq7a.js +0 -1
  520. package/dist/interface/assets/esm-DvhM-SOd.js +0 -1
  521. package/dist/interface/assets/esm-G63bqygQ.js +0 -1
  522. package/dist/interface/assets/esm-Gn-Y59hU.js +0 -1
  523. package/dist/interface/assets/esm-KJSOz2vj.js +0 -1
  524. package/dist/interface/assets/esm-Ryfc94Tm.js +0 -1
  525. package/dist/interface/assets/esm-rSfI5Poy.js +0 -1
  526. package/dist/interface/assets/eye-off-outline-DCxLRGo_.js +0 -1
  527. package/dist/interface/assets/main-C796FmqQ.js +0 -3
  528. package/dist/interface/assets/mqtt-DGBPptzB.js +0 -1
  529. package/dist/interface/assets/native-CZJE8bTs.js +0 -1
  530. package/dist/interface/assets/native-DKZwialB.js +0 -1
  531. package/dist/interface/assets/plugin-DSEMkqaK.js +0 -1
  532. package/dist/interface/assets/server-bhW2Mw4D.js +0 -1
  533. package/dist/interface/assets/types-BcAxmlqC.js +0 -1
  534. package/dist/interface/assets/ungrouped-BnQIcSQd.css +0 -1
  535. package/dist/interface/assets/ungrouped-CkIlDUwl.js +0 -1
  536. package/dist/interface/assets/updates-D3x_kPMM.js +0 -1
  537. package/dist/interface/assets/useBackupRestore-xp5KhKVn.js +0 -1
  538. package/dist/interface/assets/useKeyboardInset-C0Lp0UcX.js +0 -1
  539. package/dist/interface/assets/useUserOptions-BQdOB-Dp.js +0 -1
  540. package/dist/interface/assets/vendor-gFkr2qsZ.js +0 -23
  541. package/dist/interface/assets/vendor-leaflet-DkAk6mAj.js +0 -1
  542. package/dist/interface/assets/web-BDNQnMmA.js +0 -1
  543. package/dist/interface/assets/web-B_9Qyt8E.js +0 -1
  544. package/dist/interface/assets/web-BhJykCtq.js +0 -1
  545. package/dist/interface/assets/web-BjKL51lK-wWFeZlLg.js +0 -1
  546. package/dist/interface/assets/web-C7nJwIOa.js +0 -1
  547. package/dist/interface/assets/web-CGJsJQDb.js +0 -1
  548. package/dist/interface/assets/web-CJwASxrl.js +0 -1
  549. package/dist/interface/assets/web-CLe0L31Y.js +0 -1
  550. package/dist/interface/assets/web-DEv1hAn1.js +0 -1
  551. package/dist/interface/assets/web-DaeQvsXT.js +0 -1
  552. package/dist/interface/assets/web-H3-wNunW.js +0 -1
  553. package/dist/interface/assets/web-LCdyqJq1.js +0 -1
  554. package/dist/interface/assets/web-XZWYTK65.js +0 -1
  555. package/dist/interface/assets/web-rU5hlxxW.js +0 -1
  556. package/dist/interface/assets/workbox-window.prod.es5-BEYAF-e-.js +0 -1
  557. package/dist/interface/ha/Camera-C28q_3pu.js +0 -657
  558. package/dist/interface/ha/Training-OB2KOQ7L.js +0 -1694
  559. package/dist/interface/ha/Workers-cJMI4mYX.js +0 -765
  560. package/dist/interface/ha/eye-off-outline-ACbzsGuK.js +0 -19
@@ -1 +0,0 @@
1
- import{Ar as e,Or as t,jr as n,zr as r}from"./api-C9mnOxie.js";import{K as i,Z as a}from"./vendor-gFkr2qsZ.js";async function o({signal:e}){return(await r.get(`/mqtt`,{signal:e})).data}async function s(e){return(await r.patch(`/mqtt`,e)).data}async function c({signal:e}){return(await r.get(`/mqtt/topics`,{signal:e})).data}async function l(e){return(await r.post(`/mqtt/test`,e)).data}var u=class{_queryClient=a();t=n.global.t;toast=e();get queryClient(){return this._queryClient}getMqttInfoQuery(){return t({queryKey:[`mqtt`],queryFn:({signal:e})=>o({signal:e}),staleTime:1e3})}patchMqttInfoMutation(){return i({mutationFn:s,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`mqtt`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.mqtt_updated`),life:3e3})}})}getMqttTopicsQuery(){return t({queryKey:[`mqtt`,`topics`],queryFn:({signal:e})=>c({signal:e}),staleTime:1e4})}testMqttConnectionMutation(){return i({mutationFn:l})}};export{u as t};
@@ -1 +0,0 @@
1
- import{R as e}from"./vendor-capacitor-Bs_WzL0Q.js";export{e as SecureStorageNative};
@@ -1 +0,0 @@
1
- import{W as e}from"./vendor-capacitor-Bs_WzL0Q.js";export{e as BiometricAuthNative};
@@ -1 +0,0 @@
1
- import{k as e}from"./vendor-capacitor-Bs_WzL0Q.js";export{e as FileTransfer};
@@ -1 +0,0 @@
1
- import{Ar as e,Or as t,jr as n,zr as r}from"./api-C9mnOxie.js";import{K as i,Z as a,dr as o,yr as s}from"./vendor-gFkr2qsZ.js";async function c(){return(await r.get(`/server`)).data}async function l(e){return(await r.patch(`/server`,e)).data}async function u(){return(await r.get(`/server/certificate`)).data}async function d(e){let t=new FormData;return t.append(`cert`,e.cert),t.append(`key`,e.key),e.chain&&t.append(`chain`,e.chain),(await r.post(`/server/certificate`,t)).data}async function f(){return(await r.delete(`/server/certificate`)).data}async function p({serverData:e}){return(await r.post(`/server/update`,e,{timeout:96e4})).data}async function m({signal:e}){return(await r.get(`/server/version`,{signal:e})).data}async function h({version:e,signal:t}){return(await r.get(`/server/changelog`,{params:{version:e},signal:t})).data}async function g(e){let t=e&&e!==`all`?{source:e}:void 0;return(await r.delete(`/server/log`,{params:t})).data}async function _({signal:e,source:t}){let n=t&&t!==`all`?{source:t}:void 0;return(await r.get(`/server/log/download`,{signal:e,params:n})).data}async function v(){return(await r.post(`/server/cert`,{responseType:`arraybuffer`})).data}async function y({signal:e}){return(await r.get(`/server/go2rtc`,{signal:e})).data}async function b(){return(await r.put(`/server/restart`)).data}async function x(){return(await r.put(`/server/restart/go2rtc`)).data}async function S(){return(await r.put(`/server/reset`)).data}var C=class{_queryClient=a();t=n.global.t;toast=e();queryActivator=o([{name:`downloadLogQuery`,enabled:!0},{name:`getGo2RtcInfoQuery`,enabled:!0},{name:`checkVersionQuery`,enabled:!0},{name:`getServerChangelogQuery`,enabled:!0},{name:`getServerInfoQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getServerInfoQuery(){return t({queryKey:[`server`],queryFn:c})}patchSystemInfoQuery(){return i({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`server`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}updateServerQuery(){return i({mutationFn:p,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}downloadLogQuery(e){return t({queryKey:[`logs`,`server`,e??`all`],queryFn:({signal:t})=>_({signal:t,source:s(e)}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}downloadCertQuery(){return i({mutationFn:v})}clearLogQuery(){return i({mutationFn:e=>g(e),onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`logs`,`server`],exact:!1}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}checkVersionQuery(){return t({queryKey:[`version`],queryFn:({signal:e})=>m({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`checkVersionQuery`&&e.enabled)})}getServerChangelogQuery(e){return t({queryKey:[`version`,`changelog`,e],queryFn:({signal:t})=>h({version:s(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getServerChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getGo2RtcInfoQuery(){return t({queryKey:[`go2rtc`],queryFn:({signal:e})=>y({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getGo2RtcInfoQuery`&&e.enabled)})}restartGo2RtcQuery(){return i({mutationFn:x,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.go2rtc_restarted`),life:3e3})}})}restartServerQuery(){return i({mutationFn:b,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3})},onError:e=>{let t=e?.response?.status;if(t===void 0||t>=500){this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3});return}this.toast.add({severity:`error`,detail:e,life:3e3})}})}resetServerQuery(){return i({mutationFn:S,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_resetted`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{u as a,x as c,d,_ as i,b as l,g as n,h as o,v as r,f as s,C as t,p as u};
@@ -1 +0,0 @@
1
- import{Gr as e,Kr as t,Wr as n,qr as r}from"./vendor-cameraui-CK4yHsJi.js";import{Vt as i}from"./vendor-gFkr2qsZ.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as y,x as b,y as ie}from"./vendor-zod-CBbC1rE7.js";function ae(e){return e.mimetype!==void 0}function oe(e){return ae(e)?Buffer.byteLength(e._buf):e.size}function se(e){return ae(e)?e.mimetype:e.type}function x(e,t,n,r){return f().refine(t=>oe(t)<=e,n).refine(e=>t.includes(se(e)),r)}function ce(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function le(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var ue=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:b().trim().min(1).array().default([]),sensors:b().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=b().trim().min(1,`Detection label is required`),he=b().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=b().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:b().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:b().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:b().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:b().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:b().trim().min(1).array().optional(),plates:b().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:b().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),C=v({name:b().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:b().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),w=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:C.default([])}).strict(),T=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchSensitivity:u([`strict`,`balanced`,`relaxed`]).default(`balanced`)}).default({confidence:.5,matchSensitivity:`balanced`}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(b().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),xe=v({from:b().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:b().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:b().trim().min(1,`Timezone is required`)}),Se={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},E=v({enabled:d().default(!1),targetLabels:b().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:xe.optional()}),D=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),Ce=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),O=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),we=RegExp(`^(${O.join(`|`)})`),k=b().refine(e=>{if(!we.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function A(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var Te=v({_id:b().default(e()).transform(()=>e()),name:b().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:D,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:k.array().min(1,`At least one valid URL is required`),childSourceId:b().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Ee=v({_id:b().default(e()).transform(()=>e()),name:b().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:D,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:k.array().min(1,`At least one valid URL is required`),childSourceId:b().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),j=v({id:b(),name:b().trim()}),M=v({motion:j.optional(),object:j.optional(),objectAssist:j.optional(),audio:j.optional(),face:j.optional(),licensePlate:j.optional(),ptz:j.optional(),battery:j.optional(),cameraController:j.optional(),clip:j.optional(),faceEmbedder:j.optional(),classifier:j.array().optional(),light:j.array().optional(),siren:j.array().optional(),switch:j.array().optional(),securitySystem:j.array().optional(),contact:j.array().optional(),doorbell:j.array().optional(),lock:j.array().optional(),temperature:j.array().optional(),humidity:j.array().optional(),occupancy:j.array().optional(),smoke:j.array().optional(),leak:j.array().optional(),garage:j.array().optional(),gas:j.array().optional(),carbonMonoxide:j.array().optional(),carbonDioxide:j.array().optional(),heat:j.array().optional(),cold:j.array().optional(),vibration:j.array().optional(),tamper:j.array().optional(),problem:j.array().optional(),power:j.array().optional(),illuminance:j.array().optional(),hub:j.array().optional()}).strict(),De=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Oe=b().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),N=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:b().trim().max(128).optional()}).strict(),P=v({mainStreamAnalysis:d().default(!1),decoder:N.optional(),workerDecoder:N.nullable().transform(e=>e??void 0).optional()}),F=a([p(`camera`),p(`doorbell`)]),ke=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),Ae=a([p(`always-on`),p(`activity`),p(`standby`)]),I=v({streamingMode:De,streamingSource:Ce,playbackSource:ke.default(`auto`),activityMode:Ae.default(`always-on`),aspectRatio:Oe}),L=v({model:b().trim().optional(),manufacturer:b().trim().optional(),hardware:b().trim().optional(),serialNumber:b().trim().optional(),firmwareVersion:b().trim().optional(),supportUrl:b().trim().optional()}),je=v({id:b(),name:b().trim()}).strict(),Me=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),R=v({_id:b().default(e()).transform(()=>e()),nativeId:b().trim().optional(),pluginInfo:je.optional(),disabled:d().default(!1),name:b().trim().min(1,`Camera name is required`),room:b().trim().min(1,`Room is required`).default(`Default`),roomId:b().trim().min(1).nullable().default(null),type:F.default(`camera`),isCloud:d().default(!1),snapshotSettings:Me.default({mode:`interval`,interval:60,maxAge:60}),info:L.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:Te.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(A),plugins:j.array().default([]),assignments:M.default({}),interfaceSettings:I.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:w.default(ce()),detectionSettings:T.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchSensitivity:`balanced`},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:E.default(Se),recordingSettings:ue.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:P.default({mainStreamAnalysis:!1})}).strict();function Ne(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=R.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}R.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||le(t)?{...e,isCloud:!0}:{...e}});var Pe=v({disabled:d().optional(),type:F.optional(),name:b().trim().min(1,`Camera name is required`).optional(),room:b().trim().min(1,`Room is required`).optional(),roomId:b().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:Me.partial().optional(),info:L.partial().optional(),sources:Ee.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(A).optional(),plugins:j.array().optional(),assignments:M.partial().optional(),interfaceSettings:I.partial().optional(),zones:w.optional(),detectionSettings:T.partial().optional(),ptzAutotrack:E.partial().optional(),recordingSettings:ue.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:P.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||le(t))return{...e,isCloud:!0}}return e});v({url:b().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:b()}),v({cameraname:b(),sourcename:b()}),v({cameraid:b(),sourcename:b()}),v({cameraname:b(),pluginname:b()}),v({cameraname:b(),scope:b(),pluginname:b()}),v({cameraname:b(),pluginname:b(),sensorId:b()}),v({cameraname:b(),scope:b(),pluginname:b(),sensorId:b()}),v({type:b().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(b().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(b().min(1)).min(1).max(1e3)});var Fe=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),Ie=[`de`,`en`],Le=[`image/jpeg`,`image/jpg`,`image/png`],Re=5242880,ze=v({index:s(),cameraId:b(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),Be=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),Ve=a([p(`dnd`),p(`view`)]),He=u([`aspect`,`contain`,`fill`,`cover`]),Ue=v({_id:b().default(e()).transform(()=>e()),name:b().trim().min(1,`Layout name is required`),viewSize:Be,cameras:ze.array(),type:Ve,cardFit:He.optional()});v({name:b().trim().min(1,`Layout name is required`),viewSize:Be,cameras:ze.array(),cardFit:He}).partial().optional();var We=v({views:Ue.array()}),Ge=t.filter(e=>e.shortcutable).map(e=>String(e.type)),Ke=u(Ge),qe=v({_id:b().default(e()).transform(()=>e()),type:p(`camera`),cameraId:b(),points:S}),Je=v({_id:b().default(e()).transform(()=>e()),type:p(`sensor`),sensorId:b(),sensorType:Ke,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:b(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:b(),sensorType:Ke,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:b().array().optional()});l(b().trim().min(1),b().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...Ie]),et=v({ungrouped:d()}),tt=v({main:b().array(),manage:b().array(),system:b().array(),settings:b().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:b().array().optional()}),it=v({language:$e.optional(),camview:We,cameras:l(b().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=b().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:b().default(e()).transform(()=>e()),username:b().trim().min(1,`Username is required`),password:z,passwordConfirm:b().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:b().trim().min(1,`Username is required`),password:b().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:b().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:b().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:b().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:b().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ie(x(Re,Le,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:b()}),v({username:b(),cameraname:b()}),v({username:b(),cameraname:b(),shortcutid:b()}),v({username:b(),viewid:b()}),v({username:b()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=a([st,b().regex(/^plugin:[a-zA-Z0-9@/._-]{1,200}$/)]),lt=v({id:b().trim().min(1).max(64).optional(),name:b().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:ct,baseURL:b().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:b().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:b().trim().min(1).max(64).optional(),model:b().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),contextTokens:s().int().min(1e3).max(4e5).nullable().optional(),toolRouting:d().nullable().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(lt).max(20,`At most 20 models`).optional(),defaultModelId:b().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:b().trim().min(1).max(200),modelId:b().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(Fe).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:b().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:b().trim().min(1).max(64).optional(),name:b().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:b().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(b().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:b().min(1).max(128)}),v({text:b().trim().min(1).max(500),language:b().max(10).optional(),timezone:b().max(64).optional()}),v({factId:b().min(1).max(128)}),v({threadId:b().min(1).max(128)}),v({title:b().trim().min(1).max(60)}),v({messages:_(y()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:b().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:b().trim().max(64).default(``),disabledGroups:_(b().max(100)).max(50).default([]),instructions:b().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:b().min(1).max(128)}),v({user:b().trim().min(1).max(100).optional()});var ut=u([`push`,`thread`,`both`]);v({title:b().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:b().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:b().trim().min(9,`Cron expression is required`).max(100),profileId:b().trim().max(64).nullable().optional(),modelId:b().trim().max(64).nullable().optional(),timezone:b().trim().max(64).optional(),language:b().trim().min(2).max(10).optional(),deliver:ut.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:b().min(1).max(128)});var dt=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},ft=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...dt],description:`Settings page`}},required:[`page`]}}],pt=i({id:`ask-user`,payloadSchema:v({toolCallId:b(),question:b(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(b()).optional()}),responseSchema:v({answer:b()})});v({tempToken:b().trim().min(1,`Temporary token is required`),code:b().trim().min(1,`Code is required`)}).strict(),v({code:b().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:b().trim().min(1,`Code is required`)}).strict(),v({code:b().trim().min(1,`Code is required`)}).strict(),v({grant_type:b().optional(),username:b().trim().min(1,`Username is required`),password:b().min(1,`Password is required`),scope:b().optional(),client_id:b().optional(),client_secret:b().optional()}),v({refresh_token:b().min(1,`Refresh token is required`)}),v({id:b()}),v({name:b().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:b()});var mt=v({id:b().trim().min(1),name:b().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),ht=v({id:b().trim().min(1),roomId:b().trim().min(1),name:b().trim().min(1,`Room name is required`).max(64),levelId:b().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:b().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),gt=v({id:b().trim().min(1),fromRoomId:b().trim().min(1),toRoomId:b().trim().min(1),fromShapeId:b().trim().min(1).nullable().default(null),toShapeId:b().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:b().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),_t=v({cameraId:b().trim().min(1),roomId:b().trim().min(1),note:b().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),vt=v({sensorId:b().trim().min(1),sensorType:b().trim().min(1),roomId:b().trim().min(1),connectionId:b().trim().min(1).nullable().default(null),note:b().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:mt.array().max(20),rooms:ht.array().max(200),connections:gt.array().max(500),cameras:_t.array().max(500),sensors:vt.array().max(500)}).strict(),v({name:b().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:b().trim().min(1,`Username is required`),password:b().min(1,`Password is required`)})}),v({name:b().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:b().trim().min(1,`Username is required`),password:b().min(1,`Password is required`)}).nullable().optional()}),v({id:b().min(1,`ID is required`)}),v({code:b().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(b().min(1)).min(1).max(1e3)});var yt=/^[\w-]+(\/[\w-]+)*$/,bt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:b().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:b().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:b().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:b().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:b().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:b().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:b().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(yt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:b().trim().nullable().optional(),cert:b().trim().nullable().optional(),key:b().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:b().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(yt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),xt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,St=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),Ct=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),wt=[`image/jpeg`,`image/png`],Tt=2097152,Et=[`video/mp4`,`video/quicktime`],Dt=10485760,Ot=[`audio/mpeg`,`audio/wav`,`audio/ogg`],kt=2097152,V=()=>x(Tt,wt,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),At=f().transform(e=>JSON.parse(e.value)),jt=v({pluginname:b().trim().refine(e=>xt.test(e),`Not a valid plugin name`),pluginversion:b().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:b(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:x(kt,Ot,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:At,config:H}),v({upload:x(Dt,Et,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:b()}),v({scope:b(),pluginname:b()}),Ct.extend({pluginname:b().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:b().trim().optional()}),v({pluginNames:_(b().trim().min(1)).min(1).max(1e3)}),v({plugins:_(jt).min(1).max(1e3)});var Mt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:b().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:b().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:b().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:b().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:b().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:b().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:b().trim().min(1,`Room name is required`).max(64),levelId:b().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:b().trim().max(240).default(``)}).strict(),v({roomid:b().trim().min(1)});var Nt={securitySystem:`security_system`};function Pt(e){return Nt[e]??e}function Ft(){let e={};for(let n of t)e[n.type]={category:n.category,assignmentKey:n.assignmentKey,multiProvider:n.multiProvider,isDetectionType:n.isDetectionType,cameraBound:n.cameraBound??!1,...n.cascadeTrigger?{cascadeTrigger:{...n.cascadeTrigger,triggerType:Pt(n.assignmentKey)}}:{}};return e}var W=Ft();Object.fromEntries(t.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function It(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Lt(){return t.filter(e=>e.shortcutable).map(e=>e.type)}function Rt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function zt(e){return W[e].assignmentKey}function Bt(){return Object.entries(W).filter(([,e])=>e.category===r.Sensor&&!e.multiProvider).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>!e.multiProvider&&e.category!==r.Sensor).map(([e])=>e)}function Ht(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ut(e){return!W[e].multiProvider}Object.fromEntries(t.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(t.map(e=>[e.type,e.properties]));function Wt(e,t){return G[e]?.[t]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Kt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function qt(e,t){let n=W[e];return n?n.category===r.Control||n.category===r.Trigger||t===`cameraui.virtual`&&!n.isDetectionType:!1}new Set(It());var Jt=new Set(Rt()),Yt=`cameraui.virtual`,Xt=t.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(t.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(t.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:b().min(1,`Sensor ID is required`)});var Zt=v({cameraId:b().min(1).optional(),type:u(Xt),name:b().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:b().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(b().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:b().trim().min(1,`Property is required`),value:y()}),v({ids:_(b()).min(1).max(1e4)}),v({version:b().trim().optional().default(`latest`)}).strict();var Qt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:b().trim()}).strict(),l(b(),m()),v({key:b()}).strict(),v({key:b(),payload:m()}).strict();var $t=v({label:b().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:b().trim().max(16).optional()}).strict();v({id:b().trim().min(1)}),v({id:b().trim().min(1)}),v({cursor:b().trim().min(1).optional()}),v({cameraId:b().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:$t.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:b().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:b().min(1,`Camera ID is required`),agentId:b().min(1,`Agent ID is required`)}),v({cameraId:b().min(1,`Camera ID is required`)}),v({agentId:b().min(1,`Agent ID is required`)}),v({version:b().min(1).optional()}).optional(),v({code:b().min(1,`Pairing code is required`),agentId:b().min(1,`Agent ID is required`),name:b().min(1,`Worker name is required`)}),v({pluginName:b().min(1,`Plugin name is required`),agentId:b().min(1,`Agent ID is required`)}),v({pluginName:b().min(1,`Plugin name is required`)}),v({name:b().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:b().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function K(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function q(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function J(e){return e.type===`button`}function Y(e){return e.type===`submit`}function an(e){return K(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var on=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>on(e,t)):on(e,t)}function sn(e,t){if(!e||Object.keys(e).length===0)return!0;let r=t.filter(e=>!J(e)&&!Y(e));for(let t of r){let r=Q(e,t.key),i=Z(t);if(r!==void 0&&!n(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return q(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=Z(n));return t}default:return}}function cn(e){let t={};for(let n of e)J(n)||Y(n)||(t[n.key]=Z(n));return t}function ln(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function un(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of ln(t)){if(n==null)return;n=n[e]}return n}function dn(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=ln(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=un(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function fn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!J(r)&&!Y(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function pn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function mn(e,t){let n=pn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function hn(e,t){let n=pn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function gn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(J(e)||Y(e))return m();switch(e.type){case`string`:if(q(e)){if(e.multiple){let t=_(b().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=b().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||gn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var _n=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function vn(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!J(e)&&!Y(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!J(e)&&!Y(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(_n(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{Ue as $,Gt as A,kt as B,W as C,zt as D,Ht as E,qt as F,ft as G,St as H,Mt as I,Re as J,B as K,Ot as L,Lt as M,Kt as N,Vt as O,Ut as P,ot as Q,Et as R,Jt as S,Xt as T,bt as U,Dt as V,pt as W,at as X,Ie as Y,z as Z,mn as _,vn as a,ve as at,Qt as b,tn as c,q as d,O as et,en as f,an as g,Y as h,fn as i,D as it,Wt as j,Bt as k,J as l,K as m,cn as n,Ne as nt,Q as o,Pe as ot,rn as p,Fe as q,Z as r,C as rt,nn as s,A as st,X as t,R as tt,sn as u,hn as v,Yt as w,Zt as x,dn as y,wt as z};
@@ -1 +0,0 @@
1
- .card-icon-button[data-v-22b538a5]{cursor:pointer;background:#0009;border-radius:9999px;justify-content:center;align-items:center;padding:0;display:flex}.card-icon-button[data-v-22b538a5]:hover{background:#000c}.card-icon-button[data-v-22b538a5]:disabled{cursor:default}.carousel-nav[data-v-22b538a5]{background:#0006}.carousel-nav[data-v-22b538a5]:hover{background:#0009}.card-skeleton[data-v-22b538a5]{background:var(--p-skeleton-background,#ffffff0f);animation:1.4s ease-in-out infinite card-skeleton-pulse-22b538a5}@keyframes card-skeleton-pulse-22b538a5{50%{opacity:.55}}.recording-card[data-v-22b538a5]{contain:layout;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}@media (hover:hover) and (pointer:fine){.carousel-nav[data-v-22b538a5]{opacity:0}.recording-card:hover .carousel-nav[data-v-22b538a5],.recording-card:focus-within .carousel-nav[data-v-22b538a5]{opacity:1}}.recordings-grid-root[data-v-a672f3ff]{width:100%;height:100%;min-height:0}.recordings-scroll[data-v-a672f3ff]{overscroll-behavior:contain;scrollbar-width:none;width:100%;height:100%;overflow:hidden auto}.recordings-scroll[data-v-a672f3ff]::-webkit-scrollbar{display:none}.recordings-row[data-v-a672f3ff]{height:calc(var(--cell-h) + var(--cell-gap));align-items:stretch;gap:var(--cell-gap);display:flex}.recordings-cell[data-v-a672f3ff]{width:var(--cell-w);height:var(--cell-h)}
@@ -1 +0,0 @@
1
- import{B as e,Fn as t,Kt as n,Nn as r,Nt as i,T as a,Ur as o,Wt as s,_i as c,a as l,b as u,c as d,er as f,h as p,ii as m,j as h,o as g,qn as _,s as ee,u as te}from"./vendor-cameraui-CK4yHsJi.js";import{Ar as ne,Cn as re,J as ie,K as ae,Mn as oe,Nn as v,Q as se,Tn as ce,X as le,Y as ue,Z as de,bn as fe,hn as pe,kn as me,mn as he,nt as ge,q as _e,rt as ve,s as ye,st as be,yn as xe}from"./api-C9mnOxie.js";import{$n as Se,Bn as Ce,Cn as we,Cr as y,Dn as b,Hn as Te,In as x,Jn as S,On as Ee,Pn as De,Rn as C,Tn as Oe,Xn as ke,Zn as Ae,br as w,cn as T,dn as E,dr as D,en as je,er as Me,gn as O,ln as k,nn as A,or as j,rn as M,sn as N,sr as Ne,un as P,vn as F,yr as I,zn as L}from"./vendor-gFkr2qsZ.js";import{a as Pe}from"./intercomService-CjoJaOZ7.js";import{i as Fe}from"./alert-outline-IRxYbw0j.js";import{t as Ie}from"./eventIcons-UQutPG3p.js";import{u as Le}from"./vendor-core-B-Q4es-f.js";import{M as R,P as z}from"./vendor-primevue-Cmp3VjIC.js";var B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Re(e,t){return x(),E(`svg`,B,[...t[0]||=[T(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h3.5m4.92.61a2.1 2.1 0 0 1 2.97 2.97L18 22h-3v-3z`},null,-1)]])}var ze=Ne({name:`tabler-user-edit`,render:Re}),V={class:`flex flex-col gap-4 w-full`},H={key:0,class:`flex justify-center`},U=[`src`,`alt`],W={class:`flex flex-col gap-2 w-full`},G={class:`cui-label`},Be={class:`flex flex-col gap-2 w-full`},K={for:`reassignTarget`,class:`cui-label`},Ve=F({__name:`FaceReassign`,props:{cropUrl:{},oldName:{}},setup(t,{expose:n}){let r=t,{t:a}=o(),{plugin:s}=i(`@camera.ui/camera-ui-nvr`),c=D(null),l=D([]),u=D(!0),d=N(()=>r.oldName===`unknown`?a(`views.recordings.reassign_unknown_person`):r.oldName),f=N(()=>{let e=l.value.filter(e=>e!==r.oldName).map(e=>({label:e,value:e}));return r.oldName!==`unknown`&&e.push({label:a(`views.recordings.reassign_unknown`),value:``}),e});return De(async()=>{try{let e=await s.value?.listKnownFaces?.();l.value=(e??[]).map(e=>e.name)}catch{}finally{u.value=!1}}),n({onConfirm:async()=>c.value}),(t,n)=>{let i=e,a=R;return x(),E(`div`,V,[r.cropUrl?(x(),E(`div`,H,[T(`img`,{src:r.cropUrl,alt:I(d),class:`w-36 h-36 rounded-xl object-cover bg-neutral-900`},null,8,U)])):P(``,!0),T(`div`,W,[T(`label`,G,y(t.$t(`views.recordings.reassign_current`)),1),O(i,{"model-value":I(d),class:`w-full`,fluid:``,disabled:``},null,8,[`model-value`])]),T(`div`,Be,[T(`label`,K,y(t.$t(`views.recordings.reassign_new`)),1),O(a,{id:`reassignTarget`,modelValue:I(c),"onUpdate:modelValue":n[0]||=e=>j(c)?c.value=e:null,options:I(f),"option-label":`label`,"option-value":`value`,class:`w-full`,fluid:``,loading:I(u),disabled:I(u),placeholder:t.$t(`views.faces.enter_or_pick_name`)},null,8,[`modelValue`,`options`,`loading`,`disabled`,`placeholder`])])])}}}),He={key:0,class:`card-skeleton absolute inset-0 rounded-xl`},Ue={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},We={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},Ge={class:`flex items-center gap-1.5`},Ke={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},qe={key:0,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},Je=[`title`],Ye=[`title`,`disabled`],Xe={class:`text-[10px] text-white/70`},Ze=[`aria-label`],Qe=[`aria-label`],$e={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},et={class:`flex items-center gap-1 min-w-0`},tt=[`title`],nt={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},rt=[`onClick`],it=[`src`,`alt`],at={key:0,class:`text-[10px] text-white/60 font-medium`},ot={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},st={key:7,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},ct={class:`text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap`,style:{"font-variant-numeric":`tabular-nums`}},lt=24,ut=30,dt=22,ft=28,pt=8,mt=8,ht=v(F({__name:`RecordingCard`,props:{event:{},cameraName:{},camera:{},loadThumbnails:{type:Function},semanticScore:{},segIndex:{},hideSegmentBadge:{type:Boolean},selectionMode:{type:Boolean},selected:{type:Boolean},siblingActive:{type:Boolean}},emits:[`scrollToEvent`,`select`,`openTrace`],setup(e,{emit:t}){let n=e,r=t,s=Pe(),f=ne(),{t:m}=o(),_=Le(),v=u(`@camera.ui/camera-ui-nvr`),{plugin:Se}=i(`@camera.ui/camera-ui-nvr`),Ce=be(),{icons:b}=Ie(),Oe=v.getCachedThumbnails(n.event.id),Ae=Oe?l(Oe,n.event,`card`,n.segIndex).url?`loaded`:`empty`:`loading`,j=we(ee,void 0),Ne=S(`rootRef`),F=S(`previewCanvasRef`),L=S(`footerRef`),R=S(`cardMenuRef`),z=D(!1),B=D(!1),Re=le(Ne,()=>Gt(),()=>$()),V=D(!1),H=D(Oe??null),U=D(Ae),W=D(!1),G=D(0),Be=D(null),K=D(!1),ht=D(0),gt=N(()=>re(void 0,`admin`)),_t=N(()=>Be.value??n.event.favorite??!1),vt=N(()=>{if(n.semanticScore==null)return;let e=Math.max(0,Math.min(1,n.semanticScore));return{pct:e,label:`${(e*100).toFixed(0)}%`,color:e>=.5?`bg-green-500/80`:e>=.25?`bg-yellow-500/80`:`bg-red-400/80`}}),q=N(()=>H.value?l(H.value,n.event,`card`,n.segIndex):null),J=N(()=>{let e=n.segIndex??q.value?.segIndex;return e===void 0?void 0:n.event.segments?.[e]}),yt=N(()=>q.value?.url),bt=N(()=>q.value?.label),xt=N(()=>q.value?.type??n.event.types[0]??`motion`),Y=N(()=>{if(n.hideSegmentBadge)return;let e=n.event.segments?.length??0;return n.segIndex!==void 0&&e>1?`${n.segIndex+1}/${e}`:void 0}),X=N(()=>{let e=H.value,t=q.value?.url;if(!e||!t)return[];let r=[{url:t,label:q.value?.label,type:xt.value,crop:!1}];for(let t of d(e,n.segIndex)){if(r.some(e=>e.url===t.url))continue;let e=t.key.split(`:`)[0];r.push({url:t.url,label:t.label,type:t.type,crop:!0,faceSeg:/^\d+$/.test(e)?Number(e):-1})}if(n.segIndex===void 0)for(let t of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let i=p(e.cards?.[t]??e.strips?.[t]);if(!i||r.some(e=>e.url===i))continue;let a=se(n.event,t);r.push({url:i,label:a,type:a,crop:!1})}return r.length>1?r:[]}),St=N(()=>X.value.length>1),Ct=N(()=>X.value.length?Math.min(G.value,X.value.length-1):0),Z=N(()=>St.value?X.value[Ct.value]:void 0),wt=N(()=>!!Z.value?.crop),Tt=N(()=>Z.value?.url??yt.value),Et=N(()=>Z.value?.label??bt.value),Q=N(()=>{let e=J.value;return(e?a(n.event,e):[...new Set(n.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),Dt=N(()=>n.cameraName??n.event.cameraId),Ot=N(()=>X.value.map(e=>({url:e.url,type:e.type}))),kt=N(()=>Q.value.slice(0,At.value.icons)),At=N(()=>{let e=ht.value;if(!e)return{icons:2,tiles:2};let t=e-pt;n.selectionMode&&(t-=ft);let r=Ot.value.length>0?52:0,i=Vt(Q.value.length,Math.max(0,t-r),lt),a=Q.value.length>0?Math.max(1,i):0,o=a*lt+(a<Q.value.length?dt:0);return{icons:a,tiles:Vt(Ot.value.length,Math.max(0,t-o),ut)}}),jt=N(()=>Q.value.slice(At.value.icons)),Mt=N(()=>Ot.value.slice(0,At.value.tiles)),Nt=N(()=>Ot.value.length-At.value.tiles),Pt=N(()=>{let e=new Date(J.value?.firstSeen??n.event.thumbnailAt??n.event.startTime),t=new Date,r=e.toDateString()===t.toDateString(),i=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${e.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`}),Ft=N(()=>!!(Se.value&&n.event.endTime&&n.event.hasRecording!==!1)),It=N(()=>j?B.value?m(`views.recordings.no_preview`):V.value?j.status.value===`unavailable`?m(`views.recordings.no_preview`):j.status.value===`playing`&&j.previewTimeMs.value?Wt(j.previewTimeMs.value):``:``:``),Lt=N(()=>{let e=Z.value;if(e&&e.type===`face`)return e.label?e.label:`unknown`}),Rt=N(()=>{let e=[];return gt.value&&Lt.value!==void 0&&e.push({key:`reassign`,label:m(`views.recordings.reassign_face`),icon:ze,loading:K.value,onClick:()=>Zt()}),n.camera&&e.push({key:`trace`,label:m(`views.recordings.open_trace`),icon:ge,onClick:()=>r(`openTrace`,J.value?.firstSeen)}),e.push({key:`ask`,label:m(`views.recordings.ask_assistant`),icon:Fe,onClick:()=>Bt()}),Ft.value&&e.push({key:`download`,label:m(`views.recordings.download`),icon:ve,loading:W.value,onClick:()=>en()}),e});function zt(){pe(R.value?.hide)}function Bt(){let e=m(`views.recordings.ask_assistant_prompt`,{camera:n.cameraName??n.camera?.name??n.event.cameraId,time:new Date(n.event.startTime).toLocaleString(),id:n.event.id});_.push({path:`/assistant`,query:{prompt:e}})}function Vt(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-dt)/n))}function Ht(e){let t=X.value.length;t&&($(),G.value=(Ct.value+e+t)%t)}function Ut(e,t){St.value&&(t.stopPropagation(),$(),G.value=e)}function $(){B.value=!1,j&&V.value&&(V.value=!1,j.onHoverEnd())}function Wt(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function Gt(){if(!j||Ct.value>0)return;let e=F.value;if(!e)return;let t=te(n.event);if(n.event.hasRecording===!1||!t){B.value=!0;return}V.value=!0,j.onHoverStart(e,n.event.cameraId,n.event.id,n.event.startTime,t,n.camera?.zones?.privacy,h(n.event))}function Kt(){Re.blocksMouseEnter()||Gt()}function qt(){B.value=!1,j&&(V.value=!1,j.onHoverEnd())}async function Jt(e=2){let t=await n.loadThumbnails(n.event.id,n.event.startTime);if(t){H.value=t;let e=l(t,n.event,`card`);U.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Jt(e-1);else U.value=n.event.state===`active`?`loading`:`empty`}function Yt(){if(!Re.consumesClick()){if(n.selectionMode){r(`select`);return}r(`scrollToEvent`,J.value?.firstSeen??de(n.event))}}async function Xt(e){$(),z.value||(z.value=!0,await Ee()),R.value?.toggleMenu(e)}function Zt(){let e=Lt.value;e!==void 0&&Ce.openComponentDialog(Ve,{data:{title:m(`views.recordings.reassign_face`),confirmText:m(`components.form.button.save`),contentProps:{cropUrl:Z.value?.url,oldName:e}},onConfirm:e=>Qt(e)})}async function Qt(e){let t=Lt.value;if(t===void 0||K.value)return;let r=Z.value?.faceSeg??-1,i=Se.value;if(i?.reassignEventFace){K.value=!0;try{await i.reassignEventFace(n.event.id,r,t,e)>0&&g(n.event.id),f.add({severity:`success`,detail:m(`views.recordings.reassign_done`),life:3e3})}catch(e){f.add({severity:`error`,detail:ye(e),life:5e3})}finally{K.value=!1}}}async function $t(){let e=!_t.value;Be.value=e;try{await v.setEventFavorite(n.event.id,e)}catch(e){Be.value=null,f.add({severity:`error`,detail:ye(e),life:5e3})}}async function en(){if(W.value)return;let e=Se.value;if(e?.nvrExport&&n.event.endTime){W.value=!0;try{let t=await e.nvrExport(n.event.cameraId,n.event.startTime*1e3,n.event.endTime*1e3);await me({url:t.url,filename:t.filename})}catch(e){s.error(`Download failed:`,e),f.add({severity:`error`,summary:m(`views.recordings.download_failed`),detail:ye(e),life:5e3})}finally{W.value=!1}}}return ke(()=>v.storeVersion.value,()=>{let e=v.getCachedThumbnails(n.event.id);if(!e){H.value&&Jt();return}H.value=e,l(e,n.event,`card`).url&&(U.value=`loaded`)}),c(L,e=>{let t=e[0]?.contentRect.width??0,n=Math.round(t/mt)*mt;n!==ht.value&&(ht.value=n)}),De(()=>{Ae===`loading`&&Jt()}),(t,n)=>{let r=oe,i=ae,a=_e,o=ie,s=ue,c=xe,l=fe,u=ce;return x(),E(`div`,{ref_key:`rootRef`,ref:Ne,class:`recording-card relative group cursor-pointer`,onClickCapture:zt,onClick:Yt,onMouseenter:Kt,onMouseleave:qt},[T(`div`,{class:w([`bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200`,{"ring-2 ring-inset ring-primary/70":e.siblingActive}]),style:{"aspect-ratio":`1/1`}},[I(U)===`loading`?(x(),E(`div`,He)):I(Tt)?(x(),k(r,{key:1,src:I(Tt),alt:I(Dt),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:I(wt)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])):(x(),E(`div`,Ue,[(x(),k(Te(I(b)[I(xt)]??I(b).motion),{class:`w-10 h-10 text-white/20`}))])),I(j)?Me((x(),E(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:F,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[je,I(V)]]):P(``,!0),n[2]||=T(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),T(`div`,We,[T(`div`,Ge,[T(`p`,Ke,y(I(Dt)),1),I(Y)?(x(),E(`span`,qe,y(I(Y)),1)):P(``,!0),I(vt)?(x(),E(`span`,{key:1,class:w([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,I(vt).color])},y(I(vt).label),3)):P(``,!0),I(gt)&&!e.selectionMode?(x(),E(`button`,{key:2,title:I(_t)?t.$t(`views.recordings.unfavorite`):t.$t(`views.recordings.favorite`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,onClick:A($t,[`stop`]),onMouseenter:$},[I(_t)?(x(),k(i,{key:0,class:`w-3 h-3 text-yellow-400`})):(x(),k(a,{key:1,class:`w-3 h-3 text-white`}))],40,Je)):P(``,!0),I(Rt).length>0&&!e.selectionMode?(x(),E(`button`,{key:3,title:t.$t(`views.recordings.more_actions`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,disabled:I(W)||I(K),onClick:A(Xt,[`stop`]),onMouseenter:$},[I(W)||I(K)?(x(),k(o,{key:0,class:`w-3 h-3 text-white`})):(x(),k(s,{key:1,class:`w-3 h-3 text-white`}))],40,Ye)):P(``,!0)]),T(`p`,Xe,y(I(Pt)),1)]),I(X).length>1?(x(),E(M,{key:4},[T(`button`,{type:`button`,class:`card-icon-button carousel-nav absolute left-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:n[0]||=A(e=>Ht(-1),[`stop`]),onMouseenter:$},[O(c,{class:`w-5 h-5 text-white`})],40,Ze),T(`button`,{type:`button`,class:`card-icon-button carousel-nav absolute right-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:n[1]||=A(e=>Ht(1),[`stop`]),onMouseenter:$},[O(l,{class:`w-5 h-5 text-white`})],40,Qe)],64)):P(``,!0),I(Et)?(x(),E(`div`,{key:5,class:w([`absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200`,I(It)?`bottom-16`:`bottom-10`])},[T(`span`,$e,y(I(Et)),1)],2)):P(``,!0),T(`div`,{ref_key:`footerRef`,ref:L,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[T(`div`,et,[e.selectionMode?(x(),E(`div`,{key:0,class:w([`w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0`,e.selected?`bg-primary border-primary`:`bg-black/40 border-white/80`])},[e.selected?(x(),k(u,{key:0,class:`w-4 h-4 text-white`})):P(``,!0)],2)):P(``,!0),(x(!0),E(M,null,C(I(kt),e=>(x(),E(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(x(),k(Te(I(b)[e]??I(b).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),I(jt).length>0?(x(),E(`span`,{key:1,title:I(jt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+y(I(jt).length),9,tt)):P(``,!0)]),I(Mt).length>0||I(Nt)>0?(x(),E(`div`,nt,[(x(!0),E(M,null,C(I(Mt),(e,t)=>(x(),E(`div`,{key:t,class:w([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===I(Ct)?`border-primary/80`:`border-white/20`]),onClick:e=>Ut(t,e)},[T(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,it)],10,rt))),128)),I(Nt)>0?(x(),E(`span`,at,`+`+y(I(Nt)),1)):P(``,!0)])):P(``,!0)],512),I(j)&&I(V)&&I(j).isLoading.value?(x(),E(`div`,ot,[O(o,{class:`w-7 h-7 text-white`})])):P(``,!0),I(It)?(x(),E(`div`,st,[T(`span`,ct,y(I(It)),1)])):P(``,!0)],2),I(z)?(x(),k(he,{key:0,ref_key:`cardMenuRef`,ref:R,items:I(Rt),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])):P(``,!0)],544)}}}),[[`__scopeId`,`data-v-22b538a5`]]),gt={name:`VirtualScroller`,components:{SpinnerIcon:s},extends:{name:`BaseVirtualScroller`,extends:n,provide(){return{$pcVirtualScroller:this,$parentInstance:this}},props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:`vertical`},rtl:{type:Boolean,default:!1},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},itemKey:{type:[String,Function],default:null}},style:z,beforeMount(){z.loadCSS({nonce:this.$primevueConfig?.csp?.nonce})}},inheritAttrs:!1,emits:[`update:numToleratedItems`,`scroll`,`scroll-index-change`,`lazy-load`],data(){let e=this.isBoth();return{first:e?{rows:0,cols:0}:0,last:e?{rows:0,cols:0}:0,page:e?{rows:0,cols:0}:0,numItemsInViewport:e?{rows:0,cols:0}:0,lastScrollPos:e?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{},observedWidth:0,observedHeight:0}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,computed:{containerClass(){return[`p-virtualscroller`,this.class,{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal(),"p-virtualscroller-rtl":this.rtl&&this.isHorizontal()}]},contentClass(){return[`p-virtualscroller-content`,{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return[`p-virtualscroller-loader`,{"p-virtualscroller-loader-mask":!this.$slots.loader}]},loadedItems(){return this.items&&!this.d_loading?this.isBoth()?this.items.slice(this.appendOnly?0:this.first.rows,this.last.rows).map(e=>this.columns?e:e.slice(this.appendOnly?0:this.first.cols,this.last.cols)):this.isHorizontal()&&this.columns?this.items:this.items.slice(this.appendOnly?0:this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){let e=this.isBoth(),t=this.isHorizontal();if(e||t)return this.d_loading&&this.loaderDisabled?e?this.loaderArr[0]:this.loaderArr:this.columns.slice(e?this.first.cols:this.first,e?this.last.cols:this.last)}return this.columns}},watch:{numToleratedItems(e){this.d_numToleratedItems=e},loading(e,t){this.lazy&&e!==t&&e!==this.d_loading&&(this.d_loading=e)},items(e,t){(!t||t.length!==(e||[]).length)&&this.scheduleInit()},itemSize(){this.scheduleInit()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.scheduleInit()},scrollWidth(){this.scheduleInit()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.unbindSizeObserver(),this.initialized=!1},methods:{resolveItemKey(e,t){let n=this.itemKey;return typeof n==`function`?n(e,t)??t:typeof n==`string`&&typeof e==`object`&&e?e[n]??t:t},viewInit(){_(this.element)&&(this.setContentEl(this.content),this.bindSizeObserver(),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=r(this.element),this.defaultHeight=t(this.element),this.defaultContentWidth=r(this.content),this.defaultContentHeight=t(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},scheduleInit(){this._initScheduled||(this._initScheduled=!0,Promise.resolve().then(()=>{this._initScheduled=!1,this.init(),this.calculateAutoSize()}))},isVertical(){return this.orientation===`vertical`},isHorizontal(){return this.orientation===`horizontal`},isBoth(){return this.orientation===`both`},scrollTo(e){this.element&&this.element.scrollTo(e)},scrollToIndex(e,t=`auto`){let n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r;if(n?e.every(e=>e>-1):e>-1){let a=this.first,{scrollTop:o=0,scrollLeft:s=0}=this.element,{numToleratedItems:c}=this.calculateNumItems(),l=this.getContentPosition(),u=this.itemSize,d=(e=0,t)=>e<=t?0:e,f=(e,t,n)=>e*t+n,p=(e=0,n=0)=>{i&&(e=this.element.scrollWidth-this.element.clientWidth-e),this.scrollTo({left:e,top:n,behavior:t})},m=n?{rows:0,cols:0}:0,h=!1,g=!1;n?(m={rows:d(e[0],c[0]),cols:d(e[1],c[1])},p(f(m.cols,u[1],l.left),f(m.rows,u[0],l.top)),g=this.lastScrollPos.top!==o||this.lastScrollPos.left!==s,h=m.rows!==a.rows||m.cols!==a.cols):(m=d(e,c),r?p(f(m,u,l.left),o):p(s,f(m,u,l.top)),g=this.lastScrollPos!==(r?s:o),h=m!==a),this.isRangeChanged=h,g&&(this.first=m)}},scrollInView(e,t,n=`auto`){if(t){let r=this.isBoth(),i=this.isHorizontal();if(r?e.every(e=>e>-1):e>-1){let{first:a,viewport:o}=this.getRenderedRange(),s=(e=0,t=0)=>this.scrollTo({left:e,top:t,behavior:n}),c=t===`to-start`,l=t===`to-end`;if(c){if(r)o.first.rows-a.rows>e[0]?s(o.first.cols*this.itemSize[1],(o.first.rows-1)*this.itemSize[0]):o.first.cols-a.cols>e[1]&&s((o.first.cols-1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.first-a>e){let e=(o.first-1)*this.itemSize;i?s(e,0):s(0,e)}}else if(l){if(r)o.last.rows-a.rows<=e[0]+1?s(o.first.cols*this.itemSize[1],(o.first.rows+1)*this.itemSize[0]):o.last.cols-a.cols<=e[1]+1&&s((o.first.cols+1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.last-a<=e+1){let e=(o.first+1)*this.itemSize;i?s(e,0):s(0,e)}}}}else this.scrollToIndex(e,n)},getRenderedRange(){let e=(e,t)=>Math.floor(e/(t||e)),t=this.first,n=0;if(this.element){let r=this.isBoth(),i=this.isHorizontal(),{scrollTop:a,scrollLeft:o}=this.element;r?(t={rows:e(a,this.itemSize[0]),cols:e(o,this.itemSize[1])},n={rows:t.rows+this.numItemsInViewport.rows,cols:t.cols+this.numItemsInViewport.cols}):(t=e(i?o:a,this.itemSize),n=t+this.numItemsInViewport)}return{first:this.first,last:this.last,viewport:{first:t,last:n}}},calculateNumItems(){let e=this.isBoth(),t=this.isHorizontal(),n=this.itemSize,r=this.getContentPosition(),i=this.observedWidth||(this.element?this.element.offsetWidth:0),a=this.observedHeight||(this.element?this.element.offsetHeight:0),o=i?i-r.left:0,s=a?a-r.top:0,c=(e,t)=>Math.ceil(e/(t||e)),l=e=>Math.ceil(e/2),u=e?{rows:c(s,n[0]),cols:c(o,n[1])}:c(t?o:s,n);return{numItemsInViewport:u,numToleratedItems:this.d_numToleratedItems||(e?[l(u.rows),l(u.cols)]:l(u))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let e=this.isBoth(),n=this.isHorizontal(),i=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[a,o]=[r(this.element),t(this.element)];(e||n)&&(this.element.style.width=a<this.defaultWidth?a+`px`:this.scrollWidth||this.defaultWidth+`px`),(e||i)&&(this.element.style.height=o<this.defaultHeight?o+`px`:this.scrollHeight||this.defaultHeight+`px`),this.content.style.minHeight=this.content.style.minWidth=``,this.content.style.position=``,this.element.style.contain=``}})},getLast(e=0,t){return this.items?Math.min(t?(this.columns||this.items[0])?.length||0:this.items?.length||0,e):0},getContentPosition(){if(this.content){if(this.cachedContentPosition&&this.cachedContentElement===this.content)return this.cachedContentPosition;let e=getComputedStyle(this.content),t=parseFloat(e.paddingLeft)+Math.max(parseFloat(e.left)||0,0),n=parseFloat(e.paddingRight)+Math.max(parseFloat(e.right)||0,0),r=parseFloat(e.paddingTop)+Math.max(parseFloat(e.top)||0,0),i=parseFloat(e.paddingBottom)+Math.max(parseFloat(e.bottom)||0,0);return this.cachedContentElement=this.content,this.cachedContentPosition={left:t,right:n,top:r,bottom:i,x:t+n,y:r+i},this.cachedContentPosition}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){let e=this.isBoth(),t=this.isHorizontal(),n=this.element.parentElement,r=this.scrollWidth||`${this.element.offsetWidth||n.offsetWidth}px`,i=this.scrollHeight||`${this.element.offsetHeight||n.offsetHeight}px`,a=(e,t)=>this.element.style[e]=t;e||t?(a(`height`,i),a(`width`,r)):a(`height`,i)}},setSpacerSize(){let e=this.items;if(e){let t=this.isBoth(),n=this.isHorizontal(),r=this.getContentPosition(),i=(e,t,n,r=0)=>this.spacerStyle={...this.spacerStyle,[`${e}`]:(t||[]).length*n+r+`px`};t?(i(`height`,e,this.itemSize[0],r.y),i(`width`,this.columns||e[1],this.itemSize[1],r.x)):n?i(`width`,this.columns||e,this.itemSize,r.x):i(`height`,e,this.itemSize,r.y)}},setContentPosition(e){if(this.content&&!this.appendOnly){let t=this.isBoth(),n=this.isHorizontal(),r=this.rtl&&n,i=e?e.first:this.first,a=(e,t)=>e*t,o=(e=0,t=0)=>{let n=r?-e:e;this.contentStyle={...this.contentStyle,transform:`translate3d(${n}px, ${t}px, 0)`}};if(t){let e=i.rows,t=i.cols,n=this.itemSize;o(a(t,n[1]),a(e,n[0]))}else{let e=i,t=this.itemSize,r=a(e,t);n?o(r,0):o(0,r)}}},onScrollPositionChange(e){let t=e.target,n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r,a=this.getContentPosition(),o=(e,t)=>e?e>t?e-t:e:0,s=(e,t)=>Math.floor(e/(t||e)),c=o(t.scrollTop,a.top),l=o(t.scrollLeft,a.left);i&&l<0&&(l=Math.abs(l));let u=n?{rows:0,cols:0}:0,d=this.last,f=!1,p=this.lastScrollPos;if(n){let e=this.lastScrollPos.top<=c,n=this.lastScrollPos.left<=l;if(!this.appendOnly||this.appendOnly&&(e||n)){let r={rows:s(c,this.itemSize[0]),cols:s(l,this.itemSize[1])},i={rows:this.calculateTriggerIndex(r.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateTriggerIndex(r.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n)};u={rows:this.calculateFirst(r.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateFirst(r.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n,!0)},d={rows:this.calculateLast(r.rows,u.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:this.calculateLast(r.cols,u.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},f=u.rows!==this.first.rows||d.rows!==this.last.rows||u.cols!==this.first.cols||d.cols!==this.last.cols||this.isRangeChanged,p={top:c,left:t.scrollLeft}}}else{let e=r?l:c,t=this.lastScrollPos<=e;if(!this.appendOnly||this.appendOnly&&t){let n=s(e,this.itemSize),r=this.calculateTriggerIndex(n,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t);u=this.calculateFirst(n,r,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t),d=this.calculateLast(n,u,this.last,this.numItemsInViewport,this.d_numToleratedItems),f=u!==this.first||d!==this.last||this.isRangeChanged,p=e}}return{first:u,last:d,isRangeChanged:f,scrollPos:p}},calculateTriggerIndex(e,t,n,r,i,a){return e<=i?i:a?n-r-i:t+i-1},calculateFirst(e,t,n,r,i,a,o,s=!1){if(e<=a)return 0;let c=Math.max(0,o?e<t?n:e-a:e>t?n:e-2*a),l=this.getLast(c,s);return c>l?l-i:c},calculateLast(e,t,n,r,i,a=!1){let o=t+r+2*i;return e>=i&&(o+=i+1),this.getLast(o,a)},onScrollChange(e){let{first:t,last:n,isRangeChanged:r,scrollPos:i}=this.onScrollPositionChange(e);if(r){let e={first:t,last:n};if(this.setContentPosition(e),this.first=t,this.last=n,this.lastScrollPos=i,this.$emit(`scroll-index-change`,e),this.lazy&&this.isPageChanged(t)){let e={first:this.step?Math.min(this.getPageByFirst(t)*this.step,(this.items?.length||0)-this.step):t,last:Math.min(this.step?(this.getPageByFirst(t)+1)*this.step:n,this.items?.length-1||0)};(this.lazyLoadState.first!==e.first||this.lazyLoadState.last!==e.last)&&this.$emit(`lazy-load`,e),this.lazyLoadState=e}}},onScroll(e){if(this.$emit(`scroll`,e),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.isPageChanged()){if(!this.d_loading&&this.showLoader){let{isRangeChanged:t}=this.onScrollPositionChange(e);(t||this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout(()=>{this.onScrollChange(e),this.d_loading&&this.showLoader&&(!this.lazy||this.loading===void 0)&&(this.d_loading=!1,this.page=this.getPageByFirst())},this.delay)}}else this.onScrollChange(e)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{if(_(this.element)){let e=this.isBoth(),n=this.isVertical(),i=this.isHorizontal(),[a,o]=[r(this.element),t(this.element)],[s,c]=[a!==this.defaultWidth,o!==this.defaultHeight];(e?s||c:i?s:n&&c)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=a,this.defaultHeight=o,this.defaultContentWidth=r(this.content),this.defaultContentHeight=t(this.content),this.init())}},this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener(`resize`,this.resizeListener),window.addEventListener(`orientationchange`,this.resizeListener))},bindSizeObserver(){this.sizeObserver||!this.element||typeof ResizeObserver>`u`||(this.sizeObserver=new ResizeObserver(e=>{let t=e[0]?.borderBoxSize?.[0];this.observedWidth=t?t.inlineSize:e[0]?.contentRect.width??0,this.observedHeight=t?t.blockSize:e[0]?.contentRect.height??0}),this.sizeObserver.observe(this.element))},unbindSizeObserver(){this.sizeObserver&&=(this.sizeObserver.disconnect(),null)},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(e){this.content=e||this.content||f(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},_t=[`tabindex`];function vt(e,t,n,r,i,a){let o=Ce(`SpinnerIcon`);return e.disabled?(x(),E(M,{key:1},[L(e.$slots,`default`),L(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(x(),E(`div`,b({key:0,ref:a.elementRef,class:a.containerClass,tabindex:e.tabindex,style:e.style},e.ptmi(`root`),{onScroll:t[0]||=(...e)=>a.onScroll&&a.onScroll(...e)}),[L(e.$slots,`content`,{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:i.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:e.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:i.spacerStyle,contentStyle:i.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},()=>[T(`div`,b({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(x(!0),E(M,null,C(a.loadedItems,(t,n)=>L(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(x(),E(`div`,b({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):P(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(x(),E(`div`,b({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(x(!0),E(M,{key:0},C(i.loaderArr,(t,n)=>L(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):P(``,!0),L(e.$slots,`loadingicon`,{},()=>[O(o,b({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):P(``,!0)],16,_t))}var q=v(gt,[[`render`,vt]]),J={aspectRatio:1,gap:8,hasMore:!1,loadMore:void 0,itemKey:void 0},yt={class:`recordings-row`},bt={key:1,class:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 z-10 rounded-full bg-black/60 p-1.5`},xt=v(F({__name:`CuiRecordingsGrid`,props:Oe({items:{},minItemWidth:{},aspectRatio:{},gap:{},hasMore:{type:Boolean},loadMore:{type:Function},itemKey:{type:Function}},J),setup(e,{expose:t}){let n=e,r=S(`containerRef`),{width:i,height:a}=m(r),o=D(0),s=D(!1),c=null,l=!1,u=N(()=>a.value>0?`${a.value}px`:void 0),d=N(()=>{let e=i.value;return e?Math.max(1,Math.floor((e+n.gap)/(n.minItemWidth+n.gap))):0}),f=N(()=>{let e=i.value,t=d.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),p=N(()=>f.value?Math.floor(f.value/n.aspectRatio):0),h=N(()=>p.value?p.value+n.gap:0),g=N(()=>{let e=d.value;if(!e)return[];let t=[];for(let r=0;r<n.items.length;r+=e)t.push(n.items.slice(r,r+e));return t});function _(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function ee(e){let t=e;if(t&&t.length!==0)return _(t[0])}async function te(){if(s.value||!n.hasMore||!n.loadMore||c!==null&&n.items.length===c)return;s.value=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{s.value=!1,c=n.items.length===e?e:null}}function ne(e){let t=e.target;t&&(o.value=t.scrollTop,t.scrollTop+t.clientHeight>=t.scrollHeight-h.value*3&&te())}function re(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}return Ae(()=>{let e=r.value;e&&f.value&&(e.style.setProperty(`--cell-w`,`${f.value}px`),e.style.setProperty(`--cell-h`,`${p.value}px`),e.style.setProperty(`--cell-gap`,`${n.gap}px`))}),ke([()=>n.items.length,a,h,()=>n.hasMore],()=>{l||(l=!0,Ee(()=>{l=!1,n.hasMore&&h.value&&a.value&&g.value.length*h.value<a.value+h.value&&te()}))},{flush:`post`}),t({scrollToTop:re,scrollY:o}),(e,t)=>{let n=q,i=ie;return x(),E(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root relative`},[I(g).length>0&&I(f)>0?(x(),k(n,{key:0,items:I(g),"item-size":I(h),"scroll-height":I(u),"num-tolerated-items":I(2),"item-key":ee,orientation:`vertical`,class:`recordings-scroll`,onScroll:ne},{item:Se(({item:t})=>[T(`div`,yt,[(x(!0),E(M,null,C(t,t=>(x(),E(`div`,{key:_(t),class:`recordings-cell`},[L(e.$slots,`item`,{item:t},void 0,!0)]))),128))])]),_:3},8,[`items`,`item-size`,`scroll-height`,`num-tolerated-items`])):P(``,!0),I(s)?(x(),E(`div`,bt,[O(i,{width:`18px`,height:`18px`,class:`text-white`})])):P(``,!0)],512)}}}),[[`__scopeId`,`data-v-a672f3ff`]]);function Y(e){if(e.episode)return e.episode.endTime;if(e.segIndex!==void 0){let t=e.event.segments?.[e.segIndex];if(t)return t.firstSeen}return e.event.thumbnailAt??e.event.startTime}function X(e){let t=[];for(let n of e){let e=n.segments??[];if(e.length<=1){t.push({event:n,key:n.id});continue}e.forEach((e,r)=>{e&&t.push({event:n,key:`${n.id}:seg:${r}`,segIndex:r})})}return t.sort((e,t)=>Y(t)-Y(e)),t}export{ht as i,Y as n,xt as r,X as t};
@@ -1 +0,0 @@
1
- import{Ar as e,Or as t,zr as n}from"./api-C9mnOxie.js";import{K as r,Z as i,cr as a,dr as o,mr as s,sn as c}from"./vendor-gFkr2qsZ.js";import{f as l}from"./vendor-core-B-Q4es-f.js";import{l as u,u as d}from"./server-bhW2Mw4D.js";import{n as f}from"./useServerRestart-CQN4cdHJ.js";import{t as p}from"./useUpdatesSocket-DHZNpLQX.js";import{u as m}from"./plugins-BTOdE_zv.js";async function h({signal:e}={}){return(await n.get(`/updates/status`,{signal:e})).data}async function g(){return(await n.post(`/updates/run`)).data}async function _(){await n.post(`/updates/cancel`)}async function v(){await n.post(`/updates/check`,void 0,{timeout:6e4})}async function y(){return(await n.get(`/workers/config`)).data}async function b(e){return(await n.patch(`/workers/config`,e)).data}async function x(){return(await n.post(`/workers/pairings`)).data}async function S(e){await n.delete(`/workers/${e}`)}async function C(e){await n.post(`/workers/${e}/restart`)}async function w({agentId:e,version:t}){await n.post(`/workers/${e}/update`,t?{version:t}:{})}async function T({agentId:e,name:t}){await n.patch(`/workers/${e}`,{name:t})}async function E({cameraId:e,agentId:t}){return(await n.post(`/workers/assign`,{cameraId:e,agentId:t})).data}async function D({cameraId:e}){return(await n.post(`/workers/unassign`,{cameraId:e})).data}async function O({pluginName:e,agentId:t}){return(await n.post(`/workers/assign-plugin`,{pluginName:e,agentId:t})).data}async function k({pluginName:e}){return(await n.post(`/workers/unassign-plugin`,{pluginName:e})).data}var A=class{_queryClient=i();toast=e();getConfigQuery(){return t({queryKey:[`workersConfig`],queryFn:()=>y(),retry:!1})}patchConfigQuery(){return r({mutationFn:b,onSuccess:()=>this._queryClient.invalidateQueries({queryKey:[`workersConfig`]}),onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}createPairingQuery(){return r({mutationFn:x})}removeWorkerQuery(){return r({mutationFn:S,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}assignCameraQuery(){return r({mutationFn:E,onMutate:({cameraId:e,agentId:t})=>this.patchCameraWorker(e,t),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}unassignCameraQuery(){return r({mutationFn:D,onMutate:({cameraId:e})=>this.patchCameraWorker(e,void 0),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}restartWorkerQuery(){return r({mutationFn:C})}updateWorkerQuery(){return r({mutationFn:w,onError:e=>{this.toast.add({severity:`error`,detail:e,life:5e3})}})}renameWorkerQuery(){return r({mutationFn:T,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}assignPluginQuery(){return r({mutationFn:O,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}unassignPluginQuery(){return r({mutationFn:k,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}patchCameraWorker(e,t){let n=[];for(let[r,i]of this._queryClient.getQueriesData({queryKey:[`camerasList`]}))i?.result&&(n.push([r,i]),this._queryClient.setQueryData(r,{...i,result:i.result.map(n=>n._id===e?{...n,workerAgentId:t}:n)}));return{rollback:()=>{for(let[e,t]of n)this._queryClient.setQueryData(e,t)}}}},j=3e4,M=l(`updates`,()=>{let t=e(),n=p(),{beginServerRestart:r}=f(),i=s(null),l=o(!1),y=o(Date.now()),b=o(!1),x,S=null,C=c(()=>{let e=new Map;for(let t of i.value?.run?.active?i.value.run.items:i.value?.lastRun?.items??[])e.set(t.id,t);for(let t of i.value?.manual??[])e.set(t.id,t);return e}),T=c(()=>{let e=i.value?.pending;if(!e)return[];let t=[];t.push(W({id:`server`,kind:`server`,name:`camera.ui`,installedVersion:e.server.installedVersion,latestVersion:e.server.latestVersion??e.server.installedVersion,status:e.server.updateAvailable?e.server.blockedReason?`blocked`:`pending`:`uptodate`,blockedReason:e.server.updateAvailable?e.server.blockedReason:void 0}));for(let n of e.plugins)t.push(W({id:`plugin:${n.pluginName}`,kind:`plugin`,name:n.displayName||n.pluginName,packageName:n.pluginName,installedVersion:n.installedVersion,latestVersion:n.latestVersion??n.installedVersion,status:n.updateAvailable?`pending`:`uptodate`}));for(let n of e.workers)t.push(W({id:`worker:${n.agentId}`,kind:`worker`,name:n.name,installedVersion:n.installedVersion,latestVersion:e.targetServerVersion,status:n.updateAvailable?n.updatable?`pending`:`blocked`:`uptodate`,blockedReason:n.updateAvailable&&!n.updatable?n.blockedReason:void 0}));return t}),E=c(()=>i.value?.run?.active===!0),D=c(()=>i.value?.run?.cancelRequested===!0),O=c(()=>i.value?.lastRun?.finishedAt??null),k=c(()=>i.value?.run?.active?i.value.run.items.length:0),A=c(()=>i.value?.run?.active?i.value.run.items.filter(e=>e.status===`success`||e.status===`error`).length:0),M=c(()=>T.value.filter(e=>e.status===`pending`||e.status===`error`)),N=c(()=>M.value.length),P=c(()=>T.value.filter(e=>e.status===`error`)),F=c(()=>T.value.filter(e=>e.status===`updating`)),I=c(()=>F.value[0]),L=c(()=>T.value.find(e=>e.status===`restarting`)),R=c(()=>T.value.some(e=>e.kind===`server`&&(e.status===`updating`||e.status===`restarting`))),z=c(()=>F.value.some(e=>e.kind!==`server`)),B=c(()=>E.value||R.value||z.value),V=c(()=>i.value!==null&&N.value===0&&!B.value),H=c(()=>T.value.some(e=>e.kind===`server`&&(e.status===`pending`||e.status===`error`))),U=c(()=>i.value?.pending.targetServerVersion);function W(e){let t=C.value.get(e.id);return!t||t.status===`success`&&e.status===`uptodate`||t.status===`success`&&e.status===`pending`&&e.latestVersion!==t.targetVersion?e:{...e,status:t.status,error:t.error,latestVersion:t.targetVersion??e.latestVersion}}async function G(){return S||(S=h().then(e=>{i.value=e,y.value=Date.now()}).catch(()=>{}).finally(()=>{S=null}),S)}function K(){b.value||(b.value=!0,n.connect(),n.onStatus(()=>{G()}),G(),x??=setInterval(()=>G(),j))}async function q(){if(!B.value){l.value=!0;try{await v().catch(()=>{}),await G()}finally{l.value=!1}}}async function J(e){let n=T.value.find(t=>t.id===e);if(n&&!E.value&&(n.status===`pending`||n.status===`error`))try{n.kind===`plugin`?await m({pluginData:{pluginname:n.packageName??n.name,pluginversion:n.latestVersion??`latest`}}):n.kind===`worker`?await w({agentId:e.slice(7),version:U.value}):(await d({serverData:{version:n.latestVersion??`latest`}}),r(),await u())}catch(e){t.add({severity:`error`,detail:e?.response?.data?.message??e?.message,life:5e3})}finally{G()}}async function Y(){if(!(B.value||N.value===0))try{await g()}catch(e){t.add({severity:`error`,detail:e?.response?.data?.message??e?.message,life:5e3})}finally{G()}}async function X(){if(E.value)try{await _()}catch{}finally{G()}}function Z(e){return T.value.filter(t=>t.kind===e)}return a(()=>{x&&clearInterval(x)}),{status:i,items:T,runActive:E,cancelRequested:D,runFinishedAt:O,isChecking:l,checkedAt:y,runTotal:k,runDone:A,pendingItems:M,pendingCount:N,failedItems:P,updatingItems:F,updatingItem:I,restartingItem:L,serverBusy:R,targetsBusy:z,busy:B,allUpToDate:V,serverPending:H,targetServerVersion:U,connect:K,refresh:q,updateItem:J,updateAll:Y,cancelRun:X,itemsOf:Z}});export{A as n,M as t};
@@ -1 +0,0 @@
1
- import{Ar as e,_ as t,s as n,zr as r}from"./api-C9mnOxie.js";import{dr as i}from"./vendor-gFkr2qsZ.js";import{l as a}from"./server-bhW2Mw4D.js";import{n as o}from"./useServerRestart-CQN4cdHJ.js";var s=3e5;async function c(e){return(await r.post(`/backup/download`,{localStorage:e},{responseType:`arraybuffer`,timeout:s})).data}async function l(e,t){return(await r.post(`/backup/restore`,e,{timeout:s,onUploadProgress:e=>{e.total&&t?.(Math.round(e.loaded/e.total*100))}})).data}async function u(){return(await r.get(`/backup/scheduler`)).data}async function d(e){return(await r.patch(`/backup/scheduler`,e)).data}async function f(){return(await r.post(`/backup/scheduler/run`)).data}async function p(e){return(await r.get(`/backup/scheduler/backups/${encodeURIComponent(e)}`,{responseType:`arraybuffer`,timeout:s})).data}async function m(e){await r.delete(`/backup/scheduler/backups/${encodeURIComponent(e)}`)}var h=i(!1),g=i(`idle`),_=i(0),v=i(``),y=h;function b(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.language&&localStorage.setItem(`language`,e.language),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}function x(){async function r(r){let i=e();h.value=!0,g.value=`uploading`,_.value=0,v.value=``;try{let e=new FormData;e.append(`upload`,r),b(await l(e,e=>{_.value=e,e>=100&&(g.value=`restoring`)}))}catch(e){return h.value=!1,g.value=`idle`,v.value=n(e),i.add({severity:`error`,detail:v.value,life:1e4}),!1}g.value=`restarting`;let{beginServerRestart:s}=o();return s(),await a().catch(()=>{}),await t().logout(),h.value=!1,g.value=`idle`,!0}return{active:h,phase:g,uploadPercent:_,lastError:v,restoreLocalStorage:b,run:r}}export{p as a,f as c,c as i,x as n,u as o,m as r,d as s,y as t};
@@ -1 +0,0 @@
1
- import"./api-C9mnOxie.js";import{dr as e,ur as t}from"./vendor-gFkr2qsZ.js";var n=new Set([`button`,`checkbox`,`radio`,`range`,`submit`,`reset`,`file`,`color`,`image`]),r=e(0),i=new Set,a=!1;function o(e){return e instanceof HTMLTextAreaElement?!e.readOnly&&!e.disabled:e instanceof HTMLInputElement?!e.readOnly&&!e.disabled&&!n.has(e.type):e instanceof HTMLElement&&e.isContentEditable}function s(){return{keyboardInset:t(r)}}function c(e){return i.add(e),document.documentElement.classList.add(`cui-keyboard-flip`),()=>{i.delete(e),i.size||document.documentElement.classList.remove(`cui-keyboard-flip`)}}function l(){if(a||typeof window>`u`||(a=!0,navigator.maxTouchPoints===0))return;let e=window.innerHeight,t=()=>{let t=window.visualViewport;if(t){if(!o(document.activeElement)){u(0);return}u(Math.max(0,e-t.height-t.offsetTop))}};window.addEventListener(`resize`,()=>{e=window.innerHeight,t()}),window.visualViewport?.addEventListener(`resize`,t),window.visualViewport?.addEventListener(`scroll`,t),document.addEventListener(`focusin`,()=>setTimeout(t,50)),document.addEventListener(`focusout`,()=>setTimeout(t,50))}function u(e){if(e===r.value)return;let t=[...i].map(e=>e());r.value=e,document.documentElement.style.setProperty(`--keyboard-inset`,`${e}px`);for(let e of t)e?.()}export{s as i,c as n,l as r,o as t};
@@ -1 +0,0 @@
1
- import{Dr as e}from"./api-C9mnOxie.js";import{sn as t}from"./vendor-gFkr2qsZ.js";function n(){let{data:n}=new e().getUsersQuery({page:1,pageSize:-1});return{userOptions:t(()=>(n.value?.result??[]).map(e=>({label:e.username,value:e.username})))}}export{n as t};