@camera.ui/server 2.2.5-beta.0 → 2.2.5-beta.1

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 (427) hide show
  1. package/dist/interface/assets/{404-Bdbp69ox.js → 404-6ZpTZ3KD.js} +1 -1
  2. package/dist/interface/assets/{About-DmtCok-y.js → About-DNvcZ3EY.js} +1 -1
  3. package/dist/interface/assets/{Assistant-D-Lv6JtY.js → Assistant-kFFjOesz.js} +1 -1
  4. package/dist/interface/assets/{Automation-LQ3TssrU.js → Automation-DPH-VMGf.js} +3 -3
  5. package/dist/interface/assets/{AutomationImport-B_ra3G3_.js → AutomationImport-Db74ZBgg.js} +2 -2
  6. package/dist/interface/assets/{AutomationStore-DSXSaQjp.js → AutomationStore-CFnapdvO.js} +2 -2
  7. package/dist/interface/assets/{AutomationStoreDetail-B5_Meb6R.js → AutomationStoreDetail-BCmfVMtC.js} +2 -2
  8. package/dist/interface/assets/{Automations-DHfPRe8W.js → Automations-D41at64b.js} +2 -2
  9. package/dist/interface/assets/{Camera-CDbfvtJv.js → Camera-BhFx-a1S.js} +2 -2
  10. package/dist/interface/assets/{CameraConsole-DX-IRmd_.js → CameraConsole-C89mOigo.js} +1 -1
  11. package/dist/interface/assets/{Cameras-D9m2bxWj.js → Cameras-TiX75P_R.js} +1 -1
  12. package/dist/interface/assets/{Camview-DKOYY6TI.js → Camview-Bs3Ze0VB.js} +1 -1
  13. package/dist/interface/assets/{CertificateUpload-B8ccb3n-.js → CertificateUpload-DBfJBo-w.js} +1 -1
  14. package/dist/interface/assets/{Config-DCIUUWCv.js → Config-CiCqmjhC.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionAssistant-6IUzZeNW.js → ConfigActionAssistant-DCW9F-o_.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionCameraControl-EXuiNMuG.js → ConfigActionCameraControl-V170tTXG.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionDelay-Cs4sYEk-.js → ConfigActionDelay-D1CZOls9.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionHttp-gUM6RQ6Y.js → ConfigActionHttp-ZOsjh7jZ.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionImageInput-CPl5kVgO.js → ConfigActionImageInput-Dq5NtDno.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionMqtt-BeBMCOJ-.js → ConfigActionMqtt-Cyk0f9mh.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotification-DJFHdFDN.js → ConfigActionNotification-Ca6IygV-.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionNotificationControl-BXoztPTs.js → ConfigActionNotificationControl-CCiWBmJq.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionOutput-BGrFWqZ1.js → ConfigActionOutput-B4zPAsNS.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionPlugin-CdIIMcJZ.js → ConfigActionPlugin-C25suoOA.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSensor-MRVGJ22A.js → ConfigActionSensor-CgIBk5qS.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSnapshot-CxA4f5ag.js → ConfigActionSnapshot-Dj4_bcR-.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionVariable-DmU4seLh.js → ConfigActionVariable-CDlIj4Ji.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionIfElse-Tgdrk7lo.js → ConfigConditionIfElse-B9Q2pZxM.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSensorState-CyyzoL6Q.js → ConfigConditionSensorState-DrOBPrDB.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSwitch-DprK5AbR.js → ConfigConditionSwitch-BdfA75Z4.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionTime-CDruEvBp.js → ConfigConditionTime-CCpFkanY.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-BhlgTOW9.js → ConfigSensorValueInput-B7Qc06SA.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-4vdEST9Y.js → ConfigTriggerDetection-QOLhT23F.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerGeofence-1B0BdCOw.js → ConfigTriggerGeofence-HUhmtzd_.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerManual-BQLDqwZh.js → ConfigTriggerManual-Bpyy9Jzz.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerMqtt-B3YNOB6U.js → ConfigTriggerMqtt-wxB4LtkP.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSchedule-DhbJGOT7.js → ConfigTriggerSchedule-D7X5Oa5t.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSensor-iMPg_Pmb.js → ConfigTriggerSensor-DM7qewdx.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSystem-MaNZTO3h.js → ConfigTriggerSystem-CK573JKn.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerWebhook-B3WfXjPv.js → ConfigTriggerWebhook-yoouSRHG.js} +1 -1
  41. package/dist/interface/assets/{Console-BQLINPCG.js → Console-BCL2lVJv.js} +1 -1
  42. package/dist/interface/assets/{CuiAssistantConversation-yCRlgjtr.js → CuiAssistantConversation-BmjsGo2l.js} +1 -1
  43. package/dist/interface/assets/{CuiAutomationRunsDialog-CJ0mzDLL.js → CuiAutomationRunsDialog-BFZjtF9o.js} +1 -1
  44. package/dist/interface/assets/CuiBottomSheet-CVHz2Vrq.js +1 -0
  45. package/dist/interface/assets/{CuiBottomSheet-BbP0T2v3.js → CuiBottomSheet-DLtu4FrC.js} +1 -1
  46. package/dist/interface/assets/{CuiCameraPipCard-1EhYM5kQ.js → CuiCameraPipCard-BGZQsVHc.js} +1 -1
  47. package/dist/interface/assets/{CuiCameraRecordings-D2jG47AV.js → CuiCameraRecordings-5pcLjdf8.js} +1 -1
  48. package/dist/interface/assets/{CuiCameraShares-IpkomKkl.js → CuiCameraShares-CNNvqXns.js} +1 -1
  49. package/dist/interface/assets/CuiCameraTable-BDN5NGr2.js +1 -0
  50. package/dist/interface/assets/{CuiCameraTable-DlL-z_na.js → CuiCameraTable-DF_IOFyD.js} +1 -1
  51. package/dist/interface/assets/{CuiChartTable-B0EPcrgv.js → CuiChartTable-rOLdUaOa.js} +1 -1
  52. package/dist/interface/assets/{CuiConsole-D8Xk2LXY.js → CuiConsole-B75tQO-y.js} +1 -1
  53. package/dist/interface/assets/{CuiDataTable-DtRTB560.js → CuiDataTable-C8ZywwaZ.js} +1 -1
  54. package/dist/interface/assets/{CuiLightControl-CtL3sA8k.js → CuiLightControl-D6PaG8aL.js} +1 -1
  55. package/dist/interface/assets/{CuiList-Bn7DT_Ao.js → CuiList-B8wJe291.js} +1 -1
  56. package/dist/interface/assets/{CuiMarkdownContent-CyJxfnFA.js → CuiMarkdownContent-D-S1LZy3.js} +1 -1
  57. package/dist/interface/assets/CuiMarkdownContent-yHrnDzQd.js +1 -0
  58. package/dist/interface/assets/{CuiPluginCard-B-4x6Mno.js → CuiPluginCard-aGMkvpeM.js} +2 -2
  59. package/dist/interface/assets/{CuiPluginCategoryChip-Dih4zKtO.js → CuiPluginCategoryChip-BCgADU71.js} +1 -1
  60. package/dist/interface/assets/{CuiPluginOAuthButton-D-Y9KYJz.js → CuiPluginOAuthButton-mrm1vDAP.js} +2 -2
  61. package/dist/interface/assets/{CuiPluginTrustBadge-_g3Ctrg4.js → CuiPluginTrustBadge-J3818in1.js} +1 -1
  62. package/dist/interface/assets/{CuiQRCode-D6hzmPzV.js → CuiQRCode-Dv4w0udN.js} +1 -1
  63. package/dist/interface/assets/{CuiSchema-Dh8Mu4BK.js → CuiSchema-Cn5geGt7.js} +1 -1
  64. package/dist/interface/assets/{CuiTopNavbarItem-CgX21E5K.js → CuiTopNavbarItem-cP_SiDnw.js} +1 -1
  65. package/dist/interface/assets/{Faces-CgDoKVkp.js → Faces-b611-5Ep.js} +1 -1
  66. package/dist/interface/assets/{FirstSteps-CZSTX7Ot.js → FirstSteps-DcVdjoXr.js} +1 -1
  67. package/dist/interface/assets/{Floorplan-CRvmaf45.js → Floorplan-CZu7D3L2.js} +1 -1
  68. package/dist/interface/assets/{Instances-DRkhTQKC.js → Instances-BGM2M_vr.js} +1 -1
  69. package/dist/interface/assets/{Logs-CIDJSpdH.js → Logs-BXDALPw6.js} +1 -1
  70. package/dist/interface/assets/{Menu-CM_F1jfd.js → Menu-DV63hDK5.js} +1 -1
  71. package/dist/interface/assets/{Metrics-DgJEg-ZK.js → Metrics-CrojTUIw.js} +1 -1
  72. package/dist/interface/assets/{OAuthDeviceFlow-BZ9LcgmJ.js → OAuthDeviceFlow-E2q5BNUN.js} +1 -1
  73. package/dist/interface/assets/{Plugin-BBDpg6U_.js → Plugin-BFovKMPD.js} +1 -1
  74. package/dist/interface/assets/{PluginConsole-DxVlTuNy.js → PluginConsole-BLG5Srww.js} +1 -1
  75. package/dist/interface/assets/{PluginDetail-fLGD3R-u.js → PluginDetail-Dghf_z9y.js} +2 -2
  76. package/dist/interface/assets/{PluginSchema-CewD2H-K.js → PluginSchema-C3u0PCYu.js} +1 -1
  77. package/dist/interface/assets/PluginSearch-DQb6r45_.js +1 -0
  78. package/dist/interface/assets/{PluginSearch-5wX7WEcz.js → PluginSearch-XaJOsyFA.js} +2 -2
  79. package/dist/interface/assets/{PluginUpdateProgress-B7Lj0ttd.js → PluginUpdateProgress-tMIWjHFs.js} +1 -1
  80. package/dist/interface/assets/{Plugins-DVQ476iL.js → Plugins-DgKXf65s.js} +1 -1
  81. package/dist/interface/assets/{RecentEventsFilter-CWNBI2Ge.js → RecentEventsFilter-DlzWA8QR.js} +1 -1
  82. package/dist/interface/assets/{Recordings-DSRgRVhN.js → Recordings-DC47F4WC.js} +1 -1
  83. package/dist/interface/assets/{SensorEdit-B1mYmxDV.js → SensorEdit-BDeJ0tjj.js} +1 -1
  84. package/dist/interface/assets/{SensorHistory-D1kKroxp.js → SensorHistory-C8oPVJEX.js} +1 -1
  85. package/dist/interface/assets/{Sensors-yAc1M-oO.js → Sensors-C29BBaNa.js} +2 -2
  86. package/dist/interface/assets/{Settings-DBKgECRK.js → Settings-bn3Pokuq.js} +1 -1
  87. package/dist/interface/assets/SettingsAccount-B-SSNfmo.js +1 -0
  88. package/dist/interface/assets/{SettingsAccount-CM3XGNL6.js → SettingsAccount-BXClgcHw.js} +1 -1
  89. package/dist/interface/assets/SettingsAppearance-1KCm8sJO.js +1 -0
  90. package/dist/interface/assets/{SettingsAppearance-C-nllv3m.js → SettingsAppearance-C5rHbPxY.js} +1 -1
  91. package/dist/interface/assets/{SettingsAssistant-ClRO04fv.js → SettingsAssistant-ndgpk0jF.js} +1 -1
  92. package/dist/interface/assets/{SettingsBackup-Cq_eLVCR.js → SettingsBackup-Cw0OoGGY.js} +1 -1
  93. package/dist/interface/assets/{SettingsList-Bklt3TQO.js → SettingsList--FB27rY6.js} +1 -1
  94. package/dist/interface/assets/{SettingsMqtt-BLkP0en6.js → SettingsMqtt-DrHwxyfj.js} +1 -1
  95. package/dist/interface/assets/{SettingsNotifications-CeUKfEnH.js → SettingsNotifications-CHFxYyBM.js} +1 -1
  96. package/dist/interface/assets/{SettingsPermissions-Cpka-k3Q.js → SettingsPermissions-CtR3k4N9.js} +1 -1
  97. package/dist/interface/assets/{SettingsRecordings-k20qTe7K.js → SettingsRecordings-YTMBWiO2.js} +1 -1
  98. package/dist/interface/assets/{SettingsRemote-CdUj0nZ1.js → SettingsRemote-DTZo7Tnk.js} +1 -1
  99. package/dist/interface/assets/{SettingsSystem-6OChvWL7.js → SettingsSystem-C9L3_BPg.js} +2 -2
  100. package/dist/interface/assets/{SettingsUsers-B57uZ8jn.js → SettingsUsers-BK6d7cMj.js} +1 -1
  101. package/dist/interface/assets/{Terminal-WMgVSORW.js → Terminal-DWa4f8GL.js} +1 -1
  102. package/dist/interface/assets/{Training-BkWlywj_.js → Training-BsgWYOlp.js} +1 -1
  103. package/dist/interface/assets/{Updates-Dwrd6PQl.js → Updates-CSvohiVI.js} +2 -2
  104. package/dist/interface/assets/{VariableInput-CDJXnzEV.js → VariableInput-CiWT5dul.js} +1 -1
  105. package/dist/interface/assets/{VariableSuggestions-CNq7O1o-.js → VariableSuggestions-pbXYBWuw.js} +1 -1
  106. package/dist/interface/assets/{VersionsHandler-C0A8Ryhn.js → VersionsHandler-BE-YNUTe.js} +1 -1
  107. package/dist/interface/assets/{VirtualSensorCreate-zEehu8Fg.js → VirtualSensorCreate-Ba4XwvcD.js} +1 -1
  108. package/dist/interface/assets/{Workers-Be7q2vOK.js → Workers-BtHqRqzx.js} +1 -1
  109. package/dist/interface/assets/{account-6TLZf1iz.js → account-BxoX10XU.js} +1 -1
  110. package/dist/interface/assets/{alert-circle-CWUV5Xzc.js → alert-circle-pr3uC6jZ.js} +1 -1
  111. package/dist/interface/assets/{alert-outline-8Rb4Kt7A.js → alert-outline-DHaYL1DY.js} +1 -1
  112. package/dist/interface/assets/{api-CSl3-BNZ.js → api--1J-SAjn.js} +1 -1
  113. package/dist/interface/assets/{api-vegsDz6n.js → api-C7-TgfI0.js} +3 -3
  114. package/dist/interface/assets/{arrow-left-CR_6L2Na.js → arrow-left-5ht64ZGB.js} +1 -1
  115. package/dist/interface/assets/{assistant-jARIkvB1.js → assistant-Cl_fhAuJ.js} +1 -1
  116. package/dist/interface/assets/{assistantModels-frQFfeed.js → assistantModels-DPcZCyld.js} +1 -1
  117. package/dist/interface/assets/{auth-Bov4B1jy.js → auth-CbzQl7TC.js} +1 -1
  118. package/dist/interface/assets/{automations-CJe7TvLk.js → automations-tJ_M8mwQ.js} +1 -1
  119. package/dist/interface/assets/{back-filled-xrzKyz1B.js → back-filled-BncmhmK7.js} +1 -1
  120. package/dist/interface/assets/{bell-ring-CP1gJErL.js → bell-ring-BrHmFuCb.js} +1 -1
  121. package/dist/interface/assets/{brain-BTo05kAx.js → brain-DbFpT7Cq.js} +1 -1
  122. package/dist/interface/assets/{cameraSources-CDiYtBzG.js → cameraSources-BoPq2cHU.js} +1 -1
  123. package/dist/interface/assets/{cctv-jOxIizQH.js → cctv-DO-BmfXS.js} +1 -1
  124. package/dist/interface/assets/{check-circle-CXfnFKFA.js → check-circle-DefdZO6b.js} +1 -1
  125. package/dist/interface/assets/{check-circle-outline-BXLVwqwM.js → check-circle-outline-DLeND8yu.js} +1 -1
  126. package/dist/interface/assets/{chevron-down-BmHRUHVR.js → chevron-down-COQqnpYB.js} +1 -1
  127. package/dist/interface/assets/{chevron-up-BIxCAmMr.js → chevron-up-D1Xd7VoH.js} +1 -1
  128. package/dist/interface/assets/{clock-outline-D9YYXYjG.js → clock-outline-DLIhBBQh.js} +1 -1
  129. package/dist/interface/assets/{close-Gg5h2MPz.js → close-C_pY8d5W.js} +1 -1
  130. package/dist/interface/assets/{close-circle-DmuCMtNe.js → close-circle-CUM5zI7N.js} +1 -1
  131. package/dist/interface/assets/{cloud-check-CB0qNXSP.js → cloud-check-CqURJGod.js} +1 -1
  132. package/dist/interface/assets/cloudHandoff-U-ME7kxo.js +1 -0
  133. package/dist/interface/assets/{config-iO2vrtak.js → config-ConCokYZ.js} +1 -1
  134. package/dist/interface/assets/{content-copy-DBYFzNui.js → content-copy-M0zk9eVL.js} +1 -1
  135. package/dist/interface/assets/{copy-CF7J0cxP.js → copy-DbP_BYcc.js} +1 -1
  136. package/dist/interface/assets/{cube-scan-Bzsgslh2.js → cube-scan-DUOB_hmY.js} +1 -1
  137. package/dist/interface/assets/{delete-CRNIa5a0.js → delete-rtnOkwr8.js} +1 -1
  138. package/dist/interface/assets/{dist-CKsmPF0O.js → dist-Ce8wBKXN.js} +1 -1
  139. package/dist/interface/assets/{dots-vertical-C4DlXZyp.js → dots-vertical-BBZiQrJI.js} +1 -1
  140. package/dist/interface/assets/{download-C4gHcSTT.js → download-CV7ETeuV.js} +1 -1
  141. package/dist/interface/assets/esm-B0uV7sCS.js +1 -0
  142. package/dist/interface/assets/esm-B2yI2eHV.js +1 -0
  143. package/dist/interface/assets/esm-BGznyI26.js +1 -0
  144. package/dist/interface/assets/esm-BU06bvS2.js +1 -0
  145. package/dist/interface/assets/esm-CDZvvPo-.js +1 -0
  146. package/dist/interface/assets/esm-CQhKa6pe.js +1 -0
  147. package/dist/interface/assets/esm-C_cunepi.js +1 -0
  148. package/dist/interface/assets/esm-D7Wl3e71.js +1 -0
  149. package/dist/interface/assets/esm-DF51BosK.js +1 -0
  150. package/dist/interface/assets/esm-DGnwYAQM.js +1 -0
  151. package/dist/interface/assets/esm-DOPi7vcu.js +1 -0
  152. package/dist/interface/assets/esm-DhUjXDgk.js +1 -0
  153. package/dist/interface/assets/esm-Dy2zOjxI.js +1 -0
  154. package/dist/interface/assets/esm-kUcKqIWx.js +1 -0
  155. package/dist/interface/assets/{eventIcons-BPQ-zSnz.js → eventIcons-CCFi3Fbj.js} +1 -1
  156. package/dist/interface/assets/{eye-off-D7-qb6Nm.js → eye-off-CvhN3zxZ.js} +1 -1
  157. package/dist/interface/assets/{eye-off-outline-DO1W1tdl.js → eye-off-outline-CCqCZfJ6.js} +1 -1
  158. package/dist/interface/assets/{flowSchema-B0vIoy4y.js → flowSchema-CmXSZKQe.js} +1 -1
  159. package/dist/interface/assets/{help-circle-outline-BrCQn_fb.js → help-circle-outline-CQl2D4oN.js} +1 -1
  160. package/dist/interface/assets/{history-uQmxYRH-.js → history-BXFIMe6V.js} +1 -1
  161. package/dist/interface/assets/{home-CPvD8R_d.js → home-D7fG7atW.js} +1 -1
  162. package/dist/interface/assets/{information-outline-Bo2TPoHa.js → information-outline-1WzSLz5m.js} +1 -1
  163. package/dist/interface/assets/{intercomService-IAAXcRPG.js → intercomService-DyUZK0Im.js} +1 -1
  164. package/dist/interface/assets/{lan-pTYzHgPx.js → lan-CbNzy3jQ.js} +1 -1
  165. package/dist/interface/assets/{main-DQgH1fon.js → main-D4ZrTpOr.js} +2 -2
  166. package/dist/interface/assets/{microphone-Crj84LWD.js → microphone-CRLenDoX.js} +1 -1
  167. package/dist/interface/assets/{minus-DTDhg2EM.js → minus-COYpQ3vD.js} +1 -1
  168. package/dist/interface/assets/{mqtt-DfpSLxes.js → mqtt-C_RLsZgN.js} +1 -1
  169. package/dist/interface/assets/native-Chu05rXa.js +1 -0
  170. package/dist/interface/assets/native-DtAgV_35.js +1 -0
  171. package/dist/interface/assets/{nodeDefinitions-Jb3-KbSO.js → nodeDefinitions-DgM5EMJ0.js} +1 -1
  172. package/dist/interface/assets/{notifications-jTSwwN1i.js → notifications-B8VdKX2U.js} +1 -1
  173. package/dist/interface/assets/{pause-B7ud2O8d.js → pause-DvYzloru.js} +1 -1
  174. package/dist/interface/assets/{pencil-CuQeB4kE.js → pencil-Cd5KnMGq.js} +1 -1
  175. package/dist/interface/assets/{pencil-outline-BsdKHhHl.js → pencil-outline-BiVfpCP6.js} +1 -1
  176. package/dist/interface/assets/plugin-CWPz0s-n.js +1 -0
  177. package/dist/interface/assets/{plugins-ChyJXprl.js → plugins-CqWe1lUn.js} +1 -1
  178. package/dist/interface/assets/{plus-x5XqrG-6.js → plus-CjwCt143.js} +1 -1
  179. package/dist/interface/assets/{plus-Jda3x3mB.js → plus-IEiNd6x0.js} +1 -1
  180. package/dist/interface/assets/{power-et3ptczv.js → power-C4NWLKUx.js} +1 -1
  181. package/dist/interface/assets/{radar-D0eG7gya.js → radar-DBqhxkLO.js} +1 -1
  182. package/dist/interface/assets/{refresh-zUwVhGRH.js → refresh-DBLQ62l4.js} +1 -1
  183. package/dist/interface/assets/{restore-D2nuKfs4.js → restore-mXNfiEUq.js} +1 -1
  184. package/dist/interface/assets/{ring-resize-MiubMIoG.js → ring-resize-DrTdJJZT.js} +1 -1
  185. package/dist/interface/assets/{rooms-BMWJpAXC.js → rooms-CIxV7WRD.js} +1 -1
  186. package/dist/interface/assets/{round-alt-arrow-left-bold-DJ2t35Ab.js → round-alt-arrow-left-bold-BlJgH1Gs.js} +1 -1
  187. package/dist/interface/assets/{search-CSFYlWFv.js → search-CGxnUtuo.js} +1 -1
  188. package/dist/interface/assets/{sensorIcons-dUp8Tone.js → sensorIcons-CtsJEtFd.js} +1 -1
  189. package/dist/interface/assets/{sensorSlots-CosoVMys.js → sensorSlots-B0rJeEuw.js} +1 -1
  190. package/dist/interface/assets/{sensors-DLdbNuoj.js → sensors-CyseZmxe.js} +1 -1
  191. package/dist/interface/assets/{server-D-qkU2-U.js → server-BvOtzDbz.js} +1 -1
  192. package/dist/interface/assets/{settings-b9NE6YOU.js → settings-wlG-pPuL.js} +1 -1
  193. package/dist/interface/assets/{source-branch-DA1N9TmJ.js → source-branch-AyOkkO8S.js} +1 -1
  194. package/dist/interface/assets/{theme-DhneHMji.js → theme-CqKA1ClW.js} +1 -1
  195. package/dist/interface/assets/{trash-2-D3UqAJmg.js → trash-2-BKLI42HM.js} +1 -1
  196. package/dist/interface/assets/{trash-can-outline-B7IPK5NP.js → trash-can-outline-BFiV5RfR.js} +1 -1
  197. package/dist/interface/assets/{trash-fill-DIW5RIZu.js → trash-fill-hfLSPgsP.js} +1 -1
  198. package/dist/interface/assets/{trash2-D_pJJ_Dw.js → trash2-lr9UJJWi.js} +1 -1
  199. package/dist/interface/assets/{types-DDpq8alD.js → types-48CQutaE.js} +1 -1
  200. package/dist/interface/assets/{types-DdyAGRju.js → types-BRmIeoRR.js} +1 -1
  201. package/dist/interface/assets/{types-CngwbyEy.js → types-BlFbLEIJ.js} +1 -1
  202. package/dist/interface/assets/{undo-CNP-pN7J.js → undo-nleJllpv.js} +1 -1
  203. package/dist/interface/assets/{ungrouped-e2tQIZD2.js → ungrouped-D4Eyspkn.js} +1 -1
  204. package/dist/interface/assets/{updates-DnVisGT3.js → updates-iwZh9X-d.js} +1 -1
  205. package/dist/interface/assets/{upload-DeHCHra3.js → upload-1FIs_qFI.js} +1 -1
  206. package/dist/interface/assets/{upload-BzANK-MP.js → upload-BOBHxpZk.js} +1 -1
  207. package/dist/interface/assets/{useAppVersion-gtzMlM4b.js → useAppVersion-m7hrV2QZ.js} +1 -1
  208. package/dist/interface/assets/{useAssistantActions-BIHVky9T.js → useAssistantActions-BY-FVxFl.js} +1 -1
  209. package/dist/interface/assets/{useBackupRestore-DfgufKp3.js → useBackupRestore-BJSrIE1j.js} +1 -1
  210. package/dist/interface/assets/{useCameraOptions-B9yEPgGd.js → useCameraOptions-U3cPq_8f.js} +1 -1
  211. package/dist/interface/assets/{useKeyboardInset-1sUlRSeV.js → useKeyboardInset-Ce6esuI4.js} +1 -1
  212. package/dist/interface/assets/{useLogsSocket-C2QUQqkZ.js → useLogsSocket-BprgpXs0.js} +1 -1
  213. package/dist/interface/assets/{useNavLayout-Br4MtSjQ.js → useNavLayout-DKsBYcN-.js} +1 -1
  214. package/dist/interface/assets/{usePermissions-B8pw9jk1.js → usePermissions-MJCC2mYf.js} +1 -1
  215. package/dist/interface/assets/{usePluginUpdates-Cx9PwENn.js → usePluginUpdates-DaoikUxc.js} +1 -1
  216. package/dist/interface/assets/{usePushRegistration-CLEyagJM.js → usePushRegistration-MBn4GqtF.js} +2 -2
  217. package/dist/interface/assets/{useServerRestart-BBp4cko_.js → useServerRestart-_gMUanhL.js} +1 -1
  218. package/dist/interface/assets/{useStreamStatus-BrPjpyzs.js → useStreamStatus-C1aDump3.js} +1 -1
  219. package/dist/interface/assets/{useTabSwipe-B4edrv6o.js → useTabSwipe-SnHqt6pf.js} +1 -1
  220. package/dist/interface/assets/{useUpdateChannel-DugwYo8J.js → useUpdateChannel-BpYMuseR.js} +1 -1
  221. package/dist/interface/assets/{useUpdatesSocket-CgCXGGVg.js → useUpdatesSocket-8rAwSOk0.js} +1 -1
  222. package/dist/interface/assets/useUserOptions-BWz8j6Bt.js +1 -0
  223. package/dist/interface/assets/{variable-Dv4JwY3Y.js → variable-BH_88zve.js} +1 -1
  224. package/dist/interface/assets/{vendor-CP-WYrgy.js → vendor-CFZm55ei.js} +11 -11
  225. package/dist/interface/assets/{vendor-cameraui-D0VXSxSF.js → vendor-cameraui-DTALowLr.js} +46 -46
  226. package/dist/interface/assets/{vendor-capacitor--M3rv96M.js → vendor-capacitor-NUBkdqQG.js} +2 -2
  227. package/dist/interface/assets/{vendor-chart-UrRD4pPC.js → vendor-chart-BQ9z8Beo.js} +1 -1
  228. package/dist/interface/assets/{vendor-core-Ba81bBNM.js → vendor-core-DF66V0xE.js} +1 -1
  229. package/dist/interface/assets/{vendor-dnd-DiqNDDW5.js → vendor-dnd-55LKiquc.js} +1 -1
  230. package/dist/interface/assets/{vendor-draggabilly-Cc8Eip6N.js → vendor-draggabilly-C2H7F3yh.js} +1 -1
  231. package/dist/interface/assets/{vendor-markdown-BcxN-Nmd.js → vendor-markdown-CvrBrdq-.js} +1 -1
  232. package/dist/interface/assets/{vendor-primevue-LZEE4d1W.js → vendor-primevue-CpTHHdUJ.js} +1 -1
  233. package/dist/interface/assets/{vendor-vueflow-C5XdKBYg.js → vendor-vueflow-DGnDS4SG.js} +1 -1
  234. package/dist/interface/assets/web-1T-T_0WZ.js +1 -0
  235. package/dist/interface/assets/web-62WbTjlc.js +1 -0
  236. package/dist/interface/assets/web-BjKL51lK-6pj2Scsz.js +1 -0
  237. package/dist/interface/assets/web-BtY56waW.js +1 -0
  238. package/dist/interface/assets/web-Bv7Xkik0.js +1 -0
  239. package/dist/interface/assets/web-BvBEXTJW.js +1 -0
  240. package/dist/interface/assets/web-CFeS7fH5.js +1 -0
  241. package/dist/interface/assets/web-CUtMdd2B.js +1 -0
  242. package/dist/interface/assets/web-D6yoMUkZ.js +1 -0
  243. package/dist/interface/assets/web-DIOYyMNl.js +1 -0
  244. package/dist/interface/assets/web-D_hRP2qx.js +1 -0
  245. package/dist/interface/assets/web-DsY8tWI-.js +1 -0
  246. package/dist/interface/assets/web-DvetlpoV.js +1 -0
  247. package/dist/interface/assets/web-kt-Rh6Kp.js +1 -0
  248. package/dist/interface/assets/{webhook-UyZZIMaa.js → webhook-JRvzS9ld.js} +1 -1
  249. package/dist/interface/assets/workbox-window.prod.es5-Bd3XD_Q4.js +1 -0
  250. package/dist/interface/assets/{zoom-in-BdZ7kiwk.js → zoom-in-CWYu7bwA.js} +1 -1
  251. package/dist/interface/ha/{404-CkAIe5nc.js → 404-m6-uXJZq.js} +1 -1
  252. package/dist/interface/ha/{About-C7HxP7hM.js → About-CNVuMwKe.js} +4 -4
  253. package/dist/interface/ha/{Assistant-DJYxiCOY.js → Assistant-C8ffhO3m.js} +6 -6
  254. package/dist/interface/ha/{Automation-CfNHCeIm.js → Automation-C6tJrgcC.js} +33 -33
  255. package/dist/interface/ha/{AutomationImport-Dn3C1604.js → AutomationImport-DH1bdVRV.js} +7 -7
  256. package/dist/interface/ha/{AutomationStore-D63G9w2Y.js → AutomationStore-Ckn6ExG6.js} +5 -5
  257. package/dist/interface/ha/{AutomationStoreDetail-HoUC8cSY.js → AutomationStoreDetail-BDXaoPzo.js} +7 -7
  258. package/dist/interface/ha/{Automations-BOlE1Evb.js → Automations-B5uu-r94.js} +5 -5
  259. package/dist/interface/ha/{Camera-6Vvo7nee.js → Camera-B4CwxT3A.js} +7 -7
  260. package/dist/interface/ha/{CameraConsole-DYSNDW4P.js → CameraConsole-BzaY7lMs.js} +3 -3
  261. package/dist/interface/ha/{Cameras-CxgwXUaG.js → Cameras-B1vU95xU.js} +9 -9
  262. package/dist/interface/ha/{Camview-DPjoUMSP.js → Camview-BcgBR-RV.js} +5 -5
  263. package/dist/interface/ha/{CertificateUpload-BVJWfTRx.js → CertificateUpload-BqyveJeF.js} +1 -1
  264. package/dist/interface/ha/{Config-BzBFIWVF.js → Config-C81MLCdk.js} +8 -8
  265. package/dist/interface/ha/{ConfigActionAssistant-BpHf4Pdi.js → ConfigActionAssistant-DQfehzH6.js} +6 -6
  266. package/dist/interface/ha/{ConfigActionCameraControl-CmbCTwZ8.js → ConfigActionCameraControl-C3MnsSHv.js} +4 -4
  267. package/dist/interface/ha/{ConfigActionDelay-2xePO25t.js → ConfigActionDelay-CQDVG521.js} +1 -1
  268. package/dist/interface/ha/{ConfigActionHttp-BxN2KOA6.js → ConfigActionHttp-VqM0i3cV.js} +4 -4
  269. package/dist/interface/ha/{ConfigActionImageInput-CrXUZ-cM.js → ConfigActionImageInput-D7Maj3R-.js} +2 -2
  270. package/dist/interface/ha/{ConfigActionMqtt-DYq-6_S6.js → ConfigActionMqtt-Cm51kwWp.js} +6 -6
  271. package/dist/interface/ha/{ConfigActionNotification-DPUSAVLI.js → ConfigActionNotification-L5oaXgIQ.js} +5 -5
  272. package/dist/interface/ha/{ConfigActionNotificationControl-h4zta4Db.js → ConfigActionNotificationControl-DUa2iWvF.js} +3 -3
  273. package/dist/interface/ha/{ConfigActionOutput-Dwa0-7cq.js → ConfigActionOutput-6e9FLeyi.js} +2 -2
  274. package/dist/interface/ha/{ConfigActionPlugin-DXx1a-Hr.js → ConfigActionPlugin-DfWMHSOu.js} +6 -6
  275. package/dist/interface/ha/{ConfigActionSensor-CfLIHqS8.js → ConfigActionSensor-KMyKW8a4.js} +5 -5
  276. package/dist/interface/ha/{ConfigActionSnapshot-O0OBVq-R.js → ConfigActionSnapshot-BXUyBDrZ.js} +3 -3
  277. package/dist/interface/ha/{ConfigActionVariable-CbaIxRRe.js → ConfigActionVariable-5gjlEinD.js} +2 -2
  278. package/dist/interface/ha/{ConfigConditionIfElse-B7ax92bG.js → ConfigConditionIfElse-KVINr4wM.js} +4 -4
  279. package/dist/interface/ha/{ConfigConditionSensorState-B5XIrEGU.js → ConfigConditionSensorState-DfA7Z-rZ.js} +5 -5
  280. package/dist/interface/ha/{ConfigConditionSwitch-DJSz6bI5.js → ConfigConditionSwitch-MMBCtsCG.js} +5 -5
  281. package/dist/interface/ha/{ConfigConditionTime-CRn4k6uE.js → ConfigConditionTime-BFHFgE8n.js} +1 -1
  282. package/dist/interface/ha/{ConfigSensorValueInput-fE2SBn1B.js → ConfigSensorValueInput-BGPONs-v.js} +4 -4
  283. package/dist/interface/ha/{ConfigTriggerDetection-BuShu78G.js → ConfigTriggerDetection-Bl5RLc9-.js} +3 -3
  284. package/dist/interface/ha/{ConfigTriggerGeofence-pBgXBkb6.js → ConfigTriggerGeofence-C2P-lZvJ.js} +3 -3
  285. package/dist/interface/ha/{ConfigTriggerManual-3hhEe1f3.js → ConfigTriggerManual-BHrZRxUA.js} +1 -1
  286. package/dist/interface/ha/{ConfigTriggerMqtt-Dyf_TLfU.js → ConfigTriggerMqtt-DxE9E_We.js} +2 -2
  287. package/dist/interface/ha/{ConfigTriggerSchedule-ldJM8l6b.js → ConfigTriggerSchedule-DBaslXZn.js} +1 -1
  288. package/dist/interface/ha/{ConfigTriggerSensor-C5YUm9ff.js → ConfigTriggerSensor-BW6R5G1E.js} +2 -2
  289. package/dist/interface/ha/{ConfigTriggerSystem-CylHWw4i.js → ConfigTriggerSystem-WTcomTVB.js} +3 -3
  290. package/dist/interface/ha/{ConfigTriggerWebhook-ZlHsaLu4.js → ConfigTriggerWebhook-BuweCREC.js} +2 -2
  291. package/dist/interface/ha/{Console-PNAQjW_1.js → Console--3yf5q4a.js} +5 -5
  292. package/dist/interface/ha/{CuiAutomationRunsDialog-D_q8K7QO.js → CuiAutomationRunsDialog-Bjx5DXXc.js} +4 -4
  293. package/dist/interface/ha/{CuiBottomSheet-BbJG-998.js → CuiBottomSheet-CUWIERuK.js} +2 -2
  294. package/dist/interface/ha/{CuiCameraRecordings-BSI8Yn3v.js → CuiCameraRecordings-DDBEVW_L.js} +4 -4
  295. package/dist/interface/ha/{CuiCameraShares-DKHZJT-z.js → CuiCameraShares-BaPKNvSs.js} +2 -2
  296. package/dist/interface/ha/{CuiCameraTable-BTdP1pEP.js → CuiCameraTable-CA7TQUBj.js} +3 -3
  297. package/dist/interface/ha/{CuiChartTable-aFRfsewt.js → CuiChartTable-Cjck-ymw.js} +4 -4
  298. package/dist/interface/ha/{CuiConsole-BD9jYvrD.js → CuiConsole-4y2SrBqu.js} +4 -4
  299. package/dist/interface/ha/{CuiDataTable-C2lOduPV.js → CuiDataTable-3tEK7pxb.js} +2 -2
  300. package/dist/interface/ha/{CuiList-Dr0Kypm1.js → CuiList-1RbiYIWw.js} +1 -1
  301. package/dist/interface/ha/{CuiPluginCard-C-gpcLCH.js → CuiPluginCard-BfRbo1oT.js} +9 -9
  302. package/dist/interface/ha/{CuiPluginOAuthButton-B763Rz1n.js → CuiPluginOAuthButton-DcZ5KJTX.js} +4 -4
  303. package/dist/interface/ha/{CuiPluginTrustBadge-j5PKYI-V.js → CuiPluginTrustBadge-DG9TJtBN.js} +1 -1
  304. package/dist/interface/ha/{CuiQRCode-D7WV4czh.js → CuiQRCode-D_pWqA6W.js} +3 -3
  305. package/dist/interface/ha/{CuiSchema-BfsT0mAh.js → CuiSchema-BYnQRNtd.js} +4 -4
  306. package/dist/interface/ha/{CuiTopNavbarItem-BwpXgGJ-.js → CuiTopNavbarItem-BLPX9F5P.js} +1 -1
  307. package/dist/interface/ha/{Faces-C0e-m9EY.js → Faces-Do8dklvm.js} +4 -4
  308. package/dist/interface/ha/{FirstSteps-DsDmM44G.js → FirstSteps-1jyVgIMo.js} +6 -6
  309. package/dist/interface/ha/{Floorplan-Bei9kIhS.js → Floorplan-DqpGLQc-.js} +6 -6
  310. package/dist/interface/ha/{Instances-BY5G1zFD.js → Instances-ChgYCEv4.js} +4 -4
  311. package/dist/interface/ha/{Logs-DDycObDv.js → Logs-Dhi1-h8b.js} +8 -8
  312. package/dist/interface/ha/{Menu-9r_oFG_-.js → Menu-C6ZrgRfI.js} +4 -4
  313. package/dist/interface/ha/{Metrics-BMTIXqn6.js → Metrics-BNTz7Ktd.js} +9 -9
  314. package/dist/interface/ha/{OAuthDeviceFlow-Dee5fynX.js → OAuthDeviceFlow-DjWARnbi.js} +4 -4
  315. package/dist/interface/ha/{Plugin-B5o4pLyu.js → Plugin-juDjFBUz.js} +8 -8
  316. package/dist/interface/ha/{PluginConsole-REtxP1Wi.js → PluginConsole-DqwmWMS6.js} +4 -4
  317. package/dist/interface/ha/{PluginDetail-BHrKifvP.js → PluginDetail-Dg0s42Rn.js} +6 -6
  318. package/dist/interface/ha/{PluginSearch-oNHMMeJD.js → PluginSearch-CER_e1EL.js} +5 -5
  319. package/dist/interface/ha/{PluginUpdateProgress-CqllA4eR.js → PluginUpdateProgress-D3viAJ-T.js} +3 -3
  320. package/dist/interface/ha/{Plugins-B6y7z5yD.js → Plugins-D6Q_xWx9.js} +9 -9
  321. package/dist/interface/ha/{RecentEventsFilter-C1deXNIS.js → RecentEventsFilter-DXlTE7iI.js} +1 -1
  322. package/dist/interface/ha/{Recordings-CyhOVNoM.js → Recordings-BEb8EGDn.js} +7 -7
  323. package/dist/interface/ha/{SensorEdit-CnUU2PEv.js → SensorEdit-BjGyc2MJ.js} +5 -5
  324. package/dist/interface/ha/{SensorHistory-z5hDuybW.js → SensorHistory-Dm4WiNdC.js} +3 -3
  325. package/dist/interface/ha/{Sensors-wpoB-X4r.js → Sensors-5vAka-K6.js} +7 -7
  326. package/dist/interface/ha/{Settings-C6wTksxb.js → Settings-Cb4v7LRJ.js} +4 -4
  327. package/dist/interface/ha/{SettingsAccount-DByg5uzj.js → SettingsAccount-DeZOlBDQ.js} +6 -6
  328. package/dist/interface/ha/{SettingsAppearance-QgPo4M8O.js → SettingsAppearance-CDyMzncv.js} +6 -6
  329. package/dist/interface/ha/{SettingsAssistant-Bg4BhUgb.js → SettingsAssistant-DqGnG1RI.js} +6 -6
  330. package/dist/interface/ha/{SettingsBackup-BgtZSRub.js → SettingsBackup-BnqZ-qlE.js} +4 -4
  331. package/dist/interface/ha/{SettingsList-DB3j7buh.js → SettingsList-CAIX3jD9.js} +3 -3
  332. package/dist/interface/ha/{SettingsMqtt-DVx0z8vf.js → SettingsMqtt-Dxqjg4OT.js} +4 -4
  333. package/dist/interface/ha/{SettingsNotifications-osO2kMMO.js → SettingsNotifications-PAst5uDP.js} +6 -6
  334. package/dist/interface/ha/{SettingsPermissions-D_RGxpFE.js → SettingsPermissions-DFbjoUf-.js} +2 -2
  335. package/dist/interface/ha/{SettingsRecordings-BFEp160g.js → SettingsRecordings-GwPkWVQl.js} +6 -6
  336. package/dist/interface/ha/{SettingsRemote-DQW4FhFn.js → SettingsRemote-CzYyIfWg.js} +6 -6
  337. package/dist/interface/ha/{SettingsSystem-Cs1MHOTi.js → SettingsSystem-BC8IIFe2.js} +9 -9
  338. package/dist/interface/ha/{SettingsUsers-BtbuHlRZ.js → SettingsUsers-DS6HTws4.js} +5 -5
  339. package/dist/interface/ha/{Terminal-BuXCoMle.js → Terminal-DHXMgeMz.js} +6 -6
  340. package/dist/interface/ha/{Training-CnsWyeaJ.js → Training-CBSlZKBT.js} +3 -3
  341. package/dist/interface/ha/{Updates-BxU1Jpru.js → Updates-DTod9Jwm.js} +6 -6
  342. package/dist/interface/ha/{VariableInput-DgENnHvk.js → VariableInput-CuhqW4K7.js} +1 -1
  343. package/dist/interface/ha/{VariableSuggestions-Cn7J50Mp.js → VariableSuggestions-D15u2aH6.js} +1 -1
  344. package/dist/interface/ha/{VersionsHandler-DQTSSqti.js → VersionsHandler-Bafq9Ej7.js} +9 -9
  345. package/dist/interface/ha/{VirtualSensorCreate-Bsr6zTQp.js → VirtualSensorCreate-DCc5pfdG.js} +2 -2
  346. package/dist/interface/ha/{Workers-0jZDuLbP.js → Workers-BFJWJvkK.js} +8 -8
  347. package/dist/interface/ha/{api-VnpXqKYj.js → api-CMboY32E.js} +47 -40
  348. package/dist/interface/ha/{api-B8xb-N_g.js → api-CibPJ53n.js} +1 -1
  349. package/dist/interface/ha/{assistant-DDwonneA.js → assistant-B5j5Rwlf.js} +1 -1
  350. package/dist/interface/ha/{auth-CXX7ago-.js → auth-C9gqBg0w.js} +1 -1
  351. package/dist/interface/ha/{automationBlueprint-BUkXOKb1.js → automationBlueprint-DS2u4IQM.js} +3 -3
  352. package/dist/interface/ha/cameraui-cards.js +1 -1
  353. package/dist/interface/ha/{cards-CMel6uVq.js → cards-PAF_pPbZ.js} +7 -7
  354. package/dist/interface/ha/{config-9vwosYC8.js → config-DoZvm13z.js} +1 -1
  355. package/dist/interface/ha/{dist-jxJIsKjm.js → dist-DLZYY_4u.js} +55 -52
  356. package/dist/interface/ha/{intercomService-Dwd0bhSN.js → intercomService-WdbgAuZn.js} +189 -181
  357. package/dist/interface/ha/{mqtt-Fm_GzbBi.js → mqtt-Bq2AL0mf.js} +1 -1
  358. package/dist/interface/ha/{notifications-CwSeoLx0.js → notifications-Cb1PNQoG.js} +1 -1
  359. package/dist/interface/ha/{plugins-CgqO91Hg.js → plugins-BAng0szW.js} +1 -1
  360. package/dist/interface/ha/{protocol-BB4jdtUC-BcZnYd-h.js → protocol-BB4jdtUC-CbXTLEB7.js} +6 -4
  361. package/dist/interface/ha/{rooms-DGnhPCGr.js → rooms-BulA3xbr.js} +1 -1
  362. package/dist/interface/ha/{server-BqNJbXKJ.js → server-Ndqx0RmV.js} +1 -1
  363. package/dist/interface/ha/{types-Ca-1kOA9.js → types-CSqHjs73.js} +1 -1
  364. package/dist/interface/ha/{ungrouped-B1RIFH36.js → ungrouped-CEyEfdNm.js} +4 -4
  365. package/dist/interface/ha/{updates-Dn9WR43I.js → updates-BK41HPRa.js} +5 -5
  366. package/dist/interface/ha/{useAppVersion-FMZfQhEd.js → useAppVersion-PLf1za07.js} +2 -2
  367. package/dist/interface/ha/{useAssistantActions-B6KFp1pU.js → useAssistantActions-Uf0kmQ_Z.js} +1 -1
  368. package/dist/interface/ha/{useLogsSocket-Ch8C8inE.js → useLogsSocket-CRUB4tiT.js} +1 -1
  369. package/dist/interface/ha/{useNavLayout-DPjjtXVR.js → useNavLayout-hpvRlYIg.js} +1 -1
  370. package/dist/interface/ha/{usePermissions-DuuC_X9H.js → usePermissions-CEX3lAii.js} +1 -1
  371. package/dist/interface/ha/{useServerRestart-DoozgL8o.js → useServerRestart-BN_2Gvwy.js} +1 -1
  372. package/dist/interface/ha/{useTabSwipe-CxXAmZNc.js → useTabSwipe-BhBi1bXW.js} +2 -2
  373. package/dist/interface/ha/{useUpdateChannel-CBwS4cI2.js → useUpdateChannel-DoPFCimM.js} +2 -2
  374. package/dist/interface/ha/{useUpdatesSocket-GrlBqyU4.js → useUpdatesSocket-CQ2qyv6W.js} +1 -1
  375. package/dist/interface/ha/{useUserOptions-54hnf6hX.js → useUserOptions-Ck6NrMAe.js} +1 -1
  376. package/dist/interface/ha/{vue-i18n-BBObX4QY.js → vue-i18n-CxWAK5Gn.js} +541 -528
  377. package/dist/interface/index.html +67 -67
  378. package/dist/interface/sw.js +1 -1
  379. package/dist/server/package.json +7 -6
  380. package/dist/server/requirements.txt +1 -1
  381. package/dist/server/src/camera/controller.d.ts +2 -1
  382. package/dist/server/src/camera/controller.js +30 -20
  383. package/dist/server/src/camera/controller.js.map +1 -1
  384. package/dist/server/src/camera/utils.d.ts +1 -0
  385. package/dist/server/src/camera/utils.js +84 -38
  386. package/dist/server/src/camera/utils.js.map +1 -1
  387. package/package.json +7 -6
  388. package/dist/interface/assets/CuiBottomSheet-BpMMQhmJ.js +0 -1
  389. package/dist/interface/assets/CuiCameraTable-CNclH1KS.js +0 -1
  390. package/dist/interface/assets/CuiMarkdownContent-BFa5gUZe.js +0 -1
  391. package/dist/interface/assets/PluginSearch-rDbuXm2z.js +0 -1
  392. package/dist/interface/assets/SettingsAccount-i2nzGFdV.js +0 -1
  393. package/dist/interface/assets/SettingsAppearance-DCgu01FJ.js +0 -1
  394. package/dist/interface/assets/cloudHandoff-BoV37fDI.js +0 -1
  395. package/dist/interface/assets/esm-2nC0_qfD.js +0 -1
  396. package/dist/interface/assets/esm-5ij5yeYw.js +0 -1
  397. package/dist/interface/assets/esm-B7WAXxd1.js +0 -1
  398. package/dist/interface/assets/esm-BF0RZje6.js +0 -1
  399. package/dist/interface/assets/esm-BSpFwAXD.js +0 -1
  400. package/dist/interface/assets/esm-C6ZQtRp-.js +0 -1
  401. package/dist/interface/assets/esm-Cp0yoO9D.js +0 -1
  402. package/dist/interface/assets/esm-Cwvl7oSa.js +0 -1
  403. package/dist/interface/assets/esm-DICA8W-V.js +0 -1
  404. package/dist/interface/assets/esm-DP8Ax-oq.js +0 -1
  405. package/dist/interface/assets/esm-DWOHxqOV.js +0 -1
  406. package/dist/interface/assets/esm-cynfGnag.js +0 -1
  407. package/dist/interface/assets/esm-gQ1ovTKo.js +0 -1
  408. package/dist/interface/assets/esm-jaStWfus.js +0 -1
  409. package/dist/interface/assets/native-CEh02TWu.js +0 -1
  410. package/dist/interface/assets/native-DxU_bhe3.js +0 -1
  411. package/dist/interface/assets/plugin-DRu2N4CD.js +0 -1
  412. package/dist/interface/assets/useUserOptions-DTlKtp_u.js +0 -1
  413. package/dist/interface/assets/web-771Nph0i.js +0 -1
  414. package/dist/interface/assets/web-BGEzD1BX.js +0 -1
  415. package/dist/interface/assets/web-BjKL51lK-Q2ZqYaHQ.js +0 -1
  416. package/dist/interface/assets/web-BvtLpTUy.js +0 -1
  417. package/dist/interface/assets/web-C9hWWX9T.js +0 -1
  418. package/dist/interface/assets/web-CIwUdOBC.js +0 -1
  419. package/dist/interface/assets/web-CpaCeLiq.js +0 -1
  420. package/dist/interface/assets/web-DJN-qQx6.js +0 -1
  421. package/dist/interface/assets/web-DMGPhsii.js +0 -1
  422. package/dist/interface/assets/web-Dd6usIKp.js +0 -1
  423. package/dist/interface/assets/web-DeXV8b3y.js +0 -1
  424. package/dist/interface/assets/web-EZ83Sgj4.js +0 -1
  425. package/dist/interface/assets/web-EZcS3dL0.js +0 -1
  426. package/dist/interface/assets/web-Ycu87MZJ.js +0 -1
  427. package/dist/interface/assets/workbox-window.prod.es5-fQWwwJhH.js +0 -1
