@camera.ui/server 2.1.12 → 2.1.14-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/dist/interface/assets/{404-BDi1TzED.js → 404-CVkDpT0X.js} +1 -1
  2. package/dist/interface/assets/{About-DeHiJp3n.js → About-CUgIR2xi.js} +1 -1
  3. package/dist/interface/assets/Automation-BYRKp0AC.js +3 -0
  4. package/dist/interface/assets/{AutomationImport-B3bCE-yS.js → AutomationImport-L_OzZZgi.js} +2 -2
  5. package/dist/interface/assets/{AutomationStore-BoWd7IW9.js → AutomationStore-DaNQqJoT.js} +2 -2
  6. package/dist/interface/assets/AutomationStoreDetail-Seor4Ohh.js +2 -0
  7. package/dist/interface/assets/Automations-BMQIkpUa.js +2 -0
  8. package/dist/interface/assets/Camera-3umh2Xjc.js +2 -0
  9. package/dist/interface/assets/{CameraConsole-C8XSUr7X.js → CameraConsole-BLlgkKDp.js} +2 -2
  10. package/dist/interface/assets/Cameras-DvK8E1Vk.js +651 -0
  11. package/dist/interface/assets/{Camview-Lp3QU0de.css → Camview-DIEa8IRE.css} +1 -1
  12. package/dist/interface/assets/Camview-DSO2lWxT.js +1 -0
  13. package/dist/interface/assets/{CertificateUpload-Cg89m_cM.js → CertificateUpload-BsnlaxRS.js} +1 -1
  14. package/dist/interface/assets/{Config-BDa4dy1w.js → Config-BXj83-No.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionCameraControl-DNmRpuPG.js → ConfigActionCameraControl-BGfvT6ME.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionDelay-Reg_tEG_.js → ConfigActionDelay-D10_C6yo.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-CqRBOSa3.js → ConfigActionHttp-DL4jh9Wz.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-GWECLY4I.js → ConfigActionImageInput-DVvMUzrT.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-Di4ZTig8.js → ConfigActionMqtt-BqK3q4cC.js} +1 -1
  20. package/dist/interface/assets/ConfigActionNotification-D_H5Q68D.js +1 -0
  21. package/dist/interface/assets/{ConfigActionNotificationControl-B_p8dnc4.js → ConfigActionNotificationControl-BnTJl4dr.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-B31cj20h.js → ConfigActionOutput-udY95_rH.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-DCUhDIiJ.js → ConfigActionPlugin-C51LrkZb.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionSensor-De63wYQU.js → ConfigActionSensor-B2tFf8x6.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSnapshot-DZJDjOMT.js → ConfigActionSnapshot-BzmeByH3.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-Q3QXVMbR.js → ConfigActionVariable-BagC3lj5.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-DKonPxli.js → ConfigConditionIfElse-CQOZJ19Y.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-C_J6ERzt.js → ConfigConditionSensorState-SGYpkNP5.js} +1 -1
  29. package/dist/interface/assets/ConfigConditionSwitch-BXR6xUN8.js +1 -0
  30. package/dist/interface/assets/{ConfigConditionTime-CRDI58_P.js → ConfigConditionTime-BrEhw1R9.js} +1 -1
  31. package/dist/interface/assets/{ConfigSensorValueInput-C3ep90ds.js → ConfigSensorValueInput-DezTWtbA.js} +1 -1
  32. package/dist/interface/assets/{ConfigTriggerDetection-CbVFlyI8.js → ConfigTriggerDetection-xo0imE_3.js} +1 -1
  33. package/dist/interface/assets/ConfigTriggerGeofence-BmJpP4Ew.js +1 -0
  34. package/dist/interface/assets/{ConfigTriggerManual-7kAukUgk.js → ConfigTriggerManual-CmAdnZQK.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-DUCZZt2j.js → ConfigTriggerMqtt-F19dhVm1.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-lAiLdu1W.js → ConfigTriggerSchedule-BGci3Aed.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-DIhCfhcN.js → ConfigTriggerSensor-DSEDGB2X.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-DZu6Fp2j.js → ConfigTriggerSystem-DPy8Zir4.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-D3a5f6vl.js → ConfigTriggerWebhook-Dv0Kmwg8.js} +1 -1
  40. package/dist/interface/assets/Console-Cuh-Vc4u.js +1 -0
  41. package/dist/interface/assets/{CuiAutomationRunsDialog-CgzW_s6M.js → CuiAutomationRunsDialog-B1UeVC6Q.js} +1 -1
  42. package/dist/interface/assets/{CuiBottomSheet-C7UdIQu1.js → CuiBottomSheet-BjkDE7_9.js} +1 -1
  43. package/dist/interface/assets/CuiBottomSheet-C9G-NoMU.js +1 -0
  44. package/dist/interface/assets/CuiCameraPipCard-nrln9zp-.js +1 -0
  45. package/dist/interface/assets/CuiCameraRecordings-B7BhgPpP.css +1 -0
  46. package/dist/interface/assets/CuiCameraRecordings-HKwhFpea.js +1 -0
  47. package/dist/interface/assets/{CuiCameraShares-D3fAJNWF.js → CuiCameraShares-D-fhJCro.js} +1 -1
  48. package/dist/interface/assets/{CuiCameraTable-ApLSxeO4.js → CuiCameraTable-BTVfK-HY.js} +2 -2
  49. package/dist/interface/assets/CuiCameraTable-DGg4_c_u.js +1 -0
  50. package/dist/interface/assets/{CuiChartTable-BeEij8SL.js → CuiChartTable-DAUYP-EW.js} +1 -1
  51. package/dist/interface/assets/{CuiConsole-CMxpzZ51.js → CuiConsole-C7aZj4wK.js} +2 -2
  52. package/dist/interface/assets/{CuiDataTable-f_QVzRqq.js → CuiDataTable-1B8aaZQO.js} +1 -1
  53. package/dist/interface/assets/CuiLightControl-CSA1PYc8.js +1 -0
  54. package/dist/interface/assets/{CuiList-C3oJKyJC.js → CuiList-D-hOSNou.js} +1 -1
  55. package/dist/interface/assets/CuiPluginCard-D1Hkyiy4.js +2 -0
  56. package/dist/interface/assets/{CuiPluginCategoryChip-EJhup0nM.js → CuiPluginCategoryChip-qnn-HD6g.js} +1 -1
  57. package/dist/interface/assets/{CuiPluginOAuthButton-CbPU8trR.js → CuiPluginOAuthButton-CXextmBv.js} +2 -2
  58. package/dist/interface/assets/{CuiPluginTrustBadge-B4bxBl3A.js → CuiPluginTrustBadge-C-8MN2Qc.js} +1 -1
  59. package/dist/interface/assets/{CuiQRCode-CycvR5wz.js → CuiQRCode-D1qmU4qU.js} +1 -1
  60. package/dist/interface/assets/CuiSchema-DnHOpBg4.js +1 -0
  61. package/dist/interface/assets/{CuiTopNavbarItem-D4qP-WpK.js → CuiTopNavbarItem-Csb3O1-n.js} +1 -1
  62. package/dist/interface/assets/Faces-C0QpQxuF.js +1 -0
  63. package/dist/interface/assets/FirstSteps-BqZQovY7.js +1 -0
  64. package/dist/interface/assets/{Floorplan-Da5gt435.css → Floorplan-Bxhdg4C2.css} +1 -1
  65. package/dist/interface/assets/Floorplan-CW-W5ZkV.js +1 -0
  66. package/dist/interface/assets/Instances-VSkiqKKf.js +1 -0
  67. package/dist/interface/assets/{Logs-BBZMBN6a.js → Logs-DQFS2AUi.js} +2 -2
  68. package/dist/interface/assets/{Menu-CRLIo98F.js → Menu-COvvZ_vz.js} +1 -1
  69. package/dist/interface/assets/Metrics-cvbQzChA.js +9 -0
  70. package/dist/interface/assets/OAuthDeviceFlow-3ZC2QCAs.js +1 -0
  71. package/dist/interface/assets/Plugin-DjQd3Y9J.js +1 -0
  72. package/dist/interface/assets/{PluginConsole-D2SUwFDo.js → PluginConsole-BaUkghQD.js} +2 -2
  73. package/dist/interface/assets/PluginDetail-Ofj1hk2q.js +2 -0
  74. package/dist/interface/assets/{PluginSchema-U4q4c9ak.js → PluginSchema-f-ER7hlx.js} +1 -1
  75. package/dist/interface/assets/PluginSearch-Ce3S1HDv.js +1 -0
  76. package/dist/interface/assets/PluginSearch-D5eQsj5p.js +2 -0
  77. package/dist/interface/assets/{PluginUpdateProgress-DWcs6NlJ.js → PluginUpdateProgress-BfYNLvVX.js} +1 -1
  78. package/dist/interface/assets/Plugins-DtDN9z0k.js +1 -0
  79. package/dist/interface/assets/Recordings-CQGnTZFt.js +1 -0
  80. package/dist/interface/assets/SensorEdit-BZtiJyoI.js +1 -0
  81. package/dist/interface/assets/{SensorHistory-B16b4-Um.js → SensorHistory-BFkT3teu.js} +1 -1
  82. package/dist/interface/assets/{Sensors-BsLHVGqk.css → Sensors-CaKl4PQY.css} +1 -1
  83. package/dist/interface/assets/Sensors-DSR-AUqb.js +2 -0
  84. package/dist/interface/assets/{Settings-BOd4EPix.js → Settings-DV3JZFjc.js} +1 -1
  85. package/dist/interface/assets/SettingsAccount-Cd5JPsv2.js +1 -0
  86. package/dist/interface/assets/SettingsAccount-D4ib7Asi.js +1 -0
  87. package/dist/interface/assets/SettingsAppearance-BYsQmdyo.js +1 -0
  88. package/dist/interface/assets/{SettingsAppearance-DZGa_aiI.js → SettingsAppearance-CC6StMAi.js} +1 -1
  89. package/dist/interface/assets/{SettingsBackup-DyblUiF8.js → SettingsBackup-BcVFCbhB.js} +1 -1
  90. package/dist/interface/assets/{SettingsList-DM0yAFkS.js → SettingsList-04HiM3OT.js} +1 -1
  91. package/dist/interface/assets/SettingsMqtt-XaJdsYPn.js +1 -0
  92. package/dist/interface/assets/SettingsNotifications-CUoYMHwr.js +1 -0
  93. package/dist/interface/assets/{SettingsPermissions-w2ptf4wy.js → SettingsPermissions-gFDNSlTh.js} +1 -1
  94. package/dist/interface/assets/SettingsRecordings-Bw64UZWe.js +1 -0
  95. package/dist/interface/assets/SettingsRemote-BnFW-uT-.js +2 -0
  96. package/dist/interface/assets/{SettingsSystem-BsXkYsRC.js → SettingsSystem-Cdjg5GNY.js} +2 -2
  97. package/dist/interface/assets/{SettingsUsers-BSsmo6T0.js → SettingsUsers-DphPL78H.js} +1 -1
  98. package/dist/interface/assets/{Terminal-cU-8dVL_.js → Terminal-CrNjqzTs.js} +2 -2
  99. package/dist/interface/assets/{Updates-dw0MwgsN.js → Updates-V5B9LSD-.js} +1 -1
  100. package/dist/interface/assets/{VariableInput-JSpyezJa.js → VariableInput-n0TxKRqq.js} +1 -1
  101. package/dist/interface/assets/{VariableSuggestions-DZbWgsck.js → VariableSuggestions-C4LmaCAo.js} +1 -1
  102. package/dist/interface/assets/{VersionsHandler-C_mzsgfj.js → VersionsHandler-BPocJcb0.js} +2 -2
  103. package/dist/interface/assets/{VirtualSensorCreate-3mJ8c6Tl.js → VirtualSensorCreate-BPvbrzGS.js} +1 -1
  104. package/dist/interface/assets/Workers-DEvQNzUi.js +2 -0
  105. package/dist/interface/assets/{lightbulb-outline-BtraGBwO.js → alert-outline-DtiCgufF.js} +1 -1
  106. package/dist/interface/assets/{api-COPnjVh2.js → api-BXmkXIE8.js} +1 -1
  107. package/dist/interface/assets/api-DO5wBndX.css +2 -0
  108. package/dist/interface/assets/api-x8zXlvtm.js +4 -0
  109. package/dist/interface/assets/{auth-owqLfbdn.js → auth-BKJnreuu.js} +1 -1
  110. package/dist/interface/assets/{automations-Bql07EFx.js → automations-CVuIXlAQ.js} +1 -1
  111. package/dist/interface/assets/cameraSources-C3cl6FVD.js +1 -0
  112. package/dist/interface/assets/cloudHandoff-BZvvihwX.js +1 -0
  113. package/dist/interface/assets/{config-soN-D-nC.js → config-Sw94rZxF.js} +1 -1
  114. package/dist/interface/assets/{flowSchema-BFZ6n5Su.js → flowSchema-BOrDqdeG.js} +1 -1
  115. package/dist/interface/assets/{intercomService-Bjn0OsVT.js → intercomService-CfCIMUlA.js} +1 -1
  116. package/dist/interface/assets/main-Jl93jEZK.js +3 -0
  117. package/dist/interface/assets/{main-BF8Mg561.css → main-Qqk3RyYP.css} +1 -1
  118. package/dist/interface/assets/{mqtt-CMdU36uB.js → mqtt-BaCMJJk_.js} +1 -1
  119. package/dist/interface/assets/nodeDefinitions-a8iyp3yk.js +1 -0
  120. package/dist/interface/assets/{notifications-C_CbT9aA.js → notifications-l-x8vA4D.js} +1 -1
  121. package/dist/interface/assets/{plugins-CGDE1O2F.js → plugins-GA9v-eQx.js} +1 -1
  122. package/dist/interface/assets/{rooms-BnJo8QbU.js → rooms-DX7PBdpP.js} +1 -1
  123. package/dist/interface/assets/sensorIcons-BTgouEmX.js +1 -0
  124. package/dist/interface/assets/{sensors-Bshdwbki.js → sensors-LJkBCaMk.js} +1 -1
  125. package/dist/interface/assets/{server-CaRDiFTF.js → server-dOx3q8o1.js} +1 -1
  126. package/dist/interface/assets/theme-DgrclY58.js +1 -0
  127. package/dist/interface/assets/types-CSWXRySW.js +1 -0
  128. package/dist/interface/assets/{types-Dwu7_YVv.js → types-D19FOdYo.js} +1 -1
  129. package/dist/interface/assets/types-Yq0FH8fa.js +1 -0
  130. package/dist/interface/assets/ungrouped-B_u9a5wm.js +1 -0
  131. package/dist/interface/assets/{ungrouped-uv64nr5n.css → ungrouped-DTYy_Pud.css} +1 -1
  132. package/dist/interface/assets/{updates-DelnBMM3.js → updates-BVN6uGXy.js} +1 -1
  133. package/dist/interface/assets/{useAppVersion-DeQeb6UF.js → useAppVersion-BUDIkitU.js} +1 -1
  134. package/dist/interface/assets/useBackupRestore-CnSZNCC8.js +1 -0
  135. package/dist/interface/assets/{useCameraOptions-DgMpN00_.js → useCameraOptions-Cgb4eV2d.js} +1 -1
  136. package/dist/interface/assets/{useLogsSocket-BKPqNCOv.js → useLogsSocket-CGKtL049.js} +1 -1
  137. package/dist/interface/assets/{useNavLayout-BJhl8UVM.js → useNavLayout-Dcngcb73.js} +1 -1
  138. package/dist/interface/assets/{usePermissions-Eyt2t6_8.js → usePermissions-zJF4LCPm.js} +1 -1
  139. package/dist/interface/assets/{usePluginUpdates-wfckuNy_.js → usePluginUpdates-DP--lRxm.js} +1 -1
  140. package/dist/interface/assets/{usePushRegistration-jcfB8ujf.js → usePushRegistration-BhPBp28J.js} +1 -1
  141. package/dist/interface/assets/{useServerRestart-XnqHaTb7.js → useServerRestart-BpCDYbPH.js} +1 -1
  142. package/dist/interface/assets/{useStreamStatus-8bE5h_fQ.js → useStreamStatus-BoVMk6KT.js} +1 -1
  143. package/dist/interface/assets/{useTabSwipe-DxZfseQO.js → useTabSwipe--t-Qqa31.js} +1 -1
  144. package/dist/interface/assets/{useUpdateChannel-CjxdE3h1.js → useUpdateChannel-DAuhU-__.js} +1 -1
  145. package/dist/interface/assets/{useUpdatesSocket-DFt7_yr8.js → useUpdatesSocket-C-j3b3tU.js} +1 -1
  146. package/dist/interface/assets/{useUserOptions-DStio0f5.js → useUserOptions-CcLVC73O.js} +1 -1
  147. package/dist/interface/assets/vendor-cameraui-phsC2Mmi.js +2326 -0
  148. package/dist/interface/assets/vendor-core-C0ZWoGJD.js +1 -0
  149. package/dist/interface/assets/{vendor-primevue-DXXRO7Z5.js → vendor-primevue-nPess0JU.js} +76 -76
  150. package/dist/interface/assets/vendor-zod-CJ7LAMqQ.js +99 -0
  151. package/dist/interface/ha/404-PedrGUiq.js +60 -0
  152. package/dist/interface/ha/About-l5fkBqG7.js +55 -0
  153. package/dist/interface/ha/Automation-CaSlGjT4.js +2015 -0
  154. package/dist/interface/ha/AutomationImport-BNavtjDq.js +206 -0
  155. package/dist/interface/ha/AutomationStore-BVSW8TVt.js +335 -0
  156. package/dist/interface/ha/AutomationStoreDetail-DHZwlpz0.js +122 -0
  157. package/dist/interface/ha/Automations-CZ2jvH6d.js +437 -0
  158. package/dist/interface/ha/Camera-CggUrrPm.js +625 -0
  159. package/dist/interface/ha/CameraConsole-DpzF48TF.js +52 -0
  160. package/dist/interface/ha/Cameras-K-kQF5tG.js +1970 -0
  161. package/dist/interface/ha/Camview-zJVP7JwZ.js +1337 -0
  162. package/dist/interface/ha/CertificateUpload-DbBQ87OT.js +117 -0
  163. package/dist/interface/ha/Config-Bsud2DYI.js +356 -0
  164. package/dist/interface/ha/ConfigActionCameraControl-Czkfw_NO.js +152 -0
  165. package/dist/interface/ha/ConfigActionDelay-BHug57u7.js +61 -0
  166. package/dist/interface/ha/ConfigActionHttp-LfbxbfgG.js +134 -0
  167. package/dist/interface/ha/ConfigActionImageInput-Ce2GJzCm.js +171 -0
  168. package/dist/interface/ha/ConfigActionMqtt-KmCGcNZb.js +81 -0
  169. package/dist/interface/ha/ConfigActionNotification-DUMY_3IT.js +199 -0
  170. package/dist/interface/ha/ConfigActionNotificationControl-B9Z2i5WR.js +111 -0
  171. package/dist/interface/ha/ConfigActionOutput-CX-ZQjcs.js +98 -0
  172. package/dist/interface/ha/ConfigActionPlugin-y5PuPwdk.js +172 -0
  173. package/dist/interface/ha/ConfigActionSensor-CC39Rpxi.js +139 -0
  174. package/dist/interface/ha/ConfigActionSnapshot-CWyhx6rk.js +48 -0
  175. package/dist/interface/ha/ConfigActionVariable-BNRLCthd.js +88 -0
  176. package/dist/interface/ha/ConfigConditionIfElse-BayS5_Dr.js +124 -0
  177. package/dist/interface/ha/ConfigConditionSensorState-DLXNqL-R.js +192 -0
  178. package/dist/interface/ha/ConfigConditionSwitch-BBesQgWi.js +128 -0
  179. package/dist/interface/ha/ConfigConditionTime-aD8mk2aa.js +95 -0
  180. package/dist/interface/ha/ConfigSensorValueInput-5JzesEuD.js +169 -0
  181. package/dist/interface/ha/ConfigTriggerDetection--BcjPuyh.js +241 -0
  182. package/dist/interface/ha/ConfigTriggerGeofence-BZi5a2Yv.js +4896 -0
  183. package/dist/interface/ha/ConfigTriggerManual-ConxhgNx.js +14 -0
  184. package/dist/interface/ha/ConfigTriggerMqtt-B6C9injX.js +134 -0
  185. package/dist/interface/ha/ConfigTriggerSchedule-Vv5iNKL3.js +72 -0
  186. package/dist/interface/ha/ConfigTriggerSensor-beixHfSD.js +73 -0
  187. package/dist/interface/ha/ConfigTriggerSystem-BHDpn485.js +188 -0
  188. package/dist/interface/ha/ConfigTriggerWebhook-D9cuCU_p.js +94 -0
  189. package/dist/interface/ha/Console-CbQnrt6X.js +348 -0
  190. package/dist/interface/ha/CuiAutomationRunsDialog-CckgCRNS.js +130 -0
  191. package/dist/interface/ha/CuiBottomSheet-juhGdTsO.js +270 -0
  192. package/dist/interface/ha/CuiCameraRecordings-CLzZiXhk.js +552 -0
  193. package/dist/interface/ha/CuiCameraShares-Dzx1jZGE.js +121 -0
  194. package/dist/interface/ha/CuiCameraTable-ug0ik9N-.js +153 -0
  195. package/dist/interface/ha/CuiChartTable-7EnAA-WG.js +6784 -0
  196. package/dist/interface/ha/CuiConsole-DOnyBSL7.js +244 -0
  197. package/dist/interface/ha/CuiDataTable-Cx9GBqsV.js +8725 -0
  198. package/dist/interface/ha/CuiList-C45psxFZ.js +57 -0
  199. package/dist/interface/ha/CuiMarkdownContent-D7sCtnNQ.js +4716 -0
  200. package/dist/interface/ha/CuiPluginCard-ChLIfOms.js +769 -0
  201. package/dist/interface/ha/CuiPluginOAuthButton-B6vPOEx2.js +105 -0
  202. package/dist/interface/ha/CuiPluginTrustBadge-BvPV93D0.js +123 -0
  203. package/dist/interface/ha/CuiQRCode-Djr3z54t.js +86 -0
  204. package/dist/interface/ha/CuiSchema-dl7TXv-k.js +963 -0
  205. package/dist/interface/ha/CuiTopNavbarItem-BXoda5eM.js +141 -0
  206. package/dist/interface/ha/Faces-DnqWMGWW.js +1281 -0
  207. package/dist/interface/ha/FirstSteps-CFawb017.js +251 -0
  208. package/dist/interface/ha/Floorplan-Mv-Ootly.js +3677 -0
  209. package/dist/interface/ha/Instances-DJjZ3btI.js +680 -0
  210. package/dist/interface/ha/Logs-CLFhW1xq.js +418 -0
  211. package/dist/interface/ha/Menu-D7QTRqMJ.js +161 -0
  212. package/dist/interface/ha/Metrics-CCvFtezL.js +1330 -0
  213. package/dist/interface/ha/OAuthDeviceFlow-4YupTNsK.js +112 -0
  214. package/dist/interface/ha/Plugin-BHU0yhBa.js +1404 -0
  215. package/dist/interface/ha/PluginConsole-CNrLuFQM.js +56 -0
  216. package/dist/interface/ha/PluginDetail-Bm3X-xN4.js +230 -0
  217. package/dist/interface/ha/PluginSearch-C0be8cYD.js +475 -0
  218. package/dist/interface/ha/PluginUpdateProgress-DVvgYMLG.js +34 -0
  219. package/dist/interface/ha/Plugins-R-uz0Se-.js +705 -0
  220. package/dist/interface/ha/Recordings-DAwbihs8.js +1463 -0
  221. package/dist/interface/ha/SensorEdit-BxE1cRLR.js +1460 -0
  222. package/dist/interface/ha/SensorHistory-DUGlH2pU.js +54 -0
  223. package/dist/interface/ha/Sensors-Cax5RlPH.js +1358 -0
  224. package/dist/interface/ha/Settings-DKtlCoyz.js +218 -0
  225. package/dist/interface/ha/SettingsAccount-2e_Vjpev.js +970 -0
  226. package/dist/interface/ha/SettingsAppearance-DCm60FhX.js +220 -0
  227. package/dist/interface/ha/SettingsBackup-CiM_nNWt.js +556 -0
  228. package/dist/interface/ha/SettingsList-D4D3cmLo.js +40 -0
  229. package/dist/interface/ha/SettingsMqtt-CID4L0PD.js +526 -0
  230. package/dist/interface/ha/SettingsNotifications-DGJkhm8T.js +529 -0
  231. package/dist/interface/ha/SettingsPermissions-Cd0rtgli.js +84 -0
  232. package/dist/interface/ha/SettingsRecordings-pR4L0wgy.js +151 -0
  233. package/dist/interface/ha/SettingsRemote-CYg-LSQK.js +1810 -0
  234. package/dist/interface/ha/SettingsSystem-BeYJN1Ut.js +376 -0
  235. package/dist/interface/ha/SettingsUsers-F4CZggSR.js +379 -0
  236. package/dist/interface/ha/Terminal-iQahUx9P.js +631 -0
  237. package/dist/interface/ha/Updates-ClQ77p-o.js +356 -0
  238. package/dist/interface/ha/VariableInput-BOHBmNff.js +52 -0
  239. package/dist/interface/ha/VariableSuggestions-BE06z6SW.js +201 -0
  240. package/dist/interface/ha/VersionsHandler-Cx9u0oj8.js +211 -0
  241. package/dist/interface/ha/VirtualSensorCreate-CvSzLo4N.js +101 -0
  242. package/dist/interface/ha/Workers-CEJtdSu-.js +765 -0
  243. package/dist/interface/ha/accordion-BT2wHwK8.js +577 -0
  244. package/dist/interface/ha/account-B1xL2wxD.js +19 -0
  245. package/dist/interface/ha/ace-Dh61T4RV.js +13238 -0
  246. package/dist/interface/ha/ace.config-HyzcNHkM.js +1429 -0
  247. package/dist/interface/ha/alert-circle-CLRn5GAd.js +19 -0
  248. package/dist/interface/ha/alert-outline-CGTMAqXf.js +75 -0
  249. package/dist/interface/ha/api-BmNBy1ay.js +29 -0
  250. package/dist/interface/ha/api-CWJkvtnM.js +60866 -0
  251. package/dist/interface/ha/arrow-left-DkvcResi.js +19 -0
  252. package/dist/interface/ha/auth-X6tkVYJs.js +271 -0
  253. package/dist/interface/ha/autocomplete-L_jK3s3m.js +1373 -0
  254. package/dist/interface/ha/automationBlueprint-D1TiCF7R.js +249 -0
  255. package/dist/interface/ha/back-filled-Cxzg5vQg.js +20 -0
  256. package/dist/interface/ha/base-D_LAf3cS.js +26 -0
  257. package/dist/interface/ha/base-c1lsE5TW.js +125 -0
  258. package/dist/interface/ha/bell-ring-xrXdzNHW.js +19 -0
  259. package/dist/interface/ha/brain-DyOOk3m3.js +19 -0
  260. package/dist/interface/ha/browser-Bxx7joo_.js +1227 -0
  261. package/dist/interface/ha/browserconfig.xml +11 -0
  262. package/dist/interface/ha/button-BlYuI0Q7.js +406 -0
  263. package/dist/interface/ha/cameraui-cards.js +190 -0
  264. package/dist/interface/ha/cards-CNOyNWMA.js +13316 -0
  265. package/dist/interface/ha/cctv-Bz6BH0ns.js +19 -0
  266. package/dist/interface/ha/check-circle-D_wDxrLs.js +19 -0
  267. package/dist/interface/ha/chevron-down-P5MtUhJO.js +19 -0
  268. package/dist/interface/ha/chip-DxGABeun.js +149 -0
  269. package/dist/interface/ha/clock-outline-JxApewmA.js +19 -0
  270. package/dist/interface/ha/close-Eq3txTBS.js +19 -0
  271. package/dist/interface/ha/close-circle-C2nTtN_-.js +19 -0
  272. package/dist/interface/ha/config-E4Jkelkr.js +116 -0
  273. package/dist/interface/ha/content-copy-DpPXKtKE.js +19 -0
  274. package/dist/interface/ha/copy-C48Ur26H.js +22 -0
  275. package/dist/interface/ha/datepicker-BuvKhBWJ.js +3236 -0
  276. package/dist/interface/ha/definitions-E-sY7Cxg.js +23 -0
  277. package/dist/interface/ha/delete-D-m8mqly.js +19 -0
  278. package/dist/interface/ha/dist-B7lgvbyI.js +279 -0
  279. package/dist/interface/ha/dist-Ca9_5rzq.js +3457 -0
  280. package/dist/interface/ha/divider-jkWvVbPJ.js +110 -0
  281. package/dist/interface/ha/download-Cnr7IQKX.js +19 -0
  282. package/dist/interface/ha/esm-1sIZN4t7.js +6 -0
  283. package/dist/interface/ha/esm-6hnPZcZr.js +15 -0
  284. package/dist/interface/ha/esm-B72ViJ7F.js +5 -0
  285. package/dist/interface/ha/esm-BGlkcEes.js +156 -0
  286. package/dist/interface/ha/esm-BKPZuThK.js +5 -0
  287. package/dist/interface/ha/esm-BMx7MsZ_.js +15 -0
  288. package/dist/interface/ha/esm-CChFtwcx.js +21 -0
  289. package/dist/interface/ha/esm-CMTmAdHP.js +5 -0
  290. package/dist/interface/ha/esm-CkoEL9YX.js +7 -0
  291. package/dist/interface/ha/esm-CvxDASXR.js +23 -0
  292. package/dist/interface/ha/esm-Demxl4zQ.js +5 -0
  293. package/dist/interface/ha/esm-DiBhi9zp.js +5 -0
  294. package/dist/interface/ha/esm-XFPB9fYb.js +15 -0
  295. package/dist/interface/ha/eventLabels-B4C1_4vT.js +42 -0
  296. package/dist/interface/ha/eye-off-AdumIw0H.js +33 -0
  297. package/dist/interface/ha/eye-off-outline-DO3xfiua.js +19 -0
  298. package/dist/interface/ha/fonts/InterVariable.woff2 +0 -0
  299. package/dist/interface/ha/history-BoZc8mgf.js +19 -0
  300. package/dist/interface/ha/home-am0tRTsk.js +19 -0
  301. package/dist/interface/ha/information-outline-DIdNxPCN.js +19 -0
  302. package/dist/interface/ha/inputicon-6-vaPLbw.js +324 -0
  303. package/dist/interface/ha/inputnumber-B1Buq8Nc.js +1033 -0
  304. package/dist/interface/ha/inputtext-DGIESrd0.js +257 -0
  305. package/dist/interface/ha/intercomService-jB2mTgsn.js +1406 -0
  306. package/dist/interface/ha/message-C8U_kMBA.js +244 -0
  307. package/dist/interface/ha/minus-DKa9TXat.js +19 -0
  308. package/dist/interface/ha/minus-QyTgaT70.js +46 -0
  309. package/dist/interface/ha/mqtt-BmDCmG9h.js +56 -0
  310. package/dist/interface/ha/multiselect-BbgV_fPx.js +1492 -0
  311. package/dist/interface/ha/native-BaNeloQn.js +35 -0
  312. package/dist/interface/ha/native-C8PbNqsJ.js +29 -0
  313. package/dist/interface/ha/notifications-B51yvrGL.js +159 -0
  314. package/dist/interface/ha/og-share.png +0 -0
  315. package/dist/interface/ha/pencil-outline-BqfTDXIh.js +19 -0
  316. package/dist/interface/ha/pinia-3D39Do4a.js +6934 -0
  317. package/dist/interface/ha/platformLabels-C3d1PLg-.js +27 -0
  318. package/dist/interface/ha/plugin-DAGqBiG_.js +38 -0
  319. package/dist/interface/ha/plugins-dkWbXWVM.js +592 -0
  320. package/dist/interface/ha/plus-CNdrByQb.js +46 -0
  321. package/dist/interface/ha/plus-d_caPq5l.js +19 -0
  322. package/dist/interface/ha/progressbar-CIoPoMSe.js +95 -0
  323. package/dist/interface/ha/protocol-BB4jdtUC-K1r3LFCq.js +706 -0
  324. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1136x640.png +0 -0
  325. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1334x750.png +0 -0
  326. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1792x828.png +0 -0
  327. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2048x1536.png +0 -0
  328. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2160x1620.png +0 -0
  329. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2208x1242.png +0 -0
  330. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2224x1668.png +0 -0
  331. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2388x1668.png +0 -0
  332. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2436x1125.png +0 -0
  333. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2532x1170.png +0 -0
  334. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2556x1179.png +0 -0
  335. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2688x1242.png +0 -0
  336. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2732x2048.png +0 -0
  337. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2778x1284.png +0 -0
  338. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2796x1290.png +0 -0
  339. package/dist/interface/ha/pwa/apple-splash-landscape-light-1136x640.png +0 -0
  340. package/dist/interface/ha/pwa/apple-splash-landscape-light-1334x750.png +0 -0
  341. package/dist/interface/ha/pwa/apple-splash-landscape-light-1792x828.png +0 -0
  342. package/dist/interface/ha/pwa/apple-splash-landscape-light-2048x1536.png +0 -0
  343. package/dist/interface/ha/pwa/apple-splash-landscape-light-2160x1620.png +0 -0
  344. package/dist/interface/ha/pwa/apple-splash-landscape-light-2208x1242.png +0 -0
  345. package/dist/interface/ha/pwa/apple-splash-landscape-light-2224x1668.png +0 -0
  346. package/dist/interface/ha/pwa/apple-splash-landscape-light-2388x1668.png +0 -0
  347. package/dist/interface/ha/pwa/apple-splash-landscape-light-2436x1125.png +0 -0
  348. package/dist/interface/ha/pwa/apple-splash-landscape-light-2532x1170.png +0 -0
  349. package/dist/interface/ha/pwa/apple-splash-landscape-light-2556x1179.png +0 -0
  350. package/dist/interface/ha/pwa/apple-splash-landscape-light-2688x1242.png +0 -0
  351. package/dist/interface/ha/pwa/apple-splash-landscape-light-2732x2048.png +0 -0
  352. package/dist/interface/ha/pwa/apple-splash-landscape-light-2778x1284.png +0 -0
  353. package/dist/interface/ha/pwa/apple-splash-landscape-light-2796x1290.png +0 -0
  354. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1125x2436.png +0 -0
  355. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1170x2532.png +0 -0
  356. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1179x2556.png +0 -0
  357. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1242x2208.png +0 -0
  358. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1242x2688.png +0 -0
  359. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1284x2778.png +0 -0
  360. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1290x2796.png +0 -0
  361. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1536x2048.png +0 -0
  362. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1620x2160.png +0 -0
  363. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1668x2224.png +0 -0
  364. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1668x2388.png +0 -0
  365. package/dist/interface/ha/pwa/apple-splash-portrait-dark-2048x2732.png +0 -0
  366. package/dist/interface/ha/pwa/apple-splash-portrait-dark-640x1136.png +0 -0
  367. package/dist/interface/ha/pwa/apple-splash-portrait-dark-750x1334.png +0 -0
  368. package/dist/interface/ha/pwa/apple-splash-portrait-dark-828x1792.png +0 -0
  369. package/dist/interface/ha/pwa/apple-splash-portrait-light-1125x2436.png +0 -0
  370. package/dist/interface/ha/pwa/apple-splash-portrait-light-1170x2532.png +0 -0
  371. package/dist/interface/ha/pwa/apple-splash-portrait-light-1179x2556.png +0 -0
  372. package/dist/interface/ha/pwa/apple-splash-portrait-light-1242x2208.png +0 -0
  373. package/dist/interface/ha/pwa/apple-splash-portrait-light-1242x2688.png +0 -0
  374. package/dist/interface/ha/pwa/apple-splash-portrait-light-1284x2778.png +0 -0
  375. package/dist/interface/ha/pwa/apple-splash-portrait-light-1290x2796.png +0 -0
  376. package/dist/interface/ha/pwa/apple-splash-portrait-light-1536x2048.png +0 -0
  377. package/dist/interface/ha/pwa/apple-splash-portrait-light-1620x2160.png +0 -0
  378. package/dist/interface/ha/pwa/apple-splash-portrait-light-1668x2224.png +0 -0
  379. package/dist/interface/ha/pwa/apple-splash-portrait-light-1668x2388.png +0 -0
  380. package/dist/interface/ha/pwa/apple-splash-portrait-light-2048x2732.png +0 -0
  381. package/dist/interface/ha/pwa/apple-splash-portrait-light-640x1136.png +0 -0
  382. package/dist/interface/ha/pwa/apple-splash-portrait-light-750x1334.png +0 -0
  383. package/dist/interface/ha/pwa/apple-splash-portrait-light-828x1792.png +0 -0
  384. package/dist/interface/ha/pwa/apple-touch-icon-180x180.png +0 -0
  385. package/dist/interface/ha/pwa/favicon-16.ico +0 -0
  386. package/dist/interface/ha/pwa/favicon-32.ico +0 -0
  387. package/dist/interface/ha/pwa/favicon-48.ico +0 -0
  388. package/dist/interface/ha/pwa/favicon-64.ico +0 -0
  389. package/dist/interface/ha/pwa/logo.svg +1 -0
  390. package/dist/interface/ha/pwa/maskable-icon-1240x600.png +0 -0
  391. package/dist/interface/ha/pwa/maskable-icon-512x512.png +0 -0
  392. package/dist/interface/ha/pwa/maskable-icon-620x300.png +0 -0
  393. package/dist/interface/ha/pwa/pwa-1024x1024.png +0 -0
  394. package/dist/interface/ha/pwa/pwa-120x120.png +0 -0
  395. package/dist/interface/ha/pwa/pwa-144x144.png +0 -0
  396. package/dist/interface/ha/pwa/pwa-152x152.png +0 -0
  397. package/dist/interface/ha/pwa/pwa-167x167.png +0 -0
  398. package/dist/interface/ha/pwa/pwa-180x180.png +0 -0
  399. package/dist/interface/ha/pwa/pwa-192x192.png +0 -0
  400. package/dist/interface/ha/pwa/pwa-24x24.png +0 -0
  401. package/dist/interface/ha/pwa/pwa-300x300.png +0 -0
  402. package/dist/interface/ha/pwa/pwa-36x36.png +0 -0
  403. package/dist/interface/ha/pwa/pwa-48x48.png +0 -0
  404. package/dist/interface/ha/pwa/pwa-50x50.png +0 -0
  405. package/dist/interface/ha/pwa/pwa-64x64.png +0 -0
  406. package/dist/interface/ha/pwa/pwa-72x72.png +0 -0
  407. package/dist/interface/ha/pwa/pwa-88x88.png +0 -0
  408. package/dist/interface/ha/pwa/pwa-96x96.png +0 -0
  409. package/dist/interface/ha/radar-C7lI26j4.js +19 -0
  410. package/dist/interface/ha/refresh-BIhepekY.js +19 -0
  411. package/dist/interface/ha/ring-resize-VS4MSeBv.js +16 -0
  412. package/dist/interface/ha/ripple-BilzxWfY.js +2928 -0
  413. package/dist/interface/ha/robots.txt +2 -0
  414. package/dist/interface/ha/rolldown-runtime-CEFd7nDs.js +30 -0
  415. package/dist/interface/ha/rooms-B-FUXQ1p.js +45 -0
  416. package/dist/interface/ha/round-alt-arrow-left-bold-CWEg-ZLF.js +37 -0
  417. package/dist/interface/ha/runtime-core.esm-bundler-D8slQ3BU.js +3295 -0
  418. package/dist/interface/ha/search-CoOsbgeb.js +19 -0
  419. package/dist/interface/ha/select-DjWkRqsI.js +1382 -0
  420. package/dist/interface/ha/server-CKJKoFfg.js +239 -0
  421. package/dist/interface/ha/settings-EKkSQLzv.js +22 -0
  422. package/dist/interface/ha/source-branch-CZwSOrQA.js +19 -0
  423. package/dist/interface/ha/speeddial-Dv9txWte.js +682 -0
  424. package/dist/interface/ha/spinner-D6iUldg9.js +46 -0
  425. package/dist/interface/ha/synapse-CGrlyQDE.js +35 -0
  426. package/dist/interface/ha/tag-CXgC9OZ6.js +95 -0
  427. package/dist/interface/ha/textarea-DvLkfUX7.js +130 -0
  428. package/dist/interface/ha/tooltip-BIrD_hC8.js +277 -0
  429. package/dist/interface/ha/trash-2-C4zSCZfs.js +23 -0
  430. package/dist/interface/ha/trash-can-outline-DCqsCOd2.js +19 -0
  431. package/dist/interface/ha/trash-fill-BPsrwR8X.js +21 -0
  432. package/dist/interface/ha/types-C7MzwoQR.js +28 -0
  433. package/dist/interface/ha/types-J_J0HKlK.js +1032 -0
  434. package/dist/interface/ha/ungrouped-BpaM88Y-.js +1116 -0
  435. package/dist/interface/ha/updates-BdVmkKAa.js +341 -0
  436. package/dist/interface/ha/upload-2xJkVPZE.js +19 -0
  437. package/dist/interface/ha/upload-wQHBRZX_.js +23 -0
  438. package/dist/interface/ha/useAppVersion-DzDaOsKc.js +22 -0
  439. package/dist/interface/ha/useLogsSocket-CWUE-KXV.js +59 -0
  440. package/dist/interface/ha/useNavLayout-BqpyvD2F.js +125 -0
  441. package/dist/interface/ha/usePermissions-BIUeW4ef.js +72 -0
  442. package/dist/interface/ha/useServerRestart-0c4gA1fG.js +23 -0
  443. package/dist/interface/ha/useTabSwipe-C8LdKw23.js +45 -0
  444. package/dist/interface/ha/useUpdateChannel-CHVLthZB.js +22 -0
  445. package/dist/interface/ha/useUpdatesSocket-CaxEs511.js +34 -0
  446. package/dist/interface/ha/useUserOptions-Rk_71WAK.js +15 -0
  447. package/dist/interface/ha/utils-DYtBrGDz.js +7 -0
  448. package/dist/interface/ha/virtualscroller-s_gNqN5p.js +996 -0
  449. package/dist/interface/ha/vue-flow-background-B0Vu4-8M.js +6840 -0
  450. package/dist/interface/ha/vue-i18n-Dcb07o5U.js +2409 -0
  451. package/dist/interface/ha/web-0Kyq65na.js +78 -0
  452. package/dist/interface/ha/web-B7Dt2zZN.js +340 -0
  453. package/dist/interface/ha/web-BNdrPSpb.js +102 -0
  454. package/dist/interface/ha/web-BPBZBCtX.js +8 -0
  455. package/dist/interface/ha/web-BjKL51lK-qwJdIpM1.js +221 -0
  456. package/dist/interface/ha/web-C01i9qI1.js +57 -0
  457. package/dist/interface/ha/web-CH3JeXWa.js +211 -0
  458. package/dist/interface/ha/web-Cpm1-DVe.js +33 -0
  459. package/dist/interface/ha/web-DqRMXrnx.js +31 -0
  460. package/dist/interface/ha/web-DtVT7WYt.js +17 -0
  461. package/dist/interface/ha/web-DxJQZCiR.js +59 -0
  462. package/dist/interface/ha/web-I7Urp4AE.js +46 -0
  463. package/dist/interface/ha/web-aSaPk7kr.js +57 -0
  464. package/dist/interface/ha/web-pMey9p3Y.js +79 -0
  465. package/dist/interface/ha/xterm-B6xA6E5i.js +14833 -0
  466. package/dist/interface/ha/zoom-in-CNVB9H3D.js +41 -0
  467. package/dist/interface/index.html +29 -29
  468. package/dist/interface/sw.js +1 -1
  469. package/dist/server/package.json +9 -9
  470. package/dist/server/requirements.txt +3 -3
  471. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +9 -6
  472. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +2 -2
  473. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +4 -2
  474. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +8 -0
  475. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +4 -3
  476. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +6 -0
  477. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +17 -6
  478. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +24 -70
  479. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +46 -19
  480. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +2 -0
  481. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +65 -8
  482. package/dist/server/src/api/database/index.d.ts +1 -1
  483. package/dist/server/src/api/database/index.js +4 -32
  484. package/dist/server/src/api/database/index.js.map +1 -1
  485. package/dist/server/src/api/database/migrations/v2-1-18.d.ts +3 -0
  486. package/dist/server/src/api/database/migrations/v2-1-18.js +24 -0
  487. package/dist/server/src/api/database/migrations/v2-1-18.js.map +1 -0
  488. package/dist/server/src/api/database/record-schemas.d.ts +1 -0
  489. package/dist/server/src/api/database/types.d.ts +4 -3
  490. package/dist/server/src/api/schemas/cameras.schema.d.ts +53 -15
  491. package/dist/server/src/api/schemas/cameras.schema.js +5 -1
  492. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  493. package/dist/server/src/api/schemas/users.schema.d.ts +7 -0
  494. package/dist/server/src/api/schemas/users.schema.js +1 -1
  495. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  496. package/dist/server/src/api/services/cameras.service.js +14 -21
  497. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  498. package/dist/server/src/api/services/sensors.service.d.ts +3 -3
  499. package/dist/server/src/api/services/sensors.service.js +3 -24
  500. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  501. package/dist/server/src/api/utils/regex.d.ts +2 -0
  502. package/dist/server/src/api/utils/regex.js +2 -0
  503. package/dist/server/src/api/utils/regex.js.map +1 -1
  504. package/dist/server/src/api/websocket/nsp/sensors.d.ts +3 -1
  505. package/dist/server/src/api/websocket/nsp/sensors.js +13 -3
  506. package/dist/server/src/api/websocket/nsp/sensors.js.map +1 -1
  507. package/dist/server/src/camera/decoder/debug/detection-record.d.ts +3 -1
  508. package/dist/server/src/camera/decoder/debug/detection-record.js +6 -2
  509. package/dist/server/src/camera/decoder/debug/detection-record.js.map +1 -1
  510. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +2 -0
  511. package/dist/server/src/camera/decoder/detection-coordinator.js +44 -25
  512. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  513. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +3 -1
  514. package/dist/server/src/camera/decoder/detection-pipeline.js +3 -22
  515. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  516. package/dist/server/src/camera/decoder/event-manager.d.ts +4 -3
  517. package/dist/server/src/camera/decoder/event-manager.js +17 -5
  518. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  519. package/dist/server/src/camera/decoder/event-thumbnailer.d.ts +3 -0
  520. package/dist/server/src/camera/decoder/event-thumbnailer.js +13 -8
  521. package/dist/server/src/camera/decoder/event-thumbnailer.js.map +1 -1
  522. package/dist/server/src/camera/decoder/event-trace.d.ts +58 -0
  523. package/dist/server/src/camera/decoder/event-trace.js +118 -0
  524. package/dist/server/src/camera/decoder/event-trace.js.map +1 -0
  525. package/dist/server/src/camera/decoder/nvr-sink.d.ts +2 -0
  526. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  527. package/dist/server/src/camera/decoder/reconnect-backoff.js +1 -1
  528. package/dist/server/src/camera/decoder/reconnect-backoff.js.map +1 -1
  529. package/dist/server/src/camera/decoder/sources/analysis-source.d.ts +1 -0
  530. package/dist/server/src/camera/decoder/sources/buffered-source.d.ts +7 -1
  531. package/dist/server/src/camera/decoder/sources/buffered-source.js +27 -15
  532. package/dist/server/src/camera/decoder/sources/buffered-source.js.map +1 -1
  533. package/dist/server/src/camera/decoder/sources/frame-handle.d.ts +2 -1
  534. package/dist/server/src/camera/decoder/sources/frame-handle.js +5 -3
  535. package/dist/server/src/camera/decoder/sources/frame-handle.js.map +1 -1
  536. package/dist/server/src/camera/decoder/sources/frame-source.d.ts +1 -0
  537. package/dist/server/src/camera/decoder/sources/frame-source.js +7 -2
  538. package/dist/server/src/camera/decoder/sources/frame-source.js.map +1 -1
  539. package/dist/server/src/camera/decoder/sources/rtp-index.d.ts +9 -0
  540. package/dist/server/src/camera/decoder/sources/rtp-index.js +24 -0
  541. package/dist/server/src/camera/decoder/sources/rtp-index.js.map +1 -0
  542. package/dist/server/src/camera/decoder/worker.js +1 -0
  543. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  544. package/dist/server/src/go2rtc/types.d.ts +1 -1
  545. package/dist/server/src/go2rtc/types.js +1 -1
  546. package/dist/server/src/go2rtc/types.js.map +1 -1
  547. package/dist/server/src/plugins/runtime/node/child.js +1 -0
  548. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  549. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +3 -0
  550. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  551. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +2 -5
  552. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +95 -24
  553. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
  554. package/dist/server/src/plugins/runtime/python/child.py +1 -0
  555. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +9 -0
  556. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -1
  557. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +185 -88
  558. package/dist/server/src/plugins/runtime/python/typings.py +18 -0
  559. package/dist/server/src/rpc/interfaces/sensor.d.ts +19 -4
  560. package/dist/server/src/sensors/discovery.d.ts +1 -1
  561. package/dist/server/src/sensors/discovery.js +10 -19
  562. package/dist/server/src/sensors/discovery.js.map +1 -1
  563. package/dist/server/src/sensors/registry.d.ts +6 -2
  564. package/dist/server/src/sensors/registry.js +75 -6
  565. package/dist/server/src/sensors/registry.js.map +1 -1
  566. package/dist/server/src/utils/camera.d.ts +12 -2
  567. package/dist/server/src/utils/camera.js +27 -1
  568. package/dist/server/src/utils/camera.js.map +1 -1
  569. package/dist/server/src/workers/pairing.js +17 -8
  570. package/dist/server/src/workers/pairing.js.map +1 -1
  571. package/package.json +9 -9
  572. package/dist/interface/assets/Automation-4HPAjq1i.js +0 -3
  573. package/dist/interface/assets/AutomationStoreDetail-C2ntfGP-.js +0 -2
  574. package/dist/interface/assets/Automations-CUUq9dxs.js +0 -2
  575. package/dist/interface/assets/Camera-DmrRrgqQ.js +0 -2
  576. package/dist/interface/assets/Cameras-B-aQUuPk.js +0 -652
  577. package/dist/interface/assets/Camview-B-W5jpCR.js +0 -1
  578. package/dist/interface/assets/ConfigActionNotification-Bq28CjsJ.js +0 -1
  579. package/dist/interface/assets/ConfigConditionSwitch-DYAlj5no.js +0 -1
  580. package/dist/interface/assets/ConfigTriggerGeofence-ClKyzb-x.js +0 -1
  581. package/dist/interface/assets/Console-ctbGFtCH.js +0 -1
  582. package/dist/interface/assets/CuiBottomSheet-Bo1wUyiN.js +0 -1
  583. package/dist/interface/assets/CuiCameraPipCard-BEAE44of.js +0 -1
  584. package/dist/interface/assets/CuiCameraRecordings-BzbwSK8-.css +0 -1
  585. package/dist/interface/assets/CuiCameraRecordings-C1evIMhc.js +0 -1
  586. package/dist/interface/assets/CuiCameraTable-BAjQ8h5H.js +0 -1
  587. package/dist/interface/assets/CuiLightControl-9OhT9YYt.js +0 -1
  588. package/dist/interface/assets/CuiPluginCard-DQgVasi7.js +0 -2
  589. package/dist/interface/assets/CuiSchema-juKEra_J.js +0 -1
  590. package/dist/interface/assets/Faces-Ce3mKYc7.js +0 -1
  591. package/dist/interface/assets/FirstSteps-BBLzX2bl.js +0 -1
  592. package/dist/interface/assets/Floorplan-B7BVj65t.js +0 -1
  593. package/dist/interface/assets/Instances-4VxGT2fm.js +0 -1
  594. package/dist/interface/assets/Metrics-DudHV8Ov.js +0 -9
  595. package/dist/interface/assets/OAuthDeviceFlow-Z3Cesvs9.js +0 -1
  596. package/dist/interface/assets/Plugin-DwadariU.js +0 -1
  597. package/dist/interface/assets/PluginDetail-C_XghvQz.js +0 -2
  598. package/dist/interface/assets/PluginSearch-11dsxfvW.js +0 -1
  599. package/dist/interface/assets/PluginSearch-DgQOryM2.js +0 -2
  600. package/dist/interface/assets/Plugins-QheVcYZB.js +0 -1
  601. package/dist/interface/assets/Recordings-DwPnYsd6.js +0 -1
  602. package/dist/interface/assets/SensorEdit-C9Ejdxaz.js +0 -1
  603. package/dist/interface/assets/Sensors-D4tY50d4.js +0 -2
  604. package/dist/interface/assets/SettingsAccount-DMvvar8D.js +0 -1
  605. package/dist/interface/assets/SettingsAccount-DYCCnjWY.js +0 -1
  606. package/dist/interface/assets/SettingsAppearance-vLBhLEag.js +0 -1
  607. package/dist/interface/assets/SettingsMqtt-Cj9ywnP2.js +0 -1
  608. package/dist/interface/assets/SettingsNotifications-flx3W4Uo.js +0 -1
  609. package/dist/interface/assets/SettingsRecordings-D3b6y2SX.js +0 -1
  610. package/dist/interface/assets/SettingsRemote-o01wgKPR.js +0 -2
  611. package/dist/interface/assets/Workers-CdaYj6Ap.js +0 -2
  612. package/dist/interface/assets/alert-outline-KxFvd3i6.js +0 -1
  613. package/dist/interface/assets/api-2VPaKkqc.js +0 -2
  614. package/dist/interface/assets/api-CEbDxsSY.css +0 -2
  615. package/dist/interface/assets/cameras.schema-CnSdfqqj.js +0 -1
  616. package/dist/interface/assets/cloudHandoff-B1z5dyPD.js +0 -1
  617. package/dist/interface/assets/main-BfL5CDS8.js +0 -3
  618. package/dist/interface/assets/nodeDefinitions-D6zhuw60.js +0 -1
  619. package/dist/interface/assets/sensorIcons-FPxm3pDg.js +0 -1
  620. package/dist/interface/assets/theme-CRQoJiuY.js +0 -1
  621. package/dist/interface/assets/types-BHgaZSm2.js +0 -1
  622. package/dist/interface/assets/types-CQpPteyx.js +0 -1
  623. package/dist/interface/assets/ungrouped-BbOtmmDD.js +0 -1
  624. package/dist/interface/assets/useBackupRestore-CT1PYJDW.js +0 -1
  625. package/dist/interface/assets/vendor-cameraui-ZyqPntQ7.js +0 -2326
  626. package/dist/interface/assets/vendor-core-DN-bpg68.js +0 -1
  627. package/dist/interface/assets/vendor-zod-B0ZFM2Pr.js +0 -127
