@camera.ui/server 2.1.11 → 2.1.13

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 (644) hide show
  1. package/dist/interface/assets/{404-B4_ZWIGx.js → 404-CVkDpT0X.js} +1 -1
  2. package/dist/interface/assets/{About-Cd8Ipr7a.js → About-CUgIR2xi.js} +1 -1
  3. package/dist/interface/assets/Automation-BYRKp0AC.js +3 -0
  4. package/dist/interface/assets/{AutomationImport-BTkkRikE.js → AutomationImport-L_OzZZgi.js} +2 -2
  5. package/dist/interface/assets/{AutomationStore-VdGEOwci.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-KqRFGZzT.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-Dd4Ec7bt.js → CertificateUpload-BsnlaxRS.js} +1 -1
  14. package/dist/interface/assets/{Config-Db-Eh4Lf.js → Config-BXj83-No.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionCameraControl-CbG-HEuU.js → ConfigActionCameraControl-BGfvT6ME.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionDelay-BoGIhNHr.js → ConfigActionDelay-D10_C6yo.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-DyPo2XvQ.js → ConfigActionHttp-DL4jh9Wz.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-C9aYztb6.js → ConfigActionImageInput-DVvMUzrT.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-kQz9Y9OZ.js → ConfigActionMqtt-BqK3q4cC.js} +1 -1
  20. package/dist/interface/assets/ConfigActionNotification-D_H5Q68D.js +1 -0
  21. package/dist/interface/assets/{ConfigActionNotificationControl-DEOv_FGO.js → ConfigActionNotificationControl-BnTJl4dr.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-CGtG-8PF.js → ConfigActionOutput-udY95_rH.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-C8v0CWrz.js → ConfigActionPlugin-C51LrkZb.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionSensor-CESXnRuQ.js → ConfigActionSensor-B2tFf8x6.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSnapshot-TVhjeFKP.js → ConfigActionSnapshot-BzmeByH3.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-DwRFwopb.js → ConfigActionVariable-BagC3lj5.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-CmtoYTUU.js → ConfigConditionIfElse-CQOZJ19Y.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-3B9Sjxdb.js → ConfigConditionSensorState-SGYpkNP5.js} +1 -1
  29. package/dist/interface/assets/ConfigConditionSwitch-BXR6xUN8.js +1 -0
  30. package/dist/interface/assets/{ConfigConditionTime-Djq2yOCr.js → ConfigConditionTime-BrEhw1R9.js} +1 -1
  31. package/dist/interface/assets/{ConfigSensorValueInput-DZ7r71aU.js → ConfigSensorValueInput-DezTWtbA.js} +1 -1
  32. package/dist/interface/assets/{ConfigTriggerDetection-B62txb4H.js → ConfigTriggerDetection-xo0imE_3.js} +1 -1
  33. package/dist/interface/assets/ConfigTriggerGeofence-BmJpP4Ew.js +1 -0
  34. package/dist/interface/assets/{ConfigTriggerManual-nrYy4xBP.js → ConfigTriggerManual-CmAdnZQK.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-CK8FEVxs.js → ConfigTriggerMqtt-F19dhVm1.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-DN3Tl7f4.js → ConfigTriggerSchedule-BGci3Aed.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-DBXrlYyS.js → ConfigTriggerSensor-DSEDGB2X.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-QFLNb9GC.js → ConfigTriggerSystem-DPy8Zir4.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-46mdJk6X.js → ConfigTriggerWebhook-Dv0Kmwg8.js} +1 -1
  40. package/dist/interface/assets/Console-Cuh-Vc4u.js +1 -0
  41. package/dist/interface/assets/{CuiAutomationRunsDialog-BvtQfpTx.js → CuiAutomationRunsDialog-B1UeVC6Q.js} +1 -1
  42. package/dist/interface/assets/{CuiBottomSheet-UiJcO4M3.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-46_p-wPD.js → CuiCameraShares-D-fhJCro.js} +1 -1
  48. package/dist/interface/assets/{CuiCameraTable-BXm5THd1.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-ByHWgFTc.js → CuiChartTable-DAUYP-EW.js} +1 -1
  51. package/dist/interface/assets/{CuiConsole-BOyrbC0a.js → CuiConsole-C7aZj4wK.js} +2 -2
  52. package/dist/interface/assets/{CuiDataTable-BDyku8Vr.js → CuiDataTable-1B8aaZQO.js} +1 -1
  53. package/dist/interface/assets/CuiLightControl-CSA1PYc8.js +1 -0
  54. package/dist/interface/assets/{CuiList-D1d-S_-K.js → CuiList-D-hOSNou.js} +1 -1
  55. package/dist/interface/assets/CuiMarkdownContent-D2bWw1GN.js +1 -0
  56. package/dist/interface/assets/{CuiMarkdownContent-bAQw35id.js → CuiMarkdownContent-gJ8gvmYA.js} +1 -1
  57. package/dist/interface/assets/CuiPluginCard-D1Hkyiy4.js +2 -0
  58. package/dist/interface/assets/{CuiPluginCategoryChip-CCnZkkL5.js → CuiPluginCategoryChip-qnn-HD6g.js} +1 -1
  59. package/dist/interface/assets/{CuiPluginOAuthButton-CTKbdFZJ.js → CuiPluginOAuthButton-CXextmBv.js} +2 -2
  60. package/dist/interface/assets/{CuiPluginTrustBadge-B_1b1iYf.js → CuiPluginTrustBadge-C-8MN2Qc.js} +1 -1
  61. package/dist/interface/assets/{CuiQRCode-B0CF6e-5.js → CuiQRCode-D1qmU4qU.js} +1 -1
  62. package/dist/interface/assets/CuiSchema-DnHOpBg4.js +1 -0
  63. package/dist/interface/assets/{CuiTopNavbarItem-Bs4iRb31.js → CuiTopNavbarItem-Csb3O1-n.js} +1 -1
  64. package/dist/interface/assets/Faces-C0QpQxuF.js +1 -0
  65. package/dist/interface/assets/FirstSteps-BqZQovY7.js +1 -0
  66. package/dist/interface/assets/{Floorplan-Da5gt435.css → Floorplan-Bxhdg4C2.css} +1 -1
  67. package/dist/interface/assets/Floorplan-CW-W5ZkV.js +1 -0
  68. package/dist/interface/assets/Instances-VSkiqKKf.js +1 -0
  69. package/dist/interface/assets/{Logs-Bnq3wEXS.js → Logs-DQFS2AUi.js} +2 -2
  70. package/dist/interface/assets/{Menu-M1PaPt5e.js → Menu-COvvZ_vz.js} +1 -1
  71. package/dist/interface/assets/Metrics-cvbQzChA.js +9 -0
  72. package/dist/interface/assets/OAuthDeviceFlow-3ZC2QCAs.js +1 -0
  73. package/dist/interface/assets/Plugin-DjQd3Y9J.js +1 -0
  74. package/dist/interface/assets/{PluginConsole-f5xf7P3Y.js → PluginConsole-BaUkghQD.js} +2 -2
  75. package/dist/interface/assets/PluginDetail-Ofj1hk2q.js +2 -0
  76. package/dist/interface/assets/{PluginSchema-DMjDPtOB.js → PluginSchema-f-ER7hlx.js} +1 -1
  77. package/dist/interface/assets/PluginSearch-Ce3S1HDv.js +1 -0
  78. package/dist/interface/assets/PluginSearch-D5eQsj5p.js +2 -0
  79. package/dist/interface/assets/{PluginUpdateProgress-FVY9RtmB.js → PluginUpdateProgress-BfYNLvVX.js} +1 -1
  80. package/dist/interface/assets/Plugins-DtDN9z0k.js +1 -0
  81. package/dist/interface/assets/Recordings-CQGnTZFt.js +1 -0
  82. package/dist/interface/assets/SensorEdit-BZtiJyoI.js +1 -0
  83. package/dist/interface/assets/{SensorHistory-5nCWisih.js → SensorHistory-BFkT3teu.js} +1 -1
  84. package/dist/interface/assets/{Sensors-BsLHVGqk.css → Sensors-CaKl4PQY.css} +1 -1
  85. package/dist/interface/assets/Sensors-DSR-AUqb.js +2 -0
  86. package/dist/interface/assets/{Settings-DsxjHlTb.js → Settings-DV3JZFjc.js} +1 -1
  87. package/dist/interface/assets/SettingsAccount-Cd5JPsv2.js +1 -0
  88. package/dist/interface/assets/SettingsAccount-D4ib7Asi.js +1 -0
  89. package/dist/interface/assets/SettingsAppearance-BYsQmdyo.js +1 -0
  90. package/dist/interface/assets/{SettingsAppearance-Dc5qomCw.js → SettingsAppearance-CC6StMAi.js} +1 -1
  91. package/dist/interface/assets/{SettingsBackup-xZ6fRlMp.js → SettingsBackup-BcVFCbhB.js} +1 -1
  92. package/dist/interface/assets/{SettingsList-M3eOiLIi.js → SettingsList-04HiM3OT.js} +1 -1
  93. package/dist/interface/assets/SettingsMqtt-XaJdsYPn.js +1 -0
  94. package/dist/interface/assets/SettingsNotifications-CUoYMHwr.js +1 -0
  95. package/dist/interface/assets/{SettingsPermissions-g6ppqzcI.js → SettingsPermissions-gFDNSlTh.js} +1 -1
  96. package/dist/interface/assets/SettingsRecordings-Bw64UZWe.js +1 -0
  97. package/dist/interface/assets/SettingsRemote-BnFW-uT-.js +2 -0
  98. package/dist/interface/assets/{SettingsSystem-EaqPKfS_.js → SettingsSystem-Cdjg5GNY.js} +2 -2
  99. package/dist/interface/assets/{SettingsUsers-B3m7YHzN.js → SettingsUsers-DphPL78H.js} +1 -1
  100. package/dist/interface/assets/{Terminal-BXQKgvte.js → Terminal-CrNjqzTs.js} +2 -2
  101. package/dist/interface/assets/{Updates-Difs3xzH.js → Updates-V5B9LSD-.js} +2 -2
  102. package/dist/interface/assets/{VariableInput-DNlqv5NS.js → VariableInput-n0TxKRqq.js} +1 -1
  103. package/dist/interface/assets/{VariableSuggestions-cR1Q4nfD.js → VariableSuggestions-C4LmaCAo.js} +1 -1
  104. package/dist/interface/assets/{VersionsHandler-BHyZgGCP.js → VersionsHandler-BPocJcb0.js} +2 -2
  105. package/dist/interface/assets/{VirtualSensorCreate-CSzlXcHk.js → VirtualSensorCreate-BPvbrzGS.js} +1 -1
  106. package/dist/interface/assets/Workers-DEvQNzUi.js +2 -0
  107. package/dist/interface/assets/{lightbulb-outline-BtraGBwO.js → alert-outline-DtiCgufF.js} +1 -1
  108. package/dist/interface/assets/{api-Bpl4Sd0_.js → api-BXmkXIE8.js} +1 -1
  109. package/dist/interface/assets/api-DO5wBndX.css +2 -0
  110. package/dist/interface/assets/api-x8zXlvtm.js +4 -0
  111. package/dist/interface/assets/{auth-O2tHbgZf.js → auth-BKJnreuu.js} +1 -1
  112. package/dist/interface/assets/{automations-C3f5HUy2.js → automations-CVuIXlAQ.js} +1 -1
  113. package/dist/interface/assets/cameraSources-C3cl6FVD.js +1 -0
  114. package/dist/interface/assets/cloudHandoff-BZvvihwX.js +1 -0
  115. package/dist/interface/assets/{config-BIxANITl.js → config-Sw94rZxF.js} +1 -1
  116. package/dist/interface/assets/{flowSchema-Cu_f8mZr.js → flowSchema-BOrDqdeG.js} +1 -1
  117. package/dist/interface/assets/{intercomService-JoKcW49f.js → intercomService-CfCIMUlA.js} +1 -1
  118. package/dist/interface/assets/main-Jl93jEZK.js +3 -0
  119. package/dist/interface/assets/{main-BF8Mg561.css → main-Qqk3RyYP.css} +1 -1
  120. package/dist/interface/assets/{mqtt-D_ToI2JF.js → mqtt-BaCMJJk_.js} +1 -1
  121. package/dist/interface/assets/nodeDefinitions-a8iyp3yk.js +1 -0
  122. package/dist/interface/assets/{notifications-BZCPhbuG.js → notifications-l-x8vA4D.js} +1 -1
  123. package/dist/interface/assets/{plugins-DXYT--j6.js → plugins-GA9v-eQx.js} +1 -1
  124. package/dist/interface/assets/{rooms-BXXhWbYq.js → rooms-DX7PBdpP.js} +1 -1
  125. package/dist/interface/assets/sensorIcons-BTgouEmX.js +1 -0
  126. package/dist/interface/assets/{sensors-ud0INKWh.js → sensors-LJkBCaMk.js} +1 -1
  127. package/dist/interface/assets/{server-_f9tZajz.js → server-dOx3q8o1.js} +1 -1
  128. package/dist/interface/assets/theme-DgrclY58.js +1 -0
  129. package/dist/interface/assets/types-CSWXRySW.js +1 -0
  130. package/dist/interface/assets/{types-CCCcoJBr.js → types-D19FOdYo.js} +1 -1
  131. package/dist/interface/assets/types-Yq0FH8fa.js +1 -0
  132. package/dist/interface/assets/ungrouped-B_u9a5wm.js +1 -0
  133. package/dist/interface/assets/{ungrouped-uv64nr5n.css → ungrouped-DTYy_Pud.css} +1 -1
  134. package/dist/interface/assets/{updates-i-Ukebxe.js → updates-BVN6uGXy.js} +1 -1
  135. package/dist/interface/assets/{useAppVersion-DY0h_lct.js → useAppVersion-BUDIkitU.js} +1 -1
  136. package/dist/interface/assets/useBackupRestore-CnSZNCC8.js +1 -0
  137. package/dist/interface/assets/{useCameraOptions-C-rXBi8d.js → useCameraOptions-Cgb4eV2d.js} +1 -1
  138. package/dist/interface/assets/{useLogsSocket-Bigb4u3j.js → useLogsSocket-CGKtL049.js} +1 -1
  139. package/dist/interface/assets/{useNavLayout-C9FWniNC.js → useNavLayout-Dcngcb73.js} +1 -1
  140. package/dist/interface/assets/{usePermissions-C_4RPiE4.js → usePermissions-zJF4LCPm.js} +1 -1
  141. package/dist/interface/assets/{usePluginUpdates-CQwLK3om.js → usePluginUpdates-DP--lRxm.js} +1 -1
  142. package/dist/interface/assets/{usePushRegistration-sYPibp5s.js → usePushRegistration-BhPBp28J.js} +1 -1
  143. package/dist/interface/assets/{useServerRestart-B0Cfu10q.js → useServerRestart-BpCDYbPH.js} +1 -1
  144. package/dist/interface/assets/{useStreamStatus-BLXdLAvK.js → useStreamStatus-BoVMk6KT.js} +1 -1
  145. package/dist/interface/assets/{useTabSwipe-C3qfclkm.js → useTabSwipe--t-Qqa31.js} +1 -1
  146. package/dist/interface/assets/{useUpdateChannel-DvO5NQPE.js → useUpdateChannel-DAuhU-__.js} +1 -1
  147. package/dist/interface/assets/{useUpdatesSocket-C6wTDGIg.js → useUpdatesSocket-C-j3b3tU.js} +1 -1
  148. package/dist/interface/assets/{useUserOptions-B9T46skV.js → useUserOptions-CcLVC73O.js} +1 -1
  149. package/dist/interface/assets/vendor-cameraui-phsC2Mmi.js +2326 -0
  150. package/dist/interface/assets/vendor-core-C0ZWoGJD.js +1 -0
  151. package/dist/interface/assets/{vendor-markdown-pUmink8s.js → vendor-markdown-aj6qAoLx.js} +3 -3
  152. package/dist/interface/assets/{vendor-primevue-CvHDsVi_.js → vendor-primevue-nPess0JU.js} +76 -76
  153. package/dist/interface/assets/vendor-zod-CJ7LAMqQ.js +99 -0
  154. package/dist/interface/ha/404-PedrGUiq.js +60 -0
  155. package/dist/interface/ha/About-l5fkBqG7.js +55 -0
  156. package/dist/interface/ha/Automation-CaSlGjT4.js +2015 -0
  157. package/dist/interface/ha/AutomationImport-BNavtjDq.js +206 -0
  158. package/dist/interface/ha/AutomationStore-BVSW8TVt.js +335 -0
  159. package/dist/interface/ha/AutomationStoreDetail-DHZwlpz0.js +122 -0
  160. package/dist/interface/ha/Automations-CZ2jvH6d.js +437 -0
  161. package/dist/interface/ha/Camera-CggUrrPm.js +625 -0
  162. package/dist/interface/ha/CameraConsole-DpzF48TF.js +52 -0
  163. package/dist/interface/ha/Cameras-K-kQF5tG.js +1970 -0
  164. package/dist/interface/ha/Camview-zJVP7JwZ.js +1337 -0
  165. package/dist/interface/ha/CertificateUpload-DbBQ87OT.js +117 -0
  166. package/dist/interface/ha/Config-Bsud2DYI.js +356 -0
  167. package/dist/interface/ha/ConfigActionCameraControl-Czkfw_NO.js +152 -0
  168. package/dist/interface/ha/ConfigActionDelay-BHug57u7.js +61 -0
  169. package/dist/interface/ha/ConfigActionHttp-LfbxbfgG.js +134 -0
  170. package/dist/interface/ha/ConfigActionImageInput-Ce2GJzCm.js +171 -0
  171. package/dist/interface/ha/ConfigActionMqtt-KmCGcNZb.js +81 -0
  172. package/dist/interface/ha/ConfigActionNotification-DUMY_3IT.js +199 -0
  173. package/dist/interface/ha/ConfigActionNotificationControl-B9Z2i5WR.js +111 -0
  174. package/dist/interface/ha/ConfigActionOutput-CX-ZQjcs.js +98 -0
  175. package/dist/interface/ha/ConfigActionPlugin-y5PuPwdk.js +172 -0
  176. package/dist/interface/ha/ConfigActionSensor-CC39Rpxi.js +139 -0
  177. package/dist/interface/ha/ConfigActionSnapshot-CWyhx6rk.js +48 -0
  178. package/dist/interface/ha/ConfigActionVariable-BNRLCthd.js +88 -0
  179. package/dist/interface/ha/ConfigConditionIfElse-BayS5_Dr.js +124 -0
  180. package/dist/interface/ha/ConfigConditionSensorState-DLXNqL-R.js +192 -0
  181. package/dist/interface/ha/ConfigConditionSwitch-BBesQgWi.js +128 -0
  182. package/dist/interface/ha/ConfigConditionTime-aD8mk2aa.js +95 -0
  183. package/dist/interface/ha/ConfigSensorValueInput-5JzesEuD.js +169 -0
  184. package/dist/interface/ha/ConfigTriggerDetection--BcjPuyh.js +241 -0
  185. package/dist/interface/ha/ConfigTriggerGeofence-BZi5a2Yv.js +4896 -0
  186. package/dist/interface/ha/ConfigTriggerManual-ConxhgNx.js +14 -0
  187. package/dist/interface/ha/ConfigTriggerMqtt-B6C9injX.js +134 -0
  188. package/dist/interface/ha/ConfigTriggerSchedule-Vv5iNKL3.js +72 -0
  189. package/dist/interface/ha/ConfigTriggerSensor-beixHfSD.js +73 -0
  190. package/dist/interface/ha/ConfigTriggerSystem-BHDpn485.js +188 -0
  191. package/dist/interface/ha/ConfigTriggerWebhook-D9cuCU_p.js +94 -0
  192. package/dist/interface/ha/Console-CbQnrt6X.js +348 -0
  193. package/dist/interface/ha/CuiAutomationRunsDialog-CckgCRNS.js +130 -0
  194. package/dist/interface/ha/CuiBottomSheet-juhGdTsO.js +270 -0
  195. package/dist/interface/ha/CuiCameraRecordings-CLzZiXhk.js +552 -0
  196. package/dist/interface/ha/CuiCameraShares-Dzx1jZGE.js +121 -0
  197. package/dist/interface/ha/CuiCameraTable-ug0ik9N-.js +153 -0
  198. package/dist/interface/ha/CuiChartTable-7EnAA-WG.js +6784 -0
  199. package/dist/interface/ha/CuiConsole-DOnyBSL7.js +244 -0
  200. package/dist/interface/ha/CuiDataTable-Cx9GBqsV.js +8725 -0
  201. package/dist/interface/ha/CuiList-C45psxFZ.js +57 -0
  202. package/dist/interface/ha/CuiMarkdownContent-D7sCtnNQ.js +4716 -0
  203. package/dist/interface/ha/CuiPluginCard-ChLIfOms.js +769 -0
  204. package/dist/interface/ha/CuiPluginOAuthButton-B6vPOEx2.js +105 -0
  205. package/dist/interface/ha/CuiPluginTrustBadge-BvPV93D0.js +123 -0
  206. package/dist/interface/ha/CuiQRCode-Djr3z54t.js +86 -0
  207. package/dist/interface/ha/CuiSchema-dl7TXv-k.js +963 -0
  208. package/dist/interface/ha/CuiTopNavbarItem-BXoda5eM.js +141 -0
  209. package/dist/interface/ha/Faces-DnqWMGWW.js +1281 -0
  210. package/dist/interface/ha/FirstSteps-CFawb017.js +251 -0
  211. package/dist/interface/ha/Floorplan-Mv-Ootly.js +3677 -0
  212. package/dist/interface/ha/Instances-DJjZ3btI.js +680 -0
  213. package/dist/interface/ha/Logs-CLFhW1xq.js +418 -0
  214. package/dist/interface/ha/Menu-D7QTRqMJ.js +161 -0
  215. package/dist/interface/ha/Metrics-CCvFtezL.js +1330 -0
  216. package/dist/interface/ha/OAuthDeviceFlow-4YupTNsK.js +112 -0
  217. package/dist/interface/ha/Plugin-BHU0yhBa.js +1404 -0
  218. package/dist/interface/ha/PluginConsole-CNrLuFQM.js +56 -0
  219. package/dist/interface/ha/PluginDetail-Bm3X-xN4.js +230 -0
  220. package/dist/interface/ha/PluginSearch-C0be8cYD.js +475 -0
  221. package/dist/interface/ha/PluginUpdateProgress-DVvgYMLG.js +34 -0
  222. package/dist/interface/ha/Plugins-R-uz0Se-.js +705 -0
  223. package/dist/interface/ha/Recordings-DAwbihs8.js +1463 -0
  224. package/dist/interface/ha/SensorEdit-BxE1cRLR.js +1460 -0
  225. package/dist/interface/ha/SensorHistory-DUGlH2pU.js +54 -0
  226. package/dist/interface/ha/Sensors-Cax5RlPH.js +1358 -0
  227. package/dist/interface/ha/Settings-DKtlCoyz.js +218 -0
  228. package/dist/interface/ha/SettingsAccount-2e_Vjpev.js +970 -0
  229. package/dist/interface/ha/SettingsAppearance-DCm60FhX.js +220 -0
  230. package/dist/interface/ha/SettingsBackup-CiM_nNWt.js +556 -0
  231. package/dist/interface/ha/SettingsList-D4D3cmLo.js +40 -0
  232. package/dist/interface/ha/SettingsMqtt-CID4L0PD.js +526 -0
  233. package/dist/interface/ha/SettingsNotifications-DGJkhm8T.js +529 -0
  234. package/dist/interface/ha/SettingsPermissions-Cd0rtgli.js +84 -0
  235. package/dist/interface/ha/SettingsRecordings-pR4L0wgy.js +151 -0
  236. package/dist/interface/ha/SettingsRemote-CYg-LSQK.js +1810 -0
  237. package/dist/interface/ha/SettingsSystem-BeYJN1Ut.js +376 -0
  238. package/dist/interface/ha/SettingsUsers-F4CZggSR.js +379 -0
  239. package/dist/interface/ha/Terminal-iQahUx9P.js +631 -0
  240. package/dist/interface/ha/Updates-ClQ77p-o.js +356 -0
  241. package/dist/interface/ha/VariableInput-BOHBmNff.js +52 -0
  242. package/dist/interface/ha/VariableSuggestions-BE06z6SW.js +201 -0
  243. package/dist/interface/ha/VersionsHandler-Cx9u0oj8.js +211 -0
  244. package/dist/interface/ha/VirtualSensorCreate-CvSzLo4N.js +101 -0
  245. package/dist/interface/ha/Workers-CEJtdSu-.js +765 -0
  246. package/dist/interface/ha/accordion-BT2wHwK8.js +577 -0
  247. package/dist/interface/ha/account-B1xL2wxD.js +19 -0
  248. package/dist/interface/ha/ace-Dh61T4RV.js +13238 -0
  249. package/dist/interface/ha/ace.config-HyzcNHkM.js +1429 -0
  250. package/dist/interface/ha/alert-circle-CLRn5GAd.js +19 -0
  251. package/dist/interface/ha/alert-outline-CGTMAqXf.js +75 -0
  252. package/dist/interface/ha/api-BmNBy1ay.js +29 -0
  253. package/dist/interface/ha/api-CWJkvtnM.js +60866 -0
  254. package/dist/interface/ha/arrow-left-DkvcResi.js +19 -0
  255. package/dist/interface/ha/auth-X6tkVYJs.js +271 -0
  256. package/dist/interface/ha/autocomplete-L_jK3s3m.js +1373 -0
  257. package/dist/interface/ha/automationBlueprint-D1TiCF7R.js +249 -0
  258. package/dist/interface/ha/back-filled-Cxzg5vQg.js +20 -0
  259. package/dist/interface/ha/base-D_LAf3cS.js +26 -0
  260. package/dist/interface/ha/base-c1lsE5TW.js +125 -0
  261. package/dist/interface/ha/bell-ring-xrXdzNHW.js +19 -0
  262. package/dist/interface/ha/brain-DyOOk3m3.js +19 -0
  263. package/dist/interface/ha/browser-Bxx7joo_.js +1227 -0
  264. package/dist/interface/ha/browserconfig.xml +11 -0
  265. package/dist/interface/ha/button-BlYuI0Q7.js +406 -0
  266. package/dist/interface/ha/cameraui-cards.js +190 -0
  267. package/dist/interface/ha/cards-CNOyNWMA.js +13316 -0
  268. package/dist/interface/ha/cctv-Bz6BH0ns.js +19 -0
  269. package/dist/interface/ha/check-circle-D_wDxrLs.js +19 -0
  270. package/dist/interface/ha/chevron-down-P5MtUhJO.js +19 -0
  271. package/dist/interface/ha/chip-DxGABeun.js +149 -0
  272. package/dist/interface/ha/clock-outline-JxApewmA.js +19 -0
  273. package/dist/interface/ha/close-Eq3txTBS.js +19 -0
  274. package/dist/interface/ha/close-circle-C2nTtN_-.js +19 -0
  275. package/dist/interface/ha/config-E4Jkelkr.js +116 -0
  276. package/dist/interface/ha/content-copy-DpPXKtKE.js +19 -0
  277. package/dist/interface/ha/copy-C48Ur26H.js +22 -0
  278. package/dist/interface/ha/datepicker-BuvKhBWJ.js +3236 -0
  279. package/dist/interface/ha/definitions-E-sY7Cxg.js +23 -0
  280. package/dist/interface/ha/delete-D-m8mqly.js +19 -0
  281. package/dist/interface/ha/dist-B7lgvbyI.js +279 -0
  282. package/dist/interface/ha/dist-Ca9_5rzq.js +3457 -0
  283. package/dist/interface/ha/divider-jkWvVbPJ.js +110 -0
  284. package/dist/interface/ha/download-Cnr7IQKX.js +19 -0
  285. package/dist/interface/ha/esm-1sIZN4t7.js +6 -0
  286. package/dist/interface/ha/esm-6hnPZcZr.js +15 -0
  287. package/dist/interface/ha/esm-B72ViJ7F.js +5 -0
  288. package/dist/interface/ha/esm-BGlkcEes.js +156 -0
  289. package/dist/interface/ha/esm-BKPZuThK.js +5 -0
  290. package/dist/interface/ha/esm-BMx7MsZ_.js +15 -0
  291. package/dist/interface/ha/esm-CChFtwcx.js +21 -0
  292. package/dist/interface/ha/esm-CMTmAdHP.js +5 -0
  293. package/dist/interface/ha/esm-CkoEL9YX.js +7 -0
  294. package/dist/interface/ha/esm-CvxDASXR.js +23 -0
  295. package/dist/interface/ha/esm-Demxl4zQ.js +5 -0
  296. package/dist/interface/ha/esm-DiBhi9zp.js +5 -0
  297. package/dist/interface/ha/esm-XFPB9fYb.js +15 -0
  298. package/dist/interface/ha/eventLabels-B4C1_4vT.js +42 -0
  299. package/dist/interface/ha/eye-off-AdumIw0H.js +33 -0
  300. package/dist/interface/ha/eye-off-outline-DO3xfiua.js +19 -0
  301. package/dist/interface/ha/fonts/InterVariable.woff2 +0 -0
  302. package/dist/interface/ha/history-BoZc8mgf.js +19 -0
  303. package/dist/interface/ha/home-am0tRTsk.js +19 -0
  304. package/dist/interface/ha/information-outline-DIdNxPCN.js +19 -0
  305. package/dist/interface/ha/inputicon-6-vaPLbw.js +324 -0
  306. package/dist/interface/ha/inputnumber-B1Buq8Nc.js +1033 -0
  307. package/dist/interface/ha/inputtext-DGIESrd0.js +257 -0
  308. package/dist/interface/ha/intercomService-jB2mTgsn.js +1406 -0
  309. package/dist/interface/ha/message-C8U_kMBA.js +244 -0
  310. package/dist/interface/ha/minus-DKa9TXat.js +19 -0
  311. package/dist/interface/ha/minus-QyTgaT70.js +46 -0
  312. package/dist/interface/ha/mqtt-BmDCmG9h.js +56 -0
  313. package/dist/interface/ha/multiselect-BbgV_fPx.js +1492 -0
  314. package/dist/interface/ha/native-BaNeloQn.js +35 -0
  315. package/dist/interface/ha/native-C8PbNqsJ.js +29 -0
  316. package/dist/interface/ha/notifications-B51yvrGL.js +159 -0
  317. package/dist/interface/ha/og-share.png +0 -0
  318. package/dist/interface/ha/pencil-outline-BqfTDXIh.js +19 -0
  319. package/dist/interface/ha/pinia-3D39Do4a.js +6934 -0
  320. package/dist/interface/ha/platformLabels-C3d1PLg-.js +27 -0
  321. package/dist/interface/ha/plugin-DAGqBiG_.js +38 -0
  322. package/dist/interface/ha/plugins-dkWbXWVM.js +592 -0
  323. package/dist/interface/ha/plus-CNdrByQb.js +46 -0
  324. package/dist/interface/ha/plus-d_caPq5l.js +19 -0
  325. package/dist/interface/ha/progressbar-CIoPoMSe.js +95 -0
  326. package/dist/interface/ha/protocol-BB4jdtUC-K1r3LFCq.js +706 -0
  327. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1136x640.png +0 -0
  328. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1334x750.png +0 -0
  329. package/dist/interface/ha/pwa/apple-splash-landscape-dark-1792x828.png +0 -0
  330. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2048x1536.png +0 -0
  331. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2160x1620.png +0 -0
  332. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2208x1242.png +0 -0
  333. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2224x1668.png +0 -0
  334. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2388x1668.png +0 -0
  335. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2436x1125.png +0 -0
  336. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2532x1170.png +0 -0
  337. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2556x1179.png +0 -0
  338. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2688x1242.png +0 -0
  339. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2732x2048.png +0 -0
  340. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2778x1284.png +0 -0
  341. package/dist/interface/ha/pwa/apple-splash-landscape-dark-2796x1290.png +0 -0
  342. package/dist/interface/ha/pwa/apple-splash-landscape-light-1136x640.png +0 -0
  343. package/dist/interface/ha/pwa/apple-splash-landscape-light-1334x750.png +0 -0
  344. package/dist/interface/ha/pwa/apple-splash-landscape-light-1792x828.png +0 -0
  345. package/dist/interface/ha/pwa/apple-splash-landscape-light-2048x1536.png +0 -0
  346. package/dist/interface/ha/pwa/apple-splash-landscape-light-2160x1620.png +0 -0
  347. package/dist/interface/ha/pwa/apple-splash-landscape-light-2208x1242.png +0 -0
  348. package/dist/interface/ha/pwa/apple-splash-landscape-light-2224x1668.png +0 -0
  349. package/dist/interface/ha/pwa/apple-splash-landscape-light-2388x1668.png +0 -0
  350. package/dist/interface/ha/pwa/apple-splash-landscape-light-2436x1125.png +0 -0
  351. package/dist/interface/ha/pwa/apple-splash-landscape-light-2532x1170.png +0 -0
  352. package/dist/interface/ha/pwa/apple-splash-landscape-light-2556x1179.png +0 -0
  353. package/dist/interface/ha/pwa/apple-splash-landscape-light-2688x1242.png +0 -0
  354. package/dist/interface/ha/pwa/apple-splash-landscape-light-2732x2048.png +0 -0
  355. package/dist/interface/ha/pwa/apple-splash-landscape-light-2778x1284.png +0 -0
  356. package/dist/interface/ha/pwa/apple-splash-landscape-light-2796x1290.png +0 -0
  357. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1125x2436.png +0 -0
  358. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1170x2532.png +0 -0
  359. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1179x2556.png +0 -0
  360. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1242x2208.png +0 -0
  361. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1242x2688.png +0 -0
  362. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1284x2778.png +0 -0
  363. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1290x2796.png +0 -0
  364. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1536x2048.png +0 -0
  365. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1620x2160.png +0 -0
  366. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1668x2224.png +0 -0
  367. package/dist/interface/ha/pwa/apple-splash-portrait-dark-1668x2388.png +0 -0
  368. package/dist/interface/ha/pwa/apple-splash-portrait-dark-2048x2732.png +0 -0
  369. package/dist/interface/ha/pwa/apple-splash-portrait-dark-640x1136.png +0 -0
  370. package/dist/interface/ha/pwa/apple-splash-portrait-dark-750x1334.png +0 -0
  371. package/dist/interface/ha/pwa/apple-splash-portrait-dark-828x1792.png +0 -0
  372. package/dist/interface/ha/pwa/apple-splash-portrait-light-1125x2436.png +0 -0
  373. package/dist/interface/ha/pwa/apple-splash-portrait-light-1170x2532.png +0 -0
  374. package/dist/interface/ha/pwa/apple-splash-portrait-light-1179x2556.png +0 -0
  375. package/dist/interface/ha/pwa/apple-splash-portrait-light-1242x2208.png +0 -0
  376. package/dist/interface/ha/pwa/apple-splash-portrait-light-1242x2688.png +0 -0
  377. package/dist/interface/ha/pwa/apple-splash-portrait-light-1284x2778.png +0 -0
  378. package/dist/interface/ha/pwa/apple-splash-portrait-light-1290x2796.png +0 -0
  379. package/dist/interface/ha/pwa/apple-splash-portrait-light-1536x2048.png +0 -0
  380. package/dist/interface/ha/pwa/apple-splash-portrait-light-1620x2160.png +0 -0
  381. package/dist/interface/ha/pwa/apple-splash-portrait-light-1668x2224.png +0 -0
  382. package/dist/interface/ha/pwa/apple-splash-portrait-light-1668x2388.png +0 -0
  383. package/dist/interface/ha/pwa/apple-splash-portrait-light-2048x2732.png +0 -0
  384. package/dist/interface/ha/pwa/apple-splash-portrait-light-640x1136.png +0 -0
  385. package/dist/interface/ha/pwa/apple-splash-portrait-light-750x1334.png +0 -0
  386. package/dist/interface/ha/pwa/apple-splash-portrait-light-828x1792.png +0 -0
  387. package/dist/interface/ha/pwa/apple-touch-icon-180x180.png +0 -0
  388. package/dist/interface/ha/pwa/favicon-16.ico +0 -0
  389. package/dist/interface/ha/pwa/favicon-32.ico +0 -0
  390. package/dist/interface/ha/pwa/favicon-48.ico +0 -0
  391. package/dist/interface/ha/pwa/favicon-64.ico +0 -0
  392. package/dist/interface/ha/pwa/logo.svg +1 -0
  393. package/dist/interface/ha/pwa/maskable-icon-1240x600.png +0 -0
  394. package/dist/interface/ha/pwa/maskable-icon-512x512.png +0 -0
  395. package/dist/interface/ha/pwa/maskable-icon-620x300.png +0 -0
  396. package/dist/interface/ha/pwa/pwa-1024x1024.png +0 -0
  397. package/dist/interface/ha/pwa/pwa-120x120.png +0 -0
  398. package/dist/interface/ha/pwa/pwa-144x144.png +0 -0
  399. package/dist/interface/ha/pwa/pwa-152x152.png +0 -0
  400. package/dist/interface/ha/pwa/pwa-167x167.png +0 -0
  401. package/dist/interface/ha/pwa/pwa-180x180.png +0 -0
  402. package/dist/interface/ha/pwa/pwa-192x192.png +0 -0
  403. package/dist/interface/ha/pwa/pwa-24x24.png +0 -0
  404. package/dist/interface/ha/pwa/pwa-300x300.png +0 -0
  405. package/dist/interface/ha/pwa/pwa-36x36.png +0 -0
  406. package/dist/interface/ha/pwa/pwa-48x48.png +0 -0
  407. package/dist/interface/ha/pwa/pwa-50x50.png +0 -0
  408. package/dist/interface/ha/pwa/pwa-64x64.png +0 -0
  409. package/dist/interface/ha/pwa/pwa-72x72.png +0 -0
  410. package/dist/interface/ha/pwa/pwa-88x88.png +0 -0
  411. package/dist/interface/ha/pwa/pwa-96x96.png +0 -0
  412. package/dist/interface/ha/radar-C7lI26j4.js +19 -0
  413. package/dist/interface/ha/refresh-BIhepekY.js +19 -0
  414. package/dist/interface/ha/ring-resize-VS4MSeBv.js +16 -0
  415. package/dist/interface/ha/ripple-BilzxWfY.js +2928 -0
  416. package/dist/interface/ha/robots.txt +2 -0
  417. package/dist/interface/ha/rolldown-runtime-CEFd7nDs.js +30 -0
  418. package/dist/interface/ha/rooms-B-FUXQ1p.js +45 -0
  419. package/dist/interface/ha/round-alt-arrow-left-bold-CWEg-ZLF.js +37 -0
  420. package/dist/interface/ha/runtime-core.esm-bundler-D8slQ3BU.js +3295 -0
  421. package/dist/interface/ha/search-CoOsbgeb.js +19 -0
  422. package/dist/interface/ha/select-DjWkRqsI.js +1382 -0
  423. package/dist/interface/ha/server-CKJKoFfg.js +239 -0
  424. package/dist/interface/ha/settings-EKkSQLzv.js +22 -0
  425. package/dist/interface/ha/source-branch-CZwSOrQA.js +19 -0
  426. package/dist/interface/ha/speeddial-Dv9txWte.js +682 -0
  427. package/dist/interface/ha/spinner-D6iUldg9.js +46 -0
  428. package/dist/interface/ha/synapse-CGrlyQDE.js +35 -0
  429. package/dist/interface/ha/tag-CXgC9OZ6.js +95 -0
  430. package/dist/interface/ha/textarea-DvLkfUX7.js +130 -0
  431. package/dist/interface/ha/tooltip-BIrD_hC8.js +277 -0
  432. package/dist/interface/ha/trash-2-C4zSCZfs.js +23 -0
  433. package/dist/interface/ha/trash-can-outline-DCqsCOd2.js +19 -0
  434. package/dist/interface/ha/trash-fill-BPsrwR8X.js +21 -0
  435. package/dist/interface/ha/types-C7MzwoQR.js +28 -0
  436. package/dist/interface/ha/types-J_J0HKlK.js +1032 -0
  437. package/dist/interface/ha/ungrouped-BpaM88Y-.js +1116 -0
  438. package/dist/interface/ha/updates-BdVmkKAa.js +341 -0
  439. package/dist/interface/ha/upload-2xJkVPZE.js +19 -0
  440. package/dist/interface/ha/upload-wQHBRZX_.js +23 -0
  441. package/dist/interface/ha/useAppVersion-DzDaOsKc.js +22 -0
  442. package/dist/interface/ha/useLogsSocket-CWUE-KXV.js +59 -0
  443. package/dist/interface/ha/useNavLayout-BqpyvD2F.js +125 -0
  444. package/dist/interface/ha/usePermissions-BIUeW4ef.js +72 -0
  445. package/dist/interface/ha/useServerRestart-0c4gA1fG.js +23 -0
  446. package/dist/interface/ha/useTabSwipe-C8LdKw23.js +45 -0
  447. package/dist/interface/ha/useUpdateChannel-CHVLthZB.js +22 -0
  448. package/dist/interface/ha/useUpdatesSocket-CaxEs511.js +34 -0
  449. package/dist/interface/ha/useUserOptions-Rk_71WAK.js +15 -0
  450. package/dist/interface/ha/utils-DYtBrGDz.js +7 -0
  451. package/dist/interface/ha/virtualscroller-s_gNqN5p.js +996 -0
  452. package/dist/interface/ha/vue-flow-background-B0Vu4-8M.js +6840 -0
  453. package/dist/interface/ha/vue-i18n-Dcb07o5U.js +2409 -0
  454. package/dist/interface/ha/web-0Kyq65na.js +78 -0
  455. package/dist/interface/ha/web-B7Dt2zZN.js +340 -0
  456. package/dist/interface/ha/web-BNdrPSpb.js +102 -0
  457. package/dist/interface/ha/web-BPBZBCtX.js +8 -0
  458. package/dist/interface/ha/web-BjKL51lK-qwJdIpM1.js +221 -0
  459. package/dist/interface/ha/web-C01i9qI1.js +57 -0
  460. package/dist/interface/ha/web-CH3JeXWa.js +211 -0
  461. package/dist/interface/ha/web-Cpm1-DVe.js +33 -0
  462. package/dist/interface/ha/web-DqRMXrnx.js +31 -0
  463. package/dist/interface/ha/web-DtVT7WYt.js +17 -0
  464. package/dist/interface/ha/web-DxJQZCiR.js +59 -0
  465. package/dist/interface/ha/web-I7Urp4AE.js +46 -0
  466. package/dist/interface/ha/web-aSaPk7kr.js +57 -0
  467. package/dist/interface/ha/web-pMey9p3Y.js +79 -0
  468. package/dist/interface/ha/xterm-B6xA6E5i.js +14833 -0
  469. package/dist/interface/ha/zoom-in-CNVB9H3D.js +41 -0
  470. package/dist/interface/index.html +29 -29
  471. package/dist/interface/sw.js +1 -1
  472. package/dist/server/package.json +10 -10
  473. package/dist/server/requirements.txt +3 -3
  474. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +9 -6
  475. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +2 -2
  476. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +4 -2
  477. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +8 -0
  478. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/device.py +4 -3
  479. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/__init__.py +6 -0
  480. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/internal/sensor_rpc.py +17 -6
  481. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/manager/__init__.py +24 -70
  482. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +46 -19
  483. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +2 -0
  484. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +65 -8
  485. package/dist/server/src/api/database/index.d.ts +1 -1
  486. package/dist/server/src/api/database/index.js +4 -32
  487. package/dist/server/src/api/database/index.js.map +1 -1
  488. package/dist/server/src/api/database/migrations/v2-1-17.d.ts +3 -0
  489. package/dist/server/src/api/database/migrations/v2-1-17.js +14 -0
  490. package/dist/server/src/api/database/migrations/v2-1-17.js.map +1 -0
  491. package/dist/server/src/api/database/migrations/v2-1-18.d.ts +3 -0
  492. package/dist/server/src/api/database/migrations/v2-1-18.js +24 -0
  493. package/dist/server/src/api/database/migrations/v2-1-18.js.map +1 -0
  494. package/dist/server/src/api/database/record-schemas.d.ts +1 -0
  495. package/dist/server/src/api/database/types.d.ts +4 -3
  496. package/dist/server/src/api/schemas/cameras.schema.d.ts +53 -15
  497. package/dist/server/src/api/schemas/cameras.schema.js +5 -1
  498. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  499. package/dist/server/src/api/schemas/users.schema.d.ts +7 -0
  500. package/dist/server/src/api/schemas/users.schema.js +1 -1
  501. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  502. package/dist/server/src/api/services/cameras.service.js +14 -21
  503. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  504. package/dist/server/src/api/services/sensors.service.d.ts +3 -3
  505. package/dist/server/src/api/services/sensors.service.js +3 -24
  506. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  507. package/dist/server/src/api/services/server.service.js +1 -1
  508. package/dist/server/src/api/services/server.service.js.map +1 -1
  509. package/dist/server/src/api/utils/cert.js +18 -8
  510. package/dist/server/src/api/utils/cert.js.map +1 -1
  511. package/dist/server/src/api/utils/regex.d.ts +2 -0
  512. package/dist/server/src/api/utils/regex.js +2 -0
  513. package/dist/server/src/api/utils/regex.js.map +1 -1
  514. package/dist/server/src/api/websocket/nsp/sensors.d.ts +3 -1
  515. package/dist/server/src/api/websocket/nsp/sensors.js +13 -3
  516. package/dist/server/src/api/websocket/nsp/sensors.js.map +1 -1
  517. package/dist/server/src/camera/decoder/debug/detection-record.d.ts +3 -1
  518. package/dist/server/src/camera/decoder/debug/detection-record.js +6 -2
  519. package/dist/server/src/camera/decoder/debug/detection-record.js.map +1 -1
  520. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +2 -0
  521. package/dist/server/src/camera/decoder/detection-coordinator.js +44 -25
  522. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  523. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +3 -1
  524. package/dist/server/src/camera/decoder/detection-pipeline.js +3 -22
  525. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  526. package/dist/server/src/camera/decoder/event-manager.d.ts +4 -3
  527. package/dist/server/src/camera/decoder/event-manager.js +17 -5
  528. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  529. package/dist/server/src/camera/decoder/event-thumbnailer.d.ts +3 -0
  530. package/dist/server/src/camera/decoder/event-thumbnailer.js +13 -8
  531. package/dist/server/src/camera/decoder/event-thumbnailer.js.map +1 -1
  532. package/dist/server/src/camera/decoder/event-trace.d.ts +58 -0
  533. package/dist/server/src/camera/decoder/event-trace.js +118 -0
  534. package/dist/server/src/camera/decoder/event-trace.js.map +1 -0
  535. package/dist/server/src/camera/decoder/nvr-sink.d.ts +2 -0
  536. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  537. package/dist/server/src/camera/decoder/reconnect-backoff.js +1 -1
  538. package/dist/server/src/camera/decoder/reconnect-backoff.js.map +1 -1
  539. package/dist/server/src/camera/decoder/sources/analysis-source.d.ts +1 -0
  540. package/dist/server/src/camera/decoder/sources/buffered-source.d.ts +7 -1
  541. package/dist/server/src/camera/decoder/sources/buffered-source.js +27 -15
  542. package/dist/server/src/camera/decoder/sources/buffered-source.js.map +1 -1
  543. package/dist/server/src/camera/decoder/sources/frame-handle.d.ts +2 -1
  544. package/dist/server/src/camera/decoder/sources/frame-handle.js +5 -3
  545. package/dist/server/src/camera/decoder/sources/frame-handle.js.map +1 -1
  546. package/dist/server/src/camera/decoder/sources/frame-source.d.ts +1 -0
  547. package/dist/server/src/camera/decoder/sources/frame-source.js +7 -2
  548. package/dist/server/src/camera/decoder/sources/frame-source.js.map +1 -1
  549. package/dist/server/src/camera/decoder/sources/rtp-index.d.ts +9 -0
  550. package/dist/server/src/camera/decoder/sources/rtp-index.js +24 -0
  551. package/dist/server/src/camera/decoder/sources/rtp-index.js.map +1 -0
  552. package/dist/server/src/camera/decoder/worker.js +1 -0
  553. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  554. package/dist/server/src/camera/streaming/rtp-session.js +12 -9
  555. package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
  556. package/dist/server/src/go2rtc/types.d.ts +1 -1
  557. package/dist/server/src/go2rtc/types.js +1 -1
  558. package/dist/server/src/go2rtc/types.js.map +1 -1
  559. package/dist/server/src/plugins/runtime/node/child.js +1 -0
  560. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  561. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +3 -0
  562. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  563. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.d.ts +2 -5
  564. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +95 -24
  565. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
  566. package/dist/server/src/plugins/runtime/python/child.py +1 -0
  567. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +9 -0
  568. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -1
  569. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +185 -88
  570. package/dist/server/src/plugins/runtime/python/typings.py +18 -0
  571. package/dist/server/src/rpc/interfaces/sensor.d.ts +19 -4
  572. package/dist/server/src/sensors/discovery.d.ts +1 -1
  573. package/dist/server/src/sensors/discovery.js +12 -21
  574. package/dist/server/src/sensors/discovery.js.map +1 -1
  575. package/dist/server/src/sensors/registry.d.ts +6 -2
  576. package/dist/server/src/sensors/registry.js +75 -6
  577. package/dist/server/src/sensors/registry.js.map +1 -1
  578. package/dist/server/src/services/config/defaults.js +1 -1
  579. package/dist/server/src/services/config/defaults.js.map +1 -1
  580. package/dist/server/src/services/config/index.js +4 -6
  581. package/dist/server/src/services/config/index.js.map +1 -1
  582. package/dist/server/src/utils/camera.d.ts +12 -2
  583. package/dist/server/src/utils/camera.js +27 -1
  584. package/dist/server/src/utils/camera.js.map +1 -1
  585. package/dist/server/src/workers/pairing.js +17 -8
  586. package/dist/server/src/workers/pairing.js.map +1 -1
  587. package/package.json +10 -10
  588. package/dist/interface/assets/Automation-COZFDnKK.js +0 -3
  589. package/dist/interface/assets/AutomationStoreDetail-BQ2fER7x.js +0 -2
  590. package/dist/interface/assets/Automations-QmfGIQXO.js +0 -2
  591. package/dist/interface/assets/Camera-g95slrO0.js +0 -2
  592. package/dist/interface/assets/Cameras-BO4SDgY0.js +0 -652
  593. package/dist/interface/assets/Camview-yzOY3cnD.js +0 -1
  594. package/dist/interface/assets/ConfigActionNotification-CbhQpAqn.js +0 -1
  595. package/dist/interface/assets/ConfigConditionSwitch-CA-tuT-G.js +0 -1
  596. package/dist/interface/assets/ConfigTriggerGeofence-sbEglk8c.js +0 -1
  597. package/dist/interface/assets/Console-B78qXoaH.js +0 -1
  598. package/dist/interface/assets/CuiBottomSheet-BjkvcU8T.js +0 -1
  599. package/dist/interface/assets/CuiCameraPipCard-BOky075i.js +0 -1
  600. package/dist/interface/assets/CuiCameraRecordings-BzbwSK8-.css +0 -1
  601. package/dist/interface/assets/CuiCameraRecordings-DIBgpGaS.js +0 -1
  602. package/dist/interface/assets/CuiCameraTable-DwRywA0z.js +0 -1
  603. package/dist/interface/assets/CuiLightControl-CsK2cn7L.js +0 -1
  604. package/dist/interface/assets/CuiMarkdownContent-CckAX6Ci.js +0 -1
  605. package/dist/interface/assets/CuiPluginCard-C-1ZhHi8.js +0 -2
  606. package/dist/interface/assets/CuiSchema-CxRd72K7.js +0 -1
  607. package/dist/interface/assets/Faces-kl1hwT5M.js +0 -1
  608. package/dist/interface/assets/FirstSteps-BYGvfH-S.js +0 -1
  609. package/dist/interface/assets/Floorplan-DNd9aQv3.js +0 -1
  610. package/dist/interface/assets/Instances-aZApGeHu.js +0 -1
  611. package/dist/interface/assets/Metrics-D5UHs6wj.js +0 -9
  612. package/dist/interface/assets/OAuthDeviceFlow-o2Irbs3_.js +0 -1
  613. package/dist/interface/assets/Plugin-CEpSsNQA.js +0 -1
  614. package/dist/interface/assets/PluginDetail-Ca-NJcL1.js +0 -2
  615. package/dist/interface/assets/PluginSearch-DurGrb4n.js +0 -1
  616. package/dist/interface/assets/PluginSearch-Tmg5vCQF.js +0 -2
  617. package/dist/interface/assets/Plugins-ocuSdXhB.js +0 -1
  618. package/dist/interface/assets/Recordings-CtSj2RuO.js +0 -1
  619. package/dist/interface/assets/SensorEdit-CcD4LvZr.js +0 -1
  620. package/dist/interface/assets/Sensors-CWjmo27p.js +0 -2
  621. package/dist/interface/assets/SettingsAccount-DQm9vFIT.js +0 -1
  622. package/dist/interface/assets/SettingsAccount-DekJwq5r.js +0 -1
  623. package/dist/interface/assets/SettingsAppearance-B7mm_vGf.js +0 -1
  624. package/dist/interface/assets/SettingsMqtt-D8grttey.js +0 -1
  625. package/dist/interface/assets/SettingsNotifications-BtFyN8J3.js +0 -1
  626. package/dist/interface/assets/SettingsRecordings-DVEsPab-.js +0 -1
  627. package/dist/interface/assets/SettingsRemote-Dqs-d-Xk.js +0 -2
  628. package/dist/interface/assets/Workers-L7PPidAd.js +0 -2
  629. package/dist/interface/assets/alert-outline-KxFvd3i6.js +0 -1
  630. package/dist/interface/assets/api-CEbDxsSY.css +0 -2
  631. package/dist/interface/assets/api-ou2-S3Z9.js +0 -2
  632. package/dist/interface/assets/cameras.schema-BzSBpeUl.js +0 -1
  633. package/dist/interface/assets/cloudHandoff-ChRx5fsr.js +0 -1
  634. package/dist/interface/assets/main-CT2dZ3bR.js +0 -3
  635. package/dist/interface/assets/nodeDefinitions-D6zhuw60.js +0 -1
  636. package/dist/interface/assets/sensorIcons-tORVN7ay.js +0 -1
  637. package/dist/interface/assets/theme-t4dIArYy.js +0 -1
  638. package/dist/interface/assets/types-D889aM6c.js +0 -1
  639. package/dist/interface/assets/types-Dg1X10xd.js +0 -1
  640. package/dist/interface/assets/ungrouped-Pn6rAXZt.js +0 -1
  641. package/dist/interface/assets/useBackupRestore-BcAR3KYA.js +0 -1
  642. package/dist/interface/assets/vendor-cameraui-OySaGjmo.js +0 -2326
  643. package/dist/interface/assets/vendor-core-BZ52eUwC.js +0 -1
  644. package/dist/interface/assets/vendor-zod-B0ZFM2Pr.js +0 -127