@@ -1 +1 @@
1
- import{Gr as e,Hr as t,Ur as n,Wr as r}from"./vendor-cameraui-D0VXSxSF.js";import{Vt as i}from"./vendor-CP-WYrgy.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as ie,x as y,y as ae}from"./vendor-zod-CBbC1rE7.js";function oe(e){return e.mimetype!==void 0}function se(e){return oe(e)?Buffer.byteLength(e._buf):e.size}function ce(e){return oe(e)?e.mimetype:e.type}function b(e,t,n,r){return f().refine(t=>se(t)<=e,n).refine(e=>t.includes(ce(e)),r)}function le(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ue(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var x=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:y().trim().min(1).array().default([]),sensors:y().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=y().trim().min(1,`Detection label is required`),he=y().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:y().trim().min(1).array().optional(),plates:y().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),xe=v({name:y().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),Se=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:xe.default([])}).strict(),Ce=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:s().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(y().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),we=v({from:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:y().trim().min(1,`Timezone is required`)}),Te={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},Ee=v({enabled:d().default(!1),targetLabels:y().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:we.optional()}),C=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),De=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),Oe=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),ke=RegExp(`^(${Oe.join(`|`)})`),Ae=y().refine(e=>{if(!ke.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function w(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var je=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Me=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=v({id:y(),name:y().trim()}),Ne=v({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),Pe=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Fe=y().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),Ie=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:y().trim().max(128).optional()}).strict(),Le=v({mainStreamAnalysis:d().default(!1),decoder:Ie.optional(),workerDecoder:Ie.nullable().transform(e=>e??void 0).optional()}),E=a([p(`camera`),p(`doorbell`)]),Re=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),ze=a([p(`always-on`),p(`activity`),p(`standby`)]),D=v({streamingMode:Pe,streamingSource:De,playbackSource:Re.default(`auto`),activityMode:ze.default(`always-on`),aspectRatio:Fe}),O=v({model:y().trim().optional(),manufacturer:y().trim().optional(),hardware:y().trim().optional(),serialNumber:y().trim().optional(),firmwareVersion:y().trim().optional(),supportUrl:y().trim().optional()}),Be=v({id:y(),name:y().trim()}).strict(),k=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),A=v({_id:y().default(n()).transform(()=>n()),nativeId:y().trim().optional(),pluginInfo:Be.optional(),disabled:d().default(!1),name:y().trim().min(1,`Camera name is required`),room:y().trim().min(1,`Room is required`).default(`Default`),roomId:y().trim().min(1).nullable().default(null),type:E.default(`camera`),isCloud:d().default(!1),snapshotSettings:k.default({mode:`interval`,interval:60,maxAge:60}),info:O.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:je.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w),plugins:T.array().default([]),assignments:Ne.default({}),interfaceSettings:D.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:Se.default(le()),detectionSettings:Ce.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:Ee.default(Te),recordingSettings:x.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:Le.default({mainStreamAnalysis:!1})}).strict();function Ve(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=A.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}A.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ue(t)?{...e,isCloud:!0}:{...e}});var He=v({disabled:d().optional(),type:E.optional(),name:y().trim().min(1,`Camera name is required`).optional(),room:y().trim().min(1,`Room is required`).optional(),roomId:y().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:k.partial().optional(),info:O.partial().optional(),sources:Me.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w).optional(),plugins:T.array().optional(),assignments:Ne.partial().optional(),interfaceSettings:D.partial().optional(),zones:Se.optional(),detectionSettings:Ce.partial().optional(),ptzAutotrack:Ee.partial().optional(),recordingSettings:x.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:Le.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ue(t))return{...e,isCloud:!0}}return e});v({url:y().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:y()}),v({cameraname:y(),sourcename:y()}),v({cameraid:y(),sourcename:y()}),v({cameraname:y(),pluginname:y()}),v({cameraname:y(),scope:y(),pluginname:y()}),v({cameraname:y(),pluginname:y(),sensorId:y()}),v({cameraname:y(),scope:y(),pluginname:y(),sensorId:y()}),v({type:y().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(y().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(y().min(1)).min(1).max(1e3)});var j=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),M=[`de`,`en`],Ue=[`image/jpeg`,`image/jpg`,`image/png`],N=5242880,P=v({index:s(),cameraId:y(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),F=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),We=a([p(`dnd`),p(`view`)]),I=u([`aspect`,`contain`,`fill`,`cover`]),L=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),type:We,cardFit:I.optional()});v({name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),cardFit:I}).partial().optional();var Ge=v({views:L.array()}),Ke=r.filter(e=>e.shortcutable).map(e=>String(e.type)),R=u(Ke),qe=v({_id:y().default(n()).transform(()=>n()),type:p(`camera`),cameraId:y(),points:S}),Je=v({_id:y().default(n()).transform(()=>n()),type:p(`sensor`),sensorId:y(),sensorType:R,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:y(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:y(),sensorType:R,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:y().array().optional()});l(y().trim().min(1),y().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...M]),et=v({ungrouped:d()}),tt=v({main:y().array(),manage:y().array(),system:y().array(),settings:y().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:y().array().optional()}),it=v({language:$e.optional(),camview:Ge,cameras:l(y().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=y().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:y().default(n()).transform(()=>n()),username:y().trim().min(1,`Username is required`),password:z,passwordConfirm:y().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y().trim().min(1,`Username is required`),password:y().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:y().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:y().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:y().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:y().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ae(b(N,Ue,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y()}),v({username:y(),cameraname:y()}),v({username:y(),cameraname:y(),shortcutid:y()}),v({username:y(),viewid:y()}),v({username:y()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=v({id:y().trim().min(1).max(64).optional(),name:y().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:st,baseURL:y().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:y().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:y().trim().min(1).max(64).optional(),model:y().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(ct).max(20,`At most 20 models`).optional(),defaultModelId:y().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:y().trim().min(1).max(200),modelId:y().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(j).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:y().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:y().trim().min(1).max(64).optional(),name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:y().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(y().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:y().min(1).max(128)}),v({text:y().trim().min(1).max(500),language:y().max(10).optional(),timezone:y().max(64).optional()}),v({factId:y().min(1).max(128)}),v({threadId:y().min(1).max(128)}),v({title:y().trim().min(1).max(60)}),v({messages:_(ie()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:y().trim().max(64).default(``),disabledGroups:_(y().max(100)).max(50).default([]),instructions:y().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:y().min(1).max(128)}),v({user:y().trim().min(1).max(100).optional()});var lt=u([`push`,`thread`,`both`]);v({title:y().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:y().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:y().trim().min(9,`Cron expression is required`).max(100),profileId:y().trim().max(64).nullable().optional(),timezone:y().trim().max(64).optional(),language:y().trim().min(2).max(10).optional(),deliver:lt.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:y().min(1).max(128)});var ut=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},dt=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...ut],description:`Settings page`}},required:[`page`]}}],ft=i({id:`ask-user`,payloadSchema:v({toolCallId:y(),question:y(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(y()).optional()}),responseSchema:v({answer:y()})});v({tempToken:y().trim().min(1,`Temporary token is required`),code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({grant_type:y().optional(),username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`),scope:y().optional(),client_id:y().optional(),client_secret:y().optional()}),v({refresh_token:y().min(1,`Refresh token is required`)}),v({id:y()}),v({name:y().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:y()});var pt=v({id:y().trim().min(1),name:y().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),mt=v({id:y().trim().min(1),roomId:y().trim().min(1),name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),ht=v({id:y().trim().min(1),fromRoomId:y().trim().min(1),toRoomId:y().trim().min(1),fromShapeId:y().trim().min(1).nullable().default(null),toShapeId:y().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:y().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),gt=v({cameraId:y().trim().min(1),roomId:y().trim().min(1),note:y().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),_t=v({sensorId:y().trim().min(1),sensorType:y().trim().min(1),roomId:y().trim().min(1),connectionId:y().trim().min(1).nullable().default(null),note:y().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:pt.array().max(20),rooms:mt.array().max(200),connections:ht.array().max(500),cameras:gt.array().max(500),sensors:_t.array().max(500)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)})}),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)}).nullable().optional()}),v({id:y().min(1,`ID is required`)}),v({code:y().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(y().min(1)).min(1).max(1e3)});var vt=/^[\w-]+(\/[\w-]+)*$/,yt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:y().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:y().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:y().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(vt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:y().trim().nullable().optional(),cert:y().trim().nullable().optional(),key:y().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:y().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(vt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),bt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,xt=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),St=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),Ct=[`image/jpeg`,`image/png`],wt=2097152,Tt=[`video/mp4`,`video/quicktime`],Et=10485760,Dt=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ot=2097152,V=()=>b(wt,Ct,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),kt=f().transform(e=>JSON.parse(e.value)),At=v({pluginname:y().trim().refine(e=>bt.test(e),`Not a valid plugin name`),pluginversion:y().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:y(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:b(Ot,Dt,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:kt,config:H}),v({upload:b(Et,Tt,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:y()}),v({scope:y(),pluginname:y()}),St.extend({pluginname:y().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:y().trim().optional()}),v({pluginNames:_(y().trim().min(1)).min(1).max(1e3)}),v({plugins:_(At).min(1).max(1e3)});var jt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:y().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``)}).strict(),v({roomid:y().trim().min(1)});var Mt={securitySystem:`security_system`};function Nt(e){return Mt[e]??e}function Pt(){let e={};for(let t of r)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:{...t.cascadeTrigger,triggerType:Nt(t.assignmentKey)}}:{}};return e}var W=Pt();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Ft(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function It(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function Lt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Rt(e){return W[e].assignmentKey}function zt(){return Object.entries(W).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function Bt(){return Object.entries(W).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ht(e){return!W[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Ut(e,t){return G[e]?.[t]}function Wt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Kt(t,n){let r=W[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(Ft());var qt=new Set(Lt()),Jt=`cameraui.virtual`,Yt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:y().min(1,`Sensor ID is required`)});var Xt=v({cameraId:y().min(1).optional(),type:u(Yt),name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:y().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(y().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:y().trim().min(1,`Property is required`),value:ie()}),v({ids:_(y()).min(1).max(1e4)}),v({version:y().trim().optional().default(`latest`)}).strict();var Zt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:y().trim()}).strict(),l(y(),m()),v({key:y()}).strict(),v({key:y(),payload:m()}).strict();var Qt=v({label:y().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:y().trim().max(16).optional()}).strict();v({id:y().trim().min(1)}),v({id:y().trim().min(1)}),v({cursor:y().trim().min(1).optional()}),v({cameraId:y().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:Qt.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:y().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:y().min(1,`Camera ID is required`),agentId:y().min(1,`Agent ID is required`)}),v({cameraId:y().min(1,`Camera ID is required`)}),v({agentId:y().min(1,`Agent ID is required`)}),v({version:y().min(1).optional()}).optional(),v({code:y().min(1,`Pairing code is required`),agentId:y().min(1,`Agent ID is required`),name:y().min(1,`Worker name is required`)}),v({pluginName:y().min(1,`Plugin name is required`),agentId:y().min(1,`Agent ID is required`)}),v({pluginName:y().min(1,`Plugin name is required`)}),v({name:y().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:y().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function $t(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function an(e){return $t(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Y=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Y(e,t)):Y(e,t)}function on(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=Z(n);if(r!==void 0&&!t(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=Z(n));return t}default:return}}function sn(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=Z(n));return t}function cn(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function ln(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of cn(t)){if(n==null)return;n=n[e]}return n}function un(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=cn(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=ln(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function dn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function fn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function pn(e,t){let n=fn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function mn(e,t){let n=fn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function hn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return m();switch(e.type){case`string`:if(K(e)){if(e.multiple){let t=_(y().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=y().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||hn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var gn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function _n(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(gn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{L as $,Wt as A,Ot as B,W as C,Rt as D,Vt as E,Kt as F,dt as G,xt as H,jt as I,N as J,B as K,Dt as L,It as M,Gt as N,Bt as O,Ht as P,ot as Q,Tt as R,qt as S,Yt as T,yt as U,Et as V,ft as W,at as X,M as Y,z as Z,pn as _,_n as a,ve as at,Zt as b,tn as c,K as d,Oe as et,en as f,an as g,J as h,dn as i,C as it,Ut as j,zt as k,q as l,$t as m,sn as n,Ve as nt,Q as o,He as ot,rn as p,j as q,Z as r,xe as rt,nn as s,w as st,X as t,A as tt,on as u,mn as v,Jt as w,Xt as x,un as y,Ct as z};
1
+ import{Gr as e,Hr as t,Ur as n,Wr as r}from"./vendor-cameraui-DTALowLr.js";import{Vt as i}from"./vendor-CFZm55ei.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as ie,x as y,y as ae}from"./vendor-zod-CBbC1rE7.js";function oe(e){return e.mimetype!==void 0}function se(e){return oe(e)?Buffer.byteLength(e._buf):e.size}function ce(e){return oe(e)?e.mimetype:e.type}function b(e,t,n,r){return f().refine(t=>se(t)<=e,n).refine(e=>t.includes(ce(e)),r)}function le(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ue(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var x=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:y().trim().min(1).array().default([]),sensors:y().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=y().trim().min(1,`Detection label is required`),he=y().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:y().trim().min(1).array().optional(),plates:y().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),xe=v({name:y().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),Se=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:xe.default([])}).strict(),Ce=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:s().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(y().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),we=v({from:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:y().trim().min(1,`Timezone is required`)}),Te={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},Ee=v({enabled:d().default(!1),targetLabels:y().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:we.optional()}),C=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),De=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),Oe=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),ke=RegExp(`^(${Oe.join(`|`)})`),Ae=y().refine(e=>{if(!ke.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function w(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var je=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Me=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=v({id:y(),name:y().trim()}),Ne=v({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),Pe=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Fe=y().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),Ie=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:y().trim().max(128).optional()}).strict(),Le=v({mainStreamAnalysis:d().default(!1),decoder:Ie.optional(),workerDecoder:Ie.nullable().transform(e=>e??void 0).optional()}),E=a([p(`camera`),p(`doorbell`)]),Re=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),ze=a([p(`always-on`),p(`activity`),p(`standby`)]),D=v({streamingMode:Pe,streamingSource:De,playbackSource:Re.default(`auto`),activityMode:ze.default(`always-on`),aspectRatio:Fe}),O=v({model:y().trim().optional(),manufacturer:y().trim().optional(),hardware:y().trim().optional(),serialNumber:y().trim().optional(),firmwareVersion:y().trim().optional(),supportUrl:y().trim().optional()}),Be=v({id:y(),name:y().trim()}).strict(),k=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),A=v({_id:y().default(n()).transform(()=>n()),nativeId:y().trim().optional(),pluginInfo:Be.optional(),disabled:d().default(!1),name:y().trim().min(1,`Camera name is required`),room:y().trim().min(1,`Room is required`).default(`Default`),roomId:y().trim().min(1).nullable().default(null),type:E.default(`camera`),isCloud:d().default(!1),snapshotSettings:k.default({mode:`interval`,interval:60,maxAge:60}),info:O.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:je.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w),plugins:T.array().default([]),assignments:Ne.default({}),interfaceSettings:D.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:Se.default(le()),detectionSettings:Ce.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:Ee.default(Te),recordingSettings:x.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:Le.default({mainStreamAnalysis:!1})}).strict();function Ve(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=A.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}A.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ue(t)?{...e,isCloud:!0}:{...e}});var He=v({disabled:d().optional(),type:E.optional(),name:y().trim().min(1,`Camera name is required`).optional(),room:y().trim().min(1,`Room is required`).optional(),roomId:y().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:k.partial().optional(),info:O.partial().optional(),sources:Me.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w).optional(),plugins:T.array().optional(),assignments:Ne.partial().optional(),interfaceSettings:D.partial().optional(),zones:Se.optional(),detectionSettings:Ce.partial().optional(),ptzAutotrack:Ee.partial().optional(),recordingSettings:x.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:Le.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ue(t))return{...e,isCloud:!0}}return e});v({url:y().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:y()}),v({cameraname:y(),sourcename:y()}),v({cameraid:y(),sourcename:y()}),v({cameraname:y(),pluginname:y()}),v({cameraname:y(),scope:y(),pluginname:y()}),v({cameraname:y(),pluginname:y(),sensorId:y()}),v({cameraname:y(),scope:y(),pluginname:y(),sensorId:y()}),v({type:y().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(y().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(y().min(1)).min(1).max(1e3)});var j=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),M=[`de`,`en`],Ue=[`image/jpeg`,`image/jpg`,`image/png`],N=5242880,P=v({index:s(),cameraId:y(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),F=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),We=a([p(`dnd`),p(`view`)]),I=u([`aspect`,`contain`,`fill`,`cover`]),L=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),type:We,cardFit:I.optional()});v({name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),cardFit:I}).partial().optional();var Ge=v({views:L.array()}),Ke=r.filter(e=>e.shortcutable).map(e=>String(e.type)),R=u(Ke),qe=v({_id:y().default(n()).transform(()=>n()),type:p(`camera`),cameraId:y(),points:S}),Je=v({_id:y().default(n()).transform(()=>n()),type:p(`sensor`),sensorId:y(),sensorType:R,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:y(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:y(),sensorType:R,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:y().array().optional()});l(y().trim().min(1),y().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...M]),et=v({ungrouped:d()}),tt=v({main:y().array(),manage:y().array(),system:y().array(),settings:y().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:y().array().optional()}),it=v({language:$e.optional(),camview:Ge,cameras:l(y().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=y().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:y().default(n()).transform(()=>n()),username:y().trim().min(1,`Username is required`),password:z,passwordConfirm:y().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y().trim().min(1,`Username is required`),password:y().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:y().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:y().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:y().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:y().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ae(b(N,Ue,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y()}),v({username:y(),cameraname:y()}),v({username:y(),cameraname:y(),shortcutid:y()}),v({username:y(),viewid:y()}),v({username:y()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=v({id:y().trim().min(1).max(64).optional(),name:y().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:st,baseURL:y().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:y().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:y().trim().min(1).max(64).optional(),model:y().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(ct).max(20,`At most 20 models`).optional(),defaultModelId:y().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:y().trim().min(1).max(200),modelId:y().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(j).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:y().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:y().trim().min(1).max(64).optional(),name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:y().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(y().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:y().min(1).max(128)}),v({text:y().trim().min(1).max(500),language:y().max(10).optional(),timezone:y().max(64).optional()}),v({factId:y().min(1).max(128)}),v({threadId:y().min(1).max(128)}),v({title:y().trim().min(1).max(60)}),v({messages:_(ie()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:y().trim().max(64).default(``),disabledGroups:_(y().max(100)).max(50).default([]),instructions:y().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:y().min(1).max(128)}),v({user:y().trim().min(1).max(100).optional()});var lt=u([`push`,`thread`,`both`]);v({title:y().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:y().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:y().trim().min(9,`Cron expression is required`).max(100),profileId:y().trim().max(64).nullable().optional(),timezone:y().trim().max(64).optional(),language:y().trim().min(2).max(10).optional(),deliver:lt.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:y().min(1).max(128)});var ut=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},dt=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...ut],description:`Settings page`}},required:[`page`]}}],ft=i({id:`ask-user`,payloadSchema:v({toolCallId:y(),question:y(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(y()).optional()}),responseSchema:v({answer:y()})});v({tempToken:y().trim().min(1,`Temporary token is required`),code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({grant_type:y().optional(),username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`),scope:y().optional(),client_id:y().optional(),client_secret:y().optional()}),v({refresh_token:y().min(1,`Refresh token is required`)}),v({id:y()}),v({name:y().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:y()});var pt=v({id:y().trim().min(1),name:y().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),mt=v({id:y().trim().min(1),roomId:y().trim().min(1),name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),ht=v({id:y().trim().min(1),fromRoomId:y().trim().min(1),toRoomId:y().trim().min(1),fromShapeId:y().trim().min(1).nullable().default(null),toShapeId:y().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:y().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),gt=v({cameraId:y().trim().min(1),roomId:y().trim().min(1),note:y().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),_t=v({sensorId:y().trim().min(1),sensorType:y().trim().min(1),roomId:y().trim().min(1),connectionId:y().trim().min(1).nullable().default(null),note:y().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:pt.array().max(20),rooms:mt.array().max(200),connections:ht.array().max(500),cameras:gt.array().max(500),sensors:_t.array().max(500)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)})}),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)}).nullable().optional()}),v({id:y().min(1,`ID is required`)}),v({code:y().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(y().min(1)).min(1).max(1e3)});var vt=/^[\w-]+(\/[\w-]+)*$/,yt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:y().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:y().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:y().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(vt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:y().trim().nullable().optional(),cert:y().trim().nullable().optional(),key:y().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:y().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(vt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),bt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,xt=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),St=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),Ct=[`image/jpeg`,`image/png`],wt=2097152,Tt=[`video/mp4`,`video/quicktime`],Et=10485760,Dt=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ot=2097152,V=()=>b(wt,Ct,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),kt=f().transform(e=>JSON.parse(e.value)),At=v({pluginname:y().trim().refine(e=>bt.test(e),`Not a valid plugin name`),pluginversion:y().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:y(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:b(Ot,Dt,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:kt,config:H}),v({upload:b(Et,Tt,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:y()}),v({scope:y(),pluginname:y()}),St.extend({pluginname:y().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:y().trim().optional()}),v({pluginNames:_(y().trim().min(1)).min(1).max(1e3)}),v({plugins:_(At).min(1).max(1e3)});var jt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:y().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``)}).strict(),v({roomid:y().trim().min(1)});var Mt={securitySystem:`security_system`};function Nt(e){return Mt[e]??e}function Pt(){let e={};for(let t of r)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:{...t.cascadeTrigger,triggerType:Nt(t.assignmentKey)}}:{}};return e}var W=Pt();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Ft(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function It(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function Lt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Rt(e){return W[e].assignmentKey}function zt(){return Object.entries(W).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function Bt(){return Object.entries(W).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ht(e){return!W[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Ut(e,t){return G[e]?.[t]}function Wt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Kt(t,n){let r=W[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(Ft());var qt=new Set(Lt()),Jt=`cameraui.virtual`,Yt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:y().min(1,`Sensor ID is required`)});var Xt=v({cameraId:y().min(1).optional(),type:u(Yt),name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:y().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(y().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:y().trim().min(1,`Property is required`),value:ie()}),v({ids:_(y()).min(1).max(1e4)}),v({version:y().trim().optional().default(`latest`)}).strict();var Zt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:y().trim()}).strict(),l(y(),m()),v({key:y()}).strict(),v({key:y(),payload:m()}).strict();var Qt=v({label:y().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:y().trim().max(16).optional()}).strict();v({id:y().trim().min(1)}),v({id:y().trim().min(1)}),v({cursor:y().trim().min(1).optional()}),v({cameraId:y().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:Qt.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:y().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:y().min(1,`Camera ID is required`),agentId:y().min(1,`Agent ID is required`)}),v({cameraId:y().min(1,`Camera ID is required`)}),v({agentId:y().min(1,`Agent ID is required`)}),v({version:y().min(1).optional()}).optional(),v({code:y().min(1,`Pairing code is required`),agentId:y().min(1,`Agent ID is required`),name:y().min(1,`Worker name is required`)}),v({pluginName:y().min(1,`Plugin name is required`),agentId:y().min(1,`Agent ID is required`)}),v({pluginName:y().min(1,`Plugin name is required`)}),v({name:y().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:y().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function $t(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function an(e){return $t(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Y=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Y(e,t)):Y(e,t)}function on(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=Z(n);if(r!==void 0&&!t(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=Z(n));return t}default:return}}function sn(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=Z(n));return t}function cn(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function ln(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of cn(t)){if(n==null)return;n=n[e]}return n}function un(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=cn(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=ln(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function dn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function fn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function pn(e,t){let n=fn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function mn(e,t){let n=fn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function hn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return m();switch(e.type){case`string`:if(K(e)){if(e.multiple){let t=_(y().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=y().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||hn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var gn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function _n(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(gn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{L as $,Wt as A,Ot as B,W as C,Rt as D,Vt as E,Kt as F,dt as G,xt as H,jt as I,N as J,B as K,Dt as L,It as M,Gt as N,Bt as O,Ht as P,ot as Q,Tt as R,qt as S,Yt as T,yt as U,Et as V,ft as W,at as X,M as Y,z as Z,pn as _,_n as a,ve as at,Zt as b,tn as c,K as d,Oe as et,en as f,an as g,J as h,dn as i,C as it,Ut as j,zt as k,q as l,$t as m,sn as n,Ve as nt,Q as o,He as ot,rn as p,j as q,Z as r,xe as rt,nn as s,w as st,X as t,A as tt,on as u,mn as v,Jt as w,Xt as x,un as y,Ct as z};
@@ -1 +1 @@
1
- import{In as e,cn as t,dn as n,sr as r}from"./vendor-CP-WYrgy.js";var i={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`currentColor`,d:`M26 20h-6v-2h6zm4 8h-6v-2h6zm-2-4h-6v-2h6z`},null,-1),t(`path`,{fill:`currentColor`,d:`M17.003 20a4.9 4.9 0 0 0-2.404-4.173L22 3l-1.73-1l-7.577 13.126a5.7 5.7 0 0 0-5.243 1.503C3.706 20.24 3.996 28.682 4.01 29.04a1 1 0 0 0 1 .96h14.991a1 1 0 0 0 .6-1.8c-3.54-2.656-3.598-8.146-3.598-8.2m-5.073-3.003A3.11 3.11 0 0 1 15.004 20c0 .038.002.208.017.469l-5.9-2.624a3.8 3.8 0 0 1 2.809-.848M15.45 28A5.2 5.2 0 0 1 14 25h-2a6.5 6.5 0 0 0 .968 3h-2.223A16.6 16.6 0 0 1 10 24H8a17.3 17.3 0 0 0 .665 4H6c.031-1.836.29-5.892 1.803-8.553l7.533 3.35A13 13 0 0 0 17.596 28Z`},null,-1)]])}var o=r({name:`carbon-clean`,render:a}),s={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function c(r,i){return e(),n(`svg`,s,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16`},null,-1)]])}var l=r({name:`carbon-redo`,render:c}),u={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function d(r,i){return e(),n(`svg`,u,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`m27.71 9.29l-5-5A1 1 0 0 0 22 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V10a1 1 0 0 0-.29-.71M12 6h8v4h-8Zm8 20h-8v-8h8Zm2 0v-8a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v8H6V6h4v4a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6.41l4 4V26Z`},null,-1)]])}var f=r({name:`carbon-save`,render:d}),p={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function m(r,i){return e(),n(`svg`,p,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16`},null,-1)]])}var h=r({name:`carbon-undo`,render:m});export{o as i,f as n,l as r,h as t};
1
+ import{In as e,cn as t,dn as n,sr as r}from"./vendor-CFZm55ei.js";var i={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`currentColor`,d:`M26 20h-6v-2h6zm4 8h-6v-2h6zm-2-4h-6v-2h6z`},null,-1),t(`path`,{fill:`currentColor`,d:`M17.003 20a4.9 4.9 0 0 0-2.404-4.173L22 3l-1.73-1l-7.577 13.126a5.7 5.7 0 0 0-5.243 1.503C3.706 20.24 3.996 28.682 4.01 29.04a1 1 0 0 0 1 .96h14.991a1 1 0 0 0 .6-1.8c-3.54-2.656-3.598-8.146-3.598-8.2m-5.073-3.003A3.11 3.11 0 0 1 15.004 20c0 .038.002.208.017.469l-5.9-2.624a3.8 3.8 0 0 1 2.809-.848M15.45 28A5.2 5.2 0 0 1 14 25h-2a6.5 6.5 0 0 0 .968 3h-2.223A16.6 16.6 0 0 1 10 24H8a17.3 17.3 0 0 0 .665 4H6c.031-1.836.29-5.892 1.803-8.553l7.533 3.35A13 13 0 0 0 17.596 28Z`},null,-1)]])}var o=r({name:`carbon-clean`,render:a}),s={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function c(r,i){return e(),n(`svg`,s,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`M12 10h12.185l-3.587-3.586L22 5l6 6l-6 6l-1.402-1.415L24.182 12H12a6 6 0 0 0 0 12h8v2h-8a8 8 0 0 1 0-16`},null,-1)]])}var l=r({name:`carbon-redo`,render:c}),u={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function d(r,i){return e(),n(`svg`,u,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`m27.71 9.29l-5-5A1 1 0 0 0 22 4H6a2 2 0 0 0-2 2v20a2 2 0 0 0 2 2h20a2 2 0 0 0 2-2V10a1 1 0 0 0-.29-.71M12 6h8v4h-8Zm8 20h-8v-8h8Zm2 0v-8a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2v8H6V6h4v4a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6.41l4 4V26Z`},null,-1)]])}var f=r({name:`carbon-save`,render:d}),p={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function m(r,i){return e(),n(`svg`,p,[...i[0]||=[t(`path`,{fill:`currentColor`,d:`M20 10H7.815l3.587-3.586L10 5l-6 6l6 6l1.402-1.415L7.818 12H20a6 6 0 0 1 0 12h-8v2h8a8 8 0 0 0 0-16`},null,-1)]])}var h=r({name:`carbon-undo`,render:m});export{o as i,f as n,l as r,h as t};
@@ -1 +1 @@
1
- import{$n as e,A as t,Bt as n,Gt as r,It as i,J as a,Kn as o,Kt as s,L as c,Mn as l,Pn as u,Ut as d,Vr as f,a as p,c as m,f as h,g,i as _,kt as ee,ni as te,o as ne,p as re,s as ie}from"./vendor-cameraui-D0VXSxSF.js";import{Er as ae,J as oe,On as se,Q as ce,Tn as le,X as ue,Y as de,Z as fe,_n as pe,kn as me,nt as he,pn as ge,q as _e,rt as ve,s as ye,st as be,vn as xe,xn as Se,yn as Ce}from"./api-vegsDz6n.js";import{$n as v,Bn as y,Cn as we,Cr as b,Dn as x,Hn as Te,In as S,Jn as C,On as Ee,Pn as De,Rn as w,Sr as T,Xn as Oe,br as E,cn as D,dn as O,dr as k,en as ke,er as Ae,gn as A,ln as j,nn as M,or as N,rn as P,sn as F,sr as je,un as I,vn as L,yr as R,zn as z}from"./vendor-CP-WYrgy.js";import{a as Me}from"./intercomService-IAAXcRPG.js";import{i as Ne}from"./alert-outline-8Rb4Kt7A.js";import{t as Pe}from"./eventIcons-BPQ-zSnz.js";import{u as Fe}from"./vendor-core-Ba81bBNM.js";import{N as B,j as Ie}from"./vendor-primevue-LZEE4d1W.js";import{t as Le}from"./ring-resize-MiubMIoG.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Re(e,t){return S(),O(`svg`,V,[...t[0]||=[D(`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=je({name:`tabler-user-edit`,render:Re}),H={class:`flex flex-col gap-4 w-full`},U={key:0,class:`flex justify-center`},W=[`src`,`alt`],G={class:`flex flex-col gap-2 w-full`},Be={class:`cui-label`},Ve={class:`flex flex-col gap-2 w-full`},K={for:`reassignTarget`,class:`cui-label`},He=L({__name:`FaceReassign`,props:{cropUrl:{},oldName:{}},setup(e,{expose:t}){let n=e,{t:r}=f(),{plugin:i}=ee(`@camera.ui/camera-ui-nvr`),a=k(null),o=k([]),s=k(!0),l=F(()=>n.oldName===`unknown`?r(`views.recordings.reassign_unknown_person`):n.oldName),u=F(()=>{let e=o.value.filter(e=>e!==n.oldName).map(e=>({label:e,value:e}));return n.oldName!==`unknown`&&e.push({label:r(`views.recordings.reassign_unknown`),value:``}),e});return De(async()=>{try{let e=await i.value?.listKnownFaces?.();o.value=(e??[]).map(e=>e.name)}catch{}finally{s.value=!1}}),t({onConfirm:async()=>a.value}),(e,t)=>{let r=c,i=Ie;return S(),O(`div`,H,[n.cropUrl?(S(),O(`div`,U,[D(`img`,{src:n.cropUrl,alt:R(l),class:`w-36 h-36 rounded-xl object-cover bg-neutral-900`},null,8,W)])):I(``,!0),D(`div`,G,[D(`label`,Be,b(e.$t(`views.recordings.reassign_current`)),1),A(r,{"model-value":R(l),class:`w-full`,fluid:``,disabled:``},null,8,[`model-value`])]),D(`div`,Ve,[D(`label`,K,b(e.$t(`views.recordings.reassign_new`)),1),A(i,{id:`reassignTarget`,modelValue:R(a),"onUpdate:modelValue":t[0]||=e=>N(a)?a.value=e:null,options:R(u),"option-label":`label`,"option-value":`value`,class:`w-full`,fluid:``,loading:R(s),disabled:R(s),placeholder:e.$t(`views.faces.enter_or_pick_name`)},null,8,[`modelValue`,`options`,`loading`,`disabled`,`placeholder`])])])}}}),Ue=[`src`],We={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},Ge={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},Ke={class:`flex items-center gap-1.5`},qe={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},Je={key:0,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},Ye={class:`text-[10px] text-white/70`},Xe={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},Ze={class:`flex items-center gap-1 min-w-0`},Qe=[`title`],$e={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},et=[`onClick`],tt=[`src`,`alt`],nt={key:0,class:`text-[10px] text-white/60 font-medium`},rt={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},it={key:7,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},at={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`}},ot=24,st=30,ct=22,lt=28,ut=8,dt=me(L({__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:r}){let o=e,c=r,l=Me(),u=ae(),{t:d}=f(),me=Fe(),y=g(`@camera.ui/camera-ui-nvr`),{plugin:x}=ee(`@camera.ui/camera-ui-nvr`),Ee=be(),{icons:T}=Pe(),N=y.getCachedThumbnails(o.event.id),je=N?h(N,o.event,`card`,o.segIndex).url?`loaded`:`empty`:`loading`,L=we(ie,void 0),z=C(`rootRef`),B=C(`previewCanvasRef`),Ie=C(`footerRef`),Le=C(`cardMenuRef`),V=k(!1),Re=ue(z,()=>Bt(),()=>$()),H=k(!1),U=k(N??null),W=k(je),G=k(!1),Be=k(0),Ve=k(null),K=k(!1),{width:dt}=te(Ie),ft=F(()=>Ce(void 0,`admin`)),pt=F(()=>Ve.value??o.event.favorite??!1),mt=F(()=>{if(o.semanticScore==null)return;let e=Math.max(0,Math.min(1,o.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=F(()=>U.value?h(U.value,o.event,`card`,o.segIndex):null),J=F(()=>{let e=o.segIndex??q.value?.segIndex;return e===void 0?void 0:o.event.segments?.[e]}),ht=F(()=>q.value?.url),gt=F(()=>q.value?.label),_t=F(()=>q.value?.type??o.event.types[0]??`motion`),vt=F(()=>{if(o.hideSegmentBadge)return;let e=o.event.segments?.length??0;return o.segIndex!==void 0&&e>1?`${o.segIndex+1}/${e}`:void 0}),Y=F(()=>{let e=U.value,n=q.value?.url;if(!e||!n)return[];let r=[{url:n,label:q.value?.label,type:_t.value,crop:!1}];for(let t of re(e,o.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(o.segIndex===void 0)for(let n of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let i=t(e.cards?.[n]??e.strips?.[n]);if(!i||r.some(e=>e.url===i))continue;let a=ce(o.event,n);r.push({url:i,label:a,type:a,crop:!1})}return r.length>1?r:[]}),yt=F(()=>Y.value.length>1),bt=F(()=>Y.value.length?Math.min(Be.value,Y.value.length-1):0),X=F(()=>yt.value?Y.value[bt.value]:void 0),xt=F(()=>!!X.value?.crop),St=F(()=>X.value?.url??ht.value),Ct=F(()=>X.value?.label??gt.value),Z=F(()=>{let e=J.value;return(e?_(o.event,e):[...new Set(o.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),wt=F(()=>o.cameraName??o.event.cameraId),Tt=F(()=>Y.value.map(e=>({url:e.url,type:e.type}))),Et=F(()=>Z.value.slice(0,Q.value.icons)),Q=F(()=>{let e=dt.value;if(!e)return{icons:2,tiles:2};let t=e-ut;o.selectionMode&&(t-=lt);let n=Tt.value.length>0?52:0,r=It(Z.value.length,Math.max(0,t-n),ot),i=Z.value.length>0?Math.max(1,r):0,a=i*ot+(i<Z.value.length?ct:0);return{icons:i,tiles:It(Tt.value.length,Math.max(0,t-a),st)}}),Dt=F(()=>Z.value.slice(Q.value.icons)),Ot=F(()=>Tt.value.slice(0,Q.value.tiles)),kt=F(()=>Tt.value.length-Q.value.tiles),At=F(()=>{let e=new Date(J.value?.firstSeen??o.event.thumbnailAt??o.event.startTime),t=new Date,n=e.toDateString()===t.toDateString(),r=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return n?r:`${e.toLocaleDateString([],{month:`short`,day:`numeric`})} ${r}`}),jt=F(()=>!!(x.value&&o.event.endTime&&o.event.hasRecording!==!1)),Mt=F(()=>L?V.value?d(`views.recordings.no_preview`):H.value?L.status.value===`unavailable`?d(`views.recordings.no_preview`):L.status.value===`playing`&&L.previewTimeMs.value?zt(L.previewTimeMs.value):``:``:``),Nt=F(()=>{let e=X.value;if(e&&e.type===`face`)return e.label?e.label:`unknown`}),Pt=F(()=>{let e=[];return ft.value&&Nt.value!==void 0&&e.push({key:`reassign`,label:d(`views.recordings.reassign_face`),icon:ze,loading:K.value,onClick:()=>Kt()}),o.camera&&e.push({key:`trace`,label:d(`views.recordings.open_trace`),icon:he,onClick:()=>c(`openTrace`,J.value?.firstSeen)}),e.push({key:`ask`,label:d(`views.recordings.ask_assistant`),icon:Ne,onClick:()=>Ft()}),jt.value&&e.push({key:`download`,label:d(`views.recordings.download`),icon:ve,loading:G.value,onClick:()=>Yt()}),e});function Ft(){let e=d(`views.recordings.ask_assistant_prompt`,{camera:o.cameraName??o.camera?.name??o.event.cameraId,time:new Date(o.event.startTime).toLocaleString(),id:o.event.id});me.push({path:`/assistant`,query:{prompt:e}})}function It(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-ct)/n))}function Lt(e){let t=Y.value.length;t&&($(),Be.value=(bt.value+e+t)%t)}function Rt(e,t){yt.value&&(t.stopPropagation(),$(),Be.value=e)}function $(){V.value=!1,L&&H.value&&(H.value=!1,L.onHoverEnd())}function zt(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 Bt(){if(!L||bt.value>0)return;let e=B.value;if(!e)return;let t=ne(o.event);if(o.event.hasRecording===!1||!t){V.value=!0;return}H.value=!0,L.onHoverStart(e,o.event.cameraId,o.event.id,o.event.startTime,t,o.camera?.zones?.privacy,m(o.event))}function Vt(){Re.blocksMouseEnter()||Bt()}function Ht(){V.value=!1,L&&(H.value=!1,L.onHoverEnd())}async function Ut(e=2){let t=await o.loadThumbnails(o.event.id,o.event.startTime);if(t){U.value=t;let e=h(t,o.event,`card`);W.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Ut(e-1);else W.value=o.event.state===`active`?`loading`:`empty`}function Wt(){if(!Re.consumesClick()){if(o.selectionMode){c(`select`);return}c(`scrollToEvent`,J.value?.firstSeen??fe(o.event))}}function Gt(e){$(),Le.value?.toggleMenu(e)}function Kt(){let e=Nt.value;e!==void 0&&Ee.openComponentDialog(He,{data:{title:d(`views.recordings.reassign_face`),confirmText:d(`components.form.button.save`),contentProps:{cropUrl:X.value?.url,oldName:e}},onConfirm:e=>qt(e)})}async function qt(e){let t=Nt.value;if(t===void 0||K.value)return;let n=X.value?.faceSeg??-1,r=x.value;if(r?.reassignEventFace){K.value=!0;try{await r.reassignEventFace(o.event.id,n,t,e)>0&&p(o.event.id),u.add({severity:`success`,detail:d(`views.recordings.reassign_done`),life:3e3})}catch(e){u.add({severity:`error`,detail:ye(e),life:5e3})}finally{K.value=!1}}}async function Jt(){let e=!pt.value;Ve.value=e;try{await y.setEventFavorite(o.event.id,e)}catch(e){Ve.value=null,u.add({severity:`error`,detail:ye(e),life:5e3})}}async function Yt(){if(G.value)return;let e=x.value;if(e?.nvrExport&&o.event.endTime){G.value=!0;try{let t=await e.nvrExport(o.event.cameraId,o.event.startTime*1e3,o.event.endTime*1e3);await le({url:t.url,filename:t.filename})}catch(e){l.error(`Download failed:`,e),u.add({severity:`error`,summary:d(`views.recordings.download_failed`),detail:ye(e),life:5e3})}finally{G.value=!1}}}return Oe(()=>y.storeVersion.value,()=>{let e=y.getCachedThumbnails(o.event.id);if(!e){U.value&&Ut();return}U.value=e,h(e,o.event,`card`).url&&(W.value=`loaded`)}),De(()=>{je===`loading`&&Ut()}),(t,r)=>{let o=a,c=se,l=_e,u=oe,d=n,f=de,p=pe,m=xe,h=Se,g=i,_=s;return S(),O(`div`,{ref_key:`rootRef`,ref:z,class:`recording-card relative group cursor-pointer`,onClick:Wt,onMouseenter:Vt,onMouseleave:Ht},[D(`div`,{class:E([`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`}},[R(W)===`loading`?(S(),j(o,{key:0,width:`100%`,height:`100%`,class:`rounded-xl`})):R(St)?(S(),O(P,{key:1},[R(xt)?(S(),O(`img`,{key:0,src:R(St),"aria-hidden":`true`,class:`absolute inset-0 w-full h-full object-cover blur-xl scale-110 opacity-50 pointer-events-none`},null,8,Ue)):I(``,!0),A(c,{src:R(St),alt:R(wt),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:R(xt)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])],64)):(S(),O(`div`,We,[(S(),j(Te(R(T)[R(_t)]??R(T).motion),{class:`w-10 h-10 text-white/20`}))])),R(L)?Ae((S(),O(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:B,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[ke,R(H)]]):I(``,!0),r[2]||=D(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),D(`div`,Ge,[D(`div`,Ke,[D(`p`,qe,b(R(wt)),1),R(vt)?(S(),O(`span`,Je,b(R(vt)),1)):I(``,!0),R(mt)?(S(),O(`span`,{key:1,class:E([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,R(mt).color])},b(R(mt).label),3)):I(``,!0),R(ft)&&!e.selectionMode?Ae((S(),j(d,{key:2,rounded:``,text:``,severity:`secondary`,class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:M(Jt,[`stop`]),onMouseenter:$},{icon:v(()=>[R(pt)?(S(),j(l,{key:0,class:`w-3 h-3 text-yellow-400`})):(S(),j(u,{key:1,class:`w-3 h-3 text-white`}))]),_:1})),[[_,{value:R(pt)?t.$t(`views.recordings.unfavorite`):t.$t(`views.recordings.favorite`)},void 0,{left:!0}]]):I(``,!0),R(Pt).length>0&&!e.selectionMode?Ae((S(),j(d,{key:3,rounded:``,text:``,severity:`secondary`,loading:R(G)||R(K),class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:M(Gt,[`stop`]),onMouseenter:$},{icon:v(()=>[A(f,{class:`w-3 h-3 text-white`})]),_:1},8,[`loading`])),[[_,{value:t.$t(`views.recordings.more_actions`)},void 0,{left:!0}]]):I(``,!0)]),D(`p`,Ye,b(R(At)),1)]),R(Y).length>1?(S(),O(P,{key:4},[A(d,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute left-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:r[0]||=M(e=>Lt(-1),[`stop`]),onMouseenter:$},{icon:v(()=>[A(p,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`]),A(d,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute right-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:r[1]||=M(e=>Lt(1),[`stop`]),onMouseenter:$},{icon:v(()=>[A(m,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`])],64)):I(``,!0),R(Ct)?(S(),O(`div`,{key:5,class:E([`absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200`,R(Mt)?`bottom-16`:`bottom-10`])},[D(`span`,Xe,b(R(Ct)),1)],2)):I(``,!0),D(`div`,{ref_key:`footerRef`,ref:Ie,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[D(`div`,Ze,[e.selectionMode?(S(),O(`div`,{key:0,class:E([`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?(S(),j(h,{key:0,class:`w-4 h-4 text-white`})):I(``,!0)],2)):I(``,!0),(S(!0),O(P,null,w(R(Et),e=>(S(),O(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(S(),j(Te(R(T)[e]??R(T).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),R(Dt).length>0?(S(),O(`span`,{key:1,title:R(Dt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+b(R(Dt).length),9,Qe)):I(``,!0)]),R(Ot).length>0||R(kt)>0?(S(),O(`div`,$e,[(S(!0),O(P,null,w(R(Ot),(e,t)=>(S(),O(`div`,{key:t,class:E([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===R(bt)?`border-primary/80`:`border-white/20`]),onClick:e=>Rt(t,e)},[D(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,tt)],10,et))),128)),R(kt)>0?(S(),O(`span`,nt,`+`+b(R(kt)),1)):I(``,!0)])):I(``,!0)],512),R(L)&&R(H)&&R(L).isLoading.value?(S(),O(`div`,rt,[A(g,{class:`w-[28px] h-[28px] m-0`,"stroke-width":`6`})])):I(``,!0),R(Mt)?(S(),O(`div`,it,[D(`span`,at,b(R(Mt)),1)])):I(``,!0)],2),A(ge,{ref_key:`cardMenuRef`,ref:Le,items:R(Pt),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])],544)}}}),[[`__scopeId`,`data-v-7ce0bd00`]]),ft={name:`VirtualScroller`,components:{SpinnerIcon:d},extends:{name:`BaseVirtualScroller`,extends:r,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:B,beforeMount(){B.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:{}}},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.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(){o(this.element)&&(this.setContentEl(this.content),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=l(this.element),this.defaultHeight=u(this.element),this.defaultContentWidth=l(this.content),this.defaultContentHeight=u(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.element?this.element.offsetWidth-r.left:0,a=this.element?this.element.offsetHeight-r.top:0,o=(e,t)=>Math.ceil(e/(t||e)),s=e=>Math.ceil(e/2),c=e?{rows:o(a,n[0]),cols:o(i,n[1])}:o(t?i:a,n);return{numItemsInViewport:c,numToleratedItems:this.d_numToleratedItems||(e?[s(c.rows),s(c.cols)]:s(c))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let e=this.isBoth(),t=this.isHorizontal(),n=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[r,i]=[l(this.element),u(this.element)];(e||t)&&(this.element.style.width=r<this.defaultWidth?r+`px`:this.scrollWidth||this.defaultWidth+`px`),(e||n)&&(this.element.style.height=i<this.defaultHeight?i+`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){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{left:t,right:n,top:r,bottom:i,x:t+n,y:r+i}}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(o(this.element)){let e=this.isBoth(),t=this.isVertical(),n=this.isHorizontal(),[r,i]=[l(this.element),u(this.element)],[a,o]=[r!==this.defaultWidth,i!==this.defaultHeight];(e?a||o:n?a:t&&o)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=r,this.defaultHeight=i,this.defaultContentWidth=l(this.content),this.defaultContentHeight=u(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))},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(t){this.content=t||this.content||e(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},pt=[`tabindex`];function mt(e,t,n,r,i,a){let o=y(`SpinnerIcon`);return e.disabled?(S(),O(P,{key:1},[z(e.$slots,`default`),z(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(S(),O(`div`,x({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)}),[z(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()},()=>[D(`div`,x({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(S(!0),O(P,null,w(a.loadedItems,(t,n)=>z(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(S(),O(`div`,x({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):I(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(S(),O(`div`,x({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(S(!0),O(P,{key:0},w(i.loaderArr,(t,n)=>z(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):I(``,!0),z(e.$slots,`loadingicon`,{},()=>[A(o,x({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):I(``,!0)],16,pt))}var q=me(ft,[[`render`,mt]]),J={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`},ht=me(L({__name:`CuiRecordingsGrid`,props:{items:{},minItemWidth:{},aspectRatio:{default:1},gap:{default:8},hasMore:{type:Boolean,default:!1},loadMore:{type:Function,default:void 0},itemKey:{type:Function,default:void 0}},setup(e,{expose:t}){let n=e,r=C(`containerRef`),{width:i,height:a}=te(r),o=F(()=>a.value>0?`${a.value}px`:void 0),s=F(()=>{let e=i.value;if(!e)return 0;let t=n.gap;return Math.max(1,Math.floor((e+t)/(n.minItemWidth+t)))}),c=F(()=>{let e=i.value,t=s.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),l=F(()=>c.value?Math.floor(c.value/n.aspectRatio):0),u=F(()=>l.value?l.value+n.gap:0),d=F(()=>{let e=s.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 f(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function p(e){let t=e;if(t&&t.length!==0)return f(t[0])}let m=k(!1),h=null;async function g(){if(m.value||!n.hasMore||!n.loadMore||h!==null&&n.items.length===h)return;m.value=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{m.value=!1,h=n.items.length===e?e:null}}let _=k(0);function ee(e){let t=e.target;if(!t)return;_.value=t.scrollTop;let n=u.value*3;t.scrollTop+t.clientHeight>=t.scrollHeight-n&&g()}function ne(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}let re=!1;return Oe([()=>n.items.length,a,u,()=>n.hasMore],()=>{re||(re=!0,Ee(()=>{if(re=!1,!n.hasMore)return;let e=a.value,t=d.value.length*u.value;e>0&&u.value>0&&t<e+u.value&&g()}))},{flush:`post`}),t({scrollToTop:ne,scrollY:_}),(t,n)=>{let i=q,a=Le;return S(),O(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root relative`},[R(d).length>0&&R(c)>0?(S(),j(i,{key:0,items:R(d),"item-size":R(u),"scroll-height":R(o),orientation:`vertical`,class:`recordings-scroll`,"num-tolerated-items":2,"item-key":p,onScroll:ee},{item:v(({item:n})=>[D(`div`,{class:`recordings-row`,style:T({height:`${R(u)}px`,gap:`${e.gap}px`})},[(S(!0),O(P,null,w(n,e=>(S(),O(`div`,{key:f(e),style:T({width:`${R(c)}px`,height:`${R(l)}px`})},[z(t.$slots,`item`,{item:e},void 0,!0)],4))),128))],4)]),_:3},8,[`items`,`item-size`,`scroll-height`])):I(``,!0),R(m)?(S(),O(`div`,J,[A(a,{width:`18px`,height:`18px`,class:`text-white`})])):I(``,!0)],512)}}}),[[`__scopeId`,`data-v-57a2aa74`]]);function gt(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 _t(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)=>gt(t)-gt(e)),t}export{dt as i,gt as n,ht as r,_t as t};
1
+ import{$n as e,A as t,Bt as n,Gt as r,It as i,J as a,Kn as o,Kt as s,L as c,Mn as l,Pn as u,Ut as d,Vr as f,a as p,c as m,f as h,g,i as _,kt as ee,ni as te,o as ne,p as re,s as ie}from"./vendor-cameraui-DTALowLr.js";import{Er as ae,J as oe,On as se,Q as ce,Tn as le,X as ue,Y as de,Z as fe,_n as pe,kn as me,nt as he,pn as ge,q as _e,rt as ve,s as ye,st as be,vn as xe,xn as Se,yn as Ce}from"./api-C7-TgfI0.js";import{$n as v,Bn as y,Cn as we,Cr as b,Dn as x,Hn as Te,In as S,Jn as C,On as Ee,Pn as De,Rn as w,Sr as T,Xn as Oe,br as E,cn as D,dn as O,dr as k,en as ke,er as Ae,gn as A,ln as j,nn as M,or as N,rn as P,sn as F,sr as je,un as I,vn as L,yr as R,zn as z}from"./vendor-CFZm55ei.js";import{a as Me}from"./intercomService-DyUZK0Im.js";import{i as Ne}from"./alert-outline-DHaYL1DY.js";import{t as Pe}from"./eventIcons-CCFi3Fbj.js";import{u as Fe}from"./vendor-core-DF66V0xE.js";import{N as B,j as Ie}from"./vendor-primevue-CpTHHdUJ.js";import{t as Le}from"./ring-resize-DrTdJJZT.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Re(e,t){return S(),O(`svg`,V,[...t[0]||=[D(`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=je({name:`tabler-user-edit`,render:Re}),H={class:`flex flex-col gap-4 w-full`},U={key:0,class:`flex justify-center`},W=[`src`,`alt`],G={class:`flex flex-col gap-2 w-full`},Be={class:`cui-label`},Ve={class:`flex flex-col gap-2 w-full`},K={for:`reassignTarget`,class:`cui-label`},He=L({__name:`FaceReassign`,props:{cropUrl:{},oldName:{}},setup(e,{expose:t}){let n=e,{t:r}=f(),{plugin:i}=ee(`@camera.ui/camera-ui-nvr`),a=k(null),o=k([]),s=k(!0),l=F(()=>n.oldName===`unknown`?r(`views.recordings.reassign_unknown_person`):n.oldName),u=F(()=>{let e=o.value.filter(e=>e!==n.oldName).map(e=>({label:e,value:e}));return n.oldName!==`unknown`&&e.push({label:r(`views.recordings.reassign_unknown`),value:``}),e});return De(async()=>{try{let e=await i.value?.listKnownFaces?.();o.value=(e??[]).map(e=>e.name)}catch{}finally{s.value=!1}}),t({onConfirm:async()=>a.value}),(e,t)=>{let r=c,i=Ie;return S(),O(`div`,H,[n.cropUrl?(S(),O(`div`,U,[D(`img`,{src:n.cropUrl,alt:R(l),class:`w-36 h-36 rounded-xl object-cover bg-neutral-900`},null,8,W)])):I(``,!0),D(`div`,G,[D(`label`,Be,b(e.$t(`views.recordings.reassign_current`)),1),A(r,{"model-value":R(l),class:`w-full`,fluid:``,disabled:``},null,8,[`model-value`])]),D(`div`,Ve,[D(`label`,K,b(e.$t(`views.recordings.reassign_new`)),1),A(i,{id:`reassignTarget`,modelValue:R(a),"onUpdate:modelValue":t[0]||=e=>N(a)?a.value=e:null,options:R(u),"option-label":`label`,"option-value":`value`,class:`w-full`,fluid:``,loading:R(s),disabled:R(s),placeholder:e.$t(`views.faces.enter_or_pick_name`)},null,8,[`modelValue`,`options`,`loading`,`disabled`,`placeholder`])])])}}}),Ue=[`src`],We={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},Ge={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},Ke={class:`flex items-center gap-1.5`},qe={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},Je={key:0,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},Ye={class:`text-[10px] text-white/70`},Xe={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},Ze={class:`flex items-center gap-1 min-w-0`},Qe=[`title`],$e={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},et=[`onClick`],tt=[`src`,`alt`],nt={key:0,class:`text-[10px] text-white/60 font-medium`},rt={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},it={key:7,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},at={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`}},ot=24,st=30,ct=22,lt=28,ut=8,dt=me(L({__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:r}){let o=e,c=r,l=Me(),u=ae(),{t:d}=f(),me=Fe(),y=g(`@camera.ui/camera-ui-nvr`),{plugin:x}=ee(`@camera.ui/camera-ui-nvr`),Ee=be(),{icons:T}=Pe(),N=y.getCachedThumbnails(o.event.id),je=N?h(N,o.event,`card`,o.segIndex).url?`loaded`:`empty`:`loading`,L=we(ie,void 0),z=C(`rootRef`),B=C(`previewCanvasRef`),Ie=C(`footerRef`),Le=C(`cardMenuRef`),V=k(!1),Re=ue(z,()=>Bt(),()=>$()),H=k(!1),U=k(N??null),W=k(je),G=k(!1),Be=k(0),Ve=k(null),K=k(!1),{width:dt}=te(Ie),ft=F(()=>Ce(void 0,`admin`)),pt=F(()=>Ve.value??o.event.favorite??!1),mt=F(()=>{if(o.semanticScore==null)return;let e=Math.max(0,Math.min(1,o.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=F(()=>U.value?h(U.value,o.event,`card`,o.segIndex):null),J=F(()=>{let e=o.segIndex??q.value?.segIndex;return e===void 0?void 0:o.event.segments?.[e]}),ht=F(()=>q.value?.url),gt=F(()=>q.value?.label),_t=F(()=>q.value?.type??o.event.types[0]??`motion`),vt=F(()=>{if(o.hideSegmentBadge)return;let e=o.event.segments?.length??0;return o.segIndex!==void 0&&e>1?`${o.segIndex+1}/${e}`:void 0}),Y=F(()=>{let e=U.value,n=q.value?.url;if(!e||!n)return[];let r=[{url:n,label:q.value?.label,type:_t.value,crop:!1}];for(let t of re(e,o.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(o.segIndex===void 0)for(let n of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let i=t(e.cards?.[n]??e.strips?.[n]);if(!i||r.some(e=>e.url===i))continue;let a=ce(o.event,n);r.push({url:i,label:a,type:a,crop:!1})}return r.length>1?r:[]}),yt=F(()=>Y.value.length>1),bt=F(()=>Y.value.length?Math.min(Be.value,Y.value.length-1):0),X=F(()=>yt.value?Y.value[bt.value]:void 0),xt=F(()=>!!X.value?.crop),St=F(()=>X.value?.url??ht.value),Ct=F(()=>X.value?.label??gt.value),Z=F(()=>{let e=J.value;return(e?_(o.event,e):[...new Set(o.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),wt=F(()=>o.cameraName??o.event.cameraId),Tt=F(()=>Y.value.map(e=>({url:e.url,type:e.type}))),Et=F(()=>Z.value.slice(0,Q.value.icons)),Q=F(()=>{let e=dt.value;if(!e)return{icons:2,tiles:2};let t=e-ut;o.selectionMode&&(t-=lt);let n=Tt.value.length>0?52:0,r=It(Z.value.length,Math.max(0,t-n),ot),i=Z.value.length>0?Math.max(1,r):0,a=i*ot+(i<Z.value.length?ct:0);return{icons:i,tiles:It(Tt.value.length,Math.max(0,t-a),st)}}),Dt=F(()=>Z.value.slice(Q.value.icons)),Ot=F(()=>Tt.value.slice(0,Q.value.tiles)),kt=F(()=>Tt.value.length-Q.value.tiles),At=F(()=>{let e=new Date(J.value?.firstSeen??o.event.thumbnailAt??o.event.startTime),t=new Date,n=e.toDateString()===t.toDateString(),r=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return n?r:`${e.toLocaleDateString([],{month:`short`,day:`numeric`})} ${r}`}),jt=F(()=>!!(x.value&&o.event.endTime&&o.event.hasRecording!==!1)),Mt=F(()=>L?V.value?d(`views.recordings.no_preview`):H.value?L.status.value===`unavailable`?d(`views.recordings.no_preview`):L.status.value===`playing`&&L.previewTimeMs.value?zt(L.previewTimeMs.value):``:``:``),Nt=F(()=>{let e=X.value;if(e&&e.type===`face`)return e.label?e.label:`unknown`}),Pt=F(()=>{let e=[];return ft.value&&Nt.value!==void 0&&e.push({key:`reassign`,label:d(`views.recordings.reassign_face`),icon:ze,loading:K.value,onClick:()=>Kt()}),o.camera&&e.push({key:`trace`,label:d(`views.recordings.open_trace`),icon:he,onClick:()=>c(`openTrace`,J.value?.firstSeen)}),e.push({key:`ask`,label:d(`views.recordings.ask_assistant`),icon:Ne,onClick:()=>Ft()}),jt.value&&e.push({key:`download`,label:d(`views.recordings.download`),icon:ve,loading:G.value,onClick:()=>Yt()}),e});function Ft(){let e=d(`views.recordings.ask_assistant_prompt`,{camera:o.cameraName??o.camera?.name??o.event.cameraId,time:new Date(o.event.startTime).toLocaleString(),id:o.event.id});me.push({path:`/assistant`,query:{prompt:e}})}function It(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-ct)/n))}function Lt(e){let t=Y.value.length;t&&($(),Be.value=(bt.value+e+t)%t)}function Rt(e,t){yt.value&&(t.stopPropagation(),$(),Be.value=e)}function $(){V.value=!1,L&&H.value&&(H.value=!1,L.onHoverEnd())}function zt(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 Bt(){if(!L||bt.value>0)return;let e=B.value;if(!e)return;let t=ne(o.event);if(o.event.hasRecording===!1||!t){V.value=!0;return}H.value=!0,L.onHoverStart(e,o.event.cameraId,o.event.id,o.event.startTime,t,o.camera?.zones?.privacy,m(o.event))}function Vt(){Re.blocksMouseEnter()||Bt()}function Ht(){V.value=!1,L&&(H.value=!1,L.onHoverEnd())}async function Ut(e=2){let t=await o.loadThumbnails(o.event.id,o.event.startTime);if(t){U.value=t;let e=h(t,o.event,`card`);W.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Ut(e-1);else W.value=o.event.state===`active`?`loading`:`empty`}function Wt(){if(!Re.consumesClick()){if(o.selectionMode){c(`select`);return}c(`scrollToEvent`,J.value?.firstSeen??fe(o.event))}}function Gt(e){$(),Le.value?.toggleMenu(e)}function Kt(){let e=Nt.value;e!==void 0&&Ee.openComponentDialog(He,{data:{title:d(`views.recordings.reassign_face`),confirmText:d(`components.form.button.save`),contentProps:{cropUrl:X.value?.url,oldName:e}},onConfirm:e=>qt(e)})}async function qt(e){let t=Nt.value;if(t===void 0||K.value)return;let n=X.value?.faceSeg??-1,r=x.value;if(r?.reassignEventFace){K.value=!0;try{await r.reassignEventFace(o.event.id,n,t,e)>0&&p(o.event.id),u.add({severity:`success`,detail:d(`views.recordings.reassign_done`),life:3e3})}catch(e){u.add({severity:`error`,detail:ye(e),life:5e3})}finally{K.value=!1}}}async function Jt(){let e=!pt.value;Ve.value=e;try{await y.setEventFavorite(o.event.id,e)}catch(e){Ve.value=null,u.add({severity:`error`,detail:ye(e),life:5e3})}}async function Yt(){if(G.value)return;let e=x.value;if(e?.nvrExport&&o.event.endTime){G.value=!0;try{let t=await e.nvrExport(o.event.cameraId,o.event.startTime*1e3,o.event.endTime*1e3);await le({url:t.url,filename:t.filename})}catch(e){l.error(`Download failed:`,e),u.add({severity:`error`,summary:d(`views.recordings.download_failed`),detail:ye(e),life:5e3})}finally{G.value=!1}}}return Oe(()=>y.storeVersion.value,()=>{let e=y.getCachedThumbnails(o.event.id);if(!e){U.value&&Ut();return}U.value=e,h(e,o.event,`card`).url&&(W.value=`loaded`)}),De(()=>{je===`loading`&&Ut()}),(t,r)=>{let o=a,c=se,l=_e,u=oe,d=n,f=de,p=pe,m=xe,h=Se,g=i,_=s;return S(),O(`div`,{ref_key:`rootRef`,ref:z,class:`recording-card relative group cursor-pointer`,onClick:Wt,onMouseenter:Vt,onMouseleave:Ht},[D(`div`,{class:E([`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`}},[R(W)===`loading`?(S(),j(o,{key:0,width:`100%`,height:`100%`,class:`rounded-xl`})):R(St)?(S(),O(P,{key:1},[R(xt)?(S(),O(`img`,{key:0,src:R(St),"aria-hidden":`true`,class:`absolute inset-0 w-full h-full object-cover blur-xl scale-110 opacity-50 pointer-events-none`},null,8,Ue)):I(``,!0),A(c,{src:R(St),alt:R(wt),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:R(xt)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])],64)):(S(),O(`div`,We,[(S(),j(Te(R(T)[R(_t)]??R(T).motion),{class:`w-10 h-10 text-white/20`}))])),R(L)?Ae((S(),O(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:B,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[ke,R(H)]]):I(``,!0),r[2]||=D(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),D(`div`,Ge,[D(`div`,Ke,[D(`p`,qe,b(R(wt)),1),R(vt)?(S(),O(`span`,Je,b(R(vt)),1)):I(``,!0),R(mt)?(S(),O(`span`,{key:1,class:E([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,R(mt).color])},b(R(mt).label),3)):I(``,!0),R(ft)&&!e.selectionMode?Ae((S(),j(d,{key:2,rounded:``,text:``,severity:`secondary`,class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:M(Jt,[`stop`]),onMouseenter:$},{icon:v(()=>[R(pt)?(S(),j(l,{key:0,class:`w-3 h-3 text-yellow-400`})):(S(),j(u,{key:1,class:`w-3 h-3 text-white`}))]),_:1})),[[_,{value:R(pt)?t.$t(`views.recordings.unfavorite`):t.$t(`views.recordings.favorite`)},void 0,{left:!0}]]):I(``,!0),R(Pt).length>0&&!e.selectionMode?Ae((S(),j(d,{key:3,rounded:``,text:``,severity:`secondary`,loading:R(G)||R(K),class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:M(Gt,[`stop`]),onMouseenter:$},{icon:v(()=>[A(f,{class:`w-3 h-3 text-white`})]),_:1},8,[`loading`])),[[_,{value:t.$t(`views.recordings.more_actions`)},void 0,{left:!0}]]):I(``,!0)]),D(`p`,Ye,b(R(At)),1)]),R(Y).length>1?(S(),O(P,{key:4},[A(d,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute left-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:r[0]||=M(e=>Lt(-1),[`stop`]),onMouseenter:$},{icon:v(()=>[A(p,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`]),A(d,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute right-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:r[1]||=M(e=>Lt(1),[`stop`]),onMouseenter:$},{icon:v(()=>[A(m,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`])],64)):I(``,!0),R(Ct)?(S(),O(`div`,{key:5,class:E([`absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200`,R(Mt)?`bottom-16`:`bottom-10`])},[D(`span`,Xe,b(R(Ct)),1)],2)):I(``,!0),D(`div`,{ref_key:`footerRef`,ref:Ie,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[D(`div`,Ze,[e.selectionMode?(S(),O(`div`,{key:0,class:E([`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?(S(),j(h,{key:0,class:`w-4 h-4 text-white`})):I(``,!0)],2)):I(``,!0),(S(!0),O(P,null,w(R(Et),e=>(S(),O(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(S(),j(Te(R(T)[e]??R(T).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),R(Dt).length>0?(S(),O(`span`,{key:1,title:R(Dt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+b(R(Dt).length),9,Qe)):I(``,!0)]),R(Ot).length>0||R(kt)>0?(S(),O(`div`,$e,[(S(!0),O(P,null,w(R(Ot),(e,t)=>(S(),O(`div`,{key:t,class:E([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===R(bt)?`border-primary/80`:`border-white/20`]),onClick:e=>Rt(t,e)},[D(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,tt)],10,et))),128)),R(kt)>0?(S(),O(`span`,nt,`+`+b(R(kt)),1)):I(``,!0)])):I(``,!0)],512),R(L)&&R(H)&&R(L).isLoading.value?(S(),O(`div`,rt,[A(g,{class:`w-[28px] h-[28px] m-0`,"stroke-width":`6`})])):I(``,!0),R(Mt)?(S(),O(`div`,it,[D(`span`,at,b(R(Mt)),1)])):I(``,!0)],2),A(ge,{ref_key:`cardMenuRef`,ref:Le,items:R(Pt),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])],544)}}}),[[`__scopeId`,`data-v-7ce0bd00`]]),ft={name:`VirtualScroller`,components:{SpinnerIcon:d},extends:{name:`BaseVirtualScroller`,extends:r,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:B,beforeMount(){B.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:{}}},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.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(){o(this.element)&&(this.setContentEl(this.content),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=l(this.element),this.defaultHeight=u(this.element),this.defaultContentWidth=l(this.content),this.defaultContentHeight=u(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.element?this.element.offsetWidth-r.left:0,a=this.element?this.element.offsetHeight-r.top:0,o=(e,t)=>Math.ceil(e/(t||e)),s=e=>Math.ceil(e/2),c=e?{rows:o(a,n[0]),cols:o(i,n[1])}:o(t?i:a,n);return{numItemsInViewport:c,numToleratedItems:this.d_numToleratedItems||(e?[s(c.rows),s(c.cols)]:s(c))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let e=this.isBoth(),t=this.isHorizontal(),n=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[r,i]=[l(this.element),u(this.element)];(e||t)&&(this.element.style.width=r<this.defaultWidth?r+`px`:this.scrollWidth||this.defaultWidth+`px`),(e||n)&&(this.element.style.height=i<this.defaultHeight?i+`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){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{left:t,right:n,top:r,bottom:i,x:t+n,y:r+i}}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(o(this.element)){let e=this.isBoth(),t=this.isVertical(),n=this.isHorizontal(),[r,i]=[l(this.element),u(this.element)],[a,o]=[r!==this.defaultWidth,i!==this.defaultHeight];(e?a||o:n?a:t&&o)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=r,this.defaultHeight=i,this.defaultContentWidth=l(this.content),this.defaultContentHeight=u(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))},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(t){this.content=t||this.content||e(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},pt=[`tabindex`];function mt(e,t,n,r,i,a){let o=y(`SpinnerIcon`);return e.disabled?(S(),O(P,{key:1},[z(e.$slots,`default`),z(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(S(),O(`div`,x({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)}),[z(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()},()=>[D(`div`,x({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(S(!0),O(P,null,w(a.loadedItems,(t,n)=>z(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(S(),O(`div`,x({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):I(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(S(),O(`div`,x({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(S(!0),O(P,{key:0},w(i.loaderArr,(t,n)=>z(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):I(``,!0),z(e.$slots,`loadingicon`,{},()=>[A(o,x({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):I(``,!0)],16,pt))}var q=me(ft,[[`render`,mt]]),J={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`},ht=me(L({__name:`CuiRecordingsGrid`,props:{items:{},minItemWidth:{},aspectRatio:{default:1},gap:{default:8},hasMore:{type:Boolean,default:!1},loadMore:{type:Function,default:void 0},itemKey:{type:Function,default:void 0}},setup(e,{expose:t}){let n=e,r=C(`containerRef`),{width:i,height:a}=te(r),o=F(()=>a.value>0?`${a.value}px`:void 0),s=F(()=>{let e=i.value;if(!e)return 0;let t=n.gap;return Math.max(1,Math.floor((e+t)/(n.minItemWidth+t)))}),c=F(()=>{let e=i.value,t=s.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),l=F(()=>c.value?Math.floor(c.value/n.aspectRatio):0),u=F(()=>l.value?l.value+n.gap:0),d=F(()=>{let e=s.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 f(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function p(e){let t=e;if(t&&t.length!==0)return f(t[0])}let m=k(!1),h=null;async function g(){if(m.value||!n.hasMore||!n.loadMore||h!==null&&n.items.length===h)return;m.value=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{m.value=!1,h=n.items.length===e?e:null}}let _=k(0);function ee(e){let t=e.target;if(!t)return;_.value=t.scrollTop;let n=u.value*3;t.scrollTop+t.clientHeight>=t.scrollHeight-n&&g()}function ne(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}let re=!1;return Oe([()=>n.items.length,a,u,()=>n.hasMore],()=>{re||(re=!0,Ee(()=>{if(re=!1,!n.hasMore)return;let e=a.value,t=d.value.length*u.value;e>0&&u.value>0&&t<e+u.value&&g()}))},{flush:`post`}),t({scrollToTop:ne,scrollY:_}),(t,n)=>{let i=q,a=Le;return S(),O(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root relative`},[R(d).length>0&&R(c)>0?(S(),j(i,{key:0,items:R(d),"item-size":R(u),"scroll-height":R(o),orientation:`vertical`,class:`recordings-scroll`,"num-tolerated-items":2,"item-key":p,onScroll:ee},{item:v(({item:n})=>[D(`div`,{class:`recordings-row`,style:T({height:`${R(u)}px`,gap:`${e.gap}px`})},[(S(!0),O(P,null,w(n,e=>(S(),O(`div`,{key:f(e),style:T({width:`${R(c)}px`,height:`${R(l)}px`})},[z(t.$slots,`item`,{item:e},void 0,!0)],4))),128))],4)]),_:3},8,[`items`,`item-size`,`scroll-height`])):I(``,!0),R(m)?(S(),O(`div`,J,[A(a,{width:`18px`,height:`18px`,class:`text-white`})])):I(``,!0)],512)}}}),[[`__scopeId`,`data-v-57a2aa74`]]);function gt(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 _t(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)=>gt(t)-gt(e)),t}export{dt as i,gt as n,ht as r,_t as t};
@@ -1 +1 @@
1
- import{Er as e,Fr as t,wr as n}from"./api-vegsDz6n.js";import{K as r,Z as i,cr as a,dr as o,mr as s,sn as c}from"./vendor-CP-WYrgy.js";import{f as l}from"./vendor-core-Ba81bBNM.js";import{l as u,u as d}from"./server-D-qkU2-U.js";import{n as f}from"./useServerRestart-BBp4cko_.js";import{t as p}from"./useUpdatesSocket-CgCXGGVg.js";import{u as m}from"./plugins-ChyJXprl.js";async function h({signal:e}={}){return(await t.get(`/updates/status`,{signal:e})).data}async function g(){return(await t.post(`/updates/run`)).data}async function _(){await t.post(`/updates/cancel`)}async function v(){await t.post(`/updates/check`,void 0,{timeout:6e4})}async function y(){return(await t.get(`/workers/config`)).data}async function b(e){return(await t.patch(`/workers/config`,e)).data}async function x(){return(await t.post(`/workers/pairings`)).data}async function S(e){await t.delete(`/workers/${e}`)}async function C(e){await t.post(`/workers/${e}/restart`)}async function w({agentId:e,version:n}){await t.post(`/workers/${e}/update`,n?{version:n}:{})}async function T({agentId:e,name:n}){await t.patch(`/workers/${e}`,{name:n})}async function E({cameraId:e,agentId:n}){return(await t.post(`/workers/assign`,{cameraId:e,agentId:n})).data}async function D({cameraId:e}){return(await t.post(`/workers/unassign`,{cameraId:e})).data}async function O({pluginName:e,agentId:n}){return(await t.post(`/workers/assign-plugin`,{pluginName:e,agentId:n})).data}async function k({pluginName:e}){return(await t.post(`/workers/unassign-plugin`,{pluginName:e})).data}var A=class{_queryClient=i();toast=e();getConfigQuery(){return n({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
+ import{Er as e,Fr as t,wr as n}from"./api-C7-TgfI0.js";import{K as r,Z as i,cr as a,dr as o,mr as s,sn as c}from"./vendor-CFZm55ei.js";import{f as l}from"./vendor-core-DF66V0xE.js";import{l as u,u as d}from"./server-BvOtzDbz.js";import{n as f}from"./useServerRestart-_gMUanhL.js";import{t as p}from"./useUpdatesSocket-8rAwSOk0.js";import{u as m}from"./plugins-CqWe1lUn.js";async function h({signal:e}={}){return(await t.get(`/updates/status`,{signal:e})).data}async function g(){return(await t.post(`/updates/run`)).data}async function _(){await t.post(`/updates/cancel`)}async function v(){await t.post(`/updates/check`,void 0,{timeout:6e4})}async function y(){return(await t.get(`/workers/config`)).data}async function b(e){return(await t.patch(`/workers/config`,e)).data}async function x(){return(await t.post(`/workers/pairings`)).data}async function S(e){await t.delete(`/workers/${e}`)}async function C(e){await t.post(`/workers/${e}/restart`)}async function w({agentId:e,version:n}){await t.post(`/workers/${e}/update`,n?{version:n}:{})}async function T({agentId:e,name:n}){await t.patch(`/workers/${e}`,{name:n})}async function E({cameraId:e,agentId:n}){return(await t.post(`/workers/assign`,{cameraId:e,agentId:n})).data}async function D({cameraId:e}){return(await t.post(`/workers/unassign`,{cameraId:e})).data}async function O({pluginName:e,agentId:n}){return(await t.post(`/workers/assign-plugin`,{pluginName:e,agentId:n})).data}async function k({pluginName:e}){return(await t.post(`/workers/unassign-plugin`,{pluginName:e})).data}var A=class{_queryClient=i();toast=e();getConfigQuery(){return n({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 +1 @@
1
- import{In as e,cn as t,dn as n,sr as r}from"./vendor-CP-WYrgy.js";var i={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`currentColor`,d:`M9 16v-6H5l7-7l7 7h-4v6zm-4 4v-2h14v2z`},null,-1)]])}var o=r({name:`mdi-upload`,render:a});export{o as t};
1
+ import{In as e,cn as t,dn as n,sr as r}from"./vendor-CFZm55ei.js";var i={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`currentColor`,d:`M9 16v-6H5l7-7l7 7h-4v6zm-4 4v-2h14v2z`},null,-1)]])}var o=r({name:`mdi-upload`,render:a});export{o as t};
@@ -1 +1 @@
1
- import{In as e,cn as t,dn as n,sr as r}from"./vendor-CP-WYrgy.js";var i={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var o=r({name:`tabler-upload`,render:a});export{o as t};
1
+ import{In as e,cn as t,dn as n,sr as r}from"./vendor-CFZm55ei.js";var i={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function a(r,a){return e(),n(`svg`,i,[...a[0]||=[t(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var o=r({name:`tabler-upload`,render:a});export{o as t};
@@ -1 +1 @@
1
- import"./api-vegsDz6n.js";import{dr as e}from"./vendor-CP-WYrgy.js";import{i as t}from"./intercomService-IAAXcRPG.js";function n(){let{electron:n}=t(),r=e(null);return{uiVersion:`2.0.0`,appVersion:r,nativeVersion:e(null),refreshAppVersion:async()=>{if(n)try{let e=await n.invoke(`get-app-version`);r.value=typeof e==`string`?e:null}catch{r.value=null}}}}export{n as t};
1
+ import"./api-C7-TgfI0.js";import{dr as e}from"./vendor-CFZm55ei.js";import{i as t}from"./intercomService-DyUZK0Im.js";function n(){let{electron:n}=t(),r=e(null);return{uiVersion:`2.0.0`,appVersion:r,nativeVersion:e(null),refreshAppVersion:async()=>{if(n)try{let e=await n.invoke(`get-app-version`);r.value=typeof e==`string`?e:null}catch{r.value=null}}}}export{n as t};
@@ -1 +1 @@
1
- import{Ai as e}from"./vendor-cameraui-D0VXSxSF.js";import{fr as t}from"./vendor-CP-WYrgy.js";var n=t(new Map);function r(){function t(t){n.set(t.name,t),e(()=>{n.get(t.name)===t&&n.delete(t.name)})}function r(){return Array.from(n.values()).map(({name:e,description:t})=>({name:e,description:t}))}async function i(e,t){let r=n.get(e);if(!r)throw Error(`No action "${e}" on this page`);return r.run(t)}return{register:t,list:r,run:i}}export{r as t};
1
+ import{Ai as e}from"./vendor-cameraui-DTALowLr.js";import{fr as t}from"./vendor-CFZm55ei.js";var n=t(new Map);function r(){function t(t){n.set(t.name,t),e(()=>{n.get(t.name)===t&&n.delete(t.name)})}function r(){return Array.from(n.values()).map(({name:e,description:t})=>({name:e,description:t}))}async function i(e,t){let r=n.get(e);if(!r)throw Error(`No action "${e}" on this page`);return r.run(t)}return{register:t,list:r,run:i}}export{r as t};
@@ -1 +1 @@
1
- import{Er as e,Fr as t,_ as n,s as r}from"./api-vegsDz6n.js";import{dr as i}from"./vendor-CP-WYrgy.js";import{l as a}from"./server-D-qkU2-U.js";import{n as o}from"./useServerRestart-BBp4cko_.js";var s=3e5;async function c(e){return(await t.post(`/backup/download`,{localStorage:e},{responseType:`arraybuffer`,timeout:s})).data}async function l(e,n){return(await t.post(`/backup/restore`,e,{timeout:s,onUploadProgress:e=>{e.total&&n?.(Math.round(e.loaded/e.total*100))}})).data}async function u(){return(await t.get(`/backup/scheduler`)).data}async function d(e){return(await t.patch(`/backup/scheduler`,e)).data}async function f(){return(await t.post(`/backup/scheduler/run`)).data}async function p(e){return(await t.get(`/backup/scheduler/backups/${encodeURIComponent(e)}`,{responseType:`arraybuffer`,timeout:s})).data}async function m(e){await t.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 t(t){let i=e();h.value=!0,g.value=`uploading`,_.value=0,v.value=``;try{let e=new FormData;e.append(`upload`,t),b(await l(e,e=>{_.value=e,e>=100&&(g.value=`restoring`)}))}catch(e){return h.value=!1,g.value=`idle`,v.value=r(e),i.add({severity:`error`,detail:v.value,life:1e4}),!1}g.value=`restarting`;let{beginServerRestart:s}=o();return s(),await a().catch(()=>{}),await n().logout(),h.value=!1,g.value=`idle`,!0}return{active:h,phase:g,uploadPercent:_,lastError:v,restoreLocalStorage:b,run:t}}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
+ import{Er as e,Fr as t,_ as n,s as r}from"./api-C7-TgfI0.js";import{dr as i}from"./vendor-CFZm55ei.js";import{l as a}from"./server-BvOtzDbz.js";import{n as o}from"./useServerRestart-_gMUanhL.js";var s=3e5;async function c(e){return(await t.post(`/backup/download`,{localStorage:e},{responseType:`arraybuffer`,timeout:s})).data}async function l(e,n){return(await t.post(`/backup/restore`,e,{timeout:s,onUploadProgress:e=>{e.total&&n?.(Math.round(e.loaded/e.total*100))}})).data}async function u(){return(await t.get(`/backup/scheduler`)).data}async function d(e){return(await t.patch(`/backup/scheduler`,e)).data}async function f(){return(await t.post(`/backup/scheduler/run`)).data}async function p(e){return(await t.get(`/backup/scheduler/backups/${encodeURIComponent(e)}`,{responseType:`arraybuffer`,timeout:s})).data}async function m(e){await t.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 t(t){let i=e();h.value=!0,g.value=`uploading`,_.value=0,v.value=``;try{let e=new FormData;e.append(`upload`,t),b(await l(e,e=>{_.value=e,e>=100&&(g.value=`restoring`)}))}catch(e){return h.value=!1,g.value=`idle`,v.value=r(e),i.add({severity:`error`,detail:v.value,life:1e4}),!1}g.value=`restarting`;let{beginServerRestart:s}=o();return s(),await a().catch(()=>{}),await n().logout(),h.value=!1,g.value=`idle`,!0}return{active:h,phase:g,uploadPercent:_,lastError:v,restoreLocalStorage:b,run:t}}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 +1 @@
1
- import{Vr as e,gt as t}from"./vendor-cameraui-D0VXSxSF.js";import{Ft as n}from"./api-vegsDz6n.js";import{sn as r}from"./vendor-CP-WYrgy.js";import{A as i,N as a}from"./types-CngwbyEy.js";function o(){let{data:e}=new n().getCamerasQuery({page:1,pageSize:-1});function t(t){return e.value?.result?.find(e=>e._id===t)?.name}return{cameraName:t}}function s(){let o=new n,{t:s}=e(),{data:c}=o.getCamerasQuery({page:1,pageSize:-1}),l=r(()=>c.value?.result??[]),u=r(()=>l.value.map(e=>({label:e.name,value:e._id})));function d(e){let{sensors:n,isLoading:i}=t(),a=r(()=>n.value.filter(t=>e?.(t)??!0).map(e=>{let t=s(`components.camera_options.sensor_type_${e.type}`),n=e.assignedCameraIds.value.map(e=>l.value.find(t=>t._id===e)?.name).filter(Boolean).join(`, `);return{label:`${e.displayName.value||e.name} (${t}${n?` · ${n}`:``})`,value:e.id,type:e.type}}));function o(e){return e?n.value.find(t=>t.id===e):void 0}return{sensorOptions:a,sensorById:o,isLoading:i}}function f(e,t=`observable`){return(t===`writable`?a(e):i(e)).map(e=>({label:s(`components.automation_nodes.sensor_property_${e}`),value:e}))}return{cameras:l,cameraOptions:u,useSensorOptions:d,getPropertiesForSensor:f}}export{s as n,o as t};
1
+ import{Vr as e,gt as t}from"./vendor-cameraui-DTALowLr.js";import{Ft as n}from"./api-C7-TgfI0.js";import{sn as r}from"./vendor-CFZm55ei.js";import{A as i,N as a}from"./types-BlFbLEIJ.js";function o(){let{data:e}=new n().getCamerasQuery({page:1,pageSize:-1});function t(t){return e.value?.result?.find(e=>e._id===t)?.name}return{cameraName:t}}function s(){let o=new n,{t:s}=e(),{data:c}=o.getCamerasQuery({page:1,pageSize:-1}),l=r(()=>c.value?.result??[]),u=r(()=>l.value.map(e=>({label:e.name,value:e._id})));function d(e){let{sensors:n,isLoading:i}=t(),a=r(()=>n.value.filter(t=>e?.(t)??!0).map(e=>{let t=s(`components.camera_options.sensor_type_${e.type}`),n=e.assignedCameraIds.value.map(e=>l.value.find(t=>t._id===e)?.name).filter(Boolean).join(`, `);return{label:`${e.displayName.value||e.name} (${t}${n?` · ${n}`:``})`,value:e.id,type:e.type}}));function o(e){return e?n.value.find(t=>t.id===e):void 0}return{sensorOptions:a,sensorById:o,isLoading:i}}function f(e,t=`observable`){return(t===`writable`?a(e):i(e)).map(e=>({label:s(`components.automation_nodes.sensor_property_${e}`),value:e}))}return{cameras:l,cameraOptions:u,useSensorOptions:d,getPropertiesForSensor:f}}export{s as n,o as t};
@@ -1 +1 @@
1
- import"./api-vegsDz6n.js";import{dr as e,ur as t}from"./vendor-CP-WYrgy.js";var n=new Set([`button`,`checkbox`,`radio`,`range`,`submit`,`reset`,`file`,`color`,`image`]),r=e(0),i=!1;function a(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 o(){return{keyboardInset:t(r)}}function s(){if(i||typeof window>`u`||(i=!0,navigator.maxTouchPoints===0))return;let e=window.innerHeight,t=()=>{let t=window.visualViewport;if(t){if(!a(document.activeElement)){c(0);return}c(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 c(e){e!==r.value&&(r.value=e,document.documentElement.style.setProperty(`--keyboard-inset`,`${e}px`))}export{s as n,o as r,a as t};
1
+ import"./api-C7-TgfI0.js";import{dr as e,ur as t}from"./vendor-CFZm55ei.js";var n=new Set([`button`,`checkbox`,`radio`,`range`,`submit`,`reset`,`file`,`color`,`image`]),r=e(0),i=!1;function a(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 o(){return{keyboardInset:t(r)}}function s(){if(i||typeof window>`u`||(i=!0,navigator.maxTouchPoints===0))return;let e=window.innerHeight,t=()=>{let t=window.visualViewport;if(t){if(!a(document.activeElement)){c(0);return}c(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 c(e){e!==r.value&&(r.value=e,document.documentElement.style.setProperty(`--keyboard-inset`,`${e}px`))}export{s as n,o as r,a as t};
@@ -1 +1 @@
1
- import{hr as e}from"./api-vegsDz6n.js";import{Xn as t}from"./vendor-CP-WYrgy.js";function n(n={}){let{target:r,onStdout:i,onDisconnect:a,onClearLog:o,onReconnected:s}=n,c=e(`/logs`),l=null,u=null,d=r,f=!1,p=0;r&&c.on(`stdout/${r}`,e=>i?.(e)),c.on(`clear-log`,e=>o?.(e??`all`)),c.onReady(()=>{f&&s?.(),f=!0,l?.()}),t(c.connected,(e,t)=>{!e&&t&&a?.()});function m(){}function h(){}function g(e){e>0&&(p=e),d&&e>0&&c.emit(`term-size`,{target:d,cols:e})}function _(e){return e.kind===`all`?`stdout`:e.kind===`system`?`stdout/system/${e.id}`:`stdout/${e.id}`}function v(e,t){u?.(),u=c.on(_(e),e=>i?.(e)),d=e.kind===`all`?void 0:e.id,p>0&&g(p),l=()=>{switch(e.kind){case`all`:c.emit(`get-all-logs`);break;case`system`:c.emit(`get-system-log`,e.id,t);break;case`camera`:c.emit(`get-camera-log`,e.id,t);break;case`plugin`:c.emit(`get-plugin-log`,e.id,t)}},l()}function y(){l=()=>c.emit(`get-all-logs`),l()}function b(e,t){l=()=>c.emit(`get-camera-log`,e,t),l()}function x(e,t){l=()=>c.emit(`get-plugin-log`,e,t),l()}return{isConnected:c.connected,connect:m,disconnect:h,reportSize:g,switchSource:v,requestAllLogs:y,requestCameraLog:b,requestPluginLog:x}}export{n as t};
1
+ import{hr as e}from"./api-C7-TgfI0.js";import{Xn as t}from"./vendor-CFZm55ei.js";function n(n={}){let{target:r,onStdout:i,onDisconnect:a,onClearLog:o,onReconnected:s}=n,c=e(`/logs`),l=null,u=null,d=r,f=!1,p=0;r&&c.on(`stdout/${r}`,e=>i?.(e)),c.on(`clear-log`,e=>o?.(e??`all`)),c.onReady(()=>{f&&s?.(),f=!0,l?.()}),t(c.connected,(e,t)=>{!e&&t&&a?.()});function m(){}function h(){}function g(e){e>0&&(p=e),d&&e>0&&c.emit(`term-size`,{target:d,cols:e})}function _(e){return e.kind===`all`?`stdout`:e.kind===`system`?`stdout/system/${e.id}`:`stdout/${e.id}`}function v(e,t){u?.(),u=c.on(_(e),e=>i?.(e)),d=e.kind===`all`?void 0:e.id,p>0&&g(p),l=()=>{switch(e.kind){case`all`:c.emit(`get-all-logs`);break;case`system`:c.emit(`get-system-log`,e.id,t);break;case`camera`:c.emit(`get-camera-log`,e.id,t);break;case`plugin`:c.emit(`get-plugin-log`,e.id,t)}},l()}function y(){l=()=>c.emit(`get-all-logs`),l()}function b(e,t){l=()=>c.emit(`get-camera-log`,e,t),l()}function x(e,t){l=()=>c.emit(`get-plugin-log`,e,t),l()}return{isConnected:c.connected,connect:m,disconnect:h,reportSize:g,switchSource:v,requestAllLogs:y,requestCameraLog:b,requestPluginLog:x}}export{n as t};
@@ -1 +1 @@
1
- import{_ as e,x as t,yn as n}from"./api-vegsDz6n.js";import{sn as r}from"./vendor-CP-WYrgy.js";import{p as i}from"./vendor-core-Ba81bBNM.js";var a=[`main`,`manage`,`system`],o=[`main`,`manage`,`system`,`settings`],s={main:!1,manage:!1,system:!0,settings:!0};function c(e){return e.meta?.navbar?.position===`top`?`main`:e.meta?.navbar?.group??`main`}function l(){let a=e(),{user:l}=i(a),u=r(()=>l.value?.navLayout??{}),d=r(()=>{let e=[];for(let r of t)r.meta?.navbar&&(r.meta.navbar.position===`top`||r.meta.navbar.group)&&n(r)&&e.push({route:r,name:r.name,labelKey:r.name.toLowerCase(),to:r.path,icon:r.meta.navbar.icon.default,activeIcon:r.meta.navbar.icon.active,defaultGroup:c(r),kind:`page`});let r=t.find(e=>e.name===`Settings`);for(let t of r?.children??[])t.meta?.settingsBar&&n(t)&&e.push({route:t,name:t.name,labelKey:t.meta.name,to:`/settings/${t.path}`,icon:t.meta.settingsBar.icon.default,activeIcon:t.meta.settingsBar.icon.active,defaultGroup:`settings`,kind:`settings`});return e}),f=r(()=>{let e=new Map(d.value.map(e=>[e.name,e])),t={main:[],manage:[],system:[],settings:[]},n=new Set;for(let r of o)for(let i of u.value.order?.[r]??[]){let a=e.get(i);a&&!n.has(i)&&(t[r].push(a),n.add(i))}for(let e of d.value)n.has(e.name)||t[e.defaultGroup].push(e);return t}),p=r(()=>new Set(u.value.hidden??[])),m=r(()=>u.value.settingsInNav??!1);function h(e){if(!l.value)return;let t={...u.value,...e};for(let e of Object.keys(t))t[e]===void 0&&delete t[e];t.order&&Object.keys(t.order).length===0&&delete t.order,t.collapsible&&Object.keys(t.collapsible).length===0&&delete t.collapsible,t.hidden&&t.hidden.length===0&&delete t.hidden,t.settingsInNav||delete t.settingsInNav;let n=Object.keys(t).length?t:null;l.value={...l.value,navLayout:n},a.updateUser({preferences:{navLayout:n}})}function g(e){return u.value.collapsible?.[e]??s[e]}function _(e,t){let n={...u.value.collapsible};t===s[e]?delete n[e]:n[e]=t,h({collapsible:n})}function v(e){h({settingsInNav:e})}function y(e){return p.value.has(e)}function b(e){let t=new Set(p.value);t.has(e)?t.delete(e):t.add(e),h({hidden:[...t]})}function x(e){let t={main:[...e.main],manage:[...e.manage],system:[...e.system],settings:[...e.settings]},n=u.value.order;n&&o.every(e=>{let r=n[e]??[];return r.length===t[e].length&&r.every((n,r)=>n===t[e][r])})||h({order:t})}function S(){h({order:void 0,hidden:void 0})}return{entries:d,groups:f,settingsInNav:m,isCollapsible:g,isHidden:y,toggleHidden:b,setCollapsible:_,setSettingsInNav:v,persistOrder:x,resetOrder:S}}export{a as n,l as r,o as t};
1
+ import{_ as e,x as t,yn as n}from"./api-C7-TgfI0.js";import{sn as r}from"./vendor-CFZm55ei.js";import{p as i}from"./vendor-core-DF66V0xE.js";var a=[`main`,`manage`,`system`],o=[`main`,`manage`,`system`,`settings`],s={main:!1,manage:!1,system:!0,settings:!0};function c(e){return e.meta?.navbar?.position===`top`?`main`:e.meta?.navbar?.group??`main`}function l(){let a=e(),{user:l}=i(a),u=r(()=>l.value?.navLayout??{}),d=r(()=>{let e=[];for(let r of t)r.meta?.navbar&&(r.meta.navbar.position===`top`||r.meta.navbar.group)&&n(r)&&e.push({route:r,name:r.name,labelKey:r.name.toLowerCase(),to:r.path,icon:r.meta.navbar.icon.default,activeIcon:r.meta.navbar.icon.active,defaultGroup:c(r),kind:`page`});let r=t.find(e=>e.name===`Settings`);for(let t of r?.children??[])t.meta?.settingsBar&&n(t)&&e.push({route:t,name:t.name,labelKey:t.meta.name,to:`/settings/${t.path}`,icon:t.meta.settingsBar.icon.default,activeIcon:t.meta.settingsBar.icon.active,defaultGroup:`settings`,kind:`settings`});return e}),f=r(()=>{let e=new Map(d.value.map(e=>[e.name,e])),t={main:[],manage:[],system:[],settings:[]},n=new Set;for(let r of o)for(let i of u.value.order?.[r]??[]){let a=e.get(i);a&&!n.has(i)&&(t[r].push(a),n.add(i))}for(let e of d.value)n.has(e.name)||t[e.defaultGroup].push(e);return t}),p=r(()=>new Set(u.value.hidden??[])),m=r(()=>u.value.settingsInNav??!1);function h(e){if(!l.value)return;let t={...u.value,...e};for(let e of Object.keys(t))t[e]===void 0&&delete t[e];t.order&&Object.keys(t.order).length===0&&delete t.order,t.collapsible&&Object.keys(t.collapsible).length===0&&delete t.collapsible,t.hidden&&t.hidden.length===0&&delete t.hidden,t.settingsInNav||delete t.settingsInNav;let n=Object.keys(t).length?t:null;l.value={...l.value,navLayout:n},a.updateUser({preferences:{navLayout:n}})}function g(e){return u.value.collapsible?.[e]??s[e]}function _(e,t){let n={...u.value.collapsible};t===s[e]?delete n[e]:n[e]=t,h({collapsible:n})}function v(e){h({settingsInNav:e})}function y(e){return p.value.has(e)}function b(e){let t=new Set(p.value);t.has(e)?t.delete(e):t.add(e),h({hidden:[...t]})}function x(e){let t={main:[...e.main],manage:[...e.manage],system:[...e.system],settings:[...e.settings]},n=u.value.order;n&&o.every(e=>{let r=n[e]??[];return r.length===t[e].length&&r.every((n,r)=>n===t[e][r])})||h({order:t})}function S(){h({order:void 0,hidden:void 0})}return{entries:d,groups:f,settingsInNav:m,isCollapsible:g,isHidden:y,toggleHidden:b,setCollapsible:_,setSettingsInNav:v,persistOrder:x,resetOrder:S}}export{a as n,l as r,o as t};
@@ -1 +1 @@
1
- import{lr as e}from"./vendor-CP-WYrgy.js";import{i as t}from"./intercomService-IAAXcRPG.js";var n=e({microphone:`unknown`,location:`unknown`,notifications:`unknown`});function r(){let{isElectronApp:e,electron:r}=t(),a=e;async function o(){await Promise.all([s(),c(),l()])}async function s(){if(e&&r){n.microphone=await r.invoke(`get-mic-access`)??`unknown`;return}n.microphone=await i(`microphone`)}async function c(){n.location=await i(`geolocation`)}async function l(){if(typeof Notification>`u`){n.notifications=`unknown`;return}n.notifications=Notification.permission==="default"?`prompt`:Notification.permission}async function u(t){if(t===`microphone`){if(e&&r)await r.invoke(`ask-mic-access`);else try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(e=>e.stop())}catch{}await s();return}if(t===`location`){await new Promise(e=>{navigator.geolocation.getCurrentPosition(()=>e(),()=>e(),{timeout:1e4})}),await c();return}typeof Notification<`u`&&await Notification.requestPermission(),await l()}async function d(){e&&r&&await r.invoke(`open-mic-settings`)}return{states:n,canOpenSettings:a,refresh:o,request:u,openSettings:d}}async function i(e){try{let t=await navigator.permissions.query({name:e});return t.state===`granted`?`granted`:t.state===`denied`?`denied`:`prompt`}catch{return`unknown`}}export{r as t};
1
+ import{lr as e}from"./vendor-CFZm55ei.js";import{i as t}from"./intercomService-DyUZK0Im.js";var n=e({microphone:`unknown`,location:`unknown`,notifications:`unknown`});function r(){let{isElectronApp:e,electron:r}=t(),a=e;async function o(){await Promise.all([s(),c(),l()])}async function s(){if(e&&r){n.microphone=await r.invoke(`get-mic-access`)??`unknown`;return}n.microphone=await i(`microphone`)}async function c(){n.location=await i(`geolocation`)}async function l(){if(typeof Notification>`u`){n.notifications=`unknown`;return}n.notifications=Notification.permission==="default"?`prompt`:Notification.permission}async function u(t){if(t===`microphone`){if(e&&r)await r.invoke(`ask-mic-access`);else try{(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(e=>e.stop())}catch{}await s();return}if(t===`location`){await new Promise(e=>{navigator.geolocation.getCurrentPosition(()=>e(),()=>e(),{timeout:1e4})}),await c();return}typeof Notification<`u`&&await Notification.requestPermission(),await l()}async function d(){e&&r&&await r.invoke(`open-mic-settings`)}return{states:n,canOpenSettings:a,refresh:o,request:u,openSettings:d}}async function i(e){try{let t=await navigator.permissions.query({name:e});return t.state===`granted`?`granted`:t.state===`denied`?`denied`:`prompt`}catch{return`unknown`}}export{r as t};
@@ -1 +1 @@
1
- import{lr as e,nr as t}from"./vendor-CP-WYrgy.js";import{t as n}from"./useLogsSocket-C2QUQqkZ.js";var r=2e3,i=e({});function a(){function e(e){return i[e]}function a(e){return i[e]?.status===`updating`}async function o(e,a,o){if(i[e]?.status===`updating`)return!1;i[e]={status:`updating`,lines:[],version:a};let s=i[e],c=t(!0);c.run(()=>{n({target:e,onStdout:e=>{s.lines.push(e),s.lines.length>r&&s.lines.splice(0,s.lines.length-r)}})});try{return await o(),s.status=`success`,!0}catch(e){return s.status=`error`,s.error=e?.response?.data?.message??e?.message??String(e),!1}finally{c.stop()}}return{runs:i,runOf:e,isUpdating:a,startUpdate:o}}export{a as t};
1
+ import{lr as e,nr as t}from"./vendor-CFZm55ei.js";import{t as n}from"./useLogsSocket-BprgpXs0.js";var r=2e3,i=e({});function a(){function e(e){return i[e]}function a(e){return i[e]?.status===`updating`}async function o(e,a,o){if(i[e]?.status===`updating`)return!1;i[e]={status:`updating`,lines:[],version:a};let s=i[e],c=t(!0);c.run(()=>{n({target:e,onStdout:e=>{s.lines.push(e),s.lines.length>r&&s.lines.splice(0,s.lines.length-r)}})});try{return await o(),s.status=`success`,!0}catch(e){return s.status=`error`,s.error=e?.response?.data?.message??e?.message??String(e),!1}finally{c.stop()}}return{runs:i,runOf:e,isUpdating:a,startUpdate:o}}export{a as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./esm-Cp0yoO9D.js","./vendor-capacitor--M3rv96M.js","./vendor-CP-WYrgy.js","./rolldown-runtime-C0FnF6B9.js","./dist-CKsmPF0O.js"])))=>i.map(i=>d[i]);
2
- import"./vendor-cameraui-D0VXSxSF.js";import"./api-vegsDz6n.js";import{Ht as e,dr as t}from"./vendor-CP-WYrgy.js";import{a as n}from"./intercomService-IAAXcRPG.js";import"./notifications-jTSwwN1i.js";n(`PushRegistration`);var r=`cui.push.registrations`;t(!1);var i=null;function a(){return{registerForPush:async()=>{},forgetIfThisDevice:async(e,t)=>{if(!e)return;let n=await c(e);n&&n.deviceId===t&&(await u(e),await f(e))},getSyncState:async(e,t)=>({status:`unknown`}),restoreMarker:async(e,t)=>{await c(e)||await l(e,{deviceId:t,enabledAt:Date.now()})}}}async function o(){try{let{Preferences:t}=await e(async()=>{let{Preferences:e}=await import(`./esm-Cp0yoO9D.js`);return{Preferences:e}},__vite__mapDeps([0,1,2,3]),import.meta.url),{value:n}=await t.get({key:r});return n?JSON.parse(n):{}}catch{return{}}}async function s(t){try{let{Preferences:n}=await e(async()=>{let{Preferences:e}=await import(`./esm-Cp0yoO9D.js`);return{Preferences:e}},__vite__mapDeps([0,1,2,3]),import.meta.url);await n.set({key:r,value:JSON.stringify(t)})}catch{}}async function c(e){return(await o())[e]??null}async function l(e,t){let n=await o();n[e]=t,await s(n)}async function u(e){let t=await o();t[e]&&(delete t[e],await s(t))}function d(){return i??=(async()=>{try{let{Capacitor:t,registerPlugin:n}=await e(async()=>{let{Capacitor:e,registerPlugin:t}=await import(`./dist-CKsmPF0O.js`);return{Capacitor:e,registerPlugin:t}},__vite__mapDeps([4,2,3]),import.meta.url);return t.isPluginAvailable(`PushCrypto`)?{plugin:n(`PushCrypto`)}:{plugin:null}}catch{return{plugin:null}}})(),i}async function f(e){try{let{plugin:t}=await d();await t?.deleteKey({serverId:e})}catch{}}export{a as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./esm-D7Wl3e71.js","./vendor-capacitor-NUBkdqQG.js","./vendor-CFZm55ei.js","./rolldown-runtime-C0FnF6B9.js","./dist-Ce8wBKXN.js"])))=>i.map(i=>d[i]);
2
+ import"./vendor-cameraui-DTALowLr.js";import"./api-C7-TgfI0.js";import{Ht as e,dr as t}from"./vendor-CFZm55ei.js";import{a as n}from"./intercomService-DyUZK0Im.js";import"./notifications-B8VdKX2U.js";n(`PushRegistration`);var r=`cui.push.registrations`;t(!1);var i=null;function a(){return{registerForPush:async()=>{},forgetIfThisDevice:async(e,t)=>{if(!e)return;let n=await c(e);n&&n.deviceId===t&&(await u(e),await f(e))},getSyncState:async(e,t)=>({status:`unknown`}),restoreMarker:async(e,t)=>{await c(e)||await l(e,{deviceId:t,enabledAt:Date.now()})}}}async function o(){try{let{Preferences:t}=await e(async()=>{let{Preferences:e}=await import(`./esm-D7Wl3e71.js`);return{Preferences:e}},__vite__mapDeps([0,1,2,3]),import.meta.url),{value:n}=await t.get({key:r});return n?JSON.parse(n):{}}catch{return{}}}async function s(t){try{let{Preferences:n}=await e(async()=>{let{Preferences:e}=await import(`./esm-D7Wl3e71.js`);return{Preferences:e}},__vite__mapDeps([0,1,2,3]),import.meta.url);await n.set({key:r,value:JSON.stringify(t)})}catch{}}async function c(e){return(await o())[e]??null}async function l(e,t){let n=await o();n[e]=t,await s(n)}async function u(e){let t=await o();t[e]&&(delete t[e],await s(t))}function d(){return i??=(async()=>{try{let{Capacitor:t,registerPlugin:n}=await e(async()=>{let{Capacitor:e,registerPlugin:t}=await import(`./dist-Ce8wBKXN.js`);return{Capacitor:e,registerPlugin:t}},__vite__mapDeps([4,2,3]),import.meta.url);return t.isPluginAvailable(`PushCrypto`)?{plugin:n(`PushCrypto`)}:{plugin:null}}catch{return{plugin:null}}})(),i}async function f(e){try{let{plugin:t}=await d();await t?.deleteKey({serverId:e})}catch{}}export{a as t};
@@ -1 +1 @@
1
- import{Or as e}from"./api-vegsDz6n.js";import{Xn as t,dr as n,nr as r}from"./vendor-CP-WYrgy.js";var i=n(!1),a=null,o;function s(){a||(a=r(!0),a.run(()=>{let n=e();t(n.bannerMode,e=>{e!==null&&i.value&&(clearTimeout(o),i.value=!1)})}));function n(){i.value=!0,clearTimeout(o),o=setTimeout(()=>{i.value=!1},15e3)}return{restarting:i,beginServerRestart:n}}export{s as n,i as t};
1
+ import{Or as e}from"./api-C7-TgfI0.js";import{Xn as t,dr as n,nr as r}from"./vendor-CFZm55ei.js";var i=n(!1),a=null,o;function s(){a||(a=r(!0),a.run(()=>{let n=e();t(n.bannerMode,e=>{e!==null&&i.value&&(clearTimeout(o),i.value=!1)})}));function n(){i.value=!0,clearTimeout(o),o=setTimeout(()=>{i.value=!1},15e3)}return{restarting:i,beginServerRestart:n}}export{s as n,i as t};
@@ -1 +1 @@
1
- import{hr as e}from"./api-vegsDz6n.js";import{lr as t,nr as n,sn as r}from"./vendor-CP-WYrgy.js";var i=1e4,a=t({streamStatus:{}}),o=null,s=null,c;function l(){s?.emit(`get-stream-status`)}function u(){return s||(o=n(!0),o.run(()=>{let t=e(`/camera.ui`);s=t,t.on(`stream-status`,e=>{a.streamStatus=e}),t.onReady(()=>{l()})}),c||=setInterval(l,i),s)}function d(e){let t=Object.values(e);if(t.length===0)return`idle`;let n=t.filter(e=>e===`connected`).length,r=t.filter(e=>e===`error`).length,i=t.filter(e=>e===`connecting`).length;return n===t.length?`connected`:r===t.length?`error`:i>0&&n===0&&r===0?`connecting`:n>0&&(r>0||t.some(e=>e===`idle`))?`partial`:n>0?`connected`:i>0?`connecting`:`idle`}function f(){function e(){u()}function t(){}function n(e){let t=a.streamStatus[e];return t?d(t):`idle`}function i(e){return a.streamStatus[e]}function o(e,t){return a.streamStatus[e]?.[t]??`idle`}return{streamStatus:r(()=>a.streamStatus),getCameraStatus:n,getCameraSources:i,getSourceStatus:o,connect:e,disconnect:t,refresh:l}}export{f as t};
1
+ import{hr as e}from"./api-C7-TgfI0.js";import{lr as t,nr as n,sn as r}from"./vendor-CFZm55ei.js";var i=1e4,a=t({streamStatus:{}}),o=null,s=null,c;function l(){s?.emit(`get-stream-status`)}function u(){return s||(o=n(!0),o.run(()=>{let t=e(`/camera.ui`);s=t,t.on(`stream-status`,e=>{a.streamStatus=e}),t.onReady(()=>{l()})}),c||=setInterval(l,i),s)}function d(e){let t=Object.values(e);if(t.length===0)return`idle`;let n=t.filter(e=>e===`connected`).length,r=t.filter(e=>e===`error`).length,i=t.filter(e=>e===`connecting`).length;return n===t.length?`connected`:r===t.length?`error`:i>0&&n===0&&r===0?`connecting`:n>0&&(r>0||t.some(e=>e===`idle`))?`partial`:n>0?`connected`:i>0?`connecting`:`idle`}function f(){function e(){u()}function t(){}function n(e){let t=a.streamStatus[e];return t?d(t):`idle`}function i(e){return a.streamStatus[e]}function o(e,t){return a.streamStatus[e]?.[t]??`idle`}return{streamStatus:r(()=>a.streamStatus),getCameraStatus:n,getCameraSources:i,getSourceStatus:o,connect:e,disconnect:t,refresh:l}}export{f as t};
@@ -1 +1 @@
1
- import{bi as e,mi as t}from"./vendor-cameraui-D0VXSxSF.js";import{Fn as n}from"./api-vegsDz6n.js";import{Xn as r,dr as i}from"./vendor-CP-WYrgy.js";var a=[`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`],o=[`.p-datatable`,`.no-tab-swipe`];function s(s,c,l={}){let{isTouch:u}=n(),d=[...o,...l.exclude??[]],f=i(!0);function p(e){let t=e;for(;t&&t!==s.value;){if(t.scrollWidth>t.clientWidth+1){let e=getComputedStyle(t).overflowX;if(e===`auto`||e===`scroll`)return!0}t=t.parentElement}return!1}function m(e){let t=e.target;(a.includes(t.tagName)||d.some(e=>t.closest(e))||p(t))&&(f.value=!1)}function h(){f.value=!0}let{isSwiping:g,direction:_}=u.value?e(s,{threshold:50,onSwipeStart:m,onSwipeEnd:h}):t(s,{threshold:50,onSwipeStart:m,onSwipeEnd:h});r([g,_],()=>{g.value&&f.value&&(_.value===`left`||_.value===`right`)&&c(_.value)})}export{s as t};
1
+ import{bi as e,mi as t}from"./vendor-cameraui-DTALowLr.js";import{Fn as n}from"./api-C7-TgfI0.js";import{Xn as r,dr as i}from"./vendor-CFZm55ei.js";var a=[`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`],o=[`.p-datatable`,`.no-tab-swipe`];function s(s,c,l={}){let{isTouch:u}=n(),d=[...o,...l.exclude??[]],f=i(!0);function p(e){let t=e;for(;t&&t!==s.value;){if(t.scrollWidth>t.clientWidth+1){let e=getComputedStyle(t).overflowX;if(e===`auto`||e===`scroll`)return!0}t=t.parentElement}return!1}function m(e){let t=e.target;(a.includes(t.tagName)||d.some(e=>t.closest(e))||p(t))&&(f.value=!1)}function h(){f.value=!0}let{isSwiping:g,direction:_}=u.value?e(s,{threshold:50,onSwipeStart:m,onSwipeEnd:h}):t(s,{threshold:50,onSwipeStart:m,onSwipeEnd:h});r([g,_],()=>{g.value&&f.value&&(_.value===`left`||_.value===`right`)&&c(_.value)})}export{s as t};
@@ -1 +1 @@
1
- import{jr as e}from"./api-vegsDz6n.js";import{Xn as t,sn as n}from"./vendor-CP-WYrgy.js";import{t as r}from"./config-iO2vrtak.js";`${e}`;async function i(e){}function a(){let e=new r,{data:a}=e.getConfigQuery(!0),{mutateAsync:o}=e.patchConfigQuery(),s=n(()=>a.value&&typeof a.value!=`string`?a.value:void 0),c=n(()=>s.value?.betaUpdates??!1);return t(()=>s.value?.betaUpdates,e=>{e!==void 0&&i(e)},{immediate:!0}),{isBeta:c,setBeta:async e=>{let t=s.value;t&&t.betaUpdates!==e&&await o({configData:JSON.stringify({...t,betaUpdates:e})})}}}export{a as t};
1
+ import{jr as e}from"./api-C7-TgfI0.js";import{Xn as t,sn as n}from"./vendor-CFZm55ei.js";import{t as r}from"./config-ConCokYZ.js";`${e}`;async function i(e){}function a(){let e=new r,{data:a}=e.getConfigQuery(!0),{mutateAsync:o}=e.patchConfigQuery(),s=n(()=>a.value&&typeof a.value!=`string`?a.value:void 0),c=n(()=>s.value?.betaUpdates??!1);return t(()=>s.value?.betaUpdates,e=>{e!==void 0&&i(e)},{immediate:!0}),{isBeta:c,setBeta:async e=>{let t=s.value;t&&t.betaUpdates!==e&&await o({configData:JSON.stringify({...t,betaUpdates:e})})}}}export{a as t};
@@ -1 +1 @@
1
- import{hr as e}from"./api-vegsDz6n.js";import{lr as t,nr as n,sn as r}from"./vendor-CP-WYrgy.js";var i=t({status:null}),a=null,o=null,s=new Set;function c(){return o||(a=n(!0),a.run(()=>{let t=e(`/camera.ui`);o=t,t.on(`updates-status`,e=>{i.status=e;for(let e of s)try{e()}catch{}}),t.onReady(()=>{for(let e of s)try{e()}catch{}})}),o)}function l(){function e(){c()}function t(e){return s.add(e),()=>s.delete(e)}return{status:r(()=>i.status),connect:e,onStatus:t}}export{l as t};
1
+ import{hr as e}from"./api-C7-TgfI0.js";import{lr as t,nr as n,sn as r}from"./vendor-CFZm55ei.js";var i=t({status:null}),a=null,o=null,s=new Set;function c(){return o||(a=n(!0),a.run(()=>{let t=e(`/camera.ui`);o=t,t.on(`updates-status`,e=>{i.status=e;for(let e of s)try{e()}catch{}}),t.onReady(()=>{for(let e of s)try{e()}catch{}})}),o)}function l(){function e(){c()}function t(e){return s.add(e),()=>s.delete(e)}return{status:r(()=>i.status),connect:e,onStatus:t}}export{l as t};
@@ -0,0 +1 @@
1
+ import{Cr as e}from"./api-C7-TgfI0.js";import{sn as t}from"./vendor-CFZm55ei.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};