@@ -0,0 +1,1404 @@
1
+ import { m as e, p as t } from "./ripple-BilzxWfY.js";
2
+ import { A as n, B as r, D as i, Dt as a, G as o, H as s, Jt as c, M as l, N as u, Wt as d, Y as f, _t as p, d as m, f as h, ft as g, g as _, gt as ee, kt as v, l as y, lt as b, ot as x, p as S, qt as C, r as w, rt as T, u as E, ut as D, v as O, wt as k, x as A, xt as j, y as M, yt as N, z as P } from "./runtime-core.esm-bundler-D8slQ3BU.js";
3
+ import { t as F } from "./tooltip-BIrD_hC8.js";
4
+ import { t as I } from "./tag-CXgC9OZ6.js";
5
+ import { $t as te, An as L, Er as R, Jr as z, Kr as B, Lr as ne, Qt as re, W as ie, Zt as ae, bn as V, d as H, dn as U, dr as W, fn as oe, gi as se, gt as ce, kn as le, m as ue, ni as de, pn as fe, qt as pe, vr as me, xn as he, xt as ge, yr as _e } from "./api-CWJkvtnM.js";
6
+ import { A as G, b as K, i as ve, o as ye } from "./intercomService-jB2mTgsn.js";
7
+ import { B as q, C as be, H as xe, U as Se, V as Ce, W as we, r as Te, s as Ee, z as J } from "./pinia-3D39Do4a.js";
8
+ import { n as De } from "./vue-i18n-Dcb07o5U.js";
9
+ import { M as Oe, N as ke, P as Y, b as X, lt as Ae, pt as Z, ut as Q } from "./dist-Ca9_5rzq.js";
10
+ import { i as je } from "./alert-outline-CGTMAqXf.js";
11
+ import { t as Me } from "./button-BlYuI0Q7.js";
12
+ import { t as Ne } from "./inputtext-DGIESrd0.js";
13
+ import { t as Pe } from "./select-DjWkRqsI.js";
14
+ import { t as $ } from "./multiselect-BbgV_fPx.js";
15
+ import { t as Fe } from "./textarea-DvLkfUX7.js";
16
+ import { t as Ie } from "./CuiSchema-dl7TXv-k.js";
17
+ import { t as Le } from "./plugins-dkWbXWVM.js";
18
+ import { t as Re } from "./information-outline-DIdNxPCN.js";
19
+ import { t as ze } from "./close-circle-C2nTtN_-.js";
20
+ import { t as Be } from "./CuiMarkdownContent-D7sCtnNQ.js";
21
+ import { r as Ve, t as He } from "./CuiPluginCard-ChLIfOms.js";
22
+ import { u as Ue } from "./cards-CNOyNWMA.js";
23
+ import { t as We } from "./back-filled-Cxzg5vQg.js";
24
+ //#region src/components/CuiMarkdownPanel/types.ts
25
+ var Ge = {
26
+ content: null,
27
+ loading: !1,
28
+ collapsedHeight: 420
29
+ }, Ke = { class: "lg:!hidden card-title" }, qe = {
30
+ ref: "frame",
31
+ class: "flex flex-col h-full"
32
+ }, Je = { class: "flex items-center gap-3 border-color lg:border-b-[1px] lg:mb-3 lg:pb-3" }, Ye = { class: "hidden lg:block text-base font-semibold" }, Xe = {
33
+ key: 0,
34
+ class: "flex w-full h-full items-center justify-center"
35
+ }, Ze = /* @__PURE__ */ A({
36
+ __name: "CuiMarkdownPanel",
37
+ props: /*@__PURE__*/ n({
38
+ title: {},
39
+ placeholder: {},
40
+ content: {},
41
+ loading: { type: Boolean },
42
+ collapsedHeight: {}
43
+ }, Ge),
44
+ setup(e) {
45
+ let t = e, n = T("frame"), r = T("body"), i = j(!1), a = j(!1), o = j(t.collapsedHeight), l = y(() => !t.loading && (i.value || a.value));
46
+ function d() {
47
+ let e = n.value, i = r.value;
48
+ if (!e || !i) return;
49
+ let a = Math.round(e.getBoundingClientRect().bottom - i.getBoundingClientRect().top), s = Math.max(t.collapsedHeight, a);
50
+ Math.abs(s - o.value) > 2 && (o.value = s);
51
+ }
52
+ function f() {
53
+ if (i.value) return;
54
+ d();
55
+ let e = r.value;
56
+ a.value = !!e && e.scrollHeight > e.clientHeight + 1;
57
+ }
58
+ return K(r, "load", f, { capture: !0 }), G(n, f), G(r, f), x([() => t.content, () => t.loading], () => u(f)), P(() => u(f)), (t, n) => {
59
+ let r = V, a = he, u = Me, d = _e, f = Be, p = ve, g = F;
60
+ return s(), S("div", null, [E("span", Ke, c(e.title), 1), M(p, { class: "cui-card !h-auto lg:!h-full" }, {
61
+ content: b(() => [E("div", qe, [E("div", Je, [E("h3", Ye, c(e.title), 1), v(l) ? D((s(), m(u, {
62
+ key: 0,
63
+ severity: "secondary",
64
+ text: "",
65
+ class: "cui-button ml-auto p-1",
66
+ onClick: n[0] ||= (e) => i.value = !v(i)
67
+ }, {
68
+ icon: b(() => [v(i) ? (s(), m(r, {
69
+ key: 0,
70
+ class: "w-[18px] h-[18px]"
71
+ })) : (s(), m(a, {
72
+ key: 1,
73
+ class: "w-[18px] h-[18px]"
74
+ }))]),
75
+ _: 1
76
+ })), [[
77
+ g,
78
+ { value: v(i) ? t.$t("components.form.button.collapse") : t.$t("components.form.button.expand") },
79
+ void 0,
80
+ { left: !0 }
81
+ ]]) : h("", !0)]), e.loading ? (s(), S("div", Xe, [M(d, {
82
+ class: "w-[30px] h-[30px] m-0",
83
+ "stroke-width": "5"
84
+ })])) : (s(), S("div", {
85
+ key: 1,
86
+ ref: "body",
87
+ class: "overflow-y-auto",
88
+ style: C(v(i) ? void 0 : { maxHeight: `${v(o)}px` })
89
+ }, [M(f, { content: e.content || e.placeholder }, null, 8, ["content"])], 4))], 512)]),
90
+ _: 1
91
+ })]);
92
+ };
93
+ }
94
+ }), Qe = { class: "text-base font-semibold border-b-[1px] border-color mb-3 pb-3" }, $e = { class: "flex flex-col gap-4" }, et = { class: "flex flex-col field-gap" }, tt = { class: "cui-label" }, nt = {
95
+ key: 0,
96
+ class: "text-red-500 text-sm"
97
+ }, rt = { class: "flex flex-col field-gap" }, it = { class: "cui-label" }, at = { class: "flex flex-col field-gap" }, ot = { class: "cui-label" }, st = { class: "flex flex-col field-gap" }, ct = { class: "cui-label" }, lt = { class: "flex flex-col field-gap" }, ut = { class: "cui-label" }, dt = { class: "flex flex-col field-gap" }, ft = { class: "cui-label" }, pt = { class: "flex flex-col field-gap" }, mt = { class: "cui-label" }, ht = { class: "flex flex-col field-gap" }, gt = { class: "cui-label" }, _t = { class: "mt-8" }, vt = { class: "text-base font-semibold border-b-[1px] border-color mb-3 pb-3" }, yt = {
98
+ key: 0,
99
+ class: "flex items-center justify-center w-full py-4"
100
+ }, bt = {
101
+ key: 1,
102
+ class: "flex items-center justify-center text-sm text-muted py-4 text-center"
103
+ }, xt = {
104
+ key: 2,
105
+ class: "flex flex-col field-gap"
106
+ }, St = { class: "text-xs text-muted" }, Ct = {
107
+ key: 0,
108
+ class: "mt-8"
109
+ }, wt = { class: "text-base font-semibold border-b-[1px] border-color mb-3 pb-3" }, Tt = /* @__PURE__ */ A({
110
+ __name: "CuiNotificationInterface",
111
+ props: { pluginName: {} },
112
+ setup(e) {
113
+ let t = e, n = ye(), { t: r } = De(), i = se(), l = ue(), { user: u } = Te(l), { pluginName: d } = a(t), { plugin: f } = Oe(d), p = y(() => Object.values(Ae).map((e) => ({
114
+ label: r(`components.notification_interface.severity_${e}`),
115
+ value: e
116
+ }))), m = N({
117
+ title: "Test notification",
118
+ subtitle: "",
119
+ body: "This is a test notification from camera.ui",
120
+ severity: Ae.Info,
121
+ tag: "",
122
+ imageUrl: "",
123
+ deepLink: ""
124
+ }), g = j([]), _ = j(!1), C = j(!1), T = k([]), D = j(!1), O = j([]), A = k(), P = j(!1), F = y(() => T.value.map((e) => ({
125
+ id: e.id,
126
+ label: e.name
127
+ })));
128
+ async function I() {
129
+ if (!(!f.value || !u.value?._id)) {
130
+ D.value = !0;
131
+ try {
132
+ let e = W(void 0, "admin") ? [] : [u.value._id];
133
+ T.value = await f.value.getDevices?.(e) ?? [];
134
+ } catch (e) {
135
+ n.error("Failed to load notifier devices:", e), T.value = [];
136
+ } finally {
137
+ D.value = !1;
138
+ }
139
+ }
140
+ }
141
+ async function te() {
142
+ if (f.value) {
143
+ P.value = !0;
144
+ try {
145
+ A.value = await f.value.notificationSettings?.();
146
+ } catch (e) {
147
+ n.error("Failed to load notification settings schema:", e), A.value = void 0;
148
+ } finally {
149
+ P.value = !1;
150
+ }
151
+ }
152
+ }
153
+ function L() {
154
+ g.value.push({
155
+ key: "",
156
+ value: ""
157
+ });
158
+ }
159
+ function R(e) {
160
+ g.value.splice(e, 1);
161
+ }
162
+ function z() {
163
+ let e = {};
164
+ for (let t of g.value) t.key.trim() && (e[t.key.trim()] = t.value);
165
+ return {
166
+ title: m.title.trim(),
167
+ subtitle: m.subtitle.trim() || void 0,
168
+ body: m.body.trim() || void 0,
169
+ severity: m.severity,
170
+ tag: m.tag.trim() || void 0,
171
+ imageUrl: m.imageUrl.trim() || void 0,
172
+ deepLink: m.deepLink.trim() || void 0,
173
+ data: Object.keys(e).length ? e : void 0
174
+ };
175
+ }
176
+ async function B() {
177
+ let e = f.value;
178
+ if (!(!e || C.value)) {
179
+ if (!m.title.trim()) {
180
+ _.value = !0;
181
+ return;
182
+ }
183
+ C.value = !0;
184
+ try {
185
+ let t = z(), n = O.value.length ? O.value : T.value.map((e) => e.id);
186
+ await e.sendNotification?.(n, t), i.add({
187
+ severity: "success",
188
+ detail: r("components.notification_interface.sent"),
189
+ life: 3e3
190
+ });
191
+ } catch (e) {
192
+ i.add({
193
+ severity: "error",
194
+ detail: e,
195
+ life: 3e3
196
+ });
197
+ } finally {
198
+ C.value = !1;
199
+ }
200
+ }
201
+ }
202
+ return x(f, (e) => {
203
+ e && (I(), te());
204
+ }, { immediate: !0 }), (e, t) => {
205
+ let n = Ne, r = Fe, i = Pe, a = ze, l = Me, u = Ue, d = _e, y = $, x = Ie;
206
+ return s(), S("div", null, [
207
+ E("h3", Qe, c(e.$t("components.notification_interface.template")), 1),
208
+ E("div", $e, [
209
+ E("div", et, [
210
+ E("label", tt, c(e.$t("components.notification_interface.title")), 1),
211
+ M(n, {
212
+ modelValue: v(m).title,
213
+ "onUpdate:modelValue": [t[0] ||= (e) => v(m).title = e, t[1] ||= (e) => _.value = !1],
214
+ placeholder: e.$t("components.notification_interface.title"),
215
+ invalid: v(_),
216
+ class: "w-full"
217
+ }, null, 8, [
218
+ "modelValue",
219
+ "placeholder",
220
+ "invalid"
221
+ ]),
222
+ v(_) ? (s(), S("p", nt, c(e.$t("components.notification_interface.title_required")), 1)) : h("", !0)
223
+ ]),
224
+ E("div", rt, [E("label", it, c(e.$t("components.notification_interface.subtitle")), 1), M(n, {
225
+ modelValue: v(m).subtitle,
226
+ "onUpdate:modelValue": t[2] ||= (e) => v(m).subtitle = e,
227
+ placeholder: e.$t("components.notification_interface.subtitle"),
228
+ class: "w-full"
229
+ }, null, 8, ["modelValue", "placeholder"])]),
230
+ E("div", at, [E("label", ot, c(e.$t("components.notification_interface.body")), 1), M(r, {
231
+ modelValue: v(m).body,
232
+ "onUpdate:modelValue": t[3] ||= (e) => v(m).body = e,
233
+ placeholder: e.$t("components.notification_interface.body"),
234
+ rows: "3",
235
+ class: "w-full"
236
+ }, null, 8, ["modelValue", "placeholder"])]),
237
+ E("div", st, [E("label", ct, c(e.$t("components.notification_interface.severity")), 1), M(i, {
238
+ modelValue: v(m).severity,
239
+ "onUpdate:modelValue": t[4] ||= (e) => v(m).severity = e,
240
+ options: v(p),
241
+ "option-label": "label",
242
+ "option-value": "value",
243
+ class: "w-full"
244
+ }, null, 8, ["modelValue", "options"])]),
245
+ E("div", lt, [E("label", ut, c(e.$t("components.notification_interface.tag")), 1), M(n, {
246
+ modelValue: v(m).tag,
247
+ "onUpdate:modelValue": t[5] ||= (e) => v(m).tag = e,
248
+ placeholder: "motion:cam-1",
249
+ class: "w-full"
250
+ }, null, 8, ["modelValue"])]),
251
+ E("div", dt, [E("label", ft, c(e.$t("components.notification_interface.image_url")), 1), M(n, {
252
+ modelValue: v(m).imageUrl,
253
+ "onUpdate:modelValue": t[6] ||= (e) => v(m).imageUrl = e,
254
+ placeholder: "https://…",
255
+ class: "w-full"
256
+ }, null, 8, ["modelValue"])]),
257
+ E("div", pt, [E("label", mt, c(e.$t("components.notification_interface.deep_link")), 1), M(n, {
258
+ modelValue: v(m).deepLink,
259
+ "onUpdate:modelValue": t[7] ||= (e) => v(m).deepLink = e,
260
+ placeholder: "/cameras/cam-1",
261
+ class: "w-full"
262
+ }, null, 8, ["modelValue"])]),
263
+ E("div", ht, [
264
+ E("label", gt, c(e.$t("components.notification_interface.data")), 1),
265
+ (s(!0), S(w, null, o(v(g), (t, r) => (s(), S("div", {
266
+ key: r,
267
+ class: "flex gap-2 items-center"
268
+ }, [
269
+ M(n, {
270
+ modelValue: t.key,
271
+ "onUpdate:modelValue": (e) => t.key = e,
272
+ placeholder: e.$t("components.notification_interface.data_key"),
273
+ class: "flex-1 min-w-0"
274
+ }, null, 8, [
275
+ "modelValue",
276
+ "onUpdate:modelValue",
277
+ "placeholder"
278
+ ]),
279
+ M(n, {
280
+ modelValue: t.value,
281
+ "onUpdate:modelValue": (e) => t.value = e,
282
+ placeholder: e.$t("components.notification_interface.data_value"),
283
+ class: "flex-1 min-w-0"
284
+ }, null, 8, [
285
+ "modelValue",
286
+ "onUpdate:modelValue",
287
+ "placeholder"
288
+ ]),
289
+ M(l, {
290
+ text: "",
291
+ rounded: "",
292
+ severity: "danger",
293
+ class: "cui-icon-md shrink-0",
294
+ onClick: (e) => R(r)
295
+ }, {
296
+ icon: b(() => [M(a, {
297
+ width: "100%",
298
+ height: "100%"
299
+ })]),
300
+ _: 1
301
+ }, 8, ["onClick"])
302
+ ]))), 128)),
303
+ M(l, {
304
+ severity: "secondary",
305
+ outlined: "",
306
+ fluid: "",
307
+ class: "cui-button-medium",
308
+ label: e.$t("components.notification_interface.add_data"),
309
+ onClick: L
310
+ }, {
311
+ icon: b(() => [M(u, { class: "w-4 h-4" })]),
312
+ _: 1
313
+ }, 8, ["label"])
314
+ ])
315
+ ]),
316
+ E("div", _t, [E("h3", vt, c(e.$t("components.notification_interface.targets")), 1), v(D) ? (s(), S("div", yt, [M(d, {
317
+ class: "w-[24px] h-[24px] m-0",
318
+ "stroke-width": "5"
319
+ })])) : v(F).length ? (s(), S("div", xt, [E("span", St, c(e.$t("components.notification_interface.targets_hint")), 1), M(y, {
320
+ modelValue: v(O),
321
+ "onUpdate:modelValue": t[8] ||= (e) => ee(O) ? O.value = e : null,
322
+ options: v(F),
323
+ "option-label": "label",
324
+ "option-value": "id",
325
+ placeholder: e.$t("components.notification_interface.all_devices"),
326
+ display: "chip",
327
+ filter: "",
328
+ class: "w-full"
329
+ }, null, 8, [
330
+ "modelValue",
331
+ "options",
332
+ "placeholder"
333
+ ])])) : (s(), S("div", bt, c(e.$t("components.notification_interface.no_devices")), 1))]),
334
+ v(A)?.length ? (s(), S("div", Ct, [E("h3", wt, c(e.$t("components.notification_interface.settings")), 1), M(x, {
335
+ "schema-form": {
336
+ schema: v(A),
337
+ config: {}
338
+ },
339
+ loading: v(P)
340
+ }, null, 8, ["schema-form", "loading"])])) : h("", !0),
341
+ M(l, {
342
+ fluid: "",
343
+ class: "mt-8 cui-button-medium",
344
+ severity: "success",
345
+ loading: v(C),
346
+ disabled: !v(f) || v(C),
347
+ label: e.$t("components.notification_interface.send_test"),
348
+ onClick: B
349
+ }, null, 8, [
350
+ "loading",
351
+ "disabled",
352
+ "label"
353
+ ])
354
+ ]);
355
+ };
356
+ }
357
+ }), Et = { class: "mb-4 rounded-xl overflow-hidden w-fit mx-auto" }, Dt = ["src"], Ot = { class: "text-sm text-muted mb-4" }, kt = {
358
+ key: 0,
359
+ class: "ml-1"
360
+ }, At = { class: "flex gap-2 mb-4" }, jt = {
361
+ key: 0,
362
+ class: "flex flex-col gap-2"
363
+ }, Mt = { class: "text-sm truncate flex-1 mr-3" }, Nt = { class: "flex items-center gap-2 shrink-0" }, Pt = /* @__PURE__ */ A({
364
+ __name: "PluginClipInterface",
365
+ props: {
366
+ src: {},
367
+ response: {},
368
+ onTextSearch: { type: Function }
369
+ },
370
+ setup(e, { expose: n }) {
371
+ let r = e, i = ye(), a = j(""), l = j(!1), u = j([]);
372
+ function f(e) {
373
+ let [t, n] = r.response.scoreBand ?? [0, 0];
374
+ return n <= t ? 0 : Math.max(0, Math.min(1, (e - t) / (n - t)));
375
+ }
376
+ async function p() {
377
+ let e = a.value.trim();
378
+ if (!(!e || l.value)) {
379
+ l.value = !0;
380
+ try {
381
+ let { score: t } = await r.onTextSearch(e);
382
+ u.value.unshift({
383
+ query: e,
384
+ rawScore: t,
385
+ displayScore: f(t)
386
+ }), a.value = "";
387
+ } catch (e) {
388
+ i.error("CLIP text search failed:", e);
389
+ } finally {
390
+ l.value = !1;
391
+ }
392
+ }
393
+ }
394
+ return n({}), (n, r) => {
395
+ let i = Ne, f = Me, m = I;
396
+ return s(), S("div", null, [
397
+ E("div", Et, [E("img", {
398
+ src: e.src,
399
+ alt: "CLIP test image",
400
+ class: "max-w-full max-h-[50vh] w-auto object-contain"
401
+ }, null, 8, Dt)]),
402
+ E("div", Ot, [O(c(e.response.embeddings.length) + " embedding(s), " + c(e.response.embeddings[0]?.embedding?.length ?? 0) + "-dim ", 1), e.response.embeddingModel ? (s(), S("span", kt, "(" + c(e.response.embeddingModel) + ")", 1)) : h("", !0)]),
403
+ E("div", At, [M(i, {
404
+ modelValue: v(a),
405
+ "onUpdate:modelValue": r[0] ||= (e) => ee(a) ? a.value = e : null,
406
+ class: "flex-1",
407
+ placeholder: n.$t("components.clip_interface.enter_query"),
408
+ onKeyup: t(p, ["enter"])
409
+ }, null, 8, ["modelValue", "placeholder"]), M(f, {
410
+ class: "cui-button-medium",
411
+ label: n.$t("components.clip_interface.search"),
412
+ loading: v(l),
413
+ onClick: p
414
+ }, null, 8, ["label", "loading"])]),
415
+ v(u).length ? (s(), S("div", jt, [(s(!0), S(w, null, o(v(u), (e, t) => (s(), S("div", {
416
+ key: t,
417
+ class: "flex items-center justify-between p-3 rounded-lg content-background"
418
+ }, [E("span", Mt, c(e.query), 1), E("div", Nt, [E("div", { class: d(["text-sm font-medium", e.displayScore >= .5 ? "text-green-500" : e.displayScore >= .25 ? "text-yellow-500" : "text-red-400"]) }, c((e.displayScore * 100).toFixed(0)) + "% ", 3), M(m, {
419
+ value: e.displayScore >= .5 ? "Match" : e.displayScore >= .25 ? "Possible" : "No match",
420
+ severity: e.displayScore >= .5 ? "success" : e.displayScore >= .25 ? "warn" : "danger",
421
+ class: "text-xs"
422
+ }, null, 8, ["value", "severity"])])]))), 128))])) : h("", !0)
423
+ ]);
424
+ };
425
+ }
426
+ }), Ft = /* @__PURE__ */ A({
427
+ __name: "PluginMotionInterface",
428
+ props: { response: {} },
429
+ setup(e) {
430
+ let { response: t } = a(e), n = T("videoPlayerRef");
431
+ return P(() => {
432
+ if (n.value) {
433
+ let e = new Blob([t.value.videoData], { type: "video/mp4" });
434
+ n.value.src = URL.createObjectURL(e), n.value.load();
435
+ }
436
+ }), (e, t) => (s(), S("div", null, [E("video", {
437
+ ref_key: "videoPlayerRef",
438
+ ref: n,
439
+ controls: "",
440
+ class: "max-w-full max-h-[60vh] w-auto mx-auto"
441
+ }, "Your browser does not support the video tag.", 512)]));
442
+ }
443
+ }), It = { class: "mb-5 flex justify-center" }, Lt = { class: "relative w-fit" }, Rt = ["src"], zt = /* @__PURE__ */ A({
444
+ __name: "PluginObjectInterface",
445
+ props: {
446
+ src: {},
447
+ response: {}
448
+ },
449
+ setup(e) {
450
+ let { response: t, src: n } = a(e), r = y(() => t.value.detections);
451
+ return (e, t) => {
452
+ let i = fe;
453
+ return s(), S("div", It, [E("div", Lt, [M(i, { detections: v(r) }, null, 8, ["detections"]), E("img", {
454
+ src: v(n),
455
+ alt: "Preview",
456
+ class: "max-w-full max-h-[60vh] w-auto"
457
+ }, null, 8, Rt)])]);
458
+ };
459
+ }
460
+ }), Bt = {
461
+ key: 0,
462
+ class: "w-full"
463
+ }, Vt = { class: "flex flex-col justify-center items-center mb-5" }, Ht = {
464
+ for: "restoreInput",
465
+ class: "cursor-pointer text-center text-sm"
466
+ }, Ut = ["accept"], Wt = {
467
+ key: 0,
468
+ class: "text-red-500 text-sm"
469
+ }, Gt = {
470
+ key: 1,
471
+ class: "w-full flex flex-col items-center justify-center"
472
+ }, Kt = {
473
+ key: 0,
474
+ class: "relative mb-4"
475
+ }, qt = ["src"], Jt = {
476
+ key: 1,
477
+ class: "relative mb-4 w-full"
478
+ }, Yt = {
479
+ key: 2,
480
+ class: "relative mb-4 w-full"
481
+ }, Xt = ["src", "type"], Zt = { class: "flex items-center justify-center" }, Qt = { class: "mx-2" }, $t = { class: "text-muted" }, en = { class: "flex items-center justify-center mt-2 text-xs text-muted" }, tn = { class: "mt-10" }, nn = { class: "text-base font-semibold border-b-[1px] border-color mb-3 pb-3" }, rn = {
482
+ key: 0,
483
+ class: "flex items-center justify-center text-sm text-muted mt-5"
484
+ }, an = /* @__PURE__ */ A({
485
+ __name: "CuiDetectionInterface",
486
+ props: {
487
+ type: {},
488
+ pluginName: {}
489
+ },
490
+ emits: ["update:file", "update:metadata"],
491
+ setup(t, { emit: n }) {
492
+ let r = {
493
+ motionDetection: "drop_or_select_video_to_detect_motion",
494
+ audioDetection: "drop_or_select_audio_to_detect",
495
+ objectDetection: "drop_or_select_image_to_detect_objects",
496
+ faceDetection: "drop_or_select_image_to_detect_faces",
497
+ licensePlateDetection: "drop_or_select_image_to_detect_license_plates",
498
+ classifierDetection: "drop_or_select_image_to_classify",
499
+ clipDetection: "drop_or_select_image_for_semantic_search"
500
+ }, i = t, o = n, l = ye(), { t: f } = De(), p = se(), g = ce(), { type: _, pluginName: ee } = a(i), { plugin: C, isLoading: w } = Oe(ee), D = T("fileInputRef"), A = T("videoPlayerRef"), N = T("audioPlayerRef"), P = k([]), F = j(!1), I = j(!1), te = j(!1), L = j(!1), R = j(""), z = j(!1), B = j(), ne = j(!0), re = k(), ie = j(!1), ae = y(() => ie.value || w.value || z.value), V = y(() => r[_.value]), H = y(() => {
501
+ switch (_.value) {
502
+ case "objectDetection":
503
+ case "faceDetection":
504
+ case "licensePlateDetection":
505
+ case "classifierDetection":
506
+ case "clipDetection": return "image";
507
+ case "motionDetection": return "video";
508
+ case "audioDetection": return "audio";
509
+ default: return "image";
510
+ }
511
+ }), U = y(() => {
512
+ switch (H.value) {
513
+ case "image": return Ce;
514
+ case "video": return q;
515
+ case "audio": return J;
516
+ default: return [];
517
+ }
518
+ }), W = y(() => {
519
+ switch (H.value) {
520
+ case "image": return be;
521
+ case "video": return Se;
522
+ case "audio": return xe;
523
+ default: return 0;
524
+ }
525
+ }), oe = y(() => U.value.join(","));
526
+ async function le() {
527
+ if (C.value) {
528
+ ie.value = !0;
529
+ try {
530
+ let e;
531
+ switch (_.value) {
532
+ case "motionDetection":
533
+ e = await C.value.motionDetectionSettings?.();
534
+ break;
535
+ case "objectDetection":
536
+ e = await C.value.objectDetectionSettings?.();
537
+ break;
538
+ case "audioDetection":
539
+ e = await C.value.audioDetectionSettings?.();
540
+ break;
541
+ case "faceDetection":
542
+ e = await C.value.faceDetectionSettings?.();
543
+ break;
544
+ case "licensePlateDetection":
545
+ e = await C.value.licensePlateDetectionSettings?.();
546
+ break;
547
+ case "classifierDetection":
548
+ e = await C.value.classifierDetectionSettings?.();
549
+ break;
550
+ case "clipDetection": e = await C.value.clipSettings?.();
551
+ }
552
+ re.value = e;
553
+ } catch (e) {
554
+ l.error("Failed to load interface schema:", e), re.value = void 0;
555
+ } finally {
556
+ ie.value = !1;
557
+ }
558
+ }
559
+ }
560
+ function ue(e) {
561
+ let t = P.value.findIndex((t) => t.name === e);
562
+ t > -1 && (P.value.splice(t, 1), pe(), R.value = "", H.value === "video" && A.value && (A.value.src = ""), B.value = void 0, o("update:file", null), o("update:metadata", null));
563
+ }
564
+ function de(e) {
565
+ if (F.value = !1, I.value = !1, L.value = !1, P.value = [], e.dataTransfer) {
566
+ if (e.dataTransfer.files.length > 1) I.value = !0;
567
+ else {
568
+ let t = e.dataTransfer.files[0];
569
+ (U.value.length === 0 || U.value.includes(t.type)) && t.size <= W.value ? (P.value.push(t), u(() => {
570
+ me(t);
571
+ })) : t.size > W.value ? L.value = !0 : I.value = !0;
572
+ }
573
+ }
574
+ }
575
+ function fe(e) {
576
+ I.value = !1, L.value = !1, P.value = [];
577
+ let t = e.target;
578
+ if (t && t.files) {
579
+ if (t.files?.length > 1) I.value = !0;
580
+ else if (t.files.length === 1) {
581
+ let e = t.files[0], n = U.value.length === 0 || U.value.includes(e.type);
582
+ e.size <= W.value && n ? (P.value.push(e), u(() => {
583
+ me(e);
584
+ })) : e.size > W.value ? L.value = !0 : I.value = !0;
585
+ }
586
+ }
587
+ }
588
+ function pe() {
589
+ D.value && (D.value.value = "");
590
+ }
591
+ function me(e) {
592
+ z.value = !0;
593
+ let t = URL.createObjectURL(e);
594
+ switch (H.value) {
595
+ case "image":
596
+ he(e, t);
597
+ break;
598
+ case "video":
599
+ ge(e, t);
600
+ break;
601
+ case "audio": _e(e, t);
602
+ }
603
+ }
604
+ function he(e, t) {
605
+ let n = new Image();
606
+ n.src = t, n.onload = () => {
607
+ R.value = n.src;
608
+ let t = {
609
+ width: n.width,
610
+ height: n.height
611
+ };
612
+ B.value = t, o("update:metadata", t), o("update:file", e), z.value = !1;
613
+ };
614
+ }
615
+ function ge(e, t) {
616
+ A.value && (A.value.src = t, A.value.load(), A.value.onloadeddata = () => {
617
+ o("update:file", e), z.value = !1;
618
+ });
619
+ }
620
+ function _e(e, t) {
621
+ R.value = t;
622
+ let n = new Audio();
623
+ n.src = t, n.onloadedmetadata = () => {
624
+ let t = { mimeType: e.type };
625
+ B.value = t, o("update:metadata", t), o("update:file", e), z.value = !1;
626
+ };
627
+ }
628
+ function G(e) {
629
+ return e < 1024 ? e + " bytes" : e < 1048576 ? (e / 1024).toFixed(1) + " KB" : (e / 1048576).toFixed(1) + " MB";
630
+ }
631
+ function K(e, t) {
632
+ let n = 0, r = 0, i = 0;
633
+ for (let a = 0; a < e.length; a++) n += e[a] * t[a], r += e[a] * e[a], i += t[a] * t[a];
634
+ return r && i ? n / (Math.sqrt(r) * Math.sqrt(i)) : 0;
635
+ }
636
+ async function ve(e) {
637
+ if (!P.value.length) {
638
+ te.value = !0;
639
+ return;
640
+ }
641
+ if (!C.value) {
642
+ l.error("Plugin not connected");
643
+ return;
644
+ }
645
+ z.value = !0;
646
+ try {
647
+ let t = await P.value[0].arrayBuffer();
648
+ if (_.value === "audioDetection") {
649
+ let n = await C.value.testAudioDetection?.(new Uint8Array(t), B.value, e);
650
+ if (!n) {
651
+ l.warn("No audio detection interface available");
652
+ return;
653
+ }
654
+ if (n.detected && n.detections?.length) {
655
+ let e = n.detections.map((e) => `${e.label} (${Math.round(e.confidence * 100)}%)`).join(", "), t = n.decibels == null ? "" : ` | ${n.decibels.toFixed(1)} dBFS`;
656
+ p.add({
657
+ severity: "success",
658
+ detail: `${e}${t}`,
659
+ life: 3e3
660
+ });
661
+ } else p.add({
662
+ severity: "info",
663
+ detail: f("components.detection_interface.audio_not_detected"),
664
+ life: 3e3
665
+ });
666
+ } else if (_.value === "motionDetection") {
667
+ let n = await C.value.testMotionDetection?.(new Uint8Array(t), e);
668
+ if (!n) {
669
+ l.warn("No motion detection interface available");
670
+ return;
671
+ }
672
+ g.openComponentDialog(Ft, { data: {
673
+ title: f("components.dialog.title.result"),
674
+ hideConfirmButton: !0,
675
+ contentProps: { response: n }
676
+ } });
677
+ } else if (_.value === "faceDetection") {
678
+ let n = await C.value.testFaceDetection?.(new Uint8Array(t), B.value, e);
679
+ if (!n) {
680
+ l.warn("No face detection interface available");
681
+ return;
682
+ }
683
+ g.openComponentDialog(zt, { data: {
684
+ title: f("components.dialog.title.result"),
685
+ hideConfirmButton: !0,
686
+ contentProps: {
687
+ src: R,
688
+ response: n
689
+ }
690
+ } });
691
+ } else if (_.value === "licensePlateDetection") {
692
+ let n = await C.value.testLicensePlateDetection?.(new Uint8Array(t), B.value, e);
693
+ if (!n) {
694
+ l.warn("No license plate detection interface available");
695
+ return;
696
+ }
697
+ g.openComponentDialog(zt, { data: {
698
+ title: f("components.dialog.title.result"),
699
+ hideConfirmButton: !0,
700
+ contentProps: {
701
+ src: R,
702
+ response: n
703
+ }
704
+ } });
705
+ } else if (_.value === "classifierDetection") {
706
+ let n = await C.value.testClassifierDetection?.(new Uint8Array(t), B.value, e);
707
+ if (!n) {
708
+ l.warn("No classifier detection interface available");
709
+ return;
710
+ }
711
+ g.openComponentDialog(zt, { data: {
712
+ title: f("components.dialog.title.result"),
713
+ hideConfirmButton: !0,
714
+ contentProps: {
715
+ src: R,
716
+ response: n
717
+ }
718
+ } });
719
+ } else if (_.value === "clipDetection") {
720
+ let n = await C.value.testClipEmbedding?.(new Uint8Array(t), B.value, e);
721
+ if (!n) {
722
+ l.warn("No CLIP detection interface available");
723
+ return;
724
+ }
725
+ if (!n.embeddings?.length) {
726
+ p.add({
727
+ severity: "info",
728
+ detail: f("components.detection_interface.no_detections"),
729
+ life: 3e3
730
+ });
731
+ return;
732
+ }
733
+ let r = n.embeddings[0].embedding;
734
+ g.openComponentDialog(Pt, { data: {
735
+ title: f("components.dialog.title.result"),
736
+ hideConfirmButton: !0,
737
+ contentProps: {
738
+ src: R,
739
+ response: n,
740
+ onTextSearch: async (e) => {
741
+ let t = n.embeddingModel, i = C.value.getTextEmbeddings ? (await C.value.getTextEmbeddings(e))?.find((e) => e.embeddingModel === t) : void 0;
742
+ return i ??= await C.value.getTextEmbedding(e), !i?.embedding?.length || t && i.embeddingModel && i.embeddingModel !== t ? { score: 0 } : { score: K(r, i.embedding) };
743
+ }
744
+ }
745
+ } });
746
+ } else {
747
+ let n = await C.value.testObjectDetection?.(new Uint8Array(t), B.value, e);
748
+ if (!n) {
749
+ l.warn("No object detection interface available");
750
+ return;
751
+ }
752
+ g.openComponentDialog(zt, { data: {
753
+ title: f("components.dialog.title.result"),
754
+ hideConfirmButton: !0,
755
+ contentProps: {
756
+ src: R,
757
+ response: n
758
+ }
759
+ } });
760
+ }
761
+ } catch (e) {
762
+ p.add({
763
+ severity: "error",
764
+ detail: e,
765
+ life: 3e3
766
+ });
767
+ } finally {
768
+ z.value = !1;
769
+ }
770
+ }
771
+ return x(C, (e) => {
772
+ e && le();
773
+ }, { immediate: !0 }), x(P, (e) => {
774
+ e.length > 0 ? (te.value = !1, ne.value = !1) : (R.value = "", B.value = void 0, ne.value = !0);
775
+ }, {
776
+ immediate: !0,
777
+ deep: !0
778
+ }), (t, n) => {
779
+ let r = ze, i = Me, a = Ie;
780
+ return s(), S("div", null, [
781
+ E("div", {
782
+ class: "file-upload-box",
783
+ onDrop: n[1] ||= e((e) => de(e), ["prevent"]),
784
+ onDragover: n[2] ||= e((e) => F.value = !0, ["prevent"]),
785
+ onDragenter: n[3] ||= e((e) => F.value = !0, ["prevent"]),
786
+ onDragleave: n[4] ||= e((e) => F.value = !1, ["prevent"])
787
+ }, [v(P).length ? (s(), S("div", Gt, [v(H) === "image" ? (s(), S("div", Kt, [E("img", {
788
+ src: v(R),
789
+ alt: "Preview",
790
+ class: "w-full"
791
+ }, null, 8, qt)])) : v(H) === "video" ? (s(), S("div", Jt, [E("video", {
792
+ ref_key: "videoPlayerRef",
793
+ ref: A,
794
+ controls: "",
795
+ class: "w-full"
796
+ }, "Your browser does not support the video tag.", 512)])) : v(H) === "audio" ? (s(), S("div", Yt, [E("audio", {
797
+ ref_key: "audioPlayerRef",
798
+ ref: N,
799
+ controls: "",
800
+ class: "w-full"
801
+ }, [E("source", {
802
+ src: v(R),
803
+ type: v(P)[0].type
804
+ }, null, 8, Xt), n[5] ||= O(" Your browser does not support the audio element. ", -1)], 512)])) : h("", !0), E("div", Zt, [
805
+ M(i, {
806
+ text: "",
807
+ rounded: "",
808
+ severity: "danger",
809
+ class: "cui-icon-md shrink-0",
810
+ onClick: n[0] ||= e((e) => ue(v(P)[0].name), ["stop"])
811
+ }, {
812
+ icon: b(() => [M(r, {
813
+ width: "100%",
814
+ height: "100%"
815
+ })]),
816
+ _: 1
817
+ }),
818
+ E("b", Qt, c(v(P)[0].name), 1),
819
+ E("span", $t, "(" + c(G(v(P)[0].size)) + ")", 1)
820
+ ])])) : (s(), S("div", Bt, [E("div", Vt, [
821
+ E("label", Ht, c(t.$t(`components.detection_interface.${v(V)}`)), 1),
822
+ E("input", {
823
+ id: "restoreInput",
824
+ ref_key: "fileInputRef",
825
+ ref: D,
826
+ type: "file",
827
+ class: "hidden",
828
+ accept: v(oe),
829
+ onChange: fe
830
+ }, null, 40, Ut),
831
+ v(I) ? (s(), S("p", Wt, c(t.$t(`components.detection_interface.only_one_${v(H)}_allowed`)), 1)) : h("", !0),
832
+ v(te) ? (s(), S("p", {
833
+ key: 1,
834
+ class: d(["text-red-500 text-sm", { "mt-2": v(I) }])
835
+ }, c(t.$t(`components.detection_interface.${v(H)}_required`)), 3)) : h("", !0),
836
+ v(L) ? (s(), S("p", {
837
+ key: 2,
838
+ class: d(["text-red-500 text-sm", { "mt-2": v(I) || v(te) }])
839
+ }, c(t.$t("components.detection_interface.file_size_error")), 3)) : h("", !0)
840
+ ])]))], 32),
841
+ E("div", en, [E("span", null, "(" + c(v(W) / 1024 / 1024) + "MB, " + c(v(U).join(", ")) + ")", 1)]),
842
+ E("div", tn, [E("h3", nn, c(t.$t("components.detection_interface.interface_config")), 1), v(re)?.length ? (s(), m(a, {
843
+ key: 1,
844
+ "schema-form": {
845
+ schema: v(re),
846
+ config: {}
847
+ },
848
+ loading: v(ae),
849
+ "save-button-label": t.$t("components.detection_interface.detect"),
850
+ "disable-button": v(ne),
851
+ "show-button": "",
852
+ onOnFormSubmit: ve
853
+ }, null, 8, [
854
+ "schema-form",
855
+ "loading",
856
+ "save-button-label",
857
+ "disable-button"
858
+ ])) : (s(), S("div", rn, c(t.$t("components.detection_interface.no_interface_config")), 1))])
859
+ ]);
860
+ };
861
+ }
862
+ }), on = {
863
+ viewBox: "0 0 24 24",
864
+ width: "1.2em",
865
+ height: "1.2em"
866
+ };
867
+ function sn(e, t) {
868
+ return s(), S("svg", on, [...t[0] ||= [E("path", {
869
+ fill: "none",
870
+ stroke: "currentColor",
871
+ "stroke-linecap": "round",
872
+ "stroke-linejoin": "round",
873
+ "stroke-width": "2",
874
+ d: "M2 10v3m4-7v11m4-14v18m4-13v7m4-10v13m4-8v3"
875
+ }, null, -1)]]);
876
+ }
877
+ var cn = p({
878
+ name: "lucide-audio-lines",
879
+ render: sn
880
+ }), ln = {
881
+ viewBox: "0 0 24 24",
882
+ width: "1.2em",
883
+ height: "1.2em"
884
+ };
885
+ function un(e, t) {
886
+ return s(), S("svg", ln, [...t[0] ||= [E("path", {
887
+ fill: "currentColor",
888
+ d: "M2 7V4q0-.825.588-1.412T4 2h3v2H4v3zm5 15H4q-.825 0-1.412-.587T2 20v-3h2v3h3zm10 0v-2h3v-3h2v3q0 .825-.587 1.413T20 22zm3-15V4h-3V2h3q.825 0 1.413.588T22 4v3zm-7.913 1.913Q11.5 8.325 11.5 7.5t.588-1.412T13.5 5.5t1.413.588T15.5 7.5t-.587 1.413T13.5 9.5t-1.412-.587M12.8 18h-4l1-5.1l-1.8.7V17H6v-4.7l3.95-1.7q.875-.375 1.288-.487T12 10q.525 0 .975.275T13.7 11l1 1.6q.65 1.05 1.763 1.725T19 15v2q-1.65 0-3.088-.687T13.5 14.5z"
889
+ }, null, -1)]]);
890
+ }
891
+ var dn = p({
892
+ name: "material-symbols-detection-and-zone",
893
+ render: un
894
+ }), fn = {
895
+ viewBox: "0 0 24 24",
896
+ width: "1.2em",
897
+ height: "1.2em"
898
+ };
899
+ function pn(e, t) {
900
+ return s(), S("svg", fn, [...t[0] ||= [E("path", {
901
+ fill: "currentColor",
902
+ d: "M8.113 13.888Q7.75 13.525 7.75 13t.363-.888T9 11.75t.888.363t.362.887t-.363.888T9 14.25t-.888-.363m6 0q-.362-.362-.362-.887t.363-.888t.887-.362t.888.363t.362.887t-.363.888t-.887.362t-.888-.363M12 20q3.35 0 5.675-2.325T20 12q0-.6-.075-1.162T19.65 9.75q-.525.125-1.05.188T17.5 10q-2.275 0-4.3-.975T9.75 6.3q-.8 1.95-2.287 3.388T4 11.85V12q0 3.35 2.325 5.675T12 20m0 2q-2.075 0-3.9-.787t-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22"
903
+ }, null, -1)]]);
904
+ }
905
+ var mn = p({
906
+ name: "material-symbols-face",
907
+ render: pn
908
+ }), hn = {
909
+ viewBox: "0 0 24 24",
910
+ width: "1.2em",
911
+ height: "1.2em"
912
+ };
913
+ function gn(e, t) {
914
+ return s(), S("svg", hn, [...t[0] ||= [E("path", {
915
+ fill: "currentColor",
916
+ d: "M8 17q-.425 0-.712-.288T7 16t.288-.712T8 15h5q-.35-.425-.562-.925T12.1 13H10q-.425 0-.712-.288T9 12t.288-.712T10 11h2.1q.125-.575.338-1.075T13 9H4q-.425 0-.712-.288T3 8t.288-.712T4 7h13q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17zm9-2q1.25 0 2.125-.875T20 12t-.875-2.125T17 9t-2.125.875T14 12t.875 2.125T17 15M3 13q-.425 0-.712-.288T2 12t.288-.712T3 11h4q.425 0 .713.288T8 12t-.288.713T7 13zm1 4q-.425 0-.712-.288T3 16t.288-.712T4 15h1q.425 0 .713.288T6 16t-.288.713T5 17z"
917
+ }, null, -1)]]);
918
+ }
919
+ var _n = p({
920
+ name: "material-symbols-motion-blur-rounded",
921
+ render: gn
922
+ }), vn = {
923
+ viewBox: "0 0 24 24",
924
+ width: "1.2em",
925
+ height: "1.2em"
926
+ };
927
+ function yn(e, t) {
928
+ return s(), S("svg", vn, [...t[0] ||= [E("path", {
929
+ fill: "currentColor",
930
+ "fill-rule": "evenodd",
931
+ d: "M15.586 2.758a2 2 0 0 1 2.828 0l2.829 2.828a2 2 0 0 1 0 2.829l-2.829 2.828a2 2 0 0 1-2.828 0l-2.829-2.828a2 2 0 0 1 0-2.829zM9 3a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm12 12a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2zM9 13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z",
932
+ "clip-rule": "evenodd"
933
+ }, null, -1)]]);
934
+ }
935
+ var bn = p({
936
+ name: "mingcute-classify-2-fill",
937
+ render: yn
938
+ }), xn = {
939
+ viewBox: "0 0 256 256",
940
+ width: "1.2em",
941
+ height: "1.2em"
942
+ };
943
+ function Sn(e, t) {
944
+ return s(), S("svg", xn, [...t[0] ||= [E("path", {
945
+ fill: "currentColor",
946
+ d: "M200 156c0 6.5-7.33 12-16 12s-16-5.5-16-12s7.33-12 16-12s16 5.5 16 12m32-100v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-88.63 116.88l-44-104a8 8 0 0 0-14.74 0l-44 104a8 8 0 0 0 14.74 6.24L66.84 152h50.32l11.47 27.12a8 8 0 0 0 14.74-6.24M216 124c0-15.44-14.36-28-32-28a34.86 34.86 0 0 0-20.78 6.68a8 8 0 0 0 9.56 12.83A18.84 18.84 0 0 1 184 112c8.56 0 15.8 5.36 16 11.76v8a35.24 35.24 0 0 0-16-3.76c-17.64 0-32 12.56-32 28s14.36 28 32 28a35.1 35.1 0 0 0 16.93-4.26A8 8 0 0 0 216 176ZM73.61 136h36.78L92 92.53Z"
947
+ }, null, -1)]]);
948
+ }
949
+ var Cn = p({
950
+ name: "ph-text-aa-fill",
951
+ render: Sn
952
+ }), wn = {
953
+ viewBox: "0 0 24 24",
954
+ width: "1.2em",
955
+ height: "1.2em"
956
+ };
957
+ function Tn(e, t) {
958
+ return s(), S("svg", wn, [...t[0] ||= [E("g", { fill: "currentColor" }, [E("path", { d: "M12.75 3C12.75 2.58579 12.4142 2.25 12 2.25C11.5858 2.25 11.25 2.58579 11.25 3V5C11.25 5.41421 11.5858 5.75 12 5.75C12.4142 5.75 12.75 5.41421 12.75 5V3Z" }), E("path", {
959
+ "fill-rule": "evenodd",
960
+ d: "M22.75 12.0565C22.75 13.8943 22.75 15.3499 22.5969 16.4891C22.4392 17.6615 22.1071 18.6105 21.3588 19.3588C20.6104 20.1072 19.6614 20.4393 18.489 20.597C17.3498 20.7501 15.8942 20.7501 14.0565 20.7501H9.94348C8.10577 20.7501 6.65017 20.7501 5.51098 20.597C4.33856 20.4393 3.38961 20.1072 2.64124 19.3588C1.89288 18.6105 1.56076 17.6615 1.40314 16.4891C1.24997 15.3499 1.24999 13.8943 1.25 12.0565L1.25 11.7725C1.25002 11.5529 1.25011 11.3388 1.25053 11.1303C1.25132 10.7466 1.25327 10.3814 1.25806 10.034C1.27152 9.05873 1.30741 8.22316 1.40314 7.51116C1.56076 6.33873 1.89288 5.38978 2.64124 4.64142C3.38961 3.89306 4.33856 3.56094 5.51098 3.40331C6.22742 3.30699 7.069 3.27125 8.05206 3.25799C8.2173 3.25576 8.47469 3.25412 8.74859 3.25292C9.3014 3.2505 9.75 3.69873 9.75 4.25155V5.00008C9.75 6.24272 10.7574 7.25008 12 7.25008C13.2426 7.25008 14.25 6.24272 14.25 5.00008V4.25028C14.25 3.69796 14.698 3.24935 15.2503 3.25196C16.5391 3.25806 17.6086 3.28494 18.489 3.40331C19.6614 3.56094 20.6104 3.89306 21.3588 4.64142C22.1071 5.38978 22.4392 6.33873 22.5969 7.51116C22.75 8.65036 22.75 10.1059 22.75 11.9437V12.0565ZM8 9.75008C7.58579 9.75008 7.25 10.0859 7.25 10.5001C7.25 10.9143 7.58579 11.2501 8 11.2501H16C16.4142 11.2501 16.75 10.9143 16.75 10.5001C16.75 10.0859 16.4142 9.75008 16 9.75008H8ZM8 13.2501C7.58579 13.2501 7.25 13.5859 7.25 14.0001C7.25 14.4143 7.58579 14.7501 8 14.7501H13.5C13.9142 14.7501 14.25 14.4143 14.25 14.0001C14.25 13.5859 13.9142 13.2501 13.5 13.2501H8Z",
961
+ "clip-rule": "evenodd"
962
+ })], -1)]]);
963
+ }
964
+ var En = p({
965
+ name: "solar-plate-bold",
966
+ render: Tn
967
+ }), Dn = /* @__PURE__ */ A({
968
+ __name: "PluginSchema",
969
+ props: {
970
+ schemaConfig: {},
971
+ pluginName: {},
972
+ cameraName: {},
973
+ buttonKey: {},
974
+ sensorId: {},
975
+ pluginId: {}
976
+ },
977
+ setup(e, { expose: t }) {
978
+ let n = e, r = se(), o = i("dialogRef"), c = i("dialogRefProps"), { schemaConfig: l, pluginName: u, cameraName: d, buttonKey: f, sensorId: p, pluginId: h } = a(n), g = ke(u), _ = X(d, u), ee = Y(p, h), b = j({
979
+ schema: [],
980
+ config: {}
981
+ }), S = y(() => d.value && p.value ? "sensor" : d.value ? "camera" : "plugin"), C = y(() => {
982
+ switch (S.value) {
983
+ case "sensor": return ee;
984
+ case "camera": return _;
985
+ default: return g;
986
+ }
987
+ }), w = y(() => !!(c.loading?.value || C.value.isLoading.value));
988
+ async function T(e) {
989
+ await C.value.setValue(e.key, void 0);
990
+ }
991
+ async function E(e) {
992
+ let t = {
993
+ ...l.value.config,
994
+ ...e
995
+ }, n = await C.value.submitValue(f.value, t);
996
+ if (n?.toast) {
997
+ let e = H(n.toast.type);
998
+ r.add({
999
+ severity: e,
1000
+ detail: n.toast.message,
1001
+ life: 3e3
1002
+ });
1003
+ }
1004
+ n?.schema && Object.keys(n.schema).length && b.value ? b.value.schema = n.schema : o.value.close();
1005
+ }
1006
+ return x(l, (e) => {
1007
+ b.value = e;
1008
+ }, {
1009
+ deep: !0,
1010
+ immediate: !0
1011
+ }), t({ isLoading: w }), (e, t) => {
1012
+ let n = Ie;
1013
+ return s(), m(n, {
1014
+ "schema-form": v(b),
1015
+ loading: v(w),
1016
+ "show-button": "",
1017
+ onOnAction: T,
1018
+ onOnFormSubmit: E
1019
+ }, null, 8, ["schema-form", "loading"]);
1020
+ };
1021
+ }
1022
+ }), On = { class: "font-semibold text-xl truncate" }, kn = { class: "lg:col-span-2 order-1 !h-[220px]" }, An = { class: "flex w-full h-full items-center justify-center" }, jn = { class: "lg:col-span-1 lg:row-span-3 order-2" }, Mn = { class: "lg:!hidden card-title" }, Nn = {
1023
+ key: 0,
1024
+ class: "w-full h-full flex items-center justify-center"
1025
+ }, Pn = { key: 1 }, Fn = { class: "hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3" }, In = {
1026
+ key: 0,
1027
+ class: "flex items-center justify-center w-full h-full text-muted text-sm"
1028
+ }, Ln = ["onClick"], Rn = {
1029
+ key: 0,
1030
+ class: "w-full h-full"
1031
+ }, zn = {
1032
+ key: 0,
1033
+ class: "flex flex-col items-center justify-center w-full h-full text-muted text-sm gap-3 text-center"
1034
+ }, Bn = {
1035
+ key: 2,
1036
+ class: "flex items-center justify-center w-full h-full text-muted text-sm"
1037
+ }, Vn = {
1038
+ key: 9,
1039
+ class: "w-full h-full"
1040
+ }, Hn = {
1041
+ key: 0,
1042
+ class: "flex items-center justify-center w-full h-full text-muted text-sm"
1043
+ }, Un = {
1044
+ key: 1,
1045
+ class: "flex items-center justify-center gap-2 w-full h-full text-muted text-sm"
1046
+ }, Wn = /*#__PURE__*/ me(/* @__PURE__ */ A({
1047
+ __name: "Plugin",
1048
+ setup(e) {
1049
+ let t = new pe(), n = new Le(), i = ye(), a = ge(), u = ne(), p = se(), C = ce(), { lgBreakpoint: T } = R(), { t: O } = De(), k = j(u.params.scope), A = j(u.params.pluginname), N = y(() => k.value ? `${k.value}/${A.value}` : A.value), { contract: P, error: I } = Oe(N);
1050
+ n.toggleQueryActivator("getPluginContractQuery", !1);
1051
+ let { data: V, isBusy: W } = n.getPluginQuery(N), { data: ue, isBusy: fe } = n.getPluginReadmeQuery(N), { data: me, isBusy: he } = n.getPluginChangelogQuery(N), { data: G } = n.getPluginContractQuery(N), K = ke(N), q = K.config, be = K.isLoading, { mutate: xe, isPending: Se } = t.activateCameraExtensionQuery(), { mutate: Ce, isPending: Te } = t.deactivateCameraExtensionQuery(), J = j("settings"), Y = j([]), X = j([]), Ae = j(we.UNKNOWN), Ne, Pe = y(() => !!P.value && Q(P.value, Z.NVR)), $ = y(() => Ae.value === we.READY || Ae.value === we.STARTED), Fe = y(() => $.value ? Pe.value || q.value?.schema?.length ? !0 : be.value : !1);
1052
+ function ze(e, t) {
1053
+ return e.pluginInfo?.name === t;
1054
+ }
1055
+ async function Be(e) {
1056
+ try {
1057
+ await K.setValue(e.key, void 0), p.add({
1058
+ severity: "success",
1059
+ detail: O("components.toast.config_updated"),
1060
+ life: 3e3
1061
+ });
1062
+ } catch (e) {
1063
+ p.add({
1064
+ severity: "error",
1065
+ detail: e,
1066
+ life: 3e3
1067
+ });
1068
+ }
1069
+ }
1070
+ async function Ue(e) {
1071
+ try {
1072
+ let t = await K.submitValue(e.key, e.payload);
1073
+ if (t?.toast) {
1074
+ let e = H(t.toast.type);
1075
+ p.add({
1076
+ severity: e,
1077
+ detail: t.toast.message,
1078
+ life: 3e3
1079
+ });
1080
+ }
1081
+ t?.schema?.length && C.openComponentDialog(Dn, { data: {
1082
+ title: O("components.dialog.title.config"),
1083
+ hideConfirmButton: !0,
1084
+ contentProps: {
1085
+ schemaConfig: {
1086
+ schema: t.schema,
1087
+ config: e.payload
1088
+ },
1089
+ pluginName: N.value,
1090
+ buttonKey: e.key
1091
+ }
1092
+ } });
1093
+ } catch (e) {
1094
+ p.add({
1095
+ severity: "error",
1096
+ detail: e,
1097
+ life: 3e3
1098
+ });
1099
+ }
1100
+ }
1101
+ async function Ge(e) {
1102
+ if (q.value?.schema.length) try {
1103
+ let t = Ee(q.value.schema, e);
1104
+ await K.setConfig(t), p.add({
1105
+ severity: "success",
1106
+ detail: O("components.toast.config_updated"),
1107
+ life: 3e3
1108
+ });
1109
+ } catch (e) {
1110
+ p.add({
1111
+ severity: "error",
1112
+ detail: e,
1113
+ life: 3e3
1114
+ });
1115
+ }
1116
+ }
1117
+ async function Ke(e) {
1118
+ V.value && V.value.contract && (X.value.includes(e.name) ? Ce({
1119
+ cameraname: e.name,
1120
+ pluginname: V.value.pluginName
1121
+ }, { onSuccess: () => {
1122
+ X.value = X.value.filter((t) => t !== e.name);
1123
+ } }) : xe({
1124
+ cameraname: e.name,
1125
+ pluginname: V.value.pluginName
1126
+ }, { onSuccess: () => {
1127
+ X.value = [...X.value, e.name];
1128
+ } }));
1129
+ }
1130
+ return x(V, (e) => {
1131
+ if (!e || e.disabled) {
1132
+ let e = Y.value.some((e) => e.name === "settings"), t = Y.value.some((e) => e.name === "cameras");
1133
+ e ? J.value = "settings" : t && (J.value = "cameras");
1134
+ }
1135
+ }, { deep: !0 }), x(u, () => {
1136
+ A.value = u.params.pluginname;
1137
+ }, {
1138
+ deep: !0,
1139
+ immediate: !0
1140
+ }), x([V, K.isConnected], async ([e, t]) => {
1141
+ e && !e.disabled && t && await K.getConfig();
1142
+ }, { immediate: !0 }), x(N, (e) => {
1143
+ Ne?.stop(), e && (Ne = g(), Ne.run(() => {
1144
+ let t = Ve(e);
1145
+ t.connect(), x(t.status, (e) => Ae.value = e, { immediate: !0 });
1146
+ }));
1147
+ }, { immediate: !0 }), x(q, () => {
1148
+ q.value ? n.toggleQueryActivator("getPluginContractQuery", !0) : n.toggleQueryActivator("getPluginContractQuery", !1);
1149
+ }, {
1150
+ deep: !0,
1151
+ immediate: !0
1152
+ }), x([
1153
+ G,
1154
+ q,
1155
+ P,
1156
+ Fe,
1157
+ $
1158
+ ], () => {
1159
+ let e = [], t = !1;
1160
+ Fe.value && e.push({
1161
+ name: "settings",
1162
+ icon: B,
1163
+ isInterface: !1,
1164
+ tooltip: O("views.plugin.settings_tab_tooltip")
1165
+ }), $.value && P.value && Q(P.value, Z.MotionDetection) && (t = !0, e.push({
1166
+ name: "motion_detection",
1167
+ icon: _n,
1168
+ isInterface: !0,
1169
+ tooltip: O("views.plugin.motion_detection_tab_tooltip")
1170
+ })), $.value && P.value && Q(P.value, Z.ObjectDetection) && (t = !0, e.push({
1171
+ name: "object_detection",
1172
+ icon: dn,
1173
+ isInterface: !0,
1174
+ tooltip: O("views.plugin.object_detection_tab_tooltip")
1175
+ })), $.value && P.value && Q(P.value, Z.AudioDetection) && (t = !0, e.push({
1176
+ name: "audio_detection",
1177
+ icon: cn,
1178
+ isInterface: !0,
1179
+ tooltip: O("views.plugin.audio_detection_tab_tooltip")
1180
+ })), $.value && P.value && Q(P.value, Z.FaceDetection) && (t = !0, e.push({
1181
+ name: "face_detection",
1182
+ icon: mn,
1183
+ isInterface: !0,
1184
+ tooltip: O("views.plugin.face_detection_tab_tooltip")
1185
+ })), $.value && P.value && Q(P.value, Z.LicensePlateDetection) && (t = !0, e.push({
1186
+ name: "license_plate_detection",
1187
+ icon: En,
1188
+ isInterface: !0,
1189
+ tooltip: O("views.plugin.license_plate_detection_tab_tooltip")
1190
+ })), $.value && P.value && Q(P.value, Z.ClassifierDetection) && (t = !0, e.push({
1191
+ name: "classifier_detection",
1192
+ icon: bn,
1193
+ isInterface: !0,
1194
+ tooltip: O("views.plugin.classifier_detection_tab_tooltip")
1195
+ })), $.value && P.value && Q(P.value, Z.ClipDetection) && (t = !0, e.push({
1196
+ name: "clip_detection",
1197
+ icon: Cn,
1198
+ isInterface: !0,
1199
+ tooltip: O("views.plugin.clip_detection_tab_tooltip")
1200
+ })), $.value && P.value && Q(P.value, Z.Notifier) && (t = !0, e.push({
1201
+ name: "notification",
1202
+ icon: z,
1203
+ isInterface: !0,
1204
+ tooltip: O("views.plugin.notification_tab_tooltip")
1205
+ })), e.push({
1206
+ name: "cameras",
1207
+ icon: de,
1208
+ isInterface: !1,
1209
+ tooltip: O("views.plugin.cameras_tab_tooltip")
1210
+ }), G.value?.cameras.length && (X.value = G.value.cameras.filter((e) => e.plugins?.some((e) => e.name === N.value)).map((e) => e.name)), Y.value = [...e], V.value?.disabled || (Fe.value ? J.value = "settings" : t ? J.value = Y.value.filter((e) => e.isInterface)[0].name : J.value = "cameras");
1211
+ }, {
1212
+ deep: !0,
1213
+ immediate: !0
1214
+ }), x(I, (e) => {
1215
+ e && V.value && !V.value.disabled && i.error("Error connecting to plugin:", e);
1216
+ }), r(() => Ne?.stop()), (e, t) => {
1217
+ let n = We, r = Me, i = ie, u = _e, p = ve, g = He, y = ae, x = re, C = je, O = Ie, k = an, A = Tt, j = Re, P = le, I = L, R = te, z = U, B = oe, ne = Ze, H = F;
1218
+ return s(), S("div", { key: v(N) }, [
1219
+ M(i, { position: "left" }, {
1220
+ default: b(() => [M(r, {
1221
+ severity: "secondary",
1222
+ text: "",
1223
+ class: "cui-button p-2 text-color non-draggable-region",
1224
+ onClick: t[0] ||= (t) => e.$router.push("/plugins")
1225
+ }, {
1226
+ icon: b(() => [M(n, { class: "w-6 h-6" })]),
1227
+ _: 1
1228
+ })]),
1229
+ _: 1
1230
+ }),
1231
+ M(i, { position: "center" }, {
1232
+ default: b(() => [E("span", On, c(e.$t("views.plugin.title")), 1)]),
1233
+ _: 1
1234
+ }),
1235
+ E("div", { class: d(["grid grid-auto grid-cols-1 lg:grid-cols-3 gap-6 lg:h-full", { "!gap-2": v(T) }]) }, [
1236
+ E("div", kn, [v(V) ? (s(), m(g, {
1237
+ key: v(V).pluginName,
1238
+ plugin: v(V),
1239
+ class: "h-[220px]"
1240
+ }, null, 8, ["plugin"])) : (s(), m(p, {
1241
+ key: 0,
1242
+ class: "cui-card items-center justify-center !h-[220px]"
1243
+ }, {
1244
+ content: b(() => [E("div", An, [M(u, {
1245
+ class: "w-[30px] h-[30px] m-0",
1246
+ "stroke-width": "5"
1247
+ })])]),
1248
+ _: 1
1249
+ }))]),
1250
+ E("div", jn, [E("span", Mn, c(e.$t("views.plugin.settings")), 1), M(p, { class: d(["cui-card !h-auto lg:!h-full", { "items-center justify-center": v(W) || v(be) }]) }, {
1251
+ content: b(() => [v(W) || v(be) ? (s(), S("div", Nn, [M(u, {
1252
+ class: "w-[30px] h-[30px] m-0",
1253
+ "stroke-width": "5"
1254
+ })])) : (s(), S("div", Pn, [E("h3", Fn, c(e.$t("views.plugin.settings")), 1), v(V)?.disabled ? (s(), S("div", In, [E("span", null, c(e.$t("views.plugin.disabled_info")), 1)])) : (s(), m(B, {
1255
+ key: 1,
1256
+ value: v(J),
1257
+ "onUpdate:value": t[2] ||= (e) => ee(J) ? J.value = e : null,
1258
+ scrollable: ""
1259
+ }, {
1260
+ default: b(() => [M(x, {
1261
+ class: "justify-between",
1262
+ pt: {
1263
+ activeBar: { class: "!w-auto" },
1264
+ content: { class: "border-[1px] border-color cui-rounded-corner overflow-hidden" }
1265
+ }
1266
+ }, {
1267
+ default: b(() => [(s(!0), S(w, null, o(v(Y), (e, t) => (s(), m(y, {
1268
+ key: t,
1269
+ disabled: e.isInterface && v(V)?.disabled,
1270
+ value: e.name,
1271
+ "as-child": ""
1272
+ }, {
1273
+ default: b((t) => [D((s(), S("div", l({ ref_for: !0 }, t.a11yAttrs, {
1274
+ class: ["flex flex-col items-center justify-center flex-1 content-background !py-3 h-[55px]", [{ "hover:!text-color active:!text-color focus:!text-color": !t.active }, t.class]],
1275
+ onClick: t.onClick
1276
+ }), [(s(), m(f(e.icon), { class: "w-5 h-5" }))], 16, Ln)), [[H, { value: e.tooltip }]])]),
1277
+ _: 2
1278
+ }, 1032, ["disabled", "value"]))), 128))]),
1279
+ _: 1
1280
+ }), M(z, { class: "px-0 pb-0" }, {
1281
+ default: b(() => [(s(!0), S(w, null, o(v(Y), (n, i) => (s(), m(R, {
1282
+ key: i,
1283
+ value: n.name,
1284
+ "as-child": ""
1285
+ }, {
1286
+ default: b((i) => [i.active ? (s(), S("div", l({
1287
+ key: 0,
1288
+ class: i.class
1289
+ }, { ref_for: !0 }, i.a11yAttrs), [n.name === "settings" ? (s(), S("div", Rn, [v(Pe) ? (s(), S("div", zn, [E("span", null, c(e.$t("views.plugin.nvr_settings_hint")), 1), M(r, {
1290
+ class: "cui-button-medium whitespace-nowrap",
1291
+ label: e.$t("views.plugin.nvr_settings_button"),
1292
+ onClick: t[1] ||= (t) => e.$router.push("/settings/recordings")
1293
+ }, {
1294
+ icon: b(() => [M(C, { class: "w-4 h-4" })]),
1295
+ _: 1
1296
+ }, 8, ["label"])])) : v(q)?.schema?.length ? (s(), m(O, {
1297
+ key: 1,
1298
+ "schema-form": {
1299
+ schema: v(q).schema,
1300
+ config: v(q).config
1301
+ },
1302
+ loading: v(K).isLoading.value,
1303
+ "save-button-color": "success",
1304
+ onOnAction: Be,
1305
+ onOnSubmit: Ue,
1306
+ onOnFormSubmit: Ge
1307
+ }, null, 8, ["schema-form", "loading"])) : (s(), S("div", Bn, [E("span", null, c(e.$t("views.plugin.no_settings")), 1)]))])) : n.name === "motion_detection" ? (s(), m(k, {
1308
+ key: 1,
1309
+ "plugin-name": v(N),
1310
+ type: "motionDetection"
1311
+ }, null, 8, ["plugin-name"])) : n.name === "object_detection" ? (s(), m(k, {
1312
+ key: 2,
1313
+ "plugin-name": v(N),
1314
+ type: "objectDetection"
1315
+ }, null, 8, ["plugin-name"])) : n.name === "audio_detection" ? (s(), m(k, {
1316
+ key: 3,
1317
+ "plugin-name": v(N),
1318
+ type: "audioDetection"
1319
+ }, null, 8, ["plugin-name"])) : n.name === "face_detection" ? (s(), m(k, {
1320
+ key: 4,
1321
+ "plugin-name": v(N),
1322
+ type: "faceDetection"
1323
+ }, null, 8, ["plugin-name"])) : n.name === "license_plate_detection" ? (s(), m(k, {
1324
+ key: 5,
1325
+ "plugin-name": v(N),
1326
+ type: "licensePlateDetection"
1327
+ }, null, 8, ["plugin-name"])) : n.name === "classifier_detection" ? (s(), m(k, {
1328
+ key: 6,
1329
+ "plugin-name": v(N),
1330
+ type: "classifierDetection"
1331
+ }, null, 8, ["plugin-name"])) : n.name === "clip_detection" ? (s(), m(k, {
1332
+ key: 7,
1333
+ "plugin-name": v(N),
1334
+ type: "clipDetection"
1335
+ }, null, 8, ["plugin-name"])) : n.name === "notification" ? (s(), m(A, {
1336
+ key: 8,
1337
+ "plugin-name": v(N)
1338
+ }, null, 8, ["plugin-name"])) : n.name === "cameras" ? (s(), S("div", Vn, [v(G)?.cameras?.length ? v($) ? (s(!0), S(w, { key: 2 }, o(v(G).cameras, (e) => (s(), S("div", {
1339
+ key: e.name,
1340
+ class: "cui-list-item"
1341
+ }, [M(I, {
1342
+ disabled: v(Se) || v(Te) || v(K).isLoading.value,
1343
+ active: v(X).includes(e.name),
1344
+ class: "h-14",
1345
+ onClick: (t) => v(a).open({ cameraName: e.name })
1346
+ }, _({
1347
+ default: b(() => [E("span", null, c(e.name), 1)]),
1348
+ _: 2
1349
+ }, [!v(V) || !ze(e, v(V).pluginName) ? {
1350
+ name: "append",
1351
+ fn: b(() => [M(P, {
1352
+ "model-value": v(X).includes(e.name),
1353
+ disabled: v(Se) || v(Te) || v(K).isLoading.value || !v($),
1354
+ "onUpdate:modelValue": () => Ke(e)
1355
+ }, null, 8, [
1356
+ "model-value",
1357
+ "disabled",
1358
+ "onUpdate:modelValue"
1359
+ ])]),
1360
+ key: "0"
1361
+ } : void 0]), 1032, [
1362
+ "disabled",
1363
+ "active",
1364
+ "onClick"
1365
+ ])]))), 128)) : (s(), S("div", Un, [M(j, { class: "w-4 h-4 flex-shrink-0" }), E("span", null, c(e.$t("views.plugin.assignment_requires_running")), 1)])) : (s(), S("div", Hn, [E("span", null, c(e.$t("views.plugin.no_cameras")), 1)]))])) : h("", !0)], 16)) : h("", !0)]),
1366
+ _: 2
1367
+ }, 1032, ["value"]))), 128))]),
1368
+ _: 1
1369
+ })]),
1370
+ _: 1
1371
+ }, 8, ["value"]))]))]),
1372
+ _: 1
1373
+ }, 8, ["class"])]),
1374
+ M(ne, {
1375
+ class: "lg:col-span-2 order-3",
1376
+ title: e.$t("views.plugin.readme"),
1377
+ placeholder: e.$t("views.plugin.no_readme"),
1378
+ content: v(ue),
1379
+ loading: v(fe)
1380
+ }, null, 8, [
1381
+ "title",
1382
+ "placeholder",
1383
+ "content",
1384
+ "loading"
1385
+ ]),
1386
+ M(ne, {
1387
+ class: "lg:col-span-2 order-4",
1388
+ title: e.$t("views.plugin.changelog"),
1389
+ placeholder: e.$t("views.plugin.no_changelog"),
1390
+ content: v(me),
1391
+ loading: v(he)
1392
+ }, null, 8, [
1393
+ "title",
1394
+ "placeholder",
1395
+ "content",
1396
+ "loading"
1397
+ ])
1398
+ ], 2)
1399
+ ]);
1400
+ };
1401
+ }
1402
+ }), [["__scopeId", "data-v-2ecf2010"]]);
1403
+ //#endregion
1404
+ export { Wn as default };