@@ -0,0 +1,1810 @@
1
+ import { c as e } from "./ripple-BilzxWfY.js";
2
+ import { G as t, H as n, I as r, Jt as i, M as a, Wt as o, Y as s, _t as c, d as l, f as u, gt as d, kt as f, l as p, lt as m, ot as h, p as g, r as _, u as v, ut as y, v as b, x, xt as S, y as C } from "./runtime-core.esm-bundler-D8slQ3BU.js";
3
+ import { t as ee } from "./tooltip-BIrD_hC8.js";
4
+ import { t as te } from "./message-C8U_kMBA.js";
5
+ import { t as ne } from "./tag-CXgC9OZ6.js";
6
+ import { Dt as re, Et as ie, F as ae, Li as w, N as T, Ot as oe, P as E, Pi as D, Tt as se, Wi as ce, Yi as O, Zi as k, Zr as le, _i as A, a as ue, dt as de, gi as j, gt as fe, kn as pe, mi as M, n as me, qi as N, r as he, ra as ge, vr as P, yr as _e, yt as ve } from "./api-CWJkvtnM.js";
7
+ import { i as ye, o as be } from "./intercomService-jB2mTgsn.js";
8
+ import { R as xe, k as F } from "./pinia-3D39Do4a.js";
9
+ import { n as Se } from "./vue-i18n-Dcb07o5U.js";
10
+ import { t as Ce } from "./button-BlYuI0Q7.js";
11
+ import { t as we } from "./inputtext-DGIESrd0.js";
12
+ import { t as Te } from "./select-DjWkRqsI.js";
13
+ import { t as Ee } from "./multiselect-BbgV_fPx.js";
14
+ import { t as De } from "./information-outline-DIdNxPCN.js";
15
+ import { t as Oe } from "./CuiQRCode-Djr3z54t.js";
16
+ import { t as ke } from "./server-CKJKoFfg.js";
17
+ import { t as Ae } from "./api-BmNBy1ay.js";
18
+ //#region src/connection/endpointScope.ts
19
+ var je = /^(10\.|127\.|192\.168\.|169\.254\.|172\.(1[6-9]|2\d|3[01])\.)/, Me = /^f[cd][0-9a-f]{2}:/, I = [
20
+ ".local",
21
+ ".lan",
22
+ ".home",
23
+ ".internal",
24
+ ".localdomain"
25
+ ];
26
+ function Ne(e) {
27
+ try {
28
+ return new URL(e).hostname.toLowerCase();
29
+ } catch {
30
+ return;
31
+ }
32
+ }
33
+ function Pe(e) {
34
+ let t = e.startsWith("[") && e.endsWith("]") ? e.slice(1, -1) : e;
35
+ return t === "localhost" ? !0 : t.includes(":") ? t === "::1" || Me.test(t) || t.startsWith("fe80:") : je.test(t) || !t.includes(".") ? !0 : I.some((e) => t.endsWith(e));
36
+ }
37
+ function Fe(e) {
38
+ let t = e ? Ne(e) : void 0;
39
+ return t ? Pe(t) : !1;
40
+ }
41
+ function Ie(e, t) {
42
+ return e ? t === "direct" ? Fe(e.url) : e.mode === "direct-lan" : !1;
43
+ }
44
+ //#endregion
45
+ //#region ~icons/material-symbols-light/cloud-off
46
+ var Le = {
47
+ viewBox: "0 0 24 24",
48
+ width: "1.2em",
49
+ height: "1.2em"
50
+ };
51
+ function Re(e, t) {
52
+ return n(), g("svg", Le, [...t[0] ||= [v("path", {
53
+ fill: "currentColor",
54
+ d: "M20.454 21.87L17.612 19H6.5q-1.896 0-3.198-1.302T2 14.5q0-1.829 1.226-3.098t2.87-1.368q.018-.373.208-.925q.19-.553.438-.951l-3.88-3.881l.707-.708l17.593 17.593zm.454-3.812L8.78 5.937q.875-.523 1.612-.73T12 5q2.502 0 4.251 1.749T18 11v1h.616q1.436.046 2.41 1.055T22 15.5q0 .687-.25 1.332t-.842 1.226"
55
+ }, null, -1)]]);
56
+ }
57
+ var ze = c({
58
+ name: "material-symbols-light-cloud-off",
59
+ render: Re
60
+ }), Be = {
61
+ viewBox: "0 0 24 24",
62
+ width: "1.2em",
63
+ height: "1.2em"
64
+ };
65
+ function Ve(e, t) {
66
+ return n(), g("svg", Be, [...t[0] ||= [v("path", {
67
+ fill: "currentColor",
68
+ d: "m9.55 18l-5.7-5.7l1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z"
69
+ }, null, -1)]]);
70
+ }
71
+ var He = c({
72
+ name: "material-symbols-check",
73
+ render: Ve
74
+ }), Ue = {
75
+ viewBox: "0 0 24 24",
76
+ width: "1.2em",
77
+ height: "1.2em"
78
+ };
79
+ function We(e, t) {
80
+ return n(), g("svg", Ue, [...t[0] ||= [v("path", {
81
+ fill: "currentColor",
82
+ d: "M20.5 16H15v-1h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h4v1H3.5c-.83 0-1.5.67-1.5 1.5v3c0 .83.67 1.5 1.5 1.5h17c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5M5 4h14v9H5zm10 16H5v-2h10zm3 0c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1",
83
+ class: "b"
84
+ }, null, -1)]]);
85
+ }
86
+ var Ge = c({
87
+ name: "boxicons-computer-filled",
88
+ render: We
89
+ }), Ke = {
90
+ viewBox: "0 0 24 24",
91
+ width: "1.2em",
92
+ height: "1.2em"
93
+ };
94
+ function qe(e, t) {
95
+ return n(), g("svg", Ke, [...t[0] ||= [v("path", {
96
+ fill: "currentColor",
97
+ d: "M17.9 17.39c-.26-.8-1.01-1.39-1.9-1.39h-1v-3a1 1 0 0 0-1-1H8v-2h2a1 1 0 0 0 1-1V7h2a2 2 0 0 0 2-2v-.41a7.984 7.984 0 0 1 2.9 12.8M11 19.93c-3.95-.49-7-3.85-7-7.93c0-.62.08-1.22.21-1.79L9 15v1a2 2 0 0 0 2 2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2"
98
+ }, null, -1)]]);
99
+ }
100
+ var Je = c({
101
+ name: "mdi-earth",
102
+ render: qe
103
+ }), Ye = {
104
+ viewBox: "0 0 24 24",
105
+ width: "1.2em",
106
+ height: "1.2em"
107
+ };
108
+ function L(e, t) {
109
+ return n(), g("svg", Ye, [...t[0] ||= [v("path", {
110
+ fill: "currentColor",
111
+ d: "M10 2c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h1v2H2v2h4v2H5c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h4c1.11 0 2-.89 2-2v-3c0-1.11-.89-2-2-2H8v-2h8v2h-1c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h4c1.11 0 2-.89 2-2v-3c0-1.11-.89-2-2-2h-1v-2h4v-2h-9V9h1c1.11 0 2-.89 2-2V4c0-1.11-.89-2-2-2zm0 2h4v3h-4zM5 17h4v3H5zm10 0h4v3h-4z"
112
+ }, null, -1)]]);
113
+ }
114
+ var Xe = c({
115
+ name: "mdi-lan",
116
+ render: L
117
+ });
118
+ //#endregion
119
+ //#region src/api/routes/remote.ts
120
+ async function Ze({ signal: e }) {
121
+ return (await N.get("/remote", { signal: e })).data;
122
+ }
123
+ async function Qe(e) {
124
+ return (await N.patch("/remote", e)).data;
125
+ }
126
+ async function $e(e) {
127
+ return (await N.post("/remote/pair/init", e ? { name: e } : {})).data;
128
+ }
129
+ async function et({ name: e } = {}) {
130
+ return (await N.post("/remote/pair/poll", e ? { name: e } : {})).data;
131
+ }
132
+ async function tt() {
133
+ await N.delete("/remote/unregister");
134
+ }
135
+ async function nt({ signal: e }) {
136
+ return (await N.get("/remote/status", { signal: e })).data;
137
+ }
138
+ async function rt(e) {
139
+ await N.patch("/remote/name", { name: e });
140
+ }
141
+ async function it({ signal: e }) {
142
+ return (await N.get("/remote/tunnel", { signal: e })).data;
143
+ }
144
+ async function R({ signal: e } = {}) {
145
+ return (await N.get("/remote/connection-info", { signal: e })).data;
146
+ }
147
+ async function z(e) {
148
+ return (await N.post(`/remote/test/${e}`)).data;
149
+ }
150
+ async function B({ signal: e } = {}) {
151
+ return (await N.get("/remote/cloudflare/managed/status", { signal: e })).data;
152
+ }
153
+ async function V(e) {
154
+ await N.post("/remote/cloudflare/managed/connect", { hostname: e });
155
+ }
156
+ async function H() {
157
+ await N.post("/remote/cloudflare/managed/cancel");
158
+ }
159
+ async function U() {
160
+ await N.post("/remote/cloudflare/managed/disconnect");
161
+ }
162
+ async function W() {
163
+ await N.post("/remote/cloudflare/managed/logout");
164
+ }
165
+ var at = class {
166
+ _queryClient = D();
167
+ t = ge.global.t;
168
+ toast = j();
169
+ queryActivator = S([
170
+ {
171
+ name: "getRemoteInfoQuery",
172
+ enabled: !0
173
+ },
174
+ {
175
+ name: "getRegistrationStatusQuery",
176
+ enabled: !0
177
+ },
178
+ {
179
+ name: "getTunnelStatusQuery",
180
+ enabled: !0
181
+ },
182
+ {
183
+ name: "getConnectionInfoQuery",
184
+ enabled: !0
185
+ },
186
+ {
187
+ name: "getCloudflareManagedStatusQuery",
188
+ enabled: !0
189
+ }
190
+ ]);
191
+ get queryClient() {
192
+ return this._queryClient;
193
+ }
194
+ getRemoteInfoQuery() {
195
+ return M({
196
+ queryKey: ["remote"],
197
+ queryFn: ({ signal: e }) => Ze({ signal: e }),
198
+ enabled: () => this.queryActivator.value.some((e) => e.name === "getRemoteInfoQuery" && e.enabled),
199
+ staleTime: 1e3
200
+ });
201
+ }
202
+ patchRemoteInfoQuery() {
203
+ return A({
204
+ mutationFn: Qe,
205
+ onSuccess: async () => {
206
+ await this._queryClient.refetchQueries({
207
+ queryKey: ["remote"],
208
+ exact: !0
209
+ }), this.toast.add({
210
+ severity: "success",
211
+ detail: this.t("components.toast.remote_updated"),
212
+ life: 3e3
213
+ });
214
+ }
215
+ });
216
+ }
217
+ getRegistrationStatusQuery() {
218
+ return M({
219
+ queryKey: ["remote", "status"],
220
+ queryFn: ({ signal: e }) => nt({ signal: e }),
221
+ enabled: () => this.queryActivator.value.some((e) => e.name === "getRegistrationStatusQuery" && e.enabled),
222
+ staleTime: 1e3
223
+ });
224
+ }
225
+ pairInitMutation() {
226
+ return A({ mutationFn: $e });
227
+ }
228
+ pairPollMutation() {
229
+ return A({
230
+ mutationFn: et,
231
+ onSuccess: async (e) => {
232
+ e.state === "confirmed" && (await this._queryClient.refetchQueries({
233
+ queryKey: ["remote"],
234
+ exact: !0
235
+ }), await this._queryClient.refetchQueries({
236
+ queryKey: ["remote", "status"],
237
+ exact: !0
238
+ }), this.toast.add({
239
+ severity: "success",
240
+ detail: this.t("components.toast.remote_registered"),
241
+ life: 3e3
242
+ }));
243
+ }
244
+ });
245
+ }
246
+ unregisterServerQuery() {
247
+ return A({
248
+ mutationFn: tt,
249
+ onSuccess: async () => {
250
+ await this._queryClient.refetchQueries({
251
+ queryKey: ["remote"],
252
+ exact: !0
253
+ }), await this._queryClient.refetchQueries({
254
+ queryKey: ["remote", "status"],
255
+ exact: !0
256
+ }), this.toast.add({
257
+ severity: "success",
258
+ detail: this.t("components.toast.remote_unregistered"),
259
+ life: 3e3
260
+ });
261
+ }
262
+ });
263
+ }
264
+ getTunnelStatusQuery() {
265
+ return M({
266
+ queryKey: ["remote", "tunnel"],
267
+ queryFn: ({ signal: e }) => it({ signal: e }),
268
+ enabled: () => this.queryActivator.value.some((e) => e.name === "getTunnelStatusQuery" && e.enabled),
269
+ refetchInterval: 3e4,
270
+ staleTime: 1e4
271
+ });
272
+ }
273
+ updateServerNameQuery() {
274
+ return A({
275
+ mutationFn: rt,
276
+ onSuccess: async () => {
277
+ await this._queryClient.refetchQueries({
278
+ queryKey: ["remote", "status"],
279
+ exact: !0
280
+ }), this.toast.add({
281
+ severity: "success",
282
+ detail: this.t("components.toast.server_name_updated"),
283
+ life: 3e3
284
+ });
285
+ }
286
+ });
287
+ }
288
+ getConnectionInfoQuery() {
289
+ return M({
290
+ queryKey: ["remote", "connection-info"],
291
+ queryFn: ({ signal: e }) => R({ signal: e }),
292
+ enabled: () => this.queryActivator.value.some((e) => e.name === "getConnectionInfoQuery" && e.enabled),
293
+ refetchInterval: 1e4
294
+ });
295
+ }
296
+ testRemoteModeMutation() {
297
+ return A({ mutationFn: z });
298
+ }
299
+ getCloudflareManagedStatusQuery() {
300
+ return M({
301
+ queryKey: [
302
+ "remote",
303
+ "cloudflare",
304
+ "managed"
305
+ ],
306
+ queryFn: ({ signal: e }) => B({ signal: e }),
307
+ enabled: () => this.queryActivator.value.some((e) => e.name === "getCloudflareManagedStatusQuery" && e.enabled),
308
+ refetchInterval: (e) => {
309
+ let t = e.state.data?.state;
310
+ return t === "awaiting_login" || t === "creating_tunnel" || t === "setting_dns" ? 2e3 : !1;
311
+ },
312
+ refetchOnWindowFocus: !0,
313
+ staleTime: 1e3
314
+ });
315
+ }
316
+ cloudflareManagedConnectMutation() {
317
+ return A({
318
+ mutationFn: V,
319
+ onSuccess: async () => {
320
+ await this._queryClient.refetchQueries({
321
+ queryKey: [
322
+ "remote",
323
+ "cloudflare",
324
+ "managed"
325
+ ],
326
+ exact: !0
327
+ });
328
+ }
329
+ });
330
+ }
331
+ cloudflareManagedCancelMutation() {
332
+ return A({
333
+ mutationFn: H,
334
+ onSuccess: async () => {
335
+ await this._queryClient.refetchQueries({
336
+ queryKey: [
337
+ "remote",
338
+ "cloudflare",
339
+ "managed"
340
+ ],
341
+ exact: !0
342
+ });
343
+ }
344
+ });
345
+ }
346
+ cloudflareManagedDisconnectMutation() {
347
+ return A({
348
+ mutationFn: U,
349
+ onSuccess: async () => {
350
+ await this._queryClient.refetchQueries({
351
+ queryKey: ["remote"],
352
+ exact: !0
353
+ }), await this._queryClient.refetchQueries({
354
+ queryKey: [
355
+ "remote",
356
+ "cloudflare",
357
+ "managed"
358
+ ],
359
+ exact: !0
360
+ });
361
+ }
362
+ });
363
+ }
364
+ cloudflareManagedLogoutMutation() {
365
+ return A({
366
+ mutationFn: W,
367
+ onSuccess: async () => {
368
+ await this._queryClient.refetchQueries({
369
+ queryKey: ["remote"],
370
+ exact: !0
371
+ }), await this._queryClient.refetchQueries({
372
+ queryKey: [
373
+ "remote",
374
+ "cloudflare",
375
+ "managed"
376
+ ],
377
+ exact: !0
378
+ });
379
+ }
380
+ });
381
+ }
382
+ toggleQueryActivator(e, t) {
383
+ let n = this.queryActivator.value.find((t) => t.name === e);
384
+ return n && (n.enabled = t), this;
385
+ }
386
+ }, ot = { class: "flex flex-col gap-6" }, G = { class: "flex flex-col field-gap" }, K = { class: "section-chip" }, st = { class: "text-sm font-bold text-color" }, q = { class: "flex flex-col field-gap" }, ct = { class: "section-chip" }, J = { class: "text-sm text-color" }, Y = { class: "flex flex-col field-gap" }, X = { class: "section-chip" }, lt = {
387
+ key: 0,
388
+ class: "text-sm text-muted"
389
+ }, ut = {
390
+ key: 1,
391
+ class: "flex flex-col gap-2"
392
+ }, Z = { class: "flex flex-col min-w-0" }, dt = { class: "text-sm text-color" }, ft = { class: "text-xs text-muted break-all" }, pt = /* @__PURE__ */ x({
393
+ __name: "ConnectionDetails",
394
+ props: {
395
+ currentType: {},
396
+ currentAddress: {}
397
+ },
398
+ setup(e, { expose: r }) {
399
+ let a = e, s = new Ae(), c = j(), { t: l } = Se(), { data: u } = s.apiInfoQuery(), d = k() ? O() : void 0, h = me(), y = p(() => d?.attempts.rounds.value[0]), x = p(() => d?.target.value?.endpoint.url ?? l("components.connection_details.no_target")), S = p(() => {
400
+ let e = d?.target.value?.endpoint;
401
+ return e ? ne(e) : l("components.connection_details.no_target");
402
+ }), ee = p(() => y.value?.attempts.map((e) => ({
403
+ ...e,
404
+ modeLabel: ne({
405
+ url: e.url,
406
+ mode: e.mode
407
+ })
408
+ })) ?? []);
409
+ function ne(e) {
410
+ return Ie(e, h) ? l("components.connection_details.mode_lan") : l("components.connection_details.mode_wan");
411
+ }
412
+ function re(e) {
413
+ return e.outcome === "connected" && e.url === x.value;
414
+ }
415
+ function ie(e) {
416
+ return re(e) ? "bg-green-500" : e.outcome === "failed" ? "bg-red-500" : "bg-neutral-400";
417
+ }
418
+ function ae(e) {
419
+ return e.durationMs === void 0 ? "…" : e.durationMs >= 1e3 ? `${(e.durationMs / 1e3).toFixed(1)} s` : `${e.durationMs} ms`;
420
+ }
421
+ function w(e) {
422
+ return re(e) ? l("components.connection_details.outcome_connected") : e.outcome === "connected" ? l("components.connection_details.outcome_reachable") : e.outcome === "superseded" ? l("components.connection_details.outcome_superseded") : e.outcome === "pending" ? l("components.connection_details.outcome_pending") : e.reason?.includes("timeout") ? l("components.connection_details.outcome_timeout") : e.reason ?? l("components.connection_details.outcome_failed");
423
+ }
424
+ async function T() {
425
+ let e = [
426
+ (/* @__PURE__ */ new Date()).toISOString(),
427
+ `camera.ui ${u.value?.version ?? "?"}`,
428
+ "",
429
+ `${S.value}: ${x.value}`,
430
+ `server sees: ${a.currentType} ${a.currentAddress}`,
431
+ ""
432
+ ];
433
+ for (let t of ee.value) e.push(`${re(t) ? "+" : "-"} ${t.modeLabel} ${t.url} ${ae(t)} ${w(t)}`);
434
+ if (y.value?.reason && e.push("", y.value.reason), await he(e.join("\n"))) {
435
+ c.add({
436
+ severity: "success",
437
+ detail: l("components.connection_details.copied"),
438
+ life: 2e3
439
+ });
440
+ return;
441
+ }
442
+ return c.add({
443
+ severity: "error",
444
+ detail: l("components.connection_details.copy_failed"),
445
+ life: 3e3
446
+ }), null;
447
+ }
448
+ return r({ onConfirm: T }), (r, a) => {
449
+ let s = te;
450
+ return n(), g("div", ot, [
451
+ v("div", G, [
452
+ v("span", K, i(r.$t("components.connection_details.current")), 1),
453
+ v("span", st, i(f(S)), 1),
454
+ C(s, {
455
+ severity: "secondary",
456
+ variant: "simple",
457
+ size: "small",
458
+ class: "cui-input-hint break-all"
459
+ }, {
460
+ default: m(() => [b(i(f(x)), 1)]),
461
+ _: 1
462
+ })
463
+ ]),
464
+ v("div", q, [
465
+ v("span", ct, i(r.$t("components.connection_details.server_view")), 1),
466
+ v("span", J, i(e.currentType), 1),
467
+ C(s, {
468
+ severity: "secondary",
469
+ variant: "simple",
470
+ size: "small",
471
+ class: "cui-input-hint break-all"
472
+ }, {
473
+ default: m(() => [b(i(e.currentAddress), 1)]),
474
+ _: 1
475
+ })
476
+ ]),
477
+ v("div", Y, [v("span", X, i(r.$t("components.connection_details.last_attempt")), 1), f(ee).length === 0 ? (n(), g("p", lt, i(r.$t("components.connection_details.no_attempts")), 1)) : (n(), g("div", ut, [(n(!0), g(_, null, t(f(ee), (e) => (n(), g("div", {
478
+ key: e.url,
479
+ class: "flex items-start gap-3"
480
+ }, [v("span", { class: o(["mt-1.5 w-2 h-2 rounded-full shrink-0", ie(e)]) }, null, 2), v("div", Z, [v("span", dt, [
481
+ b(i(e.modeLabel) + " ", 1),
482
+ a[0] ||= v("span", { class: "text-muted" }, "·", -1),
483
+ b(" " + i(ae(e)) + " ", 1),
484
+ a[1] ||= v("span", { class: "text-muted" }, "·", -1),
485
+ b(" " + i(w(e)), 1)
486
+ ]), v("span", ft, i(e.url), 1)])]))), 128))]))])
487
+ ]);
488
+ };
489
+ }
490
+ }), mt = xe, ht = F, gt = { class: "w-full h-full" }, _t = {
491
+ key: 0,
492
+ class: "w-full h-full flex items-center justify-center"
493
+ }, vt = {
494
+ key: 1,
495
+ class: "flex flex-col w-full gap-6"
496
+ }, yt = { key: 0 }, bt = { class: "card-title" }, xt = { class: "flex items-center gap-4" }, St = { class: "flex flex-col field-switch-gap min-w-0" }, Ct = { class: "text-sm font-bold text-color" }, wt = { class: "card-title" }, Tt = { class: "flex flex-col gap-6" }, Et = { class: "flex items-center gap-4" }, Dt = { class: "flex flex-col field-switch-gap" }, Ot = {
497
+ for: "enabled",
498
+ class: "cui-label-switch"
499
+ }, kt = { class: "flex flex-col field-gap" }, At = {
500
+ for: "serverName",
501
+ class: "cui-label"
502
+ }, jt = { class: "flex items-center gap-4" }, Mt = { class: "flex flex-col field-switch-gap" }, Nt = { class: "text-sm" }, Pt = { class: "ml-auto shrink-0" }, Ft = {
503
+ key: 1,
504
+ class: "text-sm font-bold text-amber-500"
505
+ }, It = {
506
+ key: 2,
507
+ class: "text-sm font-bold"
508
+ }, Lt = {
509
+ key: 0,
510
+ class: "flex items-center gap-4"
511
+ }, Rt = { class: "flex flex-col field-switch-gap" }, zt = { class: "text-sm" }, Bt = { class: "ml-auto shrink-0" }, Vt = {
512
+ key: "pairing",
513
+ class: "cui-toggle-switch flex flex-col gap-4"
514
+ }, Ht = { class: "cui-pair-layout" }, Ut = { class: "cui-pair-qr" }, Wt = { class: "flex flex-col gap-4 flex-1 min-w-0" }, Gt = { class: "flex flex-col field-gap" }, Kt = { class: "cui-label" }, qt = { class: "flex flex-col field-gap" }, Jt = { class: "cui-label" }, Yt = { class: "flex items-center gap-3" }, Xt = { class: "text-sm" }, Zt = { class: "flex items-center gap-4" }, Qt = { class: "flex" }, $t = { class: "card-title" }, en = { class: "flex flex-col gap-6" }, tn = { class: "flex items-center gap-4" }, nn = { class: "flex flex-col field-switch-gap" }, rn = {
515
+ for: "directEnabled",
516
+ class: "cui-label-switch"
517
+ }, an = { class: "flex flex-col field-gap" }, on = { class: "cui-label" }, sn = {
518
+ for: "directMode",
519
+ class: "cui-label"
520
+ }, cn = {
521
+ key: 0,
522
+ class: "cui-toggle-switch flex flex-col gap-4"
523
+ }, ln = { class: "flex flex-col field-gap" }, un = {
524
+ for: "cloudflareVariant",
525
+ class: "cui-label"
526
+ }, dn = {
527
+ key: 0,
528
+ class: "flex items-center gap-3"
529
+ }, fn = { class: "flex flex-col field-gap" }, pn = {
530
+ for: "cloudflareHostname",
531
+ class: "cui-label"
532
+ }, mn = { class: "flex flex-col field-gap" }, hn = {
533
+ for: "cloudflareToken",
534
+ class: "cui-label"
535
+ }, gn = { class: "flex items-center gap-3" }, _n = { class: "flex flex-col field-gap" }, vn = {
536
+ for: "cloudflareHostnameManaged",
537
+ class: "cui-label"
538
+ }, yn = { class: "flex items-center gap-3" }, bn = {
539
+ key: 0,
540
+ class: "cf-login-setup"
541
+ }, xn = { class: "cf-login-qr" }, Sn = { class: "flex flex-col gap-4 flex-1 min-w-0" }, Cn = { class: "flex flex-col field-gap" }, wn = { class: "cui-label" }, Tn = { class: "flex items-center gap-3" }, En = { class: "text-sm" }, Dn = {
542
+ key: 1,
543
+ class: "flex items-center gap-3"
544
+ }, On = { class: "text-sm" }, kn = {
545
+ key: 2,
546
+ class: "flex items-center gap-3"
547
+ }, An = { class: "text-sm" }, jn = { class: "flex flex-col field-gap" }, Mn = { class: "cui-label" }, Nn = {
548
+ key: 0,
549
+ class: "flex flex-col field-gap"
550
+ }, Pn = { class: "cui-label" }, Fn = { class: "flex items-center gap-3" }, In = {
551
+ key: 1,
552
+ class: "cui-toggle-switch flex flex-col gap-4"
553
+ }, Ln = {
554
+ for: "customDomain.url",
555
+ class: "cui-label"
556
+ }, Rn = { class: "flex items-center gap-3" }, zn = { class: "card-title" }, Bn = { class: "flex flex-col gap-6" }, Vn = { class: "text-sm" }, Hn = {
557
+ for: "serverAddresses",
558
+ class: "cui-label"
559
+ }, Un = {
560
+ for: "localUrl",
561
+ class: "cui-label"
562
+ }, Wn = /*#__PURE__*/ P(/* @__PURE__ */ x({
563
+ __name: "SettingsRemote",
564
+ setup(t) {
565
+ let c = new ke(), x = new at(), D = be(), O = fe(), k = j(), { t: A } = Se(), { endpoint: M, isOnline: me } = w(), { data: N, isBusy: ge } = c.getServerInfoQuery(), { data: P, isBusy: xe } = x.getRemoteInfoQuery(), { data: F, isBusy: Ae } = x.getRegistrationStatusQuery(), { data: je, isLoading: Me } = x.getTunnelStatusQuery(), { data: I } = x.getConnectionInfoQuery(), { mutateAsync: Ne, isPending: Pe } = c.patchSystemInfoQuery(), { mutateAsync: Fe, isPending: Ie } = x.patchRemoteInfoQuery(), { mutateAsync: Le, isPending: Re } = x.pairInitMutation(), { mutateAsync: Be } = x.pairPollMutation(), { mutateAsync: Ve, isPending: Ue } = x.unregisterServerQuery(), { mutateAsync: We, isPending: Ke } = x.updateServerNameQuery(), { mutateAsync: qe, isPending: Ye } = x.testRemoteModeMutation(), { data: L } = x.getCloudflareManagedStatusQuery(), { mutateAsync: Ze, isPending: Qe } = x.cloudflareManagedConnectMutation(), { mutateAsync: $e, isPending: et } = x.cloudflareManagedCancelMutation(), { mutateAsync: tt, isPending: nt } = x.cloudflareManagedDisconnectMutation(), { mutateAsync: rt, isPending: it } = x.cloudflareManagedLogoutMutation(), R = S(), z = S(), B = S(""), V = S(""), H = S("quick"), U = S(""), W = S(""), ot = S(!1), G = S(null), K = S(""), st = S(null), q = S(2), ct = S(""), J = null, Y = null, X = p(() => Pe.value || Ie.value || ge.value || xe.value || Ae.value || Ue.value), lt = p(() => !!(z.value?.enabled || z.value?.directEnabled)), ut = p(() => P.value?.directOverride ?? {
566
+ active: !1,
567
+ fallback: !1
568
+ }), Z = p(() => F.value?.isRegistered ?? !1), dt = p(() => F.value?.needsReauth ?? !1), ft = p(() => !X.value), Wn = p(() => {
569
+ if (!ft.value) return !1;
570
+ let e = B.value.trim();
571
+ return !e || e.length > 100 ? !1 : e !== (F.value?.serverName ?? "");
572
+ }), Gn = p(() => {
573
+ if (!z.value) return !1;
574
+ if (z.value.directMode === "customDomain") {
575
+ let e = V.value.trim();
576
+ if (!e) return !1;
577
+ try {
578
+ new URL(e);
579
+ } catch {
580
+ return !1;
581
+ }
582
+ return e !== (P.value?.remoteSettings.customDomain.url ?? "");
583
+ }
584
+ if (z.value.directMode === "cloudflare") {
585
+ let e = P.value?.remoteSettings.cloudflare, t = P.value?.remoteSettings.directMode !== "cloudflare", n = H.value;
586
+ if (n === "quick") return t || e?.mode !== "quick";
587
+ let r = U.value.trim();
588
+ if (!r || !/^[a-z0-9.-]+\.[a-z]{2,}$/i.test(r)) return !1;
589
+ if (n === "token") {
590
+ let n = W.value.trim();
591
+ if (!n && !ot.value) return !1;
592
+ let i = n.length > 0;
593
+ return t || e?.mode !== "token" || e?.hostname !== r || i;
594
+ }
595
+ return n === "managed" ? t || e?.mode !== "managed" || e?.hostname !== r : !1;
596
+ }
597
+ return z.value.directMode !== P.value?.remoteSettings.directMode;
598
+ }), Kn = p(() => [{
599
+ value: "cloudflare",
600
+ label: A("components.form.label.cloudflare"),
601
+ description: A("components.form.hint.cloudflare_mode_info")
602
+ }, {
603
+ value: "customDomain",
604
+ label: A("components.form.label.custom_domain"),
605
+ description: A("components.form.hint.custom_domain_mode_info")
606
+ }]), qn = p(() => Kn.value.find((e) => e.value === z.value?.directMode)?.description ?? ""), Jn = p(() => [
607
+ {
608
+ value: "quick",
609
+ label: A("components.form.label.cloudflare_variant_quick"),
610
+ description: A("components.form.hint.cloudflare_variant_quick")
611
+ },
612
+ {
613
+ value: "token",
614
+ label: A("components.form.label.cloudflare_variant_token"),
615
+ description: A("components.form.hint.cloudflare_variant_token")
616
+ },
617
+ {
618
+ value: "managed",
619
+ label: A("components.form.label.cloudflare_variant_managed"),
620
+ description: A("components.form.hint.cloudflare_variant_managed")
621
+ }
622
+ ]), Yn = p(() => Jn.value.find((e) => e.value === H.value)?.description ?? ""), Xn = p(() => {
623
+ if (H.value === "quick") return !0;
624
+ let e = P.value?.remoteSettings.cloudflare;
625
+ return e?.mode === H.value && !!e?.hostname;
626
+ }), Q = p(() => L.value?.state ?? "idle"), Zn = p(() => {
627
+ if (Q.value !== "idle") return !1;
628
+ let e = U.value.trim();
629
+ return !!e && /^[a-z0-9.-]+\.[a-z]{2,}$/i.test(e);
630
+ }), Qn = p(() => {
631
+ let e = I.value?.currentConnection.type ?? "lan";
632
+ return A(`views.settings.connection_type.${e}`);
633
+ }), $n = p(() => {
634
+ let e = I.value?.currentConnection.type;
635
+ return e === "external" ? Je : e === "local" ? Ge : Xe;
636
+ }), er = p(() => {
637
+ let e = I.value?.currentConnection.type;
638
+ return e === "external" ? "text-info" : e === "local" ? "text-primary" : "text-success";
639
+ });
640
+ function tr() {
641
+ O.openComponentDialog(pt, { data: {
642
+ title: A("components.connection_details.title"),
643
+ confirmText: A("components.connection_details.copy"),
644
+ cancelText: A("components.form.button.close"),
645
+ contentProps: {
646
+ currentType: Qn,
647
+ currentAddress: p(() => I.value?.currentConnection.address ?? "")
648
+ }
649
+ } });
650
+ }
651
+ async function nr() {
652
+ let e = B.value.trim();
653
+ if (e) try {
654
+ await We(e);
655
+ } catch {}
656
+ }
657
+ function rr() {
658
+ O.openTextDialog({
659
+ data: {
660
+ title: A("components.dialog.title.unregister_server"),
661
+ confirmText: A("components.form.button.unregister"),
662
+ contentText: A("components.dialog.message.confirm_unregister_server"),
663
+ loading: X
664
+ },
665
+ onConfirm: async () => {
666
+ try {
667
+ await Ve();
668
+ } catch {}
669
+ }
670
+ });
671
+ }
672
+ function ir() {
673
+ J &&= (clearTimeout(J), null), Y &&= (clearInterval(Y), null);
674
+ }
675
+ function $() {
676
+ ir(), G.value = null, K.value = "", st.value = null, ct.value = "";
677
+ }
678
+ function ar(e) {
679
+ let t = Math.max(0, Math.floor(e / 1e3));
680
+ return `${Math.floor(t / 60)}:${(t % 60).toString().padStart(2, "0")}`;
681
+ }
682
+ function or() {
683
+ Y && clearInterval(Y);
684
+ let e = () => {
685
+ if (!st.value) return;
686
+ let e = st.value - Date.now();
687
+ if (e <= 0) {
688
+ $(), k.add({
689
+ severity: "warn",
690
+ detail: A("components.toast.pair_expired"),
691
+ life: 3e3
692
+ });
693
+ return;
694
+ }
695
+ ct.value = ar(e);
696
+ };
697
+ e(), Y = setInterval(e, 1e3);
698
+ }
699
+ function sr() {
700
+ J && clearTimeout(J), J = setTimeout(cr, q.value * 1e3);
701
+ }
702
+ async function cr() {
703
+ if (!G.value) return;
704
+ let e = G.value;
705
+ try {
706
+ let t = await Be({ name: B.value.trim() || void 0 });
707
+ if (!G.value || G.value !== e) return;
708
+ if (t.state === "confirmed") {
709
+ $();
710
+ return;
711
+ }
712
+ if (t.state === "expired") {
713
+ $(), k.add({
714
+ severity: "warn",
715
+ detail: A("components.toast.pair_expired"),
716
+ life: 3e3
717
+ });
718
+ return;
719
+ }
720
+ if (t.state === "denied") {
721
+ $(), k.add({
722
+ severity: "warn",
723
+ detail: A("components.toast.pair_denied"),
724
+ life: 3e3
725
+ });
726
+ return;
727
+ }
728
+ t.state === "slow_down" && (q.value = Math.min(q.value + 2, 10)), sr();
729
+ } catch (t) {
730
+ if (!G.value || G.value !== e) return;
731
+ D.error("pair poll failed:", t), sr();
732
+ }
733
+ }
734
+ async function lr() {
735
+ $();
736
+ try {
737
+ let e = B.value.trim();
738
+ if (e && e !== (F.value?.serverName ?? "")) try {
739
+ await We(e);
740
+ } catch {}
741
+ let t = await Le(e || void 0);
742
+ G.value = t.userCode, K.value = t.verificationUriComplete, st.value = Date.now() + t.expiresIn * 1e3, q.value = Math.max(1, t.pollInterval), or(), sr();
743
+ } catch (e) {
744
+ k.add({
745
+ severity: "error",
746
+ detail: e,
747
+ life: 3e3
748
+ });
749
+ }
750
+ }
751
+ function ur() {
752
+ $();
753
+ }
754
+ async function dr() {
755
+ if (G.value) try {
756
+ await he(G.value);
757
+ } catch {}
758
+ }
759
+ async function fr() {
760
+ if (K.value) try {
761
+ await he(K.value);
762
+ } catch {}
763
+ }
764
+ function pr() {
765
+ K.value && window.open(K.value, "_blank", "noopener");
766
+ }
767
+ function mr(e) {
768
+ let t = window.location.host === ce || !1, n;
769
+ n = e ? "components.dialog.message.confirm_enable_cloud" : t ? "components.dialog.message.confirm_disable_cloud_remote" : "components.dialog.message.confirm_disable_cloud_local", O.openTextDialog({
770
+ data: {
771
+ title: A("components.dialog.title.confirm"),
772
+ contentText: A(n),
773
+ confirmText: A(e ? "components.form.button.enable" : "components.form.button.disable"),
774
+ loading: X,
775
+ confirmButtonProps: e ? void 0 : { severity: "danger" }
776
+ },
777
+ onConfirm: async () => {
778
+ try {
779
+ await Fe(e ? { enabled: !0 } : { enabled: !1 });
780
+ } catch {
781
+ z.value && (z.value.enabled = !e);
782
+ }
783
+ },
784
+ onCancel: () => {
785
+ z.value && (z.value.enabled = !e);
786
+ }
787
+ });
788
+ }
789
+ function hr(e) {
790
+ Fe({ directEnabled: e }).catch(() => {
791
+ z.value && (z.value.directEnabled = !e);
792
+ });
793
+ }
794
+ function gr(e) {
795
+ z.value && (z.value.directMode = e);
796
+ }
797
+ function _r(e) {
798
+ H.value = e;
799
+ }
800
+ async function vr() {
801
+ let e = U.value.trim();
802
+ if (e) try {
803
+ await Fe({
804
+ directMode: "cloudflare",
805
+ cloudflare: {
806
+ mode: "managed",
807
+ hostname: e
808
+ }
809
+ }), await Ze(e);
810
+ } catch {}
811
+ }
812
+ async function yr() {
813
+ try {
814
+ await $e();
815
+ } catch {}
816
+ }
817
+ async function br() {
818
+ try {
819
+ await tt();
820
+ } catch {}
821
+ }
822
+ async function xr() {
823
+ try {
824
+ await rt();
825
+ } catch {}
826
+ }
827
+ async function Sr(e) {
828
+ try {
829
+ await he(e);
830
+ } catch {}
831
+ }
832
+ function Cr(e) {
833
+ window.open(e, "_blank", "noopener");
834
+ }
835
+ async function wr(e) {
836
+ try {
837
+ let t = await qe(e);
838
+ t.ok ? k.add({
839
+ severity: "success",
840
+ detail: A("components.toast.remote_test_success"),
841
+ life: 3e3
842
+ }) : k.add({
843
+ severity: "error",
844
+ detail: A("components.toast.remote_test_failed", { message: t.message ?? "" }),
845
+ life: 5e3
846
+ });
847
+ } catch (e) {
848
+ k.add({
849
+ severity: "error",
850
+ detail: A("components.toast.remote_test_failed", { message: e?.message ?? "" }),
851
+ life: 5e3
852
+ });
853
+ }
854
+ }
855
+ async function Tr(e) {
856
+ let t = { directMode: e.directMode };
857
+ if (e.directMode === "customDomain") t.customDomain = { url: V.value.trim() };
858
+ else if (e.directMode === "cloudflare") {
859
+ let e = H.value;
860
+ if (e === "quick") t.cloudflare = {
861
+ mode: "quick",
862
+ hostname: null,
863
+ token: null
864
+ };
865
+ else if (e === "token") {
866
+ let e = W.value.trim();
867
+ t.cloudflare = {
868
+ mode: "token",
869
+ hostname: U.value.trim(),
870
+ ...e ? { token: e } : {}
871
+ };
872
+ } else e === "managed" && (t.cloudflare = {
873
+ mode: "managed",
874
+ hostname: U.value.trim(),
875
+ token: null
876
+ });
877
+ }
878
+ try {
879
+ await Fe(t);
880
+ } catch {}
881
+ }
882
+ async function Er(e) {
883
+ try {
884
+ await Ne(e);
885
+ } catch {}
886
+ }
887
+ return h(() => F.value?.serverName, (e) => {
888
+ e && (B.value = e);
889
+ }, { immediate: !0 }), h(Z, (e) => {
890
+ e && G.value && $();
891
+ }), h([me, M], ([e]) => {
892
+ e && x.queryClient.refetchQueries({
893
+ queryKey: ["remote", "connection-info"],
894
+ exact: !0
895
+ });
896
+ }), h(N, (e) => {
897
+ if (e) {
898
+ let t = ue(e);
899
+ R.value = {
900
+ ...t,
901
+ serverAddresses: (t.serverAddresses || []).filter(Boolean),
902
+ localUrl: t.localUrl ?? ""
903
+ };
904
+ }
905
+ }, {
906
+ deep: !0,
907
+ immediate: !0
908
+ }), h(P, (e) => {
909
+ if (e) {
910
+ let t = ue(e);
911
+ z.value = { ...t.remoteSettings }, V.value = t.remoteSettings.customDomain.url ?? "";
912
+ let n = t.remoteSettings.cloudflare;
913
+ H.value = n?.mode ?? "quick", U.value = n?.hostname ?? "", W.value = "", ot.value = t.cloudflareTokenSet ?? !1;
914
+ }
915
+ }, {
916
+ deep: !0,
917
+ immediate: !0
918
+ }), r(() => {
919
+ ir();
920
+ }), (t, r) => {
921
+ let c = _e, p = te, h = De, x = Ce, S = ye, w = pe, D = we, ce = He, O = re, k = oe, A = ne, ue = Oe, j = ie, fe = le, M = ze, me = Te, he = de, ge = Ee, P = ee;
922
+ return n(), g("div", gt, [!f(R) || !f(z) ? (n(), g("div", _t, [C(c, {
923
+ class: "w-[30px] h-[30px] m-0",
924
+ "stroke-width": "5"
925
+ })])) : (n(), g("div", vt, [
926
+ f(I) ? (n(), g("div", yt, [v("span", bt, i(t.$t("views.settings.connection_status")), 1), C(S, { class: "cui-card" }, {
927
+ content: m(() => [v("div", xt, [
928
+ (n(), l(s(f($n)), { class: o(["shrink-0 w-6 h-6", f(er)]) }, null, 8, ["class"])),
929
+ v("div", St, [v("span", Ct, i(f(Qn)), 1), C(p, {
930
+ severity: "secondary",
931
+ variant: "simple",
932
+ size: "small",
933
+ class: "cui-input-switch-hint truncate"
934
+ }, {
935
+ default: m(() => [b(i(f(I).currentConnection.address), 1)]),
936
+ _: 1
937
+ })]),
938
+ y((n(), l(x, {
939
+ rounded: "",
940
+ text: "",
941
+ severity: "secondary",
942
+ class: "ml-auto shrink-0",
943
+ "aria-label": t.$t("components.connection_details.title"),
944
+ onClick: tr
945
+ }, {
946
+ icon: m(() => [C(h, { class: "w-5 h-5" })]),
947
+ _: 1
948
+ }, 8, ["aria-label"])), [[
949
+ P,
950
+ { value: t.$t("components.connection_details.title") },
951
+ void 0,
952
+ { left: !0 }
953
+ ]])
954
+ ])]),
955
+ _: 1
956
+ })])) : u("", !0),
957
+ C(f(ae), {
958
+ ref: "remoteFormRef",
959
+ class: "flex flex-col w-full gap-6",
960
+ "validation-schema": f(mt),
961
+ onSubmit: r[18] ||= (e) => Tr(e)
962
+ }, {
963
+ default: m(() => [v("div", null, [v("span", wt, i(t.$t("views.settings.cloud")), 1), C(S, { class: "cui-card" }, {
964
+ content: m(() => [v("div", Tt, [
965
+ C(f(E), {
966
+ "model-value": f(z).enabled,
967
+ value: !0,
968
+ "unchecked-value": !1,
969
+ type: "checkbox",
970
+ name: "enabled",
971
+ as: "div",
972
+ class: "flex flex-col field-gap cui-toggle-switch"
973
+ }, {
974
+ default: m(({ field: n, errors: o }) => [v("div", Et, [v("div", Dt, [
975
+ v("label", Ot, i(t.$t("components.form.label.enabled")), 1),
976
+ C(p, {
977
+ severity: "secondary",
978
+ variant: "simple",
979
+ size: "small",
980
+ class: "cui-input-switch-hint"
981
+ }, {
982
+ default: m(() => [b(i(t.$t("components.form.hint.cloud_access_enabled_info")), 1)]),
983
+ _: 1
984
+ }),
985
+ C(e, { name: "fade" }, {
986
+ default: m(() => [C(f(T), {
987
+ name: "enabled",
988
+ class: "cui-input-switch-error"
989
+ })]),
990
+ _: 1
991
+ })
992
+ ]), C(w, a({ "model-value": f(z).enabled }, n, {
993
+ invalid: o.length > 0,
994
+ loading: f(X),
995
+ class: "ml-auto shrink-0",
996
+ onValueChange: r[0] ||= (e) => f(z).enabled = e,
997
+ "onUpdate:modelValue": r[1] ||= (e) => mr(e)
998
+ }), null, 16, [
999
+ "model-value",
1000
+ "invalid",
1001
+ "loading"
1002
+ ])])]),
1003
+ _: 1
1004
+ }, 8, ["model-value"]),
1005
+ v("div", kt, [
1006
+ v("label", At, i(t.$t("views.settings.server_name_label")), 1),
1007
+ C(k, null, {
1008
+ default: m(() => [C(D, {
1009
+ id: "serverName",
1010
+ modelValue: f(B),
1011
+ "onUpdate:modelValue": r[2] ||= (e) => d(B) ? B.value = e : null,
1012
+ modelModifiers: { trim: !0 },
1013
+ disabled: !f(ft),
1014
+ loading: f(X),
1015
+ type: "text",
1016
+ maxlength: 100
1017
+ }, null, 8, [
1018
+ "modelValue",
1019
+ "disabled",
1020
+ "loading"
1021
+ ]), C(O, null, {
1022
+ default: m(() => [y((n(), l(x, {
1023
+ text: "",
1024
+ severity: "secondary",
1025
+ loading: f(Ke),
1026
+ disabled: !f(Wn),
1027
+ type: "button",
1028
+ onClick: nr
1029
+ }, {
1030
+ icon: m(() => [C(ce)]),
1031
+ _: 1
1032
+ }, 8, ["loading", "disabled"])), [[P, { value: t.$t("components.form.button.save") }]])]),
1033
+ _: 1
1034
+ })]),
1035
+ _: 1
1036
+ }),
1037
+ C(p, {
1038
+ severity: "secondary",
1039
+ variant: "simple",
1040
+ size: "small",
1041
+ class: "cui-input-switch-hint"
1042
+ }, {
1043
+ default: m(() => [b(i(t.$t("views.settings.server_name_info")), 1)]),
1044
+ _: 1
1045
+ })
1046
+ ]),
1047
+ v("div", jt, [v("div", Mt, [v("span", Nt, i(t.$t("views.settings.status")), 1), C(p, {
1048
+ severity: "secondary",
1049
+ variant: "simple",
1050
+ size: "small",
1051
+ class: "cui-input-switch-hint"
1052
+ }, {
1053
+ default: m(() => [b(i(t.$t("views.settings.status_info")), 1)]),
1054
+ _: 1
1055
+ })]), v("div", Pt, [f(X) ? (n(), l(c, {
1056
+ key: 0,
1057
+ class: "w-[15px] h-[15px] m-0",
1058
+ "stroke-width": "5"
1059
+ })) : f(dt) ? (n(), g("span", Ft, i(t.$t("views.settings.needs_reauth")), 1)) : (n(), g("span", It, i(f(Z) ? t.$t("views.settings.registered") : t.$t("views.settings.not_registered")), 1))])]),
1060
+ f(Z) ? (n(), g("div", Lt, [v("div", Rt, [v("span", zt, i(t.$t("views.settings.tunnel_status")), 1), C(p, {
1061
+ severity: "secondary",
1062
+ variant: "simple",
1063
+ size: "small",
1064
+ class: "cui-input-switch-hint"
1065
+ }, {
1066
+ default: m(() => [b(i(t.$t("views.settings.tunnel_status_info")), 1)]),
1067
+ _: 1
1068
+ })]), v("div", Bt, [f(Me) ? (n(), l(c, {
1069
+ key: 0,
1070
+ class: "w-[15px] h-[15px] m-0",
1071
+ "stroke-width": "5"
1072
+ })) : (n(), l(A, {
1073
+ key: 1,
1074
+ severity: f(je)?.connected ? "success" : "secondary",
1075
+ value: f(je)?.connected ? t.$t("views.settings.tunnel_connected") : t.$t("views.settings.tunnel_disconnected")
1076
+ }, null, 8, ["severity", "value"]))])])) : u("", !0),
1077
+ C(e, {
1078
+ name: "fade",
1079
+ mode: "out-in"
1080
+ }, {
1081
+ default: m(() => [f(G) ? (n(), g("div", Vt, [C(p, {
1082
+ severity: "error",
1083
+ variant: "simple",
1084
+ size: "small",
1085
+ class: "text-primary"
1086
+ }, {
1087
+ default: m(() => [b(i(t.$t("views.settings.pair_instructions")), 1)]),
1088
+ _: 1
1089
+ }), v("div", Ht, [v("div", Ut, [C(ue, {
1090
+ value: f(K),
1091
+ size: 180,
1092
+ "logo-size": 36
1093
+ }, null, 8, ["value"])]), v("div", Wt, [
1094
+ v("div", Gt, [
1095
+ v("label", Kt, i(t.$t("views.settings.pair_code")), 1),
1096
+ C(k, null, {
1097
+ default: m(() => [C(D, {
1098
+ "model-value": f(G),
1099
+ readonly: "",
1100
+ class: "font-mono text-lg text-center tracking-widest"
1101
+ }, null, 8, ["model-value"]), C(O, null, {
1102
+ default: m(() => [C(j, {
1103
+ "action-text": t.$t("components.form.tooltip.copied"),
1104
+ icon: f(se),
1105
+ "button-props": {
1106
+ severity: "secondary",
1107
+ text: !0
1108
+ },
1109
+ onAction: dr
1110
+ }, null, 8, ["action-text", "icon"])]),
1111
+ _: 1
1112
+ })]),
1113
+ _: 1
1114
+ }),
1115
+ C(p, {
1116
+ severity: "secondary",
1117
+ variant: "simple",
1118
+ size: "small",
1119
+ class: "cui-input-hint"
1120
+ }, {
1121
+ default: m(() => [b(i(t.$t("views.settings.pair_code_hint")), 1)]),
1122
+ _: 1
1123
+ })
1124
+ ]),
1125
+ v("div", qt, [v("label", Jt, i(t.$t("views.settings.pair_url")), 1), C(k, null, {
1126
+ default: m(() => [
1127
+ C(D, {
1128
+ "model-value": f(K),
1129
+ readonly: "",
1130
+ class: "font-mono text-sm"
1131
+ }, null, 8, ["model-value"]),
1132
+ C(O, null, {
1133
+ default: m(() => [C(j, {
1134
+ "action-text": t.$t("components.form.tooltip.copied"),
1135
+ icon: f(se),
1136
+ "button-props": {
1137
+ severity: "secondary",
1138
+ text: !0
1139
+ },
1140
+ onAction: fr
1141
+ }, null, 8, ["action-text", "icon"])]),
1142
+ _: 1
1143
+ }),
1144
+ C(O, null, {
1145
+ default: m(() => [y((n(), l(x, {
1146
+ type: "button",
1147
+ severity: "secondary",
1148
+ text: "",
1149
+ onClick: pr
1150
+ }, {
1151
+ icon: m(() => [C(f(ve))]),
1152
+ _: 1
1153
+ })), [[P, { value: t.$t("components.form.button.open_in_browser") }]])]),
1154
+ _: 1
1155
+ })
1156
+ ]),
1157
+ _: 1
1158
+ })]),
1159
+ v("div", Yt, [
1160
+ C(c, {
1161
+ class: "w-[20px] h-[20px] m-0",
1162
+ "stroke-width": "5"
1163
+ }),
1164
+ v("span", Xt, i(t.$t("views.settings.pair_waiting", { remaining: f(ct) })), 1),
1165
+ C(x, {
1166
+ type: "button",
1167
+ severity: "secondary",
1168
+ class: "cui-button-small ml-auto",
1169
+ label: t.$t("components.form.button.cancel"),
1170
+ onClick: ur
1171
+ }, null, 8, ["label"])
1172
+ ])
1173
+ ])])])) : u("", !0)]),
1174
+ _: 1
1175
+ }),
1176
+ v("div", Zt, [
1177
+ v("div", Qt, [y((n(), l(x, {
1178
+ severity: "secondary",
1179
+ rounded: "",
1180
+ class: "cui-icon-lg text-color",
1181
+ disabled: !f(Z),
1182
+ onClick: r[3] ||= (e) => t.$router.absUrl(f("https://cloud.cameraui.com"), !0)
1183
+ }, {
1184
+ icon: m(() => [f(Z) ? (n(), l(fe, {
1185
+ key: 0,
1186
+ width: "100%",
1187
+ height: "100%"
1188
+ })) : (n(), l(M, {
1189
+ key: 1,
1190
+ width: "100%",
1191
+ height: "100%"
1192
+ }))]),
1193
+ _: 1
1194
+ }, 8, ["disabled"])), [[P, { value: f(Z) ? t.$t("views.settings.registered") : t.$t("views.settings.not_registered") }]])]),
1195
+ r[22] ||= v("div", { class: "ml-auto" }, null, -1),
1196
+ !f(Z) && !f(G) ? (n(), l(x, {
1197
+ key: 0,
1198
+ loading: f(Re),
1199
+ class: "cui-button-medium",
1200
+ label: t.$t("components.form.button.register_server"),
1201
+ onClick: lr
1202
+ }, null, 8, ["loading", "label"])) : u("", !0),
1203
+ f(dt) && !f(G) ? (n(), l(x, {
1204
+ key: 1,
1205
+ loading: f(Re),
1206
+ severity: "warn",
1207
+ class: "cui-button-medium",
1208
+ label: t.$t("components.form.button.reconnect_server"),
1209
+ onClick: lr
1210
+ }, null, 8, ["loading", "label"])) : u("", !0),
1211
+ f(Z) ? (n(), l(x, {
1212
+ key: 2,
1213
+ loading: f(X),
1214
+ severity: f(dt) ? "secondary" : void 0,
1215
+ text: f(dt),
1216
+ class: "cui-button-medium",
1217
+ label: t.$t("components.form.button.unregister_server"),
1218
+ onClick: rr
1219
+ }, null, 8, [
1220
+ "loading",
1221
+ "severity",
1222
+ "text",
1223
+ "label"
1224
+ ])) : u("", !0)
1225
+ ])
1226
+ ])]),
1227
+ _: 1
1228
+ })]), v("div", null, [v("span", $t, i(t.$t("views.settings.direct_connection")), 1), C(S, { class: "cui-card" }, {
1229
+ content: m(() => [v("div", en, [C(f(E), {
1230
+ "model-value": f(z).directEnabled,
1231
+ value: !0,
1232
+ "unchecked-value": !1,
1233
+ type: "checkbox",
1234
+ name: "directEnabled",
1235
+ as: "div",
1236
+ class: "flex flex-col field-gap cui-toggle-switch"
1237
+ }, {
1238
+ default: m(({ field: o, errors: s }) => [v("div", tn, [v("div", nn, [
1239
+ v("label", rn, i(t.$t("components.form.label.enabled")), 1),
1240
+ C(p, {
1241
+ severity: "secondary",
1242
+ variant: "simple",
1243
+ size: "small",
1244
+ class: "cui-input-switch-hint"
1245
+ }, {
1246
+ default: m(() => [b(i(t.$t("views.settings.direct_connection_info")), 1)]),
1247
+ _: 1
1248
+ }),
1249
+ C(e, { name: "fade" }, {
1250
+ default: m(() => [C(f(T), {
1251
+ name: "directEnabled",
1252
+ class: "cui-input-switch-error"
1253
+ })]),
1254
+ _: 1
1255
+ })
1256
+ ]), C(w, a({ "model-value": f(lt) }, o, {
1257
+ invalid: s.length > 0,
1258
+ loading: f(X),
1259
+ disabled: f(z).enabled,
1260
+ class: "ml-auto shrink-0",
1261
+ onValueChange: r[4] ||= (e) => f(z).directEnabled = e,
1262
+ "onUpdate:modelValue": r[5] ||= (e) => hr(e)
1263
+ }), null, 16, [
1264
+ "model-value",
1265
+ "invalid",
1266
+ "loading",
1267
+ "disabled"
1268
+ ])]), C(e, { name: "fade" }, {
1269
+ default: m(() => [f(ut).active ? (n(), l(p, {
1270
+ key: 0,
1271
+ variant: "simple",
1272
+ size: "small",
1273
+ class: "cui-input-switch-hint text-primary"
1274
+ }, {
1275
+ default: m(() => [b(i(f(ut).fallback ? t.$t("views.settings.direct_override_fallback") : t.$t("views.settings.direct_override_active")), 1)]),
1276
+ _: 1
1277
+ })) : u("", !0)]),
1278
+ _: 1
1279
+ })]),
1280
+ _: 1
1281
+ }, 8, ["model-value"]), f(lt) ? (n(), g(_, { key: 0 }, [
1282
+ v("div", an, [
1283
+ v("label", on, i(t.$t("views.settings.external_url")), 1),
1284
+ C(D, {
1285
+ readonly: "",
1286
+ type: "text",
1287
+ value: f(I)?.externalUrl ?? t.$t("components.form.label.disconnected")
1288
+ }, null, 8, ["value"]),
1289
+ C(p, {
1290
+ severity: "secondary",
1291
+ variant: "simple",
1292
+ size: "small",
1293
+ class: "cui-input-hint"
1294
+ }, {
1295
+ default: m(() => [b(i(t.$t("views.settings.external_url_info")), 1)]),
1296
+ _: 1
1297
+ })
1298
+ ]),
1299
+ C(f(E), {
1300
+ "model-value": f(z).directMode,
1301
+ name: "directMode",
1302
+ as: "div",
1303
+ class: "flex flex-col field-gap"
1304
+ }, {
1305
+ default: m(({ errors: n }) => [
1306
+ v("label", sn, i(t.$t("views.settings.connection_method")), 1),
1307
+ C(me, {
1308
+ "model-value": f(z).directMode,
1309
+ options: f(Kn),
1310
+ "option-label": "label",
1311
+ "option-value": "value",
1312
+ invalid: n.length > 0,
1313
+ loading: f(X),
1314
+ "onUpdate:modelValue": r[6] ||= (e) => gr(e)
1315
+ }, null, 8, [
1316
+ "model-value",
1317
+ "options",
1318
+ "invalid",
1319
+ "loading"
1320
+ ]),
1321
+ C(e, { name: "fade" }, {
1322
+ default: m(() => [C(f(T), {
1323
+ name: "directMode",
1324
+ class: "cui-input-error"
1325
+ })]),
1326
+ _: 1
1327
+ }),
1328
+ C(p, {
1329
+ severity: "secondary",
1330
+ variant: "simple",
1331
+ size: "small",
1332
+ class: "cui-input-hint"
1333
+ }, {
1334
+ default: m(() => [b(i(f(qn)), 1)]),
1335
+ _: 1
1336
+ })
1337
+ ]),
1338
+ _: 1
1339
+ }, 8, ["model-value"]),
1340
+ f(z).directMode === "cloudflare" ? (n(), g("div", cn, [v("div", ln, [
1341
+ v("label", un, i(t.$t("components.form.label.cloudflare_variant")), 1),
1342
+ C(me, {
1343
+ "model-value": f(H),
1344
+ options: f(Jn),
1345
+ "option-label": "label",
1346
+ "option-value": "value",
1347
+ loading: f(X),
1348
+ "onUpdate:modelValue": r[7] ||= (e) => _r(e)
1349
+ }, null, 8, [
1350
+ "model-value",
1351
+ "options",
1352
+ "loading"
1353
+ ]),
1354
+ C(p, {
1355
+ severity: "secondary",
1356
+ variant: "simple",
1357
+ size: "small",
1358
+ class: "cui-input-hint"
1359
+ }, {
1360
+ default: m(() => [b(i(f(Yn)), 1)]),
1361
+ _: 1
1362
+ })
1363
+ ]), f(H) === "quick" ? (n(), g("div", dn, [C(x, {
1364
+ type: "button",
1365
+ severity: "secondary",
1366
+ loading: f(Ye),
1367
+ class: "cui-button-small",
1368
+ label: t.$t("components.form.button.test_connection"),
1369
+ onClick: r[8] ||= (e) => wr("cloudflare")
1370
+ }, null, 8, ["loading", "label"])])) : f(H) === "token" ? (n(), g(_, { key: 1 }, [
1371
+ v("div", fn, [
1372
+ v("label", pn, i(t.$t("components.form.label.hostname")), 1),
1373
+ C(D, {
1374
+ id: "cloudflareHostname",
1375
+ modelValue: f(U),
1376
+ "onUpdate:modelValue": r[9] ||= (e) => d(U) ? U.value = e : null,
1377
+ modelModifiers: { trim: !0 },
1378
+ loading: f(X),
1379
+ type: "text",
1380
+ placeholder: "nvr.example.com",
1381
+ maxlength: 253
1382
+ }, null, 8, ["modelValue", "loading"]),
1383
+ C(p, {
1384
+ severity: "secondary",
1385
+ variant: "simple",
1386
+ size: "small",
1387
+ class: "cui-input-hint"
1388
+ }, {
1389
+ default: m(() => [b(i(t.$t("components.form.hint.cloudflare_hostname_info")), 1)]),
1390
+ _: 1
1391
+ })
1392
+ ]),
1393
+ v("div", mn, [
1394
+ v("label", hn, i(t.$t("components.form.label.tunnel_token")), 1),
1395
+ C(he, {
1396
+ id: "cloudflareToken",
1397
+ modelValue: f(W),
1398
+ "onUpdate:modelValue": r[10] ||= (e) => d(W) ? W.value = e : null,
1399
+ modelModifiers: { trim: !0 },
1400
+ loading: f(X),
1401
+ feedback: !1,
1402
+ "toggle-mask": "",
1403
+ fluid: "",
1404
+ placeholder: f(ot) ? "••••••••••••" : "eyJ..."
1405
+ }, null, 8, [
1406
+ "modelValue",
1407
+ "loading",
1408
+ "placeholder"
1409
+ ]),
1410
+ C(p, {
1411
+ severity: "secondary",
1412
+ variant: "simple",
1413
+ size: "small",
1414
+ class: "cui-input-hint"
1415
+ }, {
1416
+ default: m(() => [b(i(f(ot) ? t.$t("components.form.hint.cloudflare_token_already_set") : t.$t("components.form.hint.cloudflare_token_info")), 1)]),
1417
+ _: 1
1418
+ })
1419
+ ]),
1420
+ v("div", gn, [C(x, {
1421
+ type: "button",
1422
+ severity: "secondary",
1423
+ loading: f(Ye),
1424
+ disabled: !f(Xn),
1425
+ class: "cui-button-small",
1426
+ label: t.$t("components.form.button.test_connection"),
1427
+ onClick: r[11] ||= (e) => wr("cloudflare")
1428
+ }, null, 8, [
1429
+ "loading",
1430
+ "disabled",
1431
+ "label"
1432
+ ])])
1433
+ ], 64)) : f(H) === "managed" ? (n(), l(e, {
1434
+ key: 2,
1435
+ name: "fade",
1436
+ mode: "out-in"
1437
+ }, {
1438
+ default: m(() => [(n(), g("div", {
1439
+ key: f(Q),
1440
+ class: "flex flex-col gap-4"
1441
+ }, [f(Q) === "idle" ? (n(), g(_, { key: 0 }, [
1442
+ v("div", _n, [
1443
+ v("label", vn, i(t.$t("components.form.label.hostname")), 1),
1444
+ C(D, {
1445
+ id: "cloudflareHostnameManaged",
1446
+ modelValue: f(U),
1447
+ "onUpdate:modelValue": r[12] ||= (e) => d(U) ? U.value = e : null,
1448
+ modelModifiers: { trim: !0 },
1449
+ loading: f(X),
1450
+ type: "text",
1451
+ placeholder: "nvr.example.com",
1452
+ maxlength: 253
1453
+ }, null, 8, ["modelValue", "loading"]),
1454
+ C(p, {
1455
+ severity: "secondary",
1456
+ variant: "simple",
1457
+ size: "small",
1458
+ class: "cui-input-hint"
1459
+ }, {
1460
+ default: m(() => [b(i(t.$t("components.form.hint.cloudflare_hostname_info")), 1)]),
1461
+ _: 1
1462
+ })
1463
+ ]),
1464
+ f(L)?.lastError ? (n(), l(p, {
1465
+ key: 0,
1466
+ severity: "error",
1467
+ variant: "simple",
1468
+ size: "small"
1469
+ }, {
1470
+ default: m(() => [b(i(f(L).lastError), 1)]),
1471
+ _: 1
1472
+ })) : u("", !0),
1473
+ v("div", yn, [C(x, {
1474
+ type: "button",
1475
+ loading: f(Qe),
1476
+ disabled: !f(Zn),
1477
+ class: "cui-button-medium",
1478
+ label: t.$t("components.form.button.connect_cloudflare"),
1479
+ onClick: vr
1480
+ }, null, 8, [
1481
+ "loading",
1482
+ "disabled",
1483
+ "label"
1484
+ ])])
1485
+ ], 64)) : f(Q) === "awaiting_login" ? (n(), g(_, { key: 1 }, [f(L)?.loginUrl ? (n(), g("div", bn, [v("div", xn, [C(ue, {
1486
+ value: f(L).loginUrl,
1487
+ size: 160,
1488
+ "logo-size": 32
1489
+ }, null, 8, ["value"])]), v("div", Sn, [
1490
+ C(p, {
1491
+ variant: "simple",
1492
+ size: "small",
1493
+ class: "text-primary"
1494
+ }, {
1495
+ default: m(() => [b(i(t.$t("components.form.hint.cloudflare_managed_awaiting_login", { hostname: f(U) })), 1)]),
1496
+ _: 1
1497
+ }),
1498
+ v("div", Cn, [v("label", wn, i(t.$t("components.form.label.cloudflare_url")), 1), C(k, null, {
1499
+ default: m(() => [
1500
+ C(D, {
1501
+ "model-value": f(L).loginUrl,
1502
+ readonly: "",
1503
+ class: "font-mono text-sm"
1504
+ }, null, 8, ["model-value"]),
1505
+ C(O, null, {
1506
+ default: m(() => [C(j, {
1507
+ "action-text": t.$t("components.form.tooltip.copied"),
1508
+ icon: f(se),
1509
+ "button-props": {
1510
+ severity: "secondary",
1511
+ text: !0
1512
+ },
1513
+ onAction: r[13] ||= (e) => Sr(f(L).loginUrl)
1514
+ }, null, 8, ["action-text", "icon"])]),
1515
+ _: 1
1516
+ }),
1517
+ C(O, null, {
1518
+ default: m(() => [y((n(), l(x, {
1519
+ type: "button",
1520
+ severity: "secondary",
1521
+ text: "",
1522
+ onClick: r[14] ||= (e) => Cr(f(L).loginUrl)
1523
+ }, {
1524
+ icon: m(() => [C(f(ve))]),
1525
+ _: 1
1526
+ })), [[P, { value: t.$t("components.form.button.open_in_browser") }]])]),
1527
+ _: 1
1528
+ })
1529
+ ]),
1530
+ _: 1
1531
+ })]),
1532
+ v("div", Tn, [
1533
+ C(c, {
1534
+ class: "w-[20px] h-[20px] m-0",
1535
+ "stroke-width": "5"
1536
+ }),
1537
+ v("span", En, i(t.$t("views.settings.cloudflare_login_waiting")), 1),
1538
+ C(x, {
1539
+ type: "button",
1540
+ severity: "secondary",
1541
+ loading: f(et),
1542
+ class: "cui-button-small ml-auto",
1543
+ label: t.$t("components.form.button.cancel"),
1544
+ onClick: yr
1545
+ }, null, 8, ["loading", "label"])
1546
+ ])
1547
+ ])])) : (n(), g("div", Dn, [
1548
+ C(c, {
1549
+ class: "w-[20px] h-[20px] m-0",
1550
+ "stroke-width": "5"
1551
+ }),
1552
+ v("span", On, i(t.$t("views.settings.cloudflare_login_waiting")), 1),
1553
+ C(x, {
1554
+ type: "button",
1555
+ severity: "secondary",
1556
+ loading: f(et),
1557
+ class: "cui-button-small ml-auto",
1558
+ label: t.$t("components.form.button.cancel"),
1559
+ onClick: yr
1560
+ }, null, 8, ["loading", "label"])
1561
+ ]))], 64)) : f(Q) === "creating_tunnel" || f(Q) === "setting_dns" ? (n(), g("div", kn, [
1562
+ C(c, {
1563
+ class: "w-[20px] h-[20px] m-0",
1564
+ "stroke-width": "5"
1565
+ }),
1566
+ v("span", An, i(f(Q) === "creating_tunnel" ? t.$t("components.form.hint.cloudflare_managed_creating_tunnel") : t.$t("components.form.hint.cloudflare_managed_setting_dns", { hostname: f(U) })), 1),
1567
+ C(x, {
1568
+ type: "button",
1569
+ severity: "secondary",
1570
+ loading: f(et),
1571
+ class: "cui-button-small ml-auto",
1572
+ label: t.$t("components.form.button.cancel"),
1573
+ onClick: yr
1574
+ }, null, 8, ["loading", "label"])
1575
+ ])) : f(Q) === "running" ? (n(), g(_, { key: 3 }, [
1576
+ v("div", jn, [
1577
+ v("label", Mn, i(t.$t("components.form.label.hostname")), 1),
1578
+ C(D, {
1579
+ readonly: "",
1580
+ value: `https://${f(L)?.hostname ?? ""}`,
1581
+ type: "text"
1582
+ }, null, 8, ["value"]),
1583
+ C(p, {
1584
+ severity: "secondary",
1585
+ variant: "simple",
1586
+ size: "small",
1587
+ class: "cui-input-hint"
1588
+ }, {
1589
+ default: m(() => [b(i(t.$t("components.form.hint.cloudflare_hostname_info")), 1)]),
1590
+ _: 1
1591
+ })
1592
+ ]),
1593
+ f(L)?.tunnelId ? (n(), g("div", Nn, [
1594
+ v("label", Pn, i(t.$t("components.form.label.tunnel_id")), 1),
1595
+ C(D, {
1596
+ readonly: "",
1597
+ value: f(L).tunnelId,
1598
+ type: "text"
1599
+ }, null, 8, ["value"]),
1600
+ C(p, {
1601
+ severity: "secondary",
1602
+ variant: "simple",
1603
+ size: "small",
1604
+ class: "cui-input-hint"
1605
+ }, {
1606
+ default: m(() => [b(i(t.$t("components.form.hint.cloudflare_tunnel_id_info")), 1)]),
1607
+ _: 1
1608
+ })
1609
+ ])) : u("", !0),
1610
+ v("div", Fn, [
1611
+ C(x, {
1612
+ type: "button",
1613
+ severity: "secondary",
1614
+ loading: f(Ye),
1615
+ class: "cui-button-small",
1616
+ label: t.$t("components.form.button.test_connection"),
1617
+ onClick: r[15] ||= (e) => wr("cloudflare")
1618
+ }, null, 8, ["loading", "label"]),
1619
+ C(x, {
1620
+ type: "button",
1621
+ severity: "secondary",
1622
+ loading: f(nt),
1623
+ class: "cui-button-small ml-auto",
1624
+ label: t.$t("components.form.button.disconnect"),
1625
+ onClick: br
1626
+ }, null, 8, ["loading", "label"]),
1627
+ C(x, {
1628
+ type: "button",
1629
+ severity: "danger",
1630
+ loading: f(it),
1631
+ class: "cui-button-small",
1632
+ label: t.$t("components.form.button.logout"),
1633
+ onClick: xr
1634
+ }, null, 8, ["loading", "label"])
1635
+ ])
1636
+ ], 64)) : u("", !0)]))]),
1637
+ _: 1
1638
+ })) : u("", !0)])) : f(z).directMode === "customDomain" ? (n(), g("div", In, [C(f(E), {
1639
+ modelValue: f(V),
1640
+ "onUpdate:modelValue": r[16] ||= (e) => d(V) ? V.value = e : null,
1641
+ modelModifiers: { trim: !0 },
1642
+ loading: f(X),
1643
+ name: "customDomain.url",
1644
+ as: "div",
1645
+ class: "flex flex-col field-gap"
1646
+ }, {
1647
+ default: m(({ field: n, errors: r }) => [
1648
+ v("label", Ln, i(t.$t("components.form.label.url")), 1),
1649
+ C(D, a(n, {
1650
+ invalid: r.length > 0,
1651
+ loading: f(X),
1652
+ type: "text",
1653
+ placeholder: "https://my.example.com"
1654
+ }), null, 16, ["invalid", "loading"]),
1655
+ C(e, { name: "fade" }, {
1656
+ default: m(() => [C(f(T), {
1657
+ name: "customDomain.url",
1658
+ class: "cui-input-error"
1659
+ })]),
1660
+ _: 1
1661
+ })
1662
+ ]),
1663
+ _: 1
1664
+ }, 8, ["modelValue", "loading"]), v("div", Rn, [C(x, {
1665
+ type: "button",
1666
+ severity: "secondary",
1667
+ loading: f(Ye),
1668
+ disabled: !f(V),
1669
+ class: "cui-button-small",
1670
+ label: t.$t("components.form.button.test_connection"),
1671
+ onClick: r[17] ||= (e) => wr("customDomain")
1672
+ }, null, 8, [
1673
+ "loading",
1674
+ "disabled",
1675
+ "label"
1676
+ ])])])) : u("", !0),
1677
+ C(x, {
1678
+ type: "submit",
1679
+ loading: f(X),
1680
+ disabled: !f(Gn),
1681
+ class: "cui-button-medium ml-auto",
1682
+ label: t.$t("components.form.button.save")
1683
+ }, null, 8, [
1684
+ "loading",
1685
+ "disabled",
1686
+ "label"
1687
+ ])
1688
+ ], 64)) : u("", !0)])]),
1689
+ _: 1
1690
+ })])]),
1691
+ _: 1
1692
+ }, 8, ["validation-schema"]),
1693
+ C(f(ae), {
1694
+ ref: "serverFormRef",
1695
+ class: "flex flex-col w-full gap-6",
1696
+ "validation-schema": f(ht),
1697
+ onSubmit: r[21] ||= (e) => Er(e)
1698
+ }, {
1699
+ default: m(() => [v("div", null, [v("span", zn, i(t.$t("views.settings.network")), 1), C(S, { class: "cui-card" }, {
1700
+ content: m(() => [v("div", Bn, [
1701
+ v("span", Vn, i(t.$t("views.settings.network_info")), 1),
1702
+ C(f(E), {
1703
+ "model-value": f(R).serverAddresses,
1704
+ name: "serverAddresses",
1705
+ as: "div",
1706
+ class: "flex flex-col field-gap"
1707
+ }, {
1708
+ default: m(({ field: o, errors: s }) => [
1709
+ v("label", Hn, i(t.$t("components.form.label.server_addresses")), 1),
1710
+ C(k, null, {
1711
+ default: m(() => [C(ge, a(o, {
1712
+ "model-value": f(R).serverAddresses,
1713
+ options: f(N)?.availableAddresses || [],
1714
+ invalid: s.length > 0,
1715
+ loading: f(X),
1716
+ "max-selected-labels": 2,
1717
+ "show-toggle-all": !1,
1718
+ "show-clear": "",
1719
+ "option-label": "address",
1720
+ "option-value": "address",
1721
+ type: "text",
1722
+ display: "chip",
1723
+ onValueChange: r[19] ||= (e) => f(R).serverAddresses = e
1724
+ }), null, 16, [
1725
+ "model-value",
1726
+ "options",
1727
+ "invalid",
1728
+ "loading"
1729
+ ])]),
1730
+ _: 2
1731
+ }, 1024),
1732
+ C(e, { name: "fade" }, {
1733
+ default: m(() => [C(f(T), {
1734
+ name: "serverAddresses",
1735
+ class: "cui-input-error"
1736
+ })]),
1737
+ _: 1
1738
+ }),
1739
+ s.length ? u("", !0) : (n(), l(p, {
1740
+ key: 0,
1741
+ severity: "secondary",
1742
+ variant: "simple",
1743
+ size: "small",
1744
+ class: "cui-input-hint"
1745
+ }, {
1746
+ default: m(() => [b(i(t.$t("components.form.hint.server_addresses")), 1)]),
1747
+ _: 1
1748
+ }))
1749
+ ]),
1750
+ _: 1
1751
+ }, 8, ["model-value"]),
1752
+ C(f(E), {
1753
+ "model-value": f(R).localUrl,
1754
+ name: "localUrl",
1755
+ as: "div",
1756
+ class: "flex flex-col field-gap"
1757
+ }, {
1758
+ default: m(({ field: o, errors: s }) => [
1759
+ v("label", Un, i(t.$t("components.form.label.local_url")), 1),
1760
+ C(k, null, {
1761
+ default: m(() => [C(D, a(o, {
1762
+ "model-value": f(R).localUrl,
1763
+ invalid: s.length > 0,
1764
+ loading: f(X),
1765
+ placeholder: "https://camera.home.lan",
1766
+ onValueChange: r[20] ||= (e) => f(R).localUrl = e
1767
+ }), null, 16, [
1768
+ "model-value",
1769
+ "invalid",
1770
+ "loading"
1771
+ ])]),
1772
+ _: 2
1773
+ }, 1024),
1774
+ C(e, { name: "fade" }, {
1775
+ default: m(() => [C(f(T), {
1776
+ name: "localUrl",
1777
+ class: "cui-input-error"
1778
+ })]),
1779
+ _: 1
1780
+ }),
1781
+ s.length ? u("", !0) : (n(), l(p, {
1782
+ key: 0,
1783
+ severity: "secondary",
1784
+ variant: "simple",
1785
+ size: "small",
1786
+ class: "cui-input-hint"
1787
+ }, {
1788
+ default: m(() => [b(i(t.$t("components.form.hint.local_url")), 1)]),
1789
+ _: 1
1790
+ }))
1791
+ ]),
1792
+ _: 1
1793
+ }, 8, ["model-value"]),
1794
+ C(x, {
1795
+ type: "submit",
1796
+ loading: f(X),
1797
+ class: "cui-button-medium ml-auto",
1798
+ label: t.$t("components.form.button.save")
1799
+ }, null, 8, ["loading", "label"])
1800
+ ])]),
1801
+ _: 1
1802
+ })])]),
1803
+ _: 1
1804
+ }, 8, ["validation-schema"])
1805
+ ]))]);
1806
+ };
1807
+ }
1808
+ }), [["__scopeId", "data-v-456d32b5"]]);
1809
+ //#endregion
1810
+ export { Wn as